C cenaly.com
Započni besplatno

Guest API za AI agente

Menu, porudžbine i rezervacije za AI asistente — javni REST + MCP, bez autorizacije

6 min read Demo admin panela
On this page 8

Guest API za AI agente

Javni API cenaly.com, preko kojeg AI asistenti i agenti deluju u ime gosta: čitaju meni restorana, pretražuju katalog, sastavljaju korpu, kreiraju porudžbinu i rezervišu sto. Za sve to autorizacija nije potrebna — to su iste operacije koje su dostupne gostu na sajtu menija.

Adresiranje restorana#

Restoran se adresira kodom lokacije — to je segment URL-a menija velikim slovima. Ako se meni otvara na cenaly.com/MYCAFE, kod je MYCAFE. Isti kod je ugrađen u QR kodove stolova.

Brzi start (REST)#

# Šta API ume
curl https://api.cenaly.com/llm/v1

# Cenaly restorana na ruskom
curl "https://api.cenaly.com/llm/v1/locations/MYCAFE/menu?lang=ru"

# Kreiraj porudžbinu za poneti
curl -X POST https://api.cenaly.com/llm/v1/locations/MYCAFE/orders \
  -H 'Content-Type: application/json' \
  -d '{
    "items": [{"itemId": "abc123", "quantity": 2}],
    "orderType": "pickup",
    "customer": {"name": "Гость", "phone": "+995555123456"},
    "language": "ru"
  }'
# → {"accepted": true, "orderId": "…", "total": 24, "statusUrl": "…"}

# Status porudžbine (orderId — tajni pristupni token)
curl https://api.cenaly.com/llm/v1/locations/MYCAFE/orders/{orderId}

Puna specifikacija: OpenAPI 3.1 · interaktivna dokumentacija (na jeziku brenda; ?lang=en|ka|ru|tr|sq).

Endpointi#

Metod Putanja Šta radi
GET /llm/v1/locations/{DOMAIN}/menu?lang=xx Cenaly: kategorije, jela, cene, varijante i dodaci, valuta, načini preuzimanja
GET /llm/v1/locations/{DOMAIN}/items/{itemId} Jedno jelo sa opcijama
GET /llm/v1/locations/{DOMAIN}/items?ids=a,b,c Više jela odjednom (do 10 po zahtevu)
GET /llm/v1/locations/{DOMAIN}/search?q=&limit= Semantička pretraga kataloga — po nazivima, opisima i karakteristikama
GET /llm/v1/locations/{DOMAIN}/store-info Činjenice van menija: adresa, kontakti, koordinate, radno vreme
GET /llm/v1/locations/{DOMAIN}/policies?q= Pretraga objavljenih pravila, FAQ i info stranica objekta
POST /llm/v1/locations/{DOMAIN}/carts Kreiraj korpu na serveru
GET / PATCH /llm/v1/locations/{DOMAIN}/carts/{cartId} Pročitaj korpu / izmeni sastav
POST /llm/v1/locations/{DOMAIN}/orders Kreiraj porudžbinu (server validira sastav i obračunava iznose)
GET /llm/v1/locations/{DOMAIN}/orders/{orderId} Status porudžbine, broj, stavke
GET /llm/v1/locations/{DOMAIN}/reservations/availability?start=&durationMinutes= Slobodni/zauzeti stolovi po šemi sale
POST /llm/v1/locations/{DOMAIN}/reservations Zahtev za rezervaciju (pending do potvrde restorana)
GET / DELETE /llm/v1/locations/{DOMAIN}/reservations/{id} Status / otkazivanje rezervacije

Korpa: sastavi porudžbinu korak po korak#

Agent ne mora da pogodi sastav porudžbine iz jednog pokušaja — može da vodi korpu na serveru, kao što to čovek radi u veb-korpi:

  1. POST /carts sa prvim stavkama → cartId
  2. PATCH /carts/{cartId} — dodaj, izmeni količinu, ukloni (quantity: 0)
  3. POST /orders sa cartId — kreiraj

Cene u korpi se uvek preračunavaju po živom meniju, tako da ne može da prikaže zastareo iznos. Korpa živi 7 dana. U svakom odgovoru postoji checkoutUrl — link možete jednostavno dati čoveku da završi porudžbinu u običnom checkout-u.

Pri kreiranju porudžbine može se proslediti idempotencyKey (8–64 znaka): ponavljanje sa istim ključem u roku od 48 sati vratiće izvornu porudžbinu, a ne kreirati drugu. Isto važi i za rezervacije — ponavljanje u istom okviru vratiće izvornu rezervaciju, a ne zauzeti drugi sto.

Povezivanje preko MCP#

Server: https://api.cenaly.com/llm/mcp — Model Context Protocol, streamable HTTP, stateless. Gostujući alati rade bez autorizacije; prijava preko OAuth dodaje im alate vašeg naloga.

Konfiguracija za Claude Desktop / Claude Code i kompatibilne klijente:

{
  "mcpServers": {
    "meni-guest": {
      "type": "http",
      "url": "https://api.cenaly.com/llm/mcp"
    }
  }
}

