OptionalerrorA human-readable reason, present when status is failed (e.g. bad CSV contract,
mixed timestamp units, a .zip with no file inside or more than one). Durably
recorded alongside the failure itself, so it stays available however long after the
fact you poll — not tied to how recently the failure happened.
OptionaljobThe ingest job id, while status is ingesting.
uploading — the file was PUT to the presigned URL, but finalize has not been
called yet.ingesting — finalize was called; the worker is parsing and validating the file.ready — ingested successfully. version carries the result.failed — ingest rejected the file (e.g. bad CSV contract, mixed timestamp units, a
.zip with no file inside or more than one).OptionalversionPresent when status is ready or failed.
Progress of one upload, from staged through ingest. Durably recorded once a version exists, so
ready/failedare permanent answers;uploading/ingestingreflect in-flight state that can itself age out — see the404case onGET .../uploads/{uploadId}.