Sipariş Paketlerini Akış ile Çekme (getShipmentPackagesStream)
getShipmentPackagesStream, sipariş paketlerini cursor tabanlı (stream) olarak çekmenizi sağlayan endpoint'tir.
ÖNEMLİMevcut
getShipmentPackagesendpoint’i büyük veri setlerini tarama (scanning) amacıyla optimize edilmemiştir.Bu endpoint için:
- Maksimum erişilebilir kayıt sayısı: 10.000
- Yüksek hacimli veri çekimlerinde sistem üzerinde yük oluşabilir
- Rate limit kısıtlarına daha hızlı takılınabilir
Bu nedenle aşağıdaki senaryolarda getShipmentPackagesStream kullanılması önerilir:
✔ Büyük veri tarama (full scan) ✔ Periyodik senkronizasyon (polling / cron) ✔ Tüm siparişleri export etme
✅ Response yapısı aynıdır, sadece pagination ile ilgili alanlar dönmeyecektir. (totalElements, totalPages, page) ❗ Pagination mekanizması değişmiştir (cursor tabanlı)
📦 Veri Kapsamı & Tarih Kısıtları
- Bu endpoint üzerinden son 3 aylık veri erişilebilir
❗ Zaman aralığı maksimum 2 hafta (14 gün) ile sınırlandırılmıştır:
lastModifiedStartDatevelastModifiedEndDategönderilmezse → sistem otomatik olarak son 2 hafta ile sınırlar.
❗ Response Farkı
getShipmentPackagesStream endpoint’inin response yapısı mevcut endpoint ile aynıdır; sadece aşağıdaki alanlar artık dönmemektedir:
totalElementstotalPagespageBunun yerine aşağıdaki alanlar kullanılır:
hasMorenextCursorsizeBu nedenle page tabanlı pagination kullanan entegrasyonların, cursor tabanlı yapıya geçmesi gerekmektedir.
Migration Notu
page++yerine →nextCursorkullanılırtotalPageskontrolü yerine →hasMorekontrol edilir
Stream Servisi vs. Mevcut Servis
| Özellik | Mevcut Servis (getShipmentPackages) | Stream Servisi (getShipmentPackagesStream) |
|---|---|---|
| Kullanım Amacı | Küçük / anlık sorgular | Büyük veri tarama & senkronizasyon |
| Pagination | Page tabanlı (page, totalPages) | Cursor tabanlı (nextCursor, hasMore) |
| Maksimum Veri Erişimi | ⚠️ 10.000 kayıt ile sınırlı | ✅ Yüksek limitli akış |
| Büyük Veri Performansı | ⚠️ Sınırlı | ✅ Optimize |
Cursor Tabanlı Sayfalama Nasıl Çalışır?
Cursor mekanizması, klasik page mantığından farklıdır:
pageyerine akış pointer’ı (cursor) kullanılır- Her istek, bir önceki kaldığı yerden devam eder
- Büyük veri setlerinde stabil ve verimli ilerleme sağlar
Akış
- İlk istekte
nextCursorgönderilmez - Yanıtta
hasMore = trueise devam edilir nextCursordeğeri alınır ve sonraki istekte kullanılırhasMore = falseolduğunda akış tamamlanır
⚠️ Kritik Kurallar
nextCursoropaque bir değerdir → parse edilmemelidir, değiştirilmemelidir.- Aynı cursor değeri kullanırken daha önce başlatılan filtreler değiştirilmemelidir
- Filtre değişirse → 400 Bad Request alınır
- Sıralama sabittir, Last Modified Date'e göre DESC olarak sonuç döner
- Yeni filtre ile çalışmak için → yeni akış başlatılmalıdır
Önerilen kullanım:
- Önerilen kullanımminimum 5 saniye aralıklarda istek atılmasıdır.
Endpoint
PROD
GET https://apigw.trendyol.com/integration/order/sellers/{sellerId}/orders/streamSTAGE
GET https://stageapigw.trendyol.com/integration/order/sellers/{sellerId}/orders/streamÖrnek Servis Cevabı
{
"hasMore": true,
"nextCursor": "609ca79b-1fdf-4c4e-a814-498ce9c1c039",
"size": 50,
"content": [
{
"shipmentAddress": {
"id": 11111111,
"firstName": "Trendyol",
"lastName": "Customer",
"company": "",
"address1": "DSM Grup Danışmanlık İletişim ve Satış Ticaret A.Ş. Maslak Mahallesi Saat Sokak Spine Tower No:5 İç Kapı No:19 Sarıyer/İstanbul",
"address2": "",
"city": "İstanbul",
"cityCode": 34,
"district": "Sarıyer",
"districtId": 54,
"countyId": 0, // CEE bölgesi için gelecektir.
"countyName": "", // CEE bölgesi için gelecektir.
"shortAddress": "", // GULF bölgesi için gelecektir.
"stateName": "", // GULF bölgesi için gelecektir.
"addressLines": {
"addressLine1": "",
"addressLine2": ""
},
"postalCode": "34200",
"countryCode": "TR",
"neighborhoodId": 21111,
"neighborhood": "Maslak Mahallesi",
"phone": null,
"fullAddress": "DSM Grup Danışmanlık İletişim ve Satış Ticaret A.Ş. Maslak Mahallesi Saat Sokak Spine Tower No:5 İç Kapı No:19 Sarıyer/İstanbul",
"fullName": "Trendyol Customer"
},
"orderNumber": "10654411111",
"packageGrossAmount": 498.90, // Paketin toplam brüt tutarı (indirimsiz)
"packageSellerDiscount": 0.00, // Satıcı indirim tutarı
"packageTyDiscount": 0.00, // commercial true olduğu durumda dolu gelebilir, false olduğu durumda 0 dönecektir.
"packageTotalDiscount": 0.00, // Toplam indirim tutarı (packageSellerDiscount + packageTyDiscount)
"discountDisplays": [
{
"displayName": "Sepette %20 İndirim",
"discountAmount": 100
}
],
"taxNumber": null,
"invoiceAddress": { // Trendyol Yurt Dışı Aracılığı siparişleri için "DSM Grup Danışmanlık" bilgileri dönecektir.
"id": 11111112,
"firstName": "Trendyol",
"lastName": "Customer",
"company": "", // GULF bölgesi siparişlerinde boş gelebilir.
"address1": "DSM Grup Danışmanlık İletişim ve Satış Ticaret A.Ş. Maslak Mahallesi Saat Sokak Spine Tower No:5 İç Kapı No:19 Sarıyer/İstanbul",
"address2": "",
"city": "İstanbul",
"cityCode": 0,
"district": "Sarıyer", // GULF bölgesi siparişlerinde boş gelebilir.
"districtId": 54,
"countyId": 0, // CEE bölgesi için gelecektir.
"countyName": "", // CEE bölgesi için gelecektir.
"shortAddress": "", // GULF bölgesi için gelecektir.
"stateName": "", // GULF bölgesi için gelecektir.
"addressLines": {
"addressLine1": "",
"addressLine2": ""
},
"postalCode": "", // GULF bölgesi siparişlerinde boş gelebilir.
"countryCode": "TR",
"neighborhoodId": 0,
"phone": null,
"latitude": "11.111111",
"longitude": "22.222222",
"fullAddress": "DSM Grup Danışmanlık İletişim ve Satış Ticaret A.Ş. Maslak Mahallesi Saat Sokak Spine Tower No:5 İç Kapı No:19 Sarıyer/İstanbul",
"fullName": "Trendyol Customer",
"taxOffice": "Company of OMS's Tax Office", // Kurumsal fatura olmadığı durumda (commercial=false ise) body içerisinde dönmeyecektir.
"taxNumber": "Company of OMS's Tax Number" // Kurumsal fatura olmadığı durumda (commercial=false ise) body içerisinde dönmeyecektir.
},
"customerFirstName": "Trendyol",
"customerEmail": "[email protected]",
"customerId": 1451111111,
"supplierId": 2738,
"customerLastName": "Customer",
"shipmentPackageId": 3330111111, // Paket ID'si
"cargoTrackingNumber": 7280027504111111,
"cargoTrackingLink": "https://tracking.trendyol.com/?id=111111111-1111-1111-1111-11111111",
"cargoSenderNumber": "210090111111",
"cargoProviderName": "Trendyol Express",
"lines": [
{
"quantity": 1,
"salesCampaignId": 11,
"productSize": "Tek Ebat",
"stockCode": "111111", // Satıcı stok kodu
"productName": "Kuş ve Çiçek Desenli Tepsi - Yeşil / Altın Sarısı - 49 cm, 01SYM134, Tek Ebat",
"contentId": 1239111111,
"productOrigin": "TR",
"sellerId": 2738, // Satıcı ID'si
"lineGrossAmount": 498.90, // Ürünün birim brüt fiyatı (indirimsiz)
"lineTotalDiscount": 0.00, // Birim toplam indirim (lineSellerDiscount + lineTyDiscount)
"lineSellerDiscount": 0.00, // Birim satıcı indirimi (item'ların ortalaması)
"lineTyDiscount": 0.00, // Birim Trendyol indirimi (item'ların ortalaması)
"discountDetails": [ // Her bir adet (item) için ayrı indirim detayı
{
"lineItemPrice": 498.90, // İndirimli birim fiyat (lineGrossAmount - lineItemSellerDiscount - lineItemTyDiscount)
"lineItemSellerDiscount": 0.00, // Bu item'a uygulanan satıcı indirimi
"lineItemTyDiscount": 0.00 // Bu item'a uygulanan Trendyol indirimi
}
],
"currencyCode": "TRY",
"productColor": "Yeşil",
"lineId": 4765111111, // Sipariş satır ID'si
"vatRate": 20.00, // KDV oranı
"barcode": "8683772071724",
"orderLineItemStatusName": "Delivered",
"lineUnitPrice": 498.90, // Net birim fiyat (lineGrossAmount - lineSellerDiscount - lineTyDiscount)
"fastDeliveryOptions": [],
"productCategoryId": 2710,
"commission": 13, // Komisyon oranı
"businessUnit": "Sports Shoes",
"cancelledBy": "", // İptal eden taraf
"cancelReason": "", // İptal nedeni
"cancelReasonCode": 0 // İptal neden kodu
}
],
"orderDate": 1762253333685,
"identityNumber": "11111111111",
"currencyCode": "TRY",
"packageHistories": [
{
"createdDate": 1762242537624,
"status": "Created"
}
],
"shipmentPackageStatus": "Delivered",
"status": "Delivered",
"whoPays": 1, // Eğer satıcı anlaşması ise 1 gelir, trendyol anlaşması ise alan gelmez
"deliveryType": "normal",
"timeSlotId": 0,
"estimatedDeliveryStartDate": 1762858136000,
"estimatedDeliveryEndDate": 1763030936000,
"packageTotalPrice": 498.90, // Paketin toplam net fiyatı (indirimli)
"deliveryAddressType": "Shipment",
"agreedDeliveryDate": 1762376340000,
"fastDelivery": false,
"originShipmentDate": 1762242537619,
"lastModifiedDate": 1762865408581,
"commercial": false,
"fastDeliveryType": "",
"deliveredByService": false,
"warehouseId": 372389,
"invoiceLink": "https://efatura01.evidea.com/11111111111",
"micro": true, // micro ihracat siparişleri için true olarak dönecektir.
"giftBoxRequested": false,
"3pByTrendyol": false,
"etgbNo": "25341453EX025864", // micro true olduğunda etgbNo alanı için bilgi dönecektir.
"etgbDate": 1762646400000, // micro true olduğunda etgbDate alanı için bilgi dönecektir.
"containsDangerousProduct": false, // micro ihracat siparişlerinde satıcıya gelen siparişte paket içerisinde herhangi bir tehlikeli ürün varsa pil, parfüm vb. gibi, true dönecektir.
"cargoDeci": 10,
"isCod": false,
"createdBy": "order-creation", // Paketin nasıl oluşturulduğunu gösterir, "order-creation", "split", "cancel" veya "transfer" olabilir
"originPackageIds": null, // Bu alan iptal veya bölme işlemlerinden sonra doldurulur ve bu işlemlerden sonra ilk paketin packageid'sini verir.
"hsCode": "711111000000", // Bu alan mikro siparişler için string olarak dönecektir.
"shipmentNumber": 606404425,
"is4P": true // Trendyol Yurt Dışı Aracılığı siparişleri için true olarak dönecektir.
}
]
}
15 Haziran 2026 tarihinden itibaren servis cevabına aşağıdaki alanlar da eklenecektir (bu tarih, şu an taslaktır):
"invoiceNumber": "1255141"
"invoiceStatus": "NotInvoiced"
"invoiceRejectedReasonKeys: [
{
"INVOICE_NUMBER_ALREADY_EXISTS",
"NVOICE_TOTAL_MISMATCH"
}
]
"invoiceStatus" alanı değerleri açıklamaları:
| invoiceStatus | Açıklama |
|---|---|
| NotInvoiced | Sipariş paketine ait faturanın beslenmediğini gösterir. |
| Received | Sipariş paketine ait fatura beslenmiştir ve kontrol aşamasındadır. |
| Rejected | Sipariş paketine ait fatura, kontroller sonucu hatalı bulunmuştur. Bu statüdeki sipariş paketleri için; Türkiye Pazaryerindeki bir sipariş ise hatalı faturanın sipariş üzerinden silinip, tekrar gönderilmesi gerekmektedir. Sipariş Mikro İhracat veya Trendyol Yurtdışı Aracılığı siparişi ise aynı sipariş paketine fatura silme isteği yapılmadan yeni bir fatura beslenmelidir. |
| Invoiced | Sipariş paketine ait fatura yapılan kontroller sonucu doğru bulunmuştur. Sipariş paketine ait "invoiceLink" alanı yalnızca bu statüye geçen sipariş paketinlerinde dolu olarak dönecektir. Bu statüye geçmeyen Mikro İhracat ve Trendyol Yurt Dışı Aracılığı sipariş paketleri için kargo etiketi entegrasyon servisimizden dönmeyecektir. |
"invoiceRejectedReasonKeys" alanı değerleri açıklamaları:
| invoiceRejectedReasonKeys | Açıklama |
|---|---|
| INVOICE_LINE_MISMATCH | Siparişinizde yer alan her bir ürün çeşidi için; ürün miktarı, birim fiyat ve KDV bilgileri uyuşan bir kalem bulunması gerekmektedir. |
| INVOICE_TOTAL_MISMATCH | Faturanızdaki dip toplam tutarın siparişteki toplam tutar ile eşleşmesi gerekmektedir. |
| INVOICE_LINE_NUMBER_MISMATCH | Faturanızdaki kalem sayısı ile siparişteki ürün çeşidi sayısı eşleşmelidir. |
| INVOICE_TYPE_MISMATCH | Faturanızdaki fatura tipi satış olmalıdır. |
| SENDER_VKN_MISMATCH | Faturanızdaki VKN bilginiz sistemdeki tanımlı VKN ile aynı olmalıdır. |
| RECEIPENT_VKN_MISMATCH | Faturanızdaki alıcı VKN bilgisi Trendyol VKN bilgisi olmalıdır. |
| INVOICE_NUMBER_MISMATCH | Faturanızdaki fatura numarası sipariş için beslediğiniz fatura numarası ile aynı olmalıdır. |
| INVOICE_DATE_MISMATCH | Faturanızdaki fatura tarihi sipariş tarihinden sonra olmalıdır. |
| INVOICE_SCENARIO_MISMATCH | Faturanızdaki fatura senaryosu temel veya ticari olmalıdır. |
| INVOICE_NOT_FOUND_IN_MAILBOX | Fatura Trendyol gelen kutusunda bulunamamaktadır. Yeni bir fatura iletmeniz beklenmektedir. |
| INVOICE_NUMBER_ALREADY_EXISTS | Daha önce gönderilen bir "invoiceNumber" farklı bir sipariş paketi için tekrar gönderilmektedir. Fatura numarasının değiştirilmesi gerekmektedir. |
Updated 6 days ago