C cenaly.com
Започни бесплатно

Витрина на сопствен код

Манифест на податоци, јавни JSON, API за гости и вебхукови за сопствен фронтенд

On this page 7

Излог на сопствен код (headless)

Вообичаениот пат е нашиот излог или виџетите на вашиот сајт. Но ако сајтот го пишува вашиот развивач или агенција и верстката треба да биде целосно ваша, работи третата опција: вие од нас ги земате податоците и приемот на нарачки, а целиот фронтенд го правите сами, на кој било стек.

Читањето податоци не бара клучеви и авторизација: сѐ што е јавно на излогот, е јавно и во JSON.

Каде се поставува: Маркетинг → „Мојот сајт“ → картичката „Излог на сопствен код“. Таму е и адресата на манифестот на вашата локација, врските до техничката документација и JSON-шемите и поставувањето на вебхукови. Ништо не треба да се вклучува: податоците се објавуваат секогаш.


Манифест storefront.json#

Единствената адреса што развивачот треба да ја знае:

https://cdn.cenaly.com/{ДОМЕН}/storefront.json

Во манифестот е сѐ останато:

Блок Што содржи
location Идентификатор, слаг, вертикала (ресторан, продавница, хотел, салон)
languages Јазик по default и список на вклучени јазици
currency Код и симбол на валутата
cdnBase + data Патеки до менито, профилот, страниците, колекциите, рецензиите и препораките „со ова се купува“
catalog Режим на каталогот: сѐ во фајлови или поединечни картички и каталог API
images База на изображенија, шаблони на патеки (фото на ставка и галерии, видео, категории, колекции, корица и лого, favicon) и достапни големини
api Адреси на гостинскиот API, спецификации OpenAPI, комерцијалниот контур, MCP-ендпоинтот и WebSocket за живи статуси на нарачката
publishId, publishedAt Идентификатор на објавата: се менува при секое повторно генерирање на податоците

Контрактот е верзиониран (contractVersion), а покрај него лежат JSON-шеми — по нив е удобно да се валидираат податоците и да се генерираат типови. Непознатите полиња треба да се игнорираат: контрактот се проширува без кршење на компатибилноста.


Податоци и изображенија#

Сѐ што покажува излогот е достапно како фајлови: менито и каталогот по јазици, профилот на локацијата (назив, адреса, работно време, контакти, поставки), страниците и статиите, колекциите, рецензиите.

За големи каталози манифестот се префрла во режим api: во фајлот на менито лежи олеснет избор, целосните картички се земаат поединечно или преку каталог API со филтри и поткатегории.

Изображенијата се од нашиот CDN, во неколку големини по шаблон од манифестот; при обновување на фотото патеката се верзионира, па кешот може да се држи „засекогаш“.

Пишувањето на сите овие барања рачно не е задолжително: има npm-пакет @cenaly/storefront — типизиран клиент на контрактот (манифест, профил, мени во двата режима на каталогот, оформување на нарачка), градител на URL за изображенија и React-хукови. Пакетот има посебна влезна точка за статични сборки (@cenaly/storefront/static: карта на адреси на сајтот, sitemap.xml, robots.txt, врски до изображенија) и конзолна команда cenaly-storefront — снимка на сите податоци на локацијата во папка, список на адреси и режим watch, кој го следи манифестот и ја стартува вашата сборка штом се смени publishId. Тој е и основата на стартниот проект на Next.js, кој може да се клонира и едноставно да се пребои.


Нарачки и гостински API#

Приемот на нарачки, статусот на нарачката, пребарувањето и резервациите — преку гостинскиот API: без авторизација, адресата се зема од манифестот, спецификацијата е OpenAPI 3.1. Одделно има комерцијален контур: купони, пресметка на достава, форми, претплати. Повеќе — Guest API за AI-агенти, истиот интерфејс.

Нарачката создадена од вашиот сајт влегува во заедничкиот дел „Нарачки“ и живее по вообичаените правила: статуси, кујна, курири, сметки, известувања.


Вебхукови за измени#

За да не го прашувате CDN постојано, претплатете се на настаните:

  • menu.updated — менито или каталогот се повторно генерирани;
  • profile.updated — се смени профилот на локацијата;
  • pages.updated — се сменија страниците и статиите.

Во телото на настанот пристигнува publishId — по него е удобно да се пресоберат статичните страници или да се ресетира ISR-кешот. Ако сте задале тајна, барањето се потпишува со HMAC-SHA256 и пристигнува со заглавие X-Meni-Signature — проверете го потписот пред да пресоберете нешто; за deploy-хук на Vercel/Netlify тајна не мора да се заведува. До пет адреси на локација, а по десет неуспеси по ред претплатата се исклучува сама (во кабинетот се гледа последната достава и бројачот на грешки; повторното зачувување на поставките ја вклучува повторно).

Која адреса ќе ја прими серверот. Само https://, без логин и лозинка во самиот URL, и хостот мора да биде јавен: локалните, внатрешните и службените адреси (localhost, 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 100.64.0.0/10, 169.254.169.254) се отфрлаат при зачувување. За отстранување грешки на својата машина кренете тунел со јавна https-адреса.

Кога има повторување. Се повторуваат тајмаутите и одговорите 5xx, 408, 429 — односно тоа што личи на привремен дефект. Секој друг одговор 4xx се смета за постојана грешка: повторување нема, обидот веднаш оди во бројачот на неуспеси.

Вебхуковите се поставуваат во картичката „Излог на сопствен код“ и се достапни на платените планови; читањето податоци е достапно секогаш.


Од каде да се почне#

  1. Отворете Маркетинг → „Мојот сајт“ → „Излог на сопствен код“ и копирајте ја адресата на манифестот.
  2. Вчитајте го манифестот и од него — податоците за менито и профилот (или ставете го пакетот @cenaly/storefront и предајте му го слаго на локацијата). Никакви клучеви на овој чекор не се потребни.
  3. Соберете ги страниците со вашиот фрејмворк; за нарачки користете го гостинскиот API.
  4. Додајте вебхук за да го пресоберете сајтот по фактот на измените — или, ако нема јавна адреса за прием на настани, стартувајте cenaly-storefront watch: тој сам го следи publishId во манифестот и ја стартува вашата сборка.

Целосниот технички опис е на врската „Документација за развивачи“ во истата картичка; покрај неа се врските до одделниот прирачник за статичен сајт и до JSON-шемите. Има готов стартен проект на Next.js, а целата документација се дуплира како llms.txt за ИИ-асистентите на развивачот — вклучително и персоналниот llms.txt на вашата локација на CDN.


Поврзани раздели#


Често поставувани прашања#

Дали треба да се плаќа за читање на податоците? Не. Јавните JSON се достапни на секој план — тоа се истите датотеки што ги користи нашата витрина. Платени се вебхуковите.

Што со SEO? Тоа е целосно на ваша страна: самите ги составувате страниците и самите управувате со означувањето. Податоци за микроозначување (JSON-LD) има во договорот.

Може ли да се комбинира со сопствена витрина? Да. Нашата витрина, виџетите и вашиот сопствен сајт работат со истите податоци и со истата кошничка за нарачки.

Was this article helpful?