APIs Disponibles
Apache Fineract — Core Banking API
Gestion des clients, comptes d'épargne, crédits, comptabilité générale, reporting réglementaire.
HR & Paie API
Gestion des employés, bulletins de paie, congés, absences, avances, stagiaires, prestataires, portail employé.
Keycloak — IAM & Authentification
Gestion des utilisateurs, rôles, authentification OIDC/OAuth2, SSO. Realm : mufedeb
Apache Superset — BI & Reporting
Tableaux de bord interactifs, rapports BCEAO, analyse de portefeuille de crédits, requêtes SQL.
Mobile Money Gateway
Passerelle de paiement mobile : dépôts, retraits, transferts via Orange Money et Moov Money.
GED — Gestion Électronique des Documents
Archivage numérique avec OCR automatique (français). Gestion des pièces KYC, contrats, PV, courriers réglementaires. Propulsé par Paperless-ngx.
Guide d'Authentification
Toutes les APIs sont protégées par Keycloak (OpenID Connect).
Le client OIDC est yelen-web-app dans le realm mufedeb.
| Paramètre | Valeur |
|---|---|
| Token Endpoint | https://auth.yelen.io/realms/mufedeb/protocol/openid-connect/token |
| Authorization Endpoint | https://auth.yelen.io/realms/mufedeb/protocol/openid-connect/auth |
| Client ID | yelen-web-app |
| Grant Type | password (service) ou authorization_code (SPA) |
| Realm | mufedeb |
Obtenir un token d'accès
Envoyez vos identifiants au endpoint token de Keycloak pour recevoir un JWT.
Inclure le token dans les requêtes
Ajoutez le header Authorization: Bearer <token> à chaque appel API.
Rafraîchir le token
Utilisez le refresh_token pour obtenir un nouveau token sans re-saisir les identifiants.
Exemples d'Appels API (curl)
1. Obtenir un token Keycloak
# Authentification - obtenir un JWT curl -X POST https://auth.yelen.io/realms/mufedeb/protocol/openid-connect/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=password" \ -d "client_id=yelen-web-app" \ -d "username=VOTRE_USER" \ -d "password=VOTRE_MDP" # Réponse : { "access_token": "eyJ...", "refresh_token": "eyJ...", "expires_in": 300 }
2. Lister les employés (HR API)
# GET /api/v1/employees - Liste paginée des employés curl -X GET https://hr.yelen.io/api/v1/employees?page=1&size=20 \ -H "Authorization: Bearer eyJ..." # Filtrer par agence curl -X GET https://hr.yelen.io/api/v1/employees?agence_id=1&statut=actif \ -H "Authorization: Bearer eyJ..."
3. Générer un bulletin de paie (HR API)
# POST /api/v1/payroll/generate - Générer les bulletins du mois curl -X POST https://hr.yelen.io/api/v1/payroll/generate \ -H "Authorization: Bearer eyJ..." \ -H "Content-Type: application/json" \ -d '{"mois": 4, "annee": 2026}'
4. Créer un client Fineract (Core Banking)
# POST /api/v1/clients - Créer un nouveau client curl -X POST https://api.yelen.io/api/v1/clients \ -H "Authorization: Basic VOTRE_AUTH_FINERACT" \ -H "Fineract-Platform-TenantId: default" \ -H "Content-Type: application/json" \ -d '{ "officeId": 1, "firstname": "Amidou", "lastname": "OUEDRAOGO", "active": true, "locale": "fr", "dateFormat": "dd MMMM yyyy", "activationDate": "01 avril 2026" }'
5. Rafraîchir un token expiré
# Rafraîchir le token avec le refresh_token curl -X POST https://auth.yelen.io/realms/mufedeb/protocol/openid-connect/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=refresh_token" \ -d "client_id=yelen-web-app" \ -d "refresh_token=eyJ..."
Endpoints HR & Paie (référence rapide)
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /api/v1/employees | Liste des employés |
| POST | /api/v1/employees | Créer un employé |
| GET | /api/v1/employees/{id} | Détail employé |
| PUT | /api/v1/employees/{id} | Modifier un employé |
| POST | /api/v1/payroll/generate | Générer les bulletins |
| GET | /api/v1/payroll/payslips | Liste des bulletins |
| GET | /api/v1/payroll/payslip/{id}/pdf | Télécharger PDF |
| GET | /api/v1/leaves | Liste des congés |
| POST | /api/v1/leaves | Demander un congé |
| GET | /api/v1/absences | Liste des absences |
| GET | /api/v1/advances | Liste des avances |
| GET | /api/v1/interns | Liste des stagiaires |
| GET | /api/v1/contractors | Liste des prestataires |
| GET | /api/v1/hr/dashboard | Tableau de bord RH |
| GET | /api/v1/hr-payroll/health | Health check |
Documentation complète interactive : Swagger UI | ReDoc
API GED / Paperless-ngx (référence rapide)
Base URL : https://ged.yelen.io/api/ —
Authentification : Authorization: Token <token>
| Méthode | Endpoint | Description |
|---|---|---|
| POST | /api/token/ | Obtenir un token d'authentification |
| GET | /api/documents/ | Liste des documents |
| POST | /api/documents/post_document/ | Uploader un document |
| GET | /api/documents/{id}/download/ | Télécharger un document |
| GET | /api/documents/{id}/preview/ | Prévisualiser un document |
| GET | /api/tags/ | Liste des tags |
| GET | /api/correspondents/ | Liste des correspondants |
| GET | /api/document_types/ | Liste des types de documents |
Exemple : uploader un document
# Obtenir un token curl -X POST https://ged.yelen.io/api/token/ \ -H "Content-Type: application/json" \ -d '{"username":"yelen-admin","password":"..."}' # Uploader un fichier avec tag et correspondant curl -X POST https://ged.yelen.io/api/documents/post_document/ \ -H "Authorization: Token eyJ..." \ -F "[email protected]" \ -F "title=Contrat Credit 2026-001" \ -F "correspondent=1" \ -F "document_type=2" \ -F "tags=2"
Documentation complète : API Paperless-ngx | Interface GED
API Tontine \& Doni-Doni
| M\éthode | Endpoint | Description |
|---|---|---|
| GET | /api/v1/tontines/groups | Liste des groupes tontine |
| POST | /api/v1/tontines/groups | Cr\éer un groupe |
| GET | /api/v1/tontines/groups/{id} | D\étail d'un groupe (membres, cycles) |
| POST | /api/v1/tontines/groups/{id}/members | Ajouter un membre |
| POST | /api/v1/tontines/groups/{id}/cycles | D\émarrer un cycle |
| POST | /api/v1/tontines/contributions | Enregistrer une cotisation |
| POST | /api/v1/tontines/cycles/{id}/distribute | Distribuer au b\én\éficiaire |
| GET | /api/v1/tontines/groups/{id}/report | Rapport du groupe |
| Doni-Doni (Collecte journali\ère) | ||
| GET | /api/v1/doni-doni/carnets | Liste des carnets |
| POST | /api/v1/doni-doni/carnets | Cr\éer un carnet |
| GET | /api/v1/doni-doni/carnets/{id} | D\étail carnet (collectes, versements) |
| POST | /api/v1/doni-doni/collectes | Enregistrer une collecte |
| POST | /api/v1/doni-doni/collectes/batch | Sync offline (lot de collectes) |
| POST | /api/v1/doni-doni/versements | Verser au compte \épargne |
| GET | /api/v1/doni-doni/agent/{id}/today | Collectes du jour (vue agent) |
Documentation Swagger : API Tontine | Interface Web
Limites & Sécurité
| Service | Limite | Fenêtre |
|---|---|---|
| APIs (Fineract, HR, Superset, Webapp, Tontine) | 100 requêtes | par minute |
| Authentification (Keycloak) | 20 requêtes | par minute |
En cas de dépassement, l'API retourne HTTP 429 Too Many Requests.
Les headers X-RateLimit-Remaining-Minute et RateLimit-Reset
indiquent le quota restant.