---
title: Пускане на паспорт на батерия на пазара
description: "Регистрира публикуван паспорт на батерия в регистъра на ЕС (чл. 77, пар. 10). Асинхронно: връща 202, после паспортът става placed или rejected."
canonical: "https://www.tracepass.eu/bg/docs/place-passport-on-market"
locale: bg
source: "https://www.tracepass.eu/bg/docs/place-passport-on-market"
---

# Пускане на паспорт на батерия на пазара

> Регистрира публикуван паспорт на батерия в регистъра на ЕС (чл. 77, пар. 10). Асинхронно: връща 202, после паспортът става placed или rejected.

```http
POST /api/v1/passports/{id}/place-on-market
```

Пуска публикуван паспорт на **батерия** на пазара: паспортът се регистрира в регистъра на ЕС за цифрови продуктови паспорти чрез достъпа до регистъра, настроен за вашия акаунт, така че записът се прави с вашите собствени идентификационни данни (Регламент (ЕС) 2023/1542 относно батериите, чл. 77, параграф 10). Публикуването на паспорт не го регистрира; това прави тази заявка. Само паспорти на батерии.

**Асинхронно.** Заявката проверява паспорта, задава `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` (администратор настройва достъпа до регистъра в таблото, в Settings → EU Registry) и `registry_not_ready`, чийто `findings[]` изброява констатациите от проверката за готовност за регистъра, които пречат — изпълнете проверката за готовност за регистъра, за да ги получите в структуриран вид. Празен `findings[]` означава, че настроеният регистър все още не приема подавания от TracePass.

**След пускането на пазара операторът се заключва:** запис на страна, който би променил съхранен `operatorIdentifier` или `facilityIdentifier`, връща 409 `operator_locked`. За корекция маркирайте паспорта за изтриване и създайте нов. Без тяло на заявката. Брои се като едно v1 записване, и то само когато заявката е приета. Поддържа `Idempotency-Key`.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Authorization` | header | string | yes | `Bearer <token>` — или `tp_` API ключ (Developer → API Keys; най-просто, за server-to-server), или OAuth 2.0 access token (Developer → OAuth Apps; за приложения, авторизирани от потребител, scoped и отзоваеми). Страницата Authentication съдържа пълния OAuth поток и списъка със scopes. |
| `Idempotency-Key` | header | string | no | UUID v4. |
| `id` | path | string (24 hex chars) | yes | ID на публикуван паспорт на батерия. |

## Examples

```bash
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"
```

```typescript
const res = await fetch(
  `https://app.tracepass.eu/api/v1/passports/${id}/place-on-market`,
  {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.TRACEPASS_API_KEY}`,
      "Idempotency-Key": crypto.randomUUID(),
    },
  },
);

if (res.status === 409) {
  const { error, findings } = await res.json();
  // e.g. registry_not_ready: findings lists what stands in the way.
  console.log(error, findings ?? []);
} else if (res.status === 202) {
  // Accepted: read the passport later — placeOnMarketStatus becomes
  // "placed" (registrationId) or "rejected" (registrationRejectionReason).
  const { dppId } = await res.json();
  console.log("placing", dppId);
}
```

```python
import os, uuid, requests
res = requests.post(
    f"https://app.tracepass.eu/api/v1/passports/{passport_id}/place-on-market",
    headers={
        "Authorization": f"Bearer {os.environ['TRACEPASS_API_KEY']}",
        "Idempotency-Key": str(uuid.uuid4()),
    },
)
if res.status_code == 409:
    body = res.json()
    print(body["error"], body.get("findings", []))
else:
    res.raise_for_status()
    print("placing", res.json()["dppId"])
```

## Responses

### 202 — В процес

```json
{
  "passport": {
    "_id": "6650b2c3d4e5f6a7b8c9d0e1",
    "status": "published",
    "placeOnMarketStatus": "placing"
  },
  "passportId": "6650b2c3d4e5f6a7b8c9d0e1",
  "status": "placing",
  "dppId": "https://id.tracepass.eu/dpp/7b1e4c2a-5f3d-4e8a-9c6b-2d1f0a3e5b7c"
}
```

### 409 — Регистърът не е готов

```json
{
  "error": "registry_not_ready",
  "findings": [
    "Required field \"carbonFootprintTotal\" has no value."
  ]
}
```

### 409 — Вече пуснат

```json
{ "error": "already_placed" }
```

### 404 — Не е намерен

```json
{ "error": "passport_not_found" }
```

## Related

- [Проверка на готовността за регистъра](https://www.tracepass.eu/bg/docs/passport-registry-readiness.md)
- [Прочитане на паспорт](https://www.tracepass.eu/bg/docs/get-passport.md)
- [Добавяне или замяна на страна](https://www.tracepass.eu/bg/docs/upsert-party.md)
