Gimpay.
Authentification
| Méthode | Endpoint | Façade |
|---|---|---|
| POST | /api/v1/auth/token | interne (automatique + refresh sur 401) |
Wallets (instruments de paiement)
| Méthode | Endpoint | Façade |
|---|---|---|
| POST | /api/v1/wallets/card | Gimpay.enrollCard |
| POST | /api/v1/wallets/bank-account | Gimpay.enrollAccount |
| POST | /api/v1/wallets/mobile-wallet | Gimpay.enrollMobileWallet |
| GET | /api/v1/wallets/{referenceWallet} | Gimpay.getWallet (→ PaymentInstrument, détail complet ; typo contrat msidn → msisdn normalisée dans le modèle) |
| PUT | /api/v1/wallets/{referenceWallet}/lock | Gimpay.lockWallet |
| PUT | /api/v1/wallets/{referenceWallet}/unlock | Gimpay.unlockWallet |
| PUT | /api/v1/wallets/{referenceWallet}/unenroll | Gimpay.unenrollWallet |
| GET | /api/v1/wallets/{referenceWallet}/balance | Gimpay.getBalance (body = double) |
| GET | /api/v1/wallets/{referenceWallet}/movements | Gimpay.getMovements |
| GET | /api/v1/wallets?indicatif=&phone= | Gimpay.getWalletsByPhone |
| GET | /api/v1/wallets/{referenceWallet}/operations | Gimpay.getWalletOperations |
| GET | /api/v1/wallets/{referenceWallet}/authorization | Gimpay.checkWalletAuthorization (body = bool) |
| GET | /api/v1/wallets/type | Gimpay.getWalletTypes (body = liste de codes → List<TypeInstrumentPaiement>) |
Opérations
| Méthode | Endpoint | Façade |
|---|---|---|
| POST | /api/v1/operations | Gimpay.executeOperation (header requestId obligatoire depuis le 2026-07-28 — clé anti-doublon unique par opération, fournie par l’intégrateur ; un requestId déjà utilisé est rejeté par un 409 → ConflictException, ne rejouez pas l’opération) |
| PUT | /api/v1/operations/{referenceOperation}/cancel | Gimpay.cancelOperation (body = null) |
Usagers
| Méthode | Endpoint | Façade |
|---|---|---|
| POST | /api/v1/users | Gimpay.enrollClient |
| GET | /api/v1/users/{referenceUsager} | Gimpay.getUser (→ Usager ; statutKyc, statutUsager, situationMatrimoniale, statutVerification, sexe typés en enums, repli null) |
| GET | /api/v1/users/{referenceUsager}/wallets | Gimpay.getUserWallets |
| GET | /api/v1/users/{referenceUsager}/operations | Gimpay.getUserOperations |
| GET | /api/v1/users/{referenceUsager}/authorization | Gimpay.checkUserAuthorization (body = bool) |
| GET | /api/v1/users/{referenceUsager}/mmps | Gimpay.getFavoriteMmps |
| POST | /api/v1/users/{referenceUsager}/mmps/{referenceMmp} | Gimpay.addFavoriteMmp (201 Created, sans enveloppe) |
| DELETE | /api/v1/users/{referenceUsager}/mmps/{referenceMmp} | Gimpay.removeFavoriteMmp (204 No Content, sans enveloppe) |
| GET | /api/v1/users/{referenceUsager}/beneficiaries | Gimpay.getBeneficiaries |
| GET | /api/v1/users/{referenceUsager}/beneficiaries/{referenceBeneficiary} | Gimpay.getBeneficiary (endpoint hors collection) |
| POST | /api/v1/users/{referenceUsager}/beneficiaries | Gimpay.addBeneficiary (body = null) |
| DELETE | /api/v1/users/{referenceUsager}/beneficiaries/{referenceBeneficiary} | Gimpay.removeBeneficiary (204 No Content, sans enveloppe) |
OTP, vérifications & terminaux
| Méthode | Endpoint | Façade |
|---|---|---|
| POST | /api/v1/otp/debit | Gimpay.generateDebitOtp (body = bool) |
| POST | /api/v1/otp/confirm | Gimpay.confirmOtp (body = bool ; 5 champs obligatoires, numero 8-10 caractères, indicatif 1-3) |
| POST | /api/v1/check-existence | Gimpay.checkWalletExistence (body = bool ; les 4 champs sont obligatoires) |
| GET | /api/v1/terminals/{serialNumber}/authorization | Gimpay.checkTerminalAuthorization (body = bool) |
| GET | /api/v1/users/{referenceUsager}/terminals | Gimpay.getUserTerminals (→ List<TerminalDetail> ; profilTerminal/statutTerminal typés en enums, repli null) |
| POST | /api/v1/terminals | Gimpay.addTerminal (Terminal + refUsager → TerminalDetail ; 201) |
Référentiels (pays, MMP, services, contributeurs)
| Méthode | Endpoint | Façade |
|---|---|---|
| GET | /api/v1/countries | Gimpay.getCountries |
| GET | /api/v1/countries/{codeIso} | Gimpay.getCountry (même structure que la liste ; endpoint repassé de la v2 à la v1 le 2026-07-29, désormais aligné avec le contrat de référence documenté) |
| GET | /api/v1/mmps/{refMmp}/serviceTypes/{refServiceType}/services | Gimpay.getMmpServiceByType (retourne un Service ; les 2 query params sont obligatoires) |
| GET | /api/v1/contributors/{ref}/serviceTypes/{refServiceType}/contributors?typeInstrument= | Gimpay.getContributorsByServiceType (retourne List<ContributorSummary> ; filtre typeInstrument obligatoire, champ codePays mappé) |
| GET | /api/v1/contributors?typeInstrument=&codeISO= | Gimpay.getContributors |
| GET | /api/v1/contributors/{referenceContributor}/wallets/{identifiant} | Gimpay.getWalletDetails |
| GET | /api/v1/countries/{codeIso}/mmps | Gimpay.getMmpsByCountry |
| GET | /api/v1/countries/{codeIso}/mmps/{referenceMmp}/contributors | Gimpay.getContributorsByCountryAndMmp |
| GET | /api/v1/mmps/{referenceMmp}/services | Gimpay.getMmpServices |
| GET | /api/v1/mmps/{referenceMmp}/contributors/{referenceContributor}/services | Gimpay.getContributorServices |
| GET | /api/v1/services/{referenceService}/fees?amount= | Gimpay.calculateFees |
| GET | /api/v2/contributors/{referenceContributor}/transparent-mmp | Gimpay.getTransparentMmp (le contrat v2 remplace la v1, confirmé le 2026-07-06) |
Documents d’identité
| Méthode | Endpoint | Façade |
|---|---|---|
| POST | /api/v1/users/{referenceUsager}/documents | Gimpay.createDocument (recto obligatoire, verso optionnel, aucun contrôle de format côté backend) |
| PUT | /api/v1/documents | Gimpay.updateDocument (images non modifiables) |
| PUT | /api/v1/documents/{reference}/unenroll | Gimpay.unenrollDocument (body = null) |
| GET | /api/v1/users/{referenceUsager}/documents | Gimpay.getUserDocuments |
| GET | /api/v1/documents/type?country= | Gimpay.getDocumentTypes |
| GET | /api/v1/documents/{reference} | Gimpay.getDocument |
| GET | /api/v1/documents/{reference}/base64 | Gimpay.getDocumentBase64 (body = chaîne brute) |
Consentements & demandes d’achat
Lot ajouté le 2026-07-14, complété le 2026-07-15.| Méthode | Endpoint | Façade |
|---|---|---|
| GET | /api/v1/contributors/{refContributor}/demande-achat | Gimpay.getContributorPurchaseRequests (→ List<DemandeAchat> ; sans corps de requête) |
| POST | /api/v1/demande-achat | Gimpay.submitPurchaseRequest (DemandeAchatRequest, tous champs optionnels ; body = null) |
| POST | /api/v1/requests | Gimpay.submitLoyaltyRequest (LoyalityRequest → Demande ; tous champs optionnels) |
| PUT | /api/v1/prorogations/{refProrogation}/validation | Gimpay.validateProrogation (sans corps ; body = null) |
| PUT | /api/v1/prorogations/{refProrogation}/rejection | Gimpay.rejectProrogation (MotifConsentementRequest ; body = null) |
| GET | /api/v1/consents/{refConsent}/prorogations | Gimpay.getConsentProrogations (→ List<ProrogationConsentement> avec consentement imbriqué) |
| PUT | /api/v1/consents/{refConsent}/acceptance | Gimpay.acceptConsent (TerminalRequest + refUsager optionnel ; body = null) |
| PUT | /api/v1/consents/{refConsent}/rejection | Gimpay.rejectConsent (idem acceptance) |
| GET | /api/v1/with-consents/{refConsent}/wallets-payments | Gimpay.getConsentPaymentWallets (InstrumentPaiement = structure de UserWallet) |
| DELETE | /api/v1/consents/{refConsent}/revocation | Gimpay.revokeConsent (MotifConsentementRequest ; body = null) |
| GET | /api/v1/users/{refUser}/consents | Gimpay.getUserConsents (→ List<Consentement> ; typo contrat refConditonUtilisationGen normalisée dans le modèle) |
| POST | /api/v1/general-consents | Gimpay.submitGeneralConsent (refs + Terminal → Consentement) |
| GET | /api/v1/contributors/{refContributor}/conditions-of-use | Gimpay.getConditionsOfUse (→ String base64) |
Étapes suivantes
Glossaire
Le détail des objets du domaine et de toutes les énumérations du contrat.
Démarrage rapide
Suivez un parcours d’intégration type.
Gestion des erreurs
Exceptions typées et bonnes pratiques.