Siparişler
Sipariş ver
Siparişi doğrudan mekanın mutfağına gönderin. Onay adımı yoktur; mutfak fişi o an yazdırılır.
/public/v1/venues/{venueId}/ordersUyarı: Deneme ortamı yoktur. Gerçek bir anahtarla verilen sipariş, gerçek bir mekanda gerçek bir sipariştir ve mutfağında fiş basılır. Geliştirirken yönettiğiniz bir mekanı kullanın, ekibine haber verin ve sipariş olması gerekmeyen her şey için sepeti fiyatlayın.
Siparişi ve Idempotency-Key başlığını gönderin. Yanıt, GET /orders/{orderId} adresini gösteren bir Location başlığıyla 201 Created olur. İstek zaman aşımına uğrar ya da bağlantı koparsa aynı anahtarla yeniden gönderin: ilk çağrının verdiği siparişi mekandaki güncel haliyle 200 OK olarak alırsınız ve hiçbir şey iki kez sipariş edilmez. Yeni bir sipariş için yeni bir anahtar üretin. Ayrıntılar: Sipariş vermek.
201 yanıtındaki addedLineIds değerini saklayın. Bu çağrının order.lines içinden tam olarak hangilerini yazdığını söyler; başkalarının satırları bulunan bir masa hesabına eklenen siparişte önemlidir. Yeniden denemenin (200) yanıtında bu değer en iyi tahmindir.
Sunucu siparişi fiyatlar: satırlar ekstralarıyla menü fiyatından, mekanın otomatik kampanyaları ve hizmet bedeli. Toplamı önceden göstermek için sepeti fiyatlayın.
- Masa (
DineIn)tableIdister, müşteri almaz: tur masanın açık hesabına eklenir ya da yeni bir hesap açar. - Gel-al (
Takeaway)customer.namevecustomer.phoneister; paket (Delivery) ayrıcacustomer.addressister. Bu ikisitableIdalmaz. - 1 ile 30 arası satır, her satırda 1 ile 20 arası adet, satır başına en fazla 20 ekstra ve 20 çıkarılan malzeme; sipariş notu en fazla 300, satır notu en fazla 200 karakter.
Mekan şu an sipariş alıyor olmalı: etkin bir abonelik (PUBLIC_API_ORDERING_UNAVAILABLE), mutfak yoğunluğu olmaması (PLACE_IS_BUSY) ve çalışma saatleri içinde olmak (OUTSIDE_WORKING_HOURS). Her ürün menüde listelenen ve sipariş edilebilir bir ürün olmalı; tükenmiş ürün de reddedilir.
Parametreler
venueIdstring · uuidYol parametresizorunluMekan; GET /venues listesindeki kimliklerden biri.
Idempotency-KeystringBaşlıkzorunluHer sipariş için bir kez ürettiğiniz ve o siparişin her yeniden denemesinde değiştirmeden gönderdiğiniz değer: 8 ile 64 arası harf, rakam, - ya da _ (bir UUID uygundur). Zorunlu.
8–64 karakter
Accept-LanguagestringBaşlıkHata yanıtlarındaki userMessage metninin dili: tr (varsayılan), en, de, fr, it, es, ar ya da ru. Başlıktaki ilk dil belirler, bölgesi olmadan (en-US, en okunur) ve q ağırlıklarına bakılmadan; Cibusy'nin sunmadığı bir dil Türkçe yanıtlanır. Menünün dilini seçmez; o, menü çağrısındaki lang parametresidir.
İstek gövdesi
Mekanın sitesinin gönderdiği sipariş ya da önce fiyatlanmasını istediği sepet. Fiyat taşımaz: sunucu her satırı mekanın menüsünden fiyatlar, mekanın kampanyalarını ve hizmet bedelini uygular ve toplamı yanıtta söyler.
typestringzorunluSiparişin misafire nasıl ulaşacağı. Zorunlu.
DineIn- Masada: tur, masanın açık hesabına eklenir ya da yeni bir hesap açar.
Takeaway- Gel-al: müşteri siparişi mekandan alır.
Delivery- Paket: mekan siparişi müşteriye götürür.
tableIdstring · uuidnull olabilirMasada verilen siparişin masası; GET /venues/{venueId}/tables listesindeki kimliklerden biri. DineIn için zorunlu, Takeaway ve Delivery için verilemez. Mekanın masalarından biri olmayan kimlik 404 alır.
customerobjectnull olabilirSiparişin kimin için olduğu. Takeaway (ad ve telefon) ve Delivery (ad, telefon ve adres) için zorunlu; DineIn için verilemez: masadaki misafire oturduğu yerde servis edilir.
Müşteri alanları
namestringzorunlunull olabilirMüşterinin adı, en fazla 100 karakter. Zorunlu.
phonestringzorunlunull olabilirSiparişle ilgili aranacak numara; uluslararası biçimde ya da yerel yazıldığı gibi (+905321112233, 0532 111 22 33). En fazla 30 karakter. Zorunlu.
addressstringnull olabilirPaketin gideceği adres, müşterinin kendi sözleriyle, en fazla 300 karakter. Delivery için zorunlu, Takeaway için verilemez.
paymentMethodstringnull olabilirGel-al ya da paket siparişte müşterinin nasıl ödeyeceğini söylediği. İsteğe bağlı; masada hesap masada kapandığı için DineIn siparişinde verilemez. Siparişi teslim edecek kişi için bir ipucudur: API üzerinden hiçbir ödeme alınmaz.
Cash- Nakit.
Card- Kart.
MealCard- Yemek kartı.
notestringnull olabilirMutfak için siparişin tamamıyla ilgili bir not, en fazla 300 karakter.
linesobject[]zorunluSipariş edilen ürünler: 1 ile 30 arası satır.
Sipariş satırı isteği alanları
productIdstring · uuidzorunluÜrün; GET /venues/{venueId}/menu listesindeki kimliklerden biri. Zorunlu.
portionIdstring · uuidzorunluO ürünün porsiyonu. Zorunlu. Mekanın tartıyla sattığı porsiyon (menüde orderable: false) sipariş edilemez.
quantityintegerzorunluKaç adet: 1 ile 20 arası.
notestringnull olabilirMutfak için bu satırla ilgili bir not, en fazla 200 karakter.
extraIdsstring[]Satırın her bir adedi için seçilen ekstralar; ürünün menüdeki extras listesinden kimlikler, en fazla 20, her biri en fazla bir kez. Ürünün kendi ekstrası olmayan ya da ürünün seçim gruplarını bozan bir seçim (bir kahvede iki şeker seviyesi, zorunlu grupta hiç seçim) reddedilir.
removedIngredientIdsstring[]Satırın her bir adedinden çıkarılacak malzemeler; ürünün menüdeki removableIngredients listesinden kimlikler, en fazla 20, her biri en fazla bir kez.
Yanıtlar
Yeniden deneme: aynı Idempotency-Key ile zaten verilmiş sipariş. Buradaki addedLineIds en iyi tahmindir; 201 yanıtındakileri saklayın.
Sipariş verildi. Location siparişi gösterir; addedLineIds bu çağrının siparişe koyduğu satırların tam listesidir, saklayın.
LocationSiparişin okunabileceği yer: /public/v1/orders/{orderId}.
PUBLIC_API_IDEMPOTENCY_KEY_INVALID, PUBLIC_API_ORDER_INVALID ya da PUBLIC_API_PRODUCT_OPTION_INVALID.
X-Api-Key başlığı yok (PUBLIC_API_KEY_MISSING) ya da anahtar geçersiz veya iptal edilmiş (PUBLIC_API_KEY_INVALID).
PUBLIC_API_SCOPE_MISSING: anahtar "Sipariş gönderebilir" izniyle oluşturulmamış.
PUBLIC_API_VENUE_NOT_FOUND, PUBLIC_API_TABLE_NOT_FOUND ya da PUBLIC_API_PRODUCT_NOT_FOUND.
PUBLIC_API_ORDERING_UNAVAILABLE, PLACE_IS_BUSY, OUTSIDE_WORKING_HOURS, PUBLIC_API_PRODUCT_UNAVAILABLE ya da ORDER_CREATION_IN_PROGRESS.
Anahtarın siparişler, rezervasyonlar ve testler için dakikada yaklaşık 30 isteklik bütçesi doldu; Retry-After kadar saniye bekleyin.
Retry-AfterBeklenecek saniye. Bir sonraki dakikalık pencere bu süre içinde açılır.
Başarılı yanıtın data alanı
Sipariş vermenin yanıtı: siparişin mekandaki hali ve satırlarından hangilerini bu çağrının yazdığı (ilk yanıtta kesin, bir yeniden denemede yaklaşık; bkz. addedLineIds). Bir Idempotency-Key ilk kullanıldığında 201, tekrarlandığında 200 ile gelir.
orderobjectSipariş. Zaten açık bir hesaba eklenen masa siparişi o hesabın tamamı olarak, başkalarının sipariş ettiği satırlarla birlikte gelir.
Sipariş alanları
idstring · uuidSiparişin kimliği. GET /orders/{orderId} ile kullanın.
numberintegerMekanın siparişi çağırdığı numara, mekan içinde 1'den başlayarak sayılır. Müşteriye gösterin; mutfak fişinde yazan numaradır. Yalnız mekan içinde benzersizdir.
venueIdstring · uuidSiparişin verildiği mekan.
typestringSiparişin misafire nasıl ulaştığı.
DineIn- Masada: tur, masanın açık hesabına eklenir ya da yeni bir hesap açar.
Takeaway- Gel-al: müşteri siparişi mekandan alır.
Delivery- Paket: mekan siparişi müşteriye götürür.
statusstringSiparişin geldiği aşama; sipariş satırlarından ve hesaptan her okumada yeniden hesaplanır.
Received- Mekan siparişi aldı, mutfak henüz başlamadı.
Preparing- Mutfak satırlardan en az birine başladı.
Ready- Her satır hazır ya da servis edildi.
Served- Her satır servis edildi.
OnTheWay- Paket mekandan çıktı.
Completed- Mekan hesabı kapattı.
Cancelled- Sipariş iptal edildi ya da üzerindeki her satır silindi.
paymentStatusstringHesabın ne kadarının mekanda ödendiği.
Unpaid- Mekanda henüz hiçbir şey ödenmedi.
PartiallyPaid- Hesabın bir kısmı ödendi.
Paid- Hesap ödendi.
tableobjectnull olabilirMasa siparişinin masası. Gel-al ve pakette null.
Sipariş masası alanları
idstring · uuidMasanın kimliği, GET /venues/{venueId}/tables listesindeki gibi.
namestringMasanın adı.
customerobjectnull olabilirGel-al ya da paket siparişin kimin için olduğu. Masa siparişinde ve müşteri bilgisi alınmamış siparişte null.
Müşteri bilgisi alanları
namestringnull olabilirMüşterinin adı.
phonestringnull olabilirMüşterinin telefon numarası, uluslararası biçimde.
addressstringnull olabilirPaketin gideceği adres.
paymentMethodstringnull olabilirMüşterinin söylediyse nasıl ödeyeceği. Aksi halde null.
Cash- Nakit.
Card- Kart.
MealCard- Yemek kartı.
notestringnull olabilirSiparişin verildiği mutfak notu. Not yoksa null.
linesobject[]Siparişteki her satır; başkalarının masa hesabına koyduğu satırlar ve sonradan iptal edilenler dahil. Zaten açık bir hesaba eklenen masa siparişinde hesabın tüm satırları buradadır; sipariş verme yanıtındaki addedLineIds hangilerini o çağrının yazdığını söyler.
Sipariş satırı alanları
idstring · uuidSatırın kimliği. Satır siparişte kaldığı sürece değişmez.
productIdstring · uuidÜrün, menüdeki gibi.
productNamestringÜrünün mekanın kendi sözleriyle adı.
portionIdstring · uuidnull olabilirSipariş edilen porsiyon, menüdeki gibi.
portionNamestringnull olabilirPorsiyonun sipariş verildiği andaki adı.
quantityintegerKaç adet.
unitPricenumberBir adedin fiyatı, ekstralar dahil, sipariş verildiği andaki haliyle.
totalnumberSatırın tuttuğu: unitPrice × quantity, kampanyalardan önce. İptal edilen ve mekanın ikram ettiği satırda 0.
statusstringSatırın mutfakta geldiği aşama.
Pending- Mutfakta sırada.
Preparing- Hazırlanıyor.
Ready- Hazır.
Served- Servis edildi.
Cancelled- İptal edildi. İptal edilmiş bir siparişin satırları da böyle okunur.
extrasobject[]Her adetteki ekstralar.
Satır ekstrası alanları
idstring · uuidEkstra, menüdeki gibi.
namestringEkstranın adı.
pricenumberSipariş verildiği anda adet başına tuttuğu.
removedIngredientsobject[]Her adetten çıkarılan malzemeler.
Çıkarılan malzeme alanları
idstring · uuidMalzeme, menüdeki gibi.
namestringMalzemenin adı.
notestringnull olabilirBu satır için mutfak notu. Not yoksa null.
orderedAtstring · date-timeSatırın siparişe konduğu an (UTC).
totalsobjectSiparişin tuttuğu ve ne kadarının ödendiği.
Tutarlar alanları
subtotalnumberSatırların ekstralarıyla menü fiyatı, kampanyalardan önce. İptal edilen satırlar sayılmaz.
discountnumberMekanın kampanyalarının ve indirimlerinin düştüğü tutar.
serviceFeenumberMekanın hizmet bedeli; kampanyalardan sonraki yiyecek tutarı üzerinden alınır. Mekan almıyorsa 0.
totalnumberSiparişin tuttuğu.
paidnumberMekanda bunun ne kadarının ödendiği.
remainingnumberHala borç olan tutar. Hesap ödendiğinde 0.
currencystringTüm tutarların para birimi, ISO 4217 kodu. Her zaman TRY.
createdAtstring · date-timeSiparişin verildiği an (UTC).
closedAtstring · date-timenull olabilirMekanın siparişi kapattığı an (UTC). Sipariş açıkken ve iptal edilmiş siparişte null.
addedLineIdsstring[]Bu çağrının siparişe koyduğu satırların kimlikleri, order.lines içinde. 201 yanıtında tam olarak bu çağrının yazdığı satırlardır; saklayın. Anahtar tekrarlandığında (200) sipariş hangi isteğin hangi satırı yazdığını bilmez, bu yüzden en iyi tahmindir: ilk çağrı kaydedilmeden önceki 15 saniye içinde siparişe konan satırlar. Başkalarının da eklediği bir masa hesabında, o arada başkasının eklediği bir satırı içerebilir.