Časté otázky k UCP
Odpovede na otázky obchodníkov a vývojárov — od platieb a testovania po viac obchodov a jazykov.
Na tejto stránke
Krátke odpovede, každá s odkazom na kapitolu, kde sú podrobnosti. Príklady
používajú obchod https://shop.example.com.
Platby a objednávky
Môže agent cez UCP zaplatiť za kupujúceho?
Nie. Profil obchodu aj každý checkout nesú payment_handlers: {}.
POST …/complete objednávku nevytvorí a nič nezmení: odpovie to isté ako
čítanie checkoutu a platobné údaje v jeho tele sa ignorujú. Pripravený
checkout má stav requires_escalation so správou payment_required a
continue_url;
kupujúci tento odkaz otvorí a zaplatí na webe obchodu, spôsobmi platby,
ktoré obchod ponúka. Pozri Princípy a životný cyklus a
Zhoda so špecifikáciou UCP.
Ako zistím, že kupujúci objednal? Existuje webhook?
Webhooky neexistujú. Čítajte checkout cez
GET /ucp/v1/checkout-sessions/{id}, kým status nie je completed (s
order.id, order.label — číslom objednávky obchodu, ak ho objednávka
má — a order.permalink_url, stránkou potvrdenia objednávky v obchode,
ktorá sa otvorí bez prihlásenia) alebo canceled.
Dokončí sa vždy iba checkout, nikdy košík: košík najprv premeňte na
checkout a odovzdajte checkout. completed znamená, že objednávka
vznikla, nie že je zaplatená; položky a súčty checkoutu zostávajú
vašou poslednou ponukou a kupujúci mohol objednávku v obchode zmeniť. Na
jednu reláciu majte naraz rozpracovanú najviac jednu požiadavku: čítanie
checkoutu získava zámok relácie a môže odpovedať 503 s Retry-After: 1.
Rozumný rytmus je jedno čítanie každých 5–10 sekúnd, kým je kupujúci
pravdepodobne v obchode (prvú štvrťhodinu), potom raz za minútu. Limit 600
čítaní checkoutu za minútu na IP platí pre všetky vaše relácie spolu.
Jedno čítanie hneď po expires_at dá konečnú odpoveď: completed, ak
objednávka prišla skôr, inak canceled. Pozri
Idempotencia, súbežnosť a limity.
Čo sa stane, keď kupujúci continue_url nikdy neotvorí?
V obchode sa nestane nič: žiadna objednávka a žiadna rezervácia skladu.
Checkout zostáva otvorený do svojho expires_at, 24 hodín po poslednom
vytvorení alebo úprave (čítanie ho nepredlžuje); ďalšie čítanie potom
vráti canceled. Košík platí 7 dní od poslednej zmeny a potom obchod na
jeho volania odpovedá HTTP 200 s chybovou správou not_found. Pred odovzdaním lehotu predĺži
každé vytvorenie či úprava, po odovzdaní už nič. Uložené údaje sa zmažú
30 dní po vypršaní.
Kupujúci objednal, ale checkout zostáva v stave requires_escalation. Prečo?
Checkout sa dokončí iba vtedy, keď objednávka vznikne z košíka, ktorý
odkaz naplnil, a obsahuje aspoň jednu z položiek checkoutu. Nedokončí sa,
keď sa kupujúci do obchodu prihlásil až v jeho pokladni (košík hosťa sa
vtedy zlúči so zákazníckym a objednávka vznikne z neho), alebo keď
objednávka neobsahuje žiadnu z položiek checkoutu; zriedka aj vtedy, keď
samotné dokončenie zlyhalo na strane Monokaida (nie je zaručené). Taký
checkout pri vypršaní skončí ako canceled, hoci objednávka existuje.
(Checkout, ktorého odkaz sa otvoril, keď bol ešte incomplete, namiesto
toho zostane incomplete; dokončí sa aj vyprší rovnako.) Chýbajúce
dokončenie preto neberte ako dôkaz, že objednávka neexistuje; nechajte
kupujúceho pozrieť si potvrdenie priamo od obchodu.
Môže agent objednávku zrušiť alebo zmeniť?
Nie. Zrušenie zatvorí iba košík alebo checkout v UCP. Zrušenie dokončeného
checkoutu ho vráti so správou checkout_completed a objednávka zostane
nezmenená. Zmeny objednávky sú vecou kupujúceho a obchodu.
Testovanie
Existuje sandbox alebo testovací obchod?
Samostatný sandbox neexistuje. Testujete proti obchodu na Monokaide, ktorý má
UCP zapnuté na vlastnej doméne. Volania katalógu, košíka a checkoutu
nevytvoria objednávku a nič nestrhnú; objednávka vznikne, až keď niekto
otvorí continue_url a zadá objednávku v obchode — a je to skutočná objednávka
toho obchodu. Test si dohodnite s obchodníkom: košíky agenta sa objavia aj
v štatistike košíkov obchodu. Ako obchodník UCP zapne, opisuje
Zapnutie UCP v obchode.
Čo musím mať pripravené pred prvým volaním?
Profil svojej platformy: dokument JSON na verejnej adrese https://,
ktorú spravujete, s odpoveďou 200 bez presmerovania do 5 sekúnd,
najviac 256 KiB, s ucp.version 2026-04-08 a so schopnosťami, ktoré
chcete používať. Každé volanie pod /ucp/v1 ho uvádza v hlavičke
UCP-Agent. Minimálny profil ukazuje
Rýchly štart pre vývojárov.
Môžem API volať z webovej stránky v prehliadači?
Nie. API neposiela hlavičky CORS pre iné pôvody, takže stránka na vašej
doméne ho volať nemôže. Volajte ho zo svojho servera. Jediná stránka určená
pre prehliadač je continue_url, ktorú otvára kupujúci.
Obchody, domény a kupujúci
Funguje jedna integrácia so všetkými obchodmi na Monokaide?
Áno. Každý obchod poskytuje to isté API na svojej vlastnej doméne.
Prečítajte si profil každého obchodu a použite endpoint, ktorý zverejní.
Relácie patria jednému obchodu: id košíka alebo checkoutu použité na doméne
iného obchodu dostane HTTP 200 s chybovou správou not_found. Limity
požiadaviek sa rátajú na IP adresu pre všetky obchody na Monokaide spolu.
Obchod má viac domén. Ktorú mám volať?
Profil je dostupný na každej doméne obchodu, na ktorej sa UCP poskytuje, ale
každá adresa,
ktorú zverejňuje — endpoint, continue_url, odkazy na objednávku a
produkty —, používa overenú primárnu doménu obchodu. Volajte zverejnený
endpoint.
Potrebujem API kľúč, OAuth alebo podpisovanie požiadaviek?
Nie. Obchod sa určí podľa domény, ktorú voláte. Vašu platformu identifikuje
adresa profilu v UCP-Agent, ktorá sa kryptograficky neoveruje. Id košíka
alebo checkoutu je jediným kľúčom k danej relácii: držte ho na svojom
serveri a mimo odkazov a logov. continue_url nesie samostatné tajomstvo
určené kupujúcemu. Pozri
Bezpečnosť a ochrana údajov.
Kupujúci ako hosť, alebo prihlásený?
Každá relácia UCP je anonymná; prepojenie identity (identity linking) sa
nepodporuje. Keď kupujúci otvorí continue_url, položky idú do košíka,
ktorý obchod ukazuje v tej
karte prehliadača: do zákazníckeho košíka, ak je v obchode v tej karte
prihlásený, inak do košíka hosťa. Odkaz otvorený v novej karte preto
zvyčajne naplní košík hosťa. Kupujúci, ktorý sa potom prihlási v pokladni
obchodu, položky spravidla nestratí (obchod košík hosťa zlúči so
zákazníckym), ale checkout v UCP sa nedokončí (pozri vyššie).
Čo musí kupujúci v obchode zadať znova?
Všetko okrem položiek a uplatneného zľavového kódu: kontaktné údaje, adresu doručenia, spôsob dopravy aj platbu. Údaje kupujúceho, ktoré ste poslali, zostávajú v relácii UCP.
Ceny, jazyky a meny
Sú ceny s DPH, alebo bez nej?
Sumy sú celé čísla v najmenších jednotkách meny, ktorá je pri nich (EUR aj HUF
majú dve desatinné miesta: 69900 EUR je 699,00 €). Obsahujú DPH všade,
kde má obchod cenu s DPH, a prirážky obchodu; samostatný príznak na to
odpoveď nemá. V košíku a checkoute sú súčty subtotal, záporná discount
(iba kým platí zľavový kód), fulfillment (cena dopravy, až keď je
vybraná možnosť dopravy) a total; všetky okrem total dávajú spolu
total. Percentuálny zľavový kód sa počíta zo súčtu bez DPH, presne
ako v pokladni obchodu, takže 10 % zľava nie je 10 % zo zobrazeného
medzisúčtu. Príplatky za spôsob platby sa nenaceňujú.
V akom jazyku a mene obchod odpovedá?
Jazyk je context.language z tela požiadavky, inak prvý použiteľný jazyk z
Accept-Language (v poradí hlavičky — váhy sa ignorujú), inak prvý jazyk
obchodu; použije sa iba jazyk, ktorý obchod ponúka. Mena sa riadi
jazykom: context.currency ju nezmení, iba hovorí, v akej mene je
zadaný filters.price v katalógu (vo vyhľadávaní aj vyhľadaní podľa id).
Ak chcete ceny v inej mene, zvoľte jazyk, v ktorom obchod v tej mene
predáva. Košík alebo checkout si jazyk
ponechá, kým telo požiadavky neuvedie iný context.language; zmena jazyka
položky nanovo nacení a id ich riadkov sa zmenia.
Sklad, zľavy a doprava
Aký aktuálny je sklad a rezervuje sa niečo?
Katalóg uvádza pre každý variant availability.status — in_stock,
out_of_stock, preorder alebo discontinued — bez počtu kusov. Každé
vytvorenie a každá úprava, ktorá posiela line_items (úprava košíka ich
posiela vždy), sklad overí znova: množstvo nad stav skladu sa zníži s
varovaním quantity_adjusted, vypredaný riadok sa odstráni s
out_of_stock a variant na predobjednávku sklad neobmedzuje (každý riadok
má strop 999 kusov). Nič sa nerezervuje, kým kupujúci neodošle objednávku
v obchode; sklad sa overuje znova pri odovzdaní položiek aj v pokladni
obchodu.
Ako fungujú zľavové kódy?
Iba ak váš profil deklaruje dev.ucp.shopping.discount. Na košík alebo
checkout sa uplatní jeden kód: prvý, ktorý obchod prijme, a každý kód za
ním dostane varovanie discount_code_combination_disallowed. Odmietnutý
kód dostane discount_code_expired, discount_code_user_ineligible alebo
discount_code_invalid — a v košíku bez položiek je každý kód
discount_code_invalid, kým sa položky nepridajú. Uplatnený kód putuje s
položkami do košíka kupujúceho, kde ho obchod overí znova.
Aké možnosti dopravy sú k dispozícii a čo výdajné miesta?
Keď deklarujete dev.ucp.shopping.fulfillment, checkout ponúkne aktívne
spôsoby dopravy obchodu pre krajinu doručenia (kým adresa nie je známa,
všetky) ako možnosti jedného spôsobu doručenia, každú s cenou vypočítanou
podľa toho istého pravidla ako v pokladni obchodu. Výber spôsobu, ktorý
potrebuje výdajné miesto (spôsob Packeta), pridá správu
pickup_point_required: miesto sa vyberá v obchode a checkout sa aj tak
môže dostať do stavu requires_escalation. Zvolená možnosť sa do obchodu
neprenáša; kupujúci dopravu vyberie znova tam.
Limity, údaje a verzie
Aké sú limity požiadaviek?
Na IP adresu klienta a na operáciu za minútu: 600 pre čítanie (profil,
katalóg, čítanie košíka alebo checkoutu), 300 pre zápisy, 60 pre každú z
dvoch ciest odovzdania (načítanie stránky continue_url a požiadavka,
ktorú stránka potom odošle). Platia spolu pre všetky obchody na
Monokaide. Nad limitom
príde 429 rate_limited s Retry-After: 60. Webový server pred API
povolí 100 požiadaviek za sekundu na IP (nárazovo 200) a nad tým odpovie
vlastnou HTML stránkou 429. Jeden klient (IPv4 adresa alebo IPv6
/64) môže za minútu prinútiť Monokaido stiahnuť najviac 5 profilov
platformy, ktoré ešte nemá v cache (stiahnutý profil slúži všetkým
obchodom); ďalšie dostanú 503 s Retry-After. Pozri
Idempotencia, súbežnosť a limity.
Aké údaje sa ukladajú a ako dlho?
Košík alebo checkout uchováva, čo ste poslali — meno, e-mail a telefón
kupujúceho, adresu doručenia, context požiadavky, zľavové kódy — spolu s
adresou profilu vašej platformy a svojou poslednou odpoveďou, a to do 30
dní po svojom expires_at. Odpovede uložené pre Idempotency-Key sa
zmažú po 25 hodinách. Tabuľky UCP neukladajú IP adresu ani User-Agent. To,
čo kupujúci zadá v pokladni obchodu, sú bežné údaje objednávky obchodu.
Kto za ktoré údaje právne zodpovedá, určujú zmluvné podmienky obchodu a
Monokaida. Pozri Bezpečnosť a ochrana údajov.
Ktorá verzia protokolu platí a ako sa budú riešiť zmeny?
Presne 2026-04-08. ucp.version profilu vašej platformy musí byť tento
dátum — každý iný sa odmietne s 422 version_unsupported — a každá
schopnosť, ktorú používate, ho musí uvádzať: schopnosť deklarovaná iba v
inej verzii sa nevyjedná a operácia, ktorá ju potrebuje, odpovie správou
capabilities_incompatible. Obchod nezverejňuje supported_versions.
Neznáme polia v požiadavkách sa ignorujú, nikdy sa neodmietajú. Čo obchod
dnes podporuje, vždy povie jeho profil; tento manuál aj
dokument OpenAPI opisujú
nasadený kód a každá stránka uvádza, kedy bola naposledy aktualizovaná.
Na koho sa obrátiť?
Otázky k produktom, cenám, doručeniu alebo konkrétnej objednávke patria
obchodu. Otázky k implementácii UCP smerujte na Monokaido na
support@monokaido.com. Uveďte doménu obchodu,
čas (UTC), metódu a cestu, HTTP stav a code odpovede — API nevracia
žiadne id požiadavky, preto si do logov zapisujte vlastné. Id košíka alebo
checkoutu a continue_url sú prístupové údaje: nikdy ich neposielajte
celé, ani nám — uveďte ich prvých osem znakov (pozri
Nahlásenie bezpečnostného problému).