Public API v1 sözleşmesi Gönderiler PA-04
Gönderi ölçü güncelleme
PATCH/api/v1/shipments/{id}
Amaç
Toplama öncesi koli sayısı + toplam desi düzeltmesini taşıyıcıya iletmek. v1'in TEK gönderi güncelleme ucudur (PUT yok); alan kümesi bilinçli dardır çünkü taşıyıcı katmanının bugünkü updateShipment yeteneği budur (Hepsijet delivery-update TOTAL_PARCEL ekseni; alıcı/servis alanları için public yüzeye açılmış taşıyıcı ucu yok). Alıcı/adres düzeltmesi = toplama öncesi iptal (PA-05) + yeniden oluşturma (PA-03).
Yetki
Bearer anahtar; policy update yeteneği (salt-okuma view'dan AYRI; RISK-008/TASK-054, PA-05 cancel ile aynı kalıp); başka tenant'ın kaydı 404 (IDOR).
Ön koşullar
gönderinin durumu CREATED | PREPARING | READY_TO_SHIP (toplama öncesi) olmalı; DRAFT bu kümeye GİRMEZ ve girmesi TASK-247'den beri ayrı bir sabitle mekanik olarak engellidir: uç taşıyıcıya updateShipment gönderir, taslağın ise taşıyıcıda kaydı yoktur, dolayısıyla fail-closed 422 doğru cevaptır (PA-05 iptal kümesi bundan AYRIDIR ve DRAFT'ı kapsar); hesabın taşıyıcısı updateShipment desteklemeli (TASK-043 sonrası `tex` VE `hepsijet`; meta.carrier_capabilities tek gerçektir; capability sınıf seviyesinden türer, PA-04 sözleşmesi değişmedi; Hepsijet delivery-update kablolaması eklendiği için uç artık hepsijet hesapları için de otomatik açık).
İstek gövdesi
desi (numeric, > 0) ve parcel_count (integer, >= 1); İKİSİ BİRLİKTE zorunlu: taşıyıcı ucu koli sayısını ve toplam desiyi tek çağrıda birlikte ister, ayrı ayrı güncelleme yolu yoktur (tek net kural).
Davranış
capability guard, ardından adaptöre updateShipment, başarıda Sevkora kaydının desi alanı güncellenir.
Koli değişmezi (DEC-316)
gönderinin KOLİ SATIRLARI VARSA desi onların toplamına, parcel_count da onların sayısına EŞİT olmak zorundadır; çelişen değer 422 alan hatası döner (errors.desi / errors.parcel_count). Gerekçe: ücret artık koli başına çözülür (DEC-312), dolayısıyla gönderi düzeyinde çelişen bir ölçü yazmak kesilen ücretle kaydı sessizce ayrıştırırdı; DEC-174 tam da bu ayrışmayı önlemek için vardır. Uç bu yüzden kolili gönderilerde ölçüyü DEĞİŞTİREMEZ. Kolisi olmayan (origin=imported) gönderilerde kural sessizdir ve uç eskisi gibi çalışır; bu akış zaten ucun doğal kanalıdır. Kolili bir gönderinin ölçüsünü gerçekten düzeltmenin yolu, alıcı/adres düzeltmesiyle aynıdır: toplama öncesi iptal (PA-05) + yeniden oluşturma (PA-03). Koli düzeyinde bir güncelleme ucu AYRI bir görevdir.
Başarı 200
detay gövdesi ({data, meta}).
Hatalar
401, 404, 422 alan hataları, 422 {message} (durum toplama öncesi değil; taşıyıcıya istek atılmaz), 409 {message} (hesabın taşıyıcısı updateShipment desteklemiyor; istek biçimsel olarak doğrudur ama hesabın YETENEĞİYLE çakışır; taşıyıcıya istek atılmaz, adaptör hiç kurulmaz. Sözleşme düzeltmesi TASK-026: önceki 422 sınıfı capability çakışmasını alan/iş kuralı hatasından ayırmıyordu), 422 {message} (taşıyıcı reddi), 429, 502.
curl -X PATCH "{{base_url}}/shipments/01K1GNDR000000000000000001" \
-H "Accept: application/json" -H "Content-Type: application/json" \
-H "Authorization: Bearer SEVKORA_API_ANAHTARINIZ" \
-d '{"desi": 3.5, "parcel_count": 2}'