GET /meta
Machine-readable truth about the dataset backing every other endpoint.
GET /api/v1/metaExample
Section titled “Example”curl "https://api.mabims.dev/api/v1/meta"const res = await fetch("https://api.mabims.dev/api/v1/meta");const data = await res.json();console.log("Coverage:", data.coverage.first, "→", data.coverage.last);$response = GuzzleHttp\request('GET', 'https://api.mabims.dev/api/v1/meta');$data = json_decode($response->getBody(), true);echo 'Coverage: ' . $data['coverage']['first'] . ' → ' . $data['coverage']['last'] . PHP_EOL;{ "version": "1.8.2", "data_version": "9f2c41aa7b03", "coverage": { "first": "2023-01-23", "last": "2026-12-31" }, "computed_active": false, "computed_months": [], "method": "neo-mabims-multisite", "docs_url": "https://mabims.dev", "hilal_image_range": [1444, 1475], "divergences": [], "table_version": "none"}| Field | Description |
|---|---|
data_version |
Short hash of the MABIMS table, changes when the table is updated |
coverage |
Gregorian range covered by the authoritative table |
computed_active |
true once any request has been served from the computed Neo MABIMS calendar |
computed_months |
Which months have been computed via the Neo MABIMS criteria so far |
method |
Out-of-table computation method (neo-mabims-multisite) |
hilal_image_range |
Inclusive [min, max] Hijri years for which the /hilal/viz + /hilal/map cards are pre-generated; outside it, images are still rendered on demand |
divergences |
Sidang Isbat correction history: each entry is {hijri_month, delta_days}, the corrected month and how many days it shifted. Empty when there has never been one |
table_version |
Version token of the correction history; "none" when there are no corrections, changes whenever one is applied, compare against your stored value to know when to re-fetch |
Recommended client behaviour
Section titled “Recommended client behaviour”- Poll
/metadaily (it is cheap and cacheable for 5 minutes). - If
computed_activeis true, show a subtle notice in your UI. dates may drift ±1 day from official announcements. - Compare
table_versionagainst your stored value; when it changes, readdivergences[]and re-fetch dates in the corrected month. Details: Sidang Isbat Corrections.
Every response also carries an ETag. Send If-None-Match: <etag> and the server answers 304 Not Modified (empty body) when the data has not changed, with the same Cache-Control and ETag headers.
GET /healthz
Section titled “GET /healthz”Liveness probe for uptime monitors.
GET /healthzcurl "https://api.mabims.dev/healthz"const res = await fetch("https://api.mabims.dev/healthz");const data = await res.json();console.log(data.status); // "ok"console.log(data.build_hash); // "a3f8c1e2b4d6f7a8"$response = GuzzleHttp\request('GET', 'https://api.mabims.dev/healthz');$data = json_decode($response->getBody(), true);echo $data['status']; // "ok"echo $data['build_hash']; // "a3f8c1e2b4d6f7a8"{ "status": "ok", "version": "1.8.2", "build_hash": "a3f8c1e2b4d6f7a8"}Returns Cache-Control: public, max-age=10.
