Hata Kodları

Tüm yüzeylerdeki (Veri API, yazma ucu, hook'lar, aksiyon, webhook) dokümante hata mesajları tek yerde. Veri API hataları HTTP 200 + { success:false, message } zarfında döner (auth hatası 401 hariç); her kodun anlamı ve çözümü aşağıda.

Hata zarfı

// Veri API hata zarfı
{ "success": false, "message": "<kod>" }

// Başarı
{ "success": true, "data": … }

Veri API (GET /plugin-api/*)

messageHTTPAnlam / çözüm
plugin.scope.denied200Ucun istediği scope onaylı değil → manifest'e ekle, tenant yeniden onaylasın.
unauthorized401Geçersiz/eksik install apiKeytoken exchange'teki anahtarı kullan.
plugin.rateLimited429Rate limit aşıldı → backoff + retry. Limitler (DEV 5/dk, write 20/dk).
plugin.<kaynak>.notFound200Kayıt yok (packets/tables/products/categories/customers) → id'yi doğrula.
plugin.<kaynak>.missingParams200Zorunlu parametre eksik/yanlış adlı (örn. packets/getpacketId, customers/getcustomerId).

Yazma — POST /plugin-api/packets/create

messageAnlam / çözüm
joi doğrulama mesajıGeçersiz gövde (eksik/yanlış alan) → gövde şeması.
Product not found: <id>cart'taki bir ürün yok — TÜM ürünler var olmalı (yarım sipariş yazılmaz).
Paid amount is greater than total…payments toplamı sipariş tutarını aşıyor.
Duplicate request already in progressAynı idempotencyKey ile eşzamanlı 2. istek.
Server not foundGeçersiz tenant.
callbackUrl must be under the same domain…callbackUrl manifest webhookUrl'üyle aynı registered domain değil (400).
callbackUrl rejected: <sebep>Güvenlik kontrolünden geçemedi (private IP / DNS) (400).

Hook'lar (gate çağrısı)

messageAnlam / çözüm
plugin.hook.notOwnerPaket sizin değil (yalnız packet.status.update'te — sahiplik damgası eşleşmedi).
plugin.hook.targetNotFoundHedef (paket/masa) bulunamadı.
plugin.hook.missingTransitionGeçiş bağlamı eksik/geçersiz (panel hatası).
plugin.hook.notRegisteredManifest'inizde bu hook yok.
plugin.hook.gateRequiredGate yanıtı bekleniyor — iframe gate'i resolve/close ile sonuçlandırmadınız.
plugin.hook.inactiveKurulum pasif (kill-switch / billing / connect).
plugin.scope.deniedİlgili hooks:<action> scope'u onaylı değil.

Aksiyon / senkron timeout

messageAnlam / çözüm
plugin.action.timeoutSenkron aksiyon/hook cevabı süresinde gelmedi (timeoutMs). Hook'ta failMode uygulanır.
plugin.rateLimitedSenkron çağrı kovası aşıldı (Limitler).
Genel kurallar: ortak hata kodları her uçta plugin.scope.denied ve plugin.<kaynak>.notFound; auth her zaman 401, rate limit 429. İlgili: Veri API · Hook'lar · Limitler · İmza (401).