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, size) ❗ 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:
totalElementstotalPagespagesizeBunun yerine aşağıdaki alanlar kullanılır:
hasMorenextCursorBu 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",
"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": {
"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,
"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
}
]
}
Updated about 3 hours ago