Quarter status
No quarter is ever final: NCUA accepts an amendment to a quarter of any age. The manifest's quarters[].status says how likely each quarter's files are to change:
SELECT q.quarter, q.status, q.updated_at
FROM (SELECT unnest(quarters) AS q FROM read_json('https://data.quartercall.com/index/manifest.json'))
ORDER BY q.quarter DESC; open: filings are still arriving and the files may change between runs.dormant: NCUA has validated no filing for the quarter in more than a year. Its files change only if a late amendment arrives, and that makes itopenagain.- Anything else: treat it as
open. New values may be added.
updated_at is when the quarter's files were last built. It moves when a filing arrived, when
the collector's code changed, or on the weekly rebuild, and says the files may have changed, not
that they did. For what did change, ask the index for submissions.first_seen (what changed since).
Caching. A quarter's file is overwritten in place when it is rebuilt. profiles and the index
carry no build timestamp, so an unchanged quarter's file is byte-identical from run to run and its ETag holds. accounts and accounts_text each carry ingested_at (accounts.ingested_at, accounts_text.ingested_at), so the weekly rebuild gives them a new ETag with identical rows.
Reading one file in several requests. A Parquet reader fetches the footer and then row groups.
If a rebuild lands between them, the pieces come from two files. Send If-Match with the ETag of
the first response: if the file has been rebuilt since, the host answers 412 rather than serving
part of the new file, and the read can start again.