# API du Central Ledger
# Introduction
Ce document fournit des informations détaillées sur l'API Central Ledger. L’API Central Ledger est une API Mojaloop permettant aux opérateurs du Hub de gérer les processus administratifs tels que :
- Création, activation et désactivation de participants dans le hub
- Ajout et mise à jour des informations d’endpoints des participants
- Gestion des comptes, des limites et des positions des participants
- Création de comptes Hub
- Effectuer des opérations de dépôt (Funds In) et de retrait (Funds Out)
- Création/mise à jour/consultation des modèles de règlement (settlement)
- Récupération des détails des transferts
Pour plus d’informations sur les concepts de participants et de modèles de règlement que l’opérateur du Hub peut gérer via l’API Central Ledger, voir la section Concepts de base.
# Concepts de base
Afin de contextualiser les opérations administratives rendues possibles par l’API Central Ledger, cette section présente une brève définition de certains concepts essentiels.
# Participant
Le Hub lui-même ou un Prestataire de Services Financiers Numériques (DFSP) qui participe à un schéma Mojaloop.
# Endpoint
L’URL de callback du DFSP où le Hub envoie les callbacks de l’API. L’URL spécifiée correspond à l’endpoint configuré dans la passerelle API sortante.
# Limite
Actuellement, un seul type de limite est pris en charge, appelée "Net Debit Cap (NDC)". À l’avenir, d’autres types de limites pourraient être pris en charge.
Le Net Debit Cap représente la couverture de liquidité disponible pour un compte spécifique (le compte de Position). Il s’agit du montant total de fonds garantis que le système atteste disponibles afin de garantir qu’un participant a la capacité de régler les obligations résultant des transferts sur ce compte de Position. Ce montant est représenté par le solde d’un compte (le compte de Règlement), qui est lié au compte de Position via un modèle de règlement. L’origine des fonds dans ce compte peut provenir soit de dépôts/retraits effectués par les administrateurs du système, soit de fonds automatiquement crédités/débités par le système si le compte correspond à un modèle de règlement brut immédiat.
Il doit également être possible pour un participant d’indiquer qu’un montant (ou une proportion) des fonds disponibles dans un compte de Règlement soit exclu du calcul du Net Debit Cap. Dans le cas où un participant est bénéficiaire net sur le long terme via le règlement, ou conserve un excédent de fonds pour faire face à des périodes où il n’est pas possible d’alimenter les comptes, il peut choisir d’exclure une partie du solde de son compte de règlement du calcul de couverture pour les transferts.
# Compte
Également appelé Ledger. Le Hub maintient plusieurs comptes internes pour suivre les mouvements de fonds (argent électronique ou réel) entre les DFSPs.
# Position
La Position représente le solde net de :
- transferts sur le compte ayant été compensés mais pas encore réglés, et
- transferts sur le compte où :
- le DFSP est débiteur,
- le transfert a été accepté pour traitement mais pas encore compensé par le Hub.
La Position d’un compte donné est toujours vérifiable et à jour.
Lorsqu’un transfert est initié, le Hub vérifie que le DFSP dispose d’une couverture de liquidité suffisante sur ce compte pour couvrir le montant du transfert. Sinon, le transfert sera rejeté.
Nous autorisons actuellement que les obligations nées sur le compte – où le participant est bénéficiaire – réduisent la Position du participant, comme si ces fonds avaient déjà été réglés.
# Opérations Funds In et Funds Out
Les opérations Funds In et Funds Out servent à tracer (dans les comptes du Hub) les mouvements d’argent liés aux dépôts, retraits et règlements.
Les opérations Funds In enregistrent soit le dépôt d’argent sur le compte bancaire de règlement d’un DFSP, soit le montant du règlement pour un DFSP receveur.
Les opérations Funds Out enregistrent soit le retrait d’argent d’un compte bancaire de règlement d’un DFSP, soit le montant du règlement pour un DFSP qui envoie des fonds.
# Modèle de règlement (Settlement model)
Fait référence à la façon dont le règlement se produit dans un schéma. Le règlement est le processus par lequel des fonds sont transférés d’un DSFP à un autre, de sorte que le DFSP du payeur rembourse celui du bénéficiaire pour les fonds versés lors d’une transaction. Un modèle de règlement spécifie si les participants règlent séparément entre eux ou avec le schéma, si les transferts sont réglés un par un ou en lot, immédiatement ou avec délai, etc.
# Détails HTTP
Cette section fournit des informations détaillées sur l’usage du protocole HTTP au niveau applicatif dans l’API.
# Champs d’en-tête HTTP
Les en-têtes HTTP sont généralement décrits dans la RFC 7230 (opens new window). Tout en-tête spécifique à l’API Central Ledger sera standardisé à l’avenir.
# Méthodes HTTP
Les méthodes HTTP suivantes, telles que définies dans la RFC 7231 (opens new window), sont supportées par l’API :
GET– La méthode HTTP GET est utilisée par un client pour récupérer des informations concernant un objet déjà créé sur un serveur.POST– La méthode HTTP POST est utilisée par un client pour demander la création d’un objet sur le serveur.PUT– La méthode HTTP PUT est utilisée par un client pour modifier un objet déjà existant sur le serveur (remplace la représentation de la ressource cible par le contenu de la requête).
REMARQUE : La méthode
DELETEn’est pas prise en charge.
# Codes de statut de réponse HTTP
La table Codes de statut de réponse HTTP liste les codes de statut HTTP pris en charge par l’API :
| Code de statut | Raison | Description |
|---|---|---|
| 200 | OK | Réponse standard pour une opération GET, PUT, ou POST réussie. La réponse contiendra une entité correspondant à la ressource demandée. |
| 201 | Created | La requête POST a abouti à la création d’une nouvelle ressource. La réponse ne contiendra pas d’entité décrivant ou contenant le résultat de l’action. |
| 202 | Accepted | La requête a été acceptée pour traitement, mais le traitement n’est pas encore terminé. |
| 400 | Bad Request | Le serveur n’a pas compris la requête à cause d’une syntaxe invalide. |
| 401 | Unauthorized | L’accès à la ressource nécessite une authentification. |
| 403 | Forbidden | La requête a été rejetée, et le sera également à l’avenir. |
| 404 | Not Found | La ressource demandée n’est pas disponible actuellement. |
| 405 | Method Not Allowed | Une méthode HTTP non supportée a été utilisée. |
| 406 | Not Acceptable | La ressource demandée ne peut générer que du contenu non accepté selon les en-têtes Accept de la requête. |
| 500 | Internal Server Error | Message d’erreur générique, utilisé lorsqu’une condition inattendue est rencontrée et qu’aucun message plus spécifique n’est approprié. |
| 501 | Not Implemented | Le serveur ne supporte pas le service demandé. Le client ne doit pas réessayer. |
| 503 | Service Unavailable | Le serveur est temporairement indisponible pour de nouvelles requêtes. Cela doit être un état temporaire, le client doit réessayer dans un délai raisonnable. |
# Services API
Cette section introduit et détaille tous les services supportés par l’API pour chaque ressource et méthode HTTP.
# Services API de haut niveau
De façon générale, l’API permet d’effectuer les actions suivantes :
/participants: Consulter, créer ou modifier les détails des participants tels que la limite (Net Debit Cap), la position, ou les endpoints configurés./settlementModels: Consulter, créer ou modifier les détails liés aux modèles de règlement (granularité, délais, contrôle de liquidité etc.)./transactions: Consulter les détails d’une transaction particulière.
# Services API supportés
La table Services API supportés inclut une description de haut niveau des services fournis par l’API. Pour plus de détails, se référer aux sections suivantes.
| URI | Méthode HTTP GET | Méthode HTTP PUT | Méthode HTTP POST | Méthode HTTP DELETE |
|---|---|---|---|---|
/participants | Obtenir les infos de tous les participants | Non supporté | Créer un participant dans le Hub | Non supporté |
/participants/limits | Voir les limites pour tous les participants | Non supporté | Non supporté | Non supporté |
/participants/{name} | Obtenir les infos d’un participant particulier | Modifier les infos du participant (activer/désactiver) | Non supporté | Non supporté |
/participants/{name}/endpoints | Voir les endpoints d’un participant | Non supporté | Ajouter/Modifier les endpoints d’un participant | Non supporté |
/participants/{name}/limits | Voir les limites d’un participant | Ajuster les limites d’un participant | Non supporté | Non supporté |
/participants/{name}/positions | Voir les positions d’un participant | Non supporté | Non supporté | Non supporté |
/participants/{name}/accounts | Voir les comptes et soldes d’un participant | Non supporté | Créer des comptes Hub | Non supporté |
/participants/{name}/accounts/{id} | Non supporté | Modifier les comptes d’un participant | Enregistrer un Funds In/Out pour le compte participant | Non supporté |
/participants/{name}/accounts/{id}/transfers/{transferId} | Non supporté | Non supporté | Enregistrer un transfert comme Funds In/Out pour un compte particpant | Non supporté |
/participants/{name}/initialPositionAndLimits | Non supporté | Non supporté | Ajouter limites et position initiales du participant | Non supporté |
/settlementModels | Voir tous les modèles de règlement | Non supporté | Créer un modèle de règlement | Non supporté |
/settlementModels/{name} | Voir un modèle de règlement par nom | Modifier (activer/désactiver) un modèle de règlement | Non supporté | Non supporté |
/transactions/{id} | Récupérer les détails d’une transaction par transferId | Non supporté | Non supporté | Non supporté |
# Ressource API /participants
Les services proposés par la ressource /participants sont principalement utilisés par l’opérateur du Hub pour consulter, créer et modifier les paramètres des participants, tels que la limite (Net Debit Cap), la position ou les endpoints configurés.
# GET /participants
Récupère les informations de tous les participants.
# Exemple de requête
curl 'http://<domain-where-hub-central-ledger-service-is-running>/participants'
# Exemple de réponse
REMARQUE : Dans l’exemple ci-dessous,
dev1-central-ledger.mojaloop.liveindique l’emplacement du service Central Ledger du Hub Mojaloop. Cet élément sera différent dans votre implémentation.
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"name": "greenbankfsp",
"id": "dev1-central-ledger.mojaloop.live/participants/greenbankfsp",
"created": "\"2021-03-04T14:20:17.000Z\"",
"isActive": 1,
"links": {
"self": "dev1-central-ledger.mojaloop.live/participants/greenbankfsp"
},
"accounts": [
{
"id": 15,
"ledgerAccountType": "POSITION",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 16,
"ledgerAccountType": "SETTLEMENT",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 21,
"ledgerAccountType": "INTERCHANGE_FEE_SETTLEMENT",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
}
]
},
{
"name": "Hub",
"id": "dev1-central-ledger.mojaloop.live/participants/Hub",
"created": "\"2021-03-04T13:37:25.000Z\"",
"isActive": 1,
"links": {
"self": "dev1-central-ledger.mojaloop.live/participants/Hub"
},
"accounts": [
{
"id": 1,
"ledgerAccountType": "HUB_MULTILATERAL_SETTLEMENT",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 2,
"ledgerAccountType": "HUB_RECONCILIATION",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
}
]
}
]
# Modèle de données de la réponse
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
id | oui | String | L'identifiant du participant sous la forme d'un nom de domaine pleinement qualifié, combiné avec le fspId du participant. |
created | oui | DateTime | Date et heure de création du participant. |
isActive | oui | Integer(1) | Un indicateur pour préciser si le participant est actif ou non. Les valeurs possibles sont 1 et 0. |
links | oui | Self | Liste de liens pour un service Web RESTful Hypermedia-Driven. |
accounts | oui | Accounts | Liste des comptes du grand livre configurés pour le participant. |
# POST /participants
Crée un participant dans le Hub.
# Exemple de requête
curl -X POST -H "Content-Type: application/json" \
-d '{"name": "payerfsp", "currency": "USD"}' \
http://<domaine-où-le-service-central-ledger-tourne>/participants
# Modèle de données de la requête
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
currency | oui | CurrencyEnum | La devise dans laquelle le participant effectuera des transactions. |
# Exemple de réponse
REMARQUE : Dans l'exemple ci-dessous,
dev1-central-ledger.mojaloop.liveindique l'emplacement du service Central Ledger du Hub Mojaloop. Ce détail peut être différent dans votre implémentation.
HTTP/1.1 200 OK
Content-Type: application/json
{
"name": "payerfsp",
"id": "dev1-central-ledger.mojaloop.live/participants/payerfsp",
"created": "\"2021-01-12T10:56:30.000Z\"",
"isActive": 0,
"links": {
"self": "dev1-central-ledger.mojaloop.live/participants/hub"
},
"accounts": [
{
"id": 30,
"ledgerAccountType": "POSITION",
"currency": "USD",
"isActive": 0,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 31,
"ledgerAccountType": "SETTLEMENT",
"currency": "USD",
"isActive": 0,
"createdDate": null,
"createdBy": "unknown"
}
]
}
# Modèle de données de la réponse
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
id | oui | String | L'identifiant du participant sous la forme d'un nom de domaine pleinement qualifié, combiné avec le fspId du participant. |
created | oui | DateTime | Date et heure de création du participant. |
isActive | oui | Integer(1) | Un indicateur pour préciser si le participant est actif ou non. Les valeurs possibles sont 1 et 0. |
links | oui | Self | Liste de liens pour un service Web RESTful Hypermedia-Driven. |
accounts | oui | Accounts | Liste des comptes du grand livre configurés pour le participant. |
# GET /participants/limits
Récupère les informations des limites pour tous les participants.
# Paramètres de requête
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
currency | non | CurrencyEnum | La devise de la limite. |
limit | non | String | Type de limite. |
# Exemple de requête
curl 'http://<domaine-où-le-service-central-ledger-tourne>/participants/limits'
# Exemple de réponse
REMARQUE : Dans l'exemple ci-dessous,
dev1-central-ledger.mojaloop.liveindique l'emplacement du service Central Ledger du Hub Mojaloop. Ce détail peut être différent dans votre implémentation.
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"name": "payerfsp",
"currency": "USD",
"limit": {
"type": "NET_DEBIT_CAP",
"value": 10000,
"alarmPercentage": 10
}
},
{
"name": "payeefsp",
"currency": "USD",
"limit": {
"type": "NET_DEBIT_CAP",
"value": 10000,
"alarmPercentage": 10
}
}
]
# Modèle de données de la réponse
Chaque limite dans la liste renvoyée est appliquée au nom du participant et à la devise spécifiés dans chaque objet.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
currency | oui | CurrencyEnum | La devise configurée pour le participant. |
limit | oui | ParticipantLimit | La limite configurée pour le participant. |
# GET /participants/{name}
Récupère les informations sur un participant donné.
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
# Exemple de requête
curl 'http://<domaine-où-le-service-central-ledger-tourne>/participants/payerfsp'
# Exemple de réponse
REMARQUE : Dans l'exemple ci-dessous,
dev1-central-ledger.mojaloop.liveindique l'emplacement du service Central Ledger du Hub Mojaloop. Ce détail peut être différent dans votre implémentation.
HTTP/1.1 200 OK
Content-Type: application/json
{
"name": "payerfsp",
"id": "dev1-central-ledger.mojaloop.live/participants/payerfsp",
"created": "\"2021-03-04T13:42:02.000Z\"",
"isActive": 1,
"links": {
"self": "dev1-central-ledger.mojaloop.live/participants/payerfsp"
},
"accounts": [
{
"id": 3,
"ledgerAccountType": "POSITION",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 4,
"ledgerAccountType": "SETTLEMENT",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 24,
"ledgerAccountType": "INTERCHANGE_FEE_SETTLEMENT",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
}
]
}
# Modèle de données de la réponse
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
id | oui | String | L'identifiant du participant sous la forme d'un nom de domaine pleinement qualifié, combiné avec le fspId du participant. |
created | oui | DateTime | Date et heure de création du participant. |
isActive | oui | Integer(1) | Un indicateur pour préciser si le participant est actif ou non. Les valeurs possibles sont 1 et 0. |
links | oui | Self | Liste de liens pour un service Web RESTful Hypermedia-Driven. |
accounts | oui | Accounts | Liste des comptes du grand livre configurés pour le participant. |
# PUT /participants/{name}
Met à jour les détails du participant (active/désactive un participant).
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
# Exemple de requête
curl -X PUT -H "Content-Type: application/json" \
-d '{"isActive": true}' \
http://<domaine-où-le-service-central-ledger-tourne>/participants/payerfsp
# Modèle de données de la requête
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
isActive | oui | Boolean | Un indicateur pour préciser si le participant est actif ou non. |
# Exemple de réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"name": "payerfsp",
"id": "dev1-central-ledger.mojaloop.live/participants/payerfsp",
"created": "\"2021-03-04T13:42:02.000Z\"",
"isActive": 1,
"links": {
"self": "dev1-central-ledger.mojaloop.live/participants/payerfsp"
},
"accounts": [
{
"id": 3,
"ledgerAccountType": "POSITION",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 4,
"ledgerAccountType": "SETTLEMENT",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
},
{
"id": 24,
"ledgerAccountType": "INTERCHANGE_FEE_SETTLEMENT",
"currency": "USD",
"isActive": 1,
"createdDate": null,
"createdBy": "unknown"
}
]
}
# Modèle de données de la réponse
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
id | oui | String | L'identifiant du participant sous la forme d'un nom de domaine pleinement qualifié, combiné avec le fspId du participant. |
created | oui | DateTime | Date et heure de création du participant. |
isActive | oui | Integer(1) | Un indicateur pour préciser si le participant est actif ou non. Les valeurs possibles sont 1 et 0. |
links | oui | Self | Liste de liens pour un service Web RESTful Hypermedia-Driven. |
accounts | oui | Accounts | Liste des comptes du grand livre configurés pour le participant. |
# GET /participants/{name}/endpoints
Récupère les informations sur les endpoints configurés pour un participant donné.
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
# Exemple de requête
curl 'http://<domaine-où-le-service-central-ledger-tourne>/participants/payerfsp/endpoints'
# Exemple de réponse
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"type": "FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_PUT",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/participants/{{partyIdType}}/{{partyIdentifier}}/{{partySubIdOrType}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_PUT_ERROR",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/participants/{{partyIdType}}/{{partyIdentifier}}/{{partySubIdOrType}}/error"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTICIPANT_SUB_ID_DELETE",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/participants/{{partyIdType}}/{{partyIdentifier}}/{{partySubIdOrType}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_GET",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/parties/{{partyIdType}}/{{partyIdentifier}}/{{partySubIdOrType}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_PUT",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/parties/{{partyIdType}}/{{partyIdentifier}}/{{partySubIdOrType}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTIES_SUB_ID_PUT_ERROR",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/parties/{{partyIdType}}/{{partyIdentifier}}/{{partySubIdOrType}}/error"
},
{
"type": "FSPIOP_CALLBACK_URL_AUTHORIZATIONS",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTICIPANT_PUT",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/participants/{{partyIdType}}/{{partyIdentifier}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTICIPANT_PUT_ERROR",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/participants/{{partyIdType}}/{{partyIdentifier}}/error"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/participants/{{requestId}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTICIPANT_BATCH_PUT_ERROR",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/participants/{{requestId}}/error"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTIES_GET",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/parties/{{partyIdType}}/{{partyIdentifier}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTIES_PUT",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/parties/{{partyIdType}}/{{partyIdentifier}}"
},
{
"type": "FSPIOP_CALLBACK_URL_PARTIES_PUT_ERROR",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/parties/{{partyIdType}}/{{partyIdentifier}}/error"
},
{
"type": "FSPIOP_CALLBACK_URL_QUOTES",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000"
},
{
"type": "FSPIOP_CALLBACK_URL_TRX_REQ_SERVICE",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000"
},
{
"type": "FSPIOP_CALLBACK_URL_TRANSFER_POST",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/transfers"
},
{
"type": "FSPIOP_CALLBACK_URL_TRANSFER_PUT",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/transfers/{{transferId}}"
},
{
"type": "FSPIOP_CALLBACK_URL_TRANSFER_ERROR",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/transfers/{{transferId}}/error"
},
{
"type": "FSPIOP_CALLBACK_URL_BULK_TRANSFER_POST",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/bulkTransfers"
},
{
"type": "FSPIOP_CALLBACK_URL_BULK_TRANSFER_PUT",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/bulkTransfers/{{id}}"
},
{
"type": "FSPIOP_CALLBACK_URL_BULK_TRANSFER_ERROR",
"value": "http://dev1-sim-payerfsp-scheme-adapter:4000/bulkTransfers/{{id}}/error"
},
{
"type": "NET_DEBIT_CAP_THRESHOLD_BREACH_EMAIL",
"value": "some.email@gmail.com"
},
{
"type": "NET_DEBIT_CAP_ADJUSTMENT_EMAIL",
"value": "some.email@gmail.com"
},
{
"type": "SETTLEMENT_TRANSFER_POSITION_CHANGE_EMAIL",
"value": "some.email@gmail.com"
}
]
# Modèle de données de la réponse
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
type | oui | String | Type de endpoint. |
value | oui | String | Valeur du endpoint. |
# POST /participants/{name}/endpoints
Ajoute/met à jour des endpoints pour un participant donné.
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
# Exemple de requête
curl -X POST -H "Content-Type: application/json" \
-d '{"type": "NET_DEBIT_CAP_ADJUSTMENT_EMAIL", "value": "some.email@org.com"}'
http://<domaine-où-le-service-central-ledger-tourne>/participants/payerfsp/endpoints
# Modèle de données de la requête
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
type | oui | String | Type de endpoint. |
value | oui | String | Valeur du endpoint. |
# Exemple de réponse
HTTP/1.1 201 Created
Content-Type: application/json
# GET /participants/{name}/limits
Récupère les informations de limite pour un participant donné.
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
# Paramètres de requête
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
currency | non | CurrencyEnum | La devise de la limite. |
limit | non | String | Type de limite. |
# Exemple de requête
curl 'http://<domaine-où-le-service-central-ledger-tourne>/participants/payerfsp/limits'
# Exemple de réponse
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"currency": "USD",
"limit": {
"type": "NET_DEBIT_CAP",
"value": 10000,
"alarmPercentage": 10
}
}
]
# Modèle de données de la réponse
Chaque limite dans la liste renvoyée est appliquée au nom du participant et à la devise spécifiés dans chaque objet.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
currency | oui | CurrencyEnum | La devise configurée pour le participant. |
limit | oui | ParticipantLimit | La limite configurée pour le participant. |
# PUT /participants/{name}/limits
Ajuste les limites pour un participant donné.
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
# Exemple de requête
curl -X PUT -H "Content-Type: application/json" \
-d '{ \
"currency": "USD", \
"limit": { \
"type": NET_DEBIT_CAP", \
"value": 10000, \
"alarmPercentage": 20
} \
}' \
http://<domaine-où-le-service-central-ledger-tourne>/participants/payerfsp/limits
# Modèle de données de la requête
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
currency | oui | CurrencyEnum | La devise configurée pour le participant. |
limit | oui | ParticipantLimit | La limite configurée pour le participant. |
# Exemple de réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"currency": "USD",
"limit": {
"type": "NET_DEBIT_CAP",
"value": 10000,
"alarmPercentage": 20
}
}
# Modèle de données de la réponse
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
currency | oui | CurrencyEnum | La devise configurée pour le participant. |
limit | oui | ParticipantLimit | La limite configurée pour le participant. |
# GET /participants/{name}/positions
Récupère la position d'un participant donné.
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
# Paramètres de requête
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
currency | non | CurrencyEnum | La devise de la limite. |
# Exemple de requête
curl 'http://<domaine-où-le-service-central-ledger-tourne>/participants/payerfsp/positions'
# Exemple de réponse
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"currency": "USD",
"value": 150,
"changedDate": "2021-05-10T08:01:38.000Z"
}
]
# Modèle de données de la réponse
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
currency | oui | CurrencyEnum | La devise configurée pour le participant. |
value | oui | Number | Valeur de la position. |
changedDate | oui | DateTime | Date et heure du dernier changement de la position. |
# GET /participants/{name}/accounts
Récupère les comptes et soldes d’un participant donné.
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
# Exemple de requête
curl 'http://<domaine-où-le-service-central-ledger-tourne>/participants/payerfsp/accounts'
# Exemple de réponse
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"id": 3,
"ledgerAccountType": "POSITION",
"currency": "USD",
"isActive": 1,
"value": 150,
"reservedValue": 0,
"changedDate": "2021-05-10T08:01:38.000Z"
},
{
"id": 4,
"ledgerAccountType": "SETTLEMENT",
"currency": "USD",
"isActive": 1,
"value": -165000,
"reservedValue": 0,
"changedDate": "2021-05-10T14:27:02.000Z"
},
{
"id": 24,
"ledgerAccountType": "INTERCHANGE_FEE_SETTLEMENT",
"currency": "USD",
"isActive": 1,
"value": 0,
"reservedValue": 0,
"changedDate": "2021-03-30T12:23:06.000Z"
}
]
# Modèle de données de la réponse
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
id | oui | Integer | Identifiant du compte du grand livre. |
ledgerAccountType | oui | String | Type de compte du grand livre. |
currency | oui | CurrencyEnum | Devise du compte du grand livre. |
isActive | oui | Integer(1) | Indique si le compte du grand livre est actif ou non. Les valeurs possibles sont 1 et 0. |
value | oui | Number | Solde du compte. |
reservedValue | oui | Number | Valeur réservée dans le compte. |
changedDate | oui | DateTime | Date et heure du dernier changement du compte du grand livre. |
# POST /participants/{name}/accounts
Crée des comptes dans le Hub.
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
# Exemple de requête
curl -X POST -H "Content-Type: application/json" \
-d '{"currency": "USD", "type": "HUB_MULTILATERAL_SETTLEMENT"}' \
http://<domaine-où-le-service-central-ledger-tourne>/participants/payerfsp/accounts
# Modèle de données de la requête
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
currency | oui | CurrencyEnum | La devise du compte du grand livre du participant. |
type | oui | String | Type de compte du grand livre. |
# Exemple de réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"name": "hub",
"id": "dev1-central-ledger.mojaloop.live/participants/hub",
"created": "2021-01-12T10:56:30.000Z",
"isActive": 0,
"links": {
"self": "dev1-central-ledger.mojaloop.live/participants/hub"
},
"accounts": [
{
"id": 1,
"ledgerAccountType": "HUB_MULTILATERAL_SETTLEMENT",
"currency": "USD",
"isActive": 0,
"createdDate": "2021-01-12T10:56:30.000Z",
"createdBy": "unknown"
}
]
}
# Modèle de données de la réponse
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String | Le nom du participant. |
id | oui | String | L'identifiant du participant sous la forme d'un nom de domaine pleinement qualifié, combiné avec le fspId du participant. |
created | oui | DateTime | Date et heure de création du participant. |
isActive | oui | Integer(1) | Un indicateur pour préciser si le participant est actif ou non. Les valeurs possibles sont 1 et 0. |
links | oui | Self | Liste de liens pour un service Web RESTful Hypermedia-Driven. |
accounts | oui | Accounts | Liste des comptes du grand livre configurés pour le participant. |
# POST /participants/{name}/accounts/{id}
Enregistre des opérations de dépôt ou de retrait sur un compte participant.
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
id | oui | Integer | Identifiant du compte. |
# Exemple de requête
curl -X POST -H "Content-Type: application/json" \
-d '{ \
"transferId": "bfd38d14-893f-469d-a6ca-a312a0223949", \
"externalReference": "660616", \
"action": "recordFundsIn", \
"reason": "settlement", \
"amount": { \
"amount": "5000", \
"currency": "USD" \
}, \
"extensionList": { \
"extension": [ \
{ \
"key": "scheme", \
"value": "abc" \
} \
] \
} \
}' \
http://<domaine-où-le-service-central-ledger-tourne>/participants/payerfsp/accounts/2
# Modèle de données de la requête
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
transferId | oui | UUID | Identifiant du transfert. |
externalReference | oui | String | Référence à toute donnée externe, telle qu'un identifiant de la banque de règlement. |
action | oui | Enum | L'action effectuée sur les fonds. Les valeurs possibles sont : recordFundsIn et recordFundsOutPrepareReserve. |
reason | oui | String | Raison de l'opération de funds in ou funds out. |
amount | oui | Money | Montant de l'opération (FundsIn ou FundsOut). |
extensionList | non | ExtensionList | Détails supplémentaires. |
# Exemple de réponse
HTTP/1.1 202 Accepted
# PUT /participants/{name}/accounts/{id}
Met à jour un compte de participant. Actuellement, seule la modification du champ isActive est prise en charge.
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
id | oui | Integer | Identifiant du compte. |
# Exemple de requête
curl -X PUT -H "Content-Type: application/json" \
-d '{"isActive": true}' \
http://<domaine-où-le-service-central-ledger-tourne>/participants/payerfsp/account/2
# Modèle de données de la requête
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
isActive | oui | Boolean | Indique si le compte du participant est actif ou non. |
# Exemple de réponse
HTTP/1.1 200 OK
# PUT /participants/{name}/accounts/{id}/transfers/{transferId}
Enregistre un transfert en tant qu’opération de fonds entrants ou sortants pour un compte de participant.
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
id | oui | Integer | Identifiant du compte. |
transferId | oui | UUID | Identifiant du transfert. |
# Exemple de requête
curl -X PUT -H "Content-Type: application/json" \
-d '{"action": "recordFundsOutCommit", "reason": "fix"}' \
http://<domaine-où-le-service-central-ledger-tourne>/participants/payerfsp/account/2/transfers/bfd38d14-893f-469d-a6ca-a312a0223949
# Modèle de données de la requête
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
action | oui | Enum | Action de funds out effectuée. Valeurs possibles : recordFundsOutCommit et recordFundsOutAbort. |
reason | oui | String | Raison de l'opération de FundsOut. |
# Exemple de réponse
HTTP/1.1 202 Accepted
# POST /participants/{name}/initialPositionAndLimits
Ajoute des limites initiales et une position pour un participant particulier.
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String(2..30) | Le nom du participant. |
# Exemple de requête
curl -X POST -H "Content-Type: application/json" \
-d '{ \
"currency": "USD", \
"limit": { \
"type": "NET_DEBIT_CAP", \
"value": "10000" \
}, \
"initialPosition": 0 \
}' \
http://<domaine-où-le-service-central-ledger-tourne>/participants/payerfsp/initialPositionAndLimits
# Modèle de données de la requête
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
currency | oui | CurrencyEnum | Devise du participant. |
limit | oui | ParticipantLimit | Limite configurée pour le participant. |
initialPosition | non | Number | Position initiale. |
# Exemple de réponse
HTTP/1.1 201 Created
# Ressource API /settlementModels
Les services fournis par la ressource /settlementModels sont utilisés par l’opérateur du Hub pour créer, mettre à jour et consulter des modèles de règlement.
# GET /settlementModels
Récupère les informations de tous les modèles de règlement.
# Exemple de requête
curl 'http://<domaine-où-le-service-central-ledger-tourne>/settlementModels'
# Exemple de réponse
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"settlementModelId": 1,
"name": "DEFERREDNETUSD",
"isActive": true,
"settlementGranularity": "NET",
"settlementInterchange": "MULTILATERAL",
"settlementDelay": "DEFERRED",
"currency": "USD",
"requireLiquidityCheck": true,
"ledgerAccountTypeId": "POSITION",
"autoPositionReset": true
},
{
"settlementModelId": 4,
"name": "DEFERREDNETEUR",
"isActive": true,
"settlementGranularity": "NET",
"settlementInterchange": "MULTILATERAL",
"settlementDelay": "DEFERRED",
"currency": "EUR",
"requireLiquidityCheck": true,
"ledgerAccountTypeId": "SETTLEMENT",
"autoPositionReset": true
}
]
# Modèle de données de la réponse
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
settlementModelId | oui | Integer | Identifiant du modèle de règlement. |
name | oui | String | Nom du modèle de règlement. |
isActive | oui | Boolean | Indique si le modèle de règlement est actif ou non. |
settlementGranularity | oui | String | Spécifie si les transferts sont réglés un par un ou en lot. Valeurs possibles : GROSS : Règlement exécuté après chaque transfert complété, c'est-à-dire, il y a une opération de règlement pour chaque transaction. NET : Un groupe de transferts est réglé ensemble dans une seule opération de règlement, chaque participant réglant la somme nette de tous les transferts sur une période donnée. |
settlementInterchange | oui | String | Spécifie le type d’arrangement de règlement entre parties. Valeurs possibles : BILATERAL : Chaque participant règle ses obligations avec les autres séparément, et le schéma n’est pas partie au règlement. MULTILATERAL : Chaque participant règle avec le schéma le solde net de ses obligations, au lieu de régler séparément avec chaque partie. |
settlementDelay | oui | String | Spécifie si le règlement a lieu immédiatement après qu’un transfert est terminé ou avec un délai. Valeurs possibles : IMMEDIATE : Le règlement a lieu immédiatement après la fin d’un transfert. DEFERRED : Le règlement est géré par l’opérateur du Hub à la demande ou selon un calendrier. |
currency | oui | CurrencyEnum | Devise configurée pour le modèle de règlement. |
requireLiquidityCheck | oui | Boolean | Indique si le modèle de règlement nécessite une vérification de liquidité ou non. |
ledgerAccountTypeId | oui | String | Type de compte de grand livre. Valeurs possibles : INTERCHANGE_FEE : Suit les frais d’interchange appliqués aux transferts.POSITION : Suit les montants dus ou à recevoir pour un DFSP.SETTLEMENT : Compte bancaire de règlement du DFSP reflété dans le Hub. Sert de compte de rapprochement et reflète le mouvement des fonds réels. |
autoPositionReset | oui | Boolean | Indique si le modèle de règlement nécessite la remise à zéro automatique de la position ou non. |
# POST /settlementModels
Crée un modèle de règlement.
# Exemple de requête
curl -X POST -H "Content-Type: application/json" \
-d '{ \
"name": "DEFERREDNET", \
"settlementGranularity": "NET", \
"settlementInterchange": "MULTILATERAL", \
"settlementDelay": "DEFERRED", \
"requireLiquidityCheck": true, \
"ledgerAccountType": "POSITION", \
"autoPositionReset": true \
}' \
http://<domaine-où-le-service-central-ledger-tourne>/settlementModels
# Modèle de données de la requête
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String | Nom du modèle de règlement. |
settlementGranularity | oui | String | Spécifie si les transferts sont réglés un par un ou en lot. Valeurs possibles : GROSS : Règlement exécuté après chaque transfert complété, c'est-à-dire, il y a une opération de règlement pour chaque transaction. NET : Un groupe de transferts est réglé ensemble dans une seule opération de règlement, chaque participant réglant la somme nette de tous les transferts sur une période donnée. |
settlementInterchange | oui | String | Spécifie le type d’arrangement de règlement entre parties. Valeurs possibles : BILATERAL : Chaque participant règle ses obligations avec les autres séparément, et le schéma n’est pas partie au règlement. MULTILATERAL : Chaque participant règle avec le schéma le solde net de ses obligations, au lieu de régler séparément avec chaque partie. |
settlementDelay | oui | String | Spécifie si le règlement a lieu immédiatement après qu’un transfert est terminé ou avec un délai. Valeurs possibles : IMMEDIATE : Le règlement a lieu immédiatement après la fin d’un transfert. DEFERRED : Le règlement est géré par l’opérateur du Hub à la demande ou selon un calendrier. |
currency | oui | CurrencyEnum | Devise configurée pour le modèle de règlement. |
requireLiquidityCheck | oui | Boolean | Indique si le modèle de règlement nécessite une vérification de liquidité ou non. |
ledgerAccountTypeId | oui | String | Type de compte de grand livre. Valeurs possibles : INTERCHANGE_FEE : Suit les frais d’interchange appliqués aux transferts.POSITION : Suit les montants dus ou à recevoir pour un DFSP.SETTLEMENT : Compte bancaire de règlement du DFSP reflété dans le Hub. Sert de compte de rapprochement et reflète le mouvement des fonds réels. |
settlementAccountType | oui | String | Un type spécial de compte de grand livre dans lequel les règlements doivent être versés. Valeurs possibles : SETTLEMENT : Un compte de règlement pour la valeur principale des transferts (c’est-à-dire, le montant que le payeur souhaite verser au bénéficiaire). INTERCHANGE_FEE_SETTLEMENT : Un compte de règlement pour les frais liés aux transferts. |
autoPositionReset | oui | Boolean | Indique si le modèle de règlement nécessite la remise à zéro automatique de la position ou non. |
# Exemple de réponse
HTTP/1.1 201 Created
# GET /settlementModels/{name}
Récupère des informations sur un modèle de règlement particulier.
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String | Le nom du modèle de règlement. |
# Exemple de requête
curl 'http://<domaine-où-le-service-central-ledger-tourne>/settlementModels/DEFERREDNET'
# Exemple de réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"settlementModelId": 1,
"name": "DEFERREDNET",
"isActive": true,
"settlementGranularity": "NET",
"settlementInterchange": "MULTILATERAL",
"settlementDelay": "DEFERRED",
"currency": "USD",
"requireLiquidityCheck": true,
"ledgerAccountTypeId": "POSITION",
"autoPositionReset": true
}
# Modèle de données de la réponse
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
settlementModelId | oui | Integer | Identifiant du modèle de règlement. |
name | oui | String | Nom du modèle de règlement. |
isActive | oui | Boolean | Indique si le modèle de règlement est actif ou non. |
settlementGranularity | oui | String | Spécifie si les transferts sont réglés un par un ou en lot. Valeurs possibles : GROSS : Le règlement est exécuté après chaque transfert complété, c'est-à-dire qu'il y a une opération de règlement pour chaque transaction. NET : Un groupe de transferts est réglé ensemble dans une seule opération de règlement, chaque participant réglant la somme nette de tous les transferts sur une période donnée. |
settlementInterchange | oui | String | Spécifie le type d’arrangement de règlement entre parties. Valeurs possibles : BILATERAL : Chaque participant règle séparément ses obligations avec les autres, et le schéma n'est pas partie au règlement. MULTILATERAL : Chaque participant règle avec le schéma le solde net de ses obligations, au lieu de régler séparément avec chaque partie. |
settlementDelay | oui | String | Spécifie si le règlement a lieu immédiatement après la fin d’un transfert ou avec un délai. Valeurs possibles : IMMEDIATE : Le règlement a lieu immédiatement après la fin d’un transfert. DEFERRED : Le règlement est géré par l’opérateur du Hub à la demande ou selon un calendrier. |
currency | oui | CurrencyEnum | Devise configurée pour le modèle de règlement. |
requireLiquidityCheck | oui | Boolean | Indique si le modèle de règlement nécessite une vérification de liquidité. |
ledgerAccountTypeId | oui | String | Type de compte de grand livre. Valeurs possibles : INTERCHANGE_FEE : Suit les frais d’interchange appliqués aux transferts.POSITION : Suit combien un DFSP doit ou est dû. SETTLEMENT : Le compte bancaire de règlement du DFSP reflété dans le Hub. Sert de compte de rapprochement et reflète le mouvement des fonds réels. |
autoPositionReset | oui | Boolean | Indique si le modèle de règlement nécessite la remise à zéro automatique de la position. |
# PUT /settlementModels/{name}
Met à jour un modèle de règlement (active/désactive un modèle de règlement).
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String | Le nom du modèle de règlement. |
# Exemple de requête
curl -X PUT -H "Content-Type: application/json" \
-d '{"isActive": true}' \
http://<domaine-où-le-service-central-ledger-tourne>/settlementModels/DEFERREDNET
# Modèle de données de la requête
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
isActive | oui | Boolean | Indique si le modèle de règlement est actif ou non. |
# Exemple de réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"settlementModelId": 1,
"name": "DEFERREDNET",
"isActive": true,
"settlementGranularity": "NET",
"settlementInterchange": "MULTILATERAL",
"settlementDelay": "DEFERRED",
"currency": "USD",
"requireLiquidityCheck": true,
"ledgerAccountTypeId": "POSITION",
"autoPositionReset": true
}
# Modèle de données de la réponse
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
settlementModelId | oui | Integer | Identifiant du modèle de règlement. |
name | oui | String | Nom du modèle de règlement. |
isActive | oui | Boolean | Indique si le modèle de règlement est actif ou non. |
settlementGranularity | oui | String | Spécifie si les transferts sont réglés un par un ou en lot. Valeurs possibles : GROSS : Le règlement est exécuté après chaque transfert complété, c'est-à-dire qu'il y a une opération de règlement pour chaque transaction. NET : Un groupe de transferts est réglé ensemble dans une seule opération de règlement, chaque participant réglant la somme nette de tous les transferts sur une période donnée. |
settlementInterchange | oui | String | Spécifie le type d’arrangement de règlement entre parties. Valeurs possibles : BILATERAL : Chaque participant règle séparément ses obligations avec les autres, et le schéma n'est pas partie au règlement. MULTILATERAL : Chaque participant règle avec le schéma le solde net de ses obligations, au lieu de régler séparément avec chaque partie. |
settlementDelay | oui | String | Spécifie si le règlement a lieu immédiatement après la fin d’un transfert ou avec un délai. Valeurs possibles : IMMEDIATE : Le règlement a lieu immédiatement après la fin d’un transfert. DEFERRED : Le règlement est géré par l’opérateur du Hub à la demande ou selon un calendrier. |
currency | oui | CurrencyEnum | Devise configurée pour le modèle de règlement. |
requireLiquidityCheck | oui | Boolean | Indique si le modèle de règlement nécessite une vérification de liquidité. |
ledgerAccountTypeId | oui | String | Type de compte de grand livre. Valeurs possibles : INTERCHANGE_FEE : Suit les frais d’interchange appliqués aux transferts.POSITION : Suit combien un DFSP doit ou est dû. SETTLEMENT : Le compte bancaire de règlement du DFSP reflété dans le Hub. Sert de compte de rapprochement et reflète le mouvement des fonds réels. |
autoPositionReset | oui | Boolean | Indique si le modèle de règlement nécessite la remise à zéro automatique de la position. |
# Ressource API /transactions
Les services proposés par la ressource /transactions sont utilisés par l'Opérateur du Hub pour récupérer les détails des transferts.
# GET /transactions/{id}
Récupère des informations sur une transaction particulière.
# Paramètres de chemin
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
id | oui | UUID | Identifiant du transfert. |
# Exemple de requête
curl 'http://<domaine-où-le-service-central-ledger-tourne>/transactions/85feac2f-39b2-491b-817e-4a03203d4f14'
# Exemple de réponse
HTTP/1.1 200 OK
Content-Type: application/json
{
"quoteId": "7c23e80c-d078-4077-8263-2c047876fcf6",
"transactionId": "85feac2f-39b2-491b-817e-4a03203d4f14",
"transactionRequestId": "a8323bc6-c228-4df2-ae82-e5a997baf898",
"payee": {
"partyIdInfo": {
"partyIdType": "MSISDN",
"partyIdentifier": "123456789",
"fspId": "MobileMoneyAbc"
},
"name": "John Doe",
"personalInfo": {
"complexName": {
"firstName": "John",
"middleName": "William",
"lastName": "Doe"
},
"dateOfBirth": "1966-06-16"
}
},
"payer": {
"partyIdInfo": {
"partyIdType": "MSISDN",
"partyIdentifier": "987654321",
"fspId": "MobileMoneyXyz"
},
"name": "Jane Doe",
"personalInfo": {
"complexName": {
"firstName": "Mary",
"middleName": "Jane",
"lastName": "Doe"
},
"dateOfBirth": "1975-05-15"
}
},
"amount": {
"currency": "USD",
"amount": "50"
},
"transactionType": {
"scenario": "DEPOSIT",
"initiator": "PAYER",
"initiatorType": "CONSUMER"
}
}
# Modèle de données de la réponse
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
quoteId | UUID | Identifiant du devis (quote). | |
transactionId | UUID | Identifiant de la transaction. | |
transactionRequestId | String | Identifie une éventuelle demande de transaction envoyée précédemment. | |
payee | Party | Détails du bénéficiaire. | |
payer | Party | Détails du payeur. | |
amount | Money | Montant de la transaction. | |
transactionType | TransactionType | Détails sur le type de transaction. | |
note | String | Un mémo qui sera attaché à la transaction. | |
extensionList | ExtensionList | Détails additionnels. |
# Modèles de données utilisés par l'API
# Format
Pour les détails sur les formats utilisés pour les types de données élémentaires de l’API, voir la section Element Data Type Formats dans la définition de l’API Mojaloop FSPIOP.
# Formats des types de données élémentaires
Cette section définit les types de données élémentaires utilisés par l'API.
# Amount
Pour plus de détails, voir la section Amount dans la définition de l’API Mojaloop FSPIOP.
# Boolean
Une valeur "true" ou "false".
# DateTime
Pour plus de détails, voir la section DateTime dans la définition de l’API Mojaloop FSPIOP.
# Enum
Pour plus de détails, voir la section Enum dans la définition de l’API Mojaloop FSPIOP.
# Integer
Pour plus de détails, voir la section Integer dans la définition de l’API Mojaloop FSPIOP.
# Number
Le type de données API Number est un nombre décimal en base 10 de précision arbitraire.
# String
Pour plus de détails, voir la section String dans la définition de l’API Mojaloop FSPIOP.
# UUID
Pour plus de détails, voir la section UUID dans la définition de l’API Mojaloop FSPIOP.
# Définitions des éléments
Cette section définit les types d’éléments utilisés par l’API.
# IsActive
Modèle de données pour l’élément IsActive.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
isActive | oui | Integer(1) | Indique si un compte de grand livre ou un participant est actif. Valeurs possibles : 1 (actif) et 0 (inactif). |
# IsActiveBoolean
Modèle de données pour l’élément IsActiveBoolean.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
isActive | oui | Boolean | Indique si un compte / participant / modèle de règlement est actif ou non. |
# CurrencyEnum
Pour plus de détails, voir la section Currency enum dans la définition de l’API Mojaloop FSPIOP.
# RequireLiquidityCheck
Modèle de données pour l'élément RequireLiquidityCheck.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
requireLiquidityCheck | oui | Boolean | Indique si un modèle de règlement nécessite une vérification de liquidité. |
# Self
Modèle de données pour l’élément Self.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
self | oui | String | Nom de domaine pleinement qualifié combiné avec le fspId du participant. |
# SettlementDelay
Modèle de données pour l’élément SettlementDelay.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
settlementDelay | oui | Enum de String | Spécifie si le règlement a lieu immédiatement après la fin d’un transfert ou avec un délai. Valeurs autorisées : IMMEDIATE : Le règlement a lieu immédiatement après la fin d’un transfert. DEFERRED : Le règlement est géré par l’opérateur du Hub à la demande ou selon un calendrier. |
# SettlementGranularity
Modèle de données pour l’élément SettlementGranularity.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
settlementGranularity | oui | Enum de String | Spécifie si les transferts sont réglés un par un ou en lot. Valeurs autorisées : GROSS : Le règlement est exécuté après chaque transfert complété, c'est-à-dire, il y a une opération de règlement pour chaque transaction. NET : Un groupe de transferts est réglé ensemble dans une seule opération, chaque participant réglant la somme nette de tous les transferts sur une période donnée. |
# SettlementInterchange
Modèle de données pour l’élément SettlementInterchange.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
settlementInterchange | oui | Enum de String | Spécifie le type d’arrangement de règlement entre parties. Valeurs autorisées : BILATERAL : Chaque participant règle séparément ses obligations avec les autres, et le schéma n'est pas partie au règlement. MULTILATERAL : Chaque participant règle avec le schéma le solde net de ses obligations, au lieu de régler séparément avec chaque partie. |
# Types complexes
# Accounts
La liste des comptes de grand livre configurés pour le participant. Pour plus de détails sur l'objet compte, voir IndividualAccount.
# ErrorInformation
Pour plus de détails, voir la section ErrorInformation dans la définition de l’API Mojaloop FSPIOP.
# ErrorInformationResponse
Modèle de données pour le type complexe contenant un élément optionnel ErrorInformation utilisé avec les réponses 4xx et 5xx.
# Extension
Pour plus de détails, voir la section Extension dans la définition de l’API Mojaloop FSPIOP.
# ExtensionList
Pour plus de détails, voir la section ExtensionList dans la définition de l’API Mojaloop FSPIOP.
# IndividualAccount
Modèle de données pour le type complexe IndividualAccount.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
id | oui | Integer | Identifiant du compte de grand livre. |
ledgerAccountType | oui | String | Type du compte de grand livre (par exemple, POSITION). |
currency | oui | CurrencyEnum | La devise du compte. |
isActive | oui | Integer(1) | Indique si le compte de grand livre est actif ou non. Valeurs possibles : 1 et 0. |
createdDate | oui | DateTime | Date et heure de création du compte. |
createdBy | oui | String | L'entité qui a créé le compte. |
# Limit
Modèle de données pour le type complexe Limit.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
type | oui | String | Type de limite. |
value | oui | un nombre positif | Valeur de la limite. |
# Money
Pour plus de détails, voir la section Money dans la définition de l’API Mojaloop FSPIOP.
# Participant
Modèle de données pour le type complexe Participant.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
name | oui | String | Nom du participant. |
id | oui | String | Identifiant du participant sous la forme d’un nom de domaine pleinement qualifié combiné avec le fspId du participant. |
created | oui | DateTime | Date et heure de création du participant. |
isActive | oui | Integer(1) | Indique si le participant est actif ou non. Valeurs possibles : 1 et 0. |
links | oui | Self | Liste de liens pour un service RESTful Hypermedia-Driven. |
accounts | oui | Accounts | Liste des comptes de grand livre configurés pour le participant. |
# ParticipantFunds
Modèle de données pour le type complexe ParticipantFunds.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
transferId | oui | UUID | Identifiant du transfert. |
externalReference | oui | String | Référence à toute donnée externe, telle qu’un identifiant provenant de la banque de règlement. |
action | oui | Enum | Action effectuée sur les fonds. Valeurs possibles : recordFundsIn et recordFundsOutPrepareReserve. |
reason | oui | String | Raison de l’action FundsIn ou FundsOut. |
amount | oui | Money | Montant FundsIn ou FundsOut. |
extensionList | non | ExtensionList | Détails additionnels. |
# ParticipantLimit
Modèle de données pour le type complexe ParticipantLimit.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
type | oui | String | Type de limite de participant (par exemple, NET_DEBIT_CAP). |
value | oui | Number | Valeur de la limite définie pour le participant. |
alarmPercentage | oui | Number | Une notification d'alarme est déclenchée lorsqu’un pourcentage prédéfini de la limite est atteint. La spécification d’alarmPercentage est optionnelle. Si elle n’est pas spécifiée, la valeur par défaut est 10 %, exprimé par 10. |
# ParticipantsNameEndpointsObject
Modèle de données pour le type complexe ParticipantsNameEndpointsObject.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
type | oui | String | Type d'endpoint. |
value | oui | String | Valeur de l'endpoint. |
# ParticipantsNameLimitsObject
Modèle de données pour le type complexe ParticipantsNameLimitsObject.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
currency | oui | CurrencyEnum | Devise configurée pour le participant. |
limit | oui | ParticipantLimit | Limite configurée pour le participant. |
# Party
Pour plus de détails, voir la section Party dans la définition de l’API Mojaloop FSPIOP.
# PartyComplexName
Pour plus de détails, voir la section PartyComplexName dans la définition de l’API Mojaloop FSPIOP.
# PartyIdInfo
Pour plus de détails, voir la section PartyIdInfo dans la définition de l’API Mojaloop FSPIOP.
# PartyPersonalInfo
Pour plus de détails, voir la section PartyPersonalInfo dans la définition de l’API Mojaloop FSPIOP.
# RecordFundsOut
Modèle de données pour le type complexe RecordFundsOut.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
action | oui | Enum | Action FundsOut effectuée. Valeurs possibles : recordFundsOutCommit et recordFundsOutAbort. |
reason | oui | String | Raison de l’action FundsOut. |
# Refund
Modèle de données pour le type complexe Refund.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
originalTransactionId | oui | UUID | Référence à l’ID de transaction d’origine à rembourser. |
refundReason | non | String(1-128) | Texte libre indiquant le motif du remboursement. |
# SettlementModelsObject
Modèle de données pour le type complexe SettlementModelsObject.
| Nom | Obligatoire | Type | Description |
|---|---|---|---|
settlementModelId | oui | Integer | Identifiant du modèle de règlement. |
name | oui | String | Nom du modèle de règlement. |
isActive | oui | Boolean | Indique si le modèle de règlement est actif ou non. |
settlementGranularity | oui | String | Spécifie si les transferts sont réglés un par un ou en lot. Valeurs possibles : GROSS : Le règlement est exécuté après chaque transfert complété, c'est-à-dire qu'il y a une opération de règlement pour chaque transaction. NET : Un groupe de transferts est réglé ensemble dans une seule opération, chaque participant réglant la somme nette de tous les transferts sur une période donnée. |
settlementInterchange | oui | String | Spécifie le type d’arrangement de règlement entre parties. Valeurs possibles : BILATERAL : Chaque participant règle séparément ses obligations avec les autres, et le schéma n'est pas partie au règlement. MULTILATERAL : Chaque participant règle avec le schéma le solde net de ses obligations, au lieu de régler séparément avec chaque partie. |
settlementDelay | oui | String | Spécifie si le règlement a lieu immédiatement après la fin d’un transfert ou avec un délai. Valeurs possibles : IMMEDIATE : Le règlement a lieu immédiatement après la fin d’un transfert. DEFERRED : Le règlement est géré par l’opérateur du Hub à la demande ou selon un calendrier. |
currency | oui | CurrencyEnum | Devise configurée pour le modèle de règlement. |
requireLiquidityCheck | oui | Boolean | Indique si le modèle de règlement nécessite une vérification de liquidité. |
ledgerAccountTypeId | oui | String | Type de compte de grand livre. Valeurs possibles : INTERCHANGE_FEE : Suit les frais d’interchange appliqués aux transferts.POSITION : Suit combien un DFSP doit ou est dû. SETTLEMENT : Le compte bancaire de règlement du DFSP reflété dans le Hub. Sert de compte de rapprochement et reflète le mouvement des fonds réels. |
autoPositionReset | oui | Boolean | Indique si le modèle de règlement nécessite la remise à zéro automatique de la position. |
# TransactionType
Pour plus de détails, voir la section TransactionType dans la définition de l’API Mojaloop FSPIOP.
