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:Va…xception",
"title": "EPCIS document fa…lidation",
"status": 400,
"detail": "/epcisBody/eventL… 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 npx quickstart, the pinned digests on the conformance page, and refusals you can trigger on purpose. No account and no conversation stand in the way.