İçeriğe geç

Değişiklik günlüğü

Şimdiye kadarki tüm değişiklikler v1 içindedir. Neyin değişebileceği ve nasıl duyurulduğu için bkz. Sürümleme.

Idempotency anahtarı taşıyan bir yazma asla korumasız çalışmaz. v1 içinde, yeni bir retle.

  • Günde 1.000 yazmadan sonra bir anahtarın yazmaları yanıtları saklanmadan çalışıyordu; zaman aşımından sonraki tekrar yeniden çalışıyordu (bir yükleme ikinci bir kopya bırakıyordu). Artık her anahtarın UTC günü başına 5.000 yeni idempotency anahtarı hakkı var; hak dolunca yazma çağrısı UTC gece yarısına kadar süren bir Retry-After ile 429 Idempotency.DailyLimit alır, hiçbir şey çalışmaz. Yanıtlanmış anahtarların tekrarı sayılmaz. Bkz. Hız sınırları.
  • 256 KB’tan büyük ya da anahtarın yanıtlar için günlük saklama hakkı dolduktan sonra verilen bir yanıt durum koduyla saklanır: tekrar yeniden çalışmaz, gövdesiz olarak X-Idempotency-Replayed: true ve X-Idempotency-Body-Omitted: true ile yanıtlanır. Bkz. Idempotency.

Maliyet toplamları yalnız anlaşılan maliyetleri sayar. v1 içinde ekleme niteliğinde, bir anlam değişikliğiyle.

  • GET /deals/{id}/costs yanıtında additionalTotal ve grandTotal yalnız anlaşılan ek maliyetleri sayar; uygulamadaki operasyon hesap özeti de 2026-10-16’dan beri böyle sayar. Henüz anlaşılmamış beyan edilen maliyetler artık bu toplamlara girmez.
  • Her toplamda yeni alan: declaredTotal, o para birimindeki henüz anlaşılmamış beyan edilen maliyetler; çevrilmez ve genel toplama hiçbir zaman girmez. Hiç yoksa ve deneme alanında 0.00 olur.
  • status değeri Approved olan ya da gönderenin kendi girdiği (recordedBy Shipper) satır anlaşılmış sayılır: onu gönderen öder. Taşıyıcının girdiği Declared satır declaredTotal içindedir.
  • Entegrasyonunuz beyan edilen maliyetleri toplamlardan alıyorsa declaredTotal alanını okuyun ya da taşıyıcının girdiği Declared satırları toplayın.

Referans numaraları. Tümü v1 içinde ve ekleme niteliğinde.

  • Her sevkiyat talebinin, teklifin, anlaşmanın ve operasyonun kimliğinin yanında bir referans numarası vardır: REQ-048213, QTE-731905, DEAL-206447, SHPT-012618. Daha önce açılmış kayıtların da numarası vardır. Bkz. Referans numaraları.
  • Okumalar adını verdikleri kayıtların numaralarını taşır: talep durumuna requestNumber, quoteNumber, dealNumber ve shipmentNumber; anlaşmaya dealNumber, requestNumber, quoteNumber ve shipmentNumber; operasyona shipmentNumber ve dealNumber; belgeler, maliyetler ve yükleme yanıtına dealNumber; oluşturma yanıtına requestNumber eklendi.
  • Kimlik rotalarının kapsamı ve kurallarıyla numarayla okuma: GET /shipment-requests/by-number/{number}, GET /deals/by-number/{number} ve GET /operations/by-number/{number}. Büyük küçük harf fark etmez, önek isteğe bağlıdır; başka bir türün öneki 400 Integration.InvalidBusinessNumber, şirketinizin okuyamayacağı bir numara 404 döner.
  • Webhook’lar: her teslimatın data alanına requestNumber, quoteNumber, dealNumber ve shipmentNumber eklendi; kayıt henüz yoksa her biri null olur. request.bid_received olayında quoteNumber gelen teklifin numarasıdır.
  • Deneme alanı deneme kayıtlarını aynı biçimde numaralar; hiçbir zaman canlı bir kaydın numarasıyla.

Entegrasyon API’si her planda. Rotalarda, alanlarda ve kodlarda değişiklik yok.

  • API, Exchange dahil her planda açıktır: 1 canlı ve 1 test entegrasyonu, anahtar başına dakikada 60 çağrı ve şirket başına günde 50 belge yükleme (250 MB). Enterprise bunları 5 canlı ve 5 test entegrasyonuna, anahtar başına dakikada 300 çağrıya ve günde 200 yüklemeye (1 GiB) çıkarır. Bkz. Erişim.
  • Hız sınırı ve yükleme hakkı her çağrıda şirketinizin planına göre uygulanır.
  • Güvenlik özellikleri (OAuth, IP izin listesi, bitiş ve yenileme, iki adımlı doğrulama, çağrı kaydı ve denetim kaydı) her planda aynıdır.

