> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.elall.webland.sk/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.elall.webland.sk/_mcp/server.

# Produkty a polia

> Povinné a voliteľné polia synchronizácie produktov z Elall.

## Identifikátor produktu

Každá položka v sync requeste musí mať **stock\_code** (skladové číslo z Elall). Voliteľne môže obsahovať **ean**. Server podľa kľúča nájde interný `item_id` v tabuľke `product_catalog`:

* s EAN: lookup `(ean, stock_code)`
* bez EAN: lookup len `stock_code` (riadky v katalógu bez EAN)

| Pole         | Povinné | Popis                                                          |
| ------------ | ------- | -------------------------------------------------------------- |
| `stock_code` | áno     | Skladové číslo z Elall                                         |
| `ean`        | nie     | EAN — ak je uvedený, použije sa kompozitný kľúč s `stock_code` |

Interný Segat `item_id` **neposielate** — rieši ho server. Hodnoty `ean` a `stock_code` sa pri sync **neprepisujú** v katalógu (slúžia len na lookup).

Duplicitný kľúč `(ean, stock_code)` v jednom batchi → **400**. Neznámy kľúč → HTTP **200** a `unknown_products > 0`.

## Povinné polia (každá položka)

| Pole             | Typ                   | Popis                                   |
| ---------------- | --------------------- | --------------------------------------- |
| `status`         | `active` \| `passive` | Stav produktu v Segat                   |
| `segat_quantity` | celé číslo ≥ 0        | Množstvo na sklade Segat **po** doklade |
| `catalog_price`  | číslo ≥ 0             | Cenníková cena                          |
| `eshop_price`    | číslo ≥ 0             | E-shop cena                             |

Ide o **cenu zo skladového kontextu** v Elall, nie o názov výrobku.

## Voliteľné polia

| Pole           | Popis                                                        |
| -------------- | ------------------------------------------------------------ |
| `request_id`   | Idempotencia a audit (pri `PUT` v tele, pri `POST` v koreni) |
| `sync_context` | `source_type`, `source_ref`, `note`, `actor`                 |

Ak `request_id` chýba, server doplní UUID a vráti ho v odpovedi.

## Katalógové polia (PATCH)

Všetky sú **voliteľné**. Vynechané alebo `null` = pole sa v Segat **neaktualizuje** (vhodné pri skladových dokladoch, keď sa mení len množstvo).

**Poznámka:** `ean` a `stock_code` sú identifikátor — v PATCH overlay sa neaktualizujú.

| JSON kľúč          | Význam                                                                                                  |
| ------------------ | ------------------------------------------------------------------------------------------------------- |
| `name`             | Názov                                                                                                   |
| `section_width_mm` | Šírka (mm) — číslo alebo reťazec (napr. `215`, `P245`, `30X9.5`)                                        |
| `aspect_ratio`     | Profil — číslo alebo reťazec (napr. `55`, `50Z`, `31X10.5`)                                             |
| `rim_inch`         | Priemer ráfika — **reťazec** (max 16 znakov), napr. `"16"`, `"R21"`, `"-16"`; alias `rim_diameter_inch` |
| `tread_name`       | Názov dezénu                                                                                            |
| `name_suffix`      | Doplnok k názvu; alias `name_supplement`                                                                |
| `load_index`       | Index nosnosti                                                                                          |
| `speed_index`      | Index rýchlosti                                                                                         |
| `special_marking`  | Špeciálne označenie                                                                                     |
| `run_on_flat`      | ROF (boolean)                                                                                           |
| `brand`            | Značka                                                                                                  |
| `usage`            | Trieda použitia; alias `usage_type`                                                                     |
| `season`           | Sezóna (text do 32 znakov)                                                                              |
| `on_promotion`     | Akcia                                                                                                   |
| `on_clearance`     | Výpredaj                                                                                                |
| `dot_code`         | DOT                                                                                                     |
| `weight_kg`        | Hmotnosť (kg)                                                                                           |
| `discontinued`     | Nepoužívať / nevyrába sa                                                                                |
| `eu_label`         | EU štítok                                                                                               |

### `rim_inch` (typ reťazec)

Pole nie je číslo — hodnoty môžu obsahovať prefix `R` alebo mínus (napr. špecifické zápisy z Elall). Posielajte ako JSON reťazec:

```json
"rim_inch": "R21"
```

Platné aj `"16"`, `"-16"`. Starý kľúč `rim_diameter_inch` sa správa rovnako.

## SEGAT a viac skladov v Elall

Do `segat_quantity` (a cien) pošlite **agregát** určený pre jeden logický sklad `segat` v Segat.

## Neznáme produkty

Ak kľúč produktu nie je v `product_catalog`, server zapíše záznam do `pending_products` a v odpovedi zvýši `unknown_products`. Riešte založením riadku v `product_catalog` (viazaného na existujúci `item_id` v `products`) a opakujte sync.

## API Reference

Schémy request/response: sekcia **Elall API** → `POST /products/sync` a `PUT /products/item`.