Hatalar

External Commerce API hata response'ları HTTP status, machine-readable error code, açıklayıcı message ve request_id üzerinden işlenmelidir.

HTTPAnlamıİlk yapmanız gereken
400Bad RequestRequest/header yapısını kontrol edin
401UnauthorizedCredential'ı kontrol edin
403ForbiddenScope yetkisini kontrol edin
404Not FoundResource ID ve tenant kapsamını kontrol edin
409Conflicterror.code ve idempotency durumunu inceleyin
422Validation ErrorGönderdiğiniz alanları düzeltin
500Server Errorrequest_id saklayıp kontrollü retry değerlendirin

Bir hata aldığınızda önce ne yapmalısınız?

İlk olarak HTTP status değerini okuyun. Ardından response içerisindeki error.code ve error.message alanlarını kontrol edin.

request_id değerini mutlaka teknik logunuza kaydedin. Bu değer belirli API isteğini daha sonra izleyebilmek için kullanılır.

Standart error response

{
  "success": false,
  "error": {
    "code": "product_not_found",
    "message": "Ürün bulunamadı."
  },
  "request_id": "req_xxxxxxxx"
}

401 Unauthorized

Credential gönderilmemiş, yanlış, revoke edilmiş veya authentication için kullanılamıyor olabilir.

401 hatasını sürekli retry etmeyin. Authorization header ve credential yapılandırmasını düzeltin.

403 Forbidden

Credential geçerlidir ancak endpoint için gerekli scope yetkisine sahip değildir.

Örneğin stok yazmak için inventory:write yetkisi gerekir. Credential'ın aktif scope listesini kontrol etmek için health endpointini kullanabilirsiniz.

404 Not Found

İstenen resource gerçekten bulunmayabilir veya resource credential'ın tenant kapsamı dışında olabilir.

Başka mağazaya geçmek için request'e store_id eklemeye çalışmayın. Tenant credential tarafından belirlenir.

409 Conflict

Conflict çoğunlukla idempotency veya resource state nedeniyle oluşur. error.code alanını okuyarak gerçek nedeni ayırın.

  • Aynı Idempotency-Key farklı payload ile kullanılmış olabilir.
  • Aynı idempotent request halen işleniyor olabilir.
  • Varyantlı üründe ürün seviyesinde stok veya fiyat yazmaya çalışılmış olabilir.

422 Validation Error

Request JSON yapısı syntactically geçerli olsa bile business veya field validation başarısız olabilir.

Zorunlu alan eksikliği, yanlış veri tipi, desteklenmeyen değer veya caller-controlled store_id gibi contract ihlalleri 422 oluşturabilir.

500 Server Error

Beklenmeyen backend hatasını ifade eder. request_id değerini kaydedin. Aynı request write işlemi ise retry öncesinde idempotency davranışını dikkate alın.

5xx hatalarında kısa süreli exponential backoff ile kontrollü retry uygulanabilir; sınırsız retry döngüsü oluşturmayın.

Retry matrisi

HTTPOtomatik retry?Ne yapmalısınız?
400HayırRequest'i düzeltin
401HayırCredential'ı düzeltin
403HayırScope'u düzeltin
404HayırResource/tenant bilgisini kontrol edin
409Duruma bağlıerror.code inceleyin
422HayırValidation problemini düzeltin
500KontrollüExponential backoff değerlendirin

Loglarda ne saklamalıyım?

API credential değerini loglara tam olarak yazmayın.
  • request_id
  • HTTP status
  • error.code
  • endpoint path
  • HTTP method
  • timestamp
  • Idempotency-Key kullanıldıysa key değeri

Destek isterken

Beklenmeyen bir hatayı bildirirken credential paylaşmayın. request_id, yaklaşık istek zamanı, endpoint, HTTP method ve HTTP status bilgilerini paylaşmanız yeterlidir.