TracePass
Passports

Get passport snapshot

Returns the full archival record for one immutability **snapshot**: the complete JSON-LD payload exactly as the passport stood when the snapshot was taken — on publish, or after any change to a published, suspended, expired or archived passport — the snapshot metadata (version, reason, `actor` — who caused the change — and timestamp), and content hash re-verification. To get the version valid at a given date instead, use `?at=` on **List passport snapshots**. `hashValid: false` means the stored payload has been modified since the snapshot was taken — indicative of at-rest tampering.

GET/api/v1/passports/{id}/snapshots/{snapshotId}
Download OpenAPI 3.1
GET/api/v1/passports/{id}/snapshots/{snapshotId}

Get passport snapshot

Returns the full archival record for one immutability **snapshot**: the complete JSON-LD payload exactly as the passport stood when the snapshot was taken — on publish, or after any change to a published, suspended, expired or archived passport — the snapshot metadata (version, reason, `actor` — who caused the change — and timestamp), and content hash re-verification. To get the version valid at a given date instead, use `?at=` on **List passport snapshots**. `hashValid: false` means the stored payload has been modified since the snapshot was taken — indicative of at-rest tampering.

The `restorable` flag indicates whether `rawFields` was captured at snapshot time. When `restorable` is `true`, a dashboard restore action can rewind the live passport to this version field-by-field. When `false` (either because `rawFields` was not captured, or is empty), the snapshot is evidence-only — the JSON-LD is still preserved and verifiable, but an automated field-level restore is not possible.

Tenant-scoped: you can only read snapshots for your company's passports. Counts as one v1 passport read against the daily cap. Supply the snapshot id from the `entries[].id` values returned by **List passport snapshots**.

Path parameters

  • idrequired

    ObjectId

    Passport ID.

  • snapshotIdrequired

    ObjectId

    Snapshot ID (from the entries[].id field of List passport snapshots).

Headers

  • Authorizationrequired

    string

    `Bearer <token>` — either a `tp_` API key (Developer → API Keys; simplest, for server-to-server) or an OAuth 2.0 access token (Developer → OAuth Apps; for user-authorized apps, scoped + revocable). The Authentication page has the full OAuth flow and scope list.

    e.g. Bearer tp_REDACTED_xxxxxxxxxxxx

Request

curl -sS "https://app.tracepass.eu/api/v1/passports/6650b2c3d4e5f6a7b8c9d0e1/snapshots/65a0f1b2c3d4e5f6a7b8c9d1" \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx"

Response

{
  "id": "65a0f1b2c3d4e5f6a7b8c9d1",
  "version": 3,
  "reason": "field_edit",
  "actor": "apikey:tp_89b2482d",
  "snapshotAt": "2026-09-15T14:32:00.000Z",
  "contentHash": "a3f1c2d4e5b6a7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2",
  "hashValid": true,
  "restorable": true,
  "fieldCount": 124,
  "jsonLd": {
    "@context": "https://gs1.org/voc/",
    "@type": "gs1:Product",
    "gs1:productName": "Industrial Battery 48V 200Ah",
    "gs1:gtin": "09506000134376"
  }
}