---
title: Окончателно изтриване на паспорт
description: Окончателно изтриване на непубликуван паспорт (draft / in_review). Каскадно изтрива извличания, agent сесии, supplier връзки, R2 файлове. Само платени планове.
canonical: "https://www.tracepass.eu/bg/docs/delete-passport"
locale: bg
source: "https://www.tracepass.eu/bg/docs/delete-passport"
---

# Окончателно изтриване на паспорт

> Окончателно изтриване на непубликуван паспорт (draft / in_review). Каскадно изтрива извличания, agent сесии, supplier връзки, R2 файлове. Само платени планове.

```http
DELETE /api/v1/passports/{id}
```

**Окончателно и необратимо** — записът за паспорта плюс всички каскадно свързани зависимости се премахват от базата данни. Каскадата включва AI извличания, състояние на agent сесия, заявки към доставчици, свързани само с този паспорт, събития от сканирания + сервизни събития, и всички качени документи, чиято единствена референция е този паспорт (документи, споделени с други паспорти/продукти, остават). R2 storage под папката на паспорта също се изчиства.

**Само непубликувани паспорти отговарят на условията.** Паспорт със статус `draft` или `in_review` и `publishedAt: null` може да бъде изтрит; всичко останало връща `409 Conflict` с поле `reason`, обясняващо политиката. Това е умишлено: защитата на отпечатаните QR кодове в обращение се запазва — паспорт, който някога е резолвирал публично, не може да бъде тихо унищожен.

**Функция за платени планове.** Endpoint връща `403 Forbidden` с `reason` на Free планове; използвайте `POST /api/v1/passports/{id}/archive` вместо това — архивирането запазва записа в одитната ви следа и работи на всеки план.

Брои се като едно v1 записване. Поддържа `Idempotency-Key`. Не се изпраща webhook (записът в `billingEvents` е следата).

## 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 | ObjectId | yes | ID на паспорта. |

## Examples

```bash
curl -sS -X DELETE \
  https://app.tracepass.eu/api/v1/passports/6650b2c3d4e5f6a7b8c9d0e1 \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx"
```

```typescript
const res = await fetch(
  `https://app.tracepass.eu/api/v1/passports/${id}`,
  {
    method: "DELETE",
    headers: { Authorization: `Bearer ${process.env.TRACEPASS_API_KEY}` },
  },
);
if (res.status === 409) {
  // not eligible — read `reason` from the body
  const { reason } = await res.json();
  console.warn("Cannot delete:", reason);
}
```

```python
import os, requests
res = requests.delete(
    f"https://app.tracepass.eu/api/v1/passports/{passport_id}",
    headers={"Authorization": f"Bearer {os.environ['TRACEPASS_API_KEY']}"},
)
if res.status_code == 409:
    print("Not eligible:", res.json().get("reason"))
else:
    res.raise_for_status()
```

## Responses

### 200 — Изтрит

```json
{
  "message": "Passport permanently deleted",
  "summary": {
    "passportId": "6650b2c3d4e5f6a7b8c9d0e1",
    "serialNumber": "SN-001",
    "gtin": "09506000134369",
    "deletedCounts": {
      "extractions": 3,
      "agentSessions": 1,
      "serviceEvents": 0,
      "scanEvents": 0,
      "ownershipTransfers": 0,
      "supplierRequestRefsRemoved": 0,
      "supplierRequestsDeleted": 0,
      "epcisEventRefsRemoved": 0,
      "epcisEventsDeleted": 0,
      "documentRefsRemoved": 1,
      "documentsDeleted": 1,
      "r2ObjectsDeleted": 4,
      "documentR2ObjectsDeleted": 1
    },
    "dppsActiveDelta": -1
  }
}
```

### 403 — Гейт за план

```json
{
  "error": "Permanent delete is not available on your plan",
  "reason": "Hard-delete is a paid-plan feature. Use POST /api/v1/passports/{id}/archive instead."
}
```

### 409 — Не отговаря

```json
{
  "error": "Passport is not eligible for permanent deletion",
  "reason": "This passport has been published. Archive it instead — the QR remains traceable for audit."
}
```

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

```json
{ "error": "Passport not found" }
```

## Related

- [Архивиране (одит-безопасна алтернатива)](https://www.tracepass.eu/bg/docs/archive-passport.md)
- [Спиране на паспорт](https://www.tracepass.eu/bg/docs/suspend-passport.md)
