Sipariş kaydet

POST /Orders/SaveOrders — OMS API · Siparişler

Satış kanalınızda oluşan siparişleri OMS'ye aktarır. Gövde bir dizidir; tek istekte birden fazla kayıt gönderebilirsiniz.

Ne zaman çağrılır: Sipariş ödemesi tamamlanıp kesinleştiğinde.

  • orderNumber siparişin tekillik anahtarıdır. Aynı numarayla tekrar gönderilen sipariş yeniden yaratılmaz; gövdedeki paketlerden yeni sourcePackageId'ye sahip olanlar mevcut siparişe eklenir, var olanlar atlanır.
  • Paketleri sipariş anında bilmiyorsanız packages alanını boş bırakıp sonradan Paket oluştur ucunu kullanabilirsiniz.
  • Her kalemin lines dizisinde adet kadar satır gönderin; iptal ve iade işlemleri sourceOrderItemLineId üzerinden yapılır.
  • Yanıt sipariş bazlıdır: items[].itemCode = orderNumber. Biri başarısızsa genel isSuccess false olur; başarısız siparişin hatası items[].errorMesssage alanındadır, diğerleri kaydedilmiş olabilir.
  • Bir paketin deliveryServiceType değeri geçersizse istek HTTP 500 ile kesilir; listede o siparişten önceki siparişler kaydedilmiş olabilir.

Kimlik: Bearer token ya da Basic Auth (kullanıcı:parola veya kullanıcı:parola:kiracı, Base64) kabul edilir. Satıcı (vendor) kullanıcısıyla çağrılırsa tüm paketlerin vendorCode değeri o satıcıya ait olmalıdır.

