{"openapi":"3.1.0","info":{"title":"Codex Reset Self-hosted Public API","version":"1.0.0","description":"本实例公开的 Codex 重置记录，支持本地独立采集与 Did Codex Reset 原站同步两种模式。原站同步时 meta.dataSource 提供同步时间、缓存状态和错误信息；generatedAt 与 lastSuccessfulCheckAt 保留原站时间。独立模式不返回 dataSource，历史初始化数据有来源标记。完整监控状态见 /api/status.json。"},"paths":{"/records/latest":{"get":{"summary":"Get the latest matching reset or schedule record","operationId":"latest_record_records_latest_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"enum":["all","reset_scheduled","reset_completed"],"type":"string","default":"all","title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiResponse_Union_OpenApiRecord__NoneType__"}}}},"422":{"description":"Invalid, unknown or duplicate query parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiErrorBody"}}}},"429":{"description":"Request limit exceeded; respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiErrorBody"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiErrorBody"}}}},"503":{"description":"Rate limiter or published data unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiErrorBody"}}}}}}},"/records":{"get":{"summary":"List reset and schedule records, up to 10 per page","operationId":"list_records_records_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"enum":["all","reset_scheduled","reset_completed"],"type":"string","default":"all","title":"Kind"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"default":10,"title":"Pagesize"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiResponse_OpenApiPage_"}}}},"422":{"description":"Invalid, unknown or duplicate query parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiErrorBody"}}}},"429":{"description":"Request limit exceeded; respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiErrorBody"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiErrorBody"}}}},"503":{"description":"Rate limiter or published data unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiErrorBody"}}}}}}}},"components":{"schemas":{"OpenApiErrorBody":{"properties":{"ok":{"type":"boolean","const":false,"title":"Ok","default":false},"error":{"type":"string","enum":["invalid_query","rate_limited","rate_limit_unavailable","data_unavailable","internal_error","not_found","method_not_allowed"],"title":"Error"},"detail":{"type":"string","title":"Detail"},"retryAfter":{"anyOf":[{"type":"integer","minimum":1},{"type":"null"}],"title":"Retryafter"}},"additionalProperties":false,"type":"object","required":["error","detail"],"title":"OpenApiErrorBody"},"OpenApiMeta":{"properties":{"generatedAt":{"type":"string","title":"Generatedat"},"lastSuccessfulCheckAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lastsuccessfulcheckat"},"dataSource":{"$ref":"#/components/schemas/UpstreamDataSource"}},"additionalProperties":false,"type":"object","required":["generatedAt","lastSuccessfulCheckAt"],"title":"OpenApiMeta"},"UpstreamDataSource":{"type":"object","additionalProperties":false,"description":"仅原站同步模式返回。状态、事件和排期来自本地保存的原站快照；同步失败时保留最后成功的快照。同步时间与原站最近检查时间是不同的时间。","properties":{"type":{"type":"string","enum":["upstream"]},"mode":{"type":"string","enum":["upstream"]},"sourceId":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","format":"uri","description":"原站公开状态接口地址。"},"pageUrl":{"type":"string","format":"uri","description":"原站公开页面地址。"},"syncedAt":{"type":["string","null"],"format":"date-time","description":"最近成功获取或通过条件请求验证快照的时间。"},"lastSyncedAt":{"type":["string","null"],"format":"date-time","description":"syncedAt 的兼容别名。"},"fetchedAt":{"type":["string","null"],"format":"date-time","description":"最近获取快照正文的时间；304 验证不会修改该值。"},"upstreamGeneratedAt":{"type":["string","null"],"format":"date-time"},"status":{"type":"string","enum":["ok","stale","error","pending"],"description":"ok 为缓存新鲜；stale 为已有缓存但同步失败或缓存过期；error 为无可用缓存且同步失败；pending 为等待首次同步。"},"lastError":{"type":["string","null"]},"nextAttemptAt":{"type":["string","null"],"format":"date-time","description":"自动采集发生失败退避时的下次允许尝试时间。"},"intervalMinutes":{"type":"number","minimum":5,"description":"自动同步间隔，单位为分钟。"},"cached":{"type":"boolean","description":"是否有可用的原站快照。"},"translationStatus":{"type":"string","enum":["ok","error","pending"]},"translationError":{"type":["string","null"]}},"required":["type","mode","sourceId","name","url","pageUrl","syncedAt","lastSyncedAt","fetchedAt","upstreamGeneratedAt","status","lastError","nextAttemptAt","intervalMinutes","cached","translationStatus","translationError"],"title":"UpstreamDataSource"},"OpenApiPage":{"properties":{"items":{"items":{"$ref":"#/components/schemas/OpenApiRecord"},"type":"array","title":"Items"},"page":{"type":"integer","title":"Page"},"pageSize":{"type":"integer","title":"Pagesize"},"total":{"type":"integer","title":"Total"},"totalPages":{"type":"integer","title":"Totalpages"},"hasNext":{"type":"boolean","title":"Hasnext"}},"additionalProperties":false,"type":"object","required":["items","page","pageSize","total","totalPages","hasNext"],"title":"OpenApiPage"},"OpenApiRecord":{"properties":{"id":{"type":"string","title":"Id"},"kind":{"type":"string","enum":["reset_scheduled","reset_completed"],"title":"Kind"},"resetType":{"type":"string","enum":["global","banked","global_and_banked"],"title":"Resettype"},"announcedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Announcedat"},"effectiveAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effectiveat"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"confidence":{"anyOf":[{"type":"number","maximum":1,"minimum":0},{"type":"null"}],"title":"Confidence"},"scope":{"anyOf":[{"$ref":"#/components/schemas/OpenApiScope"},{"type":"null"}]},"source":{"$ref":"#/components/schemas/OpenApiSource"},"schedulePrecision":{"anyOf":[{"type":"string","enum":["date","datetime","window"]},{"type":"null"}],"title":"Scheduleprecision"},"scheduleBasis":{"anyOf":[{"type":"string","enum":["explicit","contextual_inference"]},{"type":"null"}],"title":"Schedulebasis"},"scheduleWindow":{"anyOf":[{"$ref":"#/components/schemas/OpenApiScheduleWindow"},{"type":"null"}]},"scheduleState":{"anyOf":[{"type":"string","enum":["pending","elapsed","fulfilled","unknown"]},{"type":"null"}],"title":"Schedulestate"},"completedAt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completedat"},"completionRecordId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completionrecordid"},"fulfillmentOrigin":{"anyOf":[{"type":"string","enum":["auto","link","manual"]},{"type":"null"}],"title":"Fulfillmentorigin"},"relatedRecordIds":{"items":{"type":"string"},"type":"array","title":"Relatedrecordids"}},"additionalProperties":false,"type":"object","required":["id","kind","resetType","announcedAt","effectiveAt","text","confidence","scope","source","schedulePrecision","scheduleBasis","scheduleWindow","scheduleState","completedAt","completionRecordId","fulfillmentOrigin","relatedRecordIds"],"title":"OpenApiRecord"},"OpenApiResponse_OpenApiPage_":{"properties":{"ok":{"type":"boolean","const":true,"title":"Ok","default":true},"data":{"$ref":"#/components/schemas/OpenApiPage"},"meta":{"$ref":"#/components/schemas/OpenApiMeta"}},"additionalProperties":false,"type":"object","required":["data","meta"],"title":"OpenApiResponse[OpenApiPage]"},"OpenApiResponse_Union_OpenApiRecord__NoneType__":{"properties":{"ok":{"type":"boolean","const":true,"title":"Ok","default":true},"data":{"anyOf":[{"$ref":"#/components/schemas/OpenApiRecord"},{"type":"null"}]},"meta":{"$ref":"#/components/schemas/OpenApiMeta"}},"additionalProperties":false,"type":"object","required":["data","meta"],"title":"OpenApiResponse[Union[OpenApiRecord, NoneType]]"},"OpenApiScheduleWindow":{"properties":{"startAt":{"type":"string","title":"Startat"},"endAt":{"type":"string","title":"Endat"}},"additionalProperties":false,"type":"object","required":["startAt","endAt"],"title":"OpenApiScheduleWindow"},"OpenApiScope":{"properties":{"plans":{"items":{"type":"string"},"type":"array","title":"Plans"},"windows":{"items":{"type":"string"},"type":"array","title":"Windows"}},"additionalProperties":false,"type":"object","required":["plans","windows"],"title":"OpenApiScope"},"OpenApiSource":{"properties":{"origin":{"type":"string","enum":["x","operator","rss","github"],"title":"Origin"},"postId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postid"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Handle"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"}},"additionalProperties":false,"type":"object","required":["origin","postId","handle","url"],"title":"OpenApiSource"}}},"servers":[{"url":"/openapi/v1"}]}