Functional acknowledgement
nutrab2b.control.acknowledged.v2 · Control
- Purpose
- Machine acknowledgement of every business event: received, accepted (with warnings) or rejected with error codes and paths.
- When to send
- Every inbound event (within 60 s for real-time partners).
- Sender → receiver
- Receiver of any event → Original sender
- Expected responses
- none
- Equivalent standards
- X12: 997 / 999 · EDIFACT: CONTRL / APERAK
- Scenarios using it
- -
Fields and mappings
| Field | Type | Req | Description | Code list / format | EDI / GS1 / SAP mapping |
|---|---|---|---|---|---|
| ack_for | string | yes | id of the acknowledged event | ||
| status | string | yes | Status | ack_status | |
| errors | array<object> | Errors and warnings | |||
| code | string | yes | Error code | error_code | |
| path | string | yes | JSON path, e.g. data.lines[0].hs_code | ||
| severity | string | yes | error | warning | ^(error|warning)$ | |
| message | string | yes | Human-readable message |
Business rules
- None beyond schema and code lists.
Example
{
"specversion": "2.0",
"id": "evt-ack-ACK-1",
"type": "nutrab2b.control.acknowledged.v2",
"source": "urn:gln:0614141000012:erp",
"subject": "ACK",
"time": "2026-11-02T09:00:00Z",
"datacontenttype": "application/json",
"dataschema": "https://nutrab2b.org/schemas/2.0/ACK.json",
"sender": {
"gln": "0614141000012"
},
"receiver": {
"gln": "4012345000009"
},
"correlationid": "CONV-RFQ-1001",
"idempotencykey": "ACK:ACK:1",
"sequence": 1,
"env": "test",
"data": {
"ack_for": "01JBF8K3Q1Z8M4R2T6V9X0YAB1",
"status": "ACCEPTED",
"errors": []
}
}Mapping checklist
- Every required field populated from your system of record
- Coded fields mapped to the Bodylia OpenB2B code lists
- GLN, GTIN and SSCC check digits validated
- Rules above pass in the validator
- Idempotency key and per-subject sequence generated
- Expected responses, including rejections, handled
