APIs.
The capture and query interfaces are built against GS1's official EPCIS 2.0 OpenAPI description, pinned by digest and re-checked in CI. A capture that does not validate is refused as RFC 7807 problem+json carrying the standard's own exception types. The write half opens with a capture key; the calculators answer on this origin without one.
POST /capturePOST /translate
The refusal is part of the interface.
HTTP/1.1 400 Bad Request
content-type: application/problem+json
{
"type": "epcisException:ValidationException",
"title": "EPCIS document failed schema validation",
"status": 400,
"detail": "/epcisBody/eventList/0: required property 'action' missing"
}
The implemented 400: RFC 7807, the standard's own exception type, and the JSON pointer to the failing clause. The 400 is the lesson — it tells you which part of the standard you are arguing with.
For the engineer evaluating by exit code.
The whole surface is evaluable by running it: the five-minute local capture, the pinned digests on the conformance page, and refusals you can trigger on purpose. No account and no conversation stand in the way.
Proof, not adjectives. The gateway's conformance tests pass against GS1's normative artifacts. See How for the dimension, and What ships today for the dated ledger.