# MCP: sklad a nákup zboží

> Nástroje MCP pro zásoby, skladové pohyby, dodavatele zboží, objednávky u dodavatele a inventury: oprávnění, potvrzení, důsledky zápisu a parametry.

- Sekce: Pro vývojáře
- Stránka: https://shopzi.cz/dokumentace/vyvojari/mcp-sklad
- Ověřeno: 2026-09-16

---

Stav zásob a kniha skladových pohybů, dodavatelé zboží a jejich ceníky, objednávky u dodavatele i se změnou stavu, inventury a feedy dodavatelů s průběžnou synchronizací cen a skladu. Zásoba se nikdy nepřepisuje číslem: naskladnění, oprava, odpis, příjem dodávky i uzavření inventury přidávají skladový pohyb.

Nástroje volá klient přes server MCP na doméně obchodu, například `https://muj-eshop.cz/api/mcp`, a v odpovědi na `tools/list` dostane jen ty, na jejichž oprávnění klíč dosáhne. Jak server mluví, kdy se ptá člověka a jak se změny vracejí, popisuje článek [MCP server](/dokumentace/vyvojari/mcp-server).

U každého nástroje stojí oprávnění, které chce, jestli se server před provedením zeptá člověka a kudy, jestli volání strhne kredity obchodu nebo peníze z karty, co vrací pro deník změn a jakou větu o důsledku člověk v potvrzení uvidí. Všechno z toho se vyhodnocuje z téhož kódu, podle kterého se server rozhoduje. Popisy parametrů jsou převzaté ze schématu, které server posílá v `tools/list`; kde se v něm text obrací přímo k modelu, je tady převedený do vykání. Povinnost parametru platí uvnitř objektu, ve kterém parametr leží.

Před zápisem, který přepisuje nebo maže, před útratou kreditů nebo platbou kartou a před hledáním mimo obchod se server ptá člověka a do té doby neprovede nic. Nejdřív použije schválení, které pro totéž volání se stejnými hodnotami už v administraci leží schválené. Jinak se zeptá formulářem, když ho klient deklaruje a politika akce ho dovoluje; formulář potvrzuje ten, kdo drží klíč, takže před ukradeným klíčem takové potvrzení nechrání. Otázka ve formuláři nese pod nadpisem „Co se změní“ tytéž řádky jako stránka schválení. Klient s elicitací URL dostane odkaz na stránku schválení v administraci a klient bez elicitace odmítnutí `approval_required` s odkazem v `_meta`; po schválení volání zopakuje se stejnými hodnotami. Na stránce schválení rozhoduje jen přihlášený člověk, kterého u každé akce jmenuje odrážka Potvrzení přes MCP, a účet podpory SHOPZI nikdy. Když politika nedovoluje nic, co klient umí, přijde odmítnutí `confirmation_required` a neprovede se nic. Výsledek potvrzeného volání nese v `_meta["cz.shopzi/confirmation"]` údaj, že akci potvrdil člověk a kde (`form` nebo `approval`), a v obsahu českou větu pro model, u placené akce i s cenou a zůstatkem kreditů z dotazu. Na otázku formulářem je 15 minut, schválení na stránce platí 60 minut, pokud u akce není uvedeno jinak.

Zápisové nástroje vracejí v poli `change_id` ID záznamu v deníku změn; co pole u kterého nástroje nese, říká jeho odrážka Deník změn. Změnu z deníku vrací `shopzi_undo_change` podle jejího druhu: obnoví předchozí hodnoty, u skladu zapíše vyrovnávací pohyb, u běžné ceny zapíše návrat do 30denní historie cen (nic z ní nemaže) a změnu, která už opustila obchod nebo stála peníze (odeslaný e-mail, stržené kredity, platbu kartou), odmítne s vysvětlením.

## `shopzi_stock_report` [#shopzi-stock-report]

Vrátí zásoby po variantách, fyzický stav i dostupné množství, s filtrem podle názvu, SKU a stavu zásoby a se součty nad celým výběrem. Každý řádek nese název produktu i název varianty z hodnot jejích voleb, takže varianty jde rozlišit i bez SKU. Počítá jen varianty, u kterých se zásoba vede.

