{"openapi":"3.1.0","info":{"title":"San Antonio Missing Children Records API","version":"1.0.0","summary":"What the public records count about missing children in Texas, Bexar County and San Antonio. None of them is a count of missing children.","description":"Read-only, CORS-enabled, cached JSON over the public records that come closest to counting missing children in San Antonio: Texas DPS missing person entries for every county since 2020, the Texas DFPS report on children missing from state care, the FBI national missing person file, and San Antonio police calls and offenses.\n\nNo public record counts missing children, and nothing here claims to. Every figure names its unit: DPS counts record entries (a child reported three times is three entries), DFPS counts children in state care and their missing episodes, and the police count calls that mix adults and children. `\/quality` returns `count_of_missing_children: null` deliberately, and every response carries a header saying so.\n\nNothing here identifies a child. There is no route that takes a county, a place, a year or a name. Counties are served alphabetically, and no rate is offered, because the DPS report does not say which county an entry is filed under.\n\nIf a child is missing now, call 911. BrandShyp is not an agency and cannot receive or forward a tip.","contact":{"name":"BrandShyp","url":"https:\/\/brandshyp.org\/contact-us\/"},"license":{"name":"Public records compiled by BrandShyp; no license is asserted for the underlying records","url":"https:\/\/brandshyp.org\/san-antonio-missing-children\/"}},"externalDocs":{"description":"Human documentation, with the county map and every caveat in context","url":"https:\/\/brandshyp.org\/san-antonio-missing-children\/"},"servers":[{"url":"https:\/\/brandshyp.org\/api\/v1\/missing-children-records"}],"security":[],"tags":[{"name":"records","description":"The figures, each with its unit"},{"name":"meta","description":"Discovery and data quality"}],"paths":{"\/":{"get":{"tags":["meta"],"summary":"Discovery document, with the refusals","operationId":"getRoot","responses":{"200":{"description":"Endpoint list and what this API will not serve","content":{"application\/json":{"schema":{"type":"object","required":["unit_warning","caveats","sources"],"properties":{"unit_warning":{"type":"string"},"caveats":{"$ref":"#\/components\/schemas\/Caveats"},"sources":{"type":"array","items":{"type":"object"}}}}}}},"405":{"description":"Method not allowed. This API is read-only (GET).","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"503":{"description":"Records temporarily unavailable.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}}}}},"\/records":{"get":{"tags":["records"],"summary":"Every figure except the county table","description":"Texas DPS entries for Bexar County and statewide by year, the DFPS state care report, the FBI national file, SAPD calls and offenses by year, and the status of the Sheriff series.","operationId":"getRecords","responses":{"200":{"description":"The records, each with its unit","content":{"application\/json":{"schema":{"type":"object","required":["unit_warning","caveats","sources"],"properties":{"unit_warning":{"type":"string"},"caveats":{"$ref":"#\/components\/schemas\/Caveats"},"sources":{"type":"array","items":{"type":"object"}}}}}}},"405":{"description":"Method not allowed. This API is read-only (GET).","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"503":{"description":"Records temporarily unavailable.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}}}}},"\/counties":{"get":{"tags":["records"],"summary":"Juvenile and adult entries for every Texas county, by year","description":"All 254 counties, alphabetically, with the per-year reconciliation against the statewide totals the reports print and any county-year flagged as out of line with its own series. Record entries, not children.","operationId":"getCounties","responses":{"200":{"description":"County table","content":{"application\/json":{"schema":{"type":"object","required":["unit_warning","caveats","sources"],"properties":{"unit_warning":{"type":"string"},"caveats":{"$ref":"#\/components\/schemas\/Caveats"},"sources":{"type":"array","items":{"type":"object"}}}}}}},"405":{"description":"Method not allowed. This API is read-only (GET).","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"503":{"description":"Records temporarily unavailable.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}}}}},"\/quality":{"get":{"tags":["meta"],"summary":"What these records cannot tell you","description":"Returns count_of_missing_children, children_found, response_time, per_child_records and rate as null, deliberately, each with the reason.","operationId":"getQuality","responses":{"200":{"description":"Data quality statement","content":{"application\/json":{"schema":{"type":"object","required":["unit_warning","caveats","sources"],"properties":{"unit_warning":{"type":"string"},"caveats":{"$ref":"#\/components\/schemas\/Caveats"},"sources":{"type":"array","items":{"type":"object"}}}}}}},"405":{"description":"Method not allowed. This API is read-only (GET).","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"503":{"description":"Records temporarily unavailable.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}}}}},"\/records.csv":{"get":{"tags":["records"],"summary":"The records as CSV, one row per figure with its unit","operationId":"getRecordsCsv","responses":{"200":{"description":"CSV","content":{"text\/csv":{"schema":{"type":"string"}}}},"405":{"description":"Method not allowed. This API is read-only (GET).","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"503":{"description":"Records temporarily unavailable.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}}}}},"\/counties.csv":{"get":{"tags":["records"],"summary":"Every county and year as CSV","operationId":"getCountiesCsv","responses":{"200":{"description":"CSV","content":{"text\/csv":{"schema":{"type":"string"}}}},"405":{"description":"Method not allowed. This API is read-only (GET).","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"503":{"description":"Records temporarily unavailable.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}}}}},"\/openapi.json":{"get":{"tags":["meta"],"summary":"This document","operationId":"getOpenapi","responses":{"200":{"description":"OpenAPI 3.1 description of this API","content":{"application\/json":{"schema":{"type":"object","required":["unit_warning","caveats","sources"],"properties":{"unit_warning":{"type":"string"},"caveats":{"$ref":"#\/components\/schemas\/Caveats"},"sources":{"type":"array","items":{"type":"object"}}}}}}},"405":{"description":"Method not allowed. This API is read-only (GET).","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}},"503":{"description":"Records temporarily unavailable.","content":{"application\/json":{"schema":{"$ref":"#\/components\/schemas\/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","required":["error","status"],"properties":{"error":{"type":"string"},"status":{"type":"integer"}}},"Caveats":{"type":"array","description":"The conditions under which these numbers mean anything. Present on every successful JSON response.","items":{"type":"string"}}}}}