/api/v1/registry/upload-fileФайл за качване в EU DPP Registry за паспорти на батерии
Създава XML файла, който икономическият оператор качва на уебсайта на EU DPP Registry (DPP Registration → upload a file), за посочените от вас паспорти на батерии, до 100 на извикване. Регистрацията е собствено действие на оператора със собствения му EU Login; TracePass подготвя файла и никога не го подава.
Влизат само паспортите, които биха преминали. Регистърът отхвърля целия файл заради един грешен запис, затова всеки друг паспорт се връща в excluded с reason: not_found, not_battery, not_published, registered_in_production, registration_in_progress (в процес на изпращане към регистър по EN 18222), readiness_blocked (блокиращите констатации са в details), invalid_upi, duplicate_upi (същият адрес като на друг паспорт във файла) или over_limit (след 100-ия). included изброява паспортите във файла, всеки със своя адрес.
Адресът на всеки включен паспорт се фиксира в паспорта (registryUpi) и подготовката се записва (registrationPreparedVia: "file"). Запазете xml под името filename и го качете непроменен: името съдържа само знаците, които регистърът приема. Подготовката не е регистрация: запишете отговора на регистъра за всеки паспорт с POST /api/v1/passports/{id}/registration.
Отговорът е JSON, а не директно XML, за да може да се повтори с Idempotency-Key и да съдържа изключените паспорти. Само за платени планове (402 при Free). OAuth извикванията трябва да са от името на администратор или собственик. Брои се по едно v1 записване за всеки включен паспорт.
Хедъри
- Authorizationзадължително
string
Bearer <token>— илиtp_API ключ (Developer → API Keys; най-просто, за server-to-server), или OAuth 2.0 access token (Developer → OAuth Apps; за приложения, авторизирани от потребител, scoped и отзоваеми). Страницата Authentication съдържа пълния OAuth поток и списъка със scopes.e.g. Bearer tp_REDACTED_xxxxxxxxxxxx
- Idempotency-Key
string
UUID v4.
Полета в тялото
- passportIdsзадължително
string[] (24 hex chars each, 1–100)
Паспортите, които да влязат във файла. Паспортите, които не биха преминали, се връщат в
excluded, вместо извикването да се провали.e.g. ["6650b2c3d4e5f6a7b8c9d0e1", "6650b2c3d4e5f6a7b8c9d0e2"]
Заявка
curl -sS -X POST \
https://app.tracepass.eu/api/v1/registry/upload-file \
-H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 5a8d2f17-9c4e-4b3a-8e61-0f2c7d9b4e35" \
-d '{ "passportIds": ["6650b2c3d4e5f6a7b8c9d0e1", "6650b2c3d4e5f6a7b8c9d0e2"] }'Отговор
{
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n…",
"filename": "acme-batteries-dpp-registry-batch-2026-11-06.xml",
"included": [
{
"id": "6650b2c3d4e5f6a7b8c9d0e1",
"upi": "https://id.tracepass.eu/01/04012345000016/21/A1B2C3"
}
],
"excluded": [
{
"id": "6650b2c3d4e5f6a7b8c9d0e2",
"reason": "readiness_blocked",
"details": [
"Required field \"Battery Carbon Footprint — Total\" has no value."
]
}
]
}