Ce document a pour objectif de présenter les API exposées par l’application CYNOD pour la gestion des fonctionnalités internes mais aussi de celles pour la mise en place de services à valeur ajouté de nos clients via les partenaires.
La sécurité de l’interface est principalement basée sur l’authentification oAuth2 combinée au protocole https qui est le canal de communication par défaut des échanges.
D’autres outils internes pourront être mis en place pour renforcer la sécurité tels que le filtrage d’adresse IP, les autorisations de ports et le VPN.
Les informations suivantes sont mises à la disposition des partenaires autorisés à envoyer des requêtes:
Ces informations permettront aux partenaires de pouvoir s’authentifier.
L’authentification est gérée via le protocole oAuth2.
Une fois connectés via l’API d’authentification, vous aurez un access_token qui vous permettra d’accéder aux autres ressources. Les accès se feront en https.
Pour les partenaires qui le désirent, l'authentification peut être réalisée en Basic Authentication que nous ne recommandons pas.
Le format général des APIs respecte les principes ci-dessous :
JSON.statuts http, et un code d’erreur interne selon les principe ci-dessous :En cas de succès
http status : 200 - OK
{
"success": "true",
"code": "success code",
"message":"success message to the application user",
"data": "response data if necessary"
}
En cas d'erreur fonctionnelle liée à la requête du client
{
"success": "false",
"code": "error code message to the app user",
"debugMessage": "verbose message for debug purpose",
"moreInfo": "null"
}
En cas d'erreur d'authentification
http status : 401 - Unauthorized
En cas d'erreur système lié à un problème serveur
http status : 500 - Internal Server Error
{
"success": "false"
"code": "9999",
"message": "message to the app user",
"debugMessage": "verbose message for debug purpose"
}
La description des données échangées est au format swagger. Voir en annexe les différents codes d’erreur.
Cette section référence les API CYNOD qui sont mises à la disposition des partenaires pour construire des services digitaux au service de tous.
| Type | GET |
|---|---|
| URI | /get-solde-carte |
| Description | envoi d’une requête pour la consultation du solde d’une carte |
Paramètres :
| Nom | Description |
|---|---|
| numeroCarte | Numéro de la carte du client |
| walletId | Numéro de téléphone du client |
| clientId | Identifiant du client |
Header :
| Content-type | application/json |
|---|---|
| Authorization | Bearer {{ACCESS_TOKEN}} |
Request body :
Aucun
Réponses :
| Code http | 200 |
|---|---|
| Description | Success |
Exemple modèle payload json
{
"success": true,
"code": 200,
"message": "Sauf omission* de notre part votre nouveau solde est de 142000 FCFA ",
"data": [
{
"numeroCarte": "7019800100009569",
"soldeOnline": 142000.0,
"dateSolde": "23-08-2021 10:11:42"
}
]
}
| Code http | 400 |
|---|---|
| Description | Bad request |
Exemple modèle payload json
{
"success": false,
"code": "412",
"message": "Utilisateur inexistant ou invalide",
"debugMessage": "Utilisateur inexistant ou invalide",
"moreInfo": null
}
| Type | GET |
|---|---|
| URI | /check-card-validity |
| Description | envoi d’une requête pour la validité d’une carte |
Paramètres :
| Nom | Description |
|---|---|
| numeroCarte | Numéro de la carte du client |
| walletId | Numéro de téléphone du client |
| clientId | Identifiant du client |
Header :
| Content-type | application/json |
|---|---|
| Authorization | Bearer {{ACCESS_TOKEN}} |
Request body :
Aucun
Réponses :
| Code http | 200 |
|---|---|
| Description | Success |
Exemple modèle payload json
{
"success": true,
"code": 200,
"message": "Votre carte est valide et valable jusqu'au 18/07/2029",
"data": [
{
"numeroCarte": "7019800100009569",
"finValidite": "18/07/2029",
"nom": "xxx",
"prenom": "xxx",
"email": "",
"telephone": "",
"numeroPiece": "",
"dateNaissance": ""
}
]
}
| Code http | 400 |
|---|---|
| Description | Bad request |
Exemple modèle payload json
{
"success": false,
"code": "405",
"message": "Paramètere numeroCarte manquant ou invalide",
"debugMessage": null,
"moreInfo": null
}