Batch-create passports (up to 100 per call).
Create up to 100 passports in one call. Each item carries the same body shape as the single-create endpoint; partial-success per item — each gets its own status in the response array.
The whole batch consumes N writes upfront against the daily-write budget; if that would overflow, the entire batch returns 429 (no partial billing). Same applies to DPP overage at the batch level — when the DPP quota would be exceeded the batch returns 402 with overage_required, and confirmOverage: true accepts the overage charge for the whole batch.
Each item may carry its own lineage block (second-life battery successors). A lineage rule violation fails that item only: its result has status: "error" and error starting with the rule code, e.g. duplicate_predecessor: ….
Request
- Base URL: https://app.tracepass.eu
- URL: https://app.tracepass.eu/api/v1/passports/batch
- 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:write)
Headers
UUID v4 (or any opaque string ≤ 64 chars) per logical operation. The platform stores the first response for 24 hours and replays it on the same key + same workspace. Reusing the same key with a different request body returns 422.
Request body
Example request
{
"passports": [
{
"productId": "6650a1b2c3d4e5f6a7b8c9d0",
"identifier": {
"gtin": "04012345000015"
},
"gs1": {
"gtin": "04012345000015"
},
"lineage": {
"predecessors": [
{
"internalPassportId": "6650a1b2c3d4e5f6a7b8c9d0"
}
]
}
}
]
}Response
Partial-success batch result.
Example response
{
"results": [
{
"data": {
"_id": "6650a1b2c3d4e5f6a7b8c9d0",
"companyId": "6650a1b2c3d4e5f6a7b8c9d0",
"productId": "6650a1b2c3d4e5f6a7b8c9d0",
"templateId": "6650a1b2c3d4e5f6a7b8c9d0",
"identifier": {
"gtin": "04012345000015"
},
"gs1": {
"gtin": "04012345000015",
"serialNumber": "BP-48V-100-000001",
"digitalLinkUri": "https://id.tracepass.eu/p/01/04012345000015/21/BP-48V-100-000001"
},
"lineage": {
"predecessors": [
{
"internalPassportId": "6650a1b2c3d4e5f6a7b8c9d0"
}
]
},
"successors": [
{
"passportId": "6650a1b2c3d4e5f6a7b8c9d0"
}
]
},
"warnings": [
{
"path": [
"operatorIdentifier"
],
"message": "LEI 353800SZHNPYLZTIX835 has lapsed: its GLEIF record has not been renewed. It still identifies the entity."
}
]
}
]
}Changes
No recorded changes to this operation across all 1 revision of this API.