* **Oprávnění:** `stock:read`, u klíče „Sklad, pohyby a nákup (čtení)“.
* **Druh:** čtení (`readOnlyHint`).
* **Potvrzení přes MCP:** ne.
* **Kredity a platba kartou:** ne.

## `shopzi_stock_report`: parametry [#shopzi-stock-report-parametry]

* `search` (text; nepovinný): Hledá v názvu produktu nebo v SKU varianty.
* `stockStatus` (jedna z hodnot `all`, `in`, `low` a `out`; nepovinný): Stav zásoby: `in` = skladem, `low` = dochází (na nastaveném prahu nebo pod ním), `out` = vyprodáno, `all` = bez filtru. Odpovídá dlaždicím nad Skladem.
* `updatedSince` (text se vzorem; nepovinný): ISO datum. Jen zásoby změněné od té doby.
* `limit` (celé číslo od 1 do 100, výchozí `25`; nepovinný): Počet položek na stránku, 1 až 100. Velká stránka se do jedné odpovědi nemusí vejít a nástroj ji pak odmítne, což stojí krok navíc: berte jen tolik položek, kolik na odpověď opravdu potřebujete.
* `cursor` (text; nepovinný): Průběžná pozice z předchozí odpovědi (`next_cursor`). Vynechte pro první stránku.

## `shopzi_list_inventory` [#shopzi-list-inventory]

Vrátí podle `resource` skladové pohyby i s názvem produktu a varianty, inventury, dodavatele zboží, nebo objednávky zboží u dodavatele. S `id` vrátí detail i s řádky: u objednávky zboží a inventury jejich položky, u dodavatele kartu s ceníkem. Feedy dodavatelů vrací i s vypnutým modulem Sklad: co obchod odebírá a může odebírat, frontu ke schválení, položky katalogu jednoho feedu (u odebíraného feedu i s prodejní cenou, kterou synchronizace zapíše podle dnešních cenových pravidel) a dropship objednávky u dodavatelů.

* **Oprávnění:** `stock:read`, u klíče „Sklad, pohyby a nákup (čtení)“.
* **Druh:** čtení (`readOnlyHint`).
* **Potvrzení přes MCP:** ne.
* **Kredity a platba kartou:** ne.

### `shopzi_list_inventory`: oblasti [#shopzi-list-inventory-oblasti]

* `movements`
* `stocktakes`
* `suppliers`
* `purchase_orders`
* `supplier_feeds`
* `feed_approvals`
* `feed_catalog`
* `feed_supplier_orders`

## `shopzi_list_inventory`: parametry [#shopzi-list-inventory-parametry]

* `resource` (jedna z hodnot `movements`, `stocktakes`, `suppliers`, `purchase_orders`, `supplier_feeds`, `feed_approvals`, `feed_catalog` a `feed_supplier_orders`; povinný)
* `status` (jedna z hodnot `in_progress`, `completed`, `cancelled`, `draft`, `sent`, `confirmed`, `partially_received` a `received`; nepovinný): Filtr stavu u `stocktakes` a `purchase_orders`.
* `movementType` (jedna z hodnot `receipt`, `usage`, `writeoff`, `correction`, `return`, `transfer` a `stocktake_adjustment`; nepovinný): Jen `movements`: druh pohybu. `receipt` = naskladnění, `usage` = výdej nebo prodej, `writeoff` = odpis, `correction` = oprava, `return` = vratka, `transfer` = přesun, `stocktake_adjustment` = korekce z inventury.
* `search` (text; nepovinný): Hledání v názvu produktu nebo SKU (`movements`), v názvu dodavatele (`suppliers`).
* `id` (UUID; nepovinný): Jen `purchase_orders`, `stocktakes` a `suppliers`: ID z výpisu pro detail.
* `limit` (celé číslo od 1 do 100, výchozí `25`; nepovinný): Počet položek na stránku, 1 až 100. Velká stránka se do jedné odpovědi nemusí vejít a nástroj ji pak odmítne, což stojí krok navíc: berte jen tolik položek, kolik na odpověď opravdu potřebujete.
* `offset` (celé číslo od 0 do 100000, výchozí `0`; nepovinný): Kolik položek přeskočit. 0 = první stránka.

