{"openapi":"3.1.0","info":{"title":"PEPIndex API — Presidential Economic Pressure Index","description":"Quantitative index measuring the gap between presidential policy threats and actual follow-through, with economic impact analysis.\n\n**Authentication**: All endpoints except `/api/v1/index` and `/api/v1/stats` require an `X-API-Key` header. Standard keys access event data; Premium keys unlock economic impact and market analysis.\n\nEnquiries: data@apiautomations.com","version":"2.0.0"},"paths":{"/api/v1/events/{event_id}/tariff-rates":{"get":{"tags":["economic-impact"],"summary":"Get Tariff Rate History","description":"Time series of statutory vs applied tariff rates for a trade event.\n\nThe gap between these rates IS the quantified TACO measure.\nWhen Trump announces 145% but only 10% is applied, the gap is 135pp.\n\nMethodology: Cavallo, Llamas & Vazquez (2026) §2.3\nData: USITC HTS + Census Bureau import statistics","operationId":"get_tariff_rate_history_api_v1_events__event_id__tariff_rates_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TariffRateSnapshot"},"title":"Response Get Tariff Rate History Api V1 Events  Event Id  Tariff Rates Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/events/{event_id}/price-impact":{"get":{"tags":["economic-impact"],"summary":"Get Price Impact","description":"Daily price impact time series for a trade event.\n\nUses the four-group methodology (Cavallo et al. §3):\n- Imported Affected (directly tariffed)\n- Imported Unaffected (exempt, control group)\n- Domestic Affected (competing with tariffed imports)\n- Domestic Unaffected (control)\n\nReturns price indices and deviations from pre-tariff trends.","operationId":"get_price_impact_api_v1_events__event_id__price_impact_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PriceImpactTimeSeries"},"title":"Response Get Price Impact Api V1 Events  Event Id  Price Impact Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/events/{event_id}/economic-impact":{"get":{"tags":["economic-impact"],"summary":"Get Economic Impact","description":"Full economic impact assessment for a TACO event.\n\nCombines tariff gap analysis, price impact measurement,\npass-through estimation, CPI contribution, incidence analysis,\nand distributional impact.","operationId":"get_economic_impact_api_v1_events__event_id__economic_impact_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EconomicImpactSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/events/{event_id}/market-impact":{"get":{"tags":["economic-impact"],"summary":"Get Market Impact","description":"Market data time series around the threat and outcome dates.\n\nProvides S&P 500, VIX, and sector ETF (XLP, XLI, XLY, EEM) data for a window\naround key event dates. Used for TACO trade analysis and §6.2–§6.5 market proxies.","operationId":"get_market_impact_api_v1_events__event_id__market_impact_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":30,"title":"Window Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MarketImpactTimeSeries"},"title":"Response Get Market Impact Api V1 Events  Event Id  Market Impact Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/events/{event_id}/taco-trade":{"get":{"tags":["economic-impact"],"summary":"Get Taco Trade","description":"TACO trade return analysis for an event.\n\nA \"TACO trade\" is: buy stocks cheaply after a tariff announcement\npushes prices lower, then sell at a profit after tariffs are\ndelayed/reduced and the market rebounds.","operationId":"get_taco_trade_api_v1_events__event_id__taco_trade_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TacoTradeAnalysis"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/economic-stats":{"get":{"tags":["economic-impact"],"summary":"Get Aggregate Economic Stats","description":"Aggregate economic impact statistics across all trade events.\n\nIncludes average tariff gaps, CPI contributions, and benchmark\ncomparisons to Cavallo et al. findings.","operationId":"get_aggregate_economic_stats_api_v1_economic_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AggregateEconomicStats"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/research-sources":{"get":{"tags":["economic-impact"],"summary":"Get Research Sources","description":"Academic sources and methodologies used in the TACO Index.\n\nTransparency about methodology builds credibility with\ntraders, journalists, and researchers.","operationId":"get_research_sources_api_v1_research_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ResearchSource"},"type":"array","title":"Response Get Research Sources Api V1 Research Sources Get"}}}}},"security":[{"APIKeyHeader":[]}]}},"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/index":{"get":{"summary":"Get Current Index","description":"Get the current composite TACO Index value with trend data.","operationId":"get_current_index_api_v1_index_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexResponse"}}}}}}},"/api/v1/index/history":{"get":{"summary":"Get Index History","description":"Get daily TACO Index values for charting.","operationId":"get_index_history_api_v1_index_history_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"start","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Start date","default":"2025-01-20","title":"Start"},"description":"Start date"},{"name":"end","in":"query","required":false,"schema":{"type":"string","format":"date","description":"End date (default: today)","title":"End"},"description":"End date (default: today)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IndexHistoryPoint"},"title":"Response Get Index History Api V1 Index History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/index/domain/{domain}":{"get":{"summary":"Get Domain Index","description":"Get sub-index for a specific domain.","operationId":"get_domain_index_api_v1_index_domain__domain__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"domain","in":"path","required":true,"schema":{"$ref":"#/components/schemas/DomainEnum"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/events":{"get":{"summary":"List Events","description":"Paginated list of TACO events with filters.","operationId":"list_events_api_v1_events_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/DomainEnum"},{"type":"null"}],"title":"Domain"}},{"name":"status","in":"query","required":false,"schema":{"$ref":"#/components/schemas/StatusEnum","default":"all"}},{"name":"min_score","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":0,"default":0,"title":"Min Score"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","pattern":"^(date|score)$","default":"date","title":"Sort"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"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":{"type":"array","items":{"$ref":"#/components/schemas/EventSummary"},"title":"Response List Events Api V1 Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/events/{event_id}":{"get":{"summary":"Get Event","description":"Full detail for a single TACO event.","operationId":"get_event_api_v1_events__event_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/events/{event_id}/federal-register":{"get":{"summary":"Get Event Federal Register","description":"Federal Register documents linked to a TACO event (EOs, proclamations, rules).","operationId":"get_event_federal_register_api_v1_events__event_id__federal_register_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FRDocumentSummary"},"title":"Response Get Event Federal Register Api V1 Events  Event Id  Federal Register Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tariff-rates":{"get":{"summary":"Get Tariff Rates","description":"Latest applied tariff rates from USITC DataWeb, averaged across HS-2 chapters.\nReturns one row per country (or filtered to a single country).","operationId":"get_tariff_rates_api_v1_tariff_rates_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO-2 country code (e.g. CN, MX)","title":"Country"},"description":"ISO-2 country code (e.g. CN, MX)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TariffRateSummary"},"title":"Response Get Tariff Rates Api V1 Tariff Rates Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tariff-rates/detail":{"get":{"summary":"Get Tariff Rates Detail","description":"Per-HS-chapter applied rates for a single country at the latest available date.","operationId":"get_tariff_rates_detail_api_v1_tariff_rates_detail_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"country","in":"query","required":true,"schema":{"type":"string","description":"ISO-2 country code (e.g. CN, MX)","title":"Country"},"description":"ISO-2 country code (e.g. CN, MX)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TariffRateRow"},"title":"Response Get Tariff Rates Detail Api V1 Tariff Rates Detail Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/economic-indicators":{"get":{"summary":"Get Economic Indicators","description":"Historical economic indicator time series (BLS + FRED).\nUseful for correlating tariff events with import prices, PPI, and employment trends.","operationId":"get_economic_indicators_api_v1_economic_indicators_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"series_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to a specific series ID","title":"Series Id"},"description":"Filter to a specific series ID"},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"'bls' or 'fred'","title":"Source"},"description":"'bls' or 'fred'"},{"name":"start","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Start date","default":"2025-01-01","title":"Start"},"description":"Start date"},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"End date (default: today)","title":"End"},"description":"End date (default: today)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EconomicIndicatorPoint"},"title":"Response Get Economic Indicators Api V1 Economic Indicators Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/events/{event_id}/timeline":{"get":{"summary":"Get Event Timeline","description":"Chronological lifecycle entries for an event.","operationId":"get_event_timeline_api_v1_events__event_id__timeline_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TimelineEntry"},"title":"Response Get Event Timeline Api V1 Events  Event Id  Timeline Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/stats":{"get":{"summary":"Get Stats","description":"Aggregate statistics across all TACO events.","operationId":"get_stats_api_v1_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsResponse"}}}}}}},"/api/v1/sources/status":{"get":{"summary":"Get Sources Status","description":"Live source freshness — last ingested date per data source. No API key required.","operationId":"get_sources_status_api_v1_sources_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/metrics":{"get":{"tags":["admin"],"summary":"Admin Metrics","description":"Lightweight counts to monitor backfill progress. Requires `X-API-Key: <ADMIN_API_KEY>`.","operationId":"admin_metrics_api_v1_admin_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/courts":{"get":{"summary":"Get Courts","description":"Courts tracked by CourtListener that have opinion scrapers — useful for filtering decisions.","operationId":"get_courts_api_v1_courts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/snapshot":{"get":{"summary":"Get Snapshot","description":"Free/public **teaser** snapshot — headline index, stats, live pressure, and\nevent SUMMARIES (same structure/keys as `dashboard/public/data.json`). Paid\nper-event detail (full threat text, market reaction, price/sector impacts,\ntariff rates, economic indicators) is served by the tier-gated endpoints or,\nin one call, by `GET /api/v1/snapshot/full` (Standard+).","operationId":"get_snapshot_api_v1_snapshot_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/snapshot/full":{"get":{"tags":["data"],"summary":"Get Snapshot Full","description":"**Full** data snapshot in one call (Standard+ key): all event detail plus\n`price_impact[]`, `sector_impacts[]`, `tariff_rates[]`, `economic_indicators[]`.\nThe free `/api/v1/snapshot` returns only the public teaser of this payload.","operationId":"get_snapshot_full_api_v1_snapshot_full_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/keys/request":{"post":{"tags":["keys"],"summary":"Request Api Key","description":"Submit a request for an API key. No authentication required. Admin reviews queue at /api/v1/admin/key-requests.","operationId":"request_api_key_api_v1_keys_request_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/key-requests":{"get":{"tags":["admin"],"summary":"List Key Requests","description":"List API key requests. Requires X-API-Key: <ADMIN_API_KEY>.","operationId":"list_key_requests_api_v1_admin_key_requests_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/stripe/webhook":{"post":{"tags":["payments"],"summary":"Stripe Webhook","description":"Stripe payment webhook. On `checkout.session.completed`, generates an API\nkey, stores it, and emails the raw key to the buyer.\n\nThe checkout session (created by the payment function) must include\n`tier`, `name` and `email` in its metadata. Idempotent across Stripe\nretries via the unique stripe_session_id on api_keys.","operationId":"stripe_webhook_api_v1_stripe_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/checkout":{"post":{"tags":["payments"],"summary":"Create Checkout","description":"Create a Stripe Checkout session for a paid tier and return its hosted URL.\n\nRuns in subscription mode — the paid tiers bill monthly ($49/$199), so the\nconfigured Prices are recurring. The dashboard redirects the browser to\n`checkout_url`; once paid, Stripe fires\n`/api/v1/stripe/webhook`, which issues + emails the API key. The session\nmetadata carries `tier`/`name`/`email`/`request_id` to match the webhook\ncontract above. Uses a direct form-encoded call to the Stripe API so no SDK\ndependency is introduced (the webhook already verifies signatures by hand).","operationId":"create_checkout_api_v1_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/events/{event_id}/sector-impact":{"get":{"tags":["events"],"summary":"Event Sector Impact","description":"Per-COICOP-3 sector price impact for a trade-domain event, computed from live USITC applied rates via hs10_coicop_map crosswalk.","operationId":"event_sector_impact_api_v1_events__event_id__sector_impact_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AggregateEconomicStats":{"properties":{"total_trade_events":{"type":"integer","title":"Total Trade Events"},"avg_statutory_rate":{"type":"number","title":"Avg Statutory Rate"},"avg_applied_rate":{"type":"number","title":"Avg Applied Rate"},"avg_statutory_applied_gap":{"type":"number","title":"Avg Statutory Applied Gap"},"avg_gap_pct":{"type":"number","title":"Avg Gap Pct"},"total_cpi_contribution_pp":{"type":"number","title":"Total Cpi Contribution Pp"},"avg_consumer_burden_pct":{"type":"number","title":"Avg Consumer Burden Pct"},"avg_taco_trade_return":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Taco Trade Return"},"benchmark_passthrough_pct":{"type":"number","title":"Benchmark Passthrough Pct","description":"Cavallo et al. (2026) 7-month benchmark","default":24.0}},"type":"object","required":["total_trade_events","avg_statutory_rate","avg_applied_rate","avg_statutory_applied_gap","avg_gap_pct","total_cpi_contribution_pp","avg_consumer_burden_pct","avg_taco_trade_return"],"title":"AggregateEconomicStats","description":"Aggregate economic impact across all trade events."},"CheckoutRequest":{"properties":{"tier":{"type":"string","title":"Tier","description":"standard | premium"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"use_case":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Use Case"}},"type":"object","required":["tier"],"title":"CheckoutRequest"},"DomainEnum":{"type":"string","enum":["trade","foreign_policy","domestic","rhetorical"],"title":"DomainEnum"},"DomainStats":{"properties":{"domain":{"type":"string","title":"Domain"},"total_events":{"type":"integer","title":"Total Events"},"resolved":{"type":"integer","title":"Resolved"},"avg_score":{"type":"number","title":"Avg Score"},"avg_slippage_days":{"type":"number","title":"Avg Slippage Days"},"full_chickens":{"type":"integer","title":"Full Chickens"},"chicken_out_rate_pct":{"type":"number","title":"Chicken Out Rate Pct"}},"type":"object","required":["domain","total_events","resolved","avg_score","avg_slippage_days","full_chickens","chicken_out_rate_pct"],"title":"DomainStats"},"EconomicImpactSummary":{"properties":{"event_id":{"type":"string","title":"Event Id"},"statutory_rate_announced":{"type":"number","title":"Statutory Rate Announced"},"applied_rate_final":{"type":"number","title":"Applied Rate Final"},"statutory_applied_gap":{"type":"number","title":"Statutory Applied Gap"},"gap_as_pct_of_announced":{"type":"number","title":"Gap As Pct Of Announced"},"price_impact_imported_pp":{"type":"number","title":"Price Impact Imported Pp","description":"Imported goods price deviation from trend (pp)"},"price_impact_domestic_pp":{"type":"number","title":"Price Impact Domestic Pp","description":"Domestic spillover deviation from trend (pp)"},"retail_passthrough_pct":{"type":"number","title":"Retail Passthrough Pct","description":"Cumulative retail pass-through (%)"},"cpi_contribution_pp":{"type":"number","title":"Cpi Contribution Pp","description":"Estimated impact on all-items CPI (pp)"},"consumer_burden_pct":{"type":"number","title":"Consumer Burden Pct"},"firm_burden_pct":{"type":"number","title":"Firm Burden Pct"},"low_price_quartile_impact":{"type":"number","title":"Low Price Quartile Impact"},"high_price_quartile_impact":{"type":"number","title":"High Price Quartile Impact"},"distributional_gap_pp":{"type":"number","title":"Distributional Gap Pp"},"is_regressive":{"type":"boolean","title":"Is Regressive"},"affected_product_count":{"type":"integer","title":"Affected Product Count"},"top_affected_sectors":{"items":{"type":"string"},"type":"array","title":"Top Affected Sectors"},"methodology":{"type":"string","title":"Methodology","default":"Cavallo, Llamas & Vazquez (2026)"}},"type":"object","required":["event_id","statutory_rate_announced","applied_rate_final","statutory_applied_gap","gap_as_pct_of_announced","price_impact_imported_pp","price_impact_domestic_pp","retail_passthrough_pct","cpi_contribution_pp","consumer_burden_pct","firm_burden_pct","low_price_quartile_impact","high_price_quartile_impact","distributional_gap_pp","is_regressive","affected_product_count","top_affected_sectors"],"title":"EconomicImpactSummary","description":"Full economic impact assessment for a TACO event."},"EconomicIndicatorPoint":{"properties":{"series_id":{"type":"string","title":"Series Id"},"source":{"type":"string","title":"Source"},"series_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Series Name"},"observation_date":{"type":"string","format":"date","title":"Observation Date"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"}},"type":"object","required":["series_id","source","series_name","observation_date","value","unit"],"title":"EconomicIndicatorPoint"},"EventDetail":{"properties":{"event_id":{"type":"string","title":"Event Id"},"domain":{"type":"string","title":"Domain"},"sub_type":{"type":"string","title":"Sub Type"},"status":{"type":"string","title":"Status"},"threat_date":{"type":"string","format":"date-time","title":"Threat Date"},"threat_summary":{"type":"string","title":"Threat Summary"},"target_entities":{"items":{"type":"string"},"type":"array","title":"Target Entities"},"severity_score":{"type":"integer","title":"Severity Score"},"stated_deadline":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Stated Deadline"},"outcome_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome Type"},"composite_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Composite Score"},"days_past_deadline":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Days Past Deadline"},"threat_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Threat Source"},"statutory_authority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Statutory Authority"},"threat_text":{"type":"string","title":"Threat Text"},"stated_consequence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stated Consequence"},"outcome_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Outcome Date"},"outcome_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome Description"},"actual_consequence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actual Consequence"},"reversal_magnitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reversal Magnitude"},"timeline_slippage_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Timeline Slippage Days"},"rhetorical_dilution":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rhetorical Dilution"},"scope_reduction_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Scope Reduction Pct"},"framing_shift":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Framing Shift"},"repetition_count":{"type":"integer","title":"Repetition Count"},"market_threat_delta":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Market Threat Delta"},"market_outcome_delta":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Market Outcome Delta"},"taco_trade_return":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Taco Trade Return"},"analyst_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Analyst Notes"},"confidence":{"type":"number","title":"Confidence"}},"type":"object","required":["event_id","domain","sub_type","status","threat_date","threat_summary","target_entities","severity_score","stated_deadline","outcome_type","composite_score","days_past_deadline","threat_text","stated_consequence","outcome_date","outcome_description","actual_consequence","reversal_magnitude","timeline_slippage_days","rhetorical_dilution","scope_reduction_pct","framing_shift","repetition_count","market_threat_delta","market_outcome_delta","taco_trade_return","analyst_notes","confidence"],"title":"EventDetail"},"EventSummary":{"properties":{"event_id":{"type":"string","title":"Event Id"},"domain":{"type":"string","title":"Domain"},"sub_type":{"type":"string","title":"Sub Type"},"status":{"type":"string","title":"Status"},"threat_date":{"type":"string","format":"date-time","title":"Threat Date"},"threat_summary":{"type":"string","title":"Threat Summary"},"target_entities":{"items":{"type":"string"},"type":"array","title":"Target Entities"},"severity_score":{"type":"integer","title":"Severity Score"},"stated_deadline":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Stated Deadline"},"outcome_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome Type"},"composite_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Composite Score"},"days_past_deadline":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Days Past Deadline"},"threat_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Threat Source"},"statutory_authority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Statutory Authority"}},"type":"object","required":["event_id","domain","sub_type","status","threat_date","threat_summary","target_entities","severity_score","stated_deadline","outcome_type","composite_score","days_past_deadline"],"title":"EventSummary"},"FRDocumentSummary":{"properties":{"document_number":{"type":"string","title":"Document Number"},"title":{"type":"string","title":"Title"},"type":{"type":"string","title":"Type"},"subtype":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subtype"},"publication_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Publication Date"},"effective_on":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Effective On"},"abstract":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abstract"},"html_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Html Url"},"executive_order_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Executive Order Number"},"proclamation_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proclamation Number"},"match_role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Match Role"},"match_confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Match Confidence"}},"type":"object","required":["document_number","title","type","subtype","publication_date","effective_on","abstract","html_url","executive_order_number","proclamation_number","match_role","match_confidence"],"title":"FRDocumentSummary"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IndexHistoryPoint":{"properties":{"date":{"type":"string","format":"date","title":"Date"},"composite_index":{"type":"number","title":"Composite Index"},"trade_index":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Trade Index"},"foreign_policy_index":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Foreign Policy Index"},"domestic_index":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Domestic Index"},"rhetorical_index":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rhetorical Index"}},"type":"object","required":["date","composite_index","trade_index","foreign_policy_index","domestic_index","rhetorical_index"],"title":"IndexHistoryPoint"},"IndexResponse":{"properties":{"value":{"type":"number","title":"Value","description":"Current composite TACO Index (0-100)"},"trend_30d":{"type":"number","title":"Trend 30D","description":"30-day change in index value"},"trend_90d":{"type":"number","title":"Trend 90D","description":"90-day change in index value"},"active_events":{"type":"integer","title":"Active Events"},"resolved_30d":{"type":"integer","title":"Resolved 30D"},"as_of":{"type":"string","format":"date","title":"As Of"}},"type":"object","required":["value","trend_30d","trend_90d","active_events","resolved_30d","as_of"],"title":"IndexResponse"},"KeyRequest":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"use_case":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Use Case"},"tier_requested":{"type":"string","title":"Tier Requested","default":"standard"}},"type":"object","required":["name","email"],"title":"KeyRequest"},"MarketImpactTimeSeries":{"properties":{"date":{"type":"string","format":"date","title":"Date"},"days_from_threat":{"type":"integer","title":"Days From Threat"},"sp500_close":{"type":"number","title":"Sp500 Close"},"sp500_pct_change":{"type":"number","title":"Sp500 Pct Change"},"vix_close":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Vix Close"},"xlp_close":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Xlp Close","description":"Consumer Staples ETF — domestic affected proxy (§6.2)"},"xli_close":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Xli Close","description":"Industrials ETF — firm margin compression (§6.5)"},"xly_close":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Xly Close","description":"Consumer Discretionary ETF — import pass-through (§6.3)"},"eem_close":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Eem Close","description":"Emerging Markets ETF — origin-country incidence (§6.5)"},"cumulative_return_pct":{"type":"number","title":"Cumulative Return Pct"}},"type":"object","required":["date","days_from_threat","sp500_close","sp500_pct_change","vix_close","cumulative_return_pct"],"title":"MarketImpactTimeSeries","description":"Market data around threat/outcome dates."},"PriceImpactTimeSeries":{"properties":{"date":{"type":"string","format":"date","title":"Date"},"imported_affected_index":{"type":"number","title":"Imported Affected Index"},"domestic_affected_index":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Domestic Affected Index"},"imported_trend_deviation_pp":{"type":"number","title":"Imported Trend Deviation Pp"},"domestic_trend_deviation_pp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Domestic Trend Deviation Pp"},"retail_passthrough_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Retail Passthrough Pct"}},"type":"object","required":["date","imported_affected_index","domestic_affected_index","imported_trend_deviation_pp","domestic_trend_deviation_pp","retail_passthrough_pct"],"title":"PriceImpactTimeSeries","description":"Daily price impact observation per Cavallo et al. methodology."},"ResearchSource":{"properties":{"citation_key":{"type":"string","title":"Citation Key"},"title":{"type":"string","title":"Title"},"authors":{"items":{"type":"string"},"type":"array","title":"Authors"},"year":{"type":"integer","title":"Year"},"methodology_used":{"type":"string","title":"Methodology Used"},"data_endpoints":{"items":{"type":"string"},"type":"array","title":"Data Endpoints"}},"type":"object","required":["citation_key","title","authors","year","methodology_used","data_endpoints"],"title":"ResearchSource","description":"Academic source used in methodology."},"StatsResponse":{"properties":{"total_events":{"type":"integer","title":"Total Events"},"overall_avg_score":{"type":"number","title":"Overall Avg Score"},"overall_chicken_rate_pct":{"type":"number","title":"Overall Chicken Rate Pct"},"avg_days_to_reversal":{"type":"number","title":"Avg Days To Reversal"},"most_targeted_entities":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Most Targeted Entities"},"domains":{"items":{"$ref":"#/components/schemas/DomainStats"},"type":"array","title":"Domains"}},"type":"object","required":["total_events","overall_avg_score","overall_chicken_rate_pct","avg_days_to_reversal","most_targeted_entities","domains"],"title":"StatsResponse"},"StatusEnum":{"type":"string","enum":["active","resolved","all"],"title":"StatusEnum"},"TacoTradeAnalysis":{"properties":{"event_id":{"type":"string","title":"Event Id"},"threat_date":{"type":"string","format":"date","title":"Threat Date"},"outcome_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Outcome Date"},"sp500_at_threat":{"type":"number","title":"Sp500 At Threat"},"sp500_at_low":{"type":"number","title":"Sp500 At Low"},"sp500_at_outcome":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sp500 At Outcome"},"low_date":{"type":"string","format":"date","title":"Low Date"},"taco_trade_entry_price":{"type":"number","title":"Taco Trade Entry Price"},"taco_trade_exit_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Taco Trade Exit Price"},"taco_trade_return_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Taco Trade Return Pct"},"hold_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hold Days"},"annualized_return_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Annualized Return Pct"}},"type":"object","required":["event_id","threat_date","outcome_date","sp500_at_threat","sp500_at_low","sp500_at_outcome","low_date","taco_trade_entry_price","taco_trade_exit_price","taco_trade_return_pct","hold_days","annualized_return_pct"],"title":"TacoTradeAnalysis","description":"TACO trade return analysis for an event."},"TariffRateRow":{"properties":{"country_code":{"type":"string","title":"Country Code"},"hs_code":{"type":"string","title":"Hs Code"},"applied_rate_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Applied Rate Pct"},"snapshot_date":{"type":"string","format":"date","title":"Snapshot Date"}},"type":"object","required":["country_code","hs_code","applied_rate_pct","snapshot_date"],"title":"TariffRateRow"},"TariffRateSnapshot":{"properties":{"snapshot_date":{"type":"string","format":"date","title":"Snapshot Date"},"statutory_rate_pct":{"type":"number","title":"Statutory Rate Pct","description":"Announced/headline tariff rate"},"applied_rate_pct":{"type":"number","title":"Applied Rate Pct","description":"Actually collected (duties/value)"},"statutory_applied_gap":{"type":"number","title":"Statutory Applied Gap","description":"The TACO gap in pp"},"gap_as_pct_of_announced":{"type":"number","title":"Gap As Pct Of Announced","description":"What % of the threat was abandoned"},"hs10_codes":{"items":{"type":"string"},"type":"array","title":"Hs10 Codes"},"country_codes":{"items":{"type":"string"},"type":"array","title":"Country Codes"}},"type":"object","required":["snapshot_date","statutory_rate_pct","applied_rate_pct","statutory_applied_gap","gap_as_pct_of_announced","hs10_codes","country_codes"],"title":"TariffRateSnapshot","description":"Statutory vs Applied rate at a point in time."},"TariffRateSummary":{"properties":{"country_code":{"type":"string","title":"Country Code"},"avg_applied_pct":{"type":"number","title":"Avg Applied Pct"},"hs_chapter_count":{"type":"integer","title":"Hs Chapter Count"},"data_as_of":{"type":"string","format":"date","title":"Data As Of"}},"type":"object","required":["country_code","avg_applied_pct","hs_chapter_count","data_as_of"],"title":"TariffRateSummary"},"TimelineEntry":{"properties":{"entry_date":{"type":"string","format":"date-time","title":"Entry Date"},"entry_type":{"type":"string","title":"Entry Type"},"description":{"type":"string","title":"Description"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"severity_delta":{"type":"integer","title":"Severity Delta"}},"type":"object","required":["entry_date","entry_type","description","source_url","severity_delta"],"title":"TimelineEntry"},"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"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"}}}}