/api/v1/passportsСъздаване на паспорт
Създава един Цифров продуктов паспорт. Паспортът е обвързан с продукт (productId) и се идентифицира с GS1 GTIN + сериен номер, уникален в рамките на този GTIN. Новите паспорти започват в статус `draft` — полетата се попълват чрез следващи PATCH повиквания и паспортът се публикува от таблото, когато прегледът приключи.
GTIN трябва да е 14 цифри с валидна GS1 контролна цифра и да не е регистриран от друг тенант. Брои се като едно v1 записване И консумира един DPP слот от квотата `maxDpps` на плана — когато тази квота е изчерпана и планът ви поддържа overage, повикването връща 402 с тяло `overage_required`; повторете с `confirmOverage: true`, за да приемете таксата за паспорт.
Поддържа незадължителен Idempotency-Key заголовък — платформата повтаря оригиналния 201 отговор в продължение на 24 часа за същия ключ, така че повторни мрежови опити са безопасни.
Хедъри
- Authorizationзадължително
string
`Bearer <api-key>`. Генерирайте ключове в Developer → API keys (на всеки план, включително Free; дневният брой заявки скалира с плана).
e.g. Bearer tp_REDACTED_xxxxxxxxxxxx
- Idempotency-Key
string
UUID v4 (или произволен непрозрачен низ ≤ 255 знака) за логическа операция. Първият отговор се повтаря в продължение на 24 часа.
Полета в тялото
- productIdзадължително
ObjectId
ID на продукта, към който принадлежи паспортът. Трябва да принадлежи на компанията на API ключа.
e.g. 6650a1b2c3d4e5f6a7b8c9d0
- gs1.gtinзадължително
string (14 digits)
GTIN-14 с валидна GS1 контролна цифра. Не трябва вече да е регистриран от друг тенант.
e.g. 04012345000015
- gs1.serialNumberзадължително
string (1-100 chars)
Сериен номер, уникален в рамките на GTIN. Най-разпространеният модел е модел на продукта + последователност (BP-48V-100-000001).
e.g. BP-48V-100-000001
- parties
Record<role, Party>
Незадължителен структурен блок parties. Карта по роля — `manufacturer`, `importer`, `authorisedRepresentative`, `distributor`, `recycler`, `producerResponsibilityOrg`. Всяка стойност е Party. Виж endpoint Upsert party за формата на отделен Party. Ролите могат да бъдат добавени или заменени след създаване чрез PATCH /api/v1/passports/{id}/parties/{role}.
- confirmOverage
boolean
Приемете таксата overage за паспорт, когато квотата `maxDpps` на плана вече е изчерпана. Изисква се само след 402 отговор при предходен опит.
Заявка
curl -sS https://app.tracepass.eu/api/v1/passports \
-H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx" \
-H "Idempotency-Key: 7b4f1e2c-9a3d-4e5b-8c1a-2d3e4f5a6b7c" \
-H "Content-Type: application/json" \
-d '{
"productId": "6650a1b2c3d4e5f6a7b8c9d0",
"gs1": {
"gtin": "04012345000015",
"serialNumber": "BP-48V-100-000001"
}
}'Отговор
{
"_id": "6650b2c3d4e5f6a7b8c9d0e1",
"companyId": "6650a0b1c2d3e4f5a6b7c8d9",
"productId": "6650a1b2c3d4e5f6a7b8c9d0",
"templateId": "6650a1b2c3d4e5f6a7b8c9d1",
"gs1": {
"gtin": "04012345000015",
"serialNumber": "BP-48V-100-000001",
"digitalLinkUri": "https://id.tracepass.eu/p/01/04012345000015/21/BP-48V-100-000001"
},
"status": "draft",
"completionPercentage": 32,
"fieldCounts": {
"total": 52,
"empty": 35,
"approved": 17,
"pendingReview": 0,
"flagged": 0
},
"fields": { "...": "...seeded from product defaults + template defaults + company prefill..." },
"createdAt": "2026-05-09T10:00:00.000Z"
}