> ## Documentation Index
> Fetch the complete documentation index at: https://www.twicecommerce.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Hromadné vytváření

> Vytvořte mnoho skladových položek, SKU, zákazníků nebo řádků objednávek jedním voláním Admin API a nejdřív rozhodněte, kolik záznamů účet potřebuje.

Pošlete jedno dávkové volání místo smyčky. Admin API vytváří skladové položky, SKU, zákazníky a řádky objednávek z pole a jedno volání se počítá jako jeden požadavek vůči příspěvku vašeho klíče API, bez ohledu na to, kolik záznamů nese.

Než cokoli vytvoříte, rozhodněte, kolik záznamů účet potřebuje. Individuální sledování je rozhodnutí o modelu, ne o objemu.

## Nejdřív rozhodněte o tvaru

Zeptejte se, zda každá jednotka potřebuje vlastní historii.

| Každá jednotka potřebuje | Vytvořte | Výsledek |
| - | - | - |
| Vlastní kód, stav, servisní historii, příjmy a náklady | Jednu sledovanou skladovou položku na jednotku | `N` záznamů, každý s vlastní časovou osou |
| Nic vlastního, protože postačí jakákoli jednotka | Jednu skladovou položku, která nese množství | Jeden záznam pokrývající `N` jednotek |

Půjčovní flotila 40 kol potřebuje 40 záznamů: každý rám má sériové číslo, vlastní servis a vlastní náklady na opravy. Prodejní inzerát pro 1 000 stejných triček potřebuje jeden záznam s množstvím 1 000.

Záznamy pro každou jednotku u zaměnitelného zboží dají účtu 1 000 řádků k procházení tam, kde by stačil jeden, a rozprostřou výpočet dostupnosti mezi záznamy, které nikdy nebylo třeba oddělovat.

