Skip to content

Siparişler

http
POST /api/vendor/v1/orders

Teslimat isteği oluşturur. Sonuç aynı yanıtta bildirilir: teslimat ya oluşturulmuştur ya da oluşturulamama nedeni açıkça belirtilir.

İstek

http
POST /api/vendor/v1/orders
Authorization: Bearer <token>
X-Idempotency-Key: ADS-ORD-99213
Content-Type: application/json
json
{
  "externalStoreId": "ADS-34781",
  "externalOrderId": "ADS-ORD-99213",
  "orderedAt": "2026-08-04T18:42:11+03:00",
  "readyAt": "2026-08-04T18:57:00+03:00",
  "recipient": {
    "name": "Merve Yıldırım",
    "phone": "5339876543"
  },
  "dropoff": {
    "text": "Cemal Gürsel Cad. No:45 D:8, Kurtuluş, Çankaya/Ankara",
    "latitude": 39.925310,
    "longitude": 32.862440,
    "buildingNo": "45",
    "doorNo": "8",
    "floor": "3",
    "note": "Zil çalışmıyor, kapıyı çalın"
  },
  "packageNote": "2 dürüm, 1 ayran",
  "orderAmount": 480.00,
  "payment": {
    "type": "Cash",
    "collectionAmount": 480.00
  }
}

Alanlar

AlanZorunluKuralKarşılanmazsa
externalStoreIdevetKayıtlı ve Active durumda olmalı409 STORE_NOT_CONFIGURED
externalOrderIdevetHesabınızda benzersiz, en fazla 64 karakter409 DUPLICATE_ORDER
recipient.nameevetEn az 2 karakter422 INVALID_RECIPIENT
recipient.phoneevet10 hane; baştaki 0 ve +90 ön eki ayıklanır422 INVALID_PHONE
dropoff.textevetEn az 10 karakter422 INVALID_ADDRESS
dropoff.latitude / longitudeevetTürkiye sınırları içinde ve kurye şirketinin hizmet bölgesinde olmalı422 COORDINATE_MISMATCH · 422 DROPOFF_OUT_OF_COVERAGE
orderedAthayırISO-8601. Saat dilimi belirtilmezse UTC+3 kabul edilir
readyAthayırBoş bırakılırsa "şimdi" kabul edilir. Geçmiş bir saat verilirse şimdiye çekilir; 4 saatten uzak bir zaman kabul edilmez422 READY_AT_TOO_FAR
packageNotehayırEn fazla 500 karakter
orderAmounthayırKayıt ve raporlama amacıyla saklanır
payment.typehayırCash, Card veya Prepaid
payment.collectionAmounthayırKuryenin kapıda tahsil edeceği tutar

readyAt

Bu alan, siparişin alındığı saati değil paketin mutfaktan çıkacağı saati belirtir. Kurye çağrısı bu saate göre planlanır. Teslimat kalitesini en çok etkileyen unsur, bu alanın doğru gönderilmesidir: erken gelen kurye beklemek zorunda kalır, geç gelen kurye soğumuş ürün taşır.

Koordinatlar

Kurye dropoff.text alanındaki adrese değil, koordinata yönlendirilir. Adres metni kuryenin kapıda okuduğu bilgidir; konum ise uygulamanın kuryeyi ulaştırdığı noktadır.

Türkiye sınırları dışındaki ve anlaşmalı kurye şirketinin hizmet vermediği koordinatlar reddedilir. Buna karşılık, geçerli görünen bir noktanın gönderilen adrese ait olup olmadığı doğrulanamaz. Bu nedenle mahalle merkezini değil, kendi harita servisinizin çözümlediği noktayı gönderin. Hatalı koordinat kuryeyi farklı bir adrese yönlendirir ve kurye yola çıktıktan sonra düzeltilemez.

payment

Tutar saklanır, kuryeye iletilir ve raporlara yansıtılır. Buna karşılık tahsilat süreci yürütülmez: kurye uygulamasında ödemenin alındığını bildiren bir onay adımı bulunmaz. Böyle bir adım, Hızlıyo'yu ödeme sürecini işleten taraf konumuna getirirdi. Kapıda ödeme, restoran ile kurye şirketi arasındaki ilişkide kalır.

Yanıt

json
{
  "success": true,
  "data": {
    "orderId": "e5a9f0d3-7c21-4b88-a06e-3f9182bd4471",
    "externalOrderId": "ADS-ORD-99213",
    "status": "Searching",
    "fleet": { "fleetId": "9d41...5e64", "name": "Başkent Moto Kurye" },
    "trackingUrl": "https://takip.hizliyo.com/d/8fK2mQ",
    "estimatedPickupAt": "2026-08-04T18:59:00+03:00"
  }
}

orderId değerini saklayın. Durum sorgusunda, iptal işleminde ve gelen bildirimlerde teslimat bu değerle tanımlanır.

Mükerrer gönderimin önlenmesi

X-Idempotency-Key başlığına siparişe özgü bir değer verin; kendi sipariş numaranız bu amaçla kullanılabilir. Aynı anahtar aynı içerikle yeniden gönderildiğinde ikinci bir teslimat oluşturulmaz, ilk yanıt aynen döndürülür. Aynı anahtarın farklı bir içerikle gönderilmesi 409 DUPLICATE_ORDER ile sonuçlanır.

Bu davranış sayesinde bağlantı kesintilerinde izlenecek yol nettir: aynı anahtarla yeniden gönderin; sipariş ya oluşturulur ya da hâlihazırda var olduğu bildirilir.

Yeniden gönderim

Başarısız istekler otomatik olarak yeniden denenmez

Başarısız olan istek orada sonlanır. İsteğin yeniden gönderilip gönderilmeyeceğine siz karar verirsiniz.

Bu davranış bilinçli bir tasarım tercihidir. Teslimat zamana duyarlı bir süreçtir. Kuyrukta bekletilip on dakika sonra işlenen bir sipariş, sorunu çoktan başka yolla çözmüş bir restorana ulaşır. Daha olumsuz bir sonuç olarak, hazırlanmayan bir ürün için kurye görevlendirilir.

Durumlara göre izlenecek yol:

  • 401 TOKEN_EXPIRED — token'ı yenileyin ve isteği bir kez daha gönderin. Aynı idempotency anahtarıyla güvenlidir.
  • 503 FLEET_UNAVAILABLE — o an müsait kurye yoktur. 60 saniye sonra yeniden denemek uygundur; bu süre zarfında restoranı bilgilendirin.
  • 429 RATE_LIMITEDRetry-After başlığında belirtilen süre kadar bekleyin.
  • Diğer kodlar — yeniden denemeyin. Durumu restorana bildirin, bkz. Hatalar.

Reddedilme durumları

KodHataOluşma koşulu
423FLEET_SUSPENDEDMağazanın kurye şirketi geçici olarak sipariş kabul edemiyor
503FLEET_UNAVAILABLEİlgili bölgede müsait kurye bulunmuyor
409STORE_NOT_CONFIGUREDKurye şirketi bağlanmamış ya da mağaza kapalı
422DROPOFF_OUT_OF_COVERAGETeslimat adresi kurye şirketinin hizmet bölgesi dışında

Kodların tamamı Hatalar sayfasında yer alır.

Hızlıyo Vendor API v1