Wave 3 ek düzeltmeleri. Tümü v1 içinde.

  • X-Idempotency-Key bir isteği yazılışıyla değil içeriğiyle karşılaştırır: aynı isteği başka alan sırası, alan adı harfi, sayı yazılışı ya da metadata anahtar sırasıyla yeniden kuran bir tekrar, 422 Integration.IdempotencyKeyReused yerine ilk yanıtı alır. Yüklemede kategori büyük küçük harfe bakılmadan, dosya türü parametreleri olmadan karşılaştırılır.
  • İptal, bekleyen teklifleri ancak iptal kaydedildikten sonra düşürür ve taşıyıcılara bildirir. Güncelleme, taşıyıcılara ancak her parçası yazıldıktan sonra bildirilir.
  • Oluşturma gövdesinin her metni (notlar, adresler, iletişim bilgileri, yükün tanımı), güncellemedeki gibi, U+0000 gibi bir denetim karakterini alanı gösteren 400 Integration.InvalidBody ile reddeder.
  • DOCX ve XLSX, Office’in okuduğu gibi, paketin ana parçasından tanınır; kök ilişkileri olmayan ya da 5.000’den fazla girdisi olan bir ZIP belge değildir. XLSX diye gönderilen bir Word belgesi ya da DOCX diye gönderilen bir çalışma kitabı olduğu şey olarak saklanır: contentType ve fileName uzantısı gerçek türe uyar (list.xlsx, list.docx olur). 415 dosyanın ne olduğunu söyler.
  • Güncellemede bozuk bir surrogate kaçışı ("\ud800" gibi) alanı gösteren 400 Integration.InvalidBody ya da metadata anahtarını gösteren Integration.MetadataInvalid döner.

Güncelleme, iptal, metadata ve belge yükleme. Tümü v1 içinde, ekleme olarak.

  • PATCH /shipment-requests/{id} talebi uygulamanın sahibine izin verdiği yerde günceller (ilanı Published iken, kendi kayıtlarınızı her durumda); en fazla 64 KB’lık bir JSON merge patch olarak, tek bir işlemde. Bkz. Güncelleme ve iptal.
  • requests:write artık API’den açılan taleplerin güncellemesini ve iptalini de kapsar. Uygulamada açılmış talep API’den okunur, ama yalnız uygulamada değiştirilir ve iptal edilir (409 Integration.RequestNotCreatedViaApi).
  • POST /shipment-requests/{id}/cancel talebi verilmeden önce iptal eder; iki kez iptal iptal edilmiş talebi döner, verilmiş talep dealId ile 409 Integration.RequestAwarded döner.
  • Talep okumaları ETag taşır; güncelleme ve iptal isteğe bağlı If-Match alır ve talep arada değiştiyse 412 döner. Karşılaştırma talebin kilidi altında yapılır; aynı etiketi gönderen iki yazardan ikisi birden kazanamaz.
  • Talepte metadata: en fazla 20 kendi alanınız; oluşturmada verilir, güncellemede birleşir, yalnız şirketinizce görülür. Bkz. Metadata.
  • POST /deals/{id}/documents uygulamanın yükleme kuralları ve virüs taramasıyla belge yükler; şirket başına günlük hak vardır. Kategori, uygulamanın anlaşmanın aşamasında tarafınıza sunduğuna uyar (400 Document.CategoryNotOffered); kullanımdan kalkan kategoriler ve AdditionalCostReceipt alınmaz. DOCX ya da XLSX bir Word ya da Excel paketi olmalıdır. Yeni kapsam: documents:write. Bkz. Belge yükleme.
  • Talep durum gövdesine metadata, revision ve cancellationReason eklendi.
  • Webhook’lar: yeni olay request.updated, her güncellemede bir tane, değişen her şeyi sayarak; request.cancelled reason taşır; talep sahibine giden olaylar talebin metadata değerini taşır.
  • X-Idempotency-Key her yazmada zorunlu (oluşturma, güncelleme, iptal, yükleme). Aynı anahtar başka bir istekte 422 Integration.IdempotencyKeyReused döner. 412 ve 429 hiçbir zaman tekrar edilmez; aynı anahtarla tekrar gerçekten çalışır.
  • Denetim karakteri (U+0000 gibi) içeren metin, alanda da metadata’da da adıyla reddedilir.
  • Deneme alanı güncelleme, iptal ve yükleme alır; yüklenen dosya denetlenir ve taranır, sonra yalnız kaydı tutulur.

Entegrasyon API’si v1.

  • Taşıma talepleri: oluşturma (POST /shipment-requests; zorunlu X-Idempotency-Key ve tekil externalReference ile), kimlikle okuma ve externalReference ile bulma.
  • Anlaşmalar: bir talepten doğan anlaşmaları listeleme; anlaşmayı, belgelerini (temiz dosyalar için 5 dakikalık indirme bağlantısıyla), operasyonunu (kilometre taşları ve teslim tahmini) ve maliyetlerini okuma.
  • Anahtarın kendisiyle ya da 15 dakikalık OAuth 2.0 erişim belirteciyle (client credentials) kimlik doğrulama; “Yalnız OAuth” ayarı, kapsamlar, hatırlatmalı 12 aylık bitiş, 7 günlük geçişle yenileme ve IP izin listesi.
  • Her anahtar entegrasyonun kendi servis kimliğiyle çalışır.
  • 11 olay türü ve webhook.test için imzalı webhook’lar; yeniden deneme, otomatik kapanma, yeniden gönderim ve sır yenileme.
  • Deneme alanıyla test anahtarları (qk_test_...) ve test talebini adım adım ilerleten POST /sandbox/shipment-requests/{id}/advance.
  • Self servis: şirketin Sahip ve Yöneticileri Ayarlar > Entegrasyonlar altında entegrasyon oluşturur, anahtar yeniler ve iptal eder, webhook’ları yönetir.
  • Tekrarlanan externalReference için dönen 409, mevcut talebin durumunu requestStatus alanında verir; status yalnız HTTP durum kodudur.