Geliştirici dokümantasyonu

API çalışma alanı
https://api.rentron.xyz/v1
OpenAPI şeması

Hatalar

// DOC

Üretim API’si

API hataları

Tek RFC 9457 Problem Details zarfı, kararlı kodlar ve güvenli işleme yaklaşımı.

Bu sayfada

Her API hatası Content-Type: application/problem+json ile ve RFC 9457 Problem Details biçiminde gelir. Energy API'nin başka hata zarfı yoktur.

Zarf

{"type":"https://rentron.xyz/docs/errors/codes#energy_order_not_found","title":"Not Found","status":404,"detail":"Order was not found.","code":"energy_order_not_found"}
Alan Tür Amaç
type string Kararlı hata türü URI'si.
title string Kısa HTTP kategorisi.
status integer Gövdede de yer alan HTTP durum kodu.
detail string İnsan için güvenli açıklama.
code string Uygulama dallanması için kararlı makine kodu.
field string veya null Varsa hatalı tek alan.
errors array veya null code, field, message içeren alan hataları.

Uygulama mantığını code üzerinden kurun. detail operatöre yedek metin olarak gösterilebilir, ancak programatik olarak ayrıştırılmamalıdır.

Birden fazla alan hatası

errors yalnızca aynı anda iki veya daha fazla alan hatalıysa döner. Tek alan hatalıysa yanıt düz gelir: üst düzeyde ilgili kod, alan adı field içinde ve errors dizisi yok.

{"type":"https://rentron.xyz/docs/errors/codes#field_invalid_format","title":"Bad Request","status":400,"detail":"Request validation failed.","code":"field_invalid_format","field":"address"}

İki alandan itibaren üst düzey kod validation_failed olur ve her alan ayrı ayrı listelenir:

{"type":"https://rentron.xyz/docs/errors/codes#validation_failed","title":"Bad Request","status":400,"detail":"Request validation failed.","code":"validation_failed","errors":[{"code":"field_invalid_format","field":"target_address","message":"Request validation failed."},{"code":"field_must_be_positive","field":"duration_minutes","message":"Request validation failed."}]}

field, doğrulamadan geçemeyen değeri adlandırır ve bu ad her zaman istekteki alan adıyla aynı olmaz: address, target_address olarak döner. Uygulama mantığını code üzerinden kurun, field değerini günlükleriniz için ipucu olarak okuyun.

Yaygın kodlar

Kod HTTP İşlem
malformed_request 400 JSON'u ve alan türlerini düzeltin.
field_invalid_format 400 Tek alan hatalıdır; field değerini okuyup düzeltin.
validation_failed 400 İki veya daha fazla alan hatalıdır; errors değerini okuyun.
unauthorized 401 HMAC'i, zaman damgasını ve kimlik bilgisini kontrol edin.
energy_order_not_found 404 Siparişi kullanılamaz kabul edin; sahiplik açıklanmaz.
energy_order_idempotency_conflict 409 Aynı kimliği başka siparişte kullanmayın.
energy_price_changed 409 Yeni teklif alıp yeniden gönderin; sipariş veya TRX blokesi oluşturulmamıştır.
insufficient_balance 409 Yeniden denemeden önce hesap bakiyesini yükleyin.
energy_intake_disabled 409 Yeni sipariş alımı duraklatıldı; daha sonra yeniden gönderin.
payload_too_large 413 İstek gövdesini küçültün.
unsupported_media_type 415 application/json gönderin.
rate_limited 429 Retry-After değerine uyun.
energy_api_unavailable 503 Artan beklemeyle yeniden deneyin.

İstek nedeni adlandıracak kadar ilerlediyse 401 yanıtı daha belirli bir kod da taşır: authorization_missing, authorization_malformed, timestamp_missing, timestamp_expired, invalid_credentials veya ip_not_allowed. Hepsinde işlem aynıdır: imzayı ya da kimlik bilgisini düzeltin, isteği değiştirmeden yeniden göndermeyin.

Güvenli işleyici

if (!response.ok) {
  const problem = await response.json();
  if (response.status === 429) scheduleRetry(response.headers.get('Retry-After'));
  throw new RentronApiError(problem.code, problem.detail, problem.errors ?? []);
}