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

# Soumettre une demande d'enrôlement loyalty

> Backend : `LoyalityRequest` (typo du contrat conservée). Tous les champs sont optionnels.




## OpenAPI

````yaml /openapi.json post /api/v1/requests
openapi: 3.0.3
info:
  title: Registre des APIs GIM Gar Sud
  version: 1.0.9-sdk0.3.0
  description: >
    APIs exposées par GIM Gar Sud pour permettre aux Contributeurs Tiers de
    Service Financier (CTSF) de consommer les services de GIMpay : enrôlement
    d'usagers et d'instruments de paiement, opérations financières, OTP,
    consentements, documents d'identité et fidélité.
  contact:
    name: Support intégrateurs GimPay
    email: support@it-centrex.com
servers:
  - url: https://egimgarsud.gimpayapp.com
    variables:
      environnement:
        default: egimgarsud
        description: Sous-domaine de l'environnement (sandbox ou production).
security:
  - bearerAuth: []
tags:
  - name: Authentification
  - name: Wallets
    description: Instruments de paiement (cartes, comptes bancaires, mobile wallets)
  - name: Opérations
  - name: OTP
  - name: Usagers
  - name: Bénéficiaires
  - name: MMP favorites
  - name: Pays
  - name: Contributeurs
  - name: Mini-places de marché
  - name: Services
  - name: Terminaux
  - name: Documents
  - name: Consentements & demandes
paths:
  /api/v1/requests:
    post:
      tags:
        - Consentements & demandes
      summary: Soumettre une demande d'enrôlement loyalty
      description: >
        Backend : `LoyalityRequest` (typo du contrat conservée). Tous les champs
        sont optionnels.
      operationId: submitLoyaltyRequest
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoyalityRequest'
      responses:
        '200':
          description: Demande créée.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ApiEnvelope'
                  - type: object
                    properties:
                      body:
                        $ref: '#/components/schemas/DemandeResponse'
        '400':
          $ref: '#/components/responses/Error400'
        '401':
          $ref: '#/components/responses/Error401'
        '500':
          $ref: '#/components/responses/Error500'
components:
  schemas:
    LoyalityRequest:
      type: object
      description: Typo du contrat conservée. Tous les champs optionnels.
      properties:
        requestInfo:
          $ref: '#/components/schemas/RequestInfo'
        tokenRequestorId:
          type: string
        cipheredCardInformation:
          type: string
        enrollmentInformation:
          $ref: '#/components/schemas/EnrollmentInformation'
    ApiEnvelope:
      type: object
      description: Enveloppe standard de toutes les réponses (sauf auth).
      properties:
        message:
          type: string
          description: Message technique décrivant le résultat de l'appel.
        status:
          type: integer
          description: Code de statut HTTP de la réponse.
        timestamp:
          type: string
          format: date-time
          description: Horodatage de la réponse.
    DemandeResponse:
      type: object
      properties:
        id:
          type: integer
          description: Identifiant technique de la demande.
        reference:
          type: string
          description: Référence unique de la demande.
        dateHeureCreation:
          type: string
          format: date-time
          description: Date et heure de création de la demande.
        commentaire:
          type: string
          description: Commentaire libre associé à la demande.
        typeDemande:
          $ref: '#/components/schemas/TypeDemande'
        statutDemande:
          $ref: '#/components/schemas/StatutDemande'
        raisonResiliation:
          type: string
          description: Raison de résiliation, pour une demande de type RESILIATION.
        refContributeurMarchantInitiateur:
          type: string
          description: Référence du contributeur marchand à l'origine de la demande.
        refUtilisateur:
          type: string
          description: Référence GIMpay de l'utilisateur concerné par la demande.
        motifRejetDemande:
          type: string
          description: Motif de rejet, si la demande a été refusée.
        montantRecharge:
          type: number
          format: double
          description: >-
            Montant du rechargement, pour une demande de type
            RECHARGEMENT_DE_COMPTE.
        refRechargeCompte:
          type: string
          description: Référence du rechargement de compte associé.
        urlFichierRecharge:
          type: string
          description: URL du justificatif de rechargement.
    RequestInfo:
      type: object
      properties:
        exchangeId:
          type: string
        id:
          type: string
          description: Identifiant technique de la demande.
        recipient:
          type: string
        sender:
          type: string
        ts:
          type: string
    EnrollmentInformation:
      type: object
      properties:
        merchant:
          $ref: '#/components/schemas/Merchant'
    TypeDemande:
      type: string
      enum:
        - OUVERTURE_DE_COMPTE
        - RESILIATION
        - RECHARGEMENT_DE_COMPTE
    StatutDemande:
      type: string
      enum:
        - INITIEE
        - VALIDEE
        - REFUSEE
    ErrorEnvelope:
      allOf:
        - $ref: '#/components/schemas/ApiEnvelope'
        - type: object
          properties:
            body:
              nullable: true
    Merchant:
      type: object
      properties:
        countryCode:
          type: string
        id:
          type: string
          description: Identifiant technique de la demande.
        name:
          type: string
        city:
          type: string
        categoryCode:
          type: string
  responses:
    Error400:
      description: Requête invalide (champ manquant ou mal formé).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    Error401:
      description: Non autorisé — jeton manquant, invalide ou expiré.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    Error500:
      description: Erreur interne du serveur.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Jeton émis par `POST /api/v1/auth/token`.

````