## `shopzi_adjust_stock` [#shopzi-adjust-stock]

Zapíše jeden skladový pohyb varianty: naskladnění, opravu stavu, nebo odpis s důvodem. Zásobu nepřepisuje na číslo, přidává pohyb.

* **Oprávnění:** `stock:write`, u klíče „Sklad, dodavatelé, nákup, inventury a feedy dodavatelů (zápis)“.
* **Druh:** zápis, který umí přepsat nebo smazat existující data (`destructiveHint`).
* **Potvrzení přes MCP:** ano: formulář v klientu, který potvrdí ten, kdo drží klíč; jinak odkaz na stránku schválení přes elicitaci URL; jinak odkaz na stránku schválení v odmítnutí `approval_required`. Na stránce schválení rozhoduje vlastník nebo manažer obchodu.
* **Kredity a platba kartou:** ne.
* **Deník změn:** výsledek nese `change_id`. ID záznamu v deníku. Předejte ho do `shopzi_undo_change`.
* **Věta o důsledku, kterou člověk uvidí v potvrzení:**

  > Pohyb zůstane v historii skladu. Vrácení ho nemaže, přičte k němu opačný pohyb.

## `shopzi_adjust_stock`: parametry [#shopzi-adjust-stock-parametry]

* `variantId` (UUID; povinný): ID varianty (UUID) z `shopzi_stock_report`, ne ID produktu.
* `kind` (jedna z hodnot `receipt`, `correction` a `writeoff`; povinný): receipt = naskladnění (kladné), correction = oprava stavu (kladná i záporná), writeoff = odpis (záporný).
* `quantityChange` (číslo; povinný): Znaménkové množství. Kladné přidává na sklad, záporné odebírá. Nula není pohyb.
* `reason` (jedna z hodnot `damage`, `loss`, `expiry`, `theft`, `correction` a `other`; nepovinný): Důvod odpisu. Povinný u `writeoff`, u ostatních pohybů se neuvádí. damage = poškození, loss = ztráta, expiry = expirace, theft = krádež, correction = oprava, other = jiné.
* `notes` (text; nepovinný): Poznámka k pohybu, kterou uvidí obchodník v historii skladu.
* `idempotencyKey` (text, 1 až 200 znaků; nepovinný): Klíč idempotence. Stejný klíč = stejný zápis: opakované volání vrátí původní výsledek a NEZAPÍŠE podruhé. Použijte vlastní náhodný řetězec pro každou zamýšlenou změnu; při opakování po chybě sítě pošlete tentýž.

## `shopzi_manage_supply` [#shopzi-manage-supply]

Spravuje dodavatele zboží a jejich ceníky, objednávky zboží u dodavatele včetně příjmu dodávky a ruční změny stavu (jen záznam, dodavateli nic neodchází), inventury včetně jejich uzavření a nákupní cenu skladové položky. Objednávku dodavateli neodešle ani nezruší. U feedů dodavatelů odebírá feed, mění jeho nastavení, mapuje kategorie dodavatele na kategorie obchodu, spravuje cenová pravidla, rozhoduje frontu ke schválení, žádá o přístup, převezme nebo vrátí pole produktu, připojí, přejmenuje a naplní vlastní feed a zapíše odpověď dodavatele k dropship objednávce (potvrzení, odeslání s číslem zásilky, nemožnost dodat, nové odeslání); míru automatizace smí jen snížit. Rozhodnutí fronty a nové odeslání objednávky dodavateli musí potvrdit člověk: automatický běh bez potvrzení je odmítne.

