> ## Documentation Index
> Fetch the complete documentation index at: https://sandbox.it-centrex.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Couverture des APIs

> Intégrez GIMpay dans votre application mobile avec le SDK Flutter, distribué via onePub.

Cette page recense les endpoints intégrés dans le SDK Flutter GimPay, avec leur méthode d'accès côté façade `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](https://sandbox.it-centrex.com/glossary/enumerations.md)**
>
> Le détail des objets du domaine et de toutes les énumérations du contrat.

> **[Démarrage rapide](https://sandbox.it-centrex.com/sdks/quickstart.md)**
>
> Suivez un parcours d'intégration type.

> **[Gestion des erreurs](https://sandbox.it-centrex.com/sdks/error-handling.md)**
>
> Exceptions typées et bonnes pratiques.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.