İstek gövdesi

  • items (object[], zorunlu): Sipariş kalemleri.
    • items.sku (string, zorunlu): Ürün SKU kodu.
    • items.lines (object[]): Kalemin adet bazlı satırları.
      • items.lines.saleTotal (number<double>): Satırın satış tutarı.
      • items.lines.productTypeId (integer<int64>): Ürün tipi kimliği.
      • items.lines.erpOrderItemLineId (string): Satırın ERP'deki karşılığı.
      • items.lines.orderItemLineTaxes (object[]): Satıra ait vergiler.
      • items.lines.orderItemLinePayments (object[]): Satıra düşen ödeme payları.
      • items.lines.sourceOrderItemLineId (string, zorunlu): Satırın sizin sisteminizdeki tekil kimliği. Adetli kalemlerde her adet için ayrı satır gönderilir; iptal/iade bu kimlikle yapılır.
      • items.lines.orderItemLineDiscounts (object[]): Satıra uygulanan indirimler.
    • items.isGift (boolean): Hediye paketi mi.
    • items.barcode (string, zorunlu): Ürün barkodu.
    • items.seoName (string): Ürünün SEO adı.
    • items.vatRate (number<double>): KDV oranı.
    • items.currency (string): Para birimi.
    • items.giftNote (string): Hediye notu.
    • items.quantity (integer<int32>): Adet.
    • items.vendorId (integer<int64>): Satıcı kimliği.
    • items.listPrice (number<double>): Birim liste fiyatı.
    • items.modelCode (string): Ürün model kodu.
    • items.saleTotal (number<double>): Kalemin toplam satış tutarı.
    • items.lastStatus (string): Kalemin kaynak sistemdeki son statüsü.
    • items.optionCode (string): Ürün seçenek (renk vb.) kodu.
    • items.productName (string, zorunlu): Ürün adı.
    • items.priceExclTax (number<double>): Vergi hariç fiyat.
    • items.productPrice (number<double>): Birim satış fiyatı.
    • items.productTypeId (integer<int64>): Ürün tipi kimliği.
    • items.unitSaleTotal (number<double>): Birim satış tutarı.
    • items.productPhotoPath1 (string): Ürün görseli adresi.
    • items.sourceOrderItemId (string, zorunlu): Kalemin sizin sisteminizdeki tekil kimliği.
    • items.salesRepresentativeId (string): Satış temsilcisi kimliği.
  • posId (integer<int64>): Kasa kimliği.
  • isGift (boolean): Hediye siparişi mi.
  • isGuest (boolean): Üye olmadan verilen sipariş mi.
  • orderId (string): Siparişin sizin sisteminizdeki kimliği. Paket oluştururken sourceOrderId olarak kullanılır.
  • posCode (string): Kasa kodu.
  • storeId (integer<int64>): Mağaza kimliği.
  • customer (object, zorunlu): Müşteri bilgisi.
    • customer.email (string, zorunlu): E-posta adresi.
    • customer.phone (string): Sabit telefon.
    • customer.lastName (string, zorunlu): Müşteri soyadı.
    • customer.firstName (string, zorunlu): Müşteri adı.
    • customer.taxNumber (string): Vergi numarası.
    • customer.customerId (string): Müşterinin sizin sisteminizdeki kimliği. Doluysa müşteri kodu olarak bu kullanılır.
    • customer.countryCode (string): Müşterinin ülke kodu. Varsayılan TR.
    • customer.mobilePhone (string, zorunlu): Cep telefonu.
    • customer.customerCode (string): Müşteri kodu (customerId boşsa kullanılır).
    • customer.identityNumber (string): Kimlik numarası.
    • customer.mobilePhonePrefix (string): Cep telefonu ülke kodu öneki.
    • customer.customerAttributes (object[]): Müşteriye ait ek alanlar.
      • customer.customerAttributes.attributeKey (string, zorunlu): Ek alan adı.
      • customer.customerAttributes.attributeValue (string, zorunlu): Ek alan değeri.
  • giftNote (string): Hediye notu.
  • packages (object[]): Gönderi paketleri. Paketler sonradan CreatePackage ile de eklenebilir.
    • packages.cargoKey (string): Kargo anahtarı.
    • packages.lastStatus (string): Paketin kaynak sistemdeki son statüsü.
    • packages.vendorCode (string): Paketi gönderecek satıcı kodu. Satıcı kullanıcısıyla çağrıldığında tüm paketler o satıcıya ait olmalıdır.
    • packages.trackingURL (string): Kargo takip bağlantısı.
    • packages.packageItems (object[], zorunlu): Pakete giren kalemler.
      • packages.packageItems.vatRate (number<double>): KDV oranı.
      • packages.packageItems.quantity (integer<int32>): Bu pakete giren adet.
      • packages.packageItems.saleTotal (number<double>): Pakete düşen satış tutarı.
      • packages.packageItems.vendorSku (string): Satıcının kendi SKU kodu.
      • packages.packageItems.sourceOrderItemId (string, zorunlu): Pakete giren sipariş kaleminin items[].sourceOrderItemId değeri.
      • packages.packageItems.packageItemAttributes (object[]): Paket kalemine ait ek alanlar.
    • packages.subVendorCode (string): Alt satıcı kodu.
    • packages.deliveryMethod (integer<int32>): Teslim yöntemi. 0 = kargo ile teslim (varsayılan).
    • packages.erpOrderNumber (string): Paketin ERP sipariş numarası.
    • packages.invoiceAddress (object, zorunlu): Fatura adresi.
      • packages.invoiceAddress.phone (string, zorunlu): Telefon numarası.
      • packages.invoiceAddress.region (string): Bölge bilgisi.
      • packages.invoiceAddress.isValid (boolean): Adresin doğrulanmış olup olmadığı.
      • packages.invoiceAddress.zipCode (string, zorunlu): Posta kodu.
      • packages.invoiceAddress.cityCode (string): İl kodu.
      • packages.invoiceAddress.cityName (string, zorunlu): İl adı.
      • packages.invoiceAddress.lastName (string, zorunlu): Alıcı soyadı.
      • packages.invoiceAddress.firstName (string, zorunlu): Alıcı adı.
      • packages.invoiceAddress.stateCode (string): Eyalet/bölge kodu.
      • packages.invoiceAddress.stateName (string): Eyalet/bölge adı (yurt dışı adresler).
      • packages.invoiceAddress.taxNumber (string): Vergi numarası (kurumsal fatura).
      • packages.invoiceAddress.taxOffice (string): Vergi dairesi (kurumsal fatura).
      • packages.invoiceAddress.streetCode (string): Cadde/sokak kodu.
      • packages.invoiceAddress.streetName (string): Cadde/sokak adı.
      • packages.invoiceAddress.addressType (string, zorunlu): Adres tipi: Shipment (teslimat) ya da Invoice (fatura).
      • packages.invoiceAddress.companyName (string): Firma adı (kurumsal fatura için).
      • packages.invoiceAddress.countryName (string, zorunlu): Ülke adı.
      • packages.invoiceAddress.phonePrefix (string): Telefon ülke kodu öneki.
      • packages.invoiceAddress.addressLine1 (string, zorunlu): Adres satırı 1.
      • packages.invoiceAddress.addressLine2 (string, zorunlu): Adres satırı 2. Alan zorunludur; ikinci satır yoksa - gibi bir değer gönderin.
      • packages.invoiceAddress.buildingCode (string): Bina kodu.
      • packages.invoiceAddress.districtCode (string): İlçe kodu.
      • packages.invoiceAddress.districtName (string, zorunlu): İlçe adı.
      • packages.invoiceAddress.provinceName (string): Vilayet adı (yurt dışı adresler).
      • packages.invoiceAddress.identityNumber (string): Kimlik numarası (bireysel fatura).
      • packages.invoiceAddress.sourceAddressId (string, zorunlu): Adresin sizin sisteminizdeki kimliği; sipariş içinde tekil olmalıdır (1, 2 gibi verilebilir).
      • packages.invoiceAddress.externalCityCode (string): İlin dış sistemdeki kodu.
      • packages.invoiceAddress.formattedAddress (string): Biçimlendirilmiş tam adres metni.
      • packages.invoiceAddress.neighborhoodCode (string): Mahalle kodu.
      • packages.invoiceAddress.addressAttributes (object[]): Adrese ait ek alanlar.
      • packages.invoiceAddress.externalStateCode (string): Eyalet/bölgenin dış sistemdeki kodu.
      • packages.invoiceAddress.neighbourhoodName (string): Mahalle adı.
      • packages.invoiceAddress.externalStreetCode (string): Cadde/sokağın dış sistemdeki kodu.
      • packages.invoiceAddress.externalAddressCode (string): Adresin dış sistemdeki kodu.
      • packages.invoiceAddress.externalBuildingCode (string): Binanın dış sistemdeki kodu.
      • packages.invoiceAddress.externalDistrictCode (string): İlçenin dış sistemdeki kodu.
      • packages.invoiceAddress.externalNeighborhoodCode (string): Mahallenin dış sistemdeki kodu.
    • packages.trackingNumber (string): Kargo takip numarası.
    • packages.shipmentAddress (object): Teslimat adresi. Kargo ile teslimde (deliveryMethod 0) gönderilmelidir; yoksa fatura adresi kullanılır.
      • packages.shipmentAddress.phone (string, zorunlu): Telefon numarası.
      • packages.shipmentAddress.region (string): Bölge bilgisi.
      • packages.shipmentAddress.isValid (boolean): Adresin doğrulanmış olup olmadığı.
      • packages.shipmentAddress.zipCode (string, zorunlu): Posta kodu.
      • packages.shipmentAddress.cityCode (string): İl kodu.
      • packages.shipmentAddress.cityName (string, zorunlu): İl adı.
      • packages.shipmentAddress.lastName (string, zorunlu): Alıcı soyadı.
      • packages.shipmentAddress.firstName (string, zorunlu): Alıcı adı.
      • packages.shipmentAddress.stateCode (string): Eyalet/bölge kodu.
      • packages.shipmentAddress.stateName (string): Eyalet/bölge adı (yurt dışı adresler).
      • packages.shipmentAddress.taxNumber (string): Vergi numarası (kurumsal fatura).
      • packages.shipmentAddress.taxOffice (string): Vergi dairesi (kurumsal fatura).
      • packages.shipmentAddress.streetCode (string): Cadde/sokak kodu.
      • packages.shipmentAddress.streetName (string): Cadde/sokak adı.
      • packages.shipmentAddress.addressType (string, zorunlu): Adres tipi: Shipment (teslimat) ya da Invoice (fatura).
      • packages.shipmentAddress.companyName (string): Firma adı (kurumsal fatura için).
      • packages.shipmentAddress.countryName (string, zorunlu): Ülke adı.
      • packages.shipmentAddress.phonePrefix (string): Telefon ülke kodu öneki.
      • packages.shipmentAddress.addressLine1 (string, zorunlu): Adres satırı 1.
      • packages.shipmentAddress.addressLine2 (string, zorunlu): Adres satırı 2. Alan zorunludur; ikinci satır yoksa - gibi bir değer gönderin.
      • packages.shipmentAddress.buildingCode (string): Bina kodu.
      • packages.shipmentAddress.districtCode (string): İlçe kodu.
      • packages.shipmentAddress.districtName (string, zorunlu): İlçe adı.
      • packages.shipmentAddress.provinceName (string): Vilayet adı (yurt dışı adresler).
      • packages.shipmentAddress.identityNumber (string): Kimlik numarası (bireysel fatura).
      • packages.shipmentAddress.sourceAddressId (string, zorunlu): Adresin sizin sisteminizdeki kimliği; sipariş içinde tekil olmalıdır (1, 2 gibi verilebilir).
      • packages.shipmentAddress.externalCityCode (string): İlin dış sistemdeki kodu.
      • packages.shipmentAddress.formattedAddress (string): Biçimlendirilmiş tam adres metni.
      • packages.shipmentAddress.neighborhoodCode (string): Mahalle kodu.
      • packages.shipmentAddress.addressAttributes (object[]): Adrese ait ek alanlar.
      • packages.shipmentAddress.externalStateCode (string): Eyalet/bölgenin dış sistemdeki kodu.
      • packages.shipmentAddress.neighbourhoodName (string): Mahalle adı.
      • packages.shipmentAddress.externalStreetCode (string): Cadde/sokağın dış sistemdeki kodu.
      • packages.shipmentAddress.externalAddressCode (string): Adresin dış sistemdeki kodu.
      • packages.shipmentAddress.externalBuildingCode (string): Binanın dış sistemdeki kodu.
      • packages.shipmentAddress.externalDistrictCode (string): İlçenin dış sistemdeki kodu.
      • packages.shipmentAddress.externalNeighborhoodCode (string): Mahallenin dış sistemdeki kodu.
    • packages.sourcePackageId (string, zorunlu): Paketin sizin sisteminizdeki tekil kimliği. Aynı kimlikle ikinci kez gönderilen paket atlanır.
    • packages.deliverySlotCode (string): Teslimat zaman dilimi kodu (en fazla 50 karakter).
    • packages.lastModifiedDate (string<date-time>): Paketin son değişiklik zamanı. Gönderilmezse istek anı kullanılır.
    • packages.cargoIsChangeable (boolean): Kargo firmasının sonradan değiştirilebilir olup olmadığı.
    • packages.packageAttributes (object[]): Pakete ait ek alanlar.
      • packages.packageAttributes.attributeKey (string, zorunlu): Ek alan adı.
      • packages.packageAttributes.attributeValue (string, zorunlu): Ek alan değeri.
    • packages.carrierCompanyCode (string): Kargo firması kodu.
    • packages.erpOrderCreateDate (string<date-time>): ERP'de sipariş oluşma zamanı.
    • packages.deliveryServiceType (string): Teslimat hizmet tipi. Boş bırakılabilir; doluysa listedeki değerlerden biri olmalıdır, aksi halde sipariş reddedilir (büyük/küçük harf duyarsız).
  • payments (object[]): Sipariş düzeyinde ödemeler.
    • payments.iban (string): Havale/EFT ödemelerinde IBAN.
    • payments.total (number<double>): Ödeme tutarı.
    • payments.force3d (boolean): Ödemede 3D Secure zorlandı mı.
    • payments.posName (string): Ödemenin alındığı sanal POS adı.
    • payments.bankName (string): Banka adı.
    • payments.cardName (string): Kart adı.
    • payments.cardType (string): Kart tipi.
    • payments.interest (number<double>): Vade farkı tutarı.
    • payments.posPoint (number<double>): Kullanılan POS puanı.
    • payments.cardFamily (string): Kart ailesi.
    • payments.cardIssuer (string): Kartı çıkaran kuruluş.
    • payments.fraudScore (integer<int32>): Dolandırıcılık skoru.
    • payments.force3dRule (string, zorunlu): 3D Secure zorlama kuralı bilgisi. Alan boş dize kabul etmez; kural yoksa anlamlı bir değer gönderin.
    • payments.paidDateUtc (string<date-time>): Ödeme zamanı (UTC).
    • payments.paymentType (string): Ödeme tipi.
    • payments.paymentAgent (string): Ödeme aracısı.
    • payments.international (boolean): Yurt dışı kartı mı.
    • payments.paymentMethod (string): Ödeme yöntemi.
    • payments.paymentStatus (integer<int32>): Ödeme durumu kodu.
    • payments.cardHolderName (string): Kart sahibinin adı.
    • payments.installmentCount (integer<int32>): Taksit sayısı.
    • payments.loyaltyUsedPoint (number<double>): Kullanılan sadakat puanı.
    • payments.transferBankName (string): Havale/EFT ödemelerinde banka adı.
    • payments.captureTransactionId (string): Tahsilat (capture) işlem kimliği.
    • payments.maskedCreditCardNumber (string): Maskelenmiş kart numarası.
    • payments.captureTransactionResult (string): Tahsilat işlem sonucu.
    • payments.cashOnDeliveryPaymentType (string): Kapıda ödeme tipi.
    • payments.subscriptionTransactionId (string): Abonelik işlem kimliği.
    • payments.authorizationTransactionId (string): Provizyon işlem kimliği.
    • payments.allowStoringCreditCardNumber (boolean): Kart numarasının saklanmasına izin verilip verilmediği.
    • payments.authorizationTransactionCode (string): Provizyon onay kodu.
    • payments.authorizationTransactionResult (string): Provizyon işlem sonucu.
  • supplier (string): Tedarikçi bilgisi.
  • addresses (object[]): Siparişe ait adres listesi.
    • addresses.phone (string, zorunlu): Telefon numarası.
    • addresses.region (string): Bölge bilgisi.
    • addresses.isValid (boolean): Adresin doğrulanmış olup olmadığı.
    • addresses.zipCode (string, zorunlu): Posta kodu.
    • addresses.cityCode (string): İl kodu.
    • addresses.cityName (string, zorunlu): İl adı.
    • addresses.lastName (string, zorunlu): Alıcı soyadı.
    • addresses.firstName (string, zorunlu): Alıcı adı.
    • addresses.stateCode (string): Eyalet/bölge kodu.
    • addresses.stateName (string): Eyalet/bölge adı (yurt dışı adresler).
    • addresses.taxNumber (string): Vergi numarası (kurumsal fatura).
    • addresses.taxOffice (string): Vergi dairesi (kurumsal fatura).
    • addresses.streetCode (string): Cadde/sokak kodu.
    • addresses.streetName (string): Cadde/sokak adı.
    • addresses.addressType (string, zorunlu): Adres tipi: Shipment (teslimat) ya da Invoice (fatura).
    • addresses.companyName (string): Firma adı (kurumsal fatura için).
    • addresses.countryName (string, zorunlu): Ülke adı.
    • addresses.phonePrefix (string): Telefon ülke kodu öneki.
    • addresses.addressLine1 (string, zorunlu): Adres satırı 1.
    • addresses.addressLine2 (string, zorunlu): Adres satırı 2. Alan zorunludur; ikinci satır yoksa - gibi bir değer gönderin.
    • addresses.buildingCode (string): Bina kodu.
    • addresses.districtCode (string): İlçe kodu.
    • addresses.districtName (string, zorunlu): İlçe adı.
    • addresses.provinceName (string): Vilayet adı (yurt dışı adresler).
    • addresses.identityNumber (string): Kimlik numarası (bireysel fatura).
    • addresses.sourceAddressId (string, zorunlu): Adresin sizin sisteminizdeki kimliği; sipariş içinde tekil olmalıdır (1, 2 gibi verilebilir).
    • addresses.externalCityCode (string): İlin dış sistemdeki kodu.
    • addresses.formattedAddress (string): Biçimlendirilmiş tam adres metni.
    • addresses.neighborhoodCode (string): Mahalle kodu.
    • addresses.addressAttributes (object[]): Adrese ait ek alanlar.
      • addresses.addressAttributes.attributeKey (string, zorunlu): Ek alan adı.
      • addresses.addressAttributes.attributeValue (string, zorunlu): Ek alan değeri.
    • addresses.externalStateCode (string): Eyalet/bölgenin dış sistemdeki kodu.
    • addresses.neighbourhoodName (string): Mahalle adı.
    • addresses.externalStreetCode (string): Cadde/sokağın dış sistemdeki kodu.
    • addresses.externalAddressCode (string): Adresin dış sistemdeki kodu.
    • addresses.externalBuildingCode (string): Binanın dış sistemdeki kodu.
    • addresses.externalDistrictCode (string): İlçenin dış sistemdeki kodu.
    • addresses.externalNeighborhoodCode (string): Mahallenin dış sistemdeki kodu.
  • cashierId (string): Kasiyer kimliği.
  • discounts (object[]): Sipariş düzeyinde indirimler.
    • discounts.total (number<double>): İndirim toplamı.
    • discounts.amount (number<double>): İndirim tutarı.
    • discounts.couponCode (string): Kupon kodu.
    • discounts.discountId (string): İndirim kimliği.
    • discounts.realAmount (number<double>): Gerçekleşen indirim tutarı.
    • discounts.discountCode (string): İndirim kodu.
    • discounts.discountName (string): İndirim adı.
    • discounts.discountCampId (string, zorunlu): Kampanya kimliği.
    • discounts.discountTypeId (string): İndirim tipi kimliği.
  • orderDate (string<date-time>, zorunlu): Sipariş zamanı.
  • storeCode (string): Mağaza kodu (storeId yoksa kullanılır).
  • deviceCode (string): Cihaz kodu.
  • lastStatus (string): Siparişin kaynak sistemdeki son statüsü.
  • channelCode (string, zorunlu): Satış kanalı kodu (en fazla 50 karakter), ör. WEB.
  • countryCode (string): Sipariş ülkesi kodu.
  • description (string): Sipariş notu.
  • orderNumber (string): Sipariş numarası. Siparişin tekillik anahtarıdır: aynı numarayla tekrar gönderilen sipariş yeniden yaratılmaz, yalnızca yeni paketleri eklenir.
  • languageCode (string): Sipariş dili kodu.
  • applicationId (integer<int64>): Siparişin geldiği uygulama kimliği (web sitesi, mobil uygulama, mağaza uygulaması vb.).
  • erpOrderNumber (string): ERP sipariş numarası.
  • additionalCosts (object[]): Ek maliyetler.
    • additionalCosts.cost (number<double>): Tutar.
    • additionalCosts.rate (number<double>): Oran.
    • additionalCosts.description (string): Ek maliyet açıklaması.
  • orderAttributes (object[]): Siparişe ait ek alanlar.
    • orderAttributes.attributeKey (string, zorunlu): Ek alan adı.
    • orderAttributes.attributeValue (string, zorunlu): Ek alan değeri.
  • totalShippingPrice (number<double>): Toplam kargo ücreti.
  • orderSourceTypeCode (string): Sipariş kaynak tipi kodu.