* **Oprávnění:** `stock:write`, u klíče „Sklad, dodavatelé, nákup, inventury a feedy dodavatelů (zápis)“.
* **Druh:** zápis, který umí přepsat nebo smazat existující data (`destructiveHint`).
* **Potvrzení přes MCP:** ano: formulář v klientu, který potvrdí ten, kdo drží klíč; jinak odkaz na stránku schválení přes elicitaci URL; jinak odkaz na stránku schválení v odmítnutí `approval_required`. Na stránce schválení rozhoduje vlastník nebo manažer obchodu.
* **Kredity a platba kartou:** ne.
* **Deník změn:** výsledek nese `change_id`. ID záznamu v deníku. Předejte ho do `shopzi_undo_change`.
* **Věta o důsledku, kterou člověk uvidí v potvrzení:** podle `resource` a `operation`, viz seznam níž. Oblast s vlastní větou má přednost, ostatní oblasti mají větu své operace.

### `shopzi_manage_supply`: oblasti [#shopzi-manage-supply-oblasti]

* `supplier` (Dodavatel zboží)
  * Věta o důsledku v potvrzení:

    > Naskladnění a uzavření inventury zapíšou skutečné skladové pohyby, naskladnění navíc přepočítá nákupní cenu. Vrácení pohyby nemaže, přičte k nim opačné; nákupní cenu vrátí jen tehdy, když ji mezitím nezměnil další příjem. Ruční změna nákupní ceny přepíše marži a zisk u BUDOUCÍCH objednávek; už uzavřené objednávky mají náklad zmrazený z okamžiku prodeje a nemění se.

* `purchase_order` (Objednávka zboží)
  * Věta o důsledku v potvrzení:

    > Naskladnění a uzavření inventury zapíšou skutečné skladové pohyby, naskladnění navíc přepočítá nákupní cenu. Vrácení pohyby nemaže, přičte k nim opačné; nákupní cenu vrátí jen tehdy, když ji mezitím nezměnil další příjem. Ruční změna nákupní ceny přepíše marži a zisk u BUDOUCÍCH objednávek; už uzavřené objednávky mají náklad zmrazený z okamžiku prodeje a nemění se.

* `stocktake` (Inventura)
  * Věta o důsledku v potvrzení:

    > Naskladnění a uzavření inventury zapíšou skutečné skladové pohyby, naskladnění navíc přepočítá nákupní cenu. Vrácení pohyby nemaže, přičte k nim opačné; nákupní cenu vrátí jen tehdy, když ji mezitím nezměnil další příjem. Ruční změna nákupní ceny přepíše marži a zisk u BUDOUCÍCH objednávek; už uzavřené objednávky mají náklad zmrazený z okamžiku prodeje a nemění se.

* `variant_cost` (Nákupní cena)
  * Věta o důsledku v potvrzení:

    > Naskladnění a uzavření inventury zapíšou skutečné skladové pohyby, naskladnění navíc přepočítá nákupní cenu. Vrácení pohyby nemaže, přičte k nim opačné; nákupní cenu vrátí jen tehdy, když ji mezitím nezměnil další příjem. Ruční změna nákupní ceny přepíše marži a zisk u BUDOUCÍCH objednávek; už uzavřené objednávky mají náklad zmrazený z okamžiku prodeje a nemění se.

* `supplier_item` (Ceník dodavatele)
  * Věta o důsledku v potvrzení:

    > Naskladnění a uzavření inventury zapíšou skutečné skladové pohyby, naskladnění navíc přepočítá nákupní cenu. Vrácení pohyby nemaže, přičte k nim opačné; nákupní cenu vrátí jen tehdy, když ji mezitím nezměnil další příjem. Ruční změna nákupní ceny přepíše marži a zisk u BUDOUCÍCH objednávek; už uzavřené objednávky mají náklad zmrazený z okamžiku prodeje a nemění se.

* `feed_subscription` (Odběr feedu dodavatele)
  * Věta o důsledku v potvrzení:

    > Spuštěný odběr zakládá produkty a mění jejich ceny a sklad podle feedu a cenových pravidel. Co čeká na schválení, určuje úroveň odběru. Pozastavit odběr jde kdykoli.

* `pricing_rule` (Cenové pravidlo feedů)
  * Věta o důsledku v potvrzení:

    > Pravidlo přepočítá prodejní ceny produktů odběru při příští synchronizaci, podle úrovně odběru rovnou, nebo přes frontu ke schválení. Pod nákupní cenu nic neprodá.

