Aller au contenu
Sandbox

Formats

JSON, encodage, taille maximale, format exact de chaque champ de requête, forme canonique utilisée pour comparer deux transactions, et format des identifiants rendus.

Voir en Markdown

Transport

ÉlémentRègle
ProtocoleHTTPS, vers l'URL de base configurée
Corps des routes POSTUn objet JSON, encodé en UTF-8, envoyé avec Content-Type: application/json
Taille du corps16 Kio au plus (16 384 octets), comptés en octets et non en caractères. Au-delà : 413 request_entity_too_large
Corps des réponsesJSON. Les erreurs sont en application/problem+json
Route GETPas de corps

La limite de 16 Kio couvre très largement une transaction ; elle existe parce que l'API traite une transaction par requête, pas un fichier.

Champs de requête

ChampTypeFormat exactExemple
descriptorchaîneObligatoire, non vide (pas seulement des espaces), 512 caractères au plus"CB MCDONALDS PARIS 4519"
amountnombreNombre JSON fini ; une chaîne est refusée12.40
currencychaîneISO 4217, trois lettres majuscules"EUR"
occurred_atchaîneDate et heure ISO 8601 en UTC avec le suffixe Z, fraction de seconde facultative (1 à 9 chiffres)"2026-09-06T11:42:00Z"
countrychaîneISO 3166-1 alpha-2, deux lettres majuscules"FR"
mccchaîneQuatre chiffres, sous forme de chaîne"5814"
external_transaction_idchaîne1 à 255 caractères ; création uniquement"tx_8f21c0"

Seul descriptor est obligatoire. Un champ facultatif que vous n'avez pas doit être omis : la valeur null est refusée pour chacun d'eux. Voir Validation.

Pourquoi les majuscules

eur est refusé en 400, et fr aussi. C'est délibéré : la forme canonique compare currency, country et mcc tels quels, donc EUR et eur seraient deux identités économiques distinctes et deux factures pour ce que vous vouliez être un seul appel. Le validateur refuse l'ambiguïté plutôt que de normaliser dans votre dos.

La forme canonique

Pour décider si deux requêtes portent la même transaction (idempotence et déduplication), Noryo compare une forme canonique des six champs économiques :

ChampTraitement avant comparaison
descriptorNormalisation Unicode NFC, passage en minuscules, suites d'espaces réduites à un espace, espaces de début et de fin retirés
amountReprésentation décimale à 15 chiffres significatifs
occurred_atRamené en UTC et tronqué à la seconde
currency, country, mccAucun : comparés tels quels
Champ absentReste absent : un champ omis et un champ présent font deux entrées différentes

Conséquences : "CB McDonalds Paris" et "cb mcdonalds paris" sont la même entrée ; 2026-09-06T11:42:00.250Z et 2026-09-06T11:42:00Z aussi ; 12.4 et 12.40 aussi. En revanche, une requête qui porte amount et une requête qui ne le porte pas sont deux transactions.

Cette forme sert uniquement à comparer. Le libellé brut, lui, n'est pas conservé.

Identifiants rendus par l'API

IdentifiantFormeRemarques
enrichment_idenr_ suivi d'un UUID version 4, en minusculesAléatoire : il ne révèle ni un ordre ni un volume. Un identifiant mal formé rend 404.
request_id / Noryo-Request-Idreq_ suivi d'un UUID version 7Ordonné dans le temps, utile pour trier vos journaux.
Clé APInry_mer_sbx_<key_id>.<secret> ou nry_mer_live_<key_id>.<secret>Voir Clés API.

Traitez ces identifiants comme opaques : stockez-les et comparez-les tels quels, sans en extraire de sens.

Valeurs rendues

ChampForme
merchant.confidenceNombre entre 0 et 1
merchant.categoryCode textuel, par exemple alimentation.restaurant
merchant.logo_urlURI
merchant.locationObjet { "city", "postal_code" } ou null. Voir Location.
Retry-AfterNombre entier de secondes

Publié le 2026-10-08 21:04 UTC (version 1).

Cette page vous a-t-elle aidé ?