{"openapi":"3.1.0","info":{"title":"WARN Firehose API","description":"Six unified labor market datasets: WARN layoffs, H-1B/LCA visas, unemployment claims, SEC 8-K filings, bankruptcy cases, and JOLTS labor turnover.","version":"2.0.0"},"paths":{"/billing/checkout":{"post":{"tags":["billing"],"summary":"Create Checkout","description":"Create a Stripe Checkout session for a subscription.","operationId":"create_checkout_billing_checkout_post","parameters":[{"name":"tier","in":"query","required":true,"schema":{"type":"string","title":"Tier"}},{"name":"period","in":"query","required":true,"schema":{"type":"string","title":"Period"}},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/success":{"get":{"tags":["billing"],"summary":"Checkout Success","description":"Handle successful checkout — show API key in a nice page.","operationId":"checkout_success_billing_success_get","parameters":[{"name":"session_id","in":"query","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/checkout-alert":{"post":{"tags":["billing"],"summary":"Checkout Alert","description":"Create a Stripe Checkout session for a $5/month alert subscription.","operationId":"checkout_alert_billing_checkout_alert_post","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/success-alert":{"get":{"tags":["billing"],"summary":"Checkout Alert Success","description":"Handle successful alert subscription checkout.","operationId":"checkout_alert_success_billing_success_alert_get","parameters":[{"name":"session_id","in":"query","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/webhook":{"post":{"tags":["billing"],"summary":"Stripe Webhook","description":"Handle Stripe webhook events.","operationId":"stripe_webhook_billing_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/billing/portal":{"post":{"tags":["billing"],"summary":"Customer Portal","description":"Create a Stripe Customer Portal session for billing management.\nRequires a valid session token — caller must be logged in as this email.","operationId":"customer_portal_billing_portal_post","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/checkout-addon":{"post":{"tags":["billing"],"summary":"Create Addon Checkout","description":"Create a Stripe Checkout session for an add-on subscription (e.g. weekly report).","operationId":"create_addon_checkout_billing_checkout_addon_post","parameters":[{"name":"product","in":"query","required":false,"schema":{"type":"string","default":"","title":"Product"}},{"name":"email","in":"query","required":false,"schema":{"type":"string","default":"","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/success-addon":{"get":{"tags":["billing"],"summary":"Addon Success","description":"Handle successful add-on subscription checkout.","operationId":"addon_success_billing_success_addon_get","parameters":[{"name":"session_id","in":"query","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/plans":{"get":{"tags":["billing"],"summary":"List Plans","description":"Return available pricing plans.","operationId":"list_plans_billing_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/billing/checkout-onetime":{"post":{"tags":["billing"],"summary":"Create Onetime Checkout","description":"Create a Stripe Checkout session for a one-time data purchase.\n\nEmail is collected by Stripe on the checkout page unless pre-filled\nvia the optional email parameter (used when the buyer is logged in).","operationId":"create_onetime_checkout_billing_checkout_onetime_post","parameters":[{"name":"product_type","in":"query","required":true,"schema":{"type":"string","title":"Product Type"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"format","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"csv","title":"Format"}},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"}},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/checkout-data-subscription":{"post":{"tags":["billing"],"summary":"Create Data Subscription Checkout","description":"Create a Stripe Checkout session for a monthly data subscription.\n\nMonthly subscribers get daily data refreshes delivered via download link.","operationId":"create_data_subscription_checkout_billing_checkout_data_subscription_post","parameters":[{"name":"product_type","in":"query","required":true,"schema":{"type":"string","title":"Product Type"}},{"name":"format","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"csv","title":"Format"}},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/success-onetime":{"get":{"tags":["billing"],"summary":"Onetime Success","description":"Handle successful one-time purchase — generate download token.","operationId":"onetime_success_billing_success_onetime_get","parameters":[{"name":"session_id","in":"query","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/download/{token}":{"get":{"tags":["billing"],"summary":"Download Purchase","description":"Download purchased data using a one-time token.","operationId":"download_purchase_billing_download__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/csv":{"get":{"tags":["exports"],"summary":"Export Csv","description":"Export WARN Act records as CSV download. All fields are optional — leave empty to export all available data within your tier's history limit.","operationId":"export_csv_api_export_csv_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"2-letter state code (e.g. CA, TX, NY). Leave empty for all states.","title":"State"},"description":"2-letter state code (e.g. CA, TX, NY). Leave empty for all states."},{"name":"company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by company name (partial match)","title":"Company"},"description":"Filter by company name (partial match)"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date in YYYY-MM-DD format (e.g. 2025-01-01). Starter tier limited to 1 year.","title":"Date From"},"description":"Start date in YYYY-MM-DD format (e.g. 2025-01-01). Starter tier limited to 1 year."},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date in YYYY-MM-DD format (e.g. 2026-03-18)","title":"Date To"},"description":"End date in YYYY-MM-DD format (e.g. 2026-03-18)"},{"name":"naics_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"NAICS industry code prefix (e.g. 51 for Technology)","title":"Naics Code"},"description":"NAICS industry code prefix (e.g. 51 for Technology)"},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Industry name (e.g. Technology, Healthcare, Manufacturing)","title":"Industry"},"description":"Industry name (e.g. Technology, Healthcare, Manufacturing)"},{"name":"layoff_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Type: layoff, closure, or relocation","title":"Layoff Type"},"description":"Type: layoff, closure, or relocation"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100000,"minimum":1,"description":"Max records to export","default":5000,"title":"Limit"},"description":"Max records to export"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/json":{"get":{"tags":["exports"],"summary":"Export Json","description":"Export WARN Act records as JSON. All fields optional.","operationId":"export_json_api_export_json_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"2-letter state code (e.g. CA, TX, NY)","title":"State"},"description":"2-letter state code (e.g. CA, TX, NY)"},{"name":"company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by company name (partial match)","title":"Company"},"description":"Filter by company name (partial match)"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date YYYY-MM-DD (e.g. 2025-01-01)","title":"Date From"},"description":"Start date YYYY-MM-DD (e.g. 2025-01-01)"},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date YYYY-MM-DD","title":"Date To"},"description":"End date YYYY-MM-DD"},{"name":"naics_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"NAICS code prefix","title":"Naics Code"},"description":"NAICS code prefix"},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Industry name","title":"Industry"},"description":"Industry name"},{"name":"layoff_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"layoff, closure, or relocation","title":"Layoff Type"},"description":"layoff, closure, or relocation"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100000,"minimum":1,"description":"Max records","default":5000,"title":"Limit"},"description":"Max records"},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(array|ndjson)$","description":"array or ndjson","default":"array","title":"Format"},"description":"array or ndjson"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/parquet":{"get":{"tags":["exports"],"summary":"Export Parquet","description":"Export records as Apache Parquet file.","operationId":"export_parquet_api_export_parquet_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"naics_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Naics Code"}},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"}},{"name":"layoff_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Layoff Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100000,"minimum":1,"default":10000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/jsonld":{"get":{"tags":["exports"],"summary":"Export Jsonld","description":"Export records as JSON-LD with schema.org markup for AI/LLM consumption.","operationId":"export_jsonld_api_export_jsonld_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"naics_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Naics Code"}},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"}},{"name":"layoff_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Layoff Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100000,"minimum":1,"default":10000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/export/sample-csv":{"get":{"tags":["exports","exports"],"summary":"Export Sample Csv","description":"Free gated CSV export — no API key required.\n\nLimited to 100 rows and the last 90 days. Requires an X-Email header\n(supplied by the frontend after the visitor provides their email).\nRate-limited per IP.","operationId":"export_sample_csv_api_export_sample_csv_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"}},{"name":"layoff_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Layoff Type"}},{"name":"X-Email","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/filters":{"get":{"summary":"Api List Filters","operationId":"api_list_filters_api_filters_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"summary":"Api Create Filter","operationId":"api_create_filter_api_filters_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FilterCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/filters/{filter_id}":{"delete":{"summary":"Api Delete Filter","operationId":"api_delete_filter_api_filters__filter_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"filter_id","in":"path","required":true,"schema":{"type":"integer","title":"Filter Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks":{"get":{"summary":"Api List Webhooks","operationId":"api_list_webhooks_api_webhooks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]},"post":{"summary":"Api Create Webhook","operationId":"api_create_webhook_api_webhooks_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/webhooks/{webhook_id}":{"delete":{"summary":"Api Delete Webhook","operationId":"api_delete_webhook_api_webhooks__webhook_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"integer","title":"Webhook Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/test":{"post":{"summary":"Api Test Webhook","operationId":"api_test_webhook_api_webhooks_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/reports/monthly":{"get":{"summary":"Api List Reports","operationId":"api_list_reports_api_reports_monthly_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/reports/monthly/{month}":{"get":{"summary":"Api Get Report","operationId":"api_get_report_api_reports_monthly__month__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"month","in":"path","required":true,"schema":{"type":"string","title":"Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/check":{"get":{"summary":"Check Auth","description":"Return the caller's tier and capability limits based on their API key.","operationId":"check_auth_api_auth_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/records":{"get":{"tags":["WARN"],"summary":"Api Records","operationId":"api_records_api_records_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"naics_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Naics Code"}},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"}},{"name":"layoff_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Layoff Type"}},{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticker"}},{"name":"has_ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Ticker"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"notice_date","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stats":{"get":{"tags":["WARN"],"summary":"Api Stats","operationId":"api_stats_api_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/map-data":{"get":{"tags":["WARN"],"summary":"Api Map Data","description":"Lightweight endpoint for map visualization — returns lat/lng + basic info.","operationId":"api_map_data_api_map_data_get","parameters":[{"name":"dataset","in":"query","required":false,"schema":{"type":"string","description":"Dataset: warn, lca, sec, bankruptcy","default":"warn","title":"Dataset"},"description":"Dataset: warn, lca, sec, bankruptcy"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/states":{"get":{"tags":["WARN"],"summary":"Api States","operationId":"api_states_api_states_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/dol-claims":{"get":{"tags":["DOL"],"summary":"Api Dol Claims","description":"Query DOL weekly claims data with optional state/date filters.","operationId":"api_dol_claims_api_dol_claims_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dol-claims/national":{"get":{"tags":["DOL"],"summary":"Api Dol Claims National","description":"Return weekly national totals aggregated from state-level DOL data.","operationId":"api_dol_claims_national_api_dol_claims_national_get","parameters":[{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dol-claims/stats":{"get":{"tags":["DOL"],"summary":"Api Dol Claims Stats","description":"Summary statistics for DOL weekly claims data.","operationId":"api_dol_claims_stats_api_dol_claims_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/lca/stats":{"get":{"tags":["LCA"],"summary":"Api Lca Stats","description":"Aggregate LCA petition statistics.","operationId":"api_lca_stats_api_lca_stats_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}},{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Naics"}},{"name":"visa_class","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visa Class"}},{"name":"all_time","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"All Time"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lca/wages":{"get":{"tags":["LCA"],"summary":"Api Lca Wages","description":"Query individual LCA petition rows with wage data.","operationId":"api_lca_wages_api_lca_wages_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}},{"name":"soc_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Soc Code"}},{"name":"naics","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Naics"}},{"name":"employer","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employer"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lca/employers":{"get":{"tags":["LCA"],"summary":"Api Lca Employers","description":"Top LCA employers by petition count with average wages.","operationId":"api_lca_employers_api_lca_employers_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}},{"name":"visa_class","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visa Class"}},{"name":"soc_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Soc Code"}},{"name":"employer","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employer"}},{"name":"min_petitions","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Min Petitions"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lca/employer-years":{"get":{"tags":["LCA"],"summary":"Api Lca Employer Years","description":"LCA petitions for a specific employer grouped by fiscal year.","operationId":"api_lca_employer_years_api_lca_employer_years_get","parameters":[{"name":"employer","in":"query","required":true,"schema":{"type":"string","title":"Employer"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"visa_class","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visa Class"}},{"name":"soc_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Soc Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/h1b/stats":{"get":{"tags":["H-1B"],"summary":"Api H1B Stats","description":"Aggregate H-1B petition approval/denial statistics.","operationId":"api_h1b_stats_api_h1b_stats_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/h1b/employers":{"get":{"tags":["H-1B"],"summary":"Api H1B Employers","description":"Top H-1B employers by initial approvals.","operationId":"api_h1b_employers_api_h1b_employers_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}},{"name":"employer","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employer"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crossref/layoffs-vs-h1b":{"get":{"summary":"Api Crossref Layoffs H1B","description":"Companies in both WARN layoff records AND H-1B/LCA data.","operationId":"api_crossref_layoffs_h1b_api_crossref_layoffs_vs_h1b_get","parameters":[{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lca/by-state":{"get":{"tags":["LCA"],"summary":"Api Lca By State","description":"LCA petitions aggregated by worksite state.","operationId":"api_lca_by_state_api_lca_by_state_get","parameters":[{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}},{"name":"visa_class","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visa Class"}},{"name":"soc_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Soc Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lca/by-city":{"get":{"tags":["LCA"],"summary":"Api Lca By City","description":"LCA petitions aggregated by worksite city.","operationId":"api_lca_by_city_api_lca_by_city_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}},{"name":"visa_class","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visa Class"}},{"name":"soc_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Soc Code"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/h1b/sponsor-finder":{"get":{"tags":["H-1B"],"summary":"Api H1B Sponsor Finder","description":"Find companies actively sponsoring H-1B visas for a specific role.\nSearch by job title text or SOC code. Returns employers sorted by petition count.","operationId":"api_h1b_sponsor_finder_api_h1b_sponsor_finder_get","parameters":[{"name":"job_title","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Title"}},{"name":"soc_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Soc Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"min_petitions","in":"query","required":false,"schema":{"type":"integer","default":3,"title":"Min Petitions"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lca/by-soc":{"get":{"tags":["LCA"],"summary":"Api Lca By Soc","description":"LCA petitions aggregated by SOC code (profession). Filter by state/city/employer to see\nwhich professions dominate in each geography or company.","operationId":"api_lca_by_soc_api_lca_by_soc_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}},{"name":"visa_class","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visa Class"}},{"name":"employer","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Employer"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/h1b/by-state":{"get":{"tags":["H-1B"],"summary":"Api H1B By State","description":"H-1B petitions aggregated by state.","operationId":"api_h1b_by_state_api_h1b_by_state_get","parameters":[{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec-filings":{"get":{"tags":["SEC"],"summary":"Api Sec Filings","description":"Query SEC 8-K filings with optional filters.","operationId":"api_sec_filings_api_sec_filings_get","parameters":[{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticker"}},{"name":"cik","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cik"}},{"name":"company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"}},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End"}},{"name":"items","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Items"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec-filings/stats":{"get":{"tags":["SEC"],"summary":"Api Sec Filings Stats","description":"Summary statistics for SEC 8-K filings.","operationId":"api_sec_filings_stats_api_sec_filings_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/sec-filings/by-company":{"get":{"tags":["SEC"],"summary":"Api Sec Filings By Company","description":"SEC filings aggregated by company — top filers.","operationId":"api_sec_filings_by_company_api_sec_filings_by_company_get","parameters":[{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec-filings/by-date":{"get":{"tags":["SEC"],"summary":"Api Sec Filings By Date","description":"SEC filings count by date for trend charts.","operationId":"api_sec_filings_by_date_api_sec_filings_by_date_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":1,"default":90,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec-filings/warn-crossref":{"get":{"tags":["SEC"],"summary":"Api Sec Filings Warn Crossref","description":"Cross-reference: companies with both WARN notices and 8-K filings.","operationId":"api_sec_filings_warn_crossref_api_sec_filings_warn_crossref_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":1,"default":90,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bankruptcies":{"get":{"tags":["Bankruptcy"],"summary":"Api Bankruptcies","description":"Query bankruptcy filings with optional filters.","operationId":"api_bankruptcies_api_bankruptcies_get","parameters":[{"name":"company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"}},{"name":"chapter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chapter"}},{"name":"court","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Court"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End"}},{"name":"warn_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Warn Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bankruptcies/stats":{"get":{"tags":["Bankruptcy"],"summary":"Api Bankruptcies Stats","description":"Summary statistics for bankruptcy filings.","operationId":"api_bankruptcies_stats_api_bankruptcies_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/bankruptcies/by-date":{"get":{"tags":["Bankruptcy"],"summary":"Api Bankruptcies By Date","description":"Bankruptcy filing counts by date for trend charts.","operationId":"api_bankruptcies_by_date_api_bankruptcies_by_date_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":1,"default":90,"title":"Days"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"chapter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chapter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bankruptcies/warn-crossref":{"get":{"tags":["Bankruptcy"],"summary":"Api Bankruptcies Warn Crossref","description":"Companies with both WARN notices and bankruptcy filings.","operationId":"api_bankruptcies_warn_crossref_api_bankruptcies_warn_crossref_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":1,"default":365,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec-filings/ticker/{ticker}":{"get":{"tags":["SEC"],"summary":"Api Sec Filings By Ticker","description":"All SEC 8-K filings for a specific ticker symbol.","operationId":"api_sec_filings_by_ticker_api_sec_filings_ticker__ticker__get","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string","title":"Ticker"}},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sec-filings/detail/{accession_number}":{"get":{"summary":"Api Sec Filing Detail","description":"Get a single SEC filing with parsed content summary.","operationId":"api_sec_filing_detail_api_sec_filings_detail__accession_number__get","parameters":[{"name":"accession_number","in":"path","required":true,"schema":{"type":"string","title":"Accession Number"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bankruptcies/by-state":{"get":{"tags":["Bankruptcy"],"summary":"Api Bankruptcies By State","description":"Bankruptcy filing counts by state, with WARN match counts.","operationId":"api_bankruptcies_by_state_api_bankruptcies_by_state_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":1,"default":365,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bankruptcies/by-court":{"get":{"tags":["Bankruptcy"],"summary":"Api Bankruptcies By Court","description":"Bankruptcy filing counts by court. Optionally filter by state.","operationId":"api_bankruptcies_by_court_api_bankruptcies_by_court_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":1,"default":365,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crossref/company-timeline/{company_name}":{"get":{"summary":"Api Company Timeline","description":"Full distress timeline for a company: WARN notices + SEC filings + bankruptcy cases.","operationId":"api_company_timeline_api_crossref_company_timeline__company_name__get","parameters":[{"name":"company_name","in":"path","required":true,"schema":{"type":"string","title":"Company Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crossref/by-state":{"get":{"summary":"Api Crossref By State","description":"State-level comparison: WARN layoffs vs H-1B hiring.","operationId":"api_crossref_by_state_api_crossref_by_state_get","parameters":[{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crossref/by-city":{"get":{"summary":"Api Crossref By City","description":"City-level comparison: WARN layoffs vs H-1B/LCA hiring.","operationId":"api_crossref_by_city_api_crossref_by_city_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crossref/by-company":{"get":{"summary":"Api Crossref By Company","description":"Detailed company cross-reference: layoffs, H-1B approvals, LCA wages, top job titles.","operationId":"api_crossref_by_company_api_crossref_by_company_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}},{"name":"soc_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Soc Code"}},{"name":"all_years","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"All Years"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/crossref/talent-pipeline":{"get":{"summary":"Api Talent Pipeline","description":"Find available talent from recent layoffs by occupation/skill.\n\nCross-references WARN notices (last N days) with LCA visa petitions\nto show what roles each company was hiring for. Useful for recruiters\ntargeting skilled workers from recently laid-off companies.","operationId":"api_talent_pipeline_api_crossref_talent_pipeline_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"soc_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Soc Code"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":90,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/h1b-risk-check":{"get":{"tags":["H-1B"],"summary":"Api H1B Risk Check","description":"H-1B employer risk assessment — cross-references WARN, LCA, and H-1B data.","operationId":"api_h1b_risk_check_api_h1b_risk_check_get","parameters":[{"name":"employer","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"description":"Employer name to check","title":"Employer"},"description":"Employer name to check"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/violations":{"get":{"tags":["Signals"],"summary":"Api Violations","description":"Potential WARN Act violations — companies with <60 day notice gap.","operationId":"api_violations_api_violations_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"days_back","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":30,"default":365,"title":"Days Back"}},{"name":"min_employees","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Min Employees"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/talent/register":{"post":{"tags":["Talent Directory"],"summary":"Register Talent","description":"Register as a laid-off worker in the Talent Firehose directory.","operationId":"register_talent_api_talent_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TalentRegistration"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/talent/search":{"get":{"tags":["Talent Directory"],"summary":"Search Talent","description":"Search the talent directory. Requires Starter+ API key.","operationId":"search_talent_api_talent_search_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"skills","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Skills"}},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":90,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/talent/stats":{"get":{"tags":["Talent Directory"],"summary":"Talent Stats","description":"Public statistics about the talent directory.","operationId":"talent_stats_api_talent_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/risk-signal":{"get":{"tags":["Signals"],"summary":"Api Risk Signal","description":"Companies ranked by composite distress signal across all datasets.","operationId":"api_risk_signal_api_risk_signal_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"min_score","in":"query","required":false,"schema":{"type":"integer","default":2,"title":"Min Score"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/risk-signal/company/{company_name}":{"get":{"summary":"Api Risk Signal Company","description":"Get risk signal for a specific company.","operationId":"api_risk_signal_company_api_risk_signal_company__company_name__get","parameters":[{"name":"company_name","in":"path","required":true,"schema":{"type":"string","title":"Company Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/signals/talent-displacement":{"get":{"summary":"Api Talent Displacement","description":"Talent Displacement Index: companies laying off domestic workers while\nsimultaneously filing LCA/H-1B petitions.  A high TDI suggests the company\nis replacing its domestic workforce with visa workers.","operationId":"api_talent_displacement_api_signals_talent_displacement_get","parameters":[{"name":"months","in":"query","required":false,"schema":{"type":"integer","default":6,"title":"Months"}},{"name":"min_layoffs","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Min Layoffs"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/signals/metro-contagion":{"get":{"summary":"Api Metro Contagion","description":"Metro Contagion Score: metros where multiple unrelated companies are\nfiling WARN notices within a short window — indicating regional economic\ndistress spreading across employers.","operationId":"api_metro_contagion_api_signals_metro_contagion_get","parameters":[{"name":"months","in":"query","required":false,"schema":{"type":"integer","default":3,"title":"Months"}},{"name":"min_companies","in":"query","required":false,"schema":{"type":"integer","default":3,"title":"Min Companies"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/signals/industry-domino":{"get":{"summary":"Api Industry Domino","description":"Industry Domino Index: industries with simultaneous layoffs cascading\nacross multiple states — signals systemic industry-wide distress rather\nthan isolated company problems.","operationId":"api_industry_domino_api_signals_industry_domino_get","parameters":[{"name":"months","in":"query","required":false,"schema":{"type":"integer","default":3,"title":"Months"}},{"name":"min_states","in":"query","required":false,"schema":{"type":"integer","default":3,"title":"Min States"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/signals/warn-velocity":{"get":{"summary":"Api Warn Velocity","description":"WARN Velocity Index (WVI): Measures the acceleration of layoffs per\nstate by comparing recent notice velocity to a baseline period.\nA WVI > 1.0 means layoffs are accelerating; < 1.0 means decelerating.\nCross-referenced with DOL claims and JOLTS data for validation.","operationId":"api_warn_velocity_api_signals_warn_velocity_get","parameters":[{"name":"window_weeks","in":"query","required":false,"schema":{"type":"integer","default":4,"title":"Window Weeks"}},{"name":"compare_weeks","in":"query","required":false,"schema":{"type":"integer","default":12,"title":"Compare Weeks"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/signals/workforce-stress":{"get":{"summary":"Api Workforce Stress","description":"Workforce Stress Index (WSI): A composite per-state score combining\nWARN layoff trends, DOL unemployment claims, JOLTS quits-to-layoffs ratio,\nH-1B/LCA petition volume changes, and bankruptcy filings into a single\n0-10 distress score. The only index that cross-references all 6 federal\nlabor datasets into one number.","operationId":"api_workforce_stress_api_signals_workforce_stress_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/signals/summary":{"get":{"summary":"Api Signals Summary","description":"Aggregated summary of all novel signals — top entries from each index.","operationId":"api_signals_summary_api_signals_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/jolts/stats":{"get":{"tags":["JOLTS"],"summary":"Api Jolts Stats","description":"JOLTS summary statistics: record counts, date range, latest snapshot.","operationId":"api_jolts_stats_api_jolts_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/jolts/national":{"get":{"tags":["JOLTS"],"summary":"Api Jolts National","description":"National JOLTS time series. element: JO|HI|TS|QU|LD. level: L|R.","operationId":"api_jolts_national_api_jolts_national_get","parameters":[{"name":"element","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Element"}},{"name":"level","in":"query","required":false,"schema":{"type":"string","default":"L","title":"Level"}},{"name":"year_from","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year From"}},{"name":"year_to","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year To"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jolts/by-state":{"get":{"tags":["JOLTS"],"summary":"Api Jolts By State","description":"JOLTS data by state for a given month. Defaults to latest available.","operationId":"api_jolts_by_state_api_jolts_by_state_get","parameters":[{"name":"element","in":"query","required":false,"schema":{"type":"string","default":"JO","title":"Element"}},{"name":"level","in":"query","required":false,"schema":{"type":"string","default":"L","title":"Level"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jolts/by-industry":{"get":{"tags":["JOLTS"],"summary":"Api Jolts By Industry","description":"National JOLTS data by industry for a given month.","operationId":"api_jolts_by_industry_api_jolts_by_industry_get","parameters":[{"name":"element","in":"query","required":false,"schema":{"type":"string","default":"JO","title":"Element"}},{"name":"level","in":"query","required":false,"schema":{"type":"string","default":"L","title":"Level"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/jolts/trends":{"get":{"tags":["JOLTS"],"summary":"Api Jolts Trends","description":"JOLTS monthly trend data. Filter by state or industry.","operationId":"api_jolts_trends_api_jolts_trends_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"}},{"name":"element","in":"query","required":false,"schema":{"type":"string","default":"JO","title":"Element"}},{"name":"months","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Months"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/warn-weekly":{"get":{"summary":"Api Warn Weekly","description":"Weekly WARN notice aggregates (employees affected) aligned to Saturday week-ending.","operationId":"api_warn_weekly_api_warn_weekly_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/states/per-capita":{"get":{"summary":"Api States Per Capita","description":"Get layoff data per 100K population by state.","operationId":"api_states_per_capita_api_states_per_capita_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/sources":{"get":{"summary":"Api Sources","description":"Get data source metadata for states.","operationId":"api_sources_api_sources_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/trends":{"get":{"tags":["WARN"],"summary":"Api Trends","operationId":"api_trends_api_trends_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/top-companies":{"get":{"tags":["WARN"],"summary":"Api Top Companies","operationId":"api_top_companies_api_top_companies_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/yearly":{"get":{"tags":["WARN"],"summary":"Api Yearly","operationId":"api_yearly_api_yearly_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/resolve-slug/{slug}":{"get":{"summary":"Api Resolve Company Slug","description":"Resolve a URL slug to a company name. Public endpoint (no API key needed).","operationId":"api_resolve_company_slug_api_company_resolve_slug__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/{company_name}":{"get":{"summary":"Api Company Detail","description":"Get detailed information for a specific company (fuzzy match supported).","operationId":"api_company_detail_api_company__company_name__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"company_name","in":"path","required":true,"schema":{"type":"string","title":"Company Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/{company_name}/full":{"get":{"tags":["Intelligence"],"summary":"Api Company Full History","description":"Full cross-dataset history for a company. Returns WARN, LCA, H-1B, SEC, and bankruptcy data.\nAvailable to all tiers (evaluation period). Will require Pro or Enterprise tier in future.","operationId":"api_company_full_history_api_company__company_name__full_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"company_name","in":"path","required":true,"schema":{"type":"string","title":"Company Name"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"json or parquet","default":"json","title":"Format"},"description":"json or parquet"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/state/{state_code}":{"get":{"summary":"Api State Detail","description":"Get detailed statistics and data for a specific state.","operationId":"api_state_detail_api_state__state_code__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"state_code","in":"path","required":true,"schema":{"type":"string","title":"State Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/industries":{"get":{"summary":"Api Industries","description":"Get distinct industries with record counts and total employees.","operationId":"api_industries_api_industries_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/naics":{"get":{"summary":"Api Naics","description":"Get the full NAICS sector lookup table.","operationId":"api_naics_api_naics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/search":{"get":{"tags":["WARN"],"summary":"Api Search","description":"Full-text search across company names, cities, and counties.","operationId":"api_search_api_search_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"description":"Search query (matches company, city, county)","title":"Q"},"description":"Search query (matches company, city, county)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/unified-search":{"get":{"tags":["Search"],"summary":"Api Unified Search","description":"Search across all 6 datasets (or one if dataset param provided). Returns categorized results.","operationId":"api_unified_search_api_unified_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":200,"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}},{"name":"dataset","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to specific dataset: warn, lca, h1b, sec, bankruptcy, dol_claims, jolts","title":"Dataset"},"description":"Filter to specific dataset: warn, lca, h1b, sec, bankruptcy, dol_claims, jolts"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/widget":{"get":{"tags":["Widget"],"summary":"Api Widget","description":"Public endpoint for the embeddable widget. No API key required.","operationId":"api_widget_api_widget_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"default":5,"title":"Limit"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/health":{"get":{"tags":["System"],"summary":"Api Health","description":"Health check endpoint for monitoring. Returns 200 if healthy, 503 if not.","operationId":"api_health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/uptime-history":{"get":{"tags":["System"],"summary":"Api Uptime History","description":"Return daily uptime percentage for the last N days.","operationId":"api_uptime_history_api_uptime_history_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":7,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/market-pulse":{"get":{"tags":["Intelligence"],"summary":"Api Market Pulse","description":"Single-call market snapshot: stats from all 6 datasets, top at-risk companies, top industries, trend direction.","operationId":"api_market_pulse_api_market_pulse_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/state-intelligence/{state_code}":{"get":{"summary":"Api State Intelligence","description":"Unified state profile combining all 6 datasets into one intelligence view.","operationId":"api_state_intelligence_api_state_intelligence__state_code__get","parameters":[{"name":"state_code","in":"path","required":true,"schema":{"type":"string","title":"State Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/enrichment-stats":{"get":{"summary":"Api Enrichment Stats","description":"Get data enrichment coverage percentages (industry, ticker, geo, news).","operationId":"api_enrichment_stats_api_enrichment_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/records/public-companies":{"get":{"summary":"Api Public Companies","description":"Get WARN records for publicly traded companies (those with tickers).","operationId":"api_public_companies_api_records_public_companies_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/news":{"get":{"summary":"Api News","description":"Get layoff news articles with optional company/state/city/date filters.","operationId":"api_news_api_news_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"company","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/news/recent":{"get":{"summary":"Api News Recent","description":"Get recent news articles for dashboard (no auth required, limited fields).","operationId":"api_news_recent_api_news_recent_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/records/{record_id}/news":{"get":{"summary":"Api Record News","description":"Get news articles linked to a specific WARN record.","operationId":"api_record_news_api_records__record_id__news_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"record_id","in":"path","required":true,"schema":{"type":"string","title":"Record Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/geo":{"get":{"summary":"Api Geo","description":"Get records with geographic coordinates for map visualization.","operationId":"api_geo_api_geo_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":3650,"minimum":1,"default":365,"title":"Days"}},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date From"}},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date To"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/counties":{"get":{"summary":"Api Counties","description":"Get counties, optionally filtered by state. Use detail=true for aggregate stats.","operationId":"api_counties_api_counties_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"detail","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Detail"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/cities":{"get":{"summary":"Api Cities","description":"Get cities, optionally filtered by state/county. Use detail=true for aggregate stats.","operationId":"api_cities_api_cities_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"}},{"name":"detail","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Detail"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/companies":{"get":{"summary":"Api Companies","description":"Get companies with aggregate stats, filtered by location or industry.","operationId":"api_companies_api_companies_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"county","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"}},{"name":"city","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"}},{"name":"industry","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/signup":{"post":{"tags":["Auth"],"summary":"Auth Signup","description":"Create a new account with email + password. Returns session token.","operationId":"auth_signup_api_auth_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/login":{"post":{"tags":["Auth"],"summary":"Auth Login","description":"Sign in with email + password. Returns session token.","operationId":"auth_login_api_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/logout":{"post":{"tags":["Auth"],"summary":"Auth Logout","description":"Sign out — invalidates the session token.","operationId":"auth_logout_api_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/forgot-password":{"post":{"tags":["Auth"],"summary":"Auth Forgot Password","description":"Send a password reset link to the email.","operationId":"auth_forgot_password_api_auth_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/reset-password":{"post":{"tags":["Auth"],"summary":"Auth Reset Password","description":"Reset password using a token from the forgot-password email.","operationId":"auth_reset_password_api_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/keys":{"post":{"summary":"Create Free Key","description":"Create a free-tier API key. Returns the key (shown once).","operationId":"create_free_key_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/keys/reset":{"post":{"tags":["API Keys"],"summary":"Request Key Reset","description":"Request an API key reset. Sends a verification email.","operationId":"request_key_reset_api_keys_reset_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/keys/reset-confirm":{"get":{"tags":["API Keys"],"summary":"Confirm Key Reset","description":"Confirm API key reset via email link. Generates new key and emails it.","operationId":"confirm_key_reset_api_keys_reset_confirm_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/keys/reset-direct":{"post":{"tags":["API Keys"],"summary":"Reset Key Direct","description":"Reset API key for authenticated user. Returns new key immediately (no email required).","operationId":"reset_key_direct_api_keys_reset_direct_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/contact":{"post":{"summary":"Submit Contact","description":"Store a contact form submission and send email notification.","operationId":"submit_contact_api_contact_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactMessage"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sample-pack":{"post":{"summary":"Request Sample Pack","description":"Request a free sample data pack — captures email as lead and returns sample data info.","operationId":"request_sample_pack_api_sample_pack_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SamplePackRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/resume-submit":{"post":{"summary":"Submit Resume","description":"Store a resume submission for recruiter matching.","operationId":"submit_resume_api_resume_submit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResumeSubmission"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/lawyer-inquiry":{"post":{"summary":"Submit Lawyer Inquiry","description":"Store a lawyer inquiry for WARN Act violation review.","operationId":"submit_lawyer_inquiry_api_lawyer_inquiry_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LawyerInquiry"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/career-services-inquiry":{"post":{"summary":"Submit Career Services Inquiry","description":"Store a career services inquiry to connect laid-off workers with professionals.","operationId":"submit_career_services_inquiry_api_career_services_inquiry_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CareerServicesInquiry"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/insurance-inquiry":{"post":{"summary":"Submit Insurance Inquiry","description":"Store an insurance inquiry to connect laid-off workers with insurance specialists.","operationId":"submit_insurance_inquiry_api_insurance_inquiry_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsuranceInquiry"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/provider-register":{"post":{"summary":"Register Provider","description":"Register a professional service provider (lawyer, recruiter, insurance agent).","operationId":"register_provider_api_provider_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProviderRegistration"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/providers":{"get":{"summary":"List Providers","description":"List approved providers, optionally filtered by type and state.","operationId":"list_providers_api_providers_get","parameters":[{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/help-request":{"post":{"summary":"Submit Help Request","description":"Submit an employee help request (legal, career, insurance matching).","operationId":"submit_help_request_api_help_request_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Data"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/providers":{"get":{"tags":["Admin"],"summary":"Admin List Providers","description":"List all provider registrations (including unapproved). Admin only.","operationId":"admin_list_providers_api_admin_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/providers/{provider_id}/approve":{"put":{"tags":["Admin"],"summary":"Admin Approve Provider","description":"Approve or reject a provider registration.","operationId":"admin_approve_provider_api_admin_providers__provider_id__approve_put","parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"integer","title":"Provider Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/providers/{provider_id}":{"delete":{"tags":["Admin"],"summary":"Admin Delete Provider","description":"Delete a provider registration.","operationId":"admin_delete_provider_api_admin_providers__provider_id__delete","parameters":[{"name":"provider_id","in":"path","required":true,"schema":{"type":"integer","title":"Provider Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/help-requests":{"get":{"tags":["Admin"],"summary":"Admin List Help Requests","description":"List all employee help requests. Admin only.","operationId":"admin_list_help_requests_api_admin_help_requests_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/help-requests/{request_id}/match":{"put":{"tags":["Admin"],"summary":"Admin Match Help Request","description":"Mark a help request as matched with a provider.","operationId":"admin_match_help_request_api_admin_help_requests__request_id__match_put","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"integer","title":"Request Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/charts":{"get":{"summary":"Serve Charts","operationId":"serve_charts_charts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/state":{"get":{"summary":"Serve State Page","description":"Serve state page. Redirects to /data/layoffs/{slug} when ?code= is provided.","operationId":"serve_state_page_state_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/company":{"get":{"summary":"Serve Company Page","description":"Serve company page. Redirects to /company/{slug} when ?name= is provided.","operationId":"serve_company_page_company_get","parameters":[{"name":"name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/company/{slug}":{"get":{"summary":"Serve Company Slug","description":"SEO-friendly company page: /company/bp-america serves company.html.\n\nThe slug is resolved to a company name client-side via the API.","operationId":"serve_company_slug_company__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data":{"get":{"summary":"Serve Data","operationId":"serve_data_data_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/data/ind_companies":{"get":{"summary":"Serve Data Drill","description":"Serve the main data page for path-based drill-down URLs.","operationId":"serve_data_drill_data_ind_companies_get","parameters":[{"name":"rest","in":"query","required":false,"schema":{"type":"string","default":"","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/ind_companies/{rest}":{"get":{"summary":"Serve Data Drill","description":"Serve the main data page for path-based drill-down URLs.","operationId":"serve_data_drill_data_ind_companies__rest__get","parameters":[{"name":"rest","in":"path","required":true,"schema":{"type":"string","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/industries":{"get":{"summary":"Serve Data Drill","description":"Serve the main data page for path-based drill-down URLs.","operationId":"serve_data_drill_data_industries_get","parameters":[{"name":"rest","in":"query","required":false,"schema":{"type":"string","default":"","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/industries/{rest}":{"get":{"summary":"Serve Data Drill","description":"Serve the main data page for path-based drill-down URLs.","operationId":"serve_data_drill_data_industries__rest__get","parameters":[{"name":"rest","in":"path","required":true,"schema":{"type":"string","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/companies":{"get":{"summary":"Serve Data Drill","description":"Serve the main data page for path-based drill-down URLs.","operationId":"serve_data_drill_data_companies_get","parameters":[{"name":"rest","in":"query","required":false,"schema":{"type":"string","default":"","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/companies/{rest}":{"get":{"summary":"Serve Data Drill","description":"Serve the main data page for path-based drill-down URLs.","operationId":"serve_data_drill_data_companies__rest__get","parameters":[{"name":"rest","in":"path","required":true,"schema":{"type":"string","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/cities":{"get":{"summary":"Serve Data Drill","description":"Serve the main data page for path-based drill-down URLs.","operationId":"serve_data_drill_data_cities_get","parameters":[{"name":"rest","in":"query","required":false,"schema":{"type":"string","default":"","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/cities/{rest}":{"get":{"summary":"Serve Data Drill","description":"Serve the main data page for path-based drill-down URLs.","operationId":"serve_data_drill_data_cities__rest__get","parameters":[{"name":"rest","in":"path","required":true,"schema":{"type":"string","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/counties":{"get":{"summary":"Serve Data Drill","description":"Serve the main data page for path-based drill-down URLs.","operationId":"serve_data_drill_data_counties_get","parameters":[{"name":"rest","in":"query","required":false,"schema":{"type":"string","default":"","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/counties/{rest}":{"get":{"summary":"Serve Data Drill","description":"Serve the main data page for path-based drill-down URLs.","operationId":"serve_data_drill_data_counties__rest__get","parameters":[{"name":"rest","in":"path","required":true,"schema":{"type":"string","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/states":{"get":{"summary":"Serve Data Drill","description":"Serve the main data page for path-based drill-down URLs.","operationId":"serve_data_drill_data_states_get","parameters":[{"name":"rest","in":"query","required":false,"schema":{"type":"string","default":"","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/states/{rest}":{"get":{"summary":"Serve Data Drill","description":"Serve the main data page for path-based drill-down URLs.","operationId":"serve_data_drill_data_states__rest__get","parameters":[{"name":"rest","in":"path","required":true,"schema":{"type":"string","title":"Rest"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/h1b-visas":{"get":{"summary":"Serve Data H1B Visas","description":"Serve the H-1B & LCA visa data page.","operationId":"serve_data_h1b_visas_data_h1b_visas_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/data/labor":{"get":{"summary":"Redirect Data Labor","description":"Redirect old /data/labor URL to /data/h1b-visas for backward compatibility.","operationId":"redirect_data_labor_data_labor_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/data/jobless-claims":{"get":{"summary":"Serve Data Jobless Claims","description":"Serve the Jobless Claims page.","operationId":"serve_data_jobless_claims_data_jobless_claims_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/data/sec-filings":{"get":{"summary":"Serve Data Sec Filings","description":"Serve the SEC EDGAR 8-K filings page.","operationId":"serve_data_sec_filings_data_sec_filings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/data/bankruptcies":{"get":{"summary":"Serve Data Bankruptcies","description":"Serve the bankruptcy filings page.","operationId":"serve_data_bankruptcies_data_bankruptcies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/data/signals":{"get":{"summary":"Serve Data Signals","description":"Serve the novel signals dashboard page.","operationId":"serve_data_signals_data_signals_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/data/jolts":{"get":{"summary":"Serve Data Jolts","description":"Serve the JOLTS labor turnover page.","operationId":"serve_data_jolts_data_jolts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/data/all-data":{"get":{"summary":"Serve Data Review","description":"Serve the All Data review page.","operationId":"serve_data_review_data_all_data_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/data-review/{dataset}":{"get":{"summary":"Api Data Review","description":"Return sample of records. Public access limited to 100 rows, admin gets up to 1000.","operationId":"api_data_review_api_data_review__dataset__get","parameters":[{"name":"dataset","in":"path","required":true,"schema":{"type":"string","title":"Dataset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/layoffs":{"get":{"summary":"Serve Data Layoffs Index","description":"Serve the layoffs hub page at /data/layoffs.","operationId":"serve_data_layoffs_index_data_layoffs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/data/layoffs/industry/{slug}":{"get":{"summary":"Serve Data Layoffs Industry","description":"Serve pre-generated industry SEO page at /data/layoffs/industry/.","operationId":"serve_data_layoffs_industry_data_layoffs_industry__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/layoffs/company/{slug}":{"get":{"summary":"Serve Data Layoffs Company","description":"Serve pre-generated company SEO page, or fall back to dynamic company page.","operationId":"serve_data_layoffs_company_data_layoffs_company__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/layoffs/{state_slug}/industry/{ind_slug}":{"get":{"summary":"Serve Data Layoffs Industry State","description":"Serve pre-generated industry+state page at /data/layoffs/{state}/industry/{industry}.","operationId":"serve_data_layoffs_industry_state_data_layoffs__state_slug__industry__ind_slug__get","parameters":[{"name":"state_slug","in":"path","required":true,"schema":{"type":"string","title":"State Slug"}},{"name":"ind_slug","in":"path","required":true,"schema":{"type":"string","title":"Ind Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/layoffs/{state_slug}/county/{county_slug}":{"get":{"summary":"Serve Data Layoffs County","description":"Serve pre-generated county SEO page at /data/layoffs/{state}/county/{county}.","operationId":"serve_data_layoffs_county_data_layoffs__state_slug__county__county_slug__get","parameters":[{"name":"state_slug","in":"path","required":true,"schema":{"type":"string","title":"State Slug"}},{"name":"county_slug","in":"path","required":true,"schema":{"type":"string","title":"County Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/layoffs/{state_slug}/{city_slug}":{"get":{"summary":"Serve Data Layoffs City","description":"Serve pre-generated city SEO page at /data/layoffs/.","operationId":"serve_data_layoffs_city_data_layoffs__state_slug___city_slug__get","parameters":[{"name":"state_slug","in":"path","required":true,"schema":{"type":"string","title":"State Slug"}},{"name":"city_slug","in":"path","required":true,"schema":{"type":"string","title":"City Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/layoffs/{state_slug}":{"get":{"summary":"Serve Data Layoffs State","description":"Serve pre-generated state SEO page at /data/layoffs/.","operationId":"serve_data_layoffs_state_data_layoffs__state_slug__get","parameters":[{"name":"state_slug","in":"path","required":true,"schema":{"type":"string","title":"State Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/data/{state_slug}":{"get":{"summary":"Serve State Seo","description":"301 redirect from old /data/{state} URLs to canonical /data/layoffs/{state}.","operationId":"serve_state_seo_data__state_slug__get","parameters":[{"name":"state_slug","in":"path","required":true,"schema":{"type":"string","title":"State Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pricing":{"get":{"summary":"Serve Pricing","operationId":"serve_pricing_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/contact":{"get":{"summary":"Serve Contact","operationId":"serve_contact_contact_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/getting-started":{"get":{"summary":"Serve Getting Started","operationId":"serve_getting_started_getting_started_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/faq":{"get":{"summary":"Serve Faq","operationId":"serve_faq_faq_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/privacy":{"get":{"summary":"Serve Privacy","operationId":"serve_privacy_privacy_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/terms":{"get":{"summary":"Serve Terms","operationId":"serve_terms_terms_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/layoffs":{"get":{"summary":"Serve Layoffs Index","description":"301 redirect from old /layoffs to /data/layoffs.","operationId":"serve_layoffs_index_layoffs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/layoffs/industry/{slug}":{"get":{"summary":"Serve Layoffs Industry","description":"301 redirect from old /layoffs/industry/ to /data/layoffs/industry/.","operationId":"serve_layoffs_industry_layoffs_industry__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/layoffs/company/{slug}":{"get":{"summary":"Serve Layoffs Company","description":"301 redirect from old /layoffs/company/ to /data/layoffs/company/.","operationId":"serve_layoffs_company_layoffs_company__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/layoffs/metro/{slug}":{"get":{"summary":"Serve Layoffs Metro","description":"301 redirect from old /layoffs/metro/ to /data/layoffs/metro/.","operationId":"serve_layoffs_metro_layoffs_metro__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/layoffs/recent":{"get":{"summary":"Serve Layoffs Recent","description":"301 redirect from old /layoffs/recent to /data/layoffs/recent.","operationId":"serve_layoffs_recent_layoffs_recent_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/layoffs/{state_slug}/industry/{ind_slug}":{"get":{"summary":"Serve Layoffs Industry State","description":"301 redirect from old /layoffs/{state}/industry/{ind} to /data/layoffs/.","operationId":"serve_layoffs_industry_state_layoffs__state_slug__industry__ind_slug__get","parameters":[{"name":"state_slug","in":"path","required":true,"schema":{"type":"string","title":"State Slug"}},{"name":"ind_slug","in":"path","required":true,"schema":{"type":"string","title":"Ind Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/layoffs/{state_slug}/{city_slug}":{"get":{"summary":"Serve Layoffs City","description":"301 redirect from old /layoffs/{state}/{city} to /data/layoffs/.","operationId":"serve_layoffs_city_layoffs__state_slug___city_slug__get","parameters":[{"name":"state_slug","in":"path","required":true,"schema":{"type":"string","title":"State Slug"}},{"name":"city_slug","in":"path","required":true,"schema":{"type":"string","title":"City Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/layoffs/{state_slug}":{"get":{"summary":"Serve Layoffs State","description":"301 redirect from old /layoffs/{state} to /data/layoffs/.","operationId":"serve_layoffs_state_layoffs__state_slug__get","parameters":[{"name":"state_slug","in":"path","required":true,"schema":{"type":"string","title":"State Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/blog":{"get":{"summary":"Serve Blog Index","operationId":"serve_blog_index_blog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/blog/{slug}":{"get":{"summary":"Serve Blog Article","description":"Serve editorial blog articles from /blog/{slug}.","operationId":"serve_blog_article_blog__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/blog/{year}/{month}":{"get":{"summary":"Serve Blog Month","operationId":"serve_blog_month_blog__year___month__get","parameters":[{"name":"year","in":"path","required":true,"schema":{"type":"string","title":"Year"}},{"name":"month","in":"path","required":true,"schema":{"type":"string","title":"Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/blog/{year}/{month}/week-{week}":{"get":{"summary":"Serve Blog Week","operationId":"serve_blog_week_blog__year___month__week__week__get","parameters":[{"name":"year","in":"path","required":true,"schema":{"type":"string","title":"Year"}},{"name":"month","in":"path","required":true,"schema":{"type":"string","title":"Month"}},{"name":"week","in":"path","required":true,"schema":{"type":"string","title":"Week"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/blog/{year}/{month}/week-{week}/{state_slug}":{"get":{"summary":"Serve Blog Week State","operationId":"serve_blog_week_state_blog__year___month__week__week___state_slug__get","parameters":[{"name":"year","in":"path","required":true,"schema":{"type":"string","title":"Year"}},{"name":"month","in":"path","required":true,"schema":{"type":"string","title":"Month"}},{"name":"week","in":"path","required":true,"schema":{"type":"string","title":"Week"}},{"name":"state_slug","in":"path","required":true,"schema":{"type":"string","title":"State Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/blog/{year}/{month}/{state_slug}":{"get":{"summary":"Serve Blog State Month","operationId":"serve_blog_state_month_blog__year___month___state_slug__get","parameters":[{"name":"year","in":"path","required":true,"schema":{"type":"string","title":"Year"}},{"name":"month","in":"path","required":true,"schema":{"type":"string","title":"Month"}},{"name":"state_slug","in":"path","required":true,"schema":{"type":"string","title":"State Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reports/weekly/latest":{"get":{"tags":["Reports"],"summary":"Serve Weekly Report","description":"Serve the most recent weekly PDF report. Requires pro or enterprise tier.","operationId":"serve_weekly_report_reports_weekly_latest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/reports/weekly/latest-sample":{"get":{"tags":["Reports"],"summary":"Serve Sample Report","description":"Serve an older weekly PDF report as a free sample. No auth required.\n\nReturns the 4th most recent report (or oldest available) so the latest\nreports remain exclusive to Pro/Enterprise subscribers.","operationId":"serve_sample_report_reports_weekly_latest_sample_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reports":{"get":{"summary":"Serve Reports","description":"Serve the reports page directly.","operationId":"serve_reports_reports_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/widget":{"get":{"summary":"Serve Widget Page","operationId":"serve_widget_page_widget_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/about":{"get":{"summary":"Serve About","operationId":"serve_about_about_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/schema":{"get":{"summary":"Api Schema","description":"Data dictionary — field names, types, and descriptions for AI/programmatic use.","operationId":"api_schema_api_schema_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Serve Landing","operationId":"serve_landing__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/account":{"get":{"summary":"Serve Account","operationId":"serve_account_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/account":{"get":{"summary":"Api Account","description":"Get account dashboard data. Requires X-API-Key or Bearer session token.","operationId":"api_account_api_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/usage":{"get":{"summary":"Api Usage","description":"Get API usage stats for authenticated user. Requires X-API-Key header.","operationId":"api_usage_api_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/subscribe":{"post":{"tags":["Subscriptions"],"summary":"Subscribe","description":"Subscribe to email alerts for new WARN notices.","operationId":"subscribe_api_subscribe_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscribeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Subscriptions"],"summary":"Update Sub","description":"Update subscription filters or frequency. Requires unsubscribe token for ownership proof.","operationId":"update_sub_api_subscribe_put","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSubscriptionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Subscriptions"],"summary":"Unsubscribe","description":"Unsubscribe from email alerts. Requires token (sent in unsubscribe link).","operationId":"unsubscribe_api_subscribe_delete","parameters":[{"name":"email","in":"query","required":false,"schema":{"type":"string","title":"Email"}},{"name":"token","in":"query","required":false,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscribe/verify":{"get":{"tags":["Subscriptions"],"summary":"Verify Sub","description":"Verify email subscription.","operationId":"verify_sub_api_subscribe_verify_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscribe/unsubscribe":{"get":{"tags":["Subscriptions"],"summary":"Unsubscribe By Token","description":"One-click unsubscribe via token or email (no login required).","operationId":"unsubscribe_by_token_api_subscribe_unsubscribe_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","title":"Token"}},{"name":"email","in":"query","required":false,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscribe/slack":{"put":{"tags":["Subscriptions"],"summary":"Update Slack Webhook","description":"Add or remove a Slack webhook URL from an email subscription.","operationId":"update_slack_webhook_api_subscribe_slack_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackWebhookRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscribe/slack/test":{"post":{"tags":["Subscriptions"],"summary":"Test Slack Webhook","description":"Send a test message to a Slack webhook URL.","operationId":"test_slack_webhook_api_subscribe_slack_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackWebhookRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/watchlist":{"post":{"tags":["Subscriptions"],"summary":"Manage Watchlist","description":"Add or remove a company from email subscription watchlist.","operationId":"manage_watchlist_api_watchlist_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Subscriptions"],"summary":"Get Watchlist","description":"Get watchlist for an email subscriber.","operationId":"get_watchlist_api_watchlist_get","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/track":{"get":{"tags":["Subscriptions"],"summary":"Track Engagement","description":"Track subscriber engagement from alert email clicks. Redirects to target URL.","operationId":"track_engagement_api_track_get","parameters":[{"name":"e","in":"query","required":false,"schema":{"type":"string","description":"Subscriber email hash","default":"","title":"E"},"description":"Subscriber email hash"},{"name":"s","in":"query","required":false,"schema":{"type":"string","description":"Source: alert, digest, blog","default":"","title":"S"},"description":"Source: alert, digest, blog"},{"name":"u","in":"query","required":false,"schema":{"type":"string","description":"Target URL","default":"","title":"U"},"description":"Target URL"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/engagement":{"get":{"tags":["Admin"],"summary":"Admin Engagement Stats","description":"Subscriber engagement stats — who's coming back from alerts.","operationId":"admin_engagement_stats_api_admin_engagement_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/metros":{"get":{"tags":["Subscriptions"],"summary":"List Metros","description":"List available metro areas for alert filtering.","operationId":"list_metros_api_metros_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/alert-industries":{"get":{"tags":["Subscriptions"],"summary":"List Alert Industries","description":"List deduplicated industry sectors for alert filtering.","operationId":"list_alert_industries_api_alert_industries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/login":{"post":{"tags":["Admin"],"summary":"Admin Login","description":"Login to admin dashboard. Step 1: email + password → MFA challenge.","operationId":"admin_login_api_admin_login_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/mfa-setup":{"post":{"tags":["Admin"],"summary":"Admin Mfa Setup","description":"Generate TOTP secret + QR code URI for MFA setup.","operationId":"admin_mfa_setup_api_admin_mfa_setup_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/mfa-verify":{"post":{"tags":["Admin"],"summary":"Admin Mfa Verify","description":"Step 2: Verify TOTP code and issue admin session (1-hour).","operationId":"admin_mfa_verify_api_admin_mfa_verify_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin":{"get":{"summary":"Serve Admin","operationId":"serve_admin_admin_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/leads":{"get":{"summary":"Serve Admin Leads","operationId":"serve_admin_leads_admin_leads_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/health":{"get":{"summary":"Admin Health","description":"System health: scraper status, data freshness, infrastructure, all datasets.","operationId":"admin_health_api_admin_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/leads":{"get":{"summary":"Admin Leads","description":"Sales leads: subscribers, API keys, purchases, API usage.","operationId":"admin_leads_api_admin_leads_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/subscribers":{"get":{"summary":"Admin Subscribers","description":"Return full subscriber lists by category for lazy-loading.","operationId":"admin_subscribers_api_admin_subscribers_get","parameters":[{"name":"category","in":"query","required":true,"schema":{"type":"string","title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/activity":{"get":{"summary":"Admin Activity","description":"Records scraped in the last 24 hours.","operationId":"admin_activity_api_admin_activity_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/traffic":{"get":{"summary":"Admin Traffic","description":"Proxy Plausible Stats API for traffic dashboard.","operationId":"admin_traffic_api_admin_traffic_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/rescrape":{"post":{"summary":"Admin Rescrape","description":"Re-run scrapers for specified states.","operationId":"admin_rescrape_api_admin_rescrape_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RescrapeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/subscribers-manage":{"get":{"summary":"Admin Subscribers Manage","description":"List all subscribers with search, filter, pagination.","operationId":"admin_subscribers_manage_api_admin_subscribers_manage_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}},{"name":"frequency","in":"query","required":false,"schema":{"type":"string","default":"","title":"Frequency"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/resend-verification":{"post":{"summary":"Admin Resend Verification","description":"Resend verification email to an unverified subscriber.","operationId":"admin_resend_verification_api_admin_resend_verification_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/subscribers-manage/{sub_id}":{"put":{"summary":"Admin Update Subscriber","description":"Update a subscriber record.","operationId":"admin_update_subscriber_api_admin_subscribers_manage__sub_id__put","parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"integer","title":"Sub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Admin Delete Subscriber","description":"Soft-delete a subscriber (set is_active = 0).","operationId":"admin_delete_subscriber_api_admin_subscribers_manage__sub_id__delete","parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"integer","title":"Sub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/api-customers":{"get":{"summary":"Admin Api Customers","description":"List API customers with usage stats, quota %, search/filter.","operationId":"admin_api_customers_api_admin_api_customers_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}},{"name":"tier","in":"query","required":false,"schema":{"type":"string","default":"","title":"Tier"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"Sort by: usage, created, email, tier","default":"usage","title":"Sort"},"description":"Sort by: usage, created, email, tier"},{"name":"order","in":"query","required":false,"schema":{"type":"string","description":"Sort order: asc or desc","default":"desc","title":"Order"},"description":"Sort order: asc or desc"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/api-customers/{customer_id}/usage":{"get":{"summary":"Admin Customer Usage","description":"Get detailed API usage for a specific customer.","operationId":"admin_customer_usage_api_admin_api_customers__customer_id__usage_get","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"integer","title":"Customer Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/api-customers/{customer_id}":{"put":{"summary":"Admin Update Customer","description":"Update an API customer record (tier, daily_limit_override, coupon, notes).","operationId":"admin_update_customer_api_admin_api_customers__customer_id__put","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"integer","title":"Customer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Admin Delete Customer","description":"Soft-delete an API customer (set is_active = 0).","operationId":"admin_delete_customer_api_admin_api_customers__customer_id__delete","parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"type":"integer","title":"Customer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/coupons":{"get":{"summary":"Admin List Coupons","description":"List all coupons.","operationId":"admin_list_coupons_api_admin_coupons_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/coupons/generate":{"post":{"summary":"Admin Generate Coupons","description":"Generate monthly coupon codes for 10%, 20%, and 100% discounts.","operationId":"admin_generate_coupons_api_admin_coupons_generate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/coupons/{coupon_id}":{"delete":{"summary":"Admin Deactivate Coupon","description":"Deactivate a coupon.","operationId":"admin_deactivate_coupon_api_admin_coupons__coupon_id__delete","parameters":[{"name":"coupon_id","in":"path","required":true,"schema":{"type":"integer","title":"Coupon Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/send-email":{"post":{"summary":"Admin Send Email","description":"Send an ad-hoc email to a contact from the admin compose modal.","operationId":"admin_send_email_api_admin_send_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendEmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/validate-coupon":{"get":{"summary":"Validate Coupon","description":"Public endpoint: validate a coupon code and return discount.","operationId":"validate_coupon_api_validate_coupon_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/leads":{"get":{"tags":["Leads"],"summary":"Api List Leads","description":"List leads with optional filters. Requires admin auth.","operationId":"api_list_leads_api_leads_get","parameters":[{"name":"lead_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lead Type"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Leads"],"summary":"Api Create Lead","description":"Create a new lead. Requires admin auth.","operationId":"api_create_lead_api_leads_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/leads/{lead_id}":{"put":{"tags":["Leads"],"summary":"Api Update Lead","description":"Update a lead. Requires admin auth.","operationId":"api_update_lead_api_leads__lead_id__put","parameters":[{"name":"lead_id","in":"path","required":true,"schema":{"type":"integer","title":"Lead Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Leads"],"summary":"Api Delete Lead","description":"Delete a lead. Requires admin auth.","operationId":"api_delete_lead_api_leads__lead_id__delete","parameters":[{"name":"lead_id","in":"path","required":true,"schema":{"type":"integer","title":"Lead Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/leads/stats":{"get":{"tags":["Leads"],"summary":"Api Leads Stats","description":"Get lead counts by type and status. Requires admin auth.","operationId":"api_leads_stats_api_leads_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/leads/conversions":{"get":{"tags":["Leads"],"summary":"Api Leads Conversions","description":"Cross-reference leads with subscribers and API key signups.","operationId":"api_leads_conversions_api_leads_conversions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/outreach":{"get":{"tags":["Outreach"],"summary":"Api List Outreach","description":"List outreach log entries. Requires admin auth.","operationId":"api_list_outreach_api_outreach_get","parameters":[{"name":"lead_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lead Type"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"step","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Step"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Outreach"],"summary":"Api Log Outreach","description":"Log an outreach email sent. Requires admin auth.","operationId":"api_log_outreach_api_outreach_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/stats":{"get":{"tags":["Outreach"],"summary":"Api Outreach Stats","description":"Get outreach funnel stats. Requires admin auth.","operationId":"api_outreach_stats_api_outreach_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/outreach/{outreach_id}":{"put":{"tags":["Outreach"],"summary":"Api Update Outreach","description":"Update outreach entry (mark opened, replied, unsubscribed). Requires admin auth.","operationId":"api_update_outreach_api_outreach__outreach_id__put","parameters":[{"name":"outreach_id","in":"path","required":true,"schema":{"type":"integer","title":"Outreach Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/outreach/unsubscribe":{"get":{"tags":["Outreach"],"summary":"Api Outreach Unsubscribe","description":"Public endpoint for outreach email recipients to unsubscribe. Requires token.","operationId":"api_outreach_unsubscribe_api_outreach_unsubscribe_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","title":"Token"}},{"name":"id","in":"query","required":false,"schema":{"type":"integer","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sponsored-ads":{"get":{"tags":["Sponsored Ads"],"summary":"Api List Ads","description":"List sponsored ads. Requires admin auth for inactive ads; active ads are public.","operationId":"api_list_ads_api_sponsored_ads_get","parameters":[{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}},{"name":"ad_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ad Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Sponsored Ads"],"summary":"Api Create Ad","description":"Create a new sponsored ad. Requires admin auth.","operationId":"api_create_ad_api_sponsored_ads_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sponsored-ads/for-page":{"get":{"tags":["Sponsored Ads"],"summary":"Api Ads For Page","description":"Return active ads relevant to a specific page/state context. Public, no auth required.","operationId":"api_ads_for_page_api_sponsored_ads_for_page_get","parameters":[{"name":"page","in":"query","required":true,"schema":{"type":"string","description":"Page path, e.g. /data/layoffs/california","title":"Page"},"description":"Page path, e.g. /data/layoffs/california"},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sponsored-ads/{ad_id}":{"put":{"tags":["Sponsored Ads"],"summary":"Api Update Ad","description":"Update a sponsored ad. Requires admin auth.","operationId":"api_update_ad_api_sponsored_ads__ad_id__put","parameters":[{"name":"ad_id","in":"path","required":true,"schema":{"type":"integer","title":"Ad Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sponsored-ads/{ad_id}/impression":{"post":{"tags":["Sponsored Ads"],"summary":"Api Ad Impression","description":"Record an ad impression. Public, no auth required.","operationId":"api_ad_impression_api_sponsored_ads__ad_id__impression_post","parameters":[{"name":"ad_id","in":"path","required":true,"schema":{"type":"integer","title":"Ad Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sponsored-ads/{ad_id}/click":{"post":{"tags":["Sponsored Ads"],"summary":"Api Ad Click","description":"Record an ad click. Public, no auth required.","operationId":"api_ad_click_api_sponsored_ads__ad_id__click_post","parameters":[{"name":"ad_id","in":"path","required":true,"schema":{"type":"integer","title":"Ad Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email-templates":{"get":{"tags":["Outreach"],"summary":"Api List Templates","description":"List email templates. Requires admin auth.","operationId":"api_list_templates_api_email_templates_get","parameters":[{"name":"lead_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lead Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email-templates/{lead_type}/{step}":{"put":{"tags":["Outreach"],"summary":"Api Update Template","description":"Update an email template. Requires admin auth.","operationId":"api_update_template_api_email_templates__lead_type___step__put","parameters":[{"name":"lead_type","in":"path","required":true,"schema":{"type":"string","title":"Lead Type"}},{"name":"step","in":"path","required":true,"schema":{"type":"integer","title":"Step"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email-templates/seed":{"post":{"tags":["Outreach"],"summary":"Api Seed Templates","description":"Seed email templates from hardcoded defaults. Requires admin auth.","operationId":"api_seed_templates_api_email_templates_seed_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AdRequest":{"properties":{"advertiser_lead_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Advertiser Lead Id"},"company_name":{"type":"string","title":"Company Name"},"ad_type":{"type":"string","title":"Ad Type"},"target_states":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target States"},"target_pages":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Pages"},"headline":{"type":"string","title":"Headline"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"cta_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cta Text"},"cta_url":{"type":"string","title":"Cta Url"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"},"monthly_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Monthly Rate"},"is_active":{"type":"integer","title":"Is Active","default":0}},"type":"object","required":["company_name","ad_type","headline","cta_url"],"title":"AdRequest"},"AdUpdateRequest":{"properties":{"advertiser_lead_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Advertiser Lead Id"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"ad_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ad Type"},"target_states":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target States"},"target_pages":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Pages"},"headline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Headline"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"cta_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cta Text"},"cta_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cta Url"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Date"},"monthly_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Monthly Rate"},"is_active":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Is Active"}},"type":"object","title":"AdUpdateRequest"},"CareerServicesInquiry":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"phone":{"type":"string","title":"Phone","default":""},"state":{"type":"string","title":"State","default":""},"industry":{"type":"string","title":"Industry","default":""},"service_type":{"type":"string","title":"Service Type","default":""},"description":{"type":"string","title":"Description","default":""}},"type":"object","required":["name","email"],"title":"CareerServicesInquiry"},"ContactMessage":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"subject":{"type":"string","title":"Subject"},"message":{"type":"string","title":"Message"},"source":{"type":"string","title":"Source","default":""}},"type":"object","required":["name","email","subject","message"],"title":"ContactMessage"},"CreateKeyRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"CreateKeyRequest"},"FilterCreate":{"properties":{"name":{"type":"string","title":"Name"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"min_employees":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Employees"}},"type":"object","required":["name"],"title":"FilterCreate"},"ForgotPasswordRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"ForgotPasswordRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InsuranceInquiry":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"phone":{"type":"string","title":"Phone","default":""},"state":{"type":"string","title":"State","default":""},"insurance_type":{"type":"string","title":"Insurance Type","default":""},"employer":{"type":"string","title":"Employer","default":""},"layoff_date":{"type":"string","title":"Layoff Date","default":""},"description":{"type":"string","title":"Description","default":""}},"type":"object","required":["name","email"],"title":"InsuranceInquiry"},"LawyerInquiry":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"phone":{"type":"string","title":"Phone","default":""},"state":{"type":"string","title":"State","default":""},"company_name":{"type":"string","title":"Company Name","default":""},"employees_affected":{"type":"integer","title":"Employees Affected","default":0},"notice_days":{"type":"integer","title":"Notice Days","default":0},"description":{"type":"string","title":"Description","default":""}},"type":"object","required":["name","email"],"title":"LawyerInquiry"},"LeadRequest":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"lead_type":{"type":"string","title":"Lead Type"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"metro":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metro"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"status":{"type":"string","title":"Status","default":"new"},"contacted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contacted At"},"responded_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Responded At"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["name","email","lead_type"],"title":"LeadRequest"},"LeadUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"lead_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lead Type"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"metro":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metro"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"contacted_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contacted At"},"responded_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Responded At"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"LeadUpdateRequest"},"LoginRequest":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest"},"ProviderRegistration":{"properties":{"provider_type":{"type":"string","title":"Provider Type"},"firm_name":{"type":"string","title":"Firm Name"},"contact_name":{"type":"string","title":"Contact Name"},"email":{"type":"string","title":"Email"},"phone":{"type":"string","title":"Phone","default":""},"state":{"type":"string","title":"State"},"specialties":{"type":"string","title":"Specialties","default":""},"website":{"type":"string","title":"Website","default":""}},"type":"object","required":["provider_type","firm_name","contact_name","email","state"],"title":"ProviderRegistration"},"RescrapeRequest":{"properties":{"states":{"items":{"type":"string"},"type":"array","title":"States"}},"type":"object","required":["states"],"title":"RescrapeRequest"},"ResetKeyRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"ResetKeyRequest"},"ResetPasswordRequest":{"properties":{"token":{"type":"string","title":"Token"},"password":{"type":"string","title":"Password"}},"type":"object","required":["token","password"],"title":"ResetPasswordRequest"},"ResumeSubmission":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"phone":{"type":"string","title":"Phone","default":""},"state":{"type":"string","title":"State","default":""},"industry":{"type":"string","title":"Industry","default":""},"experience_years":{"type":"string","title":"Experience Years","default":""},"resume_text":{"type":"string","title":"Resume Text","default":""}},"type":"object","required":["name","email"],"title":"ResumeSubmission"},"SamplePackRequest":{"properties":{"email":{"type":"string","title":"Email"},"source":{"type":"string","title":"Source","default":""}},"type":"object","required":["email"],"title":"SamplePackRequest"},"SendEmailRequest":{"properties":{"to_email":{"type":"string","title":"To Email"},"subject":{"type":"string","title":"Subject"},"body":{"type":"string","title":"Body"},"html":{"type":"string","title":"Html","default":""},"contact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contact Id"}},"type":"object","required":["to_email","subject","body"],"title":"SendEmailRequest"},"SignupRequest":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"SignupRequest"},"SlackWebhookRequest":{"properties":{"email":{"type":"string","title":"Email"},"slack_webhook_url":{"type":"string","title":"Slack Webhook Url","default":""}},"type":"object","required":["email"],"title":"SlackWebhookRequest"},"SubscribeRequest":{"properties":{"email":{"type":"string","title":"Email"},"name":{"type":"string","title":"Name","default":""},"zipcode":{"type":"string","title":"Zipcode","default":""},"states":{"items":{"type":"string"},"type":"array","title":"States","default":[]},"city":{"type":"string","title":"City","default":""},"naics_sector":{"type":"string","title":"Naics Sector","default":""},"metro_slug":{"type":"string","title":"Metro Slug","default":""},"frequency":{"type":"string","title":"Frequency","default":"daily"},"alert_type":{"type":"string","title":"Alert Type","default":"warn"},"tickers":{"type":"string","title":"Tickers","default":""},"signal_type":{"type":"string","title":"Signal Type","default":""},"company":{"type":"string","title":"Company","default":""},"source":{"type":"string","title":"Source","default":""}},"type":"object","required":["email"],"title":"SubscribeRequest"},"TalentRegistration":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"linkedin_url":{"type":"string","title":"Linkedin Url","default":""},"title":{"type":"string","title":"Title","default":""},"skills":{"type":"string","title":"Skills","default":""},"company":{"type":"string","title":"Company","default":""},"state":{"type":"string","title":"State","default":""},"industry":{"type":"string","title":"Industry","default":""},"experience_years":{"type":"integer","title":"Experience Years","default":0},"open_to_relocation":{"type":"boolean","title":"Open To Relocation","default":false}},"type":"object","required":["name","email"],"title":"TalentRegistration"},"UpdateSubscriptionRequest":{"properties":{"email":{"type":"string","title":"Email"},"states":{"items":{"type":"string"},"type":"array","title":"States"},"frequency":{"type":"string","title":"Frequency"},"naics_sector":{"type":"string","title":"Naics Sector"},"metro_slug":{"type":"string","title":"Metro Slug"}},"type":"object","required":["email"],"title":"UpdateSubscriptionRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WatchlistRequest":{"properties":{"email":{"type":"string","title":"Email"},"company":{"type":"string","title":"Company"},"action":{"type":"string","title":"Action","default":"add"}},"type":"object","required":["email","company"],"title":"WatchlistRequest"},"WebhookCreate":{"properties":{"filter_id":{"type":"integer","title":"Filter Id"},"url":{"type":"string","title":"Url"}},"type":"object","required":["filter_id","url"],"title":"WebhookCreate"},"WebhookTest":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"WebhookTest"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"}}}}