{"components":{"schemas":{"Catalog":{"additionalProperties":false,"properties":{"dataset_id":{"type":"string"},"papers":{"items":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"annotations":{"items":{"additionalProperties":false,"properties":{"kind":{"enum":["source-finding","foundation-interpretation","model-proposal"]},"license":{"type":["string","null"]},"locator":{"minLength":1,"type":"string"},"review_date":{"format":"date","type":"string"},"review_scope":{"enum":["screening","abstract","targeted-full-text","comprehensive-full-text"]},"text":{"minLength":1,"type":"string"}},"required":["kind","text","locator","review_scope","review_date","license"],"type":"object"},"type":"array"},"authors":{"items":{"type":"string"},"minItems":1,"type":["array","null"]},"category":{"minLength":1,"type":"string"},"citation":{"minLength":1,"type":"string"},"constructs":{"items":{"type":"string"},"type":"array","uniqueItems":true},"doi":{"type":["string","null"]},"id":{"pattern":"^P[0-9]{3,}$","type":"string"},"method_description":{"type":["string","null"]},"review":{"additionalProperties":false,"properties":{"annotation_status":{"enum":["not-recorded","reviewed"]},"date":{"format":"date","type":["string","null"]},"reading_depth":{"enum":["not-recorded","screening","abstract","targeted-full-text","comprehensive-full-text"]},"scope":{"type":["string","null"]}},"required":["reading_depth","scope","date","annotation_status"],"type":"object"},"rights":{"additionalProperties":false,"properties":{"annotation_license":{"type":["string","null"]},"metadata_license":{"type":["string","null"]},"paper_file_license":{"type":"null"},"paper_file_status":{"const":"not-hosted"}},"required":["metadata_license","annotation_license","paper_file_status","paper_file_license"],"type":"object"},"source":{"additionalProperties":false,"properties":{"url":{"format":"uri","pattern":"^https://","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["url","version"],"type":"object"},"title":{"minLength":1,"type":"string"},"year":{"maximum":2200,"minimum":1500,"type":["integer","null"]}},"required":["id","title","citation","doi","authors","year","category","constructs","method_description","annotations","review","source","rights"],"title":"Public paper v1.0.0","type":"object"},"type":"array"},"record_count":{"minimum":0,"type":"integer"},"schema_version":{"const":"1.0.0"},"vocabulary_version":{"type":"string"}},"required":["dataset_id","schema_version","vocabulary_version","record_count","papers"],"type":"object"},"Descriptor":{"additionalProperties":false,"properties":{"catalog_url":{"pattern":"^/api/v1/releases/[a-f0-9]{64}/catalog\\.json$","type":"string"},"dataset_id":{"type":"string"},"manifest_url":{"pattern":"^/api/v1/releases/[a-f0-9]{64}/manifest\\.json$","type":"string"},"release_date":{"format":"date","type":"string"},"release_id":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":"1.0.0"}},"required":["dataset_id","schema_version","release_id","release_date","manifest_url","catalog_url"],"type":"object"},"Manifest":{"additionalProperties":false,"properties":{"attribution":{"type":"string"},"dataset_id":{"type":"string"},"files":{"items":{"additionalProperties":false,"properties":{"bytes":{"minimum":0,"type":"integer"},"path":{"pattern":"^(catalog\\.json|papers/P[0-9]{3,}\\.json)$","type":"string"},"sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"}},"required":["path","bytes","sha256"],"type":"object"},"type":"array"},"licenses":{"additionalProperties":false,"properties":{"annotations":{"items":{"type":"string"},"type":"array"},"metadata":{"items":{"type":"string"},"type":"array"}},"required":["metadata","annotations"],"type":"object"},"publication_state":{"enum":["preview","prepared"]},"release_date":{"format":"date","type":"string"},"release_id":{"pattern":"^[a-f0-9]{64}$","type":"string"},"schema_version":{"const":"1.0.0"}},"required":["dataset_id","schema_version","release_id","release_date","publication_state","attribution","files","licenses"],"type":"object"},"Notices":{"additionalProperties":false,"properties":{"dataset_id":{"type":"string"},"notices":{"items":{"additionalProperties":false,"properties":{"date":{"format":"date","type":"string"},"kind":{"enum":["correction","withdrawal"]},"paper_id":{"pattern":"^P[0-9]{3,}$","type":"string"},"reason":{"type":"string"},"release_ids":{"items":{"pattern":"^[a-f0-9]{64}$","type":"string"},"type":"array"}},"required":["kind","paper_id","release_ids","date","reason"],"type":"object"},"type":"array"}},"required":["dataset_id","notices"],"type":"object"},"Paper":{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"annotations":{"items":{"additionalProperties":false,"properties":{"kind":{"enum":["source-finding","foundation-interpretation","model-proposal"]},"license":{"type":["string","null"]},"locator":{"minLength":1,"type":"string"},"review_date":{"format":"date","type":"string"},"review_scope":{"enum":["screening","abstract","targeted-full-text","comprehensive-full-text"]},"text":{"minLength":1,"type":"string"}},"required":["kind","text","locator","review_scope","review_date","license"],"type":"object"},"type":"array"},"authors":{"items":{"type":"string"},"minItems":1,"type":["array","null"]},"category":{"minLength":1,"type":"string"},"citation":{"minLength":1,"type":"string"},"constructs":{"items":{"type":"string"},"type":"array","uniqueItems":true},"doi":{"type":["string","null"]},"id":{"pattern":"^P[0-9]{3,}$","type":"string"},"method_description":{"type":["string","null"]},"review":{"additionalProperties":false,"properties":{"annotation_status":{"enum":["not-recorded","reviewed"]},"date":{"format":"date","type":["string","null"]},"reading_depth":{"enum":["not-recorded","screening","abstract","targeted-full-text","comprehensive-full-text"]},"scope":{"type":["string","null"]}},"required":["reading_depth","scope","date","annotation_status"],"type":"object"},"rights":{"additionalProperties":false,"properties":{"annotation_license":{"type":["string","null"]},"metadata_license":{"type":["string","null"]},"paper_file_license":{"type":"null"},"paper_file_status":{"const":"not-hosted"}},"required":["metadata_license","annotation_license","paper_file_status","paper_file_license"],"type":"object"},"source":{"additionalProperties":false,"properties":{"url":{"format":"uri","pattern":"^https://","type":"string"},"version":{"minLength":1,"type":"string"}},"required":["url","version"],"type":"object"},"title":{"minLength":1,"type":"string"},"year":{"maximum":2200,"minimum":1500,"type":["integer","null"]}},"required":["id","title","citation","doi","authors","year","category","constructs","method_description","annotations","review","source","rights"],"title":"Public paper v1.0.0","type":"object"},"Problem":{"additionalProperties":false,"properties":{"status":{"maximum":599,"minimum":400,"type":"integer"},"title":{"type":"string"},"type":{"type":"string"}},"required":["type","title","status"],"type":"object"}}},"info":{"description":"Static collection API. No query parameters, server-side search or pagination. This contract requires qualified production HTTP verification; a preview is not live acceptance.","title":"Functional Empathy Research API","version":"1.0.0"},"openapi":"3.1.2","paths":{"/api/v1/current.json":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Descriptor"}}},"description":"Mutable descriptor; no-store, no validators."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"405":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."}},"summary":"Mutable descriptor; no-store, no validators."},"head":{"responses":{"200":{"description":"Headers only."},"400":{"description":"Corresponding API error status; no body."},"404":{"description":"Corresponding API error status; no body."},"405":{"description":"Corresponding API error status; no body."},"410":{"description":"Corresponding API error status; no body."}},"summary":"Same status and headers as GET; no response body."},"options":{"responses":{"204":{"description":"Access-Control-Allow-Origin: *; no cookies or credentials."}},"summary":"Public CORS; GET, HEAD, OPTIONS, no credentials."},"parameters":[]},"/api/v1/notices.json":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Notices"}}},"description":"Mutable public notices; no-store, no validators."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"405":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."}},"summary":"Mutable public notices; no-store, no validators."},"head":{"responses":{"200":{"description":"Headers only."},"400":{"description":"Corresponding API error status; no body."},"404":{"description":"Corresponding API error status; no body."},"405":{"description":"Corresponding API error status; no body."},"410":{"description":"Corresponding API error status; no body."}},"summary":"Same status and headers as GET; no response body."},"options":{"responses":{"204":{"description":"Access-Control-Allow-Origin: *; no cookies or credentials."}},"summary":"Public CORS; GET, HEAD, OPTIONS, no credentials."},"parameters":[]},"/api/v1/openapi.json":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"This OpenAPI 3.1.2 description."},"304":{"description":"Conditional retrieval for eligible fixed resources only."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"405":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."}},"summary":"This OpenAPI 3.1.2 description."},"head":{"responses":{"200":{"description":"Headers only."},"400":{"description":"Corresponding API error status; no body."},"404":{"description":"Corresponding API error status; no body."},"405":{"description":"Corresponding API error status; no body."},"410":{"description":"Corresponding API error status; no body."}},"summary":"Same status and headers as GET; no response body."},"options":{"responses":{"204":{"description":"Access-Control-Allow-Origin: *; no cookies or credentials."}},"summary":"Public CORS; GET, HEAD, OPTIONS, no credentials."},"parameters":[]},"/api/v1/releases/{release_id}/catalog.json":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Catalog"}}},"description":"Complete approved catalog in stable paper-ID order."},"304":{"description":"Conditional retrieval for eligible fixed resources only."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"405":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."}},"summary":"Complete approved catalog in stable paper-ID order."},"head":{"responses":{"200":{"description":"Headers only."},"400":{"description":"Corresponding API error status; no body."},"404":{"description":"Corresponding API error status; no body."},"405":{"description":"Corresponding API error status; no body."},"410":{"description":"Corresponding API error status; no body."}},"summary":"Same status and headers as GET; no response body."},"options":{"responses":{"204":{"description":"Access-Control-Allow-Origin: *; no cookies or credentials."}},"summary":"Public CORS; GET, HEAD, OPTIONS, no credentials."},"parameters":[{"in":"path","name":"release_id","required":true,"schema":{"pattern":"^[a-f0-9]{64}$","type":"string"}}]},"/api/v1/releases/{release_id}/manifest.json":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Manifest"}}},"description":"Inventory and fixed release citation."},"304":{"description":"Conditional retrieval for eligible fixed resources only."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"405":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."}},"summary":"Inventory and fixed release citation."},"head":{"responses":{"200":{"description":"Headers only."},"400":{"description":"Corresponding API error status; no body."},"404":{"description":"Corresponding API error status; no body."},"405":{"description":"Corresponding API error status; no body."},"410":{"description":"Corresponding API error status; no body."}},"summary":"Same status and headers as GET; no response body."},"options":{"responses":{"204":{"description":"Access-Control-Allow-Origin: *; no cookies or credentials."}},"summary":"Public CORS; GET, HEAD, OPTIONS, no credentials."},"parameters":[{"in":"path","name":"release_id","required":true,"schema":{"pattern":"^[a-f0-9]{64}$","type":"string"}}]},"/api/v1/releases/{release_id}/papers/{paper_id}.json":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Paper"}}},"description":"One record, identical to its catalog representation."},"304":{"description":"Conditional retrieval for eligible fixed resources only."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"405":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."},"410":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bounded API error; no internal paths or traces."}},"summary":"One record, identical to its catalog representation."},"head":{"responses":{"200":{"description":"Headers only."},"400":{"description":"Corresponding API error status; no body."},"404":{"description":"Corresponding API error status; no body."},"405":{"description":"Corresponding API error status; no body."},"410":{"description":"Corresponding API error status; no body."}},"summary":"Same status and headers as GET; no response body."},"options":{"responses":{"204":{"description":"Access-Control-Allow-Origin: *; no cookies or credentials."}},"summary":"Public CORS; GET, HEAD, OPTIONS, no credentials."},"parameters":[{"in":"path","name":"release_id","required":true,"schema":{"pattern":"^[a-f0-9]{64}$","type":"string"}},{"in":"path","name":"paper_id","required":true,"schema":{"pattern":"^P[0-9]{3,}$","type":"string"}}]}}}
