/api/v1/passports/{id}/place-on-marketИзпращане на паспорт на батерия към API на регистър по EN 18222
Изпраща публикуван паспорт на батерия към регистър, който приема извикването registerDPP по EN 18222, чрез достъпа до API на регистъра, настроен за вашия акаунт (API ключ или bearer token), така че записът се прави с вашите собствени идентификационни данни. Само паспорти на батерии.
Това не е пътят към EU DPP Registry. Регистърът на Комисията не приема това извикване, нито тези идентификационни данни: икономическият оператор се регистрира там на уебсайта на регистъра, със собствения си EU Login. За този път вземете адреса за поставяне във формуляра на регистъра (POST /api/v1/passports/{id}/registry-upi) или файл за качване (POST /api/v1/registry/upload-file), след което запишете отговора на регистъра (POST /api/v1/passports/{id}/registration).
Само за платени планове (402 при Free): паспорт на Free изтича след 30 дни, а регистриран паспорт, който престане да се отваря, нарушава регистрацията.
Асинхронно. Заявката проверява паспорта, задава placeOnMarketStatus на placing и веднага връща 202 с { passport, passportId, status: "placing", dppId }. Заявката към регистъра се изпълнява във фонов режим, с автоматични повторни опити, докато регистърът е недостъпен. Прочетете паспорта, за да проследите резултата: placed означава, че регистърът го е приел (placedOnMarketAt, както и registrationId, когато регистърът е върнал такъв), и изпраща webhook passport.placed_on_market; rejected означава, че регистърът го е отказал или не е бил достъпен след изчерпване на повторните опити (registrationRejectedAt, registrationRejectionReason), и изпраща webhook passport.placement_rejected. За нов опит отстранете причината и извикайте отново този endpoint — отказан паспорт може да бъде изпратен отново, а новият опит изчиства предишния отказ. Ако паспортът още няма DPP ID, той получава такъв и той се връща като dppId.
Отказите връщат 409 с код, проверявани в този ред: not_a_battery, not_published (само публикуван паспорт може да бъде изпратен), already_placed (в процес или вече пуснат), operator_id_missing (акаунтът няма идентификатор на икономически оператор; задайте го в настройките на компанията), registry_not_configured (за акаунта не е настроен достъп до API на регистър; администратор го настройва в таблото, в Settings → EN 18222 registry API), registry_host_not_allowed (TracePass не изпраща регистрации до адреса на регистъра, настроен за акаунта; проверете URL адреса на регистъра в Settings → EN 18222 registry API) и registry_not_ready, чийто findings[] изброява констатациите от проверката за готовност за регистъра, които пречат (findingDetails[] съдържа същите констатации с тяхната тежест, като блокиращите са първи) — проверката за готовност за регистъра ги връща в структуриран вид.
След пускането на пазара операторът се заключва: запис на страна, който би променил съхранен operatorIdentifier или facilityIdentifier, връща 409 operator_locked. За корекция маркирайте паспорта за изтриване и създайте нов. Без тяло на заявката. Брои се като едно v1 записване, и то само когато заявката е приета. Поддържа Idempotency-Key.
Параметри в пътя
- idзадължително
string (24 hex chars)
ID на публикуван паспорт на батерия.
Хедъри
- 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.
Заявка
curl -sS -X POST \
https://app.tracepass.eu/api/v1/passports/6650b2c3d4e5f6a7b8c9d0e1/place-on-market \
-H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx" \
-H "Idempotency-Key: 3f1c9a52-8b7e-4d6a-9f0e-2c4b6d8e0a13"Отговор
{
"passport": {
"_id": "6650b2c3d4e5f6a7b8c9d0e1",
"status": "published",
"placeOnMarketStatus": "placing"
},
"passportId": "6650b2c3d4e5f6a7b8c9d0e1",
"status": "placing",
"dppId": "https://id.tracepass.eu/dpp/7b1e4c2a-5f3d-4e8a-9c6b-2d1f0a3e5b7c"
}