Gostujući alati (13, bez autorizacije):

Grupa Alati
Cenaly i katalog get_menu, get_item, search_products
Objekat get_store_info, search_policies_and_faqs
Korpa update_cart, get_cart
Porudžbina create_order, get_order_status
Rezervacija stola check_table_availability, create_reservation, get_reservation_status, cancel_reservation

Tipični scenariji:

  • Brza porudžbina: get_menu → create_order → get_order_status (četvorocifreni broj se pojavljuje za par sekundi).
  • Porudžbina u dijalogu: search_products → update_cart (stavku po stavku, kao u razgovoru) → get_cart → create_order, ili dati gostu checkoutUrl i pustiti ga da sam završi porudžbinu.
  • Pitanje o objektu: get_store_info (adresa, radno vreme, kontakti) ili search_policies_and_faqs (uslovi dostave, povraćaj, pravila).
  • Rezervacija stola: check_table_availability (stolovi sa šeme sale, slobodan/zauzet za izabrano vreme) → create_reservation sa tableId → get_reservation_status (restoran potvrđuje zahtev) → po potrebi cancel_reservation.

Pristup svojim podacima#

Ako ste vlasnik lokala ili zaposleni, na istih 13 gostujućih alata dodaje se 12 alata za rad sa svojim nalogom — u dve grupe.

Podaci naloga (6): resolve_domain, list_files, read_file, write_file, delete_file, write_signal. Oni otvaraju ne samo meni i porudžbine, već i CRM, magacin, osoblje, podešavanja kase i kuhinjskog ekrana, dokumente i skoro sve ostale sekcije.

Klijentski sajt lokacije (6): get_site_settings, update_site_settings, list_site_templates, apply_site_template, check_domain_availability, rename_site_domain.

Alat Šta radi
get_site_settings Čita podešavanja izloga: naslov, tip poslovanja, prekidače (porudžbine, poziv konobara, povratni poziv, cookie baner), dostava/preuzimanje/WhatsApp, izgled i šablon, raspored kartica, kampanje angažovanja, valutna tržišta, A/B test dizajna, a za trgovinu — izlog, SEO, sekcije početne strane i dodatke prodavnice
update_site_settings Menja ista ta podešavanja: izmena se spaja sa profilom lokacije kroz isti tok kao i izmene iz admin panela — promene su vidljive za nekoliko sekundi
list_site_templates Galerija gotovih šablona dizajna — ista kao u panelu
apply_site_template Primenjuje šablon jednom radnjom: izgled, raspored kartica i id šablona
check_domain_availability Proverava da li je ime poddomena slobodno (3–63 znaka, slova/cifre/crtica, rezervisana imena se odbijaju). Ništa ne menja
rename_site_domain ⚠️ Preimenuje domen izloga: samo vlasnik, i svi stari linkovi i odštampani QR kodovi na stari domen prestaju da rade

Prijava — običan OAuth 2.1 pod vašim nalogom cenaly.com: MCP klijent (Claude, ChatGPT, CLI) registruje se sam i otvara prozor za prijavu. Ništa ne treba ručno da se unosi.

  • Metapodaci resursa: https://api.cenaly.com/.well-known/oauth-protected-resource
  • Metapodaci servera za autorizaciju: https://api.cenaly.com/.well-known/oauth-authorization-server
  • Dinamička registracija klijenta (RFC 7591): POST https://api.cenaly.com/llm/oauth/register

Dok nema tokena, tools/list prikazuje samo gostujuće alate — autorizovani prosto nisu vidljivi.

Pravila i garancije#

  • Porudžbina se validira prema živom meniju: nepostojeće jelo, varijanta ili dodatak — greška 400 sa spiskom problema; cene i ukupan iznos računa server, agent nema način da „odredi“ cenu.
  • Za preuzimanje i dostavu obavezni su ime i telefon gosta; za dostavu — adresa.
  • orderId / reservationId — tajni tokeni: preko njih se proverava status i otkazuje rezervacija. Ne objavljujte ih.
  • Porudžbine i rezervacije stižu restoranu u realnom vremenu — u admin panel, na kuhinjski ekran i u obaveštenja, kao obične porudžbine sa sajta.
  • Gostujuće rezervacije imaju status pending dok ih restoran ne potvrdi u admin panelu.
  • U Rusiji alkohol preko agentskog kanala poručivanja nije moguć. Distantna prodaja alkoholnih proizvoda zabranjena je zakonom (pp. 14 p. 2 st. 16 171-FZ), pa kod lokacija sa zemljom „Rusija“ porudžbina sa alkoholnom stavkom ne prolazi validaciju: u odgovoru 400 stiže red sa nazivom te stavke i objašnjenjem da se ona može poručiti samo kod konobara u sali. Porudžbinu treba ponovo sastaviti bez alkohola.

Mašinski čitljivo otkrivanje#

  • https://cenaly.com/llms.txt — kratka mapa API-ja za LLM;
  • GET https://api.cenaly.com/llm/v1 — discovery dokument: pun spisak endpointa, primeri porudžbine, rezervacije i rada sa korpom, linkovi na OAuth metapodatke.
Was this article helpful?