{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/ibanforge/main/json-schema/ibanforge-health-response-schema.json", "title": "HealthResponse", "x-generated": "2026-09-25", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/ibanforge-free-api-openapi.yml#/components/schemas/HealthResponse", "type": "object", "required": [ "status", "version", "uptime_seconds", "bic_database_entries" ], "properties": { "status": { "type": "string", "enum": [ "ok" ] }, "version": { "type": "string" }, "served_at": { "type": "string", "format": "date-time", "description": "When this answer left the server, ISO 8601 in UTC, to the second. Added on 24/09/2026: a copy of this endpoint quoted from an index or a cache now carries its own date." }, "uptime_seconds": { "type": "number" }, "bic_database_entries": { "type": "integer", "description": "Number of BIC entries currently loaded: GLEIF and national registers are refreshed monthly; the SwiftCodes rows are a public copy of the SWIFT directory frozen in January 2018, re-imported unchanged. Each source's own data date is its source_as_of in bic_sources." }, "bic_data_last_updated": { "type": "string", "description": "Last update timestamp of BIC data" }, "bic_sources": { "type": "array", "description": "Per-source freshness of the BIC directory. last_updated dates the IMPORT; source_as_of dates the upstream DATA where the two differ (a frozen public copy), null when no gap has been established. stale is true when the import is overdue or the source itself is frozen, and stale_reason says which.", "items": { "type": "object", "required": [ "source", "entries", "last_updated", "source_as_of", "stale", "stale_reason" ], "properties": { "source": { "type": "string" }, "entries": { "type": "integer" }, "last_updated": { "type": [ "string", "null" ] }, "source_as_of": { "type": [ "string", "null" ] }, "stale": { "type": "boolean" }, "stale_reason": { "type": [ "string", "null" ], "enum": [ "import_overdue", "source_frozen", null ] } } } }, "frozen_bic_sources": { "type": "array", "description": "One entry per frozen source (the ones bic_sources dates with a source_as_of): its rows and BIC8, and how many of them no source refreshed this cycle still carries (GLEIF and the other directory sources without a vintage, the national registers, the EPC scheme registers). Recomputed at each deployment. When a trace source could not be read in full, complete is false and the two *_without_current_trace counts are null rather than guessed; that is the case today, because the EBA STEP2 and NBP lists are only read through our deduplicated directory. An empty array means the figures could not be computed; it never turns this endpoint red.", "items": { "type": "object", "required": [ "source", "source_as_of", "rows", "bic8", "rows_without_current_trace", "bic8_without_current_trace", "complete" ], "properties": { "source": { "type": "string" }, "source_as_of": { "type": "string", "description": "Year-month the source DATA is from." }, "rows": { "type": "integer" }, "bic8": { "type": "integer" }, "rows_without_current_trace": { "type": [ "integer", "null" ] }, "bic8_without_current_trace": { "type": [ "integer", "null" ] }, "complete": { "type": "boolean" } } } } } }