Validation and the data mart
Where extracted data lives before and after you sign off on it.
An extraction produces data points into a validation area: editable, reviewable, not yet final. Promotion copies what you accept into the data mart, the finalized output. Nothing reaches the data mart without an explicit promote.
Reading and editing validation data
GET /extractions/{id}/validation returns the project's validation data points — grouped JSON by default, or ?format=xlsx|csv for a spreadsheet or zipped per-group CSVs. Narrow with ?documentIds= and ?dataGroupIds=.
Correct a value with PATCH /extractions/{id}/validation/data-points/{dataPointId}, or several at once with PATCH /extractions/{id}/validation/data-points. Every edit is recorded; GET /extractions/{id}/validation/data-points/{dataPointId}/history returns the change history. GET /extractions/{id}/validation/statuses reports where each document-and-data-group pair stands.
Promoting
POST /extractions/{id}/promote takes one selector:
{ all: true }— the whole project{ documentIds: [...] }— every data group of those documents{ documentDataGroups: [{ documentId, dataGroupId }] }— explicit pairs
Supply more than one and they are not combined: all wins over documentDataGroups, which wins over documentIds, and the rest are silently ignored. Each promoted pair is copied into the data mart and its validation status becomes completed; explicit pairs that are not in the project come back as not_found.
Reading the data mart
GET /extractions/{id}/data-mart mirrors the validation export — same formats, same filters — over the promoted data. This is the surface a downstream system should read from.