Režim nastavte pomocí `trackIndividually` v požadavku na vytvoření. Co každý režim hlásí a čeho se vzdává, popisuje článek [Sledování skladu](https://www.twicecommerce.com/docs/cs/concepts/inventory/inventory-tracking.md).

## Jak to funguje

Pole přijímají čtyři endpointy:

| Endpoint | Vytváří | Jeden záznam pole je |
| - | - | - |
| `POST /v1/admin/articles/create-many` | Skladové položky | Jedna skladová položka |
| `POST /v1/admin/skus/many` | SKU | Jedno SKU |
| `POST /v1/admin/customers/many` | Zákazníky | Jeden zákazník, párovaný podle e-mailu |
| `POST /v1/admin/orders/{orderId}/lineItems/create-many` | Řádky na jedné existující objednávce | Jeden řádek |

Každý záznam pole vytvoří právě jeden záznam. U `articles/create-many` nastavuje `quantity` kapacitu tohoto jednoho záznamu: nikdy nenásobí položky a `trackIndividually` se čte jen při jednotlivém vytvoření.

Existují tedy dva způsoby, jak vytvořit mnoho skladových položek, a odpovídají na různé otázky:

* **Stejná položka, mnoho sledovaných jednotek.** Zavolejte jednou `POST /v1/admin/articles` s `quantity`. Každá jednotka se stane vlastním záznamem.
* **Jednotky, které se liší** názvem, SKU, lokalitou nebo atributy. Zavolejte `POST /v1/admin/articles/create-many` s jedním záznamem pole na jeden záznam.

## Použití

### Skladové položky

Vytvořte 40 sledovaných kol jedním voláním. `codes` přiřadí první kód první jednotce, druhý druhé a pro každou jednotku, kterou nepokrývají, vygeneruje kód.

```bash cURL theme={null}
curl -X POST https://server.twicecommerce.com/v1/admin/articles \
  -H "X-API-KEY: {key}" \
  -H "Content-Type: application/json" \
  -d '{
    "article": {
      "name": "Trail bike 29\"",
      "serviceLocationId": "9f1c2d84-4c1e-4a0b-9b62-3a7e5c118d20",
      "taxonomyCategoryId": null,
      "quantity": 40,
      "trackIndividually": true,
      "codes": ["BIKE-001", "BIKE-002", "BIKE-003"]
    }
  }'
```

```json Response theme={null}
[
  {
    "id": "3c8a5f21-0e9d-4a17-9c33-6b2f0d51a884",
    "name": "Trail bike 29\"",
    "status": "active",
    "codes": ["BIKE-001"],
    "quantity": { "total": 1 }
  },
  {
    "id": "b71d0c46-2f83-4d59-8a05-9e4c7a1b3f62",
    "name": "Trail bike 29\"",
    "status": "active",
    "codes": ["BIKE-002"],
    "quantity": { "total": 1 }
  }
]
```

U zaměnitelného zboží pošlete `trackIndividually: false` a stejné `quantity`. Vrátí se jeden záznam s `quantity.total` nastaveným na 40.

Použijte `create-many`, když se záznamy pole liší:

```bash cURL theme={null}
curl -X POST https://server.twicecommerce.com/v1/admin/articles/create-many \
  -H "X-API-KEY: {key}" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "name": "Meeting room chair",
      "serviceLocationId": "9f1c2d84-4c1e-4a0b-9b62-3a7e5c118d20",
      "taxonomyCategoryId": null,
      "quantity": 120,
      "codes": ["CHAIR-POOL-A"]
    },
    {
      "name": "Wool coat, size M",
      "serviceLocationId": "5d2b6e07-1a44-4f8c-bb90-2c6d3e7f4a15",
      "taxonomyCategoryId": null,
      "codes": ["RESALE-2026-0184"]
    }
  ]'
```

```json Response theme={null}
[
  {
    "id": "e0a4b913-77c6-42de-9f1a-08b5c2d63417",
    "name": "Meeting room chair",
    "status": "active",
    "codes": ["CHAIR-POOL-A"],
    "quantity": { "total": 120 }
  },
  {
    "id": "1f6c8d25-93ab-4e07-8c14-5a9b0e3d7268",
    "name": "Wool coat, size M",
    "status": "active",
    "codes": ["RESALE-2026-0184"],
    "quantity": { "total": 1 }
  }
]
```

### SKU

`POST /v1/admin/skus/many` vytvoří jedno SKU na záznam pole a vrátí id, název a kód každého. Vynechte `code` a TWICE ho vygeneruje z názvu a přidává číselnou příponu, dokud není v účtu jedinečný. Pošlete-li `code`, který už existuje, volání selže s `400` a kód pojmenuje. Při selhání se nevytvoří nic: celé pole se zapisuje v jedné transakci.

```bash cURL theme={null}
curl -X POST https://server.twicecommerce.com/v1/admin/skus/many \
  -H "X-API-KEY: {key}" \
  -H "Content-Type: application/json" \
  -d '[
    { "name": "Trail bike 29\"", "code": "TRA-BI-29" },
    { "name": "Studio A" }
  ]'
```

```json Response theme={null}
[
  { "id": "a2d47e19-6c30-4b85-9f27-0e1a8d5c3b46", "name": "Trail bike 29\"", "code": "TRA-BI-29" },
  { "id": "7b93f0c5-8d21-4a6e-b013-4c5f2e9a7d81", "name": "Studio A", "code": "ST-A" }
]
```

### Zákazníci

`POST /v1/admin/customers/many` vrátí jedno id na záznam pole. Záznam, jehož e-mail už v účtu existuje, aktualizuje daného zákazníka místo vytvoření druhého a pole, která vynecháte, si ponechají uložené hodnoty. Záznamy bez e-mailu se vždy vkládají, takže opakovaný import bez e-mailů vytváří duplicity.

```bash cURL theme={null}
curl -X POST https://server.twicecommerce.com/v1/admin/customers/many \
  -H "X-API-KEY: {key}" \
  -H "Content-Type: application/json" \
  -d '[
    { "firstName": "Aino", "lastName": "Virtanen", "email": "aino@example.com", "marketingConsent": true },
    { "firstName": "Marek", "lastName": "Novak", "email": "marek@example.com", "marketingConsent": false }
  ]'
```

```json Response theme={null}
{
  "ids": [
    "c41e7b26-9a58-4d03-8f16-2b7d0c5e9a34",
    "8d2f5a70-3c19-4be8-a742-6f0b1d8c37e5"
  ]
}
```

### Řádky objednávek

`POST /v1/admin/orders/{orderId}/lineItems/create-many` přidá několik řádků k jedné existující objednávce. Každý řádek nese vlastní `quantity`, takže stejné řádky nepotřebují každý svůj záznam. Ceny se počítají na serveru z položky katalogu a cenového řádku.

```bash cURL theme={null}
curl -X POST https://server.twicecommerce.com/v1/admin/orders/6e0f3b74-52a8-4c19-9d75-8b1e4a2c6f03/lineItems/create-many \
  -H "X-API-KEY: {key}" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "catalogItemId": "d5b81f39-7a02-4c68-9e14-3f7a5c0b28d6",
      "pricingRowId": "2a7c6e40-8b13-49f5-a0d2-7c9e5b1f3a48",
      "purchaseType": "booking",
      "quantity": 12,
      "startDate": "2026-10-02T08:00:00.000Z",
      "endDate": "2026-10-02T16:00:00.000Z"
    }
  ]'
```

```json Response theme={null}
[
  {
    "id": "9c3a7d18-4b65-42f0-8e29-1d6b0a5c7e93",
    "catalogItemId": "d5b81f39-7a02-4c68-9e14-3f7a5c0b28d6",
    "purchaseType": "booking",
    "quantity": 12,
    "startDate": "2026-10-02T08:00:00.000Z",
    "endDate": "2026-10-02T16:00:00.000Z"
  }
]
```

## Zkontrolujte kódy a e-maily před odesláním

Nejdřív projděte celý seznam validačním endpointem a kolize vyřešte předem. Každý vrací jen záznamy, které by selhaly, takže prázdné pole `invalid` znamená, že dávku můžete odeslat.

| Spusťte | Vrátí |
| - | - |
| `POST /v1/admin/articles/validate-codes` s `{ "codes": [...] }` | Kódy skladových položek, které už jsou používány, každý s `reason: "existing"` |
| `POST /v1/admin/skus/validate-codes` s `{ "codes": [...] }` | Kódy SKU, které už jsou používány |
| `POST /v1/admin/customers/validate-emails` s `{ "emails": [...] }` | E-maily, které už má zákazník a do kterých by se import sloučil |

## Velikost dávky a limity požadavků

Jedno volání je jeden požadavek. Smyčka 1 000 jednotlivých vytvoření spotřebuje 1 000 požadavků z rychlosti za sekundu i z měsíčního stropu klíče, zatímco stejný import v dávkových voláních jen několik. Tři vrstvy a hlavičky odpovědí, které hlásí zbývající příspěvek, popisuje sekce o limitech požadavků v článku [Klíče API](https://www.twicecommerce.com/docs/cs/concepts/integrations/api-keys.md).

API nedeklaruje žádné maximum délky pole ani `quantity`, takže nic neodmítne požadavek na vytvoření deseti milionů záznamů. Několik set až zhruba tisíc záznamů na volání berte jako doporučení, ne limit, a větší import rozdělte do několika volání.

Rozdělení také zlevňuje zotavení po selhání. SKU a zákazníci se zapisují v jedné transakci, takže odmítnutý záznam nezanechá nic. Velmi velké pole skladových položek se potvrzuje po částech, takže dřívější záznamy pole mohou existovat, i když pozdější selže. Posílejte dávky, které lze zopakovat, a zaznamenávejte si, které vrátily `200`.

> [!NOTE]
>
> Ne každý import vyžaduje API. Administrace importuje skladové položky a zákazníky ze souboru CSV, což bývá rychlejší cesta pro jednorázovou migraci. Viz [Import inventáře z CSV](https://www.twicecommerce.com/docs/cs/guides/inventory/import-inventory-csv.md) a [Import zákazníků](https://www.twicecommerce.com/docs/cs/guides/customers/import-customers.md).

## Související články

> **[Sledování skladu](https://www.twicecommerce.com/docs/cs/concepts/inventory/inventory-tracking.md)**
>
> Sériové a hromadné sledování a co každé z nich hlásí.

> **[Skladová položka vs SKU](https://www.twicecommerce.com/docs/cs/inventory/stock-item-vs-sku.md)**
>
> Čím z těchto dvou má záznam být.

> **[Klíče API](https://www.twicecommerce.com/docs/cs/concepts/integrations/api-keys.md)**
>
> Ověřování, verze API a limity požadavků.

> **[API: Articles](https://www.twicecommerce.com/docs/api-reference/articles)**
>
> Každý endpoint skladových položek a jeho schéma.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.