* `feed_approval` (Položka ke schválení z feedu)
  * Věta o důsledku v potvrzení:

    > Schválení zapíše změnu do obchodu: zveřejní produkt, změní cenu nebo text. U objednávky dodavateli ji ODEŠLE e-mailem a dodavatel podle ní pošle zboží zákazníkovi; to vrátit nejde.

* `feed_access` (Žádost o přístup k dodavateli)
  * Věta o důsledku v potvrzení:

    > Žádost o přístup dostane ke schválení provozovatel platformy. Dokud ji neschválí, odběr se nespustí.

* `feed_lock` (Převzetí polí produktu z feedu)

* `own_feed` (Vlastní feed)
  * Věta o důsledku v potvrzení:

    > Vlastní feed z adresy se stahuje automaticky podle plánu a jeho položky vidí jen tento obchod. Smazat ho jde jen v administraci.

* `feed_supplier_order` (Objednávka u dodavatele (dropship))
  * Věta o důsledku v potvrzení:

    > Nové odeslání pošle dodavateli skutečnou objednávku e-mailem a dodavatel podle ní pošle zboží zákazníkovi; to vrátit nejde. Potvrzení, odeslání a zamítnutí jen zaznamenají odpověď dodavatele.

Hodnota bez odrážky Věta o důsledku v potvrzení žádnou takovou větu nemá.

### `shopzi_manage_supply`: operace [#shopzi-manage-supply-operace]

* `create` (založit)
  * Věta o důsledku v potvrzení:

    > Nového dodavatele ani objednávku zboží vrátit nejde. Dodavatele jde jen deaktivovat; objednávka nese pořadové číslo dokladu a zrušit ji jde v Sklad → Objednávky zboží. Na stav skladu to nemá vliv.

* `update` (upravit)
  * Věta o důsledku v potvrzení:

    > Naskladnění a uzavření inventury zapíšou skutečné skladové pohyby, naskladnění navíc přepočítá nákupní cenu. Vrácení pohyby nemaže, přičte k nim opačné; nákupní cenu vrátí jen tehdy, když ji mezitím nezměnil další příjem. Ruční změna nákupní ceny přepíše marži a zisk u BUDOUCÍCH objednávek; už uzavřené objednávky mají náklad zmrazený z okamžiku prodeje a nemění se.

* `start` (zahájit)
  * Věta o důsledku v potvrzení:

    > Zahájenou inventuru vrátit nejde: zrušit ji může obchodník v Sklad → Inventura a do jejího uzavření se skladu nic nestane.

* `count` (zapsat napočítaný stav)
  * Věta o důsledku v potvrzení:

    > Naskladnění a uzavření inventury zapíšou skutečné skladové pohyby, naskladnění navíc přepočítá nákupní cenu. Vrácení pohyby nemaže, přičte k nim opačné; nákupní cenu vrátí jen tehdy, když ji mezitím nezměnil další příjem. Ruční změna nákupní ceny přepíše marži a zisk u BUDOUCÍCH objednávek; už uzavřené objednávky mají náklad zmrazený z okamžiku prodeje a nemění se.

* `receive` (naskladnit dodávku)
  * Věta o důsledku v potvrzení:

    > Naskladnění a uzavření inventury zapíšou skutečné skladové pohyby, naskladnění navíc přepočítá nákupní cenu. Vrácení pohyby nemaže, přičte k nim opačné; nákupní cenu vrátí jen tehdy, když ji mezitím nezměnil další příjem. Ruční změna nákupní ceny přepíše marži a zisk u BUDOUCÍCH objednávek; už uzavřené objednávky mají náklad zmrazený z okamžiku prodeje a nemění se.

