Epinpark

Hata Formatı

Tüm hata yanıtları RFC 7807 standardında, application/problem+json content-type ile döner.

Yanıt yapısı

Genel şema
{
  "type": "https://public-api.epinpark.com/problems/<kod>",
  "title": "Kısa, insan okunabilir başlık",
  "status": 400,
  "detail": "Spesifik açıklama",
  "instance": "/v1/orders",
  "traceId": "00-abc123def456...",
  "correlationId": "abc123def456",
  "code": "validation-error",
  "errors": {
    "Page": ["Page must be greater than or equal to 1."]
  }
}

Alan açıklamaları

AlanAçıklama
typeHata tipi URI'si (kategori belirleme için)
titleKısa, sabit başlık
statusHTTP status code
detailBu spesifik hata için açıklama
instanceİsteğin geldiği path
traceIdDistributed tracing için W3C Trace-Parent değeri
correlationIdİstek korelasyon ID'si (log eşleştirme için)
codeProgramatik karar için kullanılabilen kısa kod
errorsValidasyon hatalarında alan başına mesajlar (opsiyonel)

HTTP status code'lar

CodeAnlamTipik kullanım
400Bad RequestValidasyon hatası (eksik/yanlış parametre)
401UnauthorizedHMAC header eksik, imza hatalı, timestamp tolerans dışı
403ForbiddenAPI key'de gerekli scope yok
404Not FoundKaynak bulunamadı veya başka bir satıcıya ait
409ConflictMevcut state ile çakışma (örn. zaten fulfilled sipariş)
413Payload Too LargeMultipart upload sınırı aşıldı
422Unprocessable EntityDomain validation hatası
429Too Many RequestsHız sınırı aşıldı (Retry-After header'ı var)
500Internal Server ErrorBeklenmedik sunucu hatası
502Bad GatewayDownstream servisten geçersiz yanıt
503Service UnavailableDownstream servise ulaşılamıyor

404 ile 403 ayrımı

Başka bir satıcıya ait bir kaynağa erişmeye çalıştığınızda yanıt 403 değil 404 döner. Bu kasıtlıdır — kaynağın varlığını veya sahibini sızdırmamak için.

Hata tipleri kataloğu

Type URI sonuAçıklama
validation-errorRequest validation (FluentValidation) hatası
resource-not-foundPath ile belirtilen ID'de kaynak yok veya size ait değil
invalid-idempotency-keyIdempotency-Key formatı uygun değil (max 64 char, alfanumerik + -_)
forbiddenScope yetersiz
conflictDomain state çakışması (örn. zaten cancelled order item)
rate-limit-exceededHız limiti aşıldı
upstream-unavailableDownstream servis erişilemez

Hata yönetimi örneği

Validasyon hatası örneği

400 Bad Request
{
  "type": "https://public-api.epinpark.com/problems/validation-error",
  "title": "Validation failed",
  "status": 400,
  "errors": {
    "Page": ["Page must be greater than or equal to 1."],
    "PageSize": ["PageSize must be between 10 and 100."],
    "OrderBy": ["OrderBy must be one of: CreatedAt, UpdatedAt, Price."]
  },
  "correlationId": "abc123",
  "traceId": "00-..."
}

correlationId nedir?

Her isteğe sunucu tarafından otomatik atanan benzersiz bir kimliktir. Hata raporlarken bu değeri paylaşın — Epinpark loglarından isteğinizi 1 saniyede bulabiliriz.

Kendi correlation ID'nizi de gönderebilirsiniz:

X-Request-Id: my-app-trace-abc123

Bu durumda yanıt header'ında da aynı değer döner.