Aller au contenu principal

Corriger une erreur de validation

Lisez d’abord error.errors. Chaque entrée identifie le paramètre public, sa localisation et une raison stable. Le message est destiné à l’affichage; ne l’utilisez pas pour piloter votre code.

Méthode

  1. Conservez correlation_id et trace_id pour le support.
  2. Regroupez errors par param.
  3. Corrigez les erreurs required avant les erreurs de format ou de dépendance.
  4. N’effectuez pas de retry automatique: les codes IKW-REQ-* ne sont pas retryables sans modification de la requête.

Exemples

Body absent:

{"param":"currency","location":"body","reason":"required"}

Query mal formée:

{"param":"limit","location":"query","reason":"out_of_range","minimum":1,"maximum":100}

Path invalide:

{"param":"payout_id","location":"path","reason":"invalid_format","expected":"UUID"}

Header absent:

{"param":"Idempotency-Key","location":"header","reason":"required"}

Header ops invalide:

{"param":"X-Ops-Merchant-Id","location":"header","reason":"invalid_format","expected":"UUID"}

JSON malformé ou mauvais type:

{"param":"amount","location":"body","reason":"type_mismatch","expected":"integer"}

Body imbriqué:

{"param":"destination.mobile_money.operator","location":"body","reason":"unsupported_value","allowed_values":["orange_money","wave","mtn_momo"]}

Champ inconnu:

{"param":"destination.mobile_money.operatr","location":"body","reason":"unknown_field","suggestion":"destination.mobile_money.operator"}

Mismatch:

{"param":"merchant_id","location":"header","reason":"mismatch"}

Ops:

{"param":"execution_id","location":"body","reason":"invalid_format","expected":"UUID"}

Routing:

{"param":"provider_code","location":"path","reason":"unsupported_value","allowed_values":["orange_money","wave","mtn_momo"]}

Terminal:

{"param":"serial_number","location":"body","reason":"required"}

JavaScript

try {
await ikawaari.payouts.create(payload)
} catch (error) {
if (error.name === 'ValidationError') {
const operatorError = error.getFirstFieldError(
'destination.mobile_money.operator'
)
}
}

Le SDK conserve la lecture des anciennes enveloppes pendant la transition, mais tout nouveau code doit utiliser errors, param et reason.