{"openapi":"3.1.0","info":{"title":"Early Church Fathers JSON API","version":"0.1.0","description":"Read-only source passages with citations. No authentication. 60 requests per IP per 60-second fixed window, shared with MCP. Quote source text with its citation; preserve source_type. Search and Scripture results use pages of 20, with up to 1000 results."},"servers":[{"url":"https://earlychurchfathers.ai"}],"security":[],"x-ecf-discovery":{"mcpUrl":"https://mcp.earlychurchfathers.ai/mcp","transport":"streamable-http","tools":["search_passages","get_passage","list_authors","get_work","find_scripture"],"rateLimit":{"requests":60,"windowSeconds":60,"scope":"ip","algorithm":"fixed-window"}},"paths":{"/api/search":{"get":{"operationId":"search","parameters":[{"name":"q","in":"query","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":2,"maxLength":200}},{"name":"author","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":1,"maxLength":180,"pattern":"^[\\w.:-]+$"}},{"name":"era","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","enum":["Apostolic","Ante-Nicene","Nicene","Post-Nicene","Editorial"]}},{"name":"work","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":1,"maxLength":180,"pattern":"^[\\w.:-]+$"}},{"name":"page","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","default":1,"type":"integer","minimum":1,"maximum":50}}],"responses":{"200":{"description":"Source records","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"type":"string"},"total":{"type":"integer","minimum":0,"maximum":1000},"total_is_capped":{"type":"boolean"},"page":{"type":"integer","minimum":1,"maximum":50},"page_size":{"type":"number","const":20},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"work_id":{"type":"string"},"ordinal":{"type":"number"},"title":{"type":"string"},"text":{"type":"string"},"source_type":{"type":"string","enum":["father","editor","translator","unclassified"]},"page_start":{"type":"string"},"page_end":{"type":"string"},"scan_url":{"type":"string"},"source_url":{"type":"string"},"work_title":{"type":"string"},"author_id":{"type":"string"},"author_name":{"type":"string"},"volume_id":{"type":"string"},"volume_title":{"type":"string"},"series":{"type":"string"},"volume_number":{"type":"number"},"citation":{"type":"string"}},"required":["id","work_id","ordinal","title","text","source_type","page_start","page_end","scan_url","source_url","work_title","author_id","author_name","volume_id","volume_title","series","volume_number","citation"],"additionalProperties":false}}},"required":["query","total","total_is_capped","page","page_size","results"],"additionalProperties":false}}}},"400":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"405":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Wait Retry-After seconds.","headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer","const":60}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/authors":{"get":{"operationId":"authors","parameters":[],"responses":{"200":{"description":"Source records","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"authors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"dates":{"type":"string"},"era":{"type":"string","enum":["Apostolic","Ante-Nicene","Nicene","Post-Nicene","Editorial"]},"sort_year":{"type":"number"},"works_count":{"type":"number"}},"required":["id","name","dates","era","sort_year"],"additionalProperties":false}}},"required":["authors"],"additionalProperties":false}}}},"400":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"405":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Wait Retry-After seconds.","headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer","const":60}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/authors/{id}":{"get":{"operationId":"authors_id","parameters":[{"name":"id","in":"path","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":1,"maxLength":180,"pattern":"^[\\w.:-]+$"}}],"responses":{"200":{"description":"Source records","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"dates":{"type":"string"},"era":{"type":"string","enum":["Apostolic","Ante-Nicene","Nicene","Post-Nicene","Editorial"]},"sort_year":{"type":"number"},"works_count":{"type":"number"}},"required":["id","name","dates","era","sort_year"],"additionalProperties":false},"works":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"author_id":{"type":"string"},"volume_id":{"type":"string"},"title":{"type":"string"},"author_name":{"type":"string"},"volume_title":{"type":"string"}},"required":["id","author_id","volume_id","title"],"additionalProperties":false}}},"required":["author","works"],"additionalProperties":false}}}},"400":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"405":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Wait Retry-After seconds.","headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer","const":60}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/works/{id}":{"get":{"operationId":"works_id","parameters":[{"name":"id","in":"path","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":1,"maxLength":180,"pattern":"^[\\w.:-]+$"}}],"responses":{"200":{"description":"Source records","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"work":{"type":"object","properties":{"id":{"type":"string"},"author_id":{"type":"string"},"volume_id":{"type":"string"},"title":{"type":"string"},"author_name":{"type":"string"},"volume_title":{"type":"string"}},"required":["id","author_id","volume_id","title"],"additionalProperties":false},"author":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"dates":{"type":"string"},"era":{"type":"string","enum":["Apostolic","Ante-Nicene","Nicene","Post-Nicene","Editorial"]},"sort_year":{"type":"number"},"works_count":{"type":"number"}},"required":["id","name","dates","era","sort_year"],"additionalProperties":false},"passages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"ordinal":{"type":"number"},"source_type":{"type":"string","enum":["father","editor","translator","unclassified"]},"page_start":{"type":"string"}},"required":["id","title","ordinal","source_type","page_start"],"additionalProperties":false}}},"required":["work","author","passages"],"additionalProperties":false}}}},"400":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"405":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Wait Retry-After seconds.","headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer","const":60}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/passages/{id}":{"get":{"operationId":"passages_id","parameters":[{"name":"id","in":"path","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":1,"maxLength":180,"pattern":"^[\\w.:-]+$"}}],"responses":{"200":{"description":"Source records","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"passage":{"type":"object","properties":{"id":{"type":"string"},"work_id":{"type":"string"},"ordinal":{"type":"number"},"title":{"type":"string"},"text":{"type":"string"},"source_type":{"type":"string","enum":["father","editor","translator","unclassified"]},"page_start":{"type":"string"},"page_end":{"type":"string"},"scan_url":{"type":"string"},"source_url":{"type":"string"},"work_title":{"type":"string"},"author_id":{"type":"string"},"author_name":{"type":"string"},"volume_id":{"type":"string"},"volume_title":{"type":"string"},"series":{"type":"string"},"volume_number":{"type":"number"},"citation":{"type":"string"}},"required":["id","work_id","ordinal","title","text","source_type","page_start","page_end","scan_url","source_url","work_title","author_id","author_name","volume_id","volume_title","series","volume_number","citation"],"additionalProperties":false},"footnotes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"passage_id":{"type":"string"},"ordinal":{"type":"number"},"marker":{"type":"string"},"text":{"type":"string"},"source_type":{"type":"string","enum":["father","editor","translator","unclassified"]}},"required":["id","passage_id","ordinal","marker","text","source_type"],"additionalProperties":false}},"references":{"type":"array","items":{"type":"object","properties":{"reference":{"type":"string"},"source_type":{"type":"string","enum":["father","editor","translator","unclassified"]},"footnote_id":{"type":["string","null"]}},"required":["reference","source_type","footnote_id"],"additionalProperties":false}},"pages":{"type":"array","items":{"type":"object","properties":{"page":{"type":"string"},"scan_url":{"type":"string"},"status":{"type":"string","enum":["pending","matched","mismatch"]},"score":{"type":["number","null"]},"comparison_url":{"type":"string"},"comparison_page":{"type":"string"}},"required":["page","scan_url","status","score","comparison_url","comparison_page"],"additionalProperties":false}},"previous":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"}},"required":["id","title"],"additionalProperties":false},{"type":"null"}]},"next":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"}},"required":["id","title"],"additionalProperties":false},{"type":"null"}]}},"required":["passage","footnotes","references","pages","previous","next"],"additionalProperties":false}}}},"400":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"405":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Wait Retry-After seconds.","headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer","const":60}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/scripture/{reference}":{"get":{"operationId":"scripture_reference","parameters":[{"name":"reference","in":"path","required":true,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":3,"maxLength":80}},{"name":"page","in":"query","required":false,"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","default":1,"type":"integer","minimum":1,"maximum":50}}],"responses":{"200":{"description":"Source records","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"reference":{"type":"string"},"total":{"type":"integer","minimum":0,"maximum":1000},"total_is_capped":{"type":"boolean"},"page":{"type":"integer","minimum":1,"maximum":50},"page_size":{"type":"number","const":20},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"work_id":{"type":"string"},"ordinal":{"type":"number"},"title":{"type":"string"},"text":{"type":"string"},"source_type":{"type":"string","enum":["father","editor","translator","unclassified"]},"page_start":{"type":"string"},"page_end":{"type":"string"},"scan_url":{"type":"string"},"source_url":{"type":"string"},"work_title":{"type":"string"},"author_id":{"type":"string"},"author_name":{"type":"string"},"volume_id":{"type":"string"},"volume_title":{"type":"string"},"series":{"type":"string"},"volume_number":{"type":"number"},"citation":{"type":"string"},"references":{"type":"array","items":{"type":"object","properties":{"reference":{"type":"string"},"source_type":{"type":"string","enum":["father","editor","translator","unclassified"]},"footnote_id":{"type":["string","null"]}},"required":["reference","source_type","footnote_id"],"additionalProperties":false}}},"required":["id","work_id","ordinal","title","text","source_type","page_start","page_end","scan_url","source_url","work_title","author_id","author_name","volume_id","volume_title","series","volume_number","citation","references"],"additionalProperties":false}}},"required":["reference","total","total_is_capped","page","page_size","results"],"additionalProperties":false}}}},"400":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"405":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Wait Retry-After seconds.","headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer","const":60}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/volumes":{"get":{"operationId":"volumes","parameters":[],"responses":{"200":{"description":"Source records","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"volumes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"series":{"type":"string"},"number":{"type":"number"},"title":{"type":"string"},"text_url":{"type":"string"},"scan_url":{"type":"string"},"status":{"type":"string","enum":["pending","partial","verified","failed"]},"passage_count":{"type":"number"},"pages_checked":{"type":"number"},"pages_total":{"type":"number"},"match_rate":{"type":["number","null"]},"verification_note":{"type":"string"},"comparison_url":{"type":"string"}},"required":["id","series","number","title","text_url","scan_url","status","passage_count","pages_checked","pages_total","match_rate","verification_note","comparison_url"],"additionalProperties":false}}},"required":["volumes"],"additionalProperties":false}}}},"400":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"405":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Wait Retry-After seconds.","headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer","const":60}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/api/health":{"get":{"operationId":"health","parameters":[],"responses":{"200":{"description":"Source records","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"status":{"type":"string","enum":["ready","empty"]},"volumes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"passages":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["status","volumes","passages"],"additionalProperties":false}}}},"400":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"405":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Wait Retry-After seconds.","headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer","const":60}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"500":{"description":"Request error; read error.message for the next step.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}}}}