* `complete` (uzavřít)
  * Věta o důsledku v potvrzení:

    > Naskladnění a uzavření inventury zapíšou skutečné skladové pohyby, naskladnění navíc přepočítá nákupní cenu. Vrácení pohyby nemaže, přičte k nim opačné; nákupní cenu vrátí jen tehdy, když ji mezitím nezměnil další příjem. Ruční změna nákupní ceny přepíše marži a zisk u BUDOUCÍCH objednávek; už uzavřené objednávky mají náklad zmrazený z okamžiku prodeje a nemění se.

* `set_status` (změnit stav objednávky)

* `remove` (odebrat)

* `map_category` (namapovat kategorii dodavatele)
  * Věta o důsledku v potvrzení:

    > Naskladnění a uzavření inventury zapíšou skutečné skladové pohyby, naskladnění navíc přepočítá nákupní cenu. Vrácení pohyby nemaže, přičte k nim opačné; nákupní cenu vrátí jen tehdy, když ji mezitím nezměnil další příjem. Ruční změna nákupní ceny přepíše marži a zisk u BUDOUCÍCH objednávek; už uzavřené objednávky mají náklad zmrazený z okamžiku prodeje a nemění se.

Hodnota bez odrážky Věta o důsledku v potvrzení žádnou takovou větu nemá.

## `shopzi_manage_supply`: parametry `resource`, `operation` a `id` [#shopzi-manage-supply-parametry-resource-operation-a-id]

* `resource` (jedna z hodnot `supplier`, `purchase_order`, `stocktake`, `variant_cost`, `supplier_item`, `feed_subscription`, `pricing_rule`, `feed_approval`, `feed_access`, `feed_lock`, `own_feed` a `feed_supplier_order`; povinný): Čeho se změna týká. Pole i `lines` musí patřit k němu.
* `operation` (jedna z hodnot `create`, `update`, `start`, `count`, `receive`, `complete`, `set_status`, `remove` a `map_category`; povinný): supplier: create | update. purchase\_order: create | receive | set\_status. stocktake: start | count | complete. variant\_cost: update. supplier\_item: update | remove. feed\_subscription: create | update | set\_status | start | map\_category. pricing\_rule: create | update | remove. feed\_approval: complete. feed\_access: create. feed\_lock: update. own\_feed: create | update | receive. feed\_supplier\_order: update (`feed_supplier_order` přes `feed.orderAction`).
* `id` (text; nepovinný): ID dodavatele u `update` a u `supplier_item`, ID objednávky zboží u `receive` a `set_status`, ID inventury u `count` a `complete`, ID varianty u `variant_cost`. U zakládání a u `start` se vynechává.

## `shopzi_manage_supply`: parametry `fields` a `lines` [#shopzi-manage-supply-parametry-fields-a-lines]

