manifest
index/manifest.json: the entry point. Small, regenerated on every run, and the only thing a
client needs to read to know what exists and how fresh it is.
SELECT schema_version,
freshness.last_successful_run AS last_successful_run
FROM read_json('https://data.quartercall.com/index/manifest.json'); The fields a client reads:
schema_version: refuse a major version you do not recognise; minors are safe to ignore.quarters: every quarter from 2019Q1, newest first. For each:accounts_path, which means readable (how it's organised);statusandupdated_at(quarter status);profiles_missing, the winning filings with no profile row (gotcha 3).submission_countandcu_count: what callbase holds, not what is published. Count the file (gotcha 6).freshness.last_successful_runsays the collector ran;freshness.service_watermarksays how new the newest filing it collected is. Watch both: a collector that runs while NCUA is unreachable stays alive while the data ages.quarters[].quorum: whether enough credit unions have filed the quarter to analyse it, as evidence and as astatusunder each policy inquorum_policies, with the per-filer rows in quorum. Absent for a quarter whose prior quarter is not held. It is as of the lastcallbase curaterun (daily), so a sweep since can have movedcu_countpast it.index: where the submissions index is, how many rows it has, andfirst_seen_from.inventorydescribes the collector, not the data. Itsuniverse.record_countcounts every credit union NCUA has ever held an id for, merged and liquidated ones included: it is not a denominator.
A field that describes something not built yet is omitted, not written as null. Test for a key's presence. The full field contract is §2 of the contract.