Skip to content

Quickstart · ECZ-ID IoT Device Passport™

IoT quickstart

Give each physical device you operate a free ECZ-ID IoT Device Passport, label it with a QR code that routes to its live record, and let anyone check it on the spot.

Live · public

The free IoT Passport journey, the public record and the relying-party check are live. Commands were measured read-only on 2026-10-10. Availability is read live in TrustOps.

This quickstart gets the machine its identity. To carry it through the whole Accountability Chain (authority, Intent, decision, Receipt and re-verify), follow the IoT guided flow.

01Know what one Passport covers

You operate connected devices. One Passport is one physical device (or one device identity module) operated by the Parent.

Law: one device -> one Passport; a fleet -> many Passports (the meter counts MANAGED devices, never Passports).

Never a new Passport: mac_address, ip_address, firmware_version, gateway, hub_registration.

02Get the free Passport

Open the IoT door in TrustOps and sign in once. If your organisation has no Business Passport, a free DECLARED one is created. No payment is taken. Have one of these identifiers ready:

  • device_serial: PLAIN over the composite manufacturer:model:serial (only a hash is held)
  • device_attestation_ref: SoC identity / attestation reference where the platform provides one (only a hash is held)

Start the IoT Passport in TrustOps (opens in a new tab)

03Declare it where your ecosystem looks

The families contract names the place: device label QR -> /p/{ecz_id}; fleet manifest field. A declaration is a pointer, not proof.

yamlIllustrative fleet manifest entry and label. Use the values your TrustOps console shows.
# fleet manifest
devices:
  - serial: SN-0042-7781
    ecz_id: ECZ-GB-EXAMPL::IOT_DEVICE-AB12CD

# device label QR encodes the live record:
# https://resolver.ecocitizenz.org/p/ECZ-GB-EXAMPL::IOT_DEVICE-AB12CD

04Prove a binding

A binding attaches the Passport to a native identity you control. The binding classes this family defines are: SERIAL_NUMBER, MAC_ADDRESS, FIRMWARE, GATEWAY, HUB_REGISTRATION.

Proof is established through TrustOps and ECZ-ID Core, never on this site. Until a binding is proven, the public record reads binding.state: NO_PUBLIC_PROOF, which is the normal state of a new record. A class being defined is not a claim of a live integration with that provider.

05Let relying parties check it

Anyone can check before relying, with no account. This exact command was run on 2026-10-10:

bashMeasured 2026-10-10: 200 application/json
curl -s https://api.ecocitizenz.com/api/p/ECZ-GB-RBS1NW.json

Devices are checked by resolving their ECZ-ID: scan the label for people, read the machine record for systems. This is the same read, measured against the operator record behind this site. One device is one Passport; a fleet is many.

06Next: Intent, decision, Receipt

  • Live · signed inModel what this machine is authorised to do as an ECZ-ID Intent. Carry Intent
  • Release-gatedAsk IntentControl for a decision before consequential actions. Request a decision
  • No public retrievalPlan for Receipts in your records. Verify a Receipt

A free Passport gives a machine a persistent identity. It never means verified, assured, safe, secure, compliant, approved, certified or endorsed. Family facts come from the TrustOps families contract; current state is only ever the live Resolver record.