Skip to main content

Validate and submit

Dry-run and persistence use the same endpoint. The credential grant determines whether real writes are allowed.

POST ${CFO_BASE_URL}/integrations/facilities/${CFO_FACILITY_ID}/activity-imports
Authorization: Bearer ${CFO_ACCESS_TOKEN}
Idempotency-Key: ${DURABLE_IDEMPOTENCY_KEY}
Content-Type: application/json

The payload includes schema_version, external_batch_id, source_system, retention_id, scope, dry_run, and rows. With dry_run=true, a successful row is expected to be would_create and no business row is created.

Freeze the canonical payload and durable identity before the network call. Dry-run every granted tuple, poll to terminal, and inspect every row. Fix validation errors without changing the meaning of the business identity. Create a separate persistence request only after dry-run success and explicit write approval, then retain its job and correlation IDs for reconciliation.

Persistence creates real data in the selected zone

Recheck zone, facility, reporting period, and planned row count before setting dry_run=false.