{"openapi":"3.1.0","info":{"title":"Tech Twitter Public Evidence API","version":"1.0.0","description":"Read-only, citation-ready evidence from curated tech discourse, including tweets, topics, articles, historical days, agent context bundles, and Trending Now story snapshots.","contact":{"name":"Tech Twitter","url":"https://www.techtwitter.com/contact","email":"daniel@indiethinkers.com"},"license":{"name":"MIT","identifier":"MIT"}},"servers":[{"url":"https://www.techtwitter.com","description":"Public production API"}],"externalDocs":{"description":"Evidence for Agents","url":"https://www.techtwitter.com/agents"},"tags":[{"name":"Agent evidence","description":"Purpose-built context for AI agents."},{"name":"Public sources","description":"Underlying read-only evidence collections."},{"name":"Trends","description":"Tracked-graph and official-X trend explorer APIs."},{"name":"Stories","description":"Compiled story board and briefs."}],"security":[],"paths":{"/api/agent/context":{"get":{"operationId":"getAgentContext","summary":"Build an agent evidence bundle","description":"Returns ranked source evidence and citation URLs for one supported Tech Twitter research question.","tags":["Agent evidence"],"parameters":[{"name":"kind","in":"query","required":false,"description":"Evidence recipe to run.","schema":{"type":"string","enum":["auto","what-changed","launches","arguments","read-list","narrative-alert"],"default":"auto"}},{"name":"question","in":"query","required":false,"description":"Natural-language question, up to 500 characters.","schema":{"type":"string","maxLength":500}},{"name":"q","in":"query","required":false,"description":"Optional search phrase, up to 200 characters.","schema":{"type":"string","maxLength":200}},{"name":"topic","in":"query","required":false,"description":"Optional topic name or slug, up to 120 characters.","schema":{"type":"string","maxLength":120}},{"name":"window","in":"query","required":false,"description":"Evidence lookback window.","schema":{"type":"string","enum":["24h","48h","7d"],"default":"24h"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of evidence rows.","schema":{"type":"integer","default":8,"minimum":1,"maximum":20}}],"responses":{"200":{"description":"A citation-ready agent evidence bundle.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentContext"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"429":{"description":"The public rate limit has been exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"The evidence service is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/a2a":{"post":{"operationId":"sendAgentMessage","summary":"Send a stateless A2A message","description":"Runs the same evidence builder through the stateless JSON-RPC SendMessage method for A2A clients. A non-empty taskId returns Task not found (-32001). SendStreamingMessage, SubscribeToTask, and GetExtendedAgentCard return Unsupported operation (-32004); push-notification configuration methods return Push notification not supported (-32003). Truly unknown methods return Method not found (-32601).","tags":["Agent evidence"],"parameters":[{"name":"A2A-Version","in":"header","required":true,"description":"A2A protocol version. Send 1.0 as a header; the same value is also accepted as an A2A-Version query parameter.","schema":{"type":"string","const":"1.0"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2ARequest"},"examples":{"launches":{"summary":"Request recent product-launch evidence","value":{"jsonrpc":"2.0","id":"ctx-1","method":"SendMessage","params":{"message":{"messageId":"msg-client-1","role":"ROLE_USER","parts":[{"text":"What launched in developer tools this week?"}],"metadata":{"kind":"launches","window":"7d","limit":8}}}}}}}}},"responses":{"200":{"description":"A JSON-RPC result or protocol error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AResponse"}}}},"204":{"description":"No response body is returned for a JSON-RPC notification."},"400":{"description":"A JSON-RPC parse or request error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AResponse"}}}},"405":{"description":"The HTTP method is not supported by the A2A endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AResponse"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"413":{"description":"The JSON-RPC body exceeded 32 KiB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AResponse"}}}},"429":{"description":"The public rate limit has been exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AResponse"}}}},"503":{"description":"The evidence service is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/A2AResponse"}}}}}}},"/api/command/tweets-by-date":{"get":{"operationId":"listTweetsByDate","summary":"List ranked tweets for a day","description":"Returns the ranked command-center tweet stream for the latest window or a calendar day.","tags":["Public sources"],"parameters":[{"name":"date","in":"query","required":false,"description":"latest, today, yesterday, or an ISO calendar date.","schema":{"type":"string","oneOf":[{"type":"string","enum":["latest","today","yesterday"]},{"type":"string","format":"date"}],"default":"today"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of tweets.","schema":{"type":"integer","default":10,"minimum":1,"maximum":50}},{"name":"topic","in":"query","required":false,"description":"Optional topic filter.","schema":{"type":"string","maxLength":120,"pattern":"^[a-zA-Z0-9+#._ /-]{1,120}$"}},{"name":"tz","in":"query","required":false,"description":"IANA timezone used to interpret calendar dates.","schema":{"type":"string","default":"UTC","maxLength":64,"examples":["UTC","America/Los_Angeles"]}}],"responses":{"200":{"description":"A ranked collection of published tweets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestTweetCollection"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/command/heatmap":{"get":{"operationId":"listTopicHeatmap","summary":"List active topics","description":"Returns topic frequency and engagement totals over a bounded recent window.","tags":["Public sources"],"parameters":[{"name":"days","in":"query","required":false,"description":"Number of recent days to inspect.","schema":{"type":"integer","default":3,"minimum":1,"maximum":30}}],"responses":{"200":{"description":"Topic activity rows.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeatmapCollection"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/command/streams":{"get":{"operationId":"listCategoryStream","summary":"List a category stream","description":"Returns recent ranked tweets matching one command-center category and optional topic.","tags":["Public sources"],"parameters":[{"name":"category","in":"query","required":false,"description":"Command-center category.","schema":{"type":"string","enum":["ai-ml","startups","coding","product","platform"],"default":"ai-ml"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of tweets.","schema":{"type":"integer","default":10,"minimum":1,"maximum":50}},{"name":"topic","in":"query","required":false,"description":"Optional topic filter.","schema":{"type":"string","maxLength":120}}],"responses":{"200":{"description":"A ranked collection of published tweets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountedTweetCollection"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/command/hot-takes":{"get":{"operationId":"listHotDiscussions","summary":"List reply-heavy discussions","description":"Returns recent, high-visibility tweets ranked by discussion activity.","tags":["Public sources"],"responses":{"200":{"description":"Reply-heavy published tweets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HotTakeCollection"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/command/narratives":{"get":{"operationId":"listNarratives","summary":"List emerging narratives","description":"Returns emerging keywords, momentum, connected terms, and hot topics from 72 hours.","tags":["Public sources"],"responses":{"200":{"description":"Narrative momentum collections.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NarrativeCollection"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/tweets/trending":{"get":{"operationId":"listTrendingTweets","summary":"List trending tweets","description":"Returns quality-ranked published tweets with bounded shallow pagination.","tags":["Public sources"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Maximum number of tweets.","schema":{"type":"integer","default":20,"minimum":1,"maximum":50}},{"name":"offset","in":"query","required":false,"description":"Shallow result offset.","schema":{"type":"integer","default":0,"minimum":0,"maximum":100}}],"responses":{"200":{"description":"Trending published tweets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendingTweetCollection"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/tweets/search":{"get":{"operationId":"searchTweets","summary":"Search published tweets","description":"Searches published tweets by author, meaning, or keyword and returns the strategy used. Rate limited per client IP; back off on 429 rather than retrying.","tags":["Public sources"],"parameters":[{"name":"q","in":"query","required":true,"description":"Search query. Must contain at least two searchable letters or numbers.","schema":{"type":"string","minLength":2,"maxLength":200}},{"name":"limit","in":"query","required":false,"description":"Maximum number of tweets.","schema":{"type":"integer","default":20,"minimum":1,"maximum":50}},{"name":"offset","in":"query","required":false,"description":"Shallow result offset.","schema":{"type":"integer","default":0,"minimum":0,"maximum":100}}],"responses":{"200":{"description":"Matching published tweets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TweetSearchCollection"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"429":{"description":"The public rate limit has been exceeded.","headers":{"Retry-After":{"description":"Seconds until the client may retry.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Search is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/topics":{"get":{"operationId":"listTopics","summary":"List topic metadata","description":"Returns the public topic taxonomy, optionally filtered to recent or enriched topics.","tags":["Public sources"],"parameters":[{"name":"category","in":"query","required":false,"description":"Optional exact topic category.","schema":{"type":"string"}},{"name":"trending","in":"query","required":false,"description":"Only include topics active in the last seven days.","schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","required":false,"description":"Maximum number of topics.","schema":{"type":"integer","default":20,"minimum":1,"maximum":50}},{"name":"with_metadata","in":"query","required":false,"description":"Only include topics with complete metadata.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Public topic metadata.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTopicCollection"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/articles":{"get":{"operationId":"listArticles","summary":"List long-form articles","description":"Returns published long-form article rows using a bounded keyset cursor.","tags":["Public sources"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Maximum number of articles.","schema":{"type":"integer","default":20,"minimum":1,"maximum":50}},{"name":"cursor","in":"query","required":false,"description":"Opaque cursor from the previous page.","schema":{"type":"string","maxLength":1024,"pattern":"^[A-Za-z0-9_-]+$"}}],"responses":{"200":{"description":"Published long-form articles.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleCollection"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/trends/availability":{"get":{"operationId":"getTrendAvailability","summary":"Get trend explorer availability","description":"Returns reliable start, watermark, allowed windows, resolutions, stored filters, and official-X capability flags. Works when the tracked graph is empty and hides unavailable X controls.","tags":["Trends"],"parameters":[{"name":"source","in":"query","required":false,"description":"Optional source to inspect.","schema":{"type":"string","enum":["tracked_graph","x_counts","x_native_trends"]}}],"responses":{"200":{"description":"Availability, allowlists, and provider capabilities.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendAvailability"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"429":{"description":"The public rate limit has been exceeded.","headers":{"Retry-After":{"description":"Seconds until the client may retry.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Trend metadata is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/trends/entities":{"get":{"operationId":"searchTrendEntities","summary":"Search tracked trend entities","description":"Returns autocomplete matches for stable tracked-graph entity IDs used by trend series.","tags":["Trends"],"parameters":[{"name":"q","in":"query","required":true,"description":"Entity name or alias, 2 to 80 characters. Required.","schema":{"type":"string","minLength":2,"maxLength":80}},{"name":"limit","in":"query","required":false,"description":"Maximum number of entities.","schema":{"type":"integer","default":10,"minimum":1,"maximum":20}}],"responses":{"200":{"description":"Matching tracked-graph entities.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendEntityCollection"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"429":{"description":"The public rate limit has been exceeded.","headers":{"Retry-After":{"description":"Seconds until the client may retry.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Trend metadata is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/trends/series":{"get":{"operationId":"getTrendSeries","summary":"Get comparable trend series","description":"Returns mention and post-volume buckets for up to five tracked entities, or up to five independently compiled official X post-count terms. Each X term is one provider query and one compared series; terms are never AND-combined. ids is required when source=tracked_graph. terms is required when source=x_counts. These two parameters are mutually exclusive by source. Official X counts keep each raw post count independent; corpusTotal and sharePer10k stay 0 when no shared corpus exists. Tracked-graph mention buckets may be lifted with official GET /2/tweets/counts/recent during process-trends persist for published named entities. Tracked-graph series stay source=tracked_graph. There is no public source=x_search. Never label post counts as search volume. Never label official post counts as a separate Explore source.","tags":["Trends"],"parameters":[{"name":"source","in":"query","required":false,"description":"Series source.","schema":{"type":"string","enum":["tracked_graph","x_counts"],"default":"tracked_graph"}},{"name":"ids","in":"query","required":false,"description":"Required when source=tracked_graph. Comma-separated tracked-graph entity UUIDs, max 5. Mutually exclusive with terms.","schema":{"type":"string"}},{"name":"terms","in":"query","required":false,"description":"Required when source=x_counts. 1-5 comma-separated kind:value terms. Each term is compiled and fetched independently as its own compared series. Mutually exclusive with ids.","schema":{"type":"string"}},{"name":"window","in":"query","required":false,"description":"Named or custom lookback window.","schema":{"type":"string","enum":["1h","4h","24h","48h","7d","30d","90d","12m","custom"],"default":"24h"}},{"name":"start","in":"query","required":false,"description":"Inclusive UTC start for window=custom.","schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"}},{"name":"end","in":"query","required":false,"description":"Exclusive UTC end for window=custom.","schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"}},{"name":"metric","in":"query","required":false,"description":"Primary series display metric.","schema":{"type":"string","enum":["volume","relative"],"default":"volume"}},{"name":"category","in":"query","required":false,"description":"Stored category key or all.","schema":{"type":"string","default":"all"}},{"name":"postType","in":"query","required":false,"description":"Stored post-type contract value.","schema":{"type":"string","enum":["all","original","reply","quote","repost"],"default":"all"}},{"name":"language","in":"query","required":false,"description":"Stored language code or all.","schema":{"type":"string","default":"all"}}],"responses":{"200":{"description":"Comparable mention and post-volume series.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendSeries"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"429":{"description":"The public rate limit has been exceeded.","headers":{"Retry-After":{"description":"Seconds until the client may retry.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Trend aggregates are temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/trends/related":{"get":{"operationId":"getRelatedTrendEntities","summary":"Get related Top and Rising entities","description":"Returns tracked-graph neighbors with support, lift, and growth for one stable entity ID. Growth is null when coverage is suppressed.","tags":["Trends"],"parameters":[{"name":"id","in":"query","required":true,"description":"Stable tracked-graph entity UUID.","schema":{"type":"string","format":"uuid"}},{"name":"source","in":"query","required":false,"description":"Must be tracked_graph.","schema":{"type":"string","enum":["tracked_graph"],"default":"tracked_graph"}},{"name":"window","in":"query","required":false,"description":"Named or custom lookback window.","schema":{"type":"string","enum":["1h","4h","24h","48h","7d","30d","90d","12m","custom"],"default":"24h"}},{"name":"start","in":"query","required":false,"description":"Inclusive UTC start for window=custom.","schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"}},{"name":"end","in":"query","required":false,"description":"Exclusive UTC end for window=custom.","schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"}},{"name":"category","in":"query","required":false,"description":"Stored category key or all.","schema":{"type":"string","default":"all"}},{"name":"postType","in":"query","required":false,"description":"Stored post-type contract value.","schema":{"type":"string","enum":["all","original","reply","quote","repost"],"default":"all"}},{"name":"language","in":"query","required":false,"description":"Stored language code or all.","schema":{"type":"string","default":"all"}},{"name":"limit","in":"query","required":false,"description":"Maximum Top and Rising rows.","schema":{"type":"integer","default":10,"minimum":1,"maximum":10}}],"responses":{"200":{"description":"Top and Rising related entities.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendRelated"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The entity was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"429":{"description":"The public rate limit has been exceeded.","headers":{"Retry-After":{"description":"Seconds until the client may retry.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Trend aggregates are temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/trends/evidence":{"get":{"operationId":"getTrendEvidence","summary":"Get observed-post trend evidence","description":"Returns observed posts assigned to one tracked entity inside the requested window, newest first. Each row includes citation fields only; raw provider payloads are never returned.","tags":["Trends"],"parameters":[{"name":"id","in":"query","required":true,"description":"Stable tracked-graph entity UUID.","schema":{"type":"string","format":"uuid"}},{"name":"source","in":"query","required":false,"description":"Must be tracked_graph.","schema":{"type":"string","enum":["tracked_graph"],"default":"tracked_graph"}},{"name":"window","in":"query","required":false,"description":"Named or custom lookback window.","schema":{"type":"string","enum":["1h","4h","24h","48h","7d","30d","90d","12m","custom"],"default":"24h"}},{"name":"start","in":"query","required":false,"description":"Inclusive UTC start for window=custom.","schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"}},{"name":"end","in":"query","required":false,"description":"Exclusive UTC end for window=custom.","schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"}},{"name":"category","in":"query","required":false,"description":"Stored category key or all.","schema":{"type":"string","default":"all"}},{"name":"postType","in":"query","required":false,"description":"Stored post-type contract value.","schema":{"type":"string","enum":["all","original","reply","quote","repost"],"default":"all"}},{"name":"language","in":"query","required":false,"description":"Stored language code or all.","schema":{"type":"string","default":"all"}},{"name":"limit","in":"query","required":false,"description":"Maximum observed-post receipts.","schema":{"type":"integer","default":20,"minimum":1,"maximum":50}}],"responses":{"200":{"description":"Observed-post evidence receipts in newest-first order.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendEvidence"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The entity was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"429":{"description":"The public rate limit has been exceeded.","headers":{"Retry-After":{"description":"Seconds until the client may retry.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Trend evidence is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/trends/now":{"get":{"operationId":"listTrendingNow","summary":"List current trend table rows","description":"Returns tracked-graph named-entity rows or official native-X rows with volume, authorCount, the newest observed-post receipt in the snapshot window (latest, including postText), status, sparkline points for the public table, and a keyset cursor. Growth and detectedAt remain on the payload for compatibility but are not the public table story. Tracked-graph rows exclude taxonomy topics and X context categories. Eligible windows are 4h, 24h, 48h, and 7d; call /api/trends/availability and use nowWindows to discover which have passed automatic publication readiness. Requests for an eligible but unpublished window return trend_snapshot_window_unavailable; retry later or use /api/trends/series for the same range. Optional q searches entity name and key before keyset pagination.","tags":["Trends"],"parameters":[{"name":"source","in":"query","required":false,"description":"Now-table source.","schema":{"type":"string","enum":["tracked_graph","x_native_trends"],"default":"tracked_graph"}},{"name":"window","in":"query","required":false,"description":"Snapshot window; published options are returned by availability.nowWindows.","schema":{"type":"string","enum":["4h","24h","48h","7d"],"default":"4h"}},{"name":"category","in":"query","required":false,"description":"Stored category key or all.","schema":{"type":"string","default":"all"}},{"name":"postType","in":"query","required":false,"description":"Stored post-type contract value.","schema":{"type":"string","enum":["all","original","reply","quote","repost"],"default":"all"}},{"name":"language","in":"query","required":false,"description":"Stored language code or all.","schema":{"type":"string","default":"all"}},{"name":"status","in":"query","required":false,"description":"Allowlisted snapshot status.","schema":{"type":"string","enum":["breakout","rising","top","stable","insufficient_data"]}},{"name":"sort","in":"query","required":false,"description":"Allowlisted keyset sort.","schema":{"type":"string","enum":["score","accounts","volume","growth","detected_at"],"default":"score"}},{"name":"q","in":"query","required":false,"description":"Optional entity name or key filter, at most 80 characters. Applied before keyset pagination and export of the current page.","schema":{"type":"string"}},{"name":"cursor","in":"query","required":false,"description":"Keyset cursor as sortValue|volume|entityId.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Maximum table rows.","schema":{"type":"integer","default":25,"minimum":1,"maximum":50}}],"responses":{"200":{"description":"Current trend table rows and cursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendNow"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"429":{"description":"The public rate limit has been exceeded.","headers":{"Retry-After":{"description":"Seconds until the client may retry.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Trend aggregates or a requested backfilling snapshot window are temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/stories/now":{"get":{"operationId":"listStoryBoard","summary":"List current compiled stories","description":"Returns the persisted story board for a window. Empty story lists are valid quiet days. This route never compiles a model response.","tags":["Stories"],"parameters":[{"name":"window","in":"query","required":false,"description":"Story window filter.","schema":{"type":"string","enum":["4h","24h","48h","7d"],"default":"24h"}}],"responses":{"200":{"description":"Current compiled stories for the requested window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoryBoard"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"429":{"description":"The public rate limit has been exceeded.","headers":{"Retry-After":{"description":"Seconds until the client may retry.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"The story board is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/stories/lookup":{"get":{"operationId":"lookupStoryByName","summary":"Look up a story by watched name","description":"Returns a compiled brief when a current-window story exists for the name, or an empty Nothing moved on this payload. Never invents a volume brief.","tags":["Stories"],"parameters":[{"name":"q","in":"query","required":true,"description":"Product or person the reader already cares about.","schema":{"type":"string","maxLength":80}},{"name":"window","in":"query","required":false,"description":"Story window filter.","schema":{"type":"string","enum":["4h","24h","48h","7d"],"default":"24h"}}],"responses":{"200":{"description":"Matching brief or empty watched-name copy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoryLookup"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"429":{"description":"The public rate limit has been exceeded.","headers":{"Retry-After":{"description":"Seconds until the client may retry.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Story lookup is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/stories/{id}":{"get":{"operationId":"getStoryBrief","summary":"Get one compiled story brief","description":"Returns headline, why now, optional disagreement, published receipts, and related stories. Receipts open existing tweet pages.","tags":["Stories"],"parameters":[{"name":"id","in":"path","required":true,"description":"Stable compiled story UUID.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Compiled story brief and related stories.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoryBrief"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"That story is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"429":{"description":"The public rate limit has been exceeded.","headers":{"Retry-After":{"description":"Seconds until the client may retry.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"The story brief is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/trends/entities/{id}":{"get":{"operationId":"getTrendEntityDetail","summary":"Get one tracked trend entity","description":"Returns aliases, variants, a series summary, related entities, and top accounts for one tracked entity.","tags":["Trends"],"parameters":[{"name":"id","in":"path","required":true,"description":"Stable tracked-graph entity UUID.","schema":{"type":"string","format":"uuid"}},{"name":"source","in":"query","required":false,"description":"Must be tracked_graph.","schema":{"type":"string","enum":["tracked_graph"],"default":"tracked_graph"}},{"name":"window","in":"query","required":false,"description":"Named or custom lookback window.","schema":{"type":"string","enum":["1h","4h","24h","48h","7d","30d","90d","12m","custom"],"default":"24h"}},{"name":"start","in":"query","required":false,"description":"Inclusive UTC start for window=custom.","schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"}},{"name":"end","in":"query","required":false,"description":"Exclusive UTC end for window=custom.","schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"}},{"name":"category","in":"query","required":false,"description":"Stored category key or all.","schema":{"type":"string","default":"all"}},{"name":"postType","in":"query","required":false,"description":"Stored post-type contract value.","schema":{"type":"string","enum":["all","original","reply","quote","repost"],"default":"all"}},{"name":"language","in":"query","required":false,"description":"Stored language code or all.","schema":{"type":"string","default":"all"}},{"name":"limit","in":"query","required":false,"description":"Maximum detail rows.","schema":{"type":"integer","default":10,"minimum":1,"maximum":50}}],"responses":{"200":{"description":"Tracked entity detail.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendEntityDetail"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The entity was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"429":{"description":"The public rate limit has been exceeded.","headers":{"Retry-After":{"description":"Seconds until the client may retry.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Trend aggregates are temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/trends/export.csv":{"get":{"operationId":"exportTrendSeriesCsv","summary":"Export trend series as CSV","description":"Returns an escaped CSV attachment of the series contract, including source, scope, version, coverage, and dataThrough columns. Formula injection, commas, quotes, and newlines are escaped.","tags":["Trends"],"parameters":[{"name":"source","in":"query","required":false,"description":"Series source.","schema":{"type":"string","enum":["tracked_graph","x_counts"],"default":"tracked_graph"}},{"name":"ids","in":"query","required":false,"description":"Required when source=tracked_graph. Comma-separated tracked-graph entity UUIDs, max 5. Mutually exclusive with terms.","schema":{"type":"string"}},{"name":"terms","in":"query","required":false,"description":"Required when source=x_counts. 1-5 comma-separated kind:value terms. Mutually exclusive with ids.","schema":{"type":"string"}},{"name":"window","in":"query","required":false,"description":"Named or custom lookback window.","schema":{"type":"string","enum":["1h","4h","24h","48h","7d","30d","90d","12m","custom"],"default":"24h"}},{"name":"start","in":"query","required":false,"description":"Inclusive UTC start for window=custom.","schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"}},{"name":"end","in":"query","required":false,"description":"Exclusive UTC end for window=custom.","schema":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"}},{"name":"metric","in":"query","required":false,"description":"Primary series display metric.","schema":{"type":"string","enum":["volume","relative"],"default":"volume"}},{"name":"category","in":"query","required":false,"description":"Stored category key or all.","schema":{"type":"string","default":"all"}},{"name":"postType","in":"query","required":false,"description":"Stored post-type contract value.","schema":{"type":"string","enum":["all","original","reply","quote","repost"],"default":"all"}},{"name":"language","in":"query","required":false,"description":"Stored language code or all.","schema":{"type":"string","default":"all"}}],"responses":{"200":{"description":"CSV attachment of mention and post-volume series.","content":{"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"The request parameters are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"429":{"description":"The public rate limit has been exceeded.","headers":{"Retry-After":{"description":"Seconds until the client may retry.","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Trend export is temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/api/time-travel/{date}":{"get":{"operationId":"getTimeTravelDay","summary":"Get one historical day","description":"Returns the quality-ranked Time Travel read model for one valid ISO calendar day.","tags":["Public sources"],"parameters":[{"name":"date","in":"path","required":true,"description":"ISO calendar date within the Time Travel archive.","schema":{"type":"string","format":"date"}}],"responses":{"200":{"description":"A historical day and its published tweets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeTravelDay"}}}},"404":{"description":"The date is outside the available archive.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"405":{"description":"The HTTP method is not supported by this endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}},"headers":{"Allow":{"description":"HTTP methods accepted by this operation path.","schema":{"type":"string"}}}},"500":{"description":"The service could not complete the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}},"components":{"schemas":{"ApiError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","hint"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code.","examples":["invalid_parameter"]},"message":{"type":"string","description":"Human-readable explanation of the failure."},"hint":{"type":"string","description":"A concrete next step that can resolve the failure."}},"additionalProperties":false}},"additionalProperties":false},"StoryReceipt":{"type":"object","required":["tweetId","tweetUrl","authorHandle","authorName","excerpt","postedAt"],"properties":{"tweetId":{"type":"string"},"tweetUrl":{"type":"string"},"authorHandle":{"type":"string"},"authorName":{"type":"string"},"excerpt":{"type":"string"},"postedAt":{"type":"string","format":"date-time"}},"additionalProperties":false},"StoryBoardRow":{"type":"object","required":["id","headline","whyNow","hero","window","compiledAt"],"properties":{"id":{"type":"string","format":"uuid"},"headline":{"type":"string"},"whyNow":{"type":"string"},"hero":{"oneOf":[{"$ref":"#/components/schemas/StoryReceipt"},{"type":"null"}]},"window":{"type":"string","enum":["4h","24h","48h","7d"]},"compiledAt":{"type":"string","format":"date-time"}},"additionalProperties":false},"StoryBoard":{"type":"object","required":["window","windowEnd","generatedAt","stories"],"properties":{"window":{"type":"string","enum":["4h","24h","48h","7d"]},"windowEnd":{"type":"string","format":"date-time"},"generatedAt":{"type":"string","format":"date-time"},"stories":{"type":"array","items":{"$ref":"#/components/schemas/StoryBoardRow"},"maxItems":12}},"additionalProperties":false},"StoryBrief":{"type":"object","required":["id","storyKey","window","windowEnd","headline","whyNow","disagreement","receipts","hero","entitySlugs","clusterScore","compileModel","compiledAt"],"properties":{"id":{"type":"string","format":"uuid"},"storyKey":{"type":"string"},"window":{"type":"string","enum":["4h","24h","48h","7d"]},"windowEnd":{"type":"string","format":"date-time"},"headline":{"type":"string"},"whyNow":{"type":"string"},"disagreement":{"type":["string","null"]},"receipts":{"type":"array","items":{"$ref":"#/components/schemas/StoryReceipt"},"minItems":2,"maxItems":3},"hero":{"oneOf":[{"$ref":"#/components/schemas/StoryReceipt"},{"type":"null"}]},"entitySlugs":{"type":"array","items":{"type":"string"}},"clusterScore":{"type":"number"},"compileModel":{"type":"string"},"compiledAt":{"type":"string","format":"date-time"},"related":{"type":"array","items":{"$ref":"#/components/schemas/StoryBrief"}}},"additionalProperties":false},"StoryLookupEmpty":{"type":"object","required":["empty","copy","related"],"properties":{"empty":{"type":"boolean","const":true},"copy":{"type":"string","const":"Nothing moved on this"},"related":{"oneOf":[{"$ref":"#/components/schemas/StoryBrief"},{"type":"null"}]}},"additionalProperties":false},"StoryLookup":{"oneOf":[{"$ref":"#/components/schemas/StoryBrief"},{"$ref":"#/components/schemas/StoryLookupEmpty"}]},"PublicProfile":{"type":"object","required":["id","handle","name"],"properties":{"id":{"type":"string","format":"uuid"},"twitter_user_id":{"type":["string","null"]},"handle":{"type":"string"},"name":{"type":"string"},"bio":{"type":["string","null"]},"avatar_url":{"type":["string","null"],"format":"uri"},"banner_url":{"type":["string","null"],"format":"uri"},"location":{"type":["string","null"]},"website":{"type":["string","null"],"format":"uri"},"verified":{"type":["boolean","null"]},"follower_count":{"type":["integer","null"],"minimum":0},"following_count":{"type":["integer","null"],"minimum":0},"tweet_count":{"type":["integer","null"],"minimum":0},"listed_count":{"type":["integer","null"],"minimum":0},"joined_date":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"Tweet":{"type":"object","description":"A published Tech Twitter evidence row.","required":["id","tweet_url","tweet_text","summary","author_name","author_handle","timestamp","comment_count","like_count","retweet_count","submitted_at","created_at","seo_title","bookmark_count","image_url","keywords","video_url","video_thumbnail_url","image_grid_urls","profile_id","link_card_url","link_card_title","link_card_image_url","link_card_domain","is_pinned","pinned_at","content_type","article_title","article_image_url","slug","quality_score"],"properties":{"id":{"type":"string","format":"uuid"},"tweet_url":{"type":"string","format":"uri"},"tweet_text":{"type":"string"},"summary":{"type":["string","null"]},"author_name":{"type":"string"},"author_handle":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"comment_count":{"type":["integer","null"],"minimum":0},"like_count":{"type":["integer","null"],"minimum":0},"retweet_count":{"type":["integer","null"],"minimum":0},"submitted_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":["string","null"],"format":"date-time"},"seo_title":{"type":["string","null"]},"bookmark_count":{"type":["integer","null"],"minimum":0},"image_url":{"type":["string","null"],"format":"uri"},"keywords":{"oneOf":[{"type":"array","items":{"type":"string"},"maxItems":10},{"type":"null"}]},"video_url":{"type":["string","null"],"format":"uri"},"video_thumbnail_url":{"type":["string","null"],"format":"uri"},"image_grid_urls":{"type":["array","null"],"items":{"type":"string","format":"uri"}},"profile_id":{"type":["string","null"],"format":"uuid"},"link_card_url":{"type":["string","null"],"format":"uri"},"link_card_title":{"type":["string","null"]},"link_card_image_url":{"type":["string","null"],"format":"uri"},"link_card_domain":{"type":["string","null"]},"is_pinned":{"type":["boolean","null"]},"pinned_at":{"type":["string","null"],"format":"date-time"},"content_type":{"type":["string","null"],"enum":["tweet","article",null]},"article_title":{"type":["string","null"]},"article_image_url":{"type":["string","null"],"format":"uri"},"slug":{"type":["string","null"]},"quality_score":{"type":["integer","null"],"minimum":1,"maximum":10},"noindex":{"type":"boolean"},"profiles":{"oneOf":[{"$ref":"#/components/schemas/PublicProfile"},{"type":"null"}]}},"additionalProperties":false},"CountedTweetCollection":{"type":"object","required":["tweets","count"],"properties":{"tweets":{"type":"array","items":{"$ref":"#/components/schemas/Tweet"}},"count":{"type":"integer","minimum":0}},"additionalProperties":false},"LatestTweetCollection":{"type":"object","required":["tweets","count"],"properties":{"tweets":{"type":"array","items":{"$ref":"#/components/schemas/Tweet"}},"count":{"type":"integer","minimum":0},"hasMore":{"type":"boolean"},"overflowTweetId":{"type":["string","null"]}},"additionalProperties":false},"TrendingTweetCollection":{"type":"object","required":["tweets","total","hasMore"],"properties":{"tweets":{"type":"array","items":{"$ref":"#/components/schemas/Tweet"}},"total":{"type":"integer","minimum":0},"hasMore":{"type":"boolean"}},"additionalProperties":false},"TweetSearchCollection":{"type":"object","description":"Search results with the strategy that produced them. `countIsLowerBound` is true when the keyword fallback could only prove that more results exist.","required":["tweets","totalCount","hasMore","countIsLowerBound","query","searchType"],"properties":{"tweets":{"type":"array","items":{"$ref":"#/components/schemas/Tweet"}},"totalCount":{"type":"integer","minimum":0},"hasMore":{"type":"boolean"},"countIsLowerBound":{"type":"boolean"},"query":{"type":"string"},"searchType":{"type":"string","enum":["author","keyword","semantic","hybrid"]}},"additionalProperties":false},"HotTake":{"type":"object","description":"A published tweet with its replies-to-likes discussion ratio.","required":["id","tweet_url","tweet_text","summary","author_name","author_handle","timestamp","comment_count","like_count","retweet_count","submitted_at","created_at","seo_title","bookmark_count","image_url","keywords","video_url","video_thumbnail_url","image_grid_urls","profile_id","link_card_url","link_card_title","link_card_image_url","link_card_domain","is_pinned","pinned_at","content_type","article_title","article_image_url","slug","quality_score","replyRatio"],"properties":{"id":{"type":"string","format":"uuid"},"tweet_url":{"type":"string","format":"uri"},"tweet_text":{"type":"string"},"summary":{"type":["string","null"]},"author_name":{"type":"string"},"author_handle":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"comment_count":{"type":["integer","null"],"minimum":0},"like_count":{"type":["integer","null"],"minimum":0},"retweet_count":{"type":["integer","null"],"minimum":0},"submitted_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":["string","null"],"format":"date-time"},"seo_title":{"type":["string","null"]},"bookmark_count":{"type":["integer","null"],"minimum":0},"image_url":{"type":["string","null"],"format":"uri"},"keywords":{"oneOf":[{"type":"array","items":{"type":"string"},"maxItems":10},{"type":"null"}]},"video_url":{"type":["string","null"],"format":"uri"},"video_thumbnail_url":{"type":["string","null"],"format":"uri"},"image_grid_urls":{"type":["array","null"],"items":{"type":"string","format":"uri"}},"profile_id":{"type":["string","null"],"format":"uuid"},"link_card_url":{"type":["string","null"],"format":"uri"},"link_card_title":{"type":["string","null"]},"link_card_image_url":{"type":["string","null"],"format":"uri"},"link_card_domain":{"type":["string","null"]},"is_pinned":{"type":["boolean","null"]},"pinned_at":{"type":["string","null"],"format":"date-time"},"content_type":{"type":["string","null"],"enum":["tweet","article",null]},"article_title":{"type":["string","null"]},"article_image_url":{"type":["string","null"],"format":"uri"},"slug":{"type":["string","null"]},"quality_score":{"type":["integer","null"],"minimum":1,"maximum":10},"noindex":{"type":"boolean"},"profiles":{"oneOf":[{"$ref":"#/components/schemas/PublicProfile"},{"type":"null"}]},"replyRatio":{"type":"number","minimum":0}},"additionalProperties":false},"HotTakeCollection":{"type":"object","required":["tweets","count"],"properties":{"tweets":{"type":"array","items":{"$ref":"#/components/schemas/HotTake"}},"count":{"type":"integer","minimum":0}},"additionalProperties":false},"ArticleCollection":{"type":"object","required":["articles","total","limit","offset","nextCursor","hasMore"],"properties":{"articles":{"type":"array","items":{"$ref":"#/components/schemas/Tweet"}},"total":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":50},"offset":{"type":"integer","const":0},"nextCursor":{"type":["string","null"]},"hasMore":{"type":"boolean"}},"additionalProperties":false},"AgentEvidenceProvenance":{"type":"object","required":["table"],"properties":{"table":{"type":"string"},"id":{"type":"string"},"contentType":{"type":"string"}},"additionalProperties":false},"AgentEvidenceAuthor":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"handle":{"type":"string"},"avatarUrl":{"type":["string","null"],"format":"uri"},"profileUrl":{"type":"string","format":"uri"}},"additionalProperties":false},"AgentTopicRef":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"slug":{"type":"string"}},"additionalProperties":false},"AgentDerivedEvidenceRole":{"type":"object","required":["evidenceRole","sourceType","sourceDomain","confidence","rationaleCodes"],"properties":{"evidenceRole":{"type":"string","enum":["origin","report","analysis","official_confirmation","reaction"]},"sourceType":{"type":"string","enum":["x_post","first_party_web","external_web","unknown"]},"sourceDomain":{"type":["string","null"]},"confidence":{"type":"number","minimum":0,"maximum":1},"rationaleCodes":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"AgentDerivedEvidencePerformance":{"type":"object","required":["engagementScore","authorBaselineCount","authorPerformanceRatio","authorPercentile","cohortPercentile","velocityPerHour","metricCoverage","baselineCoverage"],"properties":{"engagementScore":{"type":["number","null"]},"authorBaselineCount":{"type":"integer","minimum":0},"authorPerformanceRatio":{"type":["number","null"],"minimum":0},"authorPercentile":{"type":["number","null"],"minimum":0,"maximum":1},"cohortPercentile":{"type":["number","null"],"minimum":0,"maximum":1},"velocityPerHour":{"type":["number","null"],"minimum":0},"metricCoverage":{"type":"string","enum":["none","point","interval"]},"baselineCoverage":{"type":"string","enum":["full","partial","insufficient_data"]}},"additionalProperties":false},"AgentDerivedEvidenceConversation":{"type":"object","required":["observedPostCount","distinctAuthorCount","relationshipEdgeCount","crossAuthorEdgeCount","maximumObservedDepth","coverage"],"properties":{"observedPostCount":{"type":"integer","minimum":0},"distinctAuthorCount":{"type":"integer","minimum":0},"relationshipEdgeCount":{"type":"integer","minimum":0},"crossAuthorEdgeCount":{"type":"integer","minimum":0},"maximumObservedDepth":{"type":"integer","minimum":0},"coverage":{"type":"string","const":"corpus_bounded"}},"additionalProperties":false},"AgentDerivedEvidenceEmergingVoice":{"type":"object","required":["topic","recentPostCount","baselinePostCount","recentAuthorPercentile","momentumScore","coverage"],"properties":{"topic":{"oneOf":[{"$ref":"#/components/schemas/AgentTopicRef"},{"type":"null"}],"description":"The public topic or safe canonical entity label associated with the momentum signal; null when unavailable."},"recentPostCount":{"type":"integer","minimum":0},"baselinePostCount":{"type":"integer","minimum":0},"recentAuthorPercentile":{"type":["number","null"],"minimum":0,"maximum":1},"momentumScore":{"type":["number","null"]},"coverage":{"type":"string","enum":["full","partial","insufficient_data"]}},"additionalProperties":false},"AgentDerivedEvidenceCluster":{"type":"object","required":["revisionNumber","headline","distinctAuthors","distinctDomains","distinctSourceTypes","sourceBreadthScore","singleSourcePenalty","originAt","firstIndependentReportAt","firstOfficialConfirmationAt","reactionOnsetAt","coverage"],"properties":{"revisionNumber":{"type":"integer","minimum":1},"headline":{"type":"string"},"distinctAuthors":{"type":"integer","minimum":0},"distinctDomains":{"type":"integer","minimum":0},"distinctSourceTypes":{"type":"integer","minimum":0},"sourceBreadthScore":{"type":"number","minimum":0},"singleSourcePenalty":{"type":"number","minimum":0},"originAt":{"type":"string","format":"date-time"},"firstIndependentReportAt":{"type":["string","null"],"format":"date-time"},"firstOfficialConfirmationAt":{"type":["string","null"],"format":"date-time"},"reactionOnsetAt":{"type":["string","null"],"format":"date-time"},"coverage":{"type":"string","enum":["complete","partial","corpus_bounded","insufficient_data"]}},"additionalProperties":false},"AgentDerivedEvidence":{"type":"object","description":"Stored-data analysis for a public receipt. Null sections mean the requested conclusion is unsupported.","required":["role","performance","conversation","emergingVoice","evidenceCluster"],"properties":{"role":{"oneOf":[{"$ref":"#/components/schemas/AgentDerivedEvidenceRole"},{"type":"null"}]},"performance":{"oneOf":[{"$ref":"#/components/schemas/AgentDerivedEvidencePerformance"},{"type":"null"}]},"conversation":{"oneOf":[{"$ref":"#/components/schemas/AgentDerivedEvidenceConversation"},{"type":"null"}]},"emergingVoice":{"oneOf":[{"$ref":"#/components/schemas/AgentDerivedEvidenceEmergingVoice"},{"type":"null"}]},"evidenceCluster":{"oneOf":[{"$ref":"#/components/schemas/AgentDerivedEvidenceCluster"},{"type":"null"}]}},"additionalProperties":false},"AgentDerivedEvidenceCoverage":{"type":"object","required":["policyVersion","status","enrichedEvidenceCount"],"properties":{"policyVersion":{"type":"string"},"status":{"type":"string","enum":["complete","degraded"]},"enrichedEvidenceCount":{"type":"integer","minimum":0,"maximum":20},"reason":{"type":"string","enum":["feature_lookup_failed"]}},"additionalProperties":false},"AgentEvidence":{"type":"object","required":["id","sourceType","provenance","title","text","metrics","topics","whyIncluded","sourceEndpoint","canonicalUrl","derivedEvidence"],"properties":{"id":{"type":"string"},"sourceType":{"type":"string","enum":["tweet","article","topic","profile"]},"provenance":{"$ref":"#/components/schemas/AgentEvidenceProvenance"},"title":{"type":"string"},"text":{"type":"string"},"summary":{"type":["string","null"]},"author":{"oneOf":[{"$ref":"#/components/schemas/AgentEvidenceAuthor"},{"type":"null"}]},"timestamp":{"type":["string","null"],"format":"date-time"},"metrics":{"type":"object","additionalProperties":{"type":"number"}},"qualityScore":{"type":["integer","null"],"minimum":1,"maximum":10},"topics":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"slug":{"type":"string"}}}},"whyIncluded":{"type":"string"},"sourceEndpoint":{"type":"string","format":"uri"},"canonicalUrl":{"type":"string","format":"uri"},"sourceUrl":{"type":["string","null"],"format":"uri"},"derivedEvidence":{"oneOf":[{"$ref":"#/components/schemas/AgentDerivedEvidence"},{"type":"null"}]}},"additionalProperties":false},"AgentFacet":{"type":"object","required":["name","value","count"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"count":{"type":"integer","minimum":0},"href":{"type":"string","format":"uri"}},"additionalProperties":false},"AgentFacetMetrics":{"type":"object","required":["evidenceCount","maxLimit"],"properties":{"evidenceCount":{"type":"integer","minimum":0},"maxLimit":{"type":"integer","minimum":1,"maximum":20}},"additionalProperties":false},"AgentContextFacets":{"type":"object","required":["topics","authors","sources","metrics"],"properties":{"topics":{"type":"array","items":{"$ref":"#/components/schemas/AgentFacet"}},"authors":{"type":"array","items":{"$ref":"#/components/schemas/AgentFacet"}},"sources":{"type":"array","items":{"$ref":"#/components/schemas/AgentFacet"}},"metrics":{"$ref":"#/components/schemas/AgentFacetMetrics"}},"additionalProperties":false},"AgentContextNext":{"type":"object","required":["context","a2a","agentCard","llmsFull","relatedEndpoints"],"properties":{"context":{"type":"string","format":"uri"},"a2a":{"type":"string","format":"uri"},"agentCard":{"type":"string","format":"uri"},"llmsFull":{"type":"string","format":"uri"},"relatedEndpoints":{"type":"array","items":{"type":"string","format":"uri"}}},"additionalProperties":false},"AgentContext":{"type":"object","required":["kind","question","query","generatedAt","window","instructions","evidence","derivedEvidence","facets","next"],"properties":{"kind":{"type":"string","enum":["what-changed","launches","arguments","read-list","narrative-alert"]},"question":{"type":"string"},"query":{"type":"string"},"generatedAt":{"type":"string","format":"date-time"},"window":{"type":"object","required":["label","start","end"],"properties":{"label":{"type":"string","enum":["24h","48h","7d"]},"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"}}},"instructions":{"type":"array","items":{"type":"string"}},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/AgentEvidence"}},"derivedEvidence":{"$ref":"#/components/schemas/AgentDerivedEvidenceCoverage"},"facets":{"$ref":"#/components/schemas/AgentContextFacets"},"next":{"$ref":"#/components/schemas/AgentContextNext"}},"additionalProperties":false},"HeatmapTopic":{"type":"object","required":["keyword","slug","count","engagement"],"properties":{"keyword":{"type":"string"},"slug":{"type":"string"},"count":{"type":"integer","minimum":0},"engagement":{"type":"integer","minimum":0}},"additionalProperties":false},"HeatmapCollection":{"type":"object","required":["topics"],"properties":{"topics":{"type":"array","items":{"$ref":"#/components/schemas/HeatmapTopic"}}},"additionalProperties":false},"PublicTopic":{"type":"object","required":["id","name","display_name","slug","tweet_count","description","long_description","category","related_topic_ids","metadata_updated_at","created_at","last_tweet_at"],"properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"display_name":{"type":"string"},"slug":{"type":"string"},"tweet_count":{"type":["integer","null"],"minimum":0},"description":{"type":["string","null"]},"long_description":{"type":["string","null"]},"category":{"type":["string","null"]},"related_topic_ids":{"type":["array","null"],"items":{"type":"string","format":"uuid"}},"metadata_updated_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":["string","null"],"format":"date-time"},"last_tweet_at":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"PublicTopicCollection":{"type":"object","required":["topics"],"properties":{"topics":{"type":"array","items":{"$ref":"#/components/schemas/PublicTopic"}}},"additionalProperties":false},"NarrativeTrend":{"type":"object","required":["keyword","mentionCount","engagementTotal","firstSeen","dayOverDay","streak","todayCount","trend"],"properties":{"keyword":{"type":"string"},"mentionCount":{"type":"integer","minimum":0},"engagementTotal":{"type":"integer","minimum":0},"firstSeen":{"type":"string","format":"date-time"},"dayOverDay":{"type":"integer"},"streak":{"type":"integer","enum":[0,2,3]},"todayCount":{"type":"integer","minimum":0},"trend":{"type":"string","enum":["emerging","momentum"]}},"additionalProperties":false},"ConnectedNarrative":{"type":"object","required":["keywords","coOccurrence"],"properties":{"keywords":{"type":"array","items":{"type":"string"},"minItems":2,"maxItems":2},"coOccurrence":{"type":"integer","minimum":0}},"additionalProperties":false},"HotNarrative":{"type":"object","required":["keyword","count","engagement"],"properties":{"keyword":{"type":"string"},"count":{"type":"integer","minimum":0},"engagement":{"type":"integer","minimum":0}},"additionalProperties":false},"NarrativeCollection":{"type":"object","required":["emerging","momentum","connected","hotToday"],"properties":{"emerging":{"type":"array","items":{"$ref":"#/components/schemas/NarrativeTrend"}},"momentum":{"type":"array","items":{"$ref":"#/components/schemas/NarrativeTrend"}},"connected":{"type":"array","items":{"$ref":"#/components/schemas/ConnectedNarrative"}},"hotToday":{"type":"array","items":{"$ref":"#/components/schemas/HotNarrative"}}},"additionalProperties":false},"TimeTravelDay":{"type":"object","required":["tweets","totalCount","uniqueAuthors","lastmod"],"properties":{"tweets":{"type":"array","items":{"$ref":"#/components/schemas/Tweet"}},"totalCount":{"type":"integer","minimum":0},"uniqueAuthors":{"type":"integer","minimum":0},"lastmod":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"JsonRpcId":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"null"}]},"A2AMetadata":{"type":"object","properties":{"question":{"type":"string"},"text":{"type":"string"},"kind":{"type":"string","enum":["auto","what-changed","launches","arguments","read-list","narrative-alert"]},"q":{"type":"string"},"topic":{"type":"string"},"window":{"type":"string","enum":["24h","48h","7d"]},"limit":{"type":"integer","minimum":1,"maximum":20}},"additionalProperties":true},"A2ATextInputPart":{"type":"object","required":["text"],"properties":{"text":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"filename":{"type":"string"},"mediaType":{"type":"string"}},"additionalProperties":false},"A2ADataInputPart":{"type":"object","required":["data"],"properties":{"data":{},"metadata":{"type":"object","additionalProperties":true},"filename":{"type":"string"},"mediaType":{"type":"string"}},"additionalProperties":false},"A2AInputPart":{"oneOf":[{"$ref":"#/components/schemas/A2ATextInputPart"},{"$ref":"#/components/schemas/A2ADataInputPart"}]},"A2AInputMessage":{"type":"object","required":["messageId","role","parts"],"properties":{"messageId":{"type":"string","minLength":1},"contextId":{"type":"string","minLength":1,"description":"Optional conversation identifier. The response echoes this value; when omitted, the server creates one."},"taskId":{"type":"string","minLength":1,"description":"Task continuation is not supported. Any supplied non-empty taskId returns Task not found (-32001)."},"role":{"type":"string","const":"ROLE_USER"},"parts":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/A2AInputPart"}},"metadata":{"$ref":"#/components/schemas/A2AMetadata"},"extensions":{"type":"array","items":{"type":"string","format":"uri"}},"referenceTaskIds":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"A2ASendMessageConfiguration":{"type":"object","properties":{"acceptedOutputModes":{"type":"array","items":{"type":"string"}},"historyLength":{"type":"integer","minimum":0},"returnImmediately":{"type":"boolean"}},"additionalProperties":false},"A2ARequestParams":{"type":"object","required":["message"],"properties":{"tenant":{"type":"string"},"message":{"$ref":"#/components/schemas/A2AInputMessage"},"configuration":{"$ref":"#/components/schemas/A2ASendMessageConfiguration"},"metadata":{"$ref":"#/components/schemas/A2AMetadata"}},"additionalProperties":false},"A2ARequest":{"type":"object","required":["jsonrpc","method","params"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"$ref":"#/components/schemas/JsonRpcId"},"method":{"type":"string","const":"SendMessage"},"params":{"$ref":"#/components/schemas/A2ARequestParams"}},"additionalProperties":false},"A2ADataPart":{"type":"object","required":["mediaType","data"],"properties":{"mediaType":{"type":"string","const":"application/json"},"data":{"$ref":"#/components/schemas/AgentContext"}},"additionalProperties":false},"A2AMessageMetadata":{"type":"object","required":["kind","generatedAt"],"properties":{"kind":{"type":"string","enum":["what-changed","launches","arguments","read-list","narrative-alert"]},"generatedAt":{"type":"string","format":"date-time"}},"additionalProperties":true},"A2AMessage":{"type":"object","required":["messageId","contextId","role","parts","metadata"],"properties":{"messageId":{"type":"string"},"contextId":{"type":"string","minLength":1,"description":"Conversation identifier. The response echoes a client-supplied contextId or contains a server-generated value."},"role":{"type":"string","const":"ROLE_AGENT"},"parts":{"type":"array","minItems":1,"maxItems":1,"items":{"$ref":"#/components/schemas/A2ADataPart"}},"metadata":{"$ref":"#/components/schemas/A2AMessageMetadata"}},"additionalProperties":false},"A2AResult":{"type":"object","required":["message"],"properties":{"message":{"$ref":"#/components/schemas/A2AMessage"}},"additionalProperties":false},"A2AErrorDetail":{"type":"object","required":["@type"],"properties":{"@type":{"type":"string"}},"additionalProperties":true},"A2AError":{"type":"object","required":["code","message"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/A2AErrorDetail"}}},"additionalProperties":false},"A2ASuccessResponse":{"type":"object","required":["jsonrpc","id","result"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"$ref":"#/components/schemas/JsonRpcId"},"result":{"$ref":"#/components/schemas/A2AResult"}},"additionalProperties":false},"A2AErrorResponse":{"type":"object","required":["jsonrpc","id","error"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"$ref":"#/components/schemas/JsonRpcId"},"error":{"$ref":"#/components/schemas/A2AError"}},"additionalProperties":false},"A2AResponse":{"oneOf":[{"$ref":"#/components/schemas/A2ASuccessResponse"},{"$ref":"#/components/schemas/A2AErrorResponse"}]},"TrendSource":{"type":"string","enum":["tracked_graph","x_counts","x_native_trends"]},"TrendWindow":{"type":"string","enum":["1h","4h","24h","48h","7d","30d","90d","12m","custom"]},"TrendNowWindow":{"type":"string","enum":["4h","24h","48h","7d"]},"TrendRange":{"type":"object","required":["window","start","end","granularity"],"properties":{"window":{"$ref":"#/components/schemas/TrendWindow"},"start":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"},"end":{"type":"string","format":"date-time","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$"},"granularity":{"type":"string","enum":["hour","day"]}},"additionalProperties":false},"TrendAvailabilityProvider":{"type":"object","required":["available","status","endpoints"],"properties":{"available":{"type":"boolean"},"status":{"type":["string","null"]},"endpoints":{"type":"object","additionalProperties":{"type":"string"}}},"additionalProperties":false},"TrendEntity":{"type":"object","required":["id","key","type","name","categoryKey"],"properties":{"id":{"type":"string"},"key":{"type":"string"},"type":{"type":"string"},"name":{"type":"string"},"categoryKey":{"type":"string"}},"additionalProperties":false},"TrendCoverage":{"type":"object","required":["coveredHandleSeconds","expectedHandleSeconds","ratio","flag"],"properties":{"coveredHandleSeconds":{"type":"integer","minimum":0},"expectedHandleSeconds":{"type":"integer","minimum":0},"ratio":{"type":"number","minimum":0,"maximum":1},"flag":{"type":"string","enum":["complete","partial","suppressed"]}},"additionalProperties":false},"TrendVersions":{"type":"object","required":["taxonomyVersionId","extractorVersionId"],"properties":{"taxonomyVersionId":{"type":["string","null"],"format":"uuid"},"extractorVersionId":{"type":["string","null"],"format":"uuid"}},"additionalProperties":false},"TrendPointValue":{"type":"object","required":["mentionVolume","postVolume","corpusTotal","sharePer10k","relativeCoverage"],"properties":{"mentionVolume":{"type":"integer","minimum":0},"postVolume":{"type":"integer","minimum":0},"corpusTotal":{"type":"integer","minimum":0},"sharePer10k":{"type":"number","minimum":0,"maximum":10000},"relativeCoverage":{"type":"number","minimum":0,"maximum":100}},"additionalProperties":false},"TrendSeriesSummary":{"type":"object","required":["mentionVolume","postVolume","corpusTotal","sharePer10k","relativeCoverage","complete"],"properties":{"mentionVolume":{"type":"integer","minimum":0},"postVolume":{"type":"integer","minimum":0},"corpusTotal":{"type":"integer","minimum":0},"sharePer10k":{"type":"number","minimum":0,"maximum":10000},"relativeCoverage":{"type":"number","minimum":0,"maximum":100},"complete":{"type":"boolean"}},"additionalProperties":false},"TrendSeriesBucket":{"type":"object","required":["start","end","complete","corpusTotal","values"],"properties":{"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"},"complete":{"type":"boolean"},"corpusTotal":{"type":"integer","minimum":0},"values":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/TrendPointValue"}}},"additionalProperties":false},"TrendSeries":{"type":"object","required":["source","metric","window","entities","buckets","coverage","versions","generatedAt","dataThrough","provider"],"properties":{"source":{"$ref":"#/components/schemas/TrendSource"},"metric":{"type":"string","enum":["volume","relative"]},"window":{"$ref":"#/components/schemas/TrendRange"},"entities":{"type":"array","items":{"$ref":"#/components/schemas/TrendEntity"},"maxItems":5},"buckets":{"type":"array","items":{"$ref":"#/components/schemas/TrendSeriesBucket"},"maxItems":366},"coverage":{"$ref":"#/components/schemas/TrendCoverage"},"versions":{"$ref":"#/components/schemas/TrendVersions"},"generatedAt":{"type":"string","format":"date-time"},"dataThrough":{"type":["string","null"],"format":"date-time"},"provider":{"type":["object","null"],"additionalProperties":true}},"additionalProperties":false},"TrendRelatedRow":{"type":"object","required":["entity","support","lift","growth"],"properties":{"entity":{"$ref":"#/components/schemas/TrendEntity"},"support":{"type":"integer","minimum":0},"lift":{"type":"number","minimum":0},"growth":{"type":["number","null"]}},"additionalProperties":false},"TrendRelated":{"type":"object","required":["source","entity","window","top","rising","coverage","versions","generatedAt","dataThrough"],"properties":{"source":{"type":"string","const":"tracked_graph"},"entity":{"$ref":"#/components/schemas/TrendEntity"},"window":{"$ref":"#/components/schemas/TrendRange"},"top":{"type":"array","items":{"$ref":"#/components/schemas/TrendRelatedRow"}},"rising":{"type":"array","items":{"$ref":"#/components/schemas/TrendRelatedRow"}},"coverage":{"$ref":"#/components/schemas/TrendCoverage"},"versions":{"$ref":"#/components/schemas/TrendVersions"},"generatedAt":{"type":"string","format":"date-time"},"dataThrough":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"TrendNowRow":{"type":"object","required":["source","entity","volume","authorCount","latest","growth","detectedAt","status","sparkline","cursor"],"properties":{"source":{"$ref":"#/components/schemas/TrendSource"},"entity":{"$ref":"#/components/schemas/TrendEntity"},"volume":{"type":"integer","minimum":0},"authorCount":{"type":["integer","null"],"minimum":0},"latest":{"anyOf":[{"type":"null"},{"type":"object","required":["authorHandle","postedAt","xPostId","postText"],"additionalProperties":false,"properties":{"authorHandle":{"type":"string"},"postedAt":{"type":"string","format":"date-time"},"xPostId":{"type":["string","null"]},"postText":{"type":["string","null"]}}}]},"growth":{"type":["number","null"]},"detectedAt":{"type":["string","null"],"format":"date-time"},"status":{"type":"string","enum":["breakout","rising","top","stable","insufficient_data"]},"sparkline":{"type":"array","items":{"type":"number"}},"cursor":{"type":"string"}},"additionalProperties":false},"TrendNow":{"type":"object","required":["source","window","rows","nextCursor","coverage","versions","generatedAt","dataThrough","provider"],"properties":{"source":{"$ref":"#/components/schemas/TrendSource"},"window":{"$ref":"#/components/schemas/TrendRange"},"rows":{"type":"array","items":{"$ref":"#/components/schemas/TrendNowRow"}},"nextCursor":{"type":["string","null"]},"coverage":{"$ref":"#/components/schemas/TrendCoverage"},"versions":{"$ref":"#/components/schemas/TrendVersions"},"generatedAt":{"type":"string","format":"date-time"},"dataThrough":{"type":["string","null"],"format":"date-time"},"provider":{"type":["object","null"],"additionalProperties":true}},"additionalProperties":false},"TrendEvidencePost":{"type":"object","description":"An observed post assigned to the tracked entity in the requested window.","required":["id","xPostId","authorHandle","postedAt","postText","canonicalUrl"],"properties":{"id":{"type":"string","format":"uuid"},"xPostId":{"type":"string","pattern":"^[0-9]+$"},"authorHandle":{"type":"string"},"postedAt":{"type":"string","format":"date-time"},"postText":{"type":["string","null"]},"canonicalUrl":{"type":"string","format":"uri"}},"additionalProperties":false},"TrendEvidence":{"type":"object","required":["source","entity","posts","coverage","versions","generatedAt","dataThrough"],"properties":{"source":{"type":"string","const":"tracked_graph"},"entity":{"$ref":"#/components/schemas/TrendEntity"},"posts":{"type":"array","items":{"$ref":"#/components/schemas/TrendEvidencePost"}},"coverage":{"$ref":"#/components/schemas/TrendCoverage"},"versions":{"$ref":"#/components/schemas/TrendVersions"},"generatedAt":{"type":"string","format":"date-time"},"dataThrough":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"TrendEntityDetail":{"type":"object","required":["source","entity","aliases","variants","seriesSummary","related","topAccounts","evidence","coverage","versions","generatedAt","dataThrough"],"properties":{"source":{"type":"string","const":"tracked_graph"},"entity":{"$ref":"#/components/schemas/TrendEntity"},"aliases":{"type":"array","items":{"type":"object","required":["alias","kind"],"properties":{"alias":{"type":"string"},"kind":{"type":"string"}},"additionalProperties":false}},"variants":{"type":"array","items":{"type":"string"}},"seriesSummary":{"$ref":"#/components/schemas/TrendSeriesSummary"},"related":{"type":"object","required":["top","rising"],"properties":{"top":{"type":"array","items":{"$ref":"#/components/schemas/TrendRelatedRow"}},"rising":{"type":"array","items":{"$ref":"#/components/schemas/TrendRelatedRow"}}},"additionalProperties":false},"topAccounts":{"type":"array","items":{"type":"object","required":["handle","mentionVolume"],"properties":{"handle":{"type":"string"},"mentionVolume":{"type":"integer","minimum":0}},"additionalProperties":false}},"evidence":{"type":"array","items":{"type":"object","required":["id","canonicalUrl"],"properties":{"id":{"type":"string","format":"uuid"},"canonicalUrl":{"type":"string"}},"additionalProperties":false}},"coverage":{"$ref":"#/components/schemas/TrendCoverage"},"versions":{"$ref":"#/components/schemas/TrendVersions"},"generatedAt":{"type":"string","format":"date-time"},"dataThrough":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"TrendAvailability":{"type":"object","required":["reliableStart","watermark","windows","nowWindows","resolutions","filters","providers","hiddenControls","generatedAt"],"properties":{"reliableStart":{"type":["string","null"],"format":"date-time"},"watermark":{"type":["string","null"],"format":"date-time"},"windows":{"type":"array","items":{"$ref":"#/components/schemas/TrendWindow"}},"nowWindows":{"type":"array","items":{"$ref":"#/components/schemas/TrendNowWindow"},"description":"Trending Now snapshot windows that have passed automatic publication readiness."},"resolutions":{"type":"object","additionalProperties":{"type":"string","enum":["hour","day"]}},"filters":{"type":"object","required":["categories","postTypes","languages"],"properties":{"categories":{"type":"array","items":{"type":"string"}},"postTypes":{"type":"array","items":{"type":"string","enum":["all","original","reply","quote","repost"]}},"languages":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"providers":{"type":"object","required":["tracked_graph","x_counts","x_native_trends"],"properties":{"tracked_graph":{"$ref":"#/components/schemas/TrendAvailabilityProvider"},"x_counts":{"$ref":"#/components/schemas/TrendAvailabilityProvider"},"x_native_trends":{"$ref":"#/components/schemas/TrendAvailabilityProvider"}},"additionalProperties":false},"hiddenControls":{"type":"array","items":{"$ref":"#/components/schemas/TrendSource"}},"generatedAt":{"type":"string","format":"date-time"}},"additionalProperties":false},"TrendEntityCollection":{"type":"object","required":["entities"],"properties":{"entities":{"type":"array","items":{"$ref":"#/components/schemas/TrendEntity"},"maxItems":20}},"additionalProperties":false}}}}