Yanıtlar

  • 200: İstek işlendi. Sipariş bazlı sonuç için items dizisine bakın.
  • 400: Gövde doğrulanamadı (zorunlu alan eksik, tip uyumsuz ya da JSON bozuk). Yanıt ASP.NET Core ValidationProblemDetails biçimindedir; errors alanı hangi alanın hatalı olduğunu gösterir.
  • 401: Authorization başlığı yok, token geçersiz ya da süresi dolmuş. Gövde boş döner; /Auth/login ile yeni token alın.
  • 500: Beklenmeyen sunucu hatası. Bu yanıt PascalCase alan adlarıyla döner (diğer yanıtlardan farklı olarak) ve null alanlar da yazılır.

200 yanıt alanları

  • items (object[], zorunlu): Gönderilen her kayıt için ayrı sonuç.
    • items.itemCode (string, zorunlu): Sonucun ait olduğu kaydın kodu (sipariş kaydında orderNumber, paket oluşturmada sourcePackageId).
    • items.isSuccess (boolean, zorunlu): Bu kayıt başarıyla işlendiyse true.
    • items.errorMesssage (string): Kayıt başarısızsa hata mesajı. Yalnızca doluysa döner.
  • errorType (string): Genel hata tipi. Yalnızca doluysa döner.
  • isSuccess (boolean, zorunlu): Listedeki tüm kayıtlar başarılıysa true; en az biri başarısızsa false.
  • errorSource (string): Hata kaynağı. Yalnızca doluysa döner.
  • errorMesssage (string): Genel hata mesajı (ör. sipariş bulunamadı). Yalnızca doluysa döner.