← Developers

Quickstart — first 200 OK in 5 minutes

Spec matching api v1

The fastest honest path through the platform. Everything below is copy-paste against a local edge (docker compose up on the edge stack) running the example production-line manifest. Five minutes, one lot, the full governed lifecycle.

0. What you need

1. Get a session (30s)

export K=http://localhost:8291
TOKEN=$(curl -s $K/api/v1/auth/login -H 'content-type: application/json' \
  -d '{"tenantId":"<tenant-uuid>","deviceCode":"IPC-01","pin":"1234"}' | jq -r .token)
echo $TOKEN   # default TTL is in `expiresInHours` — a 409 PIN_AMBIGUOUS means
              # the pin matches more than one operator: re-send with "operatorId"

2. Verify a lot at receiving (60s)

curl -X POST $K/api/v1/actions/VERIFY_LOT \
  -H "Authorization: Bearer $TOKEN" -H 'content-type: application/json' \
  -H "X-Idempotency-Key: $(uuidgen)" \
  -d '{"payload":{"lot_id":"LOT-QUICK-01","peso_dichiarato":100.0,
        "peso_misurato":100.3}}' | jq .

3. Accept it — the constraint engine checks the weight (60s)

curl -X POST $K/api/v1/actions/ACCEPT_LOT \
  -H "Authorization: Bearer $TOKEN" -H "X-Idempotency-Key: $(uuidgen)" \
  -d '{"payload":{"lot_id":"LOT-QUICK-01","peso_dichiarato":100.0,
        "peso_misurato":100.3}}' | jq .
# Δpeso 0.3% ≤ 0.5% → committed. Try peso_misurato:101 →
# 422-style rejection: the rule `peso_coerente` fails closed, nothing commits.

4. Inspect a piece (60s)

curl -X POST $K/api/v1/actions/START_MEASURE \
  -H "Authorization: Bearer $TOKEN" -H "X-Idempotency-Key: $(uuidgen)" \
  -d '{"payload":{"piece_id":"PZ-001"}}'

curl -X POST $K/api/v1/actions/QC_PASS \
  -H "Authorization: Bearer $TOKEN" -H "X-Idempotency-Key: $(uuidgen)" \
  -d '{"payload":{"piece_id":"PZ-001","misura":0.018}}' | jq .
# misura 0.018 ≤ 0.02 → CONFORME. With 0.026 the constraint `tolleranza_collaudo`
# rejects: no commit, the attempt is still in the audit chain.

5. Verify the audit chain (60s)

# Edge side — re-validate the hash chain over what just committed
curl -s $K/api/v1/audit/verify -H "Authorization: Bearer $TOKEN" | jq .

# Cloud side — after the outbox flushes, the tenant portal exposes the chain too
curl -s "https://cp.axiom-trace.eu/api/v1/tenant/audit/verify" \
  -H "Authorization: Bearer $PORTAL_TOKEN" | jq .

Done. You exercised the entire contract: session → trigger → RBAC → constraint → FSM → data-link → audit → outbox. If a 4xx surprised you, The Contract explains the rules and Inbound events decodes every error code.

Deeper: End-to-end examples · API Reference · API Playground

Provisioning a physical edge node instead? That’s a different path — the zero-touch installer turns a bare Linux box into a signed, syncing node with one command and a bt_* claim token.