---
title: "List events for the active organization"
method: GET
path: "/v1/events"
tags: ["Events"]
---

# List events for the active organization

`GET /v1/events`

## Request

- Base URL: `https://api.prod.keyban.io`
- URL: `https://api.prod.keyban.io/v1/events`
- Auth: `X-Api-Key` (a scheme the document does not define)

Paginated audit/quota events scoped to the caller organization. For `dppPassport` events, `passport` carries the full DPP passport (same shape as `/v1/dpp/passports`); for other subjects the field is absent.

## Query parameters

- `filters` union[]
  - union
    - object
      - `operator` 'or' | 'and', required
      - `value` union[], required
        - union
          - object
            - `field` 'id', required
            - `operator` 'eq', required
            - `value` string, required
          - object
            - `field` 'createdAt', required
            - `operator` 'gt' | 'lt' | 'gte' | 'lte', required
            - `value` string, date-time, required
          - object
            - `field` 'updatedAt', required
            - `operator` 'gt' | 'lt' | 'gte' | 'lte', required
            - `value` string, date-time, required
          - object
            - `field` 'subject', required
            - `operator` 'eq', required
            - `value` 'application' | 'dppPassport' | 'wallet', required
          - object
            - `field` 'type', required
            - `operator` 'eq', required
            - `value` 'create' | 'update' | 'delete' | 'publish' | 'claim' | 'scan' | 'transfer', required
          - object
            - `field` 'application.id', required
            - `operator` 'eq', required
            - `value` string, uuid, required
          - object
            - `field` 'passport.id', required
            - `operator` 'eq', required
            - `value` string, uuid, required
          - object
            - `field` 'passport.product.idGranularity', required
            - `operator` 'eq', required
            - `value` 'model' | 'batch' | 'item', required
          - object
            - `field` 'passport.product.name', required
            - `operator` 'contains', required
            - `value` string, required
          - object
            - `field` 'passport.product.itemNumber', required
            - `operator` 'contains', required
            - `value` string, required
    - object
      - `field` 'id', required
      - `operator` 'eq', required
      - `value` string, required
    - object
      - `field` 'createdAt', required
      - `operator` 'gt' | 'lt' | 'gte' | 'lte', required
      - `value` string, date-time, required
    - object
      - `field` 'updatedAt', required
      - `operator` 'gt' | 'lt' | 'gte' | 'lte', required
      - `value` string, date-time, required
    - object
      - `field` 'subject', required
      - `operator` 'eq', required
      - `value` 'application' | 'dppPassport' | 'wallet', required
    - object
      - `field` 'type', required
      - `operator` 'eq', required
      - `value` 'create' | 'update' | 'delete' | 'publish' | 'claim' | 'scan' | 'transfer', required
    - object
      - `field` 'application.id', required
      - `operator` 'eq', required
      - `value` string, uuid, required
    - object
      - `field` 'passport.id', required
      - `operator` 'eq', required
      - `value` string, uuid, required
    - object
      - `field` 'passport.product.idGranularity', required
      - `operator` 'eq', required
      - `value` 'model' | 'batch' | 'item', required
    - object
      - `field` 'passport.product.name', required
      - `operator` 'contains', required
      - `value` string, required
    - object
      - `field` 'passport.product.itemNumber', required
      - `operator` 'contains', required
      - `value` string, required
- `sorters` object[]
  - `field` 'id' | 'createdAt' | 'updatedAt', required
  - `order` 'asc' | 'desc', required
- `currentPage` integer
- `pageSize` integer

## Response `200`

Events retrieved successfully

