{"openapi":"3.1.0","info":{"title":"SCHot Public API","version":"1.0.0","description":"Stable anonymous, read-only API for clients and Agents. No API key is required. Technical access does not grant permission for every use: personal non-commercial, public-interest non-commercial, and organization-internal use are free; any external commercial product, paid service, client deliverable, proxy, resale, public mirror, bulk public redistribution, or external model product requires prior written authorization. Terms: /terms.","termsOfService":"/terms","contact":{"name":"个人","email":"we1912@qq.com"},"license":{"name":"SCHot Public Usage Rules","url":"/terms"}},"servers":[{"url":"/"}],"paths":{"/api/v1/items":{"get":{"operationId":"items","summary":"List recent public supply-chain items","description":"Covers the last 7 days only. Send If-None-Match and get a 304 when nothing changed. Use snapshot + changes to maintain a complete copy of the selected set.","parameters":[{"name":"mode","in":"query","schema":{"type":"string","enum":["selected","all"],"default":"selected"}},{"name":"category","in":"query","schema":{"type":"string","enum":["policy","industry","enterprise","technology","capital","logistics","research","event"]}},{"name":"window","in":"query","schema":{"type":"string","enum":["24h","7d"],"default":"7d"}},{"name":"by","in":"query","schema":{"type":"string","enum":["timeline","published"],"default":"timeline"}},{"name":"q","in":"query","schema":{"type":"string","minLength":2,"maxLength":200}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"Opaque keyset cursor; do not parse or persist across days"}],"responses":{"200":{"description":"OK","headers":{"ETag":{"schema":{"type":"string"}},"Cache-Control":{"schema":{"type":"string"}}}},"304":{"description":"Not Modified"},"400":{"description":"Machine-readable problem response."},"429":{"description":"Rate limited; honour Retry-After."},"503":{"description":"Service degraded."}}}},"/api/v1/hot-topics":{"get":{"operationId":"hotTopics","summary":"Current hot topics and story rankings","description":"Top 10 stories by heat. Ranks start at 1. Raw heat values are not returned.","responses":{"200":{"description":"OK"},"304":{"description":"Not Modified"}}}},"/api/v1/stories/{publicId}":{"get":{"operationId":"story","summary":"Story timeline, AI digest and related stories","parameters":[{"name":"publicId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"404":{"description":"Not found"}}}},"/api/v1/event-alerts":{"get":{"operationId":"eventAlerts","summary":"Supply-chain risk event alerts","description":"Current alert snapshot with risk level, scope, severity and probability. Poll every 5 minutes with If-None-Match.","responses":{"200":{"description":"OK"},"304":{"description":"Not Modified"}}}},"/api/v1/dailies":{"get":{"operationId":"dailies","summary":"Daily report date index","responses":{"200":{"description":"OK"}}}},"/api/v1/dailies/latest":{"get":{"operationId":"dailyLatest","summary":"Latest daily report","responses":{"200":{"description":"OK"},"404":{"description":"No daily yet"}}}},"/api/v1/dailies/{date}":{"get":{"operationId":"dailyByDate","summary":"Daily report for a date (YYYY-MM-DD, Asia/Shanghai)","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}}],"responses":{"200":{"description":"OK"},"404":{"description":"Not found"}}}},"/api/v1/selected/snapshot":{"get":{"operationId":"selectedSnapshot","summary":"Full snapshot of the current selected set (paginated)","description":"First bootstrap; limit default 500 max 1000; fields=minimal|full. Save the response cursor for changes.","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}},{"name":"page","in":"query","schema":{"type":"integer","minimum":0,"default":0}},{"name":"fields","in":"query","schema":{"type":"string","enum":["minimal","full"],"default":"full"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid parameters"}}}},"/api/v1/selected/changes":{"get":{"operationId":"selectedChanges","summary":"Incremental changes to the selected set","description":"Returns added/updated/removed since cursor. Cursor never expires on a timer; a stale cursor returns 409 snapshot_required.","parameters":[{"name":"cursor","in":"query","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid cursor"},"409":{"description":"snapshot_required — re-bootstrap"}}}},"/api/v1/sources":{"get":{"operationId":"sources","summary":"Public read-only source map","responses":{"200":{"description":"OK"}}}},"/api/v1/meta":{"get":{"operationId":"meta","summary":"Version, windows, categories and cache hints","responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Problem":{"type":"object","required":["type","status","code","message","requestId"],"properties":{"type":{"type":"string"},"status":{"type":"integer"},"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"helpUrl":{"type":"string"}}},"Item":{"type":"object","required":["id","title","summary","source","links","publishedAt","discoveredAt","category","score","selected","attribution"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"originalTitle":{"type":"string","nullable":true},"summary":{"type":"string"},"reason":{"type":"string","nullable":true},"source":{"type":"object","properties":{"name":{"type":"string"}}},"links":{"type":"object","properties":{"aihot":{"type":"string"},"original":{"type":"string"}}},"publishedAt":{"type":"string","format":"date-time"},"discoveredAt":{"type":"string","format":"date-time"},"category":{"type":"string"},"score":{"type":"integer","minimum":0,"maximum":100},"selected":{"type":"boolean"},"attribution":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}}}}}}}}