---
title: "Read one passport."
method: GET
path: "/api/v1/passports/{id}"
tags: ["Passports"]
---

# Read one passport.

`GET /api/v1/passports/{id}`

## Request

- Base URL: `https://app.tracepass.eu`
- URL: `https://app.tracepass.eu/api/v1/passports/{id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://app.tracepass.eu/api/oauth/authorize`, token URL `https://app.tracepass.eu/api/oauth/token`, scopes: `passports:read`)

Default response includes the full passport — translatable
fields carry their `sourceLocale` and a per-locale
`translations` map. `?lang=<locale>` resolves every field
through the public-viewer chain and returns one resolved
value per field; `?format=full` adds template-derived
labels, units, and access levels alongside each value.

An alternate addressing form exists at
`GET /api/v1/passports/by-serial/{serial}` with the same
body and query-parameter behaviour.

## Query parameters

- `format` 'full'
- `lang` string

## Response `200`

Passport.

- Passport
  - `_id` string: MongoDB ObjectId hex string (24 chars).
  - `companyId` string: MongoDB ObjectId hex string (24 chars).
  - `productId` string: MongoDB ObjectId hex string (24 chars).
  - `templateId` string: MongoDB ObjectId hex string (24 chars).
  - `identifier` union
    - object: GS1 GTIN + serial number (scheme "gs1"). Required for battery passports.
      - `scheme` 'gs1', required
      - `gtin` string, required: GS1 GTIN with a valid check digit. Accepts 8 digits (GTIN-8), 12 digits (GTIN-12/UPC-A), 13 digits (GTIN-13/EAN-13), or 14 digits (GTIN-14). All forms are left-padded to 14 digits before storage; stored and returned values are always 14 digits.
      - `serialNumber` string, required
      - `digitalLinkUri` string, uri
    - object: ISO/IEC 15459 identifier (scheme "iso15459"). Also valid for battery passports.
      - `scheme` 'iso15459', required
      - `issuingAgencyCode` string, required
      - `primaryId` string, required
      - `serial` string
      - `raw` string: The ISO/IEC 15459 unique identifier: issuing agency code + primary id + serial, concatenated. Always derived by the server from the parts; a value sent on create is ignored. Present on every read.
      - `uri` string, uri: The ISO/IEC 18975 Data-Identifier query-form resolver URL generated by the server, following EN 18219 Table B.12: `https://id.tracepass.eu/?.25P=<IAC><primaryId>&.S=<serial>` (`.S` component omitted when there is no serial; parameter values are percent-encoded). Always derived by the server from the identifier parts; present on every read.
    - object: IEC 61406 Identification Link — an https URI (scheme "iec61406"). Not valid for battery passports (Battery Regulation Art. 77(3) requires gs1 or iso15459).
      - `scheme` 'iec61406', required
      - `uri` string, uri, required
    - object: W3C DID Core identifier (scheme "did"). Not valid for battery passports (Battery Regulation Art. 77(3) requires gs1 or iso15459).
      - `scheme` 'did', required
      - `did` string, required
      - `method` string, required
    - object: Digital Object Identifier — ISO 26324 (scheme "doi"). Stored as bare `10.<registrant>/<suffix>`. Any `https://doi.org/` or `doi:` prefix is stripped on input; the DOI resolves as `https://doi.org/<doi>`. `granularity` is REQUIRED per EN 18219 §5.6.2(b): a DOI product identifier must declare whether it identifies the product model, a production batch, or an individual item. Not valid for battery passports (Battery Regulation Art. 77(3) requires gs1 or iso15459).
      - `scheme` 'doi', required
      - `doi` string, required
      - `granularity` 'model' | 'batch' | 'item', required: Whether the DOI identifies the product model, a production batch, or an individual item (EN 18219 §5.6.2(b)). Must be supplied on create; returned unchanged on read.
  - `identifierKey` string: Canonical dedup key in `<scheme>:<parts>` form, e.g. `gs1:00012345678905:SN-001` or `did:did:example:123`. Globally unique (sparse index) — the same identifier cannot exist across different accounts.
  - `gs1` GS1Block
    - `gtin` string, required: GS1 GTIN with a valid check digit. Accepts 8 digits (GTIN-8), 12 digits (GTIN-12/UPC-A), 13 digits (GTIN-13/EAN-13), or 14 digits (GTIN-14). All forms are left-padded to 14 digits before storage; stored and returned values are always 14 digits.
    - `serialNumber` string, required
    - `digitalLinkUri` string, uri
  - `status` 'draft' | 'in_review' | 'approved' | 'published' | 'suspended' | 'expired' | 'archived'
  - `completionPercentage` integer
  - `fieldCounts` object
    - `total` integer
    - `empty` integer
    - `approved` integer
    - `pendingReview` integer
    - `flagged` integer
  - `fields` object
  - `parties` PartyMap: Map of role → Party. Each role appears at most once.
  - `lineage` PassportLineage: The stored, immutable lineage block of a successor battery passport.
    - `predecessors` object[]
      - `identifier` string
      - `trigger` 'preparation_for_reuse' | 'preparation_for_repurposing' | 'repurposing' | 'remanufacturing': The Art. 77(7) operation that produced the successor battery.
      - `internalPassportId` string: MongoDB ObjectId hex string (24 chars).
    - `noPredecessorReason` string
  - `dynamicDataAsOf` string, date-time, nullable: `measuredAt` of the newest battery measurement applied to this passport; null before the first one. Returned with `format=full`.
  - `successors` PassportSuccessor[]: Forward links to successor passports created from this one (same account only). Never changes this passport's fields.
    - `passportId` string: MongoDB ObjectId hex string (24 chars).
    - `identifier` string: Canonical resolvable URI of the successor passport.
    - `addedAt` string, date-time
  - `publishedAt` string, date-time
  - `suspendedAt` string, date-time
  - `suspensionReason` string
  - `archivedAt` string, date-time
  - `createdAt` string, date-time
  - `updatedAt` string, date-time

## Other responses

- `401`: Missing or invalid API key.
- `404`: Resource doesn't exist or is in a different workspace.
- `429`: Daily v1 write or passport-read budget exhausted. Resets at 00:00 UTC.

---

[API](https://skmtc.dev/tracepass/apis/tracepass-api.md) · [All operations](https://skmtc.dev/tracepass/apis/tracepass-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tracepass/apis/tracepass-api/revisions/60ddeb25638b?raw)