- EventListDto
  - `data` union[], required: Array of items for the current page
    - union
      - object
        - `id` string, uuid, required: Entity UUID
        - `createdAt` string, date-time, required: Creation date (ISO 8601)
        - `updatedAt` string, date-time, required: Last update date (ISO 8601)
        - `application` string, uuid, required: Application owning the event.
        - `subject` 'application', required
        - `type` 'create' | 'update' | 'delete', required
        - `user` string, uuid, nullable, required: User responsible for the event, when known.
        - `count` integer, required: Aggregated count for this event row (default 1).
      - object
        - `id` string, uuid, required: Entity UUID
        - `createdAt` string, date-time, required: Creation date (ISO 8601)
        - `updatedAt` string, date-time, required: Last update date (ISO 8601)
        - `application` string, uuid, required: Application owning the event.
        - `subject` 'dppPassport', required
        - `type` 'create' | 'update' | 'publish' | 'claim' | 'scan' | 'transfer', required
        - `user` string, uuid, nullable, required: User responsible for the event, when known.
        - `count` integer, required: Aggregated count for this event row (default 1).
        - `passport` object, required: Full DPP passport (same shape as `/v1/dpp/passports`). Present only for `dppPassport` events; absent for other subjects.
          - `id` string, uuid, required: Entity UUID
          - `createdAt` string, date-time, required: Creation date (ISO 8601)
          - `updatedAt` string, date-time, required: Last update date (ISO 8601)
          - `network` 'EthereumAnvil' | 'BaseSepolia' | 'BaseMainnet' | 'XdcApothem' | 'XdcMainnet' | 'StellarQuickstart' | 'StellarTestnet' | 'StellarMainnet', required: Blockchain network on which the passport is anchored. Passports are anchored on EVM networks (e.g. BaseMainnet).
          - `status` 'draft' | 'published' | 'claimed' | 'archived', required: Lifecycle status. `draft` is editable and not certified; `published` triggers on-chain certification; `claimed` is set on item passports once they have been minted to an end-user account; `archived` is read-only. The transition `draft` → `published` is one-way: a published passport cannot be reverted to `draft`.
          - `source` 'manual' | 'import' | 'shopify', required: Origin of the passport (`manual`, `import`, `shopify`). Set by the server, read-only.
          - `editable` boolean, required: Whether the passport can still be modified. Computed server-side, read-only.
          - `webPageUrl` string, nullable, required: Absolute URL of the product's own web page on the brand or merchant site — the page a shopper lands on (RFC 3986). Not a link to an image, a document or the passport itself.
          - `product` object, required: The product as stored at creation or import. The computed UNTP identifiers (`id`, `idScheme`) are served by `productUntp`.
            - `type` unknown[]
              - …
            - `name` string, required: Commercial name of the product.
            - `description` string, nullable: Marketing description of the product. Null when absent (nullable column).
            - `modelNumber` string, nullable: Manufacturer model reference / SKU. Required at `batch` and `item` granularity to link to the parent `model` passport. Null when absent (nullable column).
            - `batchNumber` string, nullable: Production batch or lot identifier. Required at `item` granularity to link to the parent `batch` passport. Null at `model` granularity (nullable column).
            - `itemNumber` string, nullable: Individual serial number. Required at `item` granularity to identify a single physical unit. Null at `model`/`batch` granularity (nullable column).
            - `idGranularity` 'model' | 'batch' | 'item', required: Passport granularity: `model` = product template, `batch` = production lot, `item` = individual serialized unit.
            - `productImage` object: Primary product image shown in the passport viewer.
              - …
            - `characteristics` object: Free-form dictionary of technical characteristics: each entry maps a human-readable label in the source-data language (e.g. « type de canne ») to a plain-text value with its units (e.g. « 1,80 m »). Product-specific — no fixed vocabulary.
            - `productCategory` object[]: Product categories against external classification schemes (CPC, HS, NACE, …). Typically non-empty.
              - …
            - `relatedDocument` object[]: Related documents (user manuals, datasheets, certificates, …).
              - …
            - `relatedParty` object[]: Parties involved in the product lifecycle, each with its role (manufacturer, distributor, …).
              - …
            - `producedAtFacility` object: Facility where the product was manufactured or assembled.
              - …
            - `productionDate` union: Date the product (or batch / item) was physically manufactured (ISO 8601 `YYYY-MM-DD`). Not a record timestamp: a catalogue entry's creation, update or publication date is unrelated to when the goods were made.
              - …
            - `expiryDate` union: Date the product expires or is no longer recommended for use (ISO 8601 `YYYY-MM-DD`). Absent when not applicable.
              - …
            - `countryOfProduction` object: Country where the product was produced. Used for regulatory labelling (e.g. "Made in").
              - …
            - `dimensions` object: Physical dimensions of the product itself (excluding packaging).
              - …
            - `materialProvenance` object[]: Breakdown of the materials composing the product, with origins and recycled content.
              - …
            - `packaging` object: Primary packaging shipped with the product.
              - …
            - `productLabel` object[]: Images of the regulatory or commercial labels printed on the product.
              - …
            - `performanceClaim` object[]: Headline performance claim attached to the product (e.g. energy class).
              - …
          - `productUntp` object, required: UNTP `Product` — credentialSubject of the Digital Product Passport verifiable credential.
            - `type` unknown[]
              - …
            - `id` string, required: Globally unique product identifier (typically an URI, DID or GS1 digital link).
            - `name` string, required: Commercial name of the product.
            - `description` string, nullable: Marketing description of the product. Null when absent (nullable column).
            - `idScheme` object, required: Identifier scheme describing how to interpret the `id` and serial numbers below.
              - …
            - `modelNumber` string, nullable: Manufacturer model reference / SKU. Required at `batch` and `item` granularity to link to the parent `model` passport. Null when absent (nullable column).
            - `batchNumber` string, nullable: Production batch or lot identifier. Required at `item` granularity to link to the parent `batch` passport. Null at `model` granularity (nullable column).
            - `itemNumber` string, nullable: Individual serial number. Required at `item` granularity to identify a single physical unit. Null at `model`/`batch` granularity (nullable column).
            - `idGranularity` 'model' | 'batch' | 'item', required: Passport granularity: `model` = product template, `batch` = production lot, `item` = individual serialized unit.
            - `productImage` object: Primary product image shown in the passport viewer.
              - …
            - `characteristics` object: Free-form dictionary of technical characteristics: each entry maps a human-readable label in the source-data language (e.g. « type de canne ») to a plain-text value with its units (e.g. « 1,80 m »). Product-specific — no fixed vocabulary.
            - `productCategory` object[], required: Product categories against external classification schemes (CPC, HS, NACE, …). Typically non-empty.
              - …
            - `relatedDocument` object[]: Related documents (user manuals, datasheets, certificates, …).
              - …
            - `relatedParty` object[]: Parties involved in the product lifecycle, each with its role (manufacturer, distributor, …).
              - …
            - `producedAtFacility` object: Facility where the product was manufactured or assembled.
              - …
            - `productionDate` union: Date the product (or batch / item) was physically manufactured (ISO 8601 `YYYY-MM-DD`). Not a record timestamp: a catalogue entry's creation, update or publication date is unrelated to when the goods were made.
              - …
            - `expiryDate` union: Date the product expires or is no longer recommended for use (ISO 8601 `YYYY-MM-DD`). Absent when not applicable.
              - …
            - `countryOfProduction` object: Country where the product was produced. Used for regulatory labelling (e.g. "Made in").
              - …
            - `dimensions` object: Physical dimensions of the product itself (excluding packaging).
              - …
            - `materialProvenance` object[]: Breakdown of the materials composing the product, with origins and recycled content.
              - …
            - `packaging` object: Primary packaging shipped with the product.
              - …
            - `productLabel` object[]: Images of the regulatory or commercial labels printed on the product.
              - …
            - `performanceClaim` object[]: Headline performance claim attached to the product (e.g. energy class).
              - …
          - `productSchemaOrg` object, required: schema.org/Product — any offered product or service. Extends Thing with commerce-specific fields.
            - `identifier` string: Unique identifier for the thing — may be a URI, a product SKU, or a domain-specific code. See https://schema.org/identifier.
            - `name` string: Human-readable name of the thing.
            - `description` string: Free-text description of the thing.
            - `image` string, uri: Absolute HTTPS URL of a representative image. For IPFS-hosted images, use `passport.images` instead.
            - `gtin` string: Global Trade Item Number (GS1). Accepts GTIN-8, GTIN-12, GTIN-13, or GTIN-14 as a numeric string without hyphens. See https://www.gs1.org/standards/id-keys/gtin.
            - `sku` string: Seller's internal Stock Keeping Unit identifier.
            - `brand` object: Commercial brand associated with the product.
              - …
            - `countryOfOrigin` object: Country where the product was manufactured or produced.
              - …
            - `keywords` string[]: List of keywords used for search and classification of the product.
            - `additionalProperty` object[]
              - …
          - `data` object, required: Free-form business payload (attributes, traceability, compliance fields, ...). Consumed as the source object for the certified snapshot — see `certifiedPaths`.
          - `actions` object[], required: Public actions (links / buttons) rendered on the passport page (e.g. authenticity proof, care guide).
            - `id` string, uuid, required: Stable UUID v4 assigned server-side. Unique per application. Used to identify and update a specific action button.
            - `enabled` boolean, required: When `false`, the button is hidden on the public passport viewer. The `url` and `icon` fields are ignored.
            - `type` 'circularity' | 'marketing', required: Functional family of the action. The passport viewer renders one card per type (circularity services vs commercial offers).
            - `url` string: Absolute HTTPS URL the button points to. When empty or absent, the action is rendered as a non-clickable informational row on the passport viewer.
            - `label` object: Localized label displayed on the button, keyed by BCP 47 locale code. The DPP App resolves the active locale and falls back to the application default locale. The button is hidden when no label matches.
            - `description` object: Localized secondary line displayed under the label on the passport viewer, keyed by BCP 47 locale code (e.g. the program or offer the action belongs to). Resolved with the same locale rules as `label`. The line is omitted when absent.
            - `icon` string: Icon identifier for the button. Accepts a Lucide icon name in kebab-case (e.g. `"recycle"`, `"wrench"` — the viewer supports a curated subset and renders unknown names as plain text, so emojis also work) or an absolute HTTPS URL pointing to an SVG asset.
          - `tokenId` string, required: Deterministic ERC-721 token identifier derived from the passport `id` (`0x` followed by the SHA-256 of the UUID). Computed server-side and available from creation — it is **not** populated by the on-chain mint, so reading it does not indicate whether the token has been minted yet. Read-only.
          - `ipfsCid` string, nullable, required: IPFS CID of the published metadata snapshot. Set by the server, read-only.
          - `certificateUri` string, nullable, required: Optional https URL to a self-hosted signed Verifiable Credential. When provided on create/update, the server anchors this URI on-chain instead of uploading the credential to IPFS — letting the issuer host (and delete) the certificate itself for data-protection compliance. The hosted credential must be the exact VC returned by `POST /v1/dpp/passports/build-vc` for the same content. Must be sent together with `certificateSignature`. Leave null/absent to use the default IPFS flow.
          - `certificateSignature` string, nullable, required: The self-hosted credential's Data Integrity proof value (the VC `proof.proofValue`, multibase base58btc). Required together with `certificateUri`: it is anchored on-chain so a verifier can pin the served credential to its on-chain record (a self-hosted URL is mutable and not content-addressed). Anchoring it without re-supplying it when the certified content changes is rejected. Ignored for the IPFS flow.
          - `vcUrl` string, nullable, required: Relative API path to download the signed W3C Verifiable Credential (JSON-LD) of this passport, or null until it is certified. Resolve against the API base URL. Set by the server, read-only.
          - `certificationStatus` 'pending' | 'certified' | 'error', required: On-chain certification outcome. `pending` while the certify job is queued or retrying, `certified` once the on-chain transaction succeeds, `error` once all retries are exhausted. Set by the server, read-only.
          - `certifiedAt` string, date-time, nullable, required: Timestamp of the last successful on-chain certification. Set by the server when the certify job completes successfully, read-only.
          - `certifiedPaths` string[], required: Dot-notation paths selecting which fields from `data` are included in the signed certificate. When empty, the entire `data` object is certified. Example: `["brand", "gtin", "manufacturer.name"]`. Updating this array on a published passport triggers a re-certification.
          - `certificationExplorerUrl` string, uri, nullable, required: Absolute HTTPS URL of the last successful certification transaction on the public block explorer of `network` (e.g. BaseScan for Base). Null until the passport is certified on-chain, for passports certified before this field was introduced (back-filled on their next re-certification), and on networks without a public explorer. Set by the server, read-only.
          - `vcStatus` object, required: W3C VC 2.0 status contract (issuer, validity window, derived state, revocation pointer) for the consumer VC banner. Computed server-side, read-only.
            - `state` 'valid' | 'pending' | 'error' | 'expired' | 'revoked' | 'suspended', required: Derived VC lifecycle state for the consumer banner. V1 emits only `valid`, `pending`, or `error`; `expired`/`revoked`/`suspended` are part of the contract but not yet produced by the backend (no status list, no expiry policy).
            - `issuer` object, nullable, required: Issuer identity captured when the VC was signed. `null` until the passport is certified (state `pending`/`error`), and on passports certified before this field existed (back-filled on their next re-certification).
              - …
            - `validFrom` string, date-time, nullable, required: Issuance instant of the VC (W3C `validFrom`), equal to the last successful certification time. `null` until certified.
            - `validUntil` string, date-time, nullable, required: Expiry instant of the VC (W3C `validUntil`). Always `null` in V1 — Keyban DPPs do not expire yet; reserved for a future tenant expiry policy.
            - `credentialStatus` unknown, required
          - `allowedClaimEmail` string, email, nullable: Email address authorized to claim this item. Empty string is coerced to `null` (no restriction).
          - `allowedClaimPhoneNumber` string, e164, nullable: E.164 phone number authorized to claim this item. Empty string is coerced to `null` (no restriction).
          - `mintedTo` object, nullable: The ID of the account that owns the minted item, when claimed.
            - `id` string, uuid, required: Entity UUID
            - `createdAt` string, date-time, required: Creation date (ISO 8601)
            - `updatedAt` string, date-time, required: Last update date (ISO 8601)
            - `application` string, uuid, required: The unique identifier of the application this account belongs to
            - `user` object, required
              - …
            - `network` 'EthereumAnvil' | 'BaseSepolia' | 'BaseMainnet' | 'XdcApothem' | 'XdcMainnet' | 'StellarQuickstart' | 'StellarTestnet' | 'StellarMainnet', required: The blockchain network where this account is deployed
            - `address` string, required: The blockchain address of the account
            - `explorerUrl` string, uri: URL to a blockchain explorer for this account
            - `loyalty` object, required: Loyalty program data associated with this account
              - …
            - `dpp` object, required: DPP data associated with this account
              - …
          - `stats` object: Aggregated counters across the passport, by granularity: empty on `item` passports. Loaded on demand, absent when not requested.
            - `batches` integer: Number of `batch` passports linked to this passport. Only on `model` passports.
            - `items` integer: Number of `item` passports linked to this passport. Only on `model` and `batch` passports.
          - `completion` object, required
            - `missing` string[], required
            - `completed` string[], required
            - `total` number, required
          - `trustScore` integer, required: Current Trust Score (0–100): a blend of data completeness, richness of extracted characteristics, and whether the passport is certified. Computed server-side on read, read-only. Reading bands: Solid ≥ 80, Reinforce 50–79, Fragile < 50. An uncertified passport cannot exceed 60.
          - `trustScoreBase` integer, nullable, required: Trust Score captured at first import — the frozen baseline the progression badge compares against (`↗ +X %`). Never rebased. Null for passports created before the score existed or outside the import flow. Set by the server, read-only.
          - `model` object, nullable, required: Embedded parent `model` passport, resolved via `modelNumber`. Null when the passport has no parent model. Populated on read, ignored on create.
            - `id` string, uuid, required: Entity UUID
            - `createdAt` string, date-time, required: Creation date (ISO 8601)
            - `updatedAt` string, date-time, required: Last update date (ISO 8601)
            - `network` 'EthereumAnvil' | 'BaseSepolia' | 'BaseMainnet' | 'XdcApothem' | 'XdcMainnet' | 'StellarQuickstart' | 'StellarTestnet' | 'StellarMainnet', required: Blockchain network on which the passport is anchored. Passports are anchored on EVM networks (e.g. BaseMainnet).
            - `status` 'draft' | 'published' | 'claimed' | 'archived', required: Lifecycle status. `draft` is editable and not certified; `published` triggers on-chain certification; `claimed` is set on item passports once they have been minted to an end-user account; `archived` is read-only. The transition `draft` → `published` is one-way: a published passport cannot be reverted to `draft`.
            - `source` 'manual' | 'import' | 'shopify', required: Origin of the passport (`manual`, `import`, `shopify`). Set by the server, read-only.
            - `editable` boolean, required: Whether the passport can still be modified. Computed server-side, read-only.
            - `webPageUrl` string, nullable, required: Absolute URL of the product's own web page on the brand or merchant site — the page a shopper lands on (RFC 3986). Not a link to an image, a document or the passport itself.
            - `product` object, required: The product as stored at creation or import. The computed UNTP identifiers (`id`, `idScheme`) are served by `productUntp`.
              - …
            - `productUntp` object, required: UNTP `Product` — credentialSubject of the Digital Product Passport verifiable credential.
              - …
            - `productSchemaOrg` object, required: schema.org/Product — any offered product or service. Extends Thing with commerce-specific fields.
              - …
            - `data` object, required: Free-form business payload (attributes, traceability, compliance fields, ...). Consumed as the source object for the certified snapshot — see `certifiedPaths`.
            - `actions` object[], required: Public actions (links / buttons) rendered on the passport page (e.g. authenticity proof, care guide).
              - …
            - `tokenId` string, required: Deterministic ERC-721 token identifier derived from the passport `id` (`0x` followed by the SHA-256 of the UUID). Computed server-side and available from creation — it is **not** populated by the on-chain mint, so reading it does not indicate whether the token has been minted yet. Read-only.
            - `ipfsCid` string, nullable, required: IPFS CID of the published metadata snapshot. Set by the server, read-only.
            - `certificateUri` string, nullable, required: Optional https URL to a self-hosted signed Verifiable Credential. When provided on create/update, the server anchors this URI on-chain instead of uploading the credential to IPFS — letting the issuer host (and delete) the certificate itself for data-protection compliance. The hosted credential must be the exact VC returned by `POST /v1/dpp/passports/build-vc` for the same content. Must be sent together with `certificateSignature`. Leave null/absent to use the default IPFS flow.
            - `certificateSignature` string, nullable, required: The self-hosted credential's Data Integrity proof value (the VC `proof.proofValue`, multibase base58btc). Required together with `certificateUri`: it is anchored on-chain so a verifier can pin the served credential to its on-chain record (a self-hosted URL is mutable and not content-addressed). Anchoring it without re-supplying it when the certified content changes is rejected. Ignored for the IPFS flow.
            - `vcUrl` string, nullable, required: Relative API path to download the signed W3C Verifiable Credential (JSON-LD) of this passport, or null until it is certified. Resolve against the API base URL. Set by the server, read-only.
            - `certificationStatus` 'pending' | 'certified' | 'error', required: On-chain certification outcome. `pending` while the certify job is queued or retrying, `certified` once the on-chain transaction succeeds, `error` once all retries are exhausted. Set by the server, read-only.
            - `certifiedAt` string, date-time, nullable, required: Timestamp of the last successful on-chain certification. Set by the server when the certify job completes successfully, read-only.
            - `certifiedPaths` string[], required: Dot-notation paths selecting which fields from `data` are included in the signed certificate. When empty, the entire `data` object is certified. Example: `["brand", "gtin", "manufacturer.name"]`. Updating this array on a published passport triggers a re-certification.
            - `certificationExplorerUrl` string, uri, nullable, required: Absolute HTTPS URL of the last successful certification transaction on the public block explorer of `network` (e.g. BaseScan for Base). Null until the passport is certified on-chain, for passports certified before this field was introduced (back-filled on their next re-certification), and on networks without a public explorer. Set by the server, read-only.
            - `vcStatus` object, required: W3C VC 2.0 status contract (issuer, validity window, derived state, revocation pointer) for the consumer VC banner. Computed server-side, read-only.
              - …
            - `allowedClaimEmail` string, email, nullable: Email address authorized to claim this item. Empty string is coerced to `null` (no restriction).
            - `allowedClaimPhoneNumber` string, e164, nullable: E.164 phone number authorized to claim this item. Empty string is coerced to `null` (no restriction).
            - `mintedTo` string, uuid, nullable: The ID of the account that owns the minted item, when claimed.
            - `stats` object: Aggregated counters across the passport, by granularity: empty on `item` passports. Loaded on demand, absent when not requested.
              - …
            - `completion` object, required
              - …
            - `trustScore` integer, required: Current Trust Score (0–100): a blend of data completeness, richness of extracted characteristics, and whether the passport is certified. Computed server-side on read, read-only. Reading bands: Solid ≥ 80, Reinforce 50–79, Fragile < 50. An uncertified passport cannot exceed 60.
            - `trustScoreBase` integer, nullable, required: Trust Score captured at first import — the frozen baseline the progression badge compares against (`↗ +X %`). Never rebased. Null for passports created before the score existed or outside the import flow. Set by the server, read-only.
            - `model` string, uuid, nullable, required: Identifier of the parent `model` passport, null when there is none.
            - `batch` string, uuid, nullable, required: Identifier of the parent `batch` passport, null when there is none.
            - `certifyJob` string, nullable, required: Identifier of the latest certification job, null when the passport was never certified.
            - `structureJob` string, nullable, required: Identifier of the latest AI structuration job, null when the passport was never structured.
          - `batch` object, nullable, required: Embedded parent `batch` passport, resolved via `batchNumber`. Null when the passport has no parent batch. Populated on read, ignored on create.
            - `id` string, uuid, required: Entity UUID
            - `createdAt` string, date-time, required: Creation date (ISO 8601)
            - `updatedAt` string, date-time, required: Last update date (ISO 8601)
            - `network` 'EthereumAnvil' | 'BaseSepolia' | 'BaseMainnet' | 'XdcApothem' | 'XdcMainnet' | 'StellarQuickstart' | 'StellarTestnet' | 'StellarMainnet', required: Blockchain network on which the passport is anchored. Passports are anchored on EVM networks (e.g. BaseMainnet).
            - `status` 'draft' | 'published' | 'claimed' | 'archived', required: Lifecycle status. `draft` is editable and not certified; `published` triggers on-chain certification; `claimed` is set on item passports once they have been minted to an end-user account; `archived` is read-only. The transition `draft` → `published` is one-way: a published passport cannot be reverted to `draft`.
            - `source` 'manual' | 'import' | 'shopify', required: Origin of the passport (`manual`, `import`, `shopify`). Set by the server, read-only.
            - `editable` boolean, required: Whether the passport can still be modified. Computed server-side, read-only.
            - `webPageUrl` string, nullable, required: Absolute URL of the product's own web page on the brand or merchant site — the page a shopper lands on (RFC 3986). Not a link to an image, a document or the passport itself.
            - `product` object, required: The product as stored at creation or import. The computed UNTP identifiers (`id`, `idScheme`) are served by `productUntp`.
              - …
            - `productUntp` object, required: UNTP `Product` — credentialSubject of the Digital Product Passport verifiable credential.
              - …
            - `productSchemaOrg` object, required: schema.org/Product — any offered product or service. Extends Thing with commerce-specific fields.
              - …
            - `data` object, required: Free-form business payload (attributes, traceability, compliance fields, ...). Consumed as the source object for the certified snapshot — see `certifiedPaths`.
            - `actions` object[], required: Public actions (links / buttons) rendered on the passport page (e.g. authenticity proof, care guide).
              - …
            - `tokenId` string, required: Deterministic ERC-721 token identifier derived from the passport `id` (`0x` followed by the SHA-256 of the UUID). Computed server-side and available from creation — it is **not** populated by the on-chain mint, so reading it does not indicate whether the token has been minted yet. Read-only.
            - `ipfsCid` string, nullable, required: IPFS CID of the published metadata snapshot. Set by the server, read-only.
            - `certificateUri` string, nullable, required: Optional https URL to a self-hosted signed Verifiable Credential. When provided on create/update, the server anchors this URI on-chain instead of uploading the credential to IPFS — letting the issuer host (and delete) the certificate itself for data-protection compliance. The hosted credential must be the exact VC returned by `POST /v1/dpp/passports/build-vc` for the same content. Must be sent together with `certificateSignature`. Leave null/absent to use the default IPFS flow.
            - `certificateSignature` string, nullable, required: The self-hosted credential's Data Integrity proof value (the VC `proof.proofValue`, multibase base58btc). Required together with `certificateUri`: it is anchored on-chain so a verifier can pin the served credential to its on-chain record (a self-hosted URL is mutable and not content-addressed). Anchoring it without re-supplying it when the certified content changes is rejected. Ignored for the IPFS flow.
            - `vcUrl` string, nullable, required: Relative API path to download the signed W3C Verifiable Credential (JSON-LD) of this passport, or null until it is certified. Resolve against the API base URL. Set by the server, read-only.
            - `certificationStatus` 'pending' | 'certified' | 'error', required: On-chain certification outcome. `pending` while the certify job is queued or retrying, `certified` once the on-chain transaction succeeds, `error` once all retries are exhausted. Set by the server, read-only.
            - `certifiedAt` string, date-time, nullable, required: Timestamp of the last successful on-chain certification. Set by the server when the certify job completes successfully, read-only.
            - `certifiedPaths` string[], required: Dot-notation paths selecting which fields from `data` are included in the signed certificate. When empty, the entire `data` object is certified. Example: `["brand", "gtin", "manufacturer.name"]`. Updating this array on a published passport triggers a re-certification.
            - `certificationExplorerUrl` string, uri, nullable, required: Absolute HTTPS URL of the last successful certification transaction on the public block explorer of `network` (e.g. BaseScan for Base). Null until the passport is certified on-chain, for passports certified before this field was introduced (back-filled on their next re-certification), and on networks without a public explorer. Set by the server, read-only.
            - `vcStatus` object, required: W3C VC 2.0 status contract (issuer, validity window, derived state, revocation pointer) for the consumer VC banner. Computed server-side, read-only.
              - …
            - `allowedClaimEmail` string, email, nullable: Email address authorized to claim this item. Empty string is coerced to `null` (no restriction).
            - `allowedClaimPhoneNumber` string, e164, nullable: E.164 phone number authorized to claim this item. Empty string is coerced to `null` (no restriction).
            - `mintedTo` string, uuid, nullable: The ID of the account that owns the minted item, when claimed.
            - `stats` object: Aggregated counters across the passport, by granularity: empty on `item` passports. Loaded on demand, absent when not requested.
              - …
            - `completion` object, required
              - …
            - `trustScore` integer, required: Current Trust Score (0–100): a blend of data completeness, richness of extracted characteristics, and whether the passport is certified. Computed server-side on read, read-only. Reading bands: Solid ≥ 80, Reinforce 50–79, Fragile < 50. An uncertified passport cannot exceed 60.
            - `trustScoreBase` integer, nullable, required: Trust Score captured at first import — the frozen baseline the progression badge compares against (`↗ +X %`). Never rebased. Null for passports created before the score existed or outside the import flow. Set by the server, read-only.
            - `model` string, uuid, nullable, required: Identifier of the parent `model` passport, null when there is none.
            - `batch` string, uuid, nullable, required: Identifier of the parent `batch` passport, null when there is none.
            - `certifyJob` string, nullable, required: Identifier of the latest certification job, null when the passport was never certified.
            - `structureJob` string, nullable, required: Identifier of the latest AI structuration job, null when the passport was never structured.
          - `certifyJob` object, nullable, required: Latest certification job for this passport. Null when the passport was never certified. Populated on read, ignored on create.
            - `id` string, required
            - `createdAt` string, date-time, required
            - `name` string, required
            - `parent` string, nullable: Identifier of the parent job, null for a root job.
            - `status` 'pending' | 'completed' | 'failed', required
            - `data` unknown
            - `result` unknown
            - `error` string, nullable
            - `childrenStats` object: Children counts by status. Loaded on demand, absent when not requested.
              - …
            - `streamToken` string, required
          - `structureJob` object, nullable, required: Latest AI structuration job for this passport (Trust feature). Null when the passport was never structured. Populated on read, ignored on create.
            - `id` string, required
            - `createdAt` string, date-time, required
            - `name` string, required
            - `parent` string, nullable: Identifier of the parent job, null for a root job.
            - `status` 'pending' | 'completed' | 'failed', required
            - `data` unknown
            - `result` unknown
            - `error` string, nullable
            - `childrenStats` object: Children counts by status. Loaded on demand, absent when not requested.
              - …
            - `streamToken` string, required
      - object
        - `id` string, uuid, required: Entity UUID
        - `createdAt` string, date-time, required: Creation date (ISO 8601)
        - `updatedAt` string, date-time, required: Last update date (ISO 8601)
        - `application` string, uuid, required: Application owning the event.
        - `subject` 'wallet', required
        - `type` 'create' | 'update' | 'delete', required
        - `user` string, uuid, nullable, required: User responsible for the event, when known.
        - `count` integer, required: Aggregated count for this event row (default 1).
  - `total` integer, required: Total count of items matching the query

---

[API](https://skmtc.dev/keyban/apis/keyban-rest-apis.md) · [All operations](https://skmtc.dev/keyban/apis/keyban-rest-apis/llms.txt) · [OpenAPI document](https://skmtc.dev/keyban/apis/keyban-rest-apis/revisions/0bb79a1da961?raw)
