Flow R routing decision
Adapter design for discussion; RECEIVED does not confirm paper arrival.
Request schema from OpenAPI
| Field | Type | Required | Constraints | Technical definition |
|---|---|---|---|---|
commandId | string | Yes | {"minLength": 1, "maxLength": 128} | Proposed commandId field. Synthetic identifiers must not contain personal data. |
stationId | string | Yes | {"minLength": 1, "maxLength": 128} | Proposed stationId field. Synthetic identifiers must not contain personal data. |
sheetId | string | Yes | {"minLength": 1, "maxLength": 128} | Proposed sheetId field. Synthetic identifiers must not contain personal data. |
dossierId | string | Yes | {"minLength": 1, "maxLength": 128} | Proposed dossierId field. Synthetic identifiers must not contain personal data. |
trayId | string | Yes | {"minLength": 1, "maxLength": 128} | Proposed trayId field. Synthetic identifiers must not contain personal data. |
targetSheetIndex | integer | Yes | {"minimum": 1} | One-based intended position within the dossier, not capture order. |
decisionVersion | integer | Yes | {"minimum": 1} | Proposed decisionVersion field. Synthetic identifiers must not contain personal data. |
deadline | string | Yes | {"minLength": 1, "format": "date-time"} | Proposed deadline field. Synthetic identifiers must not contain personal data. |
Read the operation and next actions
Errors and next actions
A consistent error envelope guides recovery without disclosing sensitive data.
Read detailsReliability, concurrency and recovery
Retry design follows the side effect rather than repeating every request blindly.
Read detailsAPI Explorer — local simulator
Explore requests/responses and failure scenarios using synthetic data; no backend connection.
Read detailsContract boundary
Adapter design for discussion; RECEIVED does not confirm paper arrival.
Exceptions and reconciliation
After timeout, query state rather than create another transaction/command with an unknown prior outcome. Retain correlation/version/evidence without records or credentials in logs.
HTTP example — proposed contract
Request
POST https://records.example.invalid/v1/device-commands HTTP/1.1
Authorization: Bearer <example-token>
X-Tenant-Id: synthetic-tenant-001
X-Project-Id: synthetic-project-001
X-Correlation-Id: synthetic-correlation-001
Idempotency-Key: synthetic-key-001
Content-Type: application/json
{
"commandId": "synthetic-command-001",
"stationId": "synthetic-station-001",
"sheetId": "synthetic-sheet-001",
"dossierId": "synthetic-dossier-001",
"trayId": "synthetic-tray-001",
"targetSheetIndex": 1,
"decisionVersion": 1,
"deadline": "2026-10-08T00:00:05Z"
}Response · 202
{
"commandId": "synthetic-command-001",
"state": "RECEIVED",
"executionConfirmed": false
}Required fields and shared controls
| Item | Proposed rule |
|---|---|
| scope | devices:command |
| required | commandId, stationId, sheetId, dossierId, trayId, targetSheetIndex, decisionVersion, deadline |
| tenant / project | Token and context must match; headers alone are insufficient. |
| idempotency | POST/PATCH: same key/body returns original result; changed body returns 409; confirm retention window. |
| error | code, message, requestId, correlationId, retryable, details; no sensitive data. |
Continue the workflow
Two journeys, one records lifecycle
Connect paper and born-digital records through persistent identifiers, policies and evidence.
Read detailsIntegration quickstart
Exercise ingest → job tracking → registration → verification with synthetic data.
Read detailsIntegrity, provenance and evidence
Each evidence type answers a different question; hashes, timestamps and approvals are not interchangeable.
Read detailsStart with a verifiable scope.
Agree record classes, quality criteria, permissions and evidence before scaling.
Plan assessment