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:Vaxception",
  "title": "EPCIS document falidation",
  "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.