* `fields` (objekt; nepovinný): Údaje k uložení. Vynechané pole zůstane u úpravy beze změny.
* `fields.name` (text; nepovinný): Dodavatel: název firmy. POVINNÝ při zakládání.
* `fields.contactPerson` (text nebo `null`; nepovinný)
* `fields.email` (text nebo `null`; nepovinný)
* `fields.phone` (text nebo `null`; nepovinný)
* `fields.ico` (text nebo `null`; nepovinný): Dodavatel: IČO.
* `fields.dic` (text nebo `null`; nepovinný): Dodavatel: DIČ.
* `fields.addressStreet` (text nebo `null`; nepovinný)
* `fields.addressCity` (text nebo `null`; nepovinný)
* `fields.addressPostalCode` (text nebo `null`; nepovinný)
* `fields.bankAccount` (text nebo `null`; nepovinný)
* `fields.iban` (text nebo `null`; nepovinný)
* `fields.deliveryDays` (text nebo `null`; nepovinný): Dny závozu jako čísla 1..7 oddělená čárkou (1 = pondělí).
* `fields.notes` (text nebo `null`; nepovinný)
* `fields.minimumOrderAmount` (číslo; nepovinný): Minimální objednávka v HALÉŘÍCH, celé číslo (1 000 Kč = 100000).
* `fields.paymentTermsDays` (číslo; nepovinný): Splatnost faktur dodavatele ve dnech.
* `fields.leadTimeDays` (číslo; nepovinný): Za kolik dní od objednání zboží dorazí.
* `fields.isActive` (`true` nebo `false`; nepovinný): false = dodavatele deaktivovat. Dodavatel se nikdy nemaže.
* `fields.supplierId` (text; nepovinný): Jen `purchase_order` + `create`: ID dodavatele ze `shopzi_list_inventory` (`suppliers`).
* `fields.expectedDeliveryDate` (text nebo `null`; nepovinný): Jen `purchase_order`: očekávané dodání, ISO datum.
* `fields.variantId` (text; nepovinný): `stocktake` + `count` a `supplier_item`: ID varianty ze `shopzi_stock_report`, ne ID produktu.
* `fields.quantity` (číslo; nepovinný): Jen `stocktake` + `count`: skutečně napočítané množství.
* `fields.poStatus` (jedna z hodnot `sent`, `confirmed` a `received`; nepovinný): Jen `purchase_order` + `set_status`. received = uzavřít částečně naskladněnou s manky. Dodavateli se nic neposílá; zrušit nejde.
* `fields.supplierPriceMinor` (celé číslo aspoň 0; nepovinný): Jen `supplier_item`: nákupní cena za kus BEZ DPH, v haléřích.
* `fields.supplierSku` (text nebo `null`; nepovinný): Jen `supplier_item`.
* `fields.minOrderQuantity` (číslo; nepovinný): Jen `supplier_item`: minimální odběr, výchozí 1.
* `fields.isPreferred` (`true` nebo `false`; nepovinný): Jen `supplier_item`.
* `fields.feed` (objekt; nepovinný): Jen zdroje `feed_*`, `pricing_rule` a `own_feed`.
* `fields.feed.feedId` (text; nepovinný): ID feedu z `shopzi_list_inventory` (`supplier_feeds`).
* `fields.feed.status` (jedna z hodnot `active` a `paused`; nepovinný)
* `fields.feed.trustLevel` (jedna z hodnot `review_all`, `review_exceptions` a `autopilot`; nepovinný): Míra automatizace: review\_all | review\_exceptions | autopilot. Agent ji smí jen SNÍŽIT.
* `fields.feed.autoPublish` (`true` nebo `false`; nepovinný)
* `fields.feed.oosBehaviour` (jedna z hodnot `hide` a `show_unavailable`; nepovinný)
* `fields.feed.aiPolicy` (jedna z hodnot `off`, `review` a `auto_apply`; nepovinný)
* `fields.feed.priceChangeThresholdPct` (celé číslo od 1 do 100; nepovinný)
* `fields.feed.fallbackCategoryId` (text nebo `null`; nepovinný)
* `fields.feed.fxRatePpm` (celé číslo větší než 0 nebo `null`; nepovinný): Kurz cizí měny feedu: Kč za jednotku × 1 000 000 (25,12 Kč = 25120000).
* `fields.feed.brands` (pole, položka: text; nepovinný): Filtr: jen tyto značky. Prázdné pole = všechny.
* `fields.feed.minStock` (celé číslo aspoň 0; nepovinný)
* `fields.feed.requireImage` (`true` nebo `false`; nepovinný)
* `fields.feed.sourcePath` (pole, položka: text, 1 až 200 znaků, 1 až 5 položek; nepovinný): Jen `map_category`: cesta kategorie dodavatele po úrovních, např. \["Dům", "Kuchyně"]; platí i pro podstrom.
* `fields.feed.categoryId` (UUID nebo `null`; nepovinný): Jen `map_category`: ID kategorie obchodu; null spolu se `skip: false` mapování zruší.
* `fields.feed.skip` (`true` nebo `false`; nepovinný): Jen `map_category`: true = zboží z té kategorie nebrat.
* `fields.feed.defaultMarkupPct` (číslo od 0 do 1000; nepovinný)
* `fields.feed.scope` (jedna z hodnot `all`, `category` a `brand`; nepovinný): Pravidlo: na co platí.
* `fields.feed.scopeValue` (text nebo `null`; nepovinný): Kategorie „Dům › Kuchyně“ nebo značka.
* `fields.feed.markupPct` (číslo od 0 do 1000; nepovinný)
* `fields.feed.minMarginMinor` (celé číslo aspoň 0; nepovinný): Minimální marže v haléřích.
* `fields.feed.rounding` (jedna z hodnot `none`, `whole`, `x9`, `x90` a `x99`; nepovinný)
* `fields.feed.target` (jedna z hodnot `catalog` a `wholesale`; nepovinný)
* `fields.feed.subscriptionId` (text nebo `null`; nepovinný): Pravidlo jen pro jeden odběr; null = všechny.
* `fields.feed.decision` (jedna z hodnot `approve` a `reject`; nepovinný)
* `fields.feed.catalogSupplierId` (text; nepovinný)
* `fields.feed.customerNumber` (text nebo `null`; nepovinný)
* `fields.feed.message` (text nebo `null`; nepovinný)
* `fields.feed.lock` (pole, položka: jedna z hodnot `title`, `description`, `images`, `category`, `attributes`, `price` a `wholesale_price`; nepovinný)
* `fields.feed.unlock` (pole, položka: jedna z hodnot `title`, `description`, `images`, `category`, `attributes`, `price` a `wholesale_price`; nepovinný)
* `fields.feed.supplierName` (text; nepovinný)
* `fields.feed.label` (text; nepovinný)
* `fields.feed.url` (text nebo `null`; nepovinný)
* `fields.feed.format` (jedna z hodnot `heureka_xml`, `google_xml`, `csv` a `custom_xml`; nepovinný)
* `fields.feed.body` (text, nejvýš 4000000 znaků; nepovinný): Jen `own_feed` + `receive`: obsah feedu (XML nebo CSV) jako text, do 4 MB.
* `fields.feed.partial` (`true` nebo `false`; nepovinný): `receive`: jen část položek, nic se neskryje.
* `fields.feed.orderAction` (jedna z hodnot `confirm`, `ship`, `reject`, `cancel` a `resend`; nepovinný): Jen `feed_supplier_order`: odpověď dodavatele nebo nové odeslání.
* `fields.feed.tracking` (text nebo `null`; nepovinný): Číslo zásilky u `ship`.
* `fields.feed.carrier` (text nebo `null`; nepovinný)
* `fields.feed.note` (text nebo `null`; nepovinný)
* `fields.unitCostMinor` (celé číslo aspoň 0; nepovinný): Jen `variant_cost`: nákupní cena za kus BEZ DPH, v HALÉŘÍCH, celé číslo (250,50 Kč = 25050). Živí marži a zisk; minulé objednávky se tím nemění, ty mají náklad zmrazený z okamžiku prodeje.
* `lines` (pole objektů; nepovinný): U `purchase_order` + `create` položky objednávky (povinné). U `purchase_order` + `receive` částečná dodávka; VYNECHEJTE je, pokud dorazilo všechno objednané, naskladní se pak celý zbytek.
* `lines[].variantId` (text; povinný): ID varianty ze `shopzi_stock_report`.
* `lines[].quantity` (číslo; povinný): U `create` objednávané množství, u `receive` množství, které z téhle položky dorazilo.
* `lines[].unitPriceMinor` (číslo; nepovinný): Jen `create`: nákupní cena za kus BEZ DPH, v haléřích, celé číslo (250,50 Kč = 25050). U `receive` se neuvádí, cena je na objednávce.
* `lines[].vatRate` (číslo; nepovinný): Jen `create`: sazba DPH dodavatele v celých procentech: 21, 12 nebo 0.
* `lines[].unit` (text; nepovinný): Jednotka, výchozí „ks“.
* `lines[].notes` (text nebo `null`; nepovinný)

## `shopzi_manage_supply`: parametry `idempotencyKey` [#shopzi-manage-supply-parametry-idempotencykey]

* `idempotencyKey` (text, 1 až 200 znaků; nepovinný): Klíč idempotence. Stejný klíč = stejný zápis: opakované volání vrátí původní výsledek a NEZAPÍŠE podruhé. Použijte vlastní náhodný řetězec pro každou zamýšlenou změnu; při opakování po chybě sítě pošlete tentýž.
