{"openapi":"3.1.0","info":{"title":"URSY.news event metadata API","version":"2.1.3","description":"Publisher-feed headlines, feed-supplied excerpts, links and metadata. URSY does not fetch article pages, store or serve full article bodies.\nPreserve the publisher name and original publisher URL. URSY is a discovery and grouping service.\nAPI access grants no rights over publisher text or images. No image proxy or extended text retention.\nRepresentative retained publisher headline, attributed to its source. Deterministic extraction, not a synthetic article.\nConservative metadata similarity; publishers may disagree. Coverage count is neither truth probability nor proof of balance or completeness.\nNew observations record publisher or collection_fallback. Historic unknowns remain unknown_legacy. Raw publisher timestamps are retained for new items; future dates are flagged after a five-minute tolerance and are never silently replaced.\nURSY feed observations and correction history, not necessarily real-world chronology.\nThe archive keeps up to 400 items per configured source feed. A publisher may have several feeds. Older items are pruned; this is not a permanent news-wire archive. Event IDs/counts/hashes and correction logs persist without pruned publisher text.\nRecently collected feeds, not guaranteed real-time reporting. See per-source status.\nSource-level access classification does not guarantee any individual article access.\nNo contextual sponsor is attached to event data pending reviewed sensitivity classification. Sponsor data never determines membership or enters publisher provenance.\nNo authentication. Shared origin capacity 300 requests/minute with v1 and MCP. Unknown and duplicate query parameters are rejected. Cursors are continuations, not frozen archive snapshots. GET /status exposes changes.checkpoint and changes.poll_url to watch new observations without downloading earlier history."},"servers":[{"url":"https://ursy.news/api/v2"}],"paths":{"/manifest":{"get":{"operationId":"newsV2manifest","summary":"/manifest — Manifest","parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Manifest"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2manifestHead","summary":"/manifest — Manifest","parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2manifestOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}},"/catalog":{"get":{"operationId":"newsV2catalog","summary":"/catalog — Sources","parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sources"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2catalogHead","summary":"/catalog — Sources","parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2catalogOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}},"/sources":{"get":{"operationId":"newsV2sources","summary":"/sources — Sources","parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sources"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2sourcesHead","summary":"/sources — Sources","parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2sourcesOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}},"/sources/{id}":{"get":{"operationId":"newsV2sourcesid","summary":"/sources/{id} — SourceEnvelope","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Stable event/story/source ID from the matching list."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceEnvelope"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2sourcesidHead","summary":"/sources/{id} — SourceEnvelope","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Stable event/story/source ID from the matching list."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2sourcesidOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}},"/topics":{"get":{"operationId":"newsV2topics","summary":"/topics — Topics","parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Topics"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2topicsHead","summary":"/topics — Topics","parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2topicsOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}},"/stories":{"get":{"operationId":"newsV2stories","summary":"/stories — Stories","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"x-maxUtf8Bytes":200,"description":"At most 200 UTF-8 bytes after trimming. maxLength is only a character ceiling, not byte validation. Matches retained headline and feed excerpt, not article bodies."},"description":"At most 200 UTF-8 bytes after trimming. maxLength is only a character ceiling, not byte validation. Matches retained headline and feed excerpt, not article bodies."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":""},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["bbc","guardian","sky-news","financial-times","bbc-kent","bbc-sport","bbc-london","bbc-manchester","bbc-scotland","bbc-wales","carbon-brief","mit-tech","ars","rest-of-world","quietus","positive-news","nasa","the-conversation"],"maxLength":80},"description":""},{"name":"topic","in":"query","required":false,"schema":{"type":"string","enum":["business","climate","culture","local","science","sport","technology","united-kingdom","world"],"maxLength":80},"description":""},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","maxLength":10,"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","maxLength":10,"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Stories"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2storiesHead","summary":"/stories — Stories","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"x-maxUtf8Bytes":200,"description":"At most 200 UTF-8 bytes after trimming. maxLength is only a character ceiling, not byte validation. Matches retained headline and feed excerpt, not article bodies."},"description":"At most 200 UTF-8 bytes after trimming. maxLength is only a character ceiling, not byte validation. Matches retained headline and feed excerpt, not article bodies."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":""},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["bbc","guardian","sky-news","financial-times","bbc-kent","bbc-sport","bbc-london","bbc-manchester","bbc-scotland","bbc-wales","carbon-brief","mit-tech","ars","rest-of-world","quietus","positive-news","nasa","the-conversation"],"maxLength":80},"description":""},{"name":"topic","in":"query","required":false,"schema":{"type":"string","enum":["business","climate","culture","local","science","sport","technology","united-kingdom","world"],"maxLength":80},"description":""},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","maxLength":10,"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","maxLength":10,"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2storiesOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}},"/stories/{id}":{"get":{"operationId":"newsV2storiesid","summary":"/stories/{id} — StoryEnvelope","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Stable event/story/source ID from the matching list."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoryEnvelope"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2storiesidHead","summary":"/stories/{id} — StoryEnvelope","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Stable event/story/source ID from the matching list."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2storiesidOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}},"/events":{"get":{"operationId":"newsV2events","summary":"/events — Events","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"x-maxUtf8Bytes":200,"description":"At most 200 UTF-8 bytes after trimming. maxLength is only a character ceiling, not byte validation. Matches retained headline and feed excerpt, not article bodies."},"description":"At most 200 UTF-8 bytes after trimming. maxLength is only a character ceiling, not byte validation. Matches retained headline and feed excerpt, not article bodies."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":""},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["bbc","guardian","sky-news","financial-times","bbc-kent","bbc-sport","bbc-london","bbc-manchester","bbc-scotland","bbc-wales","carbon-brief","mit-tech","ars","rest-of-world","quietus","positive-news","nasa","the-conversation"],"maxLength":80},"description":""},{"name":"topic","in":"query","required":false,"schema":{"type":"string","enum":["business","climate","culture","local","science","sport","technology","united-kingdom","world"],"maxLength":80},"description":""},{"name":"min_publishers","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":99,"default":1,"description":"Distinct publisher organisations. Multiple BBC feeds count once. Default includes standalone groups."},"description":"Distinct publisher organisations. Multiple BBC feeds count once. Default includes standalone groups."},{"name":"changed_since","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$","maxLength":20,"description":"Convenience UTC filter; use /changes checkpoints for lossless polling."},"description":"Convenience UTC filter; use /changes checkpoints for lossless polling."},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","maxLength":10,"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","maxLength":10,"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Events"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2eventsHead","summary":"/events — Events","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200,"x-maxUtf8Bytes":200,"description":"At most 200 UTF-8 bytes after trimming. maxLength is only a character ceiling, not byte validation. Matches retained headline and feed excerpt, not article bodies."},"description":"At most 200 UTF-8 bytes after trimming. maxLength is only a character ceiling, not byte validation. Matches retained headline and feed excerpt, not article bodies."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":""},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["bbc","guardian","sky-news","financial-times","bbc-kent","bbc-sport","bbc-london","bbc-manchester","bbc-scotland","bbc-wales","carbon-brief","mit-tech","ars","rest-of-world","quietus","positive-news","nasa","the-conversation"],"maxLength":80},"description":""},{"name":"topic","in":"query","required":false,"schema":{"type":"string","enum":["business","climate","culture","local","science","sport","technology","united-kingdom","world"],"maxLength":80},"description":""},{"name":"min_publishers","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":99,"default":1,"description":"Distinct publisher organisations. Multiple BBC feeds count once. Default includes standalone groups."},"description":"Distinct publisher organisations. Multiple BBC feeds count once. Default includes standalone groups."},{"name":"changed_since","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$","maxLength":20,"description":"Convenience UTC filter; use /changes checkpoints for lossless polling."},"description":"Convenience UTC filter; use /changes checkpoints for lossless polling."},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","maxLength":10,"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","maxLength":10,"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2eventsOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}},"/events/{id}":{"get":{"operationId":"newsV2eventsid","summary":"/events/{id} — EventEnvelope","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Stable event/story/source ID from the matching list."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventEnvelope"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2eventsidHead","summary":"/events/{id} — EventEnvelope","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Stable event/story/source ID from the matching list."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2eventsidOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}},"/events/{id}/stories":{"get":{"operationId":"newsV2eventsidstories","summary":"/events/{id}/stories — Stories","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Stable event/story/source ID from the matching list."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":""},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Stories"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2eventsidstoriesHead","summary":"/events/{id}/stories — Stories","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Stable event/story/source ID from the matching list."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":""},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2eventsidstoriesOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}},"/events/{id}/timeline":{"get":{"operationId":"newsV2eventsidtimeline","summary":"/events/{id}/timeline — Timeline","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Stable event/story/source ID from the matching list."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":""},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"since","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"after","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Timeline"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2eventsidtimelineHead","summary":"/events/{id}/timeline — Timeline","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Stable event/story/source ID from the matching list."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":""},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"since","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"after","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2eventsidtimelineOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}},"/events/{id}/compare":{"get":{"operationId":"newsV2eventsidcompare","summary":"/events/{id}/compare — Comparison","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Stable event/story/source ID from the matching list."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":""},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Comparison"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2eventsidcompareHead","summary":"/events/{id}/compare — Comparison","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Stable event/story/source ID from the matching list."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":""},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2eventsidcompareOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}},"/search":{"get":{"operationId":"newsV2search","summary":"/search — Search","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"x-maxUtf8Bytes":200,"description":"At most 200 UTF-8 bytes after trimming. maxLength is only a character ceiling, not byte validation. Matches retained headline and feed excerpt, not article bodies."},"description":"At most 200 UTF-8 bytes after trimming. maxLength is only a character ceiling, not byte validation. Matches retained headline and feed excerpt, not article bodies."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":""},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["bbc","guardian","sky-news","financial-times","bbc-kent","bbc-sport","bbc-london","bbc-manchester","bbc-scotland","bbc-wales","carbon-brief","mit-tech","ars","rest-of-world","quietus","positive-news","nasa","the-conversation"],"maxLength":80},"description":""},{"name":"topic","in":"query","required":false,"schema":{"type":"string","enum":["business","climate","culture","local","science","sport","technology","united-kingdom","world"],"maxLength":80},"description":""},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","maxLength":10,"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","maxLength":10,"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Search"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2searchHead","summary":"/search — Search","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200,"x-maxUtf8Bytes":200,"description":"At most 200 UTF-8 bytes after trimming. maxLength is only a character ceiling, not byte validation. Matches retained headline and feed excerpt, not article bodies."},"description":"At most 200 UTF-8 bytes after trimming. maxLength is only a character ceiling, not byte validation. Matches retained headline and feed excerpt, not article bodies."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":""},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["bbc","guardian","sky-news","financial-times","bbc-kent","bbc-sport","bbc-london","bbc-manchester","bbc-scotland","bbc-wales","carbon-brief","mit-tech","ars","rest-of-world","quietus","positive-news","nasa","the-conversation"],"maxLength":80},"description":""},{"name":"topic","in":"query","required":false,"schema":{"type":"string","enum":["business","climate","culture","local","science","sport","technology","united-kingdom","world"],"maxLength":80},"description":""},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","maxLength":10,"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","maxLength":10,"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},"description":"UTC date; from inclusive, to exclusive. Story publication date or event last observation date."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2searchOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}},"/changes":{"get":{"operationId":"newsV2changes","summary":"/changes — ChangeSet","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":""},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"since","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"after","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeSet"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2changesHead","summary":"/changes — ChangeSet","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20},"description":""},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"since","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"after","in":"query","required":false,"schema":{"type":"string","maxLength":1024,"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},"description":"Signed opaque continuation, bound to scope, filters and version. Keep filters unchanged. since/after/cursor are mutually exclusive for changes and timelines. Lists are not frozen snapshots."},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2changesOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}},"/status":{"get":{"operationId":"newsV2status","summary":"/status — Status","parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2statusHead","summary":"/status — Status","parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2statusOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}},"/openapi":{"get":{"operationId":"newsV2openapi","summary":"/openapi — OpenAPI","parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenAPI"}}}},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"414":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Bounded public error; 429/503 include Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"newsV2openapiHead","summary":"/openapi — OpenAPI","parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Metadata response"},"304":{"description":"Unchanged; no body"},"400":{"description":"Bounded public error; 429/503 include Retry-After."},"404":{"description":"Bounded public error; 429/503 include Retry-After."},"405":{"description":"Bounded public error; 429/503 include Retry-After."},"414":{"description":"Bounded public error; 429/503 include Retry-After."},"429":{"description":"Bounded public error; 429/503 include Retry-After."},"503":{"description":"Bounded public error; 429/503 include Retry-After."}}},"options":{"operationId":"newsV2openapiOptions","responses":{"204":{"description":"Public CORS methods/headers, no body"}}}}},"components":{"schemas":{"Story":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-f0-9]{32}$"},"slug":{"type":"string"},"title":{"type":"string","maxLength":300},"excerpt":{"type":"string","maxLength":400},"original_url":{"type":["string","null"]},"archive_url":{"type":"string"},"descriptor_url":{"type":"string"},"source":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"access":{"type":"string"},"publisher_id":{"type":"string"}},"required":["id","name","access"],"additionalProperties":false},"topic":{"type":"string"},"topic_name":{"type":"string"},"published_at":{"type":"string","format":"date-time"},"first_seen_at":{"type":"string","format":"date-time"},"last_collected_at":{"type":"string","format":"date-time"},"image_revised_at":{"type":["string","null"],"format":"date-time"},"day":{"type":"string","format":"date"},"publisher_image_url":{"type":["string","null"]},"provenance":{"type":"object"},"published_at_basis":{"type":"string","enum":["publisher","collection_fallback","unknown_legacy"]},"topic_basis":{"const":"source_feed_category"},"event_id":{"type":["string","null"]},"image":{"type":"object","properties":{"url":{"type":["string","null"]},"source":{"const":"publisher_feed"},"redistribution_rights_granted_by_ursy":{"const":false}},"required":["url","source","redistribution_rights_granted_by_ursy"]},"schema":{"const":"ursy.news/story/v2"},"excerpt_basis":{"enum":["publisher_feed","withheld_by_source_policy"]},"publisher_timestamp_raw":{"type":["string","null"]},"published_at_state":{"type":["string","null"]},"publisher_timestamp_parsed":{"type":["string","null"],"format":"date-time"},"feed_retrieved_at":{"type":["string","null"],"format":"date-time"},"rights":{"$ref":"#/components/schemas/SourceRights"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["id","slug","title","excerpt","original_url","archive_url","descriptor_url","source","topic","topic_name","published_at","first_seen_at","last_collected_at","image_revised_at","day","publisher_image_url","provenance","published_at_basis","topic_basis","event_id","image","schema","excerpt_basis","publisher_timestamp_raw","published_at_state","publisher_timestamp_parsed","feed_retrieved_at","rights"],"additionalProperties":false},"Event":{"type":"object","properties":{"id":{"type":"string","pattern":"^evt_[a-f0-9]{32}$"},"label":{"type":"string"},"label_basis":{"type":"string"},"label_story_id":{"type":["string","null"]},"label_source_id":{"type":["string","null"]},"topic":{"type":"string"},"status":{"enum":["active","empty","merged"]},"first_seen_at":{"type":["string","null"],"format":"date-time"},"last_seen_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"member_story_ids":{"type":"array","items":{"type":"string"}},"publishers":{"type":"array","items":{"type":"string"}},"source_ids":{"type":"array","items":{"type":"string"}},"story_count":{"type":"integer"},"publisher_count":{"type":"integer"},"member_story_count_current":{"type":"integer"},"member_story_count_lifetime_observed":{"type":"integer"},"confidence":{"enum":["high","standalone"]},"confidence_score":{"type":["number","null"],"minimum":0,"maximum":1,"description":"Minimum accepted member similarity, dependent on cluster_version. Manual corrections are marked separately. Not calibrated probability and never news truth."},"cluster_version":{"type":"string"},"coverage":{"type":"object"},"correction_status":{"type":"string"},"url":{"type":"string"},"provenance":{"type":"object"},"schema":{"const":"ursy.news/event/v1","description":"Existing record identifier retained for v2 compatibility; API release is separately versioned."},"locked":{"type":"boolean","description":"Automatic grouping cannot add or move members while locked. Rights/retention pruning still applies and is logged by the system; a lock never retains removed publisher text."},"merged_into":{"type":["string","null"],"pattern":"^evt_[a-f0-9]{32}$","description":"Stable target for a merged group. The old ID and its history remain resolvable."},"topic_basis":{"const":"initial_member_source_feed_category"},"links":{"type":"object"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["id","label","label_basis","label_story_id","label_source_id","topic","status","first_seen_at","last_seen_at","updated_at","member_story_ids","publishers","source_ids","story_count","publisher_count","member_story_count_current","member_story_count_lifetime_observed","confidence","confidence_score","cluster_version","coverage","correction_status","url","provenance","schema","locked","merged_into","topic_basis","links"],"allOf":[{"if":{"properties":{"status":{"const":"merged"}},"required":["status"]},"then":{"properties":{"merged_into":{"type":"string","pattern":"^evt_[a-f0-9]{32}$"}}}}],"additionalProperties":false},"EventMember":{"$ref":"#/components/schemas/Story"},"Source":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"scope":{"enum":["Local","National","Niche"]},"topic":{"type":"string"},"topic_name":{"type":"string"},"access":{"enum":["Free","Metered","Subscription","Mixed","Unknown"]},"access_note":{"type":"string"},"publisher_url":{"type":"string"},"feed_url":{"type":["string","null"]},"archive_url":{"type":"string"},"descriptor_url":{"type":"string"},"stories_url":{"type":"string"},"stories_archived":{"type":"integer","minimum":0},"newest_at":{"type":["string","null"],"format":"date-time"},"publisher_id":{"type":"string"},"health":{"type":"object"},"rights":{"$ref":"#/components/schemas/SourceRights"},"terms_review_status":{"enum":["reviewed_allowed","reviewed_restricted","review_required","terms_unknown","suspended"]},"terms_last_reviewed_at":{"type":["string","null"],"format":"date-time"},"terms_review_due_at":{"type":["string","null"],"format":"date-time"},"api_use_state":{"type":"string"},"excerpt_policy":{"type":"object"},"image_policy":{"type":"object"},"feed_type":{"type":"string"},"rss_atom_origin":{"const":"publisher_supplied"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["id","name","description","scope","topic","topic_name","access","access_note","publisher_url","feed_url","archive_url","descriptor_url","stories_url","stories_archived","newest_at","publisher_id","health","rights","terms_review_status","terms_last_reviewed_at","terms_review_due_at","api_use_state","excerpt_policy","image_policy","feed_type","rss_atom_origin"],"additionalProperties":false},"Topic":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["id","name"]},"Pagination":{"type":"object","properties":{"limit":{"type":"integer"},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]},"next_url":{"type":["string","null"]}},"required":["limit","has_more","next_cursor","next_url"]},"TimelineEntry":{"type":"object","properties":{"sequence":{"type":"integer"},"type":{"type":"string"},"event_id":{"type":"string"},"story_id":{"type":["string","null"]},"source_id":{"type":["string","null"]},"observed_at":{"type":["string","null"],"format":"date-time"},"actor":{"enum":["algorithm","admin","system"]},"data":{"type":"object"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["sequence","type","event_id","observed_at","actor","data"]},"Status":{"type":"object","properties":{"schema":{"type":"string"},"enabled":{"type":"boolean"},"collection":{"type":"object","properties":{"configured_feeds":{"type":"integer","minimum":0},"distinct_publishers":{"type":"integer","minimum":0},"healthy":{"type":"integer","minimum":0},"collector_last_run":{"type":["string","null"],"format":"date-time"},"feed_poll_minimum_seconds":{"type":"integer","minimum":0},"per_source":{"type":"object"}},"required":["configured_feeds","distinct_publishers","healthy","per_source"]},"archive":{"type":"object","properties":{"current_records":{"type":"integer","minimum":0},"retention_per_source":{"type":"integer","minimum":0},"retained_items_first_seen_today_utc":{"type":"integer","minimum":0},"publication_basis":{"type":["array","null"],"items":{"type":"object"}},"timestamp_states":{"type":"array","items":{"type":"object"}}},"required":["current_records","retention_per_source","publication_basis"]},"events":{"type":["object","null"],"properties":{"total":{"type":"integer","minimum":0},"active":{"type":"integer","minimum":0},"high_confidence":{"type":"integer","minimum":0},"standalone":{"type":"integer","minimum":0}}},"calls":{"type":"array","items":{"type":"object"}},"changes":{"$ref":"#/components/schemas/WatchCheckpoint"},"version":{"type":"string"},"generated_at":{"type":["string","null"],"format":"date-time"},"rights":{"type":"object","properties":{"feeds_total":{"type":"integer","minimum":0},"terms_records":{"type":"integer","minimum":0},"reviewed_current":{"type":"integer","minimum":0},"reviewed_restricted":{"type":"integer","minimum":0},"review_due":{"type":"integer","minimum":0},"review_required":{"type":"integer","minimum":0},"suspended":{"type":"integer","minimum":0}},"required":["feeds_total","terms_records","reviewed_current","reviewed_restricted","review_due","review_required","suspended"]},"contract":{"type":"object"},"review_monitor":{"type":"object"},"worker_observability":{"type":["object","null"]},"correction_qa":{"type":["object","null"]},"warnings":{"type":"array","items":{"type":"string"}}},"required":["schema","enabled","collection","archive","events","calls","changes"]},"Error":{"type":"object","properties":{"schema":{"type":"string"},"error":{"type":"object","properties":{"code":{"enum":["STORY_NOT_FOUND","EVENT_NOT_FOUND","SOURCE_NOT_FOUND","INVALID_CURSOR","CURSOR_FILTER_MISMATCH","INVALID_DATE_RANGE","QUERY_TOO_LONG","ARCHIVE_UNAVAILABLE","RATE_LIMITED","INVALID_PARAMETER","NOT_FOUND","METHOD_NOT_ALLOWED","CURSOR_EXPIRED","TEMPORARY_UNAVAILABLE"]},"message":{"type":"string"},"request_id":{"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","request_id","retryable"]},"request_id":{"type":"string"}},"required":["schema","error","request_id"]},"WatchCheckpoint":{"type":"object","properties":{"checkpoint":{"type":"string"},"observed_at":{"type":["string","null"],"format":"date-time"},"poll_url":{"type":"string","format":"uri"},"note":{"type":"string"}},"required":["checkpoint","observed_at","poll_url","note"]},"Stories":{"type":"object","properties":{"schema":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Story"}},"count":{"type":"integer"},"pagination":{"$ref":"#/components/schemas/Pagination"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["schema","items"]},"Events":{"type":"object","properties":{"schema":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Event"}},"count":{"type":"integer"},"pagination":{"$ref":"#/components/schemas/Pagination"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["schema","items"]},"Sources":{"type":"object","properties":{"schema":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Source"}},"count":{"type":"integer"},"pagination":{"$ref":"#/components/schemas/Pagination"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["schema","items"]},"Topics":{"type":"object","properties":{"schema":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Topic"}},"count":{"type":"integer"},"pagination":{"$ref":"#/components/schemas/Pagination"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["schema","items"]},"Timeline":{"type":"object","properties":{"schema":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/TimelineEntry"}},"count":{"type":"integer"},"pagination":{"$ref":"#/components/schemas/Pagination"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["schema","items"]},"StoryEnvelope":{"type":"object","properties":{"schema":{"type":"string"},"item":{"$ref":"#/components/schemas/Story"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["schema","item"]},"EventEnvelope":{"type":"object","properties":{"schema":{"type":"string"},"item":{"$ref":"#/components/schemas/Event"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["schema","item"]},"SourceEnvelope":{"type":"object","properties":{"schema":{"type":"string"},"item":{"$ref":"#/components/schemas/Source"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["schema","item"]},"ChangeSet":{"type":"object","properties":{"schema":{"type":"string"},"checkpoint":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/TimelineEntry"}},"count":{"type":"integer"},"pagination":{"$ref":"#/components/schemas/Pagination"},"events_created":{"type":"array","items":{"$ref":"#/components/schemas/TimelineEntry"}},"events_updated":{"type":"array","items":{"$ref":"#/components/schemas/TimelineEntry"}},"publishers_joined_events":{"type":"array","items":{"$ref":"#/components/schemas/TimelineEntry"}},"stories_added":{"type":"array","items":{"$ref":"#/components/schemas/TimelineEntry"}},"corrections":{"type":"array","items":{"$ref":"#/components/schemas/TimelineEntry"}},"warnings":{"type":"array","items":{"type":"string"}}},"required":["schema","checkpoint","items","pagination"]},"Comparison":{"type":"object","properties":{"coverage":{"type":"array","items":{"$ref":"#/components/schemas/Story"}},"event":{"type":"string"},"pagination":{"$ref":"#/components/schemas/Pagination"},"event_descriptor":{"$ref":"#/components/schemas/Event"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["coverage","event","pagination"]},"Search":{"type":"object","properties":{"events":{"$ref":"#/components/schemas/Events"},"stories":{"$ref":"#/components/schemas/Stories"},"publishers":{"type":"array","items":{"$ref":"#/components/schemas/Source"}},"topics":{"type":"array","items":{"$ref":"#/components/schemas/Topic"}},"warnings":{"type":"array","items":{"type":"string"}}},"required":["events","stories","publishers","topics"]},"Manifest":{"type":"object","properties":{"schema":{"type":"string"},"version":{"type":"string"},"routes":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"policy":{"type":"object"},"limits":{"type":"object"},"warnings":{"type":"array","items":{"type":"string"}}},"required":["schema","version","routes","enabled","policy","limits"]},"OpenAPI":{"type":"object","properties":{"openapi":{"type":"string"},"info":{"type":"object"},"paths":{"type":"object"},"components":{"type":"object"}},"required":["openapi","info","paths","components"]},"SourceRights":{"type":"object","properties":{"terms_review_status":{"enum":["reviewed_allowed","reviewed_restricted","review_required","terms_unknown","suspended"]},"terms_last_reviewed_at":{"type":["string","null"],"format":"date-time"},"terms_review_due_at":{"type":["string","null"],"format":"date-time"},"review_due":{"type":"boolean"},"reviewed_by_role":{"type":["string","null"]},"evidence_checked_at":{"type":["string","null"],"format":"date-time"},"feed_verified_at":{"type":["string","null"],"format":"date-time"},"review_findings":{"type":["string","null"]},"evidence_urls":{"type":"array","items":{"type":"string","format":"uri"}},"terms_url":{"type":["string","null"]},"feed_terms_url":{"type":["string","null"]},"api_use_state":{"type":"string"},"collection_basis":{"type":"string"},"excerpt_policy":{"type":"object"},"image_policy":{"type":"object"},"attribution_required":{"type":"boolean"},"linkback_required":{"type":"boolean"},"access_classification_basis":{"type":"string"},"access_classification_reviewed_at":{"type":["string","null"],"format":"date-time"},"evidence_reference":{"type":["string","null"]},"headline_retention_allowed":{"type":["boolean","null"],"description":"A recorded provider-terms decision for this use. Null means no separate decision recorded; existing feed discovery uses the stated operator model. No downstream licence is granted."},"feed_excerpt_retention_allowed":{"type":["boolean","null"],"description":"A recorded provider-terms decision for this use. Null means no separate decision recorded; existing feed discovery uses the stated operator model. No downstream licence is granted."},"image_url_retention_allowed":{"type":["boolean","null"],"description":"A recorded provider-terms decision for this use. Null means no separate decision recorded; existing feed discovery uses the stated operator model. No downstream licence is granted."},"human_display_allowed":{"type":["boolean","null"],"description":"A recorded provider-terms decision for this use. Null means no separate decision recorded; existing feed discovery uses the stated operator model. No downstream licence is granted."},"public_api_allowed":{"type":["boolean","null"],"description":"A recorded provider-terms decision for this use. Null means no separate decision recorded; existing feed discovery uses the stated operator model. No downstream licence is granted."},"machine_reuse_allowed":{"type":["boolean","null"],"description":"A recorded provider-terms decision for this use. Null means no separate decision recorded; existing feed discovery uses the stated operator model. No downstream licence is granted."}},"required":["terms_review_status","terms_last_reviewed_at","terms_review_due_at","review_due","reviewed_by_role","evidence_checked_at","feed_verified_at","review_findings","evidence_urls","terms_url","feed_terms_url","api_use_state","collection_basis","excerpt_policy","image_policy","attribution_required","linkback_required","access_classification_basis","access_classification_reviewed_at","evidence_reference","headline_retention_allowed","feed_excerpt_retention_allowed","image_url_retention_allowed","human_display_allowed","public_api_allowed","machine_reuse_allowed"],"additionalProperties":false}}}}