Entity model
Everything in the API is tenant-scoped and organised around one spine: a Product generates a Passport, which is published, registered as a resolvable Digital Link, and observed through events. These are the objects you will name in requests.
Core entity spine
Tenant boundary
Every entity below is owned by, and isolated within, one tenant. Cross-tenant access fails closed (404).
API keysOAuth clientsWebhookssandbox / live
Product
Commercial item · GTIN + serial + category + extensions
Passport (DPP)
Versioned disclosure artifact generated from a product
Digital Link
GS1 01/21 identifier that resolves to the passport
Compliance
Version-pinned evaluation → verdict / findings
Webhook + Event
Subscriptions and signed, retried deliveries
Audit log
Security-relevant actions, correlation-linked
The entities at a glance
| Entity | What it is | Key identifiers |
|---|---|---|
| Tenant | The security & billing boundary; sandbox or live. | isSandbox, sandboxExpiresAt |
| API Key | Scoped credential minted by an admin; rotatable, revocable. | id, keyPrefix, scopes |
| OAuth Client | Machine-to-machine identity exchanged for a tenant-bound token. | client_id |
| Product | Tenant-owned commercial item — not automatically a passport. | id, gtin, serialNumber, category |
| Category / Schema | Defines the effective extensions schema a product must satisfy. | category, effective_from |
| Regulation | Versioned rule pack selected per product context. | CELEX id + semver |
| Passport (DPP) | Versioned, publishable disclosure artifact; immutable per version. | passportUid, version no. |
| Digital Link identifier | GS1 01/21 registration mapping to a product. | gtin, serialNumber |
| Compliance evaluation | Version-pinned run of every applicable rule → score/status/findings. | per-product, per-sector |
| Webhook + Delivery + Event | Subscription, signed delivery attempts, and the event catalogue. | id, delivery id, type |
| Import Job | Bulk ingest with row-isolated errors and a correction loop. | jobId |
| Audit Log / Domain Event | Security-relevant actions and the product/passport event stream. | requestId, type |
| Passport Command | The envelope for all post-publish lifecycle changes. | type, idempotencyKey |
Each entity has its own concept page in this section, and a matching resource in the API Reference.