Référentiel
Page générée depuis la spécification OpenAPI que la passerelle sert (
GET /v1/openapi.json). Ne la modifiez pas à la main : elle est réécrite à chaque build.
| Méthode | Chemin | Description |
|---|---|---|
GET |
/v1/assets |
Actifs et décimales |
GET |
/v1/balances |
Consulter les soldes |
GET |
/v1/corridors |
Corridors ouverts à votre compte |
GET /v1/assets
Actifs et décimales
Chaque actif porte son symbole et son nombre de décimales, qui est ce qui convertit une unité mineure en montant lisible.
⚠️ Ne codez pas les décimales en dur — lisez-les ici. C'est la seule protection contre un facteur cent sur un montant réel.
Réponses
200— OK (AssetList)401— Clé API manquante ou rejetée (Error)403— La clé ne porte pas le scope requis, ou le compte n'est pas actif (Error)429— Budget de requêtes de la clé épuisé (300/min) — honorer Retry-After (Error)
GET /v1/balances
Consulter les soldes
Solde disponible, en attente et réservé, PAR ACTIF et par (plateforme, pays).
⚠️ Les soldes ne s'additionnent jamais entre actifs : il n'existe aucune conversion de devise sur cette plateforme, donc un total tous actifs confondus n'aurait pas de sens. Le montant réservé couvre les sorties déjà engagées ; il n'est pas dépensable.
Paramètres
| Nom | Emplacement | Requis | Description |
|---|---|---|---|
asset_id |
query | oui | Obligatoire. L'actif dont on veut les soldes ; son identifiant vient de GET /v1/assets. Sans lui la route repond 422 invalid_request — les soldes sont tenus par (actif, plateforme, pays) et il n'existe pas de total tous actifs confondus. |
Réponses
200— OK (BalanceList)401— Clé API manquante ou rejetée (Error)403— La clé ne porte pas le scope requis, ou le compte n'est pas actif (Error)429— Budget de requêtes de la clé épuisé (300/min) — honorer Retry-After (Error)
GET /v1/corridors
Corridors ouverts à votre compte
Les (actif, pays, plateforme, sens) que VOTRE compte peut emprunter, dans l'ordre où le routage les choisirait, avec les identifiants à passer dans asset_id et platform_id.
ⓘ Le routage est inspectable, pas devinable : si un encaissement est refusé pour corridor fermé, cette liste dit lequel manquait. Elle ne donne PAS de tarif — la tarification dépend du client, du montant et du sens.
Paramètres
| Nom | Emplacement | Requis | Description |
|---|---|---|---|
asset_id |
query | oui | Obligatoire. L'actif du corridor ; son identifiant vient de GET /v1/assets. Sans lui la route repond 422 invalid_request — un corridor est une paire (pays, actif) et il n'existe pas de reponse tous actifs confondus. |
country |
query | non | Pays du corridor, en ISO 3166-1 alpha-2. Omis, il prend celui du compte. La route ne refuse que si les DEUX manquent — un compte sans pays configure ne peut pas etre devine. |
direction |
query | non | Sens du corridor. Omis, il vaut INBOUND. Une valeur autre que INBOUND ou OUTBOUND est refusee plutot qu'ignoree. |
Réponses
200— OK (CorridorList)401— Clé API manquante ou rejetée (Error)403— La clé ne porte pas le scope requis, ou le compte n'est pas actif (Error)429— Budget de requêtes de la clé épuisé (300/min) — honorer Retry-After (Error)
Schémas
Les formes renvoyées par les opérations ci-dessus.
AssetList
| Champ | Type | Description |
|---|---|---|
data |
Asset[] | |
data[].id |
integer | |
data[].symbol |
string | |
data[].decimals |
integer | |
page |
integer | |
per_page |
integer |
Error
| Champ | Type | Description |
|---|---|---|
error |
object | |
error.code |
string | |
error.message |
string |
BalanceList
La réponse réelle de GET /v1/balances : une enveloppe data portant l'actif, ses sous-soldes et leur total disponible.
| Champ | Type | Description |
|---|---|---|
data |
object | |
data.asset_id |
integer | |
data.balances |
Balance[] | |
data.balances[].platform_id |
integer | |
data.balances[].platform_code |
string | Le code STABLE de la plateforme ('wave', 'sn-ecobank-senegal'). null si la plateforme n'est pas (ou plus) active. Ajouté sans rupture ; platform_id reste la clé. |
data.balances[].country |
string | ISO 3166-1 alpha-2 |
data.balances[].platform_account_id |
integer | Le pot. 0 est une vraie valeur : NOTRE compte de plateforme, toujours émis. ⚠️ Non portable entre environnements — nommez un pot par platform_account_handle. |
data.balances[].platform_account_handle |
string | Le NOM stable du pot (client_platform_accounts.handle, ex. 'neo-card-card-programme'), celui qu'accepte platform_account_handle sur /v1/payouts et /v1/rebalances. null pour platform_account_id 0. |
data.balances[].available_minor |
string | |
data.balances[].reserved_minor |
string | Engagé par des sorties en cours ; non dépensable. |
data.balances[].held_minor |
string | Retenu par une revue (porte humaine) ; non dépensable. |
data.balances[].asset_id |
integer | Non émis par ligne : l'actif est porté une fois par l'enveloppe (data.asset_id). Conservé pour compatibilité de la documentation. |
data.balances[].pending_minor |
string | Jamais émis par GET /v1/balances (voir reserved_minor et held_minor). Conservé pour compatibilité de la documentation. |
data.total_available_minor |
string | Information seulement : rien ne s'autorise contre le total — chaque pot est distinct et toute dépense en nomme un. |
page |
integer | Jamais émis : la liste n'est pas paginée. |
per_page |
integer | Jamais émis : la liste n'est pas paginée. |
CorridorList
| Champ | Type | Description |
|---|---|---|
data |
Corridor[] | |
data[].asset_id |
integer | |
data[].country |
string | |
data[].platform_id |
integer | |
data[].platform |
string | |
data[].direction |
string | |
data[].rails |
string[] | |
page |
integer | |
per_page |
integer |