---
title: Актуализиране на продукт
description: Актуализиране на полета чрез изпращане само на промененото. imageUrls ЗАМЕНЯ съществуващия масив (CMS-ът ви остава canonical). Поддържа Idempotency-Key.
canonical: "https://www.tracepass.eu/bg/docs/update-product"
locale: bg
source: "https://www.tracepass.eu/bg/docs/update-product"
---

# Актуализиране на продукт

> Актуализиране на полета чрез изпращане само на промененото. imageUrls ЗАМЕНЯ съществуващия масив (CMS-ът ви остава canonical). Поддържа Idempotency-Key.

```http
PATCH /api/v1/products/{id}
```

Patch на едно или повече полета на продукт. Изпратете само ключовете, които искате да промените — пропуснатите полета остават непроменени. Семантиката на цял масив за `imageUrls` е умишлена: CMS на клиента е каноничният източник на изображения, така че PATCH с `imageUrls: ["a","b"]` заменя предишните. За добавяне на едно изображение без презаписване, използвайте multipart upload endpoint.

Брои се като едно v1 записване. Поддържа Idempotency-Key. Уникалността на `model` се проверява отново при промяна; `description: null` изчиства описанието (различно от пропускане на ключа).

## 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 на продукта. |
| `name` | body | string (1-200) | no | Показвано име. |
| `model` | body | string (1-100) | no | Идентификатор на модел. Уникалността се проверява при промяна. |
| `description` | body | string \| null (≤ 2000) | no | Подайте `null` за изчистване. |
| `defaultFieldValues` | body | object | no | Заменя seed стойностите за бъдещи паспорти. |
| `imageUrls` | body | string\[\] (max 20) | no | Заменя пълния масив от изображения. |
| `status` | body | enum | no | `active` или `archived`. |
| `sourceLocale` | body | string (ISO 639-1) | no | Актуализира локала на `name` / `description`. |

## Examples

```bash
curl -sS -X PATCH \
  https://app.tracepass.eu/api/v1/products/6650a1b2c3d4e5f6a7b8c9d0 \
  -H "Authorization: Bearer tp_REDACTED_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Li-Ion 48V Battery Pack (revised)",
    "imageUrls": ["https://cdn.example.com/new-hero.jpg"]
  }'
```

```typescript
await fetch(`https://app.tracepass.eu/api/v1/products/${id}`, {
  method: "PATCH",
  headers: {
    Authorization: `Bearer ${process.env.TRACEPASS_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    name: "Li-Ion 48V Battery Pack (revised)",
    imageUrls: ["https://cdn.example.com/new-hero.jpg"],
  }),
});
```

```python
import os, requests
res = requests.patch(
    f"https://app.tracepass.eu/api/v1/products/{product_id}",
    headers={"Authorization": f"Bearer {os.environ['TRACEPASS_API_KEY']}"},
    json={
        "name": "Li-Ion 48V Battery Pack (revised)",
        "imageUrls": ["https://cdn.example.com/new-hero.jpg"],
    },
)
res.raise_for_status()
```

## Responses

### 200 — Актуализиран

```json
{
  "_id": "6650a1b2c3d4e5f6a7b8c9d0",
  "name": "Li-Ion 48V Battery Pack (revised)",
  "imageUrls": ["https://cdn.example.com/new-hero.jpg"],
  "updatedAt": "2026-05-09T15:30:00.000Z"
}
```

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

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

### 409 — Дублиран model

```json
{ "error": "A product with this model already exists for your company" }
```

## Related

- [Създаване на продукт](https://www.tracepass.eu/bg/docs/create-product.md)
- [Качване на изображение](https://www.tracepass.eu/bg/docs/upload-product-image.md)
