Vzhľad
Zápis katalógu
Tri operácie na jednej ceste /v1/content, autentifikované bearer secret_key.
| metóda | správanie |
|---|---|
POST | vytvorí objekt alebo ho úplne nahradí — neuvedené pole sa zmaže |
PATCH | zmení iba uvedené polia; neexistujúci objekt je chyba, nie create |
DELETE | odstrá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
| pole | význam |
|---|---|
title | názov produktu |
web_url | odkaz na detail produktu |
price | cena ako číslo |
availability | dostupné množstvo (true/false sa mapuje na 1/0) |
brand | značka |
description | popis |
image_link | URL 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 objects — 200 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