{"openapi":"3.1.0","info":{"title":"TV & FM Insights","version":"0.1.0"},"paths":{"/api/countries":{"get":{"tags":["channels"],"summary":"List Countries","operationId":"list_countries_api_countries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/channels/resolve":{"get":{"tags":["channels"],"summary":"Resolve Channel Name","description":"Resolve a channel name to a canonical channel with confidence, or abstain.\n\nNever invents a channel: returns a confident MATCH or an ABSTAIN with the\nreason, so callers attribute only when we're sure (R2 reworked resolver).","operationId":"resolve_channel_name_api_channels_resolve_get","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string","description":"Channel name/mention to resolve","title":"Name"},"description":"Channel name/mention to resolve"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO country code for context, e.g. NG","title":"Country"},"description":"ISO country code for context, e.g. NG"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels":{"get":{"tags":["channels"],"summary":"List Channels","operationId":"list_channels_api_channels_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO code, e.g. NG","title":"Country"},"description":"ISO code, e.g. NG"},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ChannelType"},{"type":"null"}],"title":"Type"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search name","title":"Q"},"description":"Search name"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/{slug}":{"get":{"tags":["channels"],"summary":"Get Channel","operationId":"get_channel_api_channels__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"items","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Items"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/{slug}/attribution":{"get":{"tags":["channels"],"summary":"Get Channel Attribution","description":"Per-source attribution breakdown for the channel's score — which weighted\nsources drove its ranking over the window, sorted by contribution.","operationId":"get_channel_attribution_api_channels__slug__attribution_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Window Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platforms":{"get":{"tags":["platforms"],"summary":"List Platforms","description":"List broadcast and distribution platforms with carrier counts and technology segmentation.","operationId":"list_platforms_api_platforms_get","parameters":[{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ProviderType"},{"type":"null"}],"title":"Type"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"include_provisional","in":"query","required":false,"schema":{"type":"boolean","description":"Include unverified/provisional carriers","default":false,"title":"Include Provisional"},"description":"Include unverified/provisional carriers"},{"name":"include_defunct","in":"query","required":false,"schema":{"type":"boolean","description":"Include defunct/suspended carriers","default":false,"title":"Include Defunct"},"description":"Include defunct/suspended carriers"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platforms/drift":{"get":{"tags":["platforms"],"summary":"List Lineup Drift","description":"Global lineup drift event feed across all distribution platforms.\n\nFull records for operators and Pro/Enterprise keys; free callers get the\nteaser (``app.platforms.paid_access``).","operationId":"list_lineup_drift_api_platforms_drift_get","parameters":[{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/DriftEventType"},{"type":"null"}],"title":"Event Type"}},{"name":"platform","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by provider slug","title":"Platform"},"description":"Filter by provider slug"},{"name":"technology","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by access technology","title":"Technology"},"description":"Filter by access technology"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by region","title":"Region"},"description":"Filter by region"},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter events created at or after timestamp","title":"Since"},"description":"Filter events created at or after timestamp"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"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/platforms/{slug}":{"get":{"tags":["platforms"],"summary":"Get Platform","description":"Retrieve details for a single distribution platform and its carried channels.","operationId":"get_platform_api_platforms__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"technology","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter channels by access technology","title":"Technology"},"description":"Filter channels by access technology"},{"name":"package","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter channels by package bouquet","title":"Package"},"description":"Filter channels by package bouquet"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platforms/{slug}/lineup.csv":{"get":{"tags":["platforms"],"summary":"Export Platform Lineup Csv","description":"Export the platform's channel lineup in CSV format.","operationId":"export_platform_lineup_csv_api_platforms__slug__lineup_csv_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/platforms/{slug}/diagnostics":{"get":{"tags":["platforms"],"summary":"Get Platform Diagnostics","description":"Read-only descriptive diagnostics of observed channel carriage for a platform.","operationId":"get_platform_diagnostics_api_platforms__slug__diagnostics_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/platforms/discover":{"post":{"tags":["platforms"],"summary":"Trigger Provider Discovery","description":"Trigger deterministic online discovery of broadcast platform candidates.","operationId":"trigger_provider_discovery_api_platforms_discover_post","parameters":[{"name":"country_code","in":"query","required":false,"schema":{"type":"string","description":"Country code to discover platforms for","default":"NG","title":"Country Code"},"description":"Country code to discover platforms for"},{"name":"max_candidates","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"description":"Max candidate platforms to process","default":5,"title":"Max Candidates"},"description":"Max candidate platforms to process"},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platforms/{slug}/probe-domain":{"post":{"tags":["platforms"],"summary":"Trigger Platform Domain Probe","description":"Probe a platform's official domain for reachability without polluting observation lineage.","operationId":"trigger_platform_domain_probe_api_platforms__slug__probe_domain_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/platforms/{slug}/drift":{"get":{"tags":["platforms"],"summary":"Get Platform Drift","description":"Lineup drift history for a specific distribution platform (teaser for free callers).","operationId":"get_platform_drift_api_platforms__slug__drift_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"event_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/DriftEventType"},{"type":"null"}],"title":"Event Type"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by region","title":"Region"},"description":"Filter by region"},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter events created at or after timestamp","title":"Since"},"description":"Filter events created at or after timestamp"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"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/system/scraper/metrics":{"get":{"tags":["platforms"],"summary":"Get Scraper Metrics","description":"Recent crawl run telemetry and politeness metrics.","operationId":"get_scraper_metrics_api_system_scraper_metrics_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"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/rankings/profiles":{"get":{"tags":["rankings"],"summary":"Profiles","operationId":"profiles_api_rankings_profiles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/rankings":{"get":{"tags":["rankings"],"summary":"Rankings","operationId":"rankings_api_rankings_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ChannelType"},{"type":"null"}],"title":"Type"}},{"name":"profile","in":"query","required":false,"schema":{"type":"string","default":"overall","title":"Profile"}},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Window Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Limit"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"'score' or 'velocity'","default":"score","title":"Sort"},"description":"'score' or 'velocity'"},{"name":"velocity_window","in":"query","required":false,"schema":{"type":"number","description":"Velocity comparison window in hours","default":24.0,"title":"Velocity Window"},"description":"Velocity comparison window in hours"},{"name":"platform","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter channels carried on carrier platform","title":"Platform"},"description":"Filter channels carried on carrier platform"},{"name":"technology","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter channels by access technology","title":"Technology"},"description":"Filter channels by access technology"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rankings/export":{"get":{"tags":["rankings"],"summary":"Export Rankings","description":"Export historical rankings as CSV.","operationId":"export_rankings_api_rankings_export_get","parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","description":"'channel' or 'star'","default":"channel","title":"Type"},"description":"'channel' or 'star'"},{"name":"frequency","in":"query","required":false,"schema":{"type":"string","pattern":"^(daily|weekly|monthly)$","default":"daily","title":"Frequency"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"channel_type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ChannelType"},{"type":"null"}],"title":"Channel Type"}},{"name":"profile","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rankings/custom":{"post":{"tags":["rankings"],"summary":"Custom Rankings","description":"Rank using a caller-supplied weight blend across parameters.","operationId":"custom_rankings_api_rankings_custom_post","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ChannelType"},{"type":"null"}],"title":"Type"}},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Window Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Limit"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"number"},"description":"Per-parameter weights, e.g. {'buzz':0.6,'sentiment':0.4}","title":"Weights"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sources":{"get":{"tags":["rankings"],"summary":"List Sources","description":"Sources and their weights — the levers behind the rankings.","operationId":"list_sources_api_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/sources/{source_id}/weight":{"patch":{"tags":["rankings"],"summary":"Set Source Weight","description":"Adjust a source's weight — immediately reshapes every ranking.","operationId":"set_source_weight_api_sources__source_id__weight_patch","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"integer","title":"Source Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_set_source_weight_api_sources__source_id__weight_patch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/epg/now":{"get":{"tags":["epg"],"summary":"Now Showing","operationId":"now_showing_api_epg_now_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/ChannelType"},{"type":"null"}],"title":"Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/epg/{slug}/now-next":{"get":{"tags":["epg"],"summary":"Channel Now Next","operationId":"channel_now_next_api_epg__slug__now_next_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/epg/{slug}/schedule":{"get":{"tags":["epg"],"summary":"Schedule","operationId":"schedule_api_epg__slug__schedule_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"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/epg/search":{"get":{"tags":["epg"],"summary":"Search","operationId":"search_api_epg_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/providers":{"get":{"tags":["epg"],"summary":"List Providers","operationId":"list_providers_api_providers_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/where-to-watch":{"get":{"tags":["epg"],"summary":"Where To Watch","description":"Universal search: which channels match, on which providers, showing what.\n\nAnswers \"where can I watch X\" across linear providers (DStv/GOtv/StarTimes/\nFTA) and streaming, plus any upcoming programmes matching the query.","operationId":"where_to_watch_api_where_to_watch_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/epg/ingest-xmltv":{"post":{"tags":["epg"],"summary":"Ingest Xmltv Endpoint","description":"Ingest an XMLTV schedule export (industry-standard EPG format).","operationId":"ingest_xmltv_endpoint_api_epg_ingest_xmltv_post","parameters":[{"name":"source_slug","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Slug"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/xml":{"schema":{"type":"string","title":"Xml"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/curation/run":{"post":{"tags":["curation"],"summary":"Run Curation","description":"Kick off a full curation pass across all active sources (async).","operationId":"run_curation_api_curation_run_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/curation/recent":{"get":{"tags":["curation"],"summary":"Recent Items","operationId":"recent_items_api_curation_recent_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/alerts":{"post":{"tags":["alerts"],"summary":"Create Alert","operationId":"create_alert_api_alerts_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["alerts"],"summary":"List Alerts","operationId":"list_alerts_api_alerts_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/alerts/push-subscribe":{"post":{"tags":["alerts"],"summary":"Push Subscribe","operationId":"push_subscribe_api_alerts_push_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushSubscriptionIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/alerts/{sub_id}":{"delete":{"tags":["alerts"],"summary":"Cancel Alert","description":"Cancel a subscription. Requires the subscriber's ``email`` and only\nsucceeds if it matches the subscription's owner — so a subscription can't be\ncancelled by guessing its id.","operationId":"cancel_alert_api_alerts__sub_id__delete","parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"integer","title":"Sub Id"}},{"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/reports/subscribe":{"post":{"tags":["reports"],"summary":"Subscribe Report","description":"Advertisers/agencies subscribe to daily/weekly/monthly viewership digests.","operationId":"subscribe_report_api_reports_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/{sub_id}/preview":{"get":{"tags":["reports"],"summary":"Preview Report","description":"Preview the exact HTML digest that would be emailed.","operationId":"preview_report_api_reports__sub_id__preview_get","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/reports/{sub_id}/send-now":{"post":{"tags":["reports"],"summary":"Send Now","description":"Send a digest immediately. Requires the subscriber's ``email`` (ownership).","operationId":"send_now_api_reports__sub_id__send_now_post","parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"integer","title":"Sub Id"}},{"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/reports/{sub_id}":{"delete":{"tags":["reports"],"summary":"Cancel Report","description":"Cancel a report subscription. Requires the subscriber's ``email`` and\nonly succeeds if it matches the subscription's delivery email.","operationId":"cancel_report_api_reports__sub_id__delete","parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"integer","title":"Sub Id"}},{"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/competitions":{"get":{"tags":["events"],"summary":"Competitions","operationId":"competitions_api_competitions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/fixtures":{"get":{"tags":["events"],"summary":"Fixtures","operationId":"fixtures_api_fixtures_get","parameters":[{"name":"competition","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Competition"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","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/fixtures/{fixture_id}/reminder.ics":{"get":{"tags":["events"],"summary":"Fixture Reminder","description":"Download a calendar reminder (with a 15-min alarm) for a single match.","operationId":"fixture_reminder_api_fixtures__fixture_id__reminder_ics_get","parameters":[{"name":"fixture_id","in":"path","required":true,"schema":{"type":"integer","title":"Fixture Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/fixtures.ics":{"get":{"tags":["events"],"summary":"Fixtures Calendar","description":"A subscribable calendar of all upcoming fixtures in scope.","operationId":"fixtures_calendar_api_fixtures_ics_get","parameters":[{"name":"competition","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Competition"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":14,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/shows":{"get":{"tags":["events"],"summary":"Shows","operationId":"shows_api_shows_get","parameters":[{"name":"event","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","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/shows/{session_id}/reminder.ics":{"get":{"tags":["events"],"summary":"Show Reminder","operationId":"show_reminder_api_shows__session_id__reminder_ics_get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"integer","title":"Session Id"}},{"name":"star","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Star"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/sentiment/status":{"get":{"tags":["sentiment"],"summary":"Sentiment Status","description":"Queue health: how many items are pending / done / failed.","operationId":"sentiment_status_api_sentiment_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/sentiment/run":{"post":{"tags":["sentiment"],"summary":"Run Sentiment","description":"Trigger the async scorer inline (small deployments / testing).","operationId":"run_sentiment_api_sentiment_run_post","parameters":[{"name":"max_batches","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Max Batches"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/{slug}/sentiment":{"get":{"tags":["sentiment"],"summary":"Channel Sentiment View","description":"Confidence-gated sentiment distribution for a channel (advertiser view).","operationId":"channel_sentiment_view_api_channels__slug__sentiment_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/stars":{"get":{"tags":["stars"],"summary":"Stars","operationId":"stars_api_stars_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search name / stage name","title":"Q"},"description":"Search name / stage name"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stars/power-index":{"get":{"tags":["stars"],"summary":"Power Index","description":"Star Power Index: airtime + search demand + buzz + sentiment.","operationId":"power_index_api_stars_power_index_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Window Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","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/stars/trending":{"get":{"tags":["stars"],"summary":"Trending","description":"Trending stars. profile='rising_stars' ranks by follower growth + search demand.","operationId":"trending_api_stars_trending_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"role","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},{"name":"profile","in":"query","required":false,"schema":{"type":"string","default":"overall","title":"Profile"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","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/stars/coming-up":{"get":{"tags":["stars"],"summary":"Coming Up","description":"Time-ordered appearances; follow next_offset to retrieve every page.","operationId":"coming_up_api_stars_coming_up_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":3,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"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"}}}}}}},"/api/stars/{slug}":{"get":{"tags":["stars"],"summary":"Star Detail","operationId":"star_detail_api_stars__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/stars/{slug}/upcoming":{"get":{"tags":["stars"],"summary":"Star Up","operationId":"star_up_api_stars__slug__upcoming_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":14,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stars/{slug}/calendar.ics":{"get":{"tags":["stars"],"summary":"Star Calendar Ics","description":"Subscribable calendar of all upcoming TV and media appearances for a star.","operationId":"star_calendar_ics_api_stars__slug__calendar_ics_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":14,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stars/{slug}/reminder.ics":{"get":{"tags":["stars"],"summary":"Star Reminder Ics","description":"Download a calendar reminder for a specific upcoming appearance by a star.","operationId":"star_reminder_ics_api_stars__slug__reminder_ics_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"title","in":"query","required":false,"schema":{"type":"string","description":"Programme or show title","default":"Appearance","title":"Title"},"description":"Programme or show title"},{"name":"starts_at","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO timestamp of broadcast","title":"Starts At"},"description":"ISO timestamp of broadcast"},{"name":"channel","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Broadcasting channel","title":"Channel"},"description":"Broadcasting channel"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stars/{slug}/attribution":{"get":{"tags":["stars"],"summary":"Star Attr","description":"Per-source attribution breakdown for the star's coverage — which weighted\nsources drove buzz/sentiment over the window, sorted by contribution.","operationId":"star_attr_api_stars__slug__attribution_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Window Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/channels/{slug}/stars":{"get":{"tags":["stars"],"summary":"Channel Stars","operationId":"channel_stars_api_channels__slug__stars_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/shows/categories":{"get":{"tags":["shows"],"summary":"Categories","description":"Canonical categories the tracker ranks (slug + display label).","operationId":"categories_api_shows_categories_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/shows/trending":{"get":{"tags":["shows"],"summary":"Trending","operationId":"trending_api_shows_trending_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to one canonical category slug","title":"Category"},"description":"Filter to one canonical category slug"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Window Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","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/shows/in-the-news":{"get":{"tags":["shows"],"summary":"In The News","description":"Shows with news coverage but no evidenced airing from 7 days back to 7 days ahead. No broadcast claim.","operationId":"in_the_news_api_shows_in_the_news_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter to one canonical category slug","title":"Category"},"description":"Filter to one canonical category slug"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Window Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":8,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/shows/by-category":{"get":{"tags":["shows"],"summary":"By Category","description":"Top shows within each category — the category leaderboard view.","operationId":"by_category_api_shows_by_category_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Window Days"}},{"name":"per_category","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Per Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/shows/{slug}/attribution":{"get":{"tags":["shows"],"summary":"Show Attribution","description":"Per-source attribution breakdown for the show's coverage — parity with\n/channels/{slug}/attribution and /stars/{slug}/attribution.","operationId":"show_attribution_api_shows__slug__attribution_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Window Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/shows/{slug}":{"get":{"tags":["shows"],"summary":"Show Detail","operationId":"show_detail_api_shows__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/social/preview":{"get":{"tags":["social"],"summary":"Preview","description":"Compose the posts that would go out now, without publishing.","operationId":"preview_api_social_preview_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/post-now":{"post":{"tags":["social"],"summary":"Post Now","description":"Compose + publish (or dry-run log, per config) immediately.","operationId":"post_now_api_social_post_now_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/social/posts":{"get":{"tags":["social"],"summary":"History","description":"PUBLIC auto-post history (H3).\n\nOnly genuinely published posts are public, and only public-safe fields: no\ndrafts (dry_run/failed/skipped), no provider error strings. Editorial\ninternals live behind the authed endpoint below.","operationId":"history_api_social_posts_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/social/posts/editorial":{"get":{"tags":["social"],"summary":"Editorial History","description":"AUTHED editorial history (H3): full audit incl. drafts, statuses, and\nprovider errors. Gated so draft copy / provider errors never leak publicly.","operationId":"editorial_history_api_social_posts_editorial_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clips":{"get":{"tags":["media"],"summary":"List Clips","operationId":"list_clips_api_clips_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/MediaKind"},{"type":"null"}],"title":"Kind"}},{"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"}}}}}},"post":{"tags":["media"],"summary":"Create Clip","operationId":"create_clip_api_clips_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClipIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stars/{slug}/clips":{"get":{"tags":["media"],"summary":"Star Clips","operationId":"star_clips_api_stars__slug__clips_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/channels/{slug}/clips":{"get":{"tags":["media"],"summary":"Channel Clips","operationId":"channel_clips_api_channels__slug__clips_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/clips/{clip_id}/attributes":{"get":{"tags":["media"],"summary":"Get Clip Attributes","description":"Retrieve extracted computer-vision metadata attributes for a media clip.","operationId":"get_clip_attributes_api_clips__clip_id__attributes_get","parameters":[{"name":"clip_id","in":"path","required":true,"schema":{"type":"integer","title":"Clip Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/media/clips/{clip_id}/attributes":{"get":{"tags":["media"],"summary":"Get Clip Attributes","description":"Retrieve extracted computer-vision metadata attributes for a media clip.","operationId":"get_clip_attributes_api_media_clips__clip_id__attributes_get","parameters":[{"name":"clip_id","in":"path","required":true,"schema":{"type":"integer","title":"Clip Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/publishing/published":{"get":{"tags":["publishing"],"summary":"Published","description":"PUBLIC: only published revisions, only public-safe fields.","operationId":"published_api_publishing_published_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/publishing/editorial":{"get":{"tags":["publishing"],"summary":"Editorial","description":"AUTHED editorial: all revisions incl. drafts + statuses + approval history.","operationId":"editorial_api_publishing_editorial_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/trending":{"get":{"tags":["analytics"],"summary":"Trending","description":"Compact 'what's trending' board. Programmes come from the Show Tracker\n(`app.shows`) so this and /api/shows/trending share one ranking; channels and\nstars come from search-demand roll-ups, ranked by name only for free callers\n(search counts are an Agency/Pro dataset).","operationId":"trending_api_trending_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/analytics/demand":{"get":{"tags":["analytics"],"summary":"Demand","description":"Most-searched stars, channels and queries. Counts and typed queries for operators and\nPro/Enterprise keys; free callers get the rankings by name only.","operationId":"demand_api_analytics_demand_get","parameters":[{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Window Days"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"source","in":"query","required":false,"schema":{"type":"string","pattern":"^(raw|rollup)$","description":"raw telemetry or pre-aggregated roll-ups","default":"raw","title":"Source"},"description":"raw telemetry or pre-aggregated roll-ups"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/methodology":{"get":{"tags":["analytics"],"summary":"Methodology","description":"PUBLIC Methodology Centre (A3): every surfaced metric's definition,\nsources, coverage, limitations and version history, plus the research\ngrounding. Transparency is public by design.","operationId":"methodology_api_methodology_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/methodology/sources-and-methods":{"get":{"tags":["analytics"],"summary":"Methodology Sources And Methods","description":"Sources & Methods: access modes, politeness policies, and provenance categories.","operationId":"methodology_sources_and_methods_api_methodology_sources_and_methods_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/methodology/{key}":{"get":{"tags":["analytics"],"summary":"Methodology Detail","operationId":"methodology_detail_api_methodology__key__get","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/explorer/measure":{"get":{"tags":["analytics-explorer"],"summary":"Measure","operationId":"measure_api_analytics_explorer_measure_get","parameters":[{"name":"metric_key","in":"query","required":true,"schema":{"type":"string","title":"Metric Key"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"window_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Window Days"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/explorer/break-down":{"get":{"tags":["analytics-explorer"],"summary":"Break Down","operationId":"break_down_api_analytics_explorer_break_down_get","parameters":[{"name":"metric_key","in":"query","required":true,"schema":{"type":"string","title":"Metric Key"}},{"name":"by","in":"query","required":false,"schema":{"type":"string","default":"channel","title":"By"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"window_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Window Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Limit"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/explorer/compare":{"get":{"tags":["analytics-explorer"],"summary":"Compare","operationId":"compare_api_analytics_explorer_compare_get","parameters":[{"name":"metric_key","in":"query","required":true,"schema":{"type":"string","title":"Metric Key"}},{"name":"keys","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"default":[],"title":"Keys"}},{"name":"by","in":"query","required":false,"schema":{"type":"string","default":"channel","title":"By"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"window_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Window Days"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/explorer/analyse":{"get":{"tags":["analytics-explorer"],"summary":"Analyse","operationId":"analyse_api_analytics_explorer_analyse_get","parameters":[{"name":"metric_key","in":"query","required":true,"schema":{"type":"string","title":"Metric Key"}},{"name":"by","in":"query","required":false,"schema":{"type":"string","default":"channel","title":"By"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"window_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Window Days"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/analytics/divergence":{"get":{"tags":["analytics-explorer"],"summary":"Divergence","description":"Ratings ↔ independent-social correlation + divergence (owned engagement\nexcluded; the two axes are never summed).","operationId":"divergence_api_analytics_divergence_get","parameters":[{"name":"window_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Window Days"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/epg/feeds":{"get":{"tags":["feeds"],"summary":"List Feeds","operationId":"list_feeds_api_epg_feeds_get","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["feeds"],"summary":"Register Feed","operationId":"register_feed_api_epg_feeds_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/epg/feeds/run":{"post":{"tags":["feeds"],"summary":"Run Feeds","description":"Ingest all active feeds now (also runs on the scheduler).","operationId":"run_feeds_api_epg_feeds_run_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/ratings":{"post":{"tags":["ingest"],"summary":"Post Ratings","description":"Import a batch of attributed audience-rating figures (idempotent).","operationId":"post_ratings_api_ingest_ratings_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RatingsBatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Ratings Api Ingest Ratings Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/metrics":{"post":{"tags":["ingest"],"summary":"Post Metrics","description":"Import a batch of generic numeric signals (idempotent).\n\nKnown ranking keys ('reach', 'engagement') also feed the leaderboard.","operationId":"post_metrics_api_ingest_metrics_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricsBatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Post Metrics Api Ingest Metrics Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/upload/xmltv":{"post":{"tags":["ingest"],"summary":"Upload Xmltv","description":"Upload an XMLTV schedule file (plain or gzipped).","operationId":"upload_xmltv_api_ingest_upload_xmltv_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_xmltv_api_ingest_upload_xmltv_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Xmltv Api Ingest Upload Xmltv Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/upload/ratings":{"post":{"tags":["ingest"],"summary":"Upload Ratings","description":"Upload audience ratings as CSV/XLSX (columns: channel_slug, metric, value,\nunit, period_start, period_end, source_name, methodology, country_code).","operationId":"upload_ratings_api_ingest_upload_ratings_post","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_ratings_api_ingest_upload_ratings_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Ratings Api Ingest Upload Ratings Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/upload/metrics":{"post":{"tags":["ingest"],"summary":"Upload Metrics","description":"Upload generic metrics as CSV/XLSX (columns: channel_slug, metric_key,\nwindow, bucket_date, value, unit, source_name).","operationId":"upload_metrics_api_ingest_upload_metrics_post","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_metrics_api_ingest_upload_metrics_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Metrics Api Ingest Upload Metrics Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/upload/channels":{"post":{"tags":["ingest"],"summary":"Upload Channels","description":"Upsert channels from CSV/XLSX (columns: slug, name, type, country_code,\ncategory, description, website, logo_url, frequency, city).","operationId":"upload_channels_api_ingest_upload_channels_post","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_channels_api_ingest_upload_channels_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Channels Api Ingest Upload Channels Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ingest/upload/schedules":{"post":{"tags":["ingest"],"summary":"Upload Schedules","description":"Upload EPG rows as CSV/XLSX (columns: channel_slug, title, starts_at,\nends_at, category, description).","operationId":"upload_schedules_api_ingest_upload_schedules_post","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_schedules_api_ingest_upload_schedules_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Schedules Api Ingest Upload Schedules Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/insights/{candidate_id}":{"get":{"tags":["market-intelligence"],"summary":"Public Insight","operationId":"public_insight_api_insights__candidate_id__get","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"integer","title":"Candidate Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/intelligence/candidates":{"get":{"tags":["market-intelligence"],"summary":"Review Queue","operationId":"review_queue_api_intelligence_candidates_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/intelligence/candidates/{candidate_id}/draft":{"post":{"tags":["market-intelligence"],"summary":"Draft Candidate","operationId":"draft_candidate_api_intelligence_candidates__candidate_id__draft_post","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"integer","title":"Candidate Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/intelligence/candidates/{candidate_id}/ai-draft":{"post":{"tags":["market-intelligence"],"summary":"Ai Draft Candidate","description":"Ask the model for a draft explanation (validated; never published without approval).","operationId":"ai_draft_candidate_api_intelligence_candidates__candidate_id__ai_draft_post","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"integer","title":"Candidate Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/intelligence/candidates/{candidate_id}/use-ai-draft/{attempt_id}":{"post":{"tags":["market-intelligence"],"summary":"Use Ai Draft For Candidate","description":"Operator choice: use an AI draft as the text to approve. Approval is still a separate call.","operationId":"use_ai_draft_for_candidate_api_intelligence_candidates__candidate_id__use_ai_draft__attempt_id__post","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"integer","title":"Candidate Id"}},{"name":"attempt_id","in":"path","required":true,"schema":{"type":"integer","title":"Attempt Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/intelligence/candidates/{candidate_id}/approve":{"post":{"tags":["market-intelligence"],"summary":"Approve Candidate","operationId":"approve_candidate_api_intelligence_candidates__candidate_id__approve_post","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"integer","title":"Candidate Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/intelligence/candidates/{candidate_id}/reject":{"post":{"tags":["market-intelligence"],"summary":"Reject Candidate","operationId":"reject_candidate_api_intelligence_candidates__candidate_id__reject_post","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"integer","title":"Candidate Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/intelligence/candidates/{candidate_id}/retract":{"post":{"tags":["market-intelligence"],"summary":"Retract Candidate","operationId":"retract_candidate_api_intelligence_candidates__candidate_id__retract_post","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"integer","title":"Candidate Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/merge-candidates":{"get":{"tags":["admin"],"summary":"List Candidates","description":"Near-threshold entity matches flagged during ingestion, awaiting review.","operationId":"list_candidates_api_admin_merge_candidates_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/merge-candidates/{candidate_id}/resolve":{"post":{"tags":["admin"],"summary":"Resolve","description":"Merge the duplicate into the canonical entity, or reject the suggestion.","operationId":"resolve_api_admin_merge_candidates__candidate_id__resolve_post","parameters":[{"name":"candidate_id","in":"path","required":true,"schema":{"type":"integer","title":"Candidate Id"}},{"name":"action","in":"query","required":true,"schema":{"type":"string","pattern":"^(merge|reject)$","title":"Action"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscribers/{user_id}/key":{"post":{"tags":["subscribers"],"summary":"Mint Key","operationId":"mint_key_api_subscribers__user_id__key_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_mint_key_api_subscribers__user_id__key_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/subscribers/{user_id}/tier":{"post":{"tags":["subscribers"],"summary":"Set Subscriber Tier","operationId":"set_subscriber_tier_api_subscribers__user_id__tier_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_set_subscriber_tier_api_subscribers__user_id__tier_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/telemetry/events":{"post":{"tags":["telemetry"],"summary":"Post Event","description":"Ingest a first-party viewer micro-behavior event.","operationId":"post_event_api_telemetry_events_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelemetryEventPayload"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Event Api Telemetry Events Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/experiments":{"get":{"tags":["experiments"],"summary":"List Experiments","description":"List all configured experiments with their metadata and statuses.","operationId":"list_experiments_api_experiments_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Experiments Api Experiments Get"}}}}}}},"/api/experiments/{key}":{"get":{"tags":["experiments"],"summary":"Get Experiment","description":"Retrieve an experiment by key along with all configured variants.","operationId":"get_experiment_api_experiments__key__get","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Experiment Api Experiments  Key  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/experiments/{key}/assign":{"post":{"tags":["experiments"],"summary":"Assign Experiment Variant","description":"Deterministically assign a session to an experiment variant.","operationId":"assign_experiment_variant_api_experiments__key__assign_post","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Assign Experiment Variant Api Experiments  Key  Assign Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/experiments/{key}/settle":{"post":{"tags":["experiments"],"summary":"Trigger Settle Experiment","description":"Trigger settlement evaluation and promotion check for an experiment.","operationId":"trigger_settle_experiment_api_experiments__key__settle_post","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}},{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Trigger Settle Experiment Api Experiments  Key  Settle Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/engagement/streak":{"post":{"tags":["engagement"],"summary":"Post Streak","description":"Record daily activity for a session key and return current streak data.","operationId":"post_streak_api_engagement_streak_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreakRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Streak Api Engagement Streak Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/engagement/predictions":{"post":{"tags":["engagement"],"summary":"Post Prediction","description":"Submit a viewer prediction on a show event or fixture.","operationId":"post_prediction_api_engagement_predictions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PredictionRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Prediction Api Engagement Predictions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/engagement/campaigns/track":{"post":{"tags":["engagement"],"summary":"Post Campaign Track","description":"Track an incoming ad click for attribution.","operationId":"post_campaign_track_api_engagement_campaigns_track_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignTrackRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Campaign Track Api Engagement Campaigns Track Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/engagement/campaigns/{utm_campaign}/roi":{"get":{"tags":["engagement"],"summary":"Get Campaign Roi","description":"Get acquisition campaign performance and ROI metrics.","operationId":"get_campaign_roi_api_engagement_campaigns__utm_campaign__roi_get","parameters":[{"name":"utm_campaign","in":"path","required":true,"schema":{"type":"string","title":"Utm Campaign"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Campaign Roi Api Engagement Campaigns  Utm Campaign  Roi Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my":{"get":{"tags":["my"],"summary":"My Page","operationId":"my_page_my_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/my/sign-in":{"post":{"tags":["my"],"summary":"Sign In","operationId":"sign_in_my_sign_in_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_sign_in_my_sign_in_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my/verify":{"get":{"tags":["my"],"summary":"Verify Form","description":"Confirmation page only: never consumes the token or sets a cookie.","operationId":"verify_form_my_verify_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["my"],"summary":"Verify","operationId":"verify_my_verify_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_verify_my_verify_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my/sign-out":{"post":{"tags":["my"],"summary":"Sign Out","operationId":"sign_out_my_sign_out_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/my/sign-out-everywhere":{"post":{"tags":["my"],"summary":"Sign Out Everywhere","operationId":"sign_out_everywhere_my_sign_out_everywhere_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/my/watchlist":{"post":{"tags":["my"],"summary":"Watchlist Add","operationId":"watchlist_add_my_watchlist_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_watchlist_add_my_watchlist_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my/watchlist/remove":{"post":{"tags":["my"],"summary":"Watchlist Remove","operationId":"watchlist_remove_my_watchlist_remove_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_watchlist_remove_my_watchlist_remove_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my/delete-account":{"post":{"tags":["my"],"summary":"Delete Account","operationId":"delete_account_my_delete_account_post","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/my/api-keys":{"get":{"tags":["my"],"summary":"Api Keys Page","operationId":"api_keys_page_my_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"tags":["my"],"summary":"Api Key Create","description":"Mint a key and show its token once, in this 200 response only.","operationId":"api_key_create_my_api_keys_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_api_key_create_my_api_keys_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my/api-keys/plan":{"post":{"tags":["my"],"summary":"Api Plan Request","description":"Ask for a paid API plan at the price quoted now; an operator approves it once invoiced.","operationId":"api_plan_request_my_api_keys_plan_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_api_plan_request_my_api_keys_plan_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my/api-keys/plan/{request_id}/cancel":{"post":{"tags":["my"],"summary":"Api Plan Cancel","operationId":"api_plan_cancel_my_api_keys_plan__request_id__cancel_post","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"}}}}}}},"/my/api-keys/{key_id}/revoke":{"post":{"tags":["my"],"summary":"Api Key Revoke","operationId":"api_key_revoke_my_api_keys__key_id__revoke_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my/advertiser":{"get":{"tags":["my"],"summary":"Advertiser Portal","operationId":"advertiser_portal_my_advertiser_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/my/advertiser/reports":{"post":{"tags":["my"],"summary":"Advertiser Report Create","description":"Create a report for the viewer. Recipient, owner and plan come from the\nsession's user; any submitted ``delivery_email``, ``user_id`` or ``plan``\nis never read.","operationId":"advertiser_report_create_my_advertiser_reports_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_advertiser_report_create_my_advertiser_reports_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my/advertiser/reports/{report_id}/cancel":{"post":{"tags":["my"],"summary":"Advertiser Report Cancel","operationId":"advertiser_report_cancel_my_advertiser_reports__report_id__cancel_post","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my/advertiser/campaigns":{"post":{"tags":["my"],"summary":"Advertiser Campaign Create","description":"Create a campaign owned by the viewer, with a generated tracking code\n(a submitted ``utm_campaign`` is never read).","operationId":"advertiser_campaign_create_my_advertiser_campaigns_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_advertiser_campaign_create_my_advertiser_campaigns_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my/messaging":{"get":{"tags":["my"],"summary":"Messaging Page","operationId":"messaging_page_my_messaging_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/my/messaging/telegram":{"post":{"tags":["my"],"summary":"Messaging Telegram Opt In","description":"Show a one-time deep link that binds the viewer's Telegram chat.","operationId":"messaging_telegram_opt_in_my_messaging_telegram_post","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/my/messaging/whatsapp":{"post":{"tags":["my"],"summary":"Messaging Whatsapp Opt In","description":"Record consent and send a verification code to the viewer's phone.","operationId":"messaging_whatsapp_opt_in_my_messaging_whatsapp_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_messaging_whatsapp_opt_in_my_messaging_whatsapp_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my/messaging/whatsapp/verify":{"post":{"tags":["my"],"summary":"Messaging Whatsapp Verify","operationId":"messaging_whatsapp_verify_my_messaging_whatsapp_verify_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_messaging_whatsapp_verify_my_messaging_whatsapp_verify_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/syndication/rankings.rss":{"get":{"tags":["syndication"],"summary":"Rankings Rss","operationId":"rankings_rss_syndication_rankings_rss_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/syndication/rankings.json":{"get":{"tags":["syndication"],"summary":"Rankings Json","operationId":"rankings_json_syndication_rankings_json_get","parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/embed/rankings":{"get":{"tags":["syndication"],"summary":"Embed Rankings","description":"The frameable widget. Reads no cookie and sets none.","operationId":"embed_rankings_embed_rankings_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/embed":{"get":{"tags":["syndication"],"summary":"Embed Snippet","operationId":"embed_snippet_embed_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/hooks/telegram":{"post":{"tags":["hooks"],"summary":"Telegram Webhook","operationId":"telegram_webhook_hooks_telegram_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/hooks/whatsapp":{"get":{"tags":["hooks"],"summary":"Whatsapp Handshake","operationId":"whatsapp_handshake_hooks_whatsapp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["hooks"],"summary":"Whatsapp Webhook","operationId":"whatsapp_webhook_hooks_whatsapp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/people":{"get":{"tags":["people"],"summary":"People Directory","operationId":"people_directory_people_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"function","in":"query","required":false,"schema":{"type":"string","default":"","title":"Function"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"","title":"Kind"}},{"name":"page","in":"query","required":false,"schema":{"type":"string","default":"1","title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/people/moves":{"get":{"tags":["people"],"summary":"People Moves","operationId":"people_moves_people_moves_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/people/moves.rss":{"get":{"tags":["people"],"summary":"People Moves Rss","operationId":"people_moves_rss_people_moves_rss_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/people/{slug}":{"get":{"tags":["people"],"summary":"Person Page","operationId":"person_page_people__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"sent","in":"query","required":false,"schema":{"type":"string","default":"","title":"Sent"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/people/{slug}/correction":{"post":{"tags":["people"],"summary":"Person Correction","operationId":"person_correction_people__slug__correction_post","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_person_correction_people__slug__correction_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/organisations/{slug}":{"get":{"tags":["people"],"summary":"Organisation Page","operationId":"organisation_page_organisations__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sponsorship":{"get":{"tags":["sponsorship"],"summary":"Sponsorship Policy","operationId":"sponsorship_policy_sponsorship_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/sponsored/{sponsorship_id}/go":{"get":{"tags":["sponsorship"],"summary":"Sponsored Click","description":"Count a click and redirect to the link stored on the sponsorship.\n\nThe destination is never taken from the request, so this cannot be used as\nan open redirect. A sponsorship that is not live sends the visitor to the\npolicy page instead.","operationId":"sponsored_click_sponsored__sponsorship_id__go_get","parameters":[{"name":"sponsorship_id","in":"path","required":true,"schema":{"type":"integer","title":"Sponsorship Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/signals":{"get":{"tags":["signals"],"summary":"Signals Page","operationId":"signals_page_signals_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Category"}},{"name":"market","in":"query","required":false,"schema":{"type":"string","default":"","title":"Market"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/signals.rss":{"get":{"tags":["signals"],"summary":"Signals Rss","operationId":"signals_rss_signals_rss_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/signals":{"get":{"tags":["signals"],"summary":"Signals Api","description":"Published Signals as JSON (part of the licensed API catalogue).","operationId":"signals_api_api_signals_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"type":"string","default":"","title":"Category"}},{"name":"market","in":"query","required":false,"schema":{"type":"string","default":"","title":"Market"}},{"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"}}}}}}},"/signals/{signal_id}":{"get":{"tags":["signals"],"summary":"Signal Page","operationId":"signal_page_signals__signal_id__get","parameters":[{"name":"signal_id","in":"path","required":true,"schema":{"type":"integer","title":"Signal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my/advertiser/intel":{"post":{"tags":["my"],"summary":"Intel Request","description":"Order a report for the signed-in viewer; the price is the one quoted now.","operationId":"intel_request_my_advertiser_intel_post","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/my/advertiser/intel/{report_id}/cancel":{"post":{"tags":["my"],"summary":"Intel Cancel","operationId":"intel_cancel_my_advertiser_intel__report_id__cancel_post","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my/advertiser/intel/{report_id}":{"get":{"tags":["my"],"summary":"Intel View","description":"The buyer's released report. Anyone else (or a report not yet released) gets a 404.","operationId":"intel_view_my_advertiser_intel__report_id__get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"integer","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/leads":{"get":{"tags":["leads"],"summary":"Leads Page","operationId":"leads_page_leads_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/my/leads":{"get":{"tags":["leads"],"summary":"My Leads","operationId":"my_leads_my_leads_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"post":{"tags":["leads"],"summary":"My Leads Submit","description":"Post a requirement. The contact email is the signed-in address; any submitted email is never read.","operationId":"my_leads_submit_my_leads_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_my_leads_submit_my_leads_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/my/leads/{lead_id}/withdraw":{"post":{"tags":["leads"],"summary":"My Leads Withdraw","operationId":"my_leads_withdraw_my_leads__lead_id__withdraw_post","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"}}}}}}},"/cdn/image":{"get":{"tags":["media-cdn"],"summary":"Get Cached Image","description":"Serve contained static assets or cached, validated public raster images.","operationId":"get_cached_image_cdn_image_get","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/vault/documents/{doc_id}":{"get":{"tags":["vault"],"summary":"Get Vault Document","description":"Retrieve an evidence document safely with nosniff and immutable cache headers.","operationId":"get_vault_document_vault_documents__doc_id__get","parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"integer","title":"Doc Id"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/vault/media/{asset_id}":{"get":{"tags":["vault"],"summary":"Get Vault Media","description":"Retrieve a media asset safely with nosniff and caching.","operationId":"get_vault_media_vault_media__asset_id__get","parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"integer","title":"Asset Id"}}],"responses":{"200":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"tags":["meta"],"summary":"Health","description":"Liveness: the process answers.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ready":{"get":{"tags":["meta"],"summary":"Ready","description":"Readiness: the database answers and its schema is the one this code expects. 503 otherwise.","operationId":"ready_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AlertIn":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"type":{"$ref":"#/components/schemas/AlertType","default":"now_showing"},"channel_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel Slug"},"star_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Star Slug"},"keyword":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Keyword"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"signal_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Category"},"delivery":{"$ref":"#/components/schemas/DeliveryChannel","default":"email"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url"}},"type":"object","required":["email"],"title":"AlertIn"},"AlertType":{"type":"string","enum":["now_showing","program_keyword","ranking_change","new_curated","star_appearance","people_move","signal"],"title":"AlertType"},"AssignRequest":{"properties":{"session_key":{"type":"string","minLength":1,"title":"Session Key","description":"Unique viewer/client session identifier"}},"type":"object","required":["session_key"],"title":"AssignRequest"},"Body_advertiser_campaign_create_my_advertiser_campaigns_post":{"properties":{"name":{"type":"string","title":"Name","default":""}},"type":"object","title":"Body_advertiser_campaign_create_my_advertiser_campaigns_post"},"Body_advertiser_report_create_my_advertiser_reports_post":{"properties":{"cadence":{"type":"string","title":"Cadence","default":""},"kind":{"type":"string","title":"Kind","default":""},"country_code":{"type":"string","title":"Country Code","default":""},"channel_type":{"type":"string","title":"Channel Type","default":""},"profile":{"type":"string","title":"Profile","default":""}},"type":"object","title":"Body_advertiser_report_create_my_advertiser_reports_post"},"Body_api_key_create_my_api_keys_post":{"properties":{"label":{"type":"string","title":"Label","default":""}},"type":"object","title":"Body_api_key_create_my_api_keys_post"},"Body_api_plan_request_my_api_keys_plan_post":{"properties":{"tier":{"type":"string","title":"Tier","default":""},"months":{"type":"string","title":"Months","default":""}},"type":"object","title":"Body_api_plan_request_my_api_keys_plan_post"},"Body_messaging_whatsapp_opt_in_my_messaging_whatsapp_post":{"properties":{"phone":{"type":"string","title":"Phone","default":""},"consent":{"type":"string","title":"Consent","default":""}},"type":"object","title":"Body_messaging_whatsapp_opt_in_my_messaging_whatsapp_post"},"Body_messaging_whatsapp_verify_my_messaging_whatsapp_verify_post":{"properties":{"code":{"type":"string","title":"Code","default":""}},"type":"object","title":"Body_messaging_whatsapp_verify_my_messaging_whatsapp_verify_post"},"Body_mint_key_api_subscribers__user_id__key_post":{"properties":{"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","title":"Body_mint_key_api_subscribers__user_id__key_post"},"Body_my_leads_submit_my_leads_post":{"properties":{"category":{"type":"string","title":"Category","default":""},"country_code":{"type":"string","title":"Country Code","default":""},"title":{"type":"string","title":"Title","default":""},"description":{"type":"string","title":"Description","default":""},"budget_band":{"type":"string","title":"Budget Band","default":"undisclosed"},"timeline":{"type":"string","title":"Timeline","default":"unspecified"},"organisation":{"type":"string","title":"Organisation","default":""},"contact_name":{"type":"string","title":"Contact Name","default":""},"contact_phone":{"type":"string","title":"Contact Phone","default":""},"consent":{"type":"string","title":"Consent","default":""}},"type":"object","title":"Body_my_leads_submit_my_leads_post"},"Body_person_correction_people__slug__correction_post":{"properties":{"message":{"type":"string","title":"Message","default":""},"contact_email":{"type":"string","title":"Contact Email","default":""}},"type":"object","title":"Body_person_correction_people__slug__correction_post"},"Body_set_source_weight_api_sources__source_id__weight_patch":{"properties":{"weight":{"type":"number","title":"Weight"}},"type":"object","required":["weight"],"title":"Body_set_source_weight_api_sources__source_id__weight_patch"},"Body_set_subscriber_tier_api_subscribers__user_id__tier_post":{"properties":{"tier":{"type":"string","title":"Tier"}},"type":"object","required":["tier"],"title":"Body_set_subscriber_tier_api_subscribers__user_id__tier_post"},"Body_sign_in_my_sign_in_post":{"properties":{"email":{"type":"string","title":"Email","default":""}},"type":"object","title":"Body_sign_in_my_sign_in_post"},"Body_upload_channels_api_ingest_upload_channels_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_channels_api_ingest_upload_channels_post"},"Body_upload_metrics_api_ingest_upload_metrics_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_metrics_api_ingest_upload_metrics_post"},"Body_upload_ratings_api_ingest_upload_ratings_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_ratings_api_ingest_upload_ratings_post"},"Body_upload_schedules_api_ingest_upload_schedules_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_schedules_api_ingest_upload_schedules_post"},"Body_upload_xmltv_api_ingest_upload_xmltv_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_xmltv_api_ingest_upload_xmltv_post"},"Body_verify_my_verify_post":{"properties":{"token":{"type":"string","title":"Token","default":""}},"type":"object","title":"Body_verify_my_verify_post"},"Body_watchlist_add_my_watchlist_post":{"properties":{"kind":{"type":"string","title":"Kind","default":""},"slug":{"type":"string","title":"Slug","default":""}},"type":"object","title":"Body_watchlist_add_my_watchlist_post"},"Body_watchlist_remove_my_watchlist_remove_post":{"properties":{"kind":{"type":"string","title":"Kind","default":""},"slug":{"type":"string","title":"Slug","default":""}},"type":"object","title":"Body_watchlist_remove_my_watchlist_remove_post"},"CampaignTrackRequest":{"properties":{"utm_campaign":{"type":"string","minLength":1,"title":"Utm Campaign"},"session_key":{"type":"string","minLength":1,"title":"Session Key"}},"type":"object","required":["utm_campaign","session_key"],"title":"CampaignTrackRequest"},"ChannelType":{"type":"string","enum":["TV","FM"],"title":"ChannelType"},"ClipIn":{"properties":{"title":{"type":"string","title":"Title"},"url":{"type":"string","title":"Url"},"kind":{"$ref":"#/components/schemas/MediaKind","default":"trailer"},"channel_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel Slug"},"star_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Star Slug"},"program_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Program Id"}},"type":"object","required":["title","url"],"title":"ClipIn"},"DeliveryChannel":{"type":"string","enum":["email","webhook","log","push","telegram","whatsapp"],"title":"DeliveryChannel"},"DriftEventType":{"type":"string","enum":["new_carriage","carriage_terminated","carriage_restored","lcn_relocated","package_changed","quality_changed"],"title":"DriftEventType"},"FeedIn":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"feed_type":{"$ref":"#/components/schemas/FeedType","default":"xmltv"},"url":{"type":"string","title":"Url"},"scraper":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scraper"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"active":{"type":"boolean","title":"Active","default":true}},"type":"object","required":["slug","name","url"],"title":"FeedIn"},"FeedType":{"type":"string","enum":["xmltv","jsonld","scrape"],"title":"FeedType","description":"How a broadcaster's schedule is published."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"MediaKind":{"type":"string","enum":["trailer","clip","highlight","promo","interview"],"title":"MediaKind"},"MetricRow":{"properties":{"channel_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel Slug"},"channel_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Channel Id"},"star_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Star Id"},"metric_key":{"type":"string","minLength":1,"title":"Metric Key"},"window":{"type":"string","title":"Window","default":"1d"},"bucket_date":{"type":"string","format":"date","title":"Bucket Date"},"value":{"type":"number","title":"Value"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"source_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Name"}},"type":"object","required":["metric_key","bucket_date","value"],"title":"MetricRow"},"MetricsBatch":{"properties":{"rows":{"items":{"$ref":"#/components/schemas/MetricRow"},"type":"array","minItems":1,"title":"Rows"}},"type":"object","required":["rows"],"title":"MetricsBatch"},"PlanTier":{"type":"string","enum":["free","pro","enterprise"],"title":"PlanTier","description":"Billing-ready tiers. Everything is free today; charging can be switched\non later without a data migration."},"PredictionRequest":{"properties":{"session_key":{"type":"string","minLength":1,"title":"Session Key"},"prediction_choice":{"type":"string","minLength":1,"title":"Prediction Choice"},"event_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Event Id"},"fixture_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fixture Id"}},"type":"object","required":["session_key","prediction_choice"],"title":"PredictionRequest"},"ProviderType":{"type":"string","enum":["pay_tv","fta","streaming","radio"],"title":"ProviderType"},"PushSubscriptionIn":{"properties":{"email":{"type":"string","title":"Email"},"subscription":{"additionalProperties":true,"type":"object","title":"Subscription"}},"type":"object","required":["email","subscription"],"title":"PushSubscriptionIn"},"RatingMetric":{"type":"string","enum":["reach","viewership","share","rating","tam"],"title":"RatingMetric","description":"A reported audience-measurement metric (e.g. from a ratings agency)."},"RatingRow":{"properties":{"channel_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Channel Slug"},"channel_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Channel Id"},"metric":{"$ref":"#/components/schemas/RatingMetric"},"value":{"type":"number","minimum":0.0,"title":"Value"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"period_start":{"type":"string","format":"date","title":"Period Start"},"period_end":{"type":"string","format":"date","title":"Period End"},"source_name":{"type":"string","minLength":1,"title":"Source Name"},"methodology":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Methodology"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},"type":"object","required":["metric","value","period_start","period_end","source_name"],"title":"RatingRow"},"RatingsBatch":{"properties":{"rows":{"items":{"$ref":"#/components/schemas/RatingRow"},"type":"array","minItems":1,"title":"Rows"}},"type":"object","required":["rows"],"title":"RatingsBatch"},"ReportCadence":{"type":"string","enum":["daily","weekly","monthly"],"title":"ReportCadence"},"ReportIn":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"organisation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organisation"},"subscriber_type":{"$ref":"#/components/schemas/SubscriberType","default":"advertiser"},"cadence":{"$ref":"#/components/schemas/ReportCadence","default":"weekly"},"kind":{"$ref":"#/components/schemas/ReportKind","default":"channels"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"channel_type":{"anyOf":[{"$ref":"#/components/schemas/ChannelType"},{"type":"null"}]},"profile":{"type":"string","title":"Profile","default":"overall"},"plan":{"$ref":"#/components/schemas/PlanTier","default":"free"}},"type":"object","required":["email"],"title":"ReportIn"},"ReportKind":{"type":"string","enum":["channels","star_power"],"title":"ReportKind","description":"What a digest reports on."},"StreakRequest":{"properties":{"session_key":{"type":"string","minLength":1,"title":"Session Key"}},"type":"object","required":["session_key"],"title":"StreakRequest"},"SubscriberType":{"type":"string","enum":["viewer","advertiser","agency"],"title":"SubscriberType"},"TelemetryEventPayload":{"properties":{"event_type":{"$ref":"#/components/schemas/ViewerEventType"},"channel_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Channel Id"},"star_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Star Id"},"program_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Program Id"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"duration_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Duration Seconds"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"string"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["event_type"],"title":"TelemetryEventPayload"},"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"},"ViewerEventType":{"type":"string","enum":["tune_in","reminder_click","watchlist_add","clip_view","epg_open","dwell","search"],"title":"ViewerEventType"}}}}