Agree the use case
Choose the outcome and control groups before sending data. This determines the minimum fields Command is allowed to receive.
Command developer guide · REST ingestion v1
Your integration sends a narrow, versioned contract of approved facts. Command validates, evaluates, and consolidates them into governed signals without replicating your source system.
Customer onboarding
Business owners define the use case and controls. Customer IT owns extraction and mapping. A Command administrator owns source credentials and production release.
Choose the outcome and control groups before sending data. This determines the minimum fields Command is allowed to receive.
A workspace administrator creates a REST source. Command returns the bearer credential once; store it in your secrets manager.
Transform ERP, CRM, WMS, billing, or service records into the normalized contract. Exclude bodies, attachments, credentials, and full profiles.
POST up to 500 facts with a unique idempotency key. Command validates the entire batch before anything is persisted.
Accepted facts are evaluated by active controls and consolidated. Rejected batches return a precise error without partial ingestion.
Monitor batch status, retry safely, rotate or revoke credentials, and keep customer-side logs that contain no bearer tokens.
Minimal request contract
Unknown fields reject the complete batch. Full records, message bodies, attachments, clinical content, passwords, banking credentials, and connector secrets are outside the ingestion contract.
Validate the field map in the DEV Lab, confirm active control coverage, prove consolidation and ownership, rotate the test credential, and obtain the workspace owner’s release approval.
POST /api/v1/ingestion/batches
Authorization: Bearer tvy_ing_…
Idempotency-Key: erp-20260818-001
Content-Type: application/json
{
"contract_version": "2026-08-01",
"schema_version": "1.0",
"workspace_id": "ws_issued_by_talvify",
"source_system": "oracle_ebs",
"records": [{
"record_id": "INV-10482",
"category": "revenue",
"event_type": "invoice_overdue",
"occurred_at": "2026-08-18T14:30:00Z",
"expected_value": "2026-08-16",
"observed_value": "open",
"organization_ref": "OU-12",
"counterparty_ref": "CUST-884",
"owner_ref": "TEAM-AR",
"status_ref": "OVERDUE",
"evidence_ref": "oracle:invoice:10482"
}]
}Safe delivery
Use one idempotency key for one immutable batch. An identical retry returns the original result; changed content under the same key fails with a conflict.
400Invalid contract or unknown fieldCorrect the mapping; do not retry unchanged content.
401Missing, invalid, or revoked credentialStop the sender and ask a workspace administrator to rotate or replace the credential.
409Idempotency key reused with different contentGenerate a new key only for genuinely new content. Never mutate a previously keyed batch.
429Rate limit reachedRetry with exponential backoff and jitter; preserve the same idempotency key.
5xxTemporary service failureRetry the identical request with backoff. Escalate with the request ID if failures continue.
Governed resolution evidence
Send an explicit resolution event with a fresh provider evidence reference and the exact signal source reference returned by Command. Manual-only policy leaves the signal open, confirmation policy marks resolution detected, and evidence auto-close records a system resolution. A later recurrence reopens the same governed signal.
"record_id": "PAY-10482-RESOLVED",
"category": "revenue",
"event_type": "payment_received",
"occurred_at": "2026-08-24T14:30:00Z",
"status_ref": "paid",
"evidence_ref": "odoo:payment:7781",
"attributes": {
"signal_source_ref": "ingestion:revenue|invoice_overdue|odoo|OU-12|CUST-884|TEAM-AR"
}Who resolves the issue?
Command does not edit the ERP, CRM, WMS, or mailbox record. It explains the governed exception, assigns an accountable owner, and records the outcome. The owner fixes the operational problem in its authoritative system and closes the loop in Command.
See the complete lifecycleNeed an integration review?