Skip to content

Zápis katalógu

Tri operácie na jednej ceste /v1/content, autentifikované bearer secret_key.

metódasprávanie
POSTvytvorí objekt alebo ho úplne nahradí — neuvedené pole sa zmaže
PATCHzmení iba uvedené polia; neexistujúci objekt je chyba, nie create
DELETEodstráni objekt z databázy aj z indexu

Telo je zoznam objektov, prípadne obálka {"objects": [...]}. Najviac 100 objektov na dávku.

Príklad

bash
curl -X POST https://api.metty.eu/v1/content \
  -H "Authorization: Bearer msk_…" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "identity": "sku-1",
      "type": "item",
      "fields": {
        "title": "Príklepová vŕtačka Bosch",
        "web_url": "https://eshop.sk/vrtacka",
        "price": 129.9,
        "availability": 3,
        "brand": "Bosch",
        "description": "Príklepová vŕtačka s reguláciou otáčok.",
        "image_link": "https://eshop.sk/media/vrtacka.jpg",
        "color": "modrá"
      }
    }
  ]'

identity je tvoje ID produktu a je jediné povinné pole pre PATCH aj DELETE. Pri POST sú povinné aj type, fields.title a fields.web_url.

Polia

polevýznam
titlenázov produktu
web_urlodkaz na detail produktu
pricecena ako číslo
availabilitydostupné množstvo (true/false sa mapuje na 1/0)
brandznačka
descriptionpopis
image_linkURL obrázka
čokoľvek inéuloží sa ako atribút produktu

Číselné hodnoty posielaj ako JSON number, nie ako string — "price": 129.9, nie "129.9". Názvy vlastných atribútov nesmú obsahovať bodku ani hranaté zátvorky. Zoznam hodnôt (napr. "category": ["Náradie", "Vŕtačky"]) uložíme ako jeden atribút s hodnotami oddelenými |.

Obrázok si hostuješ ty — nesťahujeme ho ani neprevádzame na náhľady.

Typy objektov

Prijímame type: "item" (alebo "product", normalizuje sa na item). Objekty typu category, brand a article vrátia unsupported_type, vnorené objekty nested_unsupported.

Okno platnosti

Voliteľné active_from a active_to v tele objektu (ISO 8601). Produkt mimo okna sa nezobrazí vo výsledkoch, faceteoch ani v počtoch — hodí sa na predpredaj alebo sezónny tovar.

json
{ "identity": "sku-1", "active_from": "2026-08-01T00:00:00+02:00", "active_to": null, "fields": {} }

Odpoveď

Dávka vždy vráti 200 a stav každého objektu zvlášť. Jeden chybný objekt nezhodí ostatné.

json
{
  "objects": [
    { "identity": "sku-1", "status": "created" },
    { "identity": "sku-2", "status": "updated" },
    { "identity": "sku-3", "status": "failed", "error": { "code": "missing_field", "message": "…" } }
  ],
  "summary": { "succeeded": 2, "failed": 1 }
}

status je created, updated, deleted alebo failed. Vždy si prejdi objects200 neznamená, že prešlo všetko.

Opakované odoslanie

Všetky tri operácie zapisujú podľa identity, takže poslať tú istú dávku dvakrát nič nepokazí — POST znova prepíše to isté, PATCH znova nastaví tie isté polia. Jediný rozdiel je, že opakovaný DELETE vráti not_found na objekty, ktoré prvý pokus už zmazal.

Hromadná zmena

Samostatný endpoint na to nie je. Zmenu viacerých produktov pošli ako dávku PATCH a keď identity nepoznáš, vytiahni si ich z GET /search s tým istým facetovým filtrom:

GET /search?api_key=…&q=&f[]=brand:Bosch&size=200&hit_fields=title

Dokumentácia Metty