TracePass
Паспорти

Записване на резултата от EU DPP Registry за паспорт на батерия

Записва това, което икономическият оператор съобщава от уебсайта на EU DPP Registry, за един публикуван паспорт на **батерия**. TracePass записва изявлението на оператора и не го проверява в регистъра. Тялото има една от две форми според `environment`.

POST/api/v1/passports/{id}/registration
Изтегли OpenAPI 3.1
POST/api/v1/passports/{id}/registration

Записване на резултата от EU DPP Registry за паспорт на батерия

Записва това, което икономическият оператор съобщава от уебсайта на EU DPP Registry, за един публикуван паспорт на **батерия**. TracePass записва изявлението на оператора и не го проверява в регистъра. Тялото има една от две форми според `environment`.

**`environment: "production"`** — паспортът е регистриран в производствения регистър. Задава `placeOnMarketStatus: "placed"`, `registrationMode: "website"`, `placedOnMarketAt` и, ако го изпратите, `registrationId` (идентификаторът на регистрацията в регистъра, най-много 200 знака). `placedOnMarketAt` е датата на пускане на пазара във формат `YYYY-MM-DD`: по подразбиране днешната, не в бъдещето и не преди първото публикуване на паспорта. Страните на оператора и съоръжението се заключват (запис на страна, който би променил съхранен идентификатор, връща 409 `operator_locked`), резервното копие на паспорта се поставя на опашка и се изпраща webhook `passport.placed_on_market`.

**`environment: "acceptance"`** — тест в приемната среда на регистъра: `result` е `passed` или `failed`, като при неуспех се добавя кодът за грешка на регистъра в `errorCode` (най-много 100 знака, напр. `SEMANTIC_VALIDATION_UNAVAILABLE`). Тестът няма правно действие и не променя в паспорта нищо освен `registryAcceptanceTest`.

**Откази:** `400` при тяло, което не минава валидиране, или при отхвърлена дата (`invalid_date`, когато не е `YYYY-MM-DD`, `date_in_future`, `date_before_publication`, `registration_id_too_long`); `409` при `not_a_battery`, `not_published` или, за производствената среда, `already_registered` (паспортът вече е пуснат на пазара или е в процес на изпращане към регистър по EN 18222). Погрешен запис се отменя с `DELETE /api/v1/passports/{id}/registration`.

**Само за платени планове** (`402` при Free). OAuth извикванията трябва да са от името на администратор или собственик. Връща паспорта след записа. Брои се като едно 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.

Полета в тялото

  • environmentзадължително

    "production" | "acceptance"

    От коя среда на регистъра е резултатът. `acceptance` е тест без правно действие.

    e.g. production

  • placedOnMarketAt

    string (YYYY-MM-DD)

    Само за производствената среда. Датата на пускане на пазара. По подразбиране днешната; не в бъдещето и не преди първото публикуване на паспорта.

    e.g. 2027-03-01

  • registrationId

    string (≤ 200 chars)

    Само за производствената среда. Идентификаторът на регистрацията в регистъра, ако го имате.

    e.g. URI-000-00-000

  • result

    "passed" | "failed"

    Само за `acceptance` и там е задължително. Резултатът от теста.

    e.g. failed

  • errorCode

    string (≤ 100 chars)

    Само за `acceptance`. Кодът за грешка на регистъра при неуспешен тест.

    e.g. SEMANTIC_VALIDATION_UNAVAILABLE

Заявка

curl -sS -X POST \
  https://app.tracepass.eu/api/v1/passports/6650b2c3d4e5f6a7b8c9d0e1/registration \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 9e3b6c28-1f7a-4d52-b0e4-6a8c2d1f5b97" \
  -d '{ "environment": "production", "placedOnMarketAt": "2027-03-01", "registrationId": "URI-000-00-000" }'

Отговор

{
  "passport": {
    "_id": "6650b2c3d4e5f6a7b8c9d0e1",
    "status": "published",
    "placeOnMarketStatus": "placed",
    "registrationMode": "website",
    "placedOnMarketAt": "2027-03-01T00:00:00.000Z",
    "registrationId": "URI-000-00-000",
    "registryUpi": "https://id.tracepass.eu/01/04012345000016/21/A1B2C3",
    "registrationPreparedAt": "2027-02-26T09:12:00.000Z",
    "registrationPreparedVia": "form"
  }
}