Görünüm
Siparişler
Listeleme
GET
/api/v1/pos/ordersPOS anahtarı| Parametre | Varsayılan | Sınır |
|---|---|---|
status | yok (hepsi) | Durum adlarından biri |
limit | 50 | En çok 200 |
offset | 0 | — |
Yanıt sipariş nesnelerini taşır. Alanların kesiti:
json
{
"data": {
"orders": [
{
"id": "…",
"order_number": "A17",
"restaurant_id": "…",
"status": "pending",
"total_amount": 348.5,
"delivery_fee": 29.9,
"restaurant_earnings": 310.0,
"courier_type": "platform",
"payment_method": "card",
"payment_status": "succeeded",
"address_text": "",
"items": [{ "name": "Tavuk dürüm", "quantity": 2 }],
"created_at": "2026-10-12T09:02:11Z"
}
]
},
"meta": { "request_id": "01JB2K9X7Q" }
}Bu yanıt müşteri verisi taşır
Sipariş notu (notes) gövdededir; mutfak talimatı olduğu için kırpılmaz. Sisteminizde saklama süresi, erişim kısıtı ve silme sorumluluğu sizdedir.
Müşteri verisi courier_type'a göre kırpılır
Yanıt, siparişin teslimatını kimin yaptığına göre iki farklı dolulukta gelir. Ölçüt courier_type alanıdır ve her siparişte gövdede bulunur.
| Alan | courier_type: "platform" | courier_type: "own_courier" |
|---|---|---|
address_text | boş string ("") | tam adres |
customer_latitude / customer_longitude | alan hiç gelmez | gelir |
external_customer_phone | maskeli ("•••• 2233") | tam numara |
external_customer_name | kısaltılmış ("Ahmet Y.") | kısaltılmış ("Ahmet Y.") |
notes (sipariş notu) | tam | tam |
| Tutarlar, kalemler, ödeme durumu | tam | tam |
platform kuryesinde teslimatı Veni yapar; adresi ve numarayı kurye uygulaması taşır. own_courier'da teslimatı restoranın kendi personeli yapar, adres adisyon fişine basılır ve kurye müşteriyi arar.
Alan şekli değişmez: address_text anahtarı yanıttan kaldırılmaz, boş string olarak gelir. Koordinatlar yalnız tek-sipariş yolunda dolar ve omitempty taşır.
⚠️ Adisyon fişinde adres basıyorsanız courier_type alanına bakın ve platform siparişlerde adres satırını gizleyin. Boş address_texti "veri eksik" diye hata sayan bir doğrulama kurmayın.
Aynı kural restoran webhook'larının gövdesinde de geçerlidir (Olay kataloğu).
Tek sipariş
GET
/api/v1/pos/orders/{orderID}POS anahtarıListeyle aynı nesneyi döndürür. Başka bir restoranın siparişini isterseniz 404 alırsınız — anahtar yalnız bağlı olduğu restoranı görür.
Durum ilerletme
POST
/api/v1/pos/orders/{orderID}/statusPOS anahtarıjson
{ "status": "preparing" }| Alan | Zorunlu | Not |
|---|---|---|
status | evet | Hedef durum |
rejected_reason | hayır | rejected için gerekçe |
estimated_delivery_minutes | hayır | Tahmini süre |
İzin verilen geçişler
| Mevcut durum | Gidebileceği |
|---|---|
pending | accepted · rejected |
accepted | preparing |
preparing | ready |
ready | picked_up |
assigned | picked_up |
picked_up | delivered |
Listede olmayan bir geçiş 422 invalid_transition ile reddedilir. Durum makinesi atlamaya izin vermez: pending siparişi doğrudan ready yapamazsınız.
İki kural
Online ödeme onaylanmadan kabul edilemez. payment_method değeri card ya da meal_card olan bir siparişi accepted yapmak için ödemenin tamamlanmış olması gerekir; değilse 409 order.not_paid alırsınız. 3DS'i bekleyen bir sipariş bu kapıya takılır. cash siparişlerde kapı uygulanmaz.
picked_up ve delivered'ı yalnız restoranın kendi kuryesiyle sürebilirsiniz. Siparişin kurye tipi own_courier değilse bu iki geçişi Veni'nin kurye modülü yapar; dışarıdan zorlanırsa 422 döner. Platform kuryesi yoldayken "teslim edildi" denmesi hem teslimat ücretinin muhasebesini hem müşteriye giden bildirimi yanlışlar.
Durum değişikliği webhook tetikler
Buradan yaptığınız geçiş, restoranın webhook abonelerine de gider (order.accepted, order.rejected, order.preparing, order.ready). Kendi aboneliğinizdeyse kendi yaptığınız değişikliği geri alırsınız — bu normaldir, teslimat kimliğiyle tekilleştirin.
Ayrıntı: Tekrar ve tekilleştirme