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
- A running edge (
http://localhost:8291) with a seeded tenant — or credentials of a real node curl+jq- That’s it. No SDK, no codegen, no config files.
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.