Files
unionflow-server-api/docs/openapi.yaml

16415 lines
403 KiB
YAML

---
openapi: 3.0.3
info:
title: UnionFlow Server API
description: API REST pour la gestion d'union avec authentification Keycloak
version: 1.0.0
servers:
- url: https://api.lions.dev/unionflow
tags:
- name: Adhésions
description: Gestion des demandes d'adhésion des membres
- name: Admin - Association
description: Associer un utilisateur à une organisation (SUPER_ADMIN)
- name: Admin - Utilisateurs
description: Gestion des utilisateurs Keycloak (SUPER_ADMIN)
- name: Alertes LCB-FT
description: Gestion des alertes Lutte Contre le Blanchiment
- name: Analytics
description: APIs pour les analytics et métriques
- name: Audit
description: Gestion des logs d'audit
- name: Comptabilité
description: "Gestion comptable : comptes, journaux et écritures comptables"
- name: Compte Adhérent
description: Vue financière unifiée du membre connecté
- name: Configuration
description: Gestion de la configuration système
- name: Cotisations
description: Gestion des cotisations des membres
- name: Dashboard
description: APIs pour la gestion du dashboard
- name: Dashboard Membre
description: API pour le tableau de bord personnel des membres
- name: Demandes d'aide
description: Gestion des demandes d'aide solidarité
- name: Documents
description: "Gestion documentaire : documents et pièces jointes"
- name: Export
description: API d'export des données
- name: Favoris
description: Gestion des favoris utilisateur
- name: Feedback
description: Commentaires et suggestions utilisateur
- name: Finance - Approvals
description: Gestion des approbations de transactions financières
- name: Finance - Budgets
description: Gestion des budgets organisationnels
- name: Finance - Workflow
description: Statistiques et audits des workflows financiers
- name: Logs & Monitoring
description: Gestion des logs système et monitoring
- name: Membres
description: API de gestion des membres
- name: Messagerie
description: "Messagerie instantanée — conversations, messages, notes vocales"
- name: Notifications
description: "Gestion des notifications : envoi, templates et notifications groupé\
es"
- name: Organisations
description: Gestion des organisations
- name: Paiements
description: Paiements de cotisations — Wave Checkout et manuel
- name: Paramètres LCB-FT
description: Gestion des seuils anti-blanchiment (LCB-FT)
- name: Propositions d'aide
description: Gestion des propositions d'aide solidarité
- name: Préférences
description: API de gestion des préférences utilisateur
- name: Rôles
description: Gestion des rôles et permissions
- name: Sauvegardes
description: Gestion des sauvegardes et restaurations
- name: Status
description: API de statut du serveur
- name: Suggestions
description: Gestion des suggestions utilisateur
- name: Système
description: Gestion de la configuration système
- name: Tickets
description: Gestion des tickets support
- name: Types de référence
description: Gestion des données de référence paramétrables
- name: Versements
description: Versements de cotisations — Wave et manuel
- name: Wave Mobile Money
description: Gestion des comptes et transactions Wave Mobile Money
- name: Événements
description: Gestion des événements de l'union
paths:
/api/adhesions:
get:
tags:
- Adhésions
summary: Lister toutes les adhésions
description: Récupère la liste paginée de toutes les adhésions
parameters:
- name: page
in: query
description: Numéro de page (0-based)
schema:
format: int32
default: 0
minimum: 0
type: integer
example: 0
- name: size
in: query
description: Taille de la page
schema:
format: int32
default: 20
minimum: 1
type: integer
example: 20
responses:
"200":
description: Liste des adhésions récupérée avec succès
content:
application/json:
schema:
$ref: "#/components/schemas/AdhesionResponse"
"400":
description: Paramètres de pagination invalides
"500":
description: Erreur interne du serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
post:
tags:
- Adhésions
summary: Créer une nouvelle adhésion
description: Crée une nouvelle demande d'adhésion pour un membre
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateAdhesionRequest"
responses:
"201":
description: Adhésion créée avec succès
content:
application/json:
schema:
$ref: "#/components/schemas/AdhesionResponse"
"400":
description: Données invalides
"404":
description: Membre ou organisation non trouvé
"500":
description: Erreur interne du serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/adhesions/en-attente:
get:
tags:
- Adhésions
summary: Lister les adhésions en attente
description: Récupère toutes les adhésions en attente d'approbation
parameters:
- name: page
in: query
description: Numéro de page
schema:
format: int32
default: 0
minimum: 0
type: integer
example: 0
- name: size
in: query
description: Taille de la page
schema:
format: int32
default: 20
minimum: 1
type: integer
example: 20
responses:
"200":
description: Liste des adhésions en attente
"500":
description: Erreur interne du serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/adhesions/membre/{membreId}:
get:
tags:
- Adhésions
summary: Lister les adhésions d'un membre
description: Récupère toutes les adhésions d'un membre spécifique
parameters:
- name: membreId
in: path
description: Identifiant du membre
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: page
in: query
description: Numéro de page
schema:
format: int32
default: 0
minimum: 0
type: integer
example: 0
- name: size
in: query
description: Taille de la page
schema:
format: int32
default: 20
minimum: 1
type: integer
example: 20
responses:
"200":
description: Liste des adhésions du membre
"404":
description: Membre non trouvé
"500":
description: Erreur interne du serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/adhesions/organisation/{organisationId}:
get:
tags:
- Adhésions
summary: Lister les adhésions d'une organisation
description: Récupère toutes les adhésions d'une organisation spécifique
parameters:
- name: organisationId
in: path
description: Identifiant de l'organisation
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: page
in: query
description: Numéro de page
schema:
format: int32
default: 0
minimum: 0
type: integer
example: 0
- name: size
in: query
description: Taille de la page
schema:
format: int32
default: 20
minimum: 1
type: integer
example: 20
responses:
"200":
description: Liste des adhésions de l'organisation
"404":
description: Organisation non trouvée
"500":
description: Erreur interne du serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/adhesions/reference/{numeroReference}:
get:
tags:
- Adhésions
summary: Récupérer une adhésion par référence
description: Récupère une adhésion par son numéro de référence unique
parameters:
- name: numeroReference
in: path
description: Numéro de référence de l'adhésion
required: true
schema:
type: string
responses:
"200":
description: Adhésion trouvée
"404":
description: Adhésion non trouvée
"500":
description: Erreur interne du serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/adhesions/stats:
get:
tags:
- Adhésions
summary: Statistiques des adhésions
description: Récupère les statistiques globales des adhésions
responses:
"200":
description: Statistiques récupérées avec succès
"500":
description: Erreur interne du serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/adhesions/statut/{statut}:
get:
tags:
- Adhésions
summary: Lister les adhésions par statut
description: Récupère toutes les adhésions ayant un statut spécifique
parameters:
- name: statut
in: path
description: Statut des adhésions
required: true
schema:
type: string
example: EN_ATTENTE
- name: page
in: query
description: Numéro de page
schema:
format: int32
default: 0
minimum: 0
type: integer
example: 0
- name: size
in: query
description: Taille de la page
schema:
format: int32
default: 20
minimum: 1
type: integer
example: 20
responses:
"200":
description: Liste des adhésions avec le statut spécifié
"400":
description: Statut invalide
"500":
description: Erreur interne du serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/adhesions/{id}:
get:
tags:
- Adhésions
summary: Récupérer une adhésion par ID
description: Récupère les détails d'une adhésion spécifique
parameters:
- name: id
in: path
description: Identifiant de l'adhésion
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Adhésion trouvée
content:
application/json:
schema:
$ref: "#/components/schemas/AdhesionResponse"
"404":
description: Adhésion non trouvée
"500":
description: Erreur interne du serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
put:
tags:
- Adhésions
summary: Mettre à jour une adhésion
description: Met à jour les données d'une adhésion existante
parameters:
- name: id
in: path
description: Identifiant de l'adhésion
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateAdhesionRequest"
responses:
"200":
description: Adhésion mise à jour avec succès
"400":
description: Données invalides
"404":
description: Adhésion non trouvée
"500":
description: Erreur interne du serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
delete:
tags:
- Adhésions
summary: Supprimer une adhésion
description: Supprime (annule) une adhésion
parameters:
- name: id
in: path
description: Identifiant de l'adhésion
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"204":
description: Adhésion supprimée avec succès
"404":
description: Adhésion non trouvée
"409":
description: Impossible de supprimer une adhésion payée
"500":
description: Erreur interne du serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
/api/adhesions/{id}/approuver:
post:
tags:
- Adhésions
summary: Approuver une adhésion
description: Approuve une demande d'adhésion en attente
parameters:
- name: id
in: path
description: Identifiant de l'adhésion
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: approuvePar
in: query
description: Nom de l'utilisateur qui approuve
schema:
type: string
responses:
"200":
description: Adhésion approuvée avec succès
"400":
description: L'adhésion ne peut pas être approuvée
"404":
description: Adhésion non trouvée
"500":
description: Erreur interne du serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- ADMIN_ORGANISATION
/api/adhesions/{id}/paiement:
post:
tags:
- Adhésions
summary: Enregistrer un paiement
description: Enregistre un paiement pour une adhésion approuvée
parameters:
- name: id
in: path
description: Identifiant de l'adhésion
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: methodePaiement
in: query
description: Méthode de paiement
schema:
type: string
- name: montantPaye
in: query
description: Montant payé
required: true
schema:
type: number
- name: referencePaiement
in: query
description: Référence du paiement
schema:
type: string
responses:
"200":
description: Paiement enregistré avec succès
"400":
description: L'adhésion ne peut pas recevoir de paiement
"404":
description: Adhésion non trouvée
"500":
description: Erreur interne du serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/adhesions/{id}/rejeter:
post:
tags:
- Adhésions
summary: Rejeter une adhésion
description: Rejette une demande d'adhésion en attente
parameters:
- name: id
in: path
description: Identifiant de l'adhésion
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: motifRejet
in: query
description: Motif du rejet
required: true
schema:
type: string
responses:
"200":
description: Adhésion rejetée avec succès
"400":
description: L'adhésion ne peut pas être rejetée
"404":
description: Adhésion non trouvée
"500":
description: Erreur interne du serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- ADMIN_ORGANISATION
/api/admin/associer-organisation:
post:
tags:
- Admin - Association
summary: Associer un compte à une organisation
description: "En tant que super admin, associe l'utilisateur (email) à une organisation.\
\ Si aucun Membre n'existe pour cet email, une fiche minimale est créée. L'utilisateur\
\ pourra alors voir cette organisation dans « Mes organisations »."
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AssocierOrganisationRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
/api/admin/users:
get:
tags:
- Admin - Utilisateurs
summary: Lister les utilisateurs
description: Liste paginée des utilisateurs du realm
parameters:
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: search
in: query
schema:
type: string
- name: size
in: query
schema:
format: int32
default: 20
type: integer
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
post:
tags:
- Admin - Utilisateurs
summary: Créer un utilisateur
description: Crée un nouvel utilisateur Keycloak (proxy lions-user-manager)
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UserDTO"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
/api/admin/users/roles:
get:
tags:
- Admin - Utilisateurs
summary: Liste des rôles realm
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
/api/admin/users/{id}:
get:
tags:
- Admin - Utilisateurs
summary: Détail utilisateur
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
put:
tags:
- Admin - Utilisateurs
summary: Mettre à jour un utilisateur
description: Met à jour un utilisateur (au minimum enabled)
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UserDTO"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
/api/admin/users/{id}/roles:
get:
tags:
- Admin - Utilisateurs
summary: Rôles d'un utilisateur
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
put:
tags:
- Admin - Utilisateurs
summary: Mettre à jour les rôles d'un utilisateur
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: array
items:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
/api/alertes-lcb-ft:
get:
tags:
- Alertes LCB-FT
summary: Liste des alertes LCB-FT
description: Récupère les alertes avec filtrage et pagination
parameters:
- name: dateDebut
in: query
schema:
type: string
- name: dateFin
in: query
schema:
type: string
- name: organisationId
in: query
schema:
type: string
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 20
type: integer
- name: traitee
in: query
schema:
type: boolean
- name: typeAlerte
in: query
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/alertes-lcb-ft/stats/non-traitees:
get:
tags:
- Alertes LCB-FT
summary: Statistiques alertes
description: Nombre d'alertes non traitées
parameters:
- name: organisationId
in: query
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/alertes-lcb-ft/{id}:
get:
tags:
- Alertes LCB-FT
summary: Détails d'une alerte
description: Récupère une alerte par son ID
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/alertes-lcb-ft/{id}/traiter:
post:
tags:
- Alertes LCB-FT
summary: Traiter une alerte
description: Marque une alerte comme traitée avec un commentaire
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
additionalProperties:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/alerts:
get:
tags:
- Logs & Monitoring
summary: Récupérer toutes les alertes actives
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/SystemAlertResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MODERATEUR
/api/alerts/config:
get:
tags:
- Logs & Monitoring
summary: Récupérer la configuration des alertes système
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AlertConfigResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MODERATEUR
put:
tags:
- Logs & Monitoring
summary: Mettre à jour la configuration des alertes système
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateAlertConfigRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AlertConfigResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/alerts/{id}/acknowledge:
post:
tags:
- Logs & Monitoring
summary: Acquitter une alerte
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MODERATEUR
/api/audit:
get:
tags:
- Audit
summary: Liste tous les logs d'audit
description: Récupère tous les logs avec pagination
parameters:
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 50
type: integer
- name: sortBy
in: query
schema:
default: dateHeure
type: string
- name: sortOrder
in: query
schema:
default: desc
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
post:
tags:
- Audit
summary: Enregistre un nouveau log d'audit
description: Crée une nouvelle entrée dans le journal d'audit
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateAuditLogRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/audit/rechercher:
post:
tags:
- Audit
summary: Recherche des logs avec filtres
description: Recherche avancée avec filtres multiples
parameters:
- name: dateDebut
in: query
schema:
type: string
- name: dateFin
in: query
schema:
type: string
- name: ipAddress
in: query
schema:
type: string
- name: module
in: query
schema:
type: string
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: severite
in: query
schema:
type: string
- name: size
in: query
schema:
format: int32
default: 50
type: integer
- name: typeAction
in: query
schema:
type: string
- name: utilisateur
in: query
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/audit/statistiques:
get:
tags:
- Audit
summary: Récupère les statistiques d'audit
description: Retourne les statistiques globales des logs
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/backups:
get:
tags:
- Sauvegardes
summary: Lister toutes les sauvegardes disponibles
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/BackupResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MODERATEUR
post:
tags:
- Sauvegardes
summary: Créer une nouvelle sauvegarde
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateBackupRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/backups/config:
get:
tags:
- Sauvegardes
summary: Récupérer la configuration des sauvegardes automatiques
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/BackupConfigResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MODERATEUR
put:
tags:
- Sauvegardes
summary: Mettre à jour la configuration des sauvegardes automatiques
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateBackupConfigRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/BackupConfigResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/backups/restore:
post:
tags:
- Sauvegardes
summary: Restaurer une sauvegarde
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/RestoreBackupRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/backups/restore-point:
post:
tags:
- Sauvegardes
summary: Créer un point de restauration
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/backups/{id}:
get:
tags:
- Sauvegardes
summary: Récupérer une sauvegarde par ID
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/BackupResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MODERATEUR
delete:
tags:
- Sauvegardes
summary: Supprimer une sauvegarde
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/comptabilite/comptes:
get:
tags:
- Comptabilité
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
post:
tags:
- Comptabilité
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateCompteComptableRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/comptabilite/comptes/{id}:
get:
tags:
- Comptabilité
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/comptabilite/ecritures:
post:
tags:
- Comptabilité
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateEcritureComptableRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/comptabilite/ecritures/journal/{journalId}:
get:
tags:
- Comptabilité
parameters:
- name: journalId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/comptabilite/ecritures/organisation/{organisationId}:
get:
tags:
- Comptabilité
parameters:
- name: organisationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/comptabilite/ecritures/{id}:
get:
tags:
- Comptabilité
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/comptabilite/journaux:
get:
tags:
- Comptabilité
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
post:
tags:
- Comptabilité
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateJournalComptableRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/comptabilite/journaux/{id}:
get:
tags:
- Comptabilité
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/configuration:
get:
tags:
- Configuration
summary: Lister toutes les configurations
responses:
"200":
description: Liste des configurations récupérée avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
/api/configuration/{cle}:
get:
tags:
- Configuration
summary: Récupérer une configuration par clé
parameters:
- name: cle
in: path
required: true
schema:
type: string
responses:
"200":
description: Configuration trouvée
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
put:
tags:
- Configuration
summary: Mettre à jour une configuration
parameters:
- name: cle
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateConfigurationRequest"
responses:
"200":
description: Configuration mise à jour avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
/api/cotisations:
get:
tags:
- Cotisations
summary: Lister toutes les cotisations
description: Récupère la liste paginée (format résumé)
parameters:
- name: page
in: query
schema:
format: int32
default: 0
minimum: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 20
minimum: 1
type: integer
responses:
"200":
description: Liste récupérée
content:
application/json:
schema:
$ref: "#/components/schemas/CotisationSummaryResponse"
"500":
description: Erreur interne
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
post:
tags:
- Cotisations
summary: Créer une cotisation
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateCotisationRequest"
responses:
"201":
description: Créée
content:
application/json:
schema:
$ref: "#/components/schemas/CotisationResponse"
"400":
description: Invalide
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/cotisations/en-retard:
get:
tags:
- Cotisations
summary: Cotisations en retard
parameters:
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 20
type: integer
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/cotisations/membre/{membreId}:
get:
tags:
- Cotisations
summary: Cotisations d'un membre
parameters:
- name: membreId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 20
type: integer
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/cotisations/mes-cotisations:
get:
tags:
- Cotisations
summary: Mes cotisations
description: Liste toutes les cotisations du membre connecté
parameters:
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 50
type: integer
responses:
"200":
description: Liste récupérée
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- MEMBRE
- ADMIN
- ADMIN_ORGANISATION
/api/cotisations/mes-cotisations/en-attente:
get:
tags:
- Cotisations
summary: Mes cotisations en attente
description: Cotisations personnelles en attente de paiement
responses:
"200":
description: Liste récupérée
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- MEMBRE
- ADMIN
- ADMIN_ORGANISATION
/api/cotisations/mes-cotisations/synthese:
get:
tags:
- Cotisations
summary: Synthèse de mes cotisations
description: "KPI personnels : cotisations à payer, montant dû, etc."
responses:
"200":
description: Synthèse récupérée
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- MEMBRE
- ADMIN
- ADMIN_ORGANISATION
/api/cotisations/public:
get:
tags:
- Cotisations
summary: Cotisations publiques
description: Liste des cotisations simplifiée
parameters:
- name: page
in: query
schema:
format: int32
default: 0
minimum: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 20
minimum: 1
type: integer
responses:
"200":
description: Liste des cotisations
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/cotisations/rappels/groupes:
post:
tags:
- Cotisations
summary: Rappels groupés
requestBody:
content:
application/json:
schema:
type: array
items:
format: uuid
pattern: "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/cotisations/recherche:
get:
tags:
- Cotisations
summary: Recherche avancée
parameters:
- name: annee
in: query
schema:
format: int32
type: integer
- name: membreId
in: query
schema:
$ref: "#/components/schemas/UUID"
- name: mois
in: query
schema:
format: int32
type: integer
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 20
type: integer
- name: statut
in: query
schema:
type: string
- name: typeCotisation
in: query
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/cotisations/reference/{numeroReference}:
get:
tags:
- Cotisations
summary: Cotisation par référence
parameters:
- name: numeroReference
in: path
required: true
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/cotisations/statistiques:
get:
tags:
- Cotisations
summary: Statistiques globales
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/cotisations/statistiques/periode:
get:
tags:
- Cotisations
summary: Statistiques par période
parameters:
- name: annee
in: query
schema:
format: int32
type: integer
- name: mois
in: query
schema:
format: int32
type: integer
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/cotisations/stats:
get:
tags:
- Cotisations
summary: Statistiques globales
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/cotisations/statut/{statut}:
get:
tags:
- Cotisations
summary: Cotisations par statut
parameters:
- name: statut
in: path
required: true
schema:
type: string
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 20
type: integer
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/cotisations/{id}:
get:
tags:
- Cotisations
summary: Détails d'une cotisation
description: Récupère les détails complets
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Succès
content:
application/json:
schema:
$ref: "#/components/schemas/CotisationResponse"
"404":
description: Non trouvé
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
put:
tags:
- Cotisations
summary: Mettre à jour une cotisation
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateCotisationRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
delete:
tags:
- Cotisations
summary: Annuler une cotisation
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
/api/cotisations/{id}/payer:
put:
tags:
- Cotisations
summary: Payer une cotisation
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
type: object
additionalProperties: {}
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- TRESORIER
/api/dashboard/membre/me:
get:
tags:
- Dashboard Membre
summary: Récupérer la synthèse du dashboard pour le membre connecté
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- MEMBRE
- ADMIN
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/demandes-aide:
get:
tags:
- Demandes d'aide
summary: Liste les demandes d'aide avec pagination
parameters:
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 20
type: integer
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/DemandeAideResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- MEMBRE
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
post:
tags:
- Demandes d'aide
summary: Crée une nouvelle demande d'aide
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateDemandeAideRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- MEMBRE
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/demandes-aide/mes:
get:
tags:
- Demandes d'aide
summary: Mes demandes d'aide
description: Liste les demandes du membre connecté
parameters:
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 50
type: integer
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/DemandeAideResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- MEMBRE
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/demandes-aide/search:
get:
tags:
- Demandes d'aide
summary: "Recherche les demandes d'aide avec filtres (statut, type, urgence)"
parameters:
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 20
type: integer
- name: statut
in: query
schema:
type: string
- name: type
in: query
schema:
type: string
- name: urgence
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/DemandeAideResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- MEMBRE
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/demandes-aide/{id}:
get:
tags:
- Demandes d'aide
summary: Récupère une demande d'aide par son ID
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DemandeAideResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- MEMBRE
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
put:
tags:
- Demandes d'aide
summary: Met à jour une demande d'aide
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateDemandeAideRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DemandeAideResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- MEMBRE
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/demandes-aide/{id}/approuver:
put:
tags:
- Demandes d'aide
summary: Approuver une demande d'aide
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: motif
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DemandeAideResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- MEMBRE
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/demandes-aide/{id}/rejeter:
put:
tags:
- Demandes d'aide
summary: Rejeter une demande d'aide
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: motif
in: query
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DemandeAideResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- MEMBRE
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/documents:
post:
tags:
- Documents
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateDocumentRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/documents/mes-documents:
get:
tags:
- Documents
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/documents/pieces-jointes:
post:
tags:
- Documents
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreatePieceJointeRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/documents/upload:
post:
tags:
- Documents
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
$ref: "#/components/schemas/FileUpload"
description:
type: string
typeDocument:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/documents/{documentId}/pieces-jointes:
get:
tags:
- Documents
parameters:
- name: documentId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/documents/{id}:
get:
tags:
- Documents
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/documents/{id}/telechargement:
post:
tags:
- Documents
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/evenements:
get:
tags:
- Événements
summary: Lister tous les événements actifs
description: Récupère la liste paginée des événements actifs
parameters:
- name: direction
in: query
description: Direction du tri (asc/desc)
schema:
default: asc
type: string
example: asc
- name: page
in: query
description: Numéro de page (0-based)
schema:
format: int32
default: 0
minimum: 0
type: integer
example: 0
- name: size
in: query
description: Taille de la page
schema:
format: int32
default: 20
minimum: 1
type: integer
example: 20
- name: sort
in: query
description: Champ de tri
schema:
default: dateDebut
type: string
example: dateDebut
responses:
"200":
description: Liste des événements actifs
content:
application/json:
schema:
$ref: "#/components/schemas/PagedResponseEvenementMobileDTO"
"401":
description: Non authentifié
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- SECRETAIRE
- ORGANISATEUR_EVENEMENT
- MEMBRE
- USER
post:
tags:
- Événements
summary: Créer un nouvel événement
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Evenement"
responses:
"201":
description: Événement créé avec succès
"400":
description: Données invalides
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- SECRETAIRE
- ORGANISATEUR_EVENEMENT
/api/evenements/a-venir:
get:
tags:
- Événements
summary: Événements à venir
parameters:
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 10
type: integer
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- SECRETAIRE
- ORGANISATEUR_EVENEMENT
- MEMBRE
/api/evenements/count:
get:
tags:
- Événements
summary: Compter les événements
description: Compte le nombre d'événements dans la base
responses:
"200":
description: Nombre d'événements
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/evenements/mes-inscriptions:
get:
tags:
- Événements
summary: Mes inscriptions aux événements
responses:
"200":
description: Liste de mes inscriptions
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- SECRETAIRE
- ORGANISATEUR_EVENEMENT
- MEMBRE
- USER
/api/evenements/publics:
get:
tags:
- Événements
summary: Événements publics
parameters:
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 20
type: integer
responses:
"200":
description: OK
/api/evenements/recherche:
get:
tags:
- Événements
summary: Rechercher des événements
parameters:
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: q
in: query
schema:
type: string
- name: size
in: query
schema:
format: int32
default: 20
type: integer
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- SECRETAIRE
- ORGANISATEUR_EVENEMENT
- MEMBRE
/api/evenements/statistiques:
get:
tags:
- Événements
summary: Statistiques des événements
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- SECRETAIRE
- ORGANISATEUR_EVENEMENT
/api/evenements/test:
get:
tags:
- Événements
summary: Test de connectivité
description: Endpoint public pour tester la connectivité
responses:
"200":
description: Test réussi
/api/evenements/type/{type}:
get:
tags:
- Événements
summary: Événements par type
parameters:
- name: type
in: path
required: true
schema:
type: string
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 20
type: integer
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- SECRETAIRE
- ORGANISATEUR_EVENEMENT
- MEMBRE
/api/evenements/{id}:
get:
tags:
- Événements
summary: Récupérer un événement par ID
parameters:
- name: id
in: path
description: UUID de l'événement
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Événement trouvé
"404":
description: Événement non trouvé
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- SECRETAIRE
- ORGANISATEUR_EVENEMENT
- MEMBRE
put:
tags:
- Événements
summary: Mettre à jour un événement
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Evenement"
responses:
"200":
description: Événement mis à jour avec succès
"404":
description: Événement non trouvé
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- SECRETAIRE
- ORGANISATEUR_EVENEMENT
delete:
tags:
- Événements
summary: Supprimer un événement
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"204":
description: Événement supprimé avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- ORGANISATEUR_EVENEMENT
/api/evenements/{id}/feedback:
post:
tags:
- Événements
summary: Soumettre un feedback sur l'événement
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
type: object
additionalProperties: {}
responses:
"201":
description: Feedback créé
"400":
description: Données invalides ou feedback déjà soumis
"404":
description: Événement non trouvé
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- SECRETAIRE
- ORGANISATEUR_EVENEMENT
- MEMBRE
- USER
/api/evenements/{id}/feedbacks:
get:
tags:
- Événements
summary: Liste des feedbacks de l'événement
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Liste des feedbacks
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- SECRETAIRE
- ORGANISATEUR_EVENEMENT
- MEMBRE
- USER
/api/evenements/{id}/inscriptions:
post:
tags:
- Événements
summary: S'inscrire à un événement
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"201":
description: Inscription créée
"400":
description: Déjà inscrit ou événement complet
"404":
description: Événement non trouvé
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- SECRETAIRE
- ORGANISATEUR_EVENEMENT
- MEMBRE
- USER
delete:
tags:
- Événements
summary: Se désinscrire d'un événement
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"204":
description: Désinscription effectuée
"404":
description: Inscription non trouvée
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- SECRETAIRE
- ORGANISATEUR_EVENEMENT
- MEMBRE
- USER
/api/evenements/{id}/me/inscrit:
get:
tags:
- Événements
summary: Statut d'inscription de l'utilisateur connecté
parameters:
- name: id
in: path
description: UUID de l'événement
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Statut d'inscription
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- SECRETAIRE
- ORGANISATEUR_EVENEMENT
- MEMBRE
- USER
/api/evenements/{id}/participants:
get:
tags:
- Événements
summary: Liste des participants
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Liste des participants
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- SECRETAIRE
- ORGANISATEUR_EVENEMENT
- MEMBRE
/api/evenements/{id}/statut:
patch:
tags:
- Événements
summary: Changer le statut d'un événement
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: statut
in: query
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- PRESIDENT
- ORGANISATEUR_EVENEMENT
/api/export/cotisations/csv:
get:
tags:
- Export
summary: Exporter les cotisations en CSV
parameters:
- name: associationId
in: query
schema:
$ref: "#/components/schemas/UUID"
- name: statut
in: query
schema:
type: string
- name: type
in: query
schema:
type: string
responses:
"200":
description: Fichier CSV généré
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
post:
tags:
- Export
summary: Exporter des cotisations spécifiques en CSV
requestBody:
content:
application/json:
schema:
type: array
items:
format: uuid
pattern: "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
type: string
responses:
"200":
description: Fichier CSV généré
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/export/cotisations/recus:
post:
tags:
- Export
summary: Générer des reçus groupés
requestBody:
content:
application/json:
schema:
type: array
items:
format: uuid
pattern: "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
type: string
responses:
"200":
description: Reçus générés
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/export/cotisations/{cotisationId}/recu:
get:
tags:
- Export
summary: Générer un reçu de paiement
parameters:
- name: cotisationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Reçu généré
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/export/cotisations/{cotisationId}/recu/pdf:
get:
tags:
- Export
summary: Générer un reçu de paiement en PDF
parameters:
- name: cotisationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: PDF généré
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/export/rapport/mensuel:
get:
tags:
- Export
summary: Générer un rapport mensuel
parameters:
- name: annee
in: query
schema:
format: int32
type: integer
- name: associationId
in: query
schema:
$ref: "#/components/schemas/UUID"
- name: mois
in: query
schema:
format: int32
type: integer
responses:
"200":
description: Rapport généré
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/export/rapport/mensuel/pdf:
get:
tags:
- Export
summary: Générer un rapport mensuel en PDF
parameters:
- name: annee
in: query
schema:
format: int32
type: integer
- name: associationId
in: query
schema:
$ref: "#/components/schemas/UUID"
- name: mois
in: query
schema:
format: int32
type: integer
responses:
"200":
description: PDF généré
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/favoris:
post:
tags:
- Favoris
summary: Créer un nouveau favori
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateFavoriRequest"
responses:
"201":
description: Favori créé avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/favoris/utilisateur/{utilisateurId}:
get:
tags:
- Favoris
summary: Lister les favoris d'un utilisateur
parameters:
- name: utilisateurId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Liste des favoris récupérée avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/favoris/utilisateur/{utilisateurId}/statistiques:
get:
tags:
- Favoris
summary: Obtenir les statistiques des favoris d'un utilisateur
parameters:
- name: utilisateurId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Statistiques récupérées avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/favoris/{id}:
delete:
tags:
- Favoris
summary: Supprimer un favori
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"204":
description: Favori supprimé avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/feedback:
post:
tags:
- Feedback
summary: Envoyer un commentaire / feedback
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/FeedbackRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/finance/approvals:
post:
tags:
- Finance - Approvals
summary: Demande une approbation de transaction
description: Crée une demande d'approbation pour une transaction financière
requestBody:
content:
application/json:
schema:
type: object
additionalProperties: {}
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
- MEMBRE
/api/finance/approvals/count/pending:
get:
tags:
- Finance - Approvals
summary: Compte les approbations en attente
description: Retourne le nombre d'approbations en attente pour une organisation
parameters:
- name: organizationId
in: query
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/finance/approvals/history:
get:
tags:
- Finance - Approvals
summary: Récupère l'historique des approbations
description: Liste l'historique des approbations avec filtres optionnels
parameters:
- name: endDate
in: query
schema:
type: string
- name: organizationId
in: query
schema:
$ref: "#/components/schemas/UUID"
- name: startDate
in: query
schema:
type: string
- name: status
in: query
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/finance/approvals/pending:
get:
tags:
- Finance - Approvals
summary: Récupère les approbations en attente
description: Liste toutes les approbations de transactions en attente pour une
organisation
parameters:
- name: organizationId
in: query
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/finance/approvals/{approvalId}:
get:
tags:
- Finance - Approvals
summary: Récupère une approbation par ID
description: Retourne les détails d'une approbation spécifique
parameters:
- name: approvalId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/finance/approvals/{approvalId}/approve:
post:
tags:
- Finance - Approvals
summary: Approuve une transaction
description: Approuve une demande de transaction avec un commentaire optionnel
parameters:
- name: approvalId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ApproveTransactionRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/finance/approvals/{approvalId}/reject:
post:
tags:
- Finance - Approvals
summary: Rejette une transaction
description: Rejette une demande de transaction avec une raison obligatoire
parameters:
- name: approvalId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/RejectTransactionRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/finance/audit-logs:
get:
tags:
- Finance - Workflow
summary: Récupère les logs d'audit financier
description: Liste les logs d'audit avec filtres optionnels
parameters:
- name: endDate
in: query
schema:
type: string
- name: entityType
in: query
schema:
type: string
- name: limit
in: query
schema:
format: int32
default: 100
type: integer
- name: operation
in: query
schema:
type: string
- name: organizationId
in: query
schema:
type: string
- name: severity
in: query
schema:
type: string
- name: startDate
in: query
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/finance/audit-logs/anomalies:
get:
tags:
- Finance - Workflow
summary: Récupère les anomalies financières détectées
description: Liste les anomalies et transactions suspectes
parameters:
- name: endDate
in: query
schema:
type: string
- name: organizationId
in: query
schema:
type: string
- name: startDate
in: query
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/finance/audit-logs/export:
post:
tags:
- Finance - Workflow
summary: Exporte les logs d'audit
description: Génère un export des logs d'audit au format spécifié (CSV/PDF)
requestBody:
content:
application/json:
schema:
type: object
additionalProperties: {}
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/finance/budgets:
get:
tags:
- Finance - Budgets
summary: Récupère les budgets
description: Liste tous les budgets d'une organisation avec filtres optionnels
parameters:
- name: organizationId
in: query
schema:
$ref: "#/components/schemas/UUID"
- name: status
in: query
schema:
type: string
- name: year
in: query
schema:
format: int32
type: integer
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
post:
tags:
- Finance - Budgets
summary: Crée un nouveau budget
description: Crée un budget avec ses lignes budgétaires
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateBudgetRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/finance/budgets/{budgetId}:
get:
tags:
- Finance - Budgets
summary: Récupère un budget par ID
description: Retourne les détails complets d'un budget
parameters:
- name: budgetId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
put:
tags:
- Finance - Budgets
summary: Met à jour un budget
description: "Modifie un budget existant (nom, description, lignes, statut)"
parameters:
- name: budgetId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
type: object
additionalProperties: {}
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
delete:
tags:
- Finance - Budgets
summary: Supprime un budget
description: Supprime logiquement un budget (soft delete)
parameters:
- name: budgetId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/finance/budgets/{budgetId}/tracking:
get:
tags:
- Finance - Budgets
summary: Récupère le suivi budgétaire
description: Retourne les statistiques de suivi et réalisation du budget
parameters:
- name: budgetId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/finance/stats:
get:
tags:
- Finance - Workflow
summary: Statistiques du workflow financier
description: Retourne les statistiques globales du workflow financier
parameters:
- name: endDate
in: query
schema:
type: string
- name: organizationId
in: query
schema:
type: string
- name: startDate
in: query
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/logs/export:
get:
tags:
- Logs & Monitoring
summary: Exporter les logs en CSV
parameters:
- name: level
in: query
schema:
type: string
- name: source
in: query
schema:
type: string
- name: timeRange
in: query
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/logs/search:
post:
tags:
- Logs & Monitoring
summary: Rechercher dans les logs système
description: "Recherche avec filtres (niveau, source, texte, dates)"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/LogSearchRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/SystemLogResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MODERATEUR
/api/membres:
get:
tags:
- Membres
summary: Lister les membres
parameters:
- name: direction
in: query
description: Direction du tri (asc/desc)
schema:
default: asc
type: string
- name: page
in: query
description: Numéro de page (0-based)
schema:
format: int32
default: 0
type: integer
- name: size
in: query
description: Taille de la page
schema:
format: int32
default: 20
type: integer
- name: sort
in: query
description: Champ de tri
schema:
default: nom
type: string
responses:
"200":
description: Liste des membres avec pagination
content:
application/json:
schema:
$ref: "#/components/schemas/PagedResponseMembreSummaryResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MODERATEUR
post:
tags:
- Membres
summary: Créer un nouveau membre
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateMembreRequest"
responses:
"201":
description: Membre créé avec succès
"400":
description: Données invalides
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/membres/accepter-invitation/{token}:
post:
tags:
- Membres
summary: Accepter une invitation
description: Valide le token d'invitation et passe l'adhésion en EN_ATTENTE_VALIDATION.
parameters:
- name: token
in: path
description: Token d'invitation
required: true
schema:
type: string
responses:
"200":
description: Invitation acceptée
"400":
description: Token invalide ou expiré
/api/membres/actifs:
get:
tags:
- Membres
summary: Membres actifs
description: Liste tous les membres dont le compte est actif
responses:
"200":
description: Liste des membres actifs
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- TRESORIER
/api/membres/auth/change-password:
post:
tags:
- Compte Adhérent
summary: Changer le mot de passe (mobile)
description: Endpoint dédié à l'application mobile. Bypass lions-user-manager
via API Admin Keycloak directe.
requestBody:
content:
application/json:
schema:
type: object
additionalProperties:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak: []
/api/membres/autocomplete/professions:
get:
tags:
- Membres
summary: Obtenir la liste des professions pour autocomplétion
parameters:
- name: query
in: query
description: Terme de recherche (optionnel)
schema:
type: string
responses:
"200":
description: Liste des professions distinctes
/api/membres/autocomplete/villes:
get:
tags:
- Membres
summary: Obtenir la liste des villes pour autocomplétion
parameters:
- name: query
in: query
description: Terme de recherche (optionnel)
schema:
type: string
responses:
"200":
description: Liste des villes distinctes
/api/membres/export:
get:
tags:
- Membres
summary: "Exporter des membres en Excel, CSV ou PDF"
parameters:
- name: associationId
in: query
description: ID de l'organisation (optionnel)
schema:
$ref: "#/components/schemas/UUID"
- name: colonnes
in: query
description: Colonnes à exporter
schema:
type: array
items:
type: string
- name: dateAdhesionDebut
in: query
description: Date adhésion début
schema:
type: string
- name: dateAdhesionFin
in: query
description: Date adhésion fin
schema:
type: string
- name: format
in: query
description: Format d'export
schema:
default: EXCEL
type: string
- name: formaterDates
in: query
description: Formater les dates
schema:
default: true
type: boolean
- name: inclureHeaders
in: query
description: Inclure les en-têtes
schema:
default: true
type: boolean
- name: inclureStatistiques
in: query
description: Inclure un onglet statistiques (Excel uniquement)
schema:
default: false
type: boolean
- name: motDePasse
in: query
description: Mot de passe pour chiffrer le fichier (optionnel)
schema:
type: string
- name: statut
in: query
description: Statut des membres
schema:
type: string
- name: type
in: query
description: Type de membre
schema:
type: string
responses:
"200":
description: Fichier exporté
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/membres/export/count:
get:
tags:
- Membres
summary: Compter les membres selon les filtres pour l'export
parameters:
- name: associationId
in: query
description: ID de l'organisation (optionnel)
schema:
$ref: "#/components/schemas/UUID"
- name: dateAdhesionDebut
in: query
description: Date adhésion début
schema:
type: string
- name: dateAdhesionFin
in: query
description: Date adhésion fin
schema:
type: string
- name: statut
in: query
description: Statut des membres
schema:
type: string
- name: type
in: query
description: Type de membre
schema:
type: string
responses:
"200":
description: Nombre de membres correspondant aux critères
/api/membres/export/selection:
post:
tags:
- Membres
summary: Exporter une sélection de membres en Excel
parameters:
- name: format
in: query
description: Format d'export
schema:
default: EXCEL
type: string
requestBody:
content:
application/json:
schema:
type: array
items:
format: uuid
pattern: "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
type: string
responses:
"200":
description: Fichier Excel généré
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/membres/import:
post:
tags:
- Membres
summary: Importer des membres depuis un fichier Excel ou CSV
description: "Format strict (colonnes obligatoires: nom, prenom, email, telephone).\
\ Si organisationId est fourni, les membres sont rattachés à l'organisation\
\ et le quota souscription (tranche) est respecté."
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
$ref: "#/components/schemas/FileUpload"
fileName:
type: string
organisationId:
type: string
typeMembreDefaut:
type: string
mettreAJourExistants:
type: boolean
ignorerErreurs:
type: boolean
responses:
"200":
description: Import terminé
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/membres/import/modele:
get:
tags:
- Membres
summary: Télécharger le modèle Excel pour l'import
responses:
"200":
description: Modèle Excel généré
/api/membres/me:
get:
tags:
- Membres
summary: Récupérer le membre connecté
responses:
"200":
description: Membre connecté trouvé ou auto-provisionné
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- MEMBRE
- ADMIN
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/membres/me/suivis:
get:
tags:
- Membres
summary: Liste des ids des membres suivis (réseau)
responses:
"200":
description: Liste des UUID suivis
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- MEMBRE
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MODERATEUR
- CONSULTANT
- SECRETAIRE
- GESTIONNAIRE_RH
/api/membres/mes-organisations:
get:
tags:
- Membres
summary: Organisations du membre connecté
description: Retourne la liste des organisations auxquelles le membre connecté
appartient (multi-org)
responses:
"200":
description: Liste des organisations
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- MEMBRE
- ADMIN
- ADMIN_ORGANISATION
- SUPER_ADMIN
- MODERATEUR
/api/membres/mon-compte:
get:
tags:
- Compte Adhérent
summary: Compte adhérent du membre connecté
description: "Agrège cotisations, épargne et crédit en une vue financière unifié\
e."
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- MEMBRE
- ADMIN
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/membres/mon-compte/mot-de-passe:
put:
tags:
- Compte Adhérent
summary: Changer le mot de passe au premier login
description: Met à jour le mot de passe Keycloak et lève le flag premiereConnexion.
requestBody:
content:
application/json:
schema:
type: object
additionalProperties:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak: []
/api/membres/mon-statut:
get:
tags:
- Compte Adhérent
summary: Statut du compte du membre connecté
description: "Retourne statutCompte : ACTIF, EN_ATTENTE_VALIDATION, SUSPENDU\
\ ou DESACTIVE."
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak: []
/api/membres/numero/{numeroMembre}:
get:
tags:
- Membres
summary: Trouver un membre par son numéro
parameters:
- name: numeroMembre
in: path
required: true
schema:
type: string
responses:
"200":
description: Membre trouvé
"404":
description: Membre non trouvé
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MODERATEUR
- MEMBRE
- USER
/api/membres/organisation/{organisationId}:
get:
tags:
- Membres
summary: Membres d'une organisation
description: Liste les membres actifs d'une organisation
parameters:
- name: organisationId
in: path
description: UUID de l'organisation
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Liste des membres
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- TRESORIER
/api/membres/recherche:
get:
tags:
- Membres
summary: Rechercher des membres par nom ou prénom
parameters:
- name: direction
in: query
description: Direction du tri (asc/desc)
schema:
default: asc
type: string
- name: page
in: query
description: Numéro de page (0-based)
schema:
format: int32
default: 0
type: integer
- name: q
in: query
description: Terme de recherche
schema:
type: string
- name: size
in: query
description: Taille de la page
schema:
format: int32
default: 20
type: integer
- name: sort
in: query
description: Champ de tri
schema:
default: nom
type: string
responses:
"200":
description: Résultats de la recherche
/api/membres/recherche-avancee:
get:
tags:
- Membres
summary: Recherche avancée de membres avec filtres multiples (DEPRECATED)
parameters:
- name: actif
in: query
description: Statut actif (true/false)
schema:
type: boolean
- name: dateAdhesionMax
in: query
description: Date d'adhésion maximum (YYYY-MM-DD)
schema:
type: string
- name: dateAdhesionMin
in: query
description: Date d'adhésion minimum (YYYY-MM-DD)
schema:
type: string
- name: direction
in: query
description: Direction du tri (asc/desc)
schema:
default: asc
type: string
- name: page
in: query
description: Numéro de page (0-based)
schema:
format: int32
default: 0
type: integer
- name: q
in: query
description: Terme de recherche
schema:
type: string
- name: size
in: query
description: Taille de la page
schema:
format: int32
default: 20
type: integer
- name: sort
in: query
description: Champ de tri
schema:
default: nom
type: string
responses:
"200":
description: Résultats de la recherche avancée
deprecated: true
/api/membres/search/advanced:
post:
tags:
- Membres
summary: Recherche avancée de membres avec critères multiples
description: |
Recherche sophistiquée de membres avec de nombreux critères de filtrage :
- Recherche textuelle dans nom, prénom, email
- Filtres par organisation, rôles, statut
- Filtres par âge, région, profession
- Filtres par dates d'adhésion
- Résultats paginés avec statistiques
Réservée aux super administrateurs et administrateurs.
parameters:
- name: direction
in: query
description: Direction du tri (asc/desc)
schema:
default: asc
type: string
example: asc
- name: page
in: query
description: Numéro de page (0-based)
schema:
format: int32
default: 0
type: integer
example: 0
- name: size
in: query
description: Taille de la page
schema:
format: int32
default: 20
type: integer
example: 20
- name: sort
in: query
description: Champ de tri
schema:
default: nom
type: string
example: nom
requestBody:
description: Critères de recherche avancée
content:
application/json:
schema:
$ref: "#/components/schemas/MembreSearchCriteria"
examples:
Exemple de critères:
value:
query: marie
statut: ACTIF
ageMin: 25
ageMax: 45
region: Dakar
roles:
- PRESIDENT
- SECRETAIRE
dateAdhesionMin: 2020-01-01
includeInactifs: false
required: false
responses:
"200":
description: Recherche effectuée avec succès
content:
application/json:
schema:
$ref: "#/components/schemas/MembreSearchResultDTO"
examples:
Exemple de résultats:
value: |-
{
"membres": [...],
"totalElements": 247,
"totalPages": 13,
"currentPage": 0,
"pageSize": 20,
"hasNext": true,
"hasPrevious": false,
"executionTimeMs": 45,
"statistics": {
"membresActifs": 230,
"membresInactifs": 17,
"ageMoyen": 34.5,
"nombreOrganisations": 12
}
}
"400":
description: Critères de recherche invalides
content:
application/json:
examples: {}
"403":
description: "Accès non autorisé - Rôle SUPER_ADMIN, ADMIN ou ADMIN_ORGANISATION\
\ requis"
"500":
description: Erreur interne du serveur
security:
- keycloak: []
/api/membres/stats:
get:
tags:
- Membres
summary: Obtenir les statistiques avancées des membres
responses:
"200":
description: Statistiques complètes des membres
/api/membres/{id}:
get:
tags:
- Membres
summary: Récupérer un membre par son ID
parameters:
- name: id
in: path
description: UUID du membre
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Membre trouvé
"404":
description: Membre non trouvé
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MODERATEUR
- MEMBRE
- USER
put:
tags:
- Membres
summary: Mettre à jour un membre existant
parameters:
- name: id
in: path
description: UUID du membre
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateMembreRequest"
responses:
"200":
description: Membre mis à jour avec succès
"404":
description: Membre non trouvé
"400":
description: Données invalides
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
delete:
tags:
- Membres
summary: Désactiver un membre
parameters:
- name: id
in: path
description: UUID du membre
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"204":
description: Membre désactivé avec succès
"404":
description: Membre non trouvé
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
/api/membres/{id}/activer:
put:
tags:
- Membres
summary: Activer un membre
description: Passe le membre en statut ACTIF et lui assigne le rôle MEMBRE_ACTIF
dans Keycloak.
parameters:
- name: id
in: path
description: UUID du membre
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Membre activé avec succès
"404":
description: Membre non trouvé
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
/api/membres/{id}/affecter-organisation:
put:
tags:
- Membres
summary: Affecter un membre à une organisation
description: Crée le lien MembreOrganisation (statut EN_ATTENTE_VALIDATION)
si le membre n'est pas encore rattaché à une organisation. Idempotent.
parameters:
- name: id
in: path
description: UUID du membre
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: organisationId
in: query
description: UUID de l'organisation
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Membre affecté à l'organisation
"404":
description: Membre ou organisation non trouvé
"403":
description: Accès réservé aux ADMIN / SUPER_ADMIN
"401":
description: Not Authorized
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
/api/membres/{id}/promouvoir-admin-organisation:
put:
tags:
- Membres
summary: Promouvoir un membre en administrateur d'organisation
description: Passe le membre en statut ACTIF et lui assigne le rôle ADMIN_ORGANISATION
dans Keycloak. Réservé aux super administrateurs de la plateforme. Le compte
est immédiatement opérationnel sans validation intermédiaire.
parameters:
- name: id
in: path
description: UUID du membre à promouvoir
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Membre promu administrateur d'organisation
"404":
description: Membre non trouvé
"403":
description: Accès réservé aux ADMIN / SUPER_ADMIN
"401":
description: Not Authorized
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
/api/membres/{id}/reinitialiser-mot-de-passe:
put:
tags:
- Membres
summary: Réinitialiser le mot de passe d'un membre
description: Génère un nouveau mot de passe temporaire et le définit dans Keycloak.
Le nouveau mot de passe est retourné une seule fois dans la réponse.
parameters:
- name: id
in: path
description: UUID du membre
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: "Mot de passe réinitialisé, retourné dans motDePasseTemporaire"
"404":
description: Membre non trouvé
"400":
description: Le membre n'a pas de compte Keycloak
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/membres/{id}/suivre:
post:
tags:
- Membres
summary: Suivre un membre (réseau)
parameters:
- name: id
in: path
description: UUID du membre à suivre
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Suivi activé
"400":
description: Requête invalide
"404":
description: Membre cible non trouvé
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- MEMBRE
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MODERATEUR
- CONSULTANT
- SECRETAIRE
- GESTIONNAIRE_RH
delete:
tags:
- Membres
summary: Ne plus suivre un membre (réseau)
parameters:
- name: id
in: path
description: UUID du membre à ne plus suivre
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Suivi désactivé
"400":
description: Requête invalide
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- MEMBRE
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MODERATEUR
- CONSULTANT
- SECRETAIRE
- GESTIONNAIRE_RH
/api/membres/{membreId}/adhesion:
get:
tags:
- Membres
summary: Statut d'adhésion d'un membre dans une organisation
parameters:
- name: membreId
in: path
description: UUID du membre
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: organisationId
in: query
description: UUID de l'organisation
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Statut d'adhésion
"404":
description: Aucun lien membre-organisation trouvé
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/membres/{membreId}/adhesion/activer:
put:
tags:
- Membres
summary: Activer l'adhésion par membreId + organisationId
parameters:
- name: membreId
in: path
description: UUID du membre
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: organisationId
in: query
description: UUID de l'organisation
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
type: object
additionalProperties:
type: string
responses:
"200":
description: Adhésion activée
"404":
description: Lien membre-organisation introuvable
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/membres/{membreId}/adhesion/radier:
put:
tags:
- Membres
summary: Radier par membreId + organisationId
parameters:
- name: membreId
in: path
description: UUID du membre
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: organisationId
in: query
description: UUID de l'organisation
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
type: object
additionalProperties:
type: string
responses:
"200":
description: Adhésion radiée
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/membres/{membreId}/adhesion/suspendre:
put:
tags:
- Membres
summary: Suspendre l'adhésion par membreId + organisationId
parameters:
- name: membreId
in: path
description: UUID du membre
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: organisationId
in: query
description: UUID de l'organisation
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
type: object
additionalProperties:
type: string
responses:
"200":
description: Adhésion suspendue
"404":
description: Lien membre-organisation introuvable
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/membres/{membreId}/inviter-organisation:
put:
tags:
- Membres
summary: Inviter un membre dans une organisation
description: Crée une invitation (statut INVITE) pour un membre existant. Token
valable 7 jours.
parameters:
- name: membreId
in: path
description: UUID du membre à inviter
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: organisationId
in: query
description: UUID de l'organisation
schema:
$ref: "#/components/schemas/UUID"
- name: roleOrg
in: query
description: Rôle proposé (optionnel)
schema:
type: string
responses:
"200":
description: Invitation créée
"404":
description: Membre ou organisation introuvable
"409":
description: Membre déjà lié à cette organisation
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/membres/{membreOrgId}/activer-adhesion:
put:
tags:
- Membres
summary: Activer une adhésion
description: "Transitions autorisées : EN_ATTENTE_VALIDATION, INVITE, SUSPENDU\
\ → ACTIF."
parameters:
- name: membreOrgId
in: path
description: UUID du lien membre-organisation
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
type: object
additionalProperties:
type: string
responses:
"200":
description: Adhésion activée
"404":
description: Lien membre-organisation introuvable
"409":
description: Transition non autorisée depuis le statut actuel
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/membres/{membreOrgId}/archiver-adhesion:
put:
tags:
- Membres
summary: Archiver une adhésion
description: Conserve l'historique sans supprimer le lien membre-organisation.
parameters:
- name: membreOrgId
in: path
description: UUID du lien membre-organisation
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
type: object
additionalProperties:
type: string
responses:
"200":
description: Adhésion archivée
"404":
description: Lien membre-organisation introuvable
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/membres/{membreOrgId}/radier-adhesion:
put:
tags:
- Membres
summary: Radier un membre d'une organisation
parameters:
- name: membreOrgId
in: path
description: UUID du lien membre-organisation
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
type: object
additionalProperties:
type: string
responses:
"200":
description: Adhésion radiée
"404":
description: Lien membre-organisation introuvable
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/membres/{membreOrgId}/suspendre-adhesion:
put:
tags:
- Membres
summary: Suspendre une adhésion
description: "Transition autorisée : ACTIF → SUSPENDU."
parameters:
- name: membreOrgId
in: path
description: UUID du lien membre-organisation
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
type: object
additionalProperties:
type: string
responses:
"200":
description: Adhésion suspendue
"404":
description: Lien membre-organisation introuvable
"409":
description: Transition non autorisée
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/messagerie/blocages:
get:
tags:
- Messagerie
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
post:
tags:
- Messagerie
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/BloquerMembreRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/messagerie/blocages/{membreId}:
delete:
tags:
- Messagerie
parameters:
- name: membreId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: organisationId
in: query
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/messagerie/conversations:
get:
tags:
- Messagerie
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/messagerie/conversations/directe:
post:
tags:
- Messagerie
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DemarrerConversationDirecteRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/messagerie/conversations/role:
post:
tags:
- Messagerie
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DemarrerConversationRoleRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/messagerie/conversations/{conversationId}/messages/{messageId}:
delete:
tags:
- Messagerie
parameters:
- name: conversationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: messageId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/messagerie/conversations/{id}:
get:
tags:
- Messagerie
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
delete:
tags:
- Messagerie
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/messagerie/conversations/{id}/lire:
put:
tags:
- Messagerie
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/messagerie/conversations/{id}/messages:
get:
tags:
- Messagerie
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: page
in: query
schema:
format: int32
default: 0
type: integer
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
post:
tags:
- Messagerie
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/EnvoyerMessageRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/messagerie/politique/{organisationId}:
get:
tags:
- Messagerie
parameters:
- name: organisationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
put:
tags:
- Messagerie
parameters:
- name: organisationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/MettreAJourPolitiqueRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
/api/monitoring/metrics:
get:
tags:
- Logs & Monitoring
summary: Récupérer les métriques système en temps réel
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SystemMetricsResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MODERATEUR
/api/notifications:
post:
tags:
- Notifications
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateNotificationRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/notifications/en-attente-envoi:
get:
tags:
- Notifications
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MODERATEUR
- MEMBRE
- USER
/api/notifications/groupees:
post:
tags:
- Notifications
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/NotificationGroupeeRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/notifications/me:
get:
tags:
- Notifications
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MODERATEUR
- MEMBRE
- USER
/api/notifications/me/non-lues:
get:
tags:
- Notifications
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MODERATEUR
- MEMBRE
- USER
/api/notifications/membre/{membreId}:
get:
tags:
- Notifications
parameters:
- name: membreId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MODERATEUR
- MEMBRE
- USER
/api/notifications/membre/{membreId}/non-lues:
get:
tags:
- Notifications
parameters:
- name: membreId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MODERATEUR
- MEMBRE
- USER
/api/notifications/templates:
post:
tags:
- Notifications
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateTemplateNotificationRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/notifications/{id}:
get:
tags:
- Notifications
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MODERATEUR
- MEMBRE
- USER
/api/notifications/{id}/marquer-lue:
post:
tags:
- Notifications
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MODERATEUR
- MEMBRE
- USER
/api/organisations:
get:
tags:
- Organisations
summary: Lister les organisations
description: Récupère la liste des organisations actives avec pagination
parameters:
- name: page
in: query
description: Numéro de page (commence à 0)
schema:
format: int32
default: 0
type: integer
example: 0
- name: recherche
in: query
description: Terme de recherche (nom ou nom court)
schema:
type: string
- name: size
in: query
description: Taille de la page
schema:
format: int32
default: 20
type: integer
example: 20
responses:
"200":
description: Liste des organisations récupérée avec succès
content:
application/json:
schema:
$ref: "#/components/schemas/PagedResponse"
"401":
description: Non authentifié
"403":
description: Non autorisé
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
post:
tags:
- Organisations
summary: Créer une nouvelle organisation
description: Crée une nouvelle organisation dans le système
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateOrganisationRequest"
responses:
"201":
description: Organisation créée avec succès
content:
application/json:
schema:
$ref: "#/components/schemas/OrganisationResponse"
"400":
description: Données invalides
"409":
description: Organisation déjà existante
"401":
description: Non authentifié
"403":
description: Non autorisé
security:
- Keycloak:
- SUPER_ADMIN
/api/organisations/mes:
get:
tags:
- Organisations
summary: Mes organisations
description: Liste les organisations auxquelles le membre connecté appartient
(pour ADMIN_ORGANISATION)
responses:
"200":
description: Liste des organisations du membre
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/OrganisationResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/organisations/recherche:
get:
tags:
- Organisations
summary: Recherche avancée
description: Recherche d'organisations avec critères multiples
parameters:
- name: nom
in: query
description: Nom de l'organisation
schema:
type: string
- name: page
in: query
description: Numéro de page
schema:
format: int32
default: 0
type: integer
- name: pays
in: query
description: Pays
schema:
type: string
- name: region
in: query
description: Région
schema:
type: string
- name: size
in: query
description: Taille de la page
schema:
format: int32
default: 20
type: integer
- name: statut
in: query
description: Statut
schema:
type: string
- name: type
in: query
description: Type d'organisation
schema:
type: string
- name: ville
in: query
description: Ville
schema:
type: string
responses:
"200":
description: Résultats de recherche
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/OrganisationResponse"
"401":
description: Non authentifié
"403":
description: Non autorisé
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/organisations/statistiques:
get:
tags:
- Organisations
summary: Statistiques des organisations
description: Récupère les statistiques globales des organisations
responses:
"200":
description: Statistiques récupérées avec succès
"401":
description: Non authentifié
"403":
description: Non autorisé
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- ADMIN_ORGANISATION
/api/organisations/{id}:
get:
tags:
- Organisations
summary: Récupérer une organisation
description: Récupère une organisation par son ID
parameters:
- name: id
in: path
description: UUID de l'organisation
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Organisation trouvée
content:
application/json:
schema:
$ref: "#/components/schemas/OrganisationResponse"
"404":
description: Organisation non trouvée
"401":
description: Non authentifié
"403":
description: Non autorisé
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
put:
tags:
- Organisations
summary: Mettre à jour une organisation
description: Met à jour les informations d'une organisation
parameters:
- name: id
in: path
description: UUID de l'organisation
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateOrganisationRequest"
responses:
"200":
description: Organisation mise à jour avec succès
content:
application/json:
schema:
$ref: "#/components/schemas/OrganisationResponse"
"400":
description: Données invalides
"404":
description: Organisation non trouvée
"409":
description: Conflit de données
"401":
description: Non authentifié
"403":
description: Non autorisé
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
delete:
tags:
- Organisations
summary: Supprimer une organisation
description: Supprime une organisation (soft delete)
parameters:
- name: id
in: path
description: UUID de l'organisation
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"204":
description: Organisation supprimée avec succès
"404":
description: Organisation non trouvée
"409":
description: Impossible de supprimer l'organisation
"401":
description: Non authentifié
"403":
description: Non autorisé
security:
- Keycloak:
- SUPER_ADMIN
/api/organisations/{id}/activer:
post:
tags:
- Organisations
summary: Activer une organisation
description: Active une organisation suspendue
parameters:
- name: id
in: path
description: UUID de l'organisation
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Organisation activée avec succès
"404":
description: Organisation non trouvée
"401":
description: Non authentifié
"403":
description: Non autorisé
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/organisations/{id}/membres/count:
get:
tags:
- Organisations
summary: Nombre de membres
description: Retourne le nombre de membres actifs de l'organisation.
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/organisations/{id}/modules-actifs:
get:
tags:
- Organisations
summary: Modules actifs de l'organisation
description: Retourne la liste des modules disponibles selon le type de l'organisation
(Option C)
parameters:
- name: id
in: path
description: UUID de l'organisation
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Liste des modules actifs
"404":
description: Organisation non trouvée
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/organisations/{id}/suspendre:
post:
tags:
- Organisations
summary: Suspendre une organisation
description: Suspend une organisation active
parameters:
- name: id
in: path
description: UUID de l'organisation
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Organisation suspendue avec succès
"404":
description: Organisation non trouvée
"401":
description: Non authentifié
"403":
description: Non autorisé
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/paiements:
post:
tags:
- Paiements
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreatePaiementRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
/api/paiements/declarer-manuel:
post:
tags:
- Paiements
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DeclarerPaiementManuelRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- MEMBRE
- ADMIN
- ADMIN_ORGANISATION
/api/paiements/initier-paiement-en-ligne:
post:
tags:
- Paiements
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/InitierPaiementEnLigneRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- MEMBRE
- ADMIN
- ADMIN_ORGANISATION
- USER
/api/paiements/membre/{membreId}:
get:
tags:
- Paiements
parameters:
- name: membreId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
/api/paiements/mon-historique:
get:
tags:
- Paiements
parameters:
- name: limit
in: query
schema:
format: int32
default: 20
type: integer
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- MEMBRE
- ADMIN
- ADMIN_ORGANISATION
/api/paiements/reference/{numeroReference}:
get:
tags:
- Paiements
parameters:
- name: numeroReference
in: path
required: true
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/paiements/statut-intention/{intentionId}:
get:
tags:
- Paiements
parameters:
- name: intentionId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- MEMBRE
- ADMIN
- ADMIN_ORGANISATION
- USER
/api/paiements/{id}:
get:
tags:
- Paiements
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/paiements/{id}/annuler:
post:
tags:
- Paiements
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/paiements/{id}/valider:
post:
tags:
- Paiements
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
/api/parametres-lcb-ft:
get:
tags:
- Paramètres LCB-FT
summary: Récupérer les paramètres LCB-FT
description: Retourne les seuils anti-blanchiment pour une organisation ou la
plateforme
parameters:
- name: codeDevise
in: query
description: Code devise (XOF par défaut)
schema:
default: XOF
type: string
- name: organisationId
in: query
description: ID de l'organisation (optionnel)
schema:
type: string
responses:
"200":
description: Paramètres récupérés
"404":
description: Paramètres non configurés
post:
tags:
- Paramètres LCB-FT
summary: Créer ou mettre à jour les paramètres LCB-FT
description: Admin uniquement - Configure les seuils pour une organisation ou
la plateforme
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ParametresLcbFtRequest"
responses:
"200":
description: Paramètres sauvegardés
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
/api/parametres-lcb-ft/seuil-justification:
get:
tags:
- Paramètres LCB-FT
summary: Récupérer le seuil de justification uniquement
description: Endpoint léger pour récupérer juste le montant seuil (utilisé par
mobile)
parameters:
- name: codeDevise
in: query
schema:
default: XOF
type: string
- name: organisationId
in: query
schema:
type: string
responses:
"200":
description: Seuil récupéré
/api/preferences/{utilisateurId}:
get:
tags:
- Préférences
summary: Obtenir les préférences d'un utilisateur
parameters:
- name: utilisateurId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Préférences récupérées avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- SUPER_ADMIN
put:
tags:
- Préférences
summary: Mettre à jour les préférences d'un utilisateur
parameters:
- name: utilisateurId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
type: object
additionalProperties:
type: boolean
responses:
"204":
description: Préférences mises à jour avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- SUPER_ADMIN
/api/preferences/{utilisateurId}/export:
get:
tags:
- Préférences
summary: Exporter les préférences d'un utilisateur
parameters:
- name: utilisateurId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Préférences exportées avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- SUPER_ADMIN
/api/preferences/{utilisateurId}/reinitialiser:
post:
tags:
- Préférences
summary: Réinitialiser les préférences d'un utilisateur
parameters:
- name: utilisateurId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"204":
description: Préférences réinitialisées avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- SUPER_ADMIN
/api/propositions-aide:
get:
tags:
- Propositions d'aide
summary: Liste les propositions d'aide avec pagination
parameters:
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 20
type: integer
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PropositionAideResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
post:
tags:
- Propositions d'aide
summary: Crée une nouvelle proposition d'aide
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreatePropositionAideRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/propositions-aide/meilleures:
get:
tags:
- Propositions d'aide
summary: Récupère les meilleures propositions
parameters:
- name: limite
in: query
schema:
format: int32
default: 5
type: integer
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PropositionAideResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/propositions-aide/{id}:
get:
tags:
- Propositions d'aide
summary: Récupère une proposition d'aide par son ID
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PropositionAideResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
put:
tags:
- Propositions d'aide
summary: Met à jour une proposition d'aide
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UpdatePropositionAideRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PropositionAideResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/references/types-organisation:
get:
tags:
- Type Organisation Reference Resource
parameters:
- name: onlyActifs
in: query
schema:
default: true
type: boolean
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
post:
tags:
- Type Organisation Reference Resource
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateTypeReferenceRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/references/types-organisation/{id}:
put:
tags:
- Type Organisation Reference Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateTypeReferenceRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
delete:
tags:
- Type Organisation Reference Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/roles:
get:
tags:
- Rôles
summary: Liste tous les rôles actifs
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/RoleResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/souscriptions/admin/en-attente:
get:
tags:
- Souscription Resource
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
/api/souscriptions/admin/organisation/{organisationId}/active:
get:
tags:
- Souscription Resource
parameters:
- name: organisationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
/api/souscriptions/admin/toutes:
get:
tags:
- Souscription Resource
parameters:
- name: organisationId
in: query
schema:
$ref: "#/components/schemas/UUID"
- name: page
in: query
schema:
format: int32
default: 0
type: integer
- name: size
in: query
schema:
format: int32
default: 1000
type: integer
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
/api/souscriptions/admin/{id}/approuver:
post:
tags:
- Souscription Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
/api/souscriptions/admin/{id}/rejeter:
post:
tags:
- Souscription Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
type: object
additionalProperties:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
/api/souscriptions/confirmer-paiement:
post:
tags:
- Souscription Resource
parameters:
- name: id
in: query
schema:
$ref: "#/components/schemas/UUID"
- name: wave_id
in: query
schema:
type: string
responses:
"200":
description: OK
/api/souscriptions/demande:
post:
tags:
- Souscription Resource
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/SouscriptionDemandeRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak: []
/api/souscriptions/formules:
get:
tags:
- Souscription Resource
responses:
"200":
description: OK
/api/souscriptions/ma-souscription:
get:
tags:
- Souscription Resource
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak: []
/api/souscriptions/{id}/initier-paiement:
post:
tags:
- Souscription Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak: []
/api/status:
get:
tags:
- Status
summary: Vérifier le statut du serveur
responses:
"200":
description: OK
/api/suggestions:
get:
tags:
- Suggestions
summary: Lister toutes les suggestions
responses:
"200":
description: Liste des suggestions récupérée avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
post:
tags:
- Suggestions
summary: Créer une nouvelle suggestion
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateSuggestionRequest"
responses:
"201":
description: Suggestion créée avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/suggestions/statistiques:
get:
tags:
- Suggestions
summary: Obtenir les statistiques des suggestions
responses:
"200":
description: Statistiques récupérées avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/suggestions/{id}/voter:
post:
tags:
- Suggestions
summary: Voter pour une suggestion
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: utilisateurId
in: query
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Vote enregistré avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/system/audit/report:
get:
tags:
- Système
summary: Générer un rapport d'audit
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MODERATEUR
/api/system/auth/logout-all:
post:
tags:
- Système
summary: Forcer la déconnexion de tous les utilisateurs
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
/api/system/backup/create:
post:
tags:
- Système
summary: Créer une sauvegarde du système
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/system/cache/clear:
post:
tags:
- Système
summary: Vider le cache système
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/system/cache/stats:
get:
tags:
- Système
summary: Récupérer les statistiques du cache système
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/CacheStatsResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MODERATEUR
/api/system/config:
get:
tags:
- Système
summary: Récupérer la configuration système
description: Retourne la configuration système complète
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SystemConfigResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MODERATEUR
put:
tags:
- Système
summary: Mettre à jour la configuration système
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateSystemConfigRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SystemConfigResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/system/data/purge:
post:
tags:
- Système
summary: Purger les données expirées (RGPD)
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
/api/system/database/optimize:
post:
tags:
- Système
summary: Optimiser la base de données (VACUUM ANALYZE)
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/system/gdpr/export:
post:
tags:
- Système
summary: Initier un export RGPD des données utilisateurs
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
/api/system/logs/cleanup:
post:
tags:
- Système
summary: Nettoyer les anciens logs selon la politique de rétention
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/system/logs/export:
get:
tags:
- Système
summary: Exporter les logs des dernières 24h
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/system/maintenance/emergency:
post:
tags:
- Système
summary: Activer le mode maintenance d'urgence
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
/api/system/maintenance/schedule:
post:
tags:
- Système
summary: Planifier une maintenance
parameters:
- name: reason
in: query
schema:
type: string
- name: scheduledAt
in: query
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/system/metrics:
get:
tags:
- Système
summary: Récupérer les métriques système en temps réel
description: "Retourne toutes les métriques système (CPU, RAM, disque, utilisateurs\
\ actifs, etc.)"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SystemMetricsResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MODERATEUR
/api/system/performance/analyze:
post:
tags:
- Système
summary: Analyser les performances du système
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/system/reports/usage:
get:
tags:
- Système
summary: Générer un rapport d'utilisation du système
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/system/sessions/cleanup:
post:
tags:
- Système
summary: Nettoyer les sessions expirées
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/system/test/database:
post:
tags:
- Système
summary: Tester la connexion à la base de données
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SystemTestResultResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/system/test/email:
post:
tags:
- Système
summary: Tester la configuration email
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SystemTestResultResponse"
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/system/updates/check:
get:
tags:
- Système
summary: Vérifier les mises à jour disponibles
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/tickets:
post:
tags:
- Tickets
summary: Créer un nouveau ticket
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateTicketRequest"
responses:
"201":
description: Ticket créé avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/tickets/utilisateur/{utilisateurId}:
get:
tags:
- Tickets
summary: Lister les tickets d'un utilisateur
parameters:
- name: utilisateurId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Liste des tickets récupérée avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/tickets/utilisateur/{utilisateurId}/statistiques:
get:
tags:
- Tickets
summary: Obtenir les statistiques des tickets d'un utilisateur
parameters:
- name: utilisateurId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Statistiques récupérées avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/tickets/{id}:
get:
tags:
- Tickets
summary: Récupérer un ticket par ID
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Ticket trouvé
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- USER
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/v1/agricole/campagnes:
post:
tags:
- Campagne Agricole Resource
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CampagneAgricoleDTO"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- COOP_RESP
/api/v1/agricole/campagnes/cooperative/{organisationId}:
get:
tags:
- Campagne Agricole Resource
parameters:
- name: organisationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- COOP_RESP
/api/v1/agricole/campagnes/{id}:
get:
tags:
- Campagne Agricole Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- COOP_RESP
- MEMBRE
- USER
/api/v1/analytics/dashboard/widgets:
get:
tags:
- Analytics
summary: Obtenir les widgets du tableau de bord
description: Récupère tous les widgets configurés pour le tableau de bord de
l'utilisateur
parameters:
- name: organisationId
in: query
description: ID de l'organisation (optionnel)
schema:
$ref: "#/components/schemas/UUID"
- name: utilisateurId
in: query
description: ID de l'utilisateur
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Widgets récupérés avec succès
"403":
description: Accès non autorisé
"401":
description: Not Authorized
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/v1/analytics/evolutions:
get:
tags:
- Analytics
summary: Obtenir les évolutions des KPI
description: Récupère les évolutions des KPI par rapport à la période précédente
parameters:
- name: organisationId
in: query
description: ID de l'organisation (optionnel)
schema:
$ref: "#/components/schemas/UUID"
- name: periode
in: query
description: Période d'analyse
required: true
schema:
$ref: "#/components/schemas/PeriodeAnalyse"
responses:
"200":
description: Évolutions récupérées avec succès
"400":
description: Paramètres invalides
"403":
description: Accès non autorisé
"401":
description: Not Authorized
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/v1/analytics/kpis:
get:
tags:
- Analytics
summary: Obtenir tous les KPI
description: Récupère tous les KPI calculés pour une organisation et période
données
parameters:
- name: organisationId
in: query
description: ID de l'organisation (optionnel)
schema:
$ref: "#/components/schemas/UUID"
- name: periode
in: query
description: Période d'analyse
required: true
schema:
$ref: "#/components/schemas/PeriodeAnalyse"
responses:
"200":
description: KPI récupérés avec succès
"400":
description: Paramètres invalides
"403":
description: Accès non autorisé
"401":
description: Not Authorized
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/v1/analytics/metriques/{typeMetrique}:
get:
tags:
- Analytics
summary: Calculer une métrique analytics
description: Calcule une métrique spécifique pour une période et organisation
données
parameters:
- name: typeMetrique
in: path
description: Type de métrique à calculer
required: true
schema:
$ref: "#/components/schemas/TypeMetrique"
- name: organisationId
in: query
description: ID de l'organisation (optionnel)
schema:
$ref: "#/components/schemas/UUID"
- name: periode
in: query
description: Période d'analyse
required: true
schema:
$ref: "#/components/schemas/PeriodeAnalyse"
responses:
"200":
description: Métrique calculée avec succès
"400":
description: Paramètres invalides
"403":
description: Accès non autorisé
"401":
description: Not Authorized
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/v1/analytics/performance-globale:
get:
tags:
- Analytics
summary: Calculer la performance globale
description: Calcule le score de performance globale de l'organisation
parameters:
- name: organisationId
in: query
description: ID de l'organisation (optionnel)
schema:
$ref: "#/components/schemas/UUID"
- name: periode
in: query
description: Période d'analyse
required: true
schema:
$ref: "#/components/schemas/PeriodeAnalyse"
responses:
"200":
description: Performance globale calculée avec succès
"403":
description: Accès non autorisé
"401":
description: Not Authorized
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- SUPER_ADMIN
/api/v1/analytics/periodes-analyse:
get:
tags:
- Analytics
summary: Obtenir les périodes d'analyse disponibles
description: Récupère la liste de toutes les périodes d'analyse disponibles
responses:
"200":
description: Périodes d'analyse récupérées avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/v1/analytics/tendances/{typeMetrique}:
get:
tags:
- Analytics
summary: Calculer la tendance d'un KPI
description: Calcule l'évolution et les tendances d'un KPI sur une période donnée
parameters:
- name: typeMetrique
in: path
description: Type de métrique pour la tendance
required: true
schema:
$ref: "#/components/schemas/TypeMetrique"
- name: organisationId
in: query
description: ID de l'organisation (optionnel)
schema:
$ref: "#/components/schemas/UUID"
- name: periode
in: query
description: Période d'analyse
required: true
schema:
$ref: "#/components/schemas/PeriodeAnalyse"
responses:
"200":
description: Tendance calculée avec succès
"400":
description: Paramètres invalides
"403":
description: Accès non autorisé
"401":
description: Not Authorized
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/v1/analytics/types-metriques:
get:
tags:
- Analytics
summary: Obtenir les types de métriques disponibles
description: Récupère la liste de tous les types de métriques disponibles
responses:
"200":
description: Types de métriques récupérés avec succès
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/v1/collectefonds/campagnes/organisation/{organisationId}:
get:
tags:
- Campagne Collecte Resource
parameters:
- name: organisationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/v1/collectefonds/campagnes/{id}:
get:
tags:
- Campagne Collecte Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/v1/collectefonds/campagnes/{id}/contribuer:
post:
tags:
- Campagne Collecte Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ContributionCollecteDTO"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- MEMBRE
- USER
/api/v1/culte/dons:
post:
tags:
- Don Religieux Resource
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DonReligieuxDTO"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/v1/culte/dons/organisation/{organisationId}:
get:
tags:
- Don Religieux Resource
parameters:
- name: organisationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- CULTE_RESP
/api/v1/culte/dons/{id}:
get:
tags:
- Don Religieux Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- CULTE_RESP
- MEMBRE
- USER
/api/v1/dashboard/activities:
get:
tags:
- Dashboard
summary: Récupérer les activités récentes
description: Retourne la liste des activités récentes avec pagination
parameters:
- name: limit
in: query
description: Nombre maximum d'activités à retourner
required: false
schema:
format: int32
default: 10
type: integer
- name: organizationId
in: query
description: ID de l'organisation
required: true
schema:
type: string
- name: userId
in: query
description: ID de l'utilisateur
required: true
schema:
type: string
responses:
"200":
description: Activités récupérées avec succès
"400":
description: Paramètres invalides
"500":
description: Erreur serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
- SUPER_ADMIN
/api/v1/dashboard/data:
get:
tags:
- Dashboard
summary: Récupérer toutes les données du dashboard
description: "Retourne les statistiques, activités récentes et événements à\
\ venir"
parameters:
- name: organizationId
in: query
description: ID de l'organisation
required: true
schema:
type: string
- name: userId
in: query
description: ID de l'utilisateur
required: true
schema:
type: string
responses:
"200":
description: Données récupérées avec succès
"400":
description: Paramètres invalides
"500":
description: Erreur serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
- SUPER_ADMIN
/api/v1/dashboard/events/upcoming:
get:
tags:
- Dashboard
summary: Récupérer les événements à venir
description: Retourne la liste des événements à venir avec pagination
parameters:
- name: limit
in: query
description: Nombre maximum d'événements à retourner
required: false
schema:
format: int32
default: 5
type: integer
- name: organizationId
in: query
description: ID de l'organisation
required: true
schema:
type: string
- name: userId
in: query
description: ID de l'utilisateur
required: true
schema:
type: string
responses:
"200":
description: Événements récupérés avec succès
"400":
description: Paramètres invalides
"500":
description: Erreur serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
- SUPER_ADMIN
/api/v1/dashboard/health:
get:
tags:
- Dashboard
summary: Vérifier la santé du service dashboard
description: Retourne le statut de santé du service dashboard
responses:
"200":
description: Service en bonne santé
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
- SUPER_ADMIN
/api/v1/dashboard/refresh:
post:
tags:
- Dashboard
summary: Rafraîchir les données du dashboard
description: Force la mise à jour des données du dashboard
parameters:
- name: organizationId
in: query
description: ID de l'organisation
required: true
schema:
type: string
- name: userId
in: query
description: ID de l'utilisateur
required: true
schema:
type: string
responses:
"200":
description: Données rafraîchies avec succès
"400":
description: Paramètres invalides
"500":
description: Erreur serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
- SUPER_ADMIN
/api/v1/dashboard/stats:
get:
tags:
- Dashboard
summary: Récupérer les statistiques du dashboard
description: Retourne uniquement les statistiques principales
parameters:
- name: organizationId
in: query
description: ID de l'organisation
required: true
schema:
type: string
- name: userId
in: query
description: ID de l'utilisateur
required: true
schema:
type: string
responses:
"200":
description: Statistiques récupérées avec succès
"400":
description: Paramètres invalides
"500":
description: Erreur serveur
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
- SUPER_ADMIN
/api/v1/epargne/comptes:
post:
tags:
- Compte Epargne Resource
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CompteEpargneRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MUTUELLE_RESP
/api/v1/epargne/comptes/membre/{membreId}:
get:
tags:
- Compte Epargne Resource
parameters:
- name: membreId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MUTUELLE_RESP
- MEMBRE
- USER
/api/v1/epargne/comptes/mes-comptes:
get:
tags:
- Compte Epargne Resource
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MUTUELLE_RESP
- MEMBRE
- USER
/api/v1/epargne/comptes/organisation/{organisationId}:
get:
tags:
- Compte Epargne Resource
parameters:
- name: organisationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MUTUELLE_RESP
/api/v1/epargne/comptes/{id}:
get:
tags:
- Compte Epargne Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MUTUELLE_RESP
- MEMBRE
- USER
/api/v1/epargne/comptes/{id}/statut:
patch:
tags:
- Compte Epargne Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: statut
in: query
schema:
$ref: "#/components/schemas/StatutCompteEpargne"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MUTUELLE_RESP
/api/v1/epargne/transactions:
post:
tags:
- Transaction Epargne Resource
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/TransactionEpargneRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MUTUELLE_RESP
- MEMBRE
- USER
/api/v1/epargne/transactions/compte/{compteId}:
get:
tags:
- Transaction Epargne Resource
parameters:
- name: compteId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MUTUELLE_RESP
- MEMBRE
- USER
/api/v1/epargne/transactions/transfert:
post:
tags:
- Transaction Epargne Resource
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/TransactionEpargneRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MUTUELLE_RESP
- MEMBRE
- USER
/api/v1/gouvernance/organigramme:
post:
tags:
- Echelon Organigramme Resource
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/EchelonOrganigrammeDTO"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
/api/v1/gouvernance/organigramme/organisation/{organisationId}:
get:
tags:
- Echelon Organigramme Resource
parameters:
- name: organisationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/v1/gouvernance/organigramme/{id}:
get:
tags:
- Echelon Organigramme Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/v1/mutuelle/credits:
post:
tags:
- Demande Credit Resource
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DemandeCreditRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- MEMBRE
- USER
/api/v1/mutuelle/credits/membre/{membreId}:
get:
tags:
- Demande Credit Resource
parameters:
- name: membreId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MUTUELLE_RESP
- MEMBRE
- USER
/api/v1/mutuelle/credits/{id}:
get:
tags:
- Demande Credit Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MUTUELLE_RESP
- MEMBRE
- USER
/api/v1/mutuelle/credits/{id}/approbation:
post:
tags:
- Demande Credit Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: duree
in: query
schema:
format: int32
type: integer
- name: montant
in: query
schema:
type: number
- name: notes
in: query
schema:
type: string
- name: taux
in: query
schema:
type: number
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MUTUELLE_RESP
/api/v1/mutuelle/credits/{id}/decaissement:
post:
tags:
- Demande Credit Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: datePremiereEcheance
in: query
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MUTUELLE_RESP
/api/v1/mutuelle/credits/{id}/statut:
patch:
tags:
- Demande Credit Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: notes
in: query
schema:
type: string
- name: statut
in: query
schema:
$ref: "#/components/schemas/StatutDemandeCredit"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MUTUELLE_RESP
/api/v1/ong/projets:
post:
tags:
- Projet Ong Resource
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ProjetOngDTO"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- ONG_RESP
/api/v1/ong/projets/ong/{organisationId}:
get:
tags:
- Projet Ong Resource
parameters:
- name: organisationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- ONG_RESP
/api/v1/ong/projets/{id}:
get:
tags:
- Projet Ong Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/v1/ong/projets/{id}/statut:
patch:
tags:
- Projet Ong Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: statut
in: query
schema:
$ref: "#/components/schemas/StatutProjetOng"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- ONG_RESP
/api/v1/registre/agrements:
post:
tags:
- Agrement Professionnel Resource
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AgrementProfessionnelDTO"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- REGISTRE_RESP
/api/v1/registre/agrements/membre/{membreId}:
get:
tags:
- Agrement Professionnel Resource
parameters:
- name: membreId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/v1/registre/agrements/organisation/{organisationId}:
get:
tags:
- Agrement Professionnel Resource
parameters:
- name: organisationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- REGISTRE_RESP
/api/v1/registre/agrements/{id}:
get:
tags:
- Agrement Professionnel Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/v1/tontines:
post:
tags:
- Tontine Resource
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/TontineRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- TONTINE_RESP
/api/v1/tontines/organisation/{organisationId}:
get:
tags:
- Tontine Resource
parameters:
- name: organisationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- TONTINE_RESP
/api/v1/tontines/{id}:
get:
tags:
- Tontine Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- TONTINE_RESP
- MEMBRE
- USER
/api/v1/tontines/{id}/statut:
patch:
tags:
- Tontine Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: statut
in: query
schema:
$ref: "#/components/schemas/StatutTontine"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- TONTINE_RESP
/api/v1/types-reference:
get:
tags:
- Types de référence
summary: Lister par domaine
description: Récupère les valeurs actives d'un domaine donné
parameters:
- name: domaine
in: query
description: Domaine fonctionnel
required: true
schema:
type: string
example: STATUT_ORGANISATION
- name: organisationId
in: query
description: UUID de l'organisation
schema:
$ref: "#/components/schemas/UUID"
example: 550e8400-e29b-41d4-a716-446655440000
responses:
"200":
description: Liste récupérée
content:
application/json:
schema:
$ref: "#/components/schemas/TypeReferenceResponse"
"401":
description: Non authentifié
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MEMBRE
- USER
post:
tags:
- Types de référence
summary: Créer une référence
description: Ajoute une nouvelle valeur dans un domaine
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateTypeReferenceRequest"
responses:
"201":
description: Référence créée
"400":
description: Données invalides ou code dupliqué
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
/api/v1/types-reference/defaut:
get:
tags:
- Types de référence
summary: Valeur par défaut
description: Récupère la valeur par défaut d'un domaine
parameters:
- name: domaine
in: query
description: Domaine fonctionnel
required: true
schema:
type: string
- name: organisationId
in: query
description: UUID de l'organisation
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MEMBRE
- USER
/api/v1/types-reference/domaines:
get:
tags:
- Types de référence
summary: Lister les domaines
description: Récupère la liste des domaines disponibles
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MEMBRE
- USER
/api/v1/types-reference/{id}:
get:
tags:
- Types de référence
summary: Détail d'une référence
description: Récupère une référence par son identifiant
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Référence trouvée
"404":
description: Référence non trouvée
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
- MEMBRE
- USER
put:
tags:
- Types de référence
summary: Modifier une référence
description: Met à jour une valeur existante
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateTypeReferenceRequest"
responses:
"200":
description: Référence modifiée
"400":
description: Données invalides
"404":
description: Référence non trouvée
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
- ADMIN
delete:
tags:
- Types de référence
summary: Supprimer une référence
description: Supprime une valeur non système
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"204":
description: Référence supprimée
"400":
description: Valeur système non supprimable
"404":
description: Référence non trouvée
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- SUPER_ADMIN
/api/v1/vote/campagnes:
post:
tags:
- Campagne Vote Resource
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CampagneVoteRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- VOTE_RESP
/api/v1/vote/campagnes/organisation/{organisationId}:
get:
tags:
- Campagne Vote Resource
parameters:
- name: organisationId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- VOTE_RESP
/api/v1/vote/campagnes/{id}:
get:
tags:
- Campagne Vote Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- VOTE_RESP
- MEMBRE
- USER
/api/v1/vote/campagnes/{id}/candidats:
post:
tags:
- Campagne Vote Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CandidatDTO"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- VOTE_RESP
/api/v1/vote/campagnes/{id}/statut:
patch:
tags:
- Campagne Vote Resource
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
- name: statut
in: query
schema:
$ref: "#/components/schemas/StatutVote"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- SUPER_ADMIN
- ADMIN_ORGANISATION
- VOTE_RESP
/api/versements/declarer-manuel:
post:
tags:
- Versements
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/DeclarerVersementManuelRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- MEMBRE
- ADMIN
- ADMIN_ORGANISATION
/api/versements/initier-depot-epargne:
post:
tags:
- Versements
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/InitierDepotEpargneRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- MEMBRE
- MEMBRE_ACTIF
- ADMIN
- ADMIN_ORGANISATION
- USER
/api/versements/initier-wave:
post:
tags:
- Versements
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/InitierVersementWaveRequest"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- MEMBRE
- MEMBRE_ACTIF
- ADMIN
- ADMIN_ORGANISATION
- USER
/api/versements/membre/{membreId}:
get:
tags:
- Versements
parameters:
- name: membreId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/versements/mes-versements:
get:
tags:
- Versements
parameters:
- name: limit
in: query
schema:
format: int32
default: 20
type: integer
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- MEMBRE
- ADMIN
- ADMIN_ORGANISATION
/api/versements/reference/{numeroReference}:
get:
tags:
- Versements
parameters:
- name: numeroReference
in: path
required: true
schema:
type: string
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/versements/statut/{intentionId}:
get:
tags:
- Versements
parameters:
- name: intentionId
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- MEMBRE
- MEMBRE_ACTIF
- ADMIN
- ADMIN_ORGANISATION
- USER
/api/versements/{id}:
get:
tags:
- Versements
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/versements/{id}/annuler:
post:
tags:
- Versements
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/versements/{id}/valider:
post:
tags:
- Versements
parameters:
- name: id
in: path
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
/api/wave-redirect/error:
get:
tags:
- Wave Redirect Resource
parameters:
- name: ref
in: query
schema:
type: string
responses:
"200":
description: OK
/api/wave-redirect/mock-complete:
get:
tags:
- Wave Redirect Resource
parameters:
- name: ref
in: query
schema:
type: string
responses:
"200":
description: OK
/api/wave-redirect/success:
get:
tags:
- Wave Redirect Resource
parameters:
- name: ref
in: query
schema:
type: string
responses:
"200":
description: OK
/api/wave-redirect/web-success:
get:
tags:
- Wave Redirect Resource
parameters:
- name: ref
in: query
schema:
type: string
responses:
"200":
description: OK
/api/wave/comptes:
post:
tags:
- Wave Mobile Money
summary: Créer un compte Wave
description: Crée un nouveau compte Wave pour un membre ou une organisation
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CompteWaveDTO"
responses:
"201":
description: Compte Wave créé avec succès
"400":
description: Données invalides
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/wave/comptes/organisation/{organisationId}:
get:
tags:
- Wave Mobile Money
summary: Lister les comptes Wave d'une organisation
description: Retourne tous les comptes Wave associés à une organisation
parameters:
- name: organisationId
in: path
description: UUID de l'organisation
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Liste des comptes Wave
"400":
description: Erreur lors de la récupération
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/wave/comptes/telephone/{numeroTelephone}:
get:
tags:
- Wave Mobile Money
summary: Trouver un compte Wave par téléphone
description: Recherche un compte Wave par numéro de téléphone
parameters:
- name: numeroTelephone
in: path
description: Numéro de téléphone associé au compte Wave
required: true
schema:
type: string
responses:
"200":
description: Compte Wave trouvé
"404":
description: Compte Wave non trouvé pour ce numéro
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/wave/comptes/{id}:
get:
tags:
- Wave Mobile Money
summary: Trouver un compte Wave par ID
description: Recherche un compte Wave par son identifiant unique
parameters:
- name: id
in: path
description: UUID du compte Wave
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Compte Wave trouvé
"404":
description: Compte Wave non trouvé
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
put:
tags:
- Wave Mobile Money
summary: Mettre à jour un compte Wave
description: Met à jour les informations d'un compte Wave existant
parameters:
- name: id
in: path
description: UUID du compte Wave
required: true
schema:
$ref: "#/components/schemas/UUID"
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CompteWaveDTO"
responses:
"200":
description: Compte Wave mis à jour
"404":
description: Compte Wave non trouvé
"400":
description: Données invalides
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/wave/comptes/{id}/verifier:
post:
tags:
- Wave Mobile Money
summary: Vérifier un compte Wave
description: Vérifie la validité d'un compte Wave
parameters:
- name: id
in: path
description: UUID du compte Wave
required: true
schema:
$ref: "#/components/schemas/UUID"
responses:
"200":
description: Compte Wave vérifié
"404":
description: Compte Wave non trouvé
"400":
description: Erreur de vérification
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/wave/transactions:
post:
tags:
- Wave Mobile Money
summary: Créer une transaction Wave
description: Initie une nouvelle transaction de paiement Wave
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/TransactionWaveDTO"
responses:
"201":
description: Transaction Wave créée
"400":
description: Données invalides ou erreur de traitement
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/api/wave/transactions/{waveTransactionId}:
get:
tags:
- Wave Mobile Money
summary: Trouver une transaction Wave
description: Recherche une transaction Wave par son identifiant Wave
parameters:
- name: waveTransactionId
in: path
description: Identifiant Wave de la transaction
required: true
schema:
type: string
responses:
"200":
description: Transaction trouvée
"404":
description: Transaction non trouvée
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
- USER
/api/wave/transactions/{waveTransactionId}/statut:
put:
tags:
- Wave Mobile Money
summary: Mettre à jour le statut d'une transaction
description: "Met à jour le statut d'une transaction Wave (ex: COMPLETED, FAILED)"
parameters:
- name: waveTransactionId
in: path
description: Identifiant Wave de la transaction
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/StatutTransactionWave"
responses:
"200":
description: Statut mis à jour
"404":
description: Transaction non trouvée
"400":
description: Erreur de mise à jour
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- Keycloak:
- ADMIN
- ADMIN_ORGANISATION
- MEMBRE
/auth/callback:
get:
tags:
- Auth Callback Resource
parameters:
- name: code
in: query
schema:
type: string
- name: error
in: query
schema:
type: string
- name: error_description
in: query
schema:
type: string
- name: session_state
in: query
schema:
type: string
- name: state
in: query
schema:
type: string
responses:
"200":
description: OK
components:
schemas:
AdhesionResponse:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
numeroReference:
type: string
membreId:
$ref: "#/components/schemas/UUID"
numeroMembre:
type: string
nomMembre:
type: string
emailMembre:
type: string
organisationId:
$ref: "#/components/schemas/UUID"
nomOrganisation:
type: string
dateDemande:
$ref: "#/components/schemas/LocalDate"
fraisAdhesion:
type: number
montantPaye:
type: number
codeDevise:
type: string
statut:
type: string
dateApprobation:
$ref: "#/components/schemas/LocalDate"
datePaiement:
$ref: "#/components/schemas/LocalDateTime"
methodePaiement:
type: string
referencePaiement:
type: string
motifRejet:
type: string
observations:
type: string
approuvePar:
type: string
dateValidation:
$ref: "#/components/schemas/LocalDate"
payeeIntegralement:
type: boolean
enAttentePaiement:
type: boolean
montantRestant:
type: number
pourcentagePaiement:
format: int32
type: integer
joursDepuisDemande:
format: int64
type: integer
statutLibelle:
type: string
statutSeverity:
type: string
statutIcon:
type: string
methodePaiementLibelle:
type: string
dateDemandeFormatee:
type: string
dateApprobationFormatee:
type: string
datePaiementFormatee:
type: string
fraisAdhesionFormatte:
type: string
montantPayeFormatte:
type: string
montantRestantFormatte:
type: string
AgrementProfessionnelDTO:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nouveau:
type: boolean
membreId:
type: string
organisationId:
type: string
secteurOuOrdre:
type: string
numeroLicenceOuRegistre:
type: string
categorieClassement:
type: string
dateDelivrance:
$ref: "#/components/schemas/LocalDate"
dateExpiration:
$ref: "#/components/schemas/LocalDate"
statut:
$ref: "#/components/schemas/StatutAgrement"
AlertConfigResponse:
type: object
properties:
cpuHighAlertEnabled:
type: boolean
cpuThresholdPercent:
format: int32
type: integer
cpuDurationMinutes:
format: int32
type: integer
memoryLowAlertEnabled:
type: boolean
memoryThresholdPercent:
format: int32
type: integer
criticalErrorAlertEnabled:
type: boolean
errorAlertEnabled:
type: boolean
connectionFailureAlertEnabled:
type: boolean
connectionFailureThreshold:
format: int32
type: integer
connectionFailureWindowMinutes:
format: int32
type: integer
emailNotificationsEnabled:
type: boolean
pushNotificationsEnabled:
type: boolean
smsNotificationsEnabled:
type: boolean
alertEmailRecipients:
type: string
totalAlertsLast24h:
format: int32
type: integer
activeAlerts:
format: int32
type: integer
acknowledgedAlerts:
format: int32
type: integer
acknowledgedPercentage:
format: double
type: number
configValid:
type: boolean
ApiErrorDTO:
description: Réponse d'erreur standard
type: object
properties:
message:
description: Message d'erreur
type: string
ApproveTransactionRequest:
type: object
properties:
comment:
maxLength: 1000
type: string
AssocierOrganisationRequest:
required:
- email
- organisationId
type: object
properties:
email:
pattern: \S
type: string
organisationId:
$ref: "#/components/schemas/UUID"
AuditLogDTO:
description: Entrée d'audit des actions utilisateur
type: object
properties:
id:
description: Identifiant unique (UUID Keycloak)
type: string
example: f47ac10b-58cc-4372-a567-0e02b2c3d479
dateCreation:
description: Date de création
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-15T10:30:00
dateModification:
description: Date de dernière modification
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-15T14:20:00
creeParUsername:
description: Utilisateur ayant créé l'entité
type: string
example: admin@lions.dev
modifieParUsername:
description: Utilisateur ayant modifié l'entité
type: string
example: superadmin@lions.dev
version:
format: int64
description: Numéro de version pour gestion optimiste
type: integer
example: 1
acteurUserId:
description: ID de l'utilisateur qui a effectué l'action
type: string
example: f47ac10b-58cc-4372-a567-0e02b2c3d479
acteurUsername:
description: Username de l'utilisateur qui a effectué l'action
type: string
example: admin@lions.dev
acteurNomComplet:
description: Nom complet de l'acteur
type: string
example: Admin Principal
acteurRoles:
description: Rôles de l'acteur au moment de l'action
type: string
dateAction:
description: Date et heure de l'action
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-15T10:30:00
typeAction:
description: Type d'action effectuée
type: string
allOf:
- $ref: "#/components/schemas/TypeActionAudit"
example: USER_CREATE
ressourceType:
description: Type de ressource affectée
type: string
example: USER
ressourceId:
description: ID de la ressource affectée
type: string
example: a1b2c3d4-e5f6-7890-1234-567890abcdef
ressourceName:
description: Nom/Identifiant de la ressource
type: string
example: jdupont
realmName:
description: Nom du Realm
type: string
example: btpxpress
ipAddress:
description: Adresse IP de l'acteur
type: string
example: 192.168.1.100
userAgent:
description: User-Agent du client
type: string
example: Mozilla/5.0...
geolocation:
description: Localisation géographique
type: string
example: "Abidjan, Côte d'Ivoire"
apiEndpoint:
description: Endpoint API appelé
type: string
example: /api/users/create
httpMethod:
description: Méthode HTTP
type: string
example: POST
description:
description: Description de l'action
type: string
example: Création d'un nouvel utilisateur
detailsJson:
description: Détails de l'action au format JSON
type: string
oldValue:
description: Ancienne valeur (avant modification)
type: string
newValue:
description: Nouvelle valeur (après modification)
type: string
diff:
description: Différences entre ancienne et nouvelle valeur
type: string
success:
description: Succès de l'opération
type: boolean
example: true
errorCode:
description: Code d'erreur (si échec)
type: string
example: USER_ALREADY_EXISTS
errorMessage:
description: Message d'erreur (si échec)
type: string
stackTrace:
description: Trace d'erreur complète (si échec)
type: string
executionTimeMs:
format: int64
description: Durée d'exécution en millisecondes
type: integer
example: 145
sessionId:
description: ID de session/transaction
type: string
example: sess_abc123
correlationId:
description: ID de corrélation (pour tracer requêtes liées)
type: string
example: corr_xyz789
raison:
description: Raison de l'action
type: string
example: Demande du manager
commentaires:
description: Commentaires administratifs
type: string
example: Promotion suite à évaluation annuelle
metadata:
description: Métadonnées supplémentaires
type: object
additionalProperties:
type: string
critique:
description: Indique si l'action est critique
type: boolean
example: false
requiresAlert:
description: Indique si l'action nécessite une alerte
type: boolean
example: false
notified:
description: Indique si l'action a été notifiée
type: boolean
example: true
successful:
type: boolean
failed:
type: boolean
summary:
type: string
AuthorizedRealmsDTO:
description: Liste des realms autorisés pour un utilisateur
type: object
properties:
realms:
description: Liste des realms (peut être vide si super admin)
type: array
items:
type: string
isSuperAdmin:
description: L'utilisateur est super admin
type: boolean
superAdmin:
type: boolean
BackupConfigResponse:
type: object
properties:
autoBackupEnabled:
type: boolean
frequency:
type: string
retention:
type: string
retentionDays:
format: int32
type: integer
backupTime:
type: string
includeDatabase:
type: boolean
includeFiles:
type: boolean
includeConfiguration:
type: boolean
lastBackup:
$ref: "#/components/schemas/LocalDateTime"
nextScheduledBackup:
$ref: "#/components/schemas/LocalDateTime"
totalBackups:
format: int32
type: integer
totalSizeBytes:
format: int64
type: integer
totalSizeFormatted:
type: string
BackupResponse:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
name:
type: string
description:
type: string
type:
type: string
sizeBytes:
format: int64
type: integer
sizeFormatted:
type: string
status:
type: string
createdAt:
$ref: "#/components/schemas/LocalDateTime"
completedAt:
$ref: "#/components/schemas/LocalDateTime"
createdBy:
type: string
includesDatabase:
type: boolean
includesFiles:
type: boolean
includesConfiguration:
type: boolean
filePath:
type: string
errorMessage:
type: string
BaseDTO:
description: DTO de base contenant les attributs communs à tous les objets
type: object
properties:
id:
description: Identifiant unique (UUID Keycloak)
type: string
example: f47ac10b-58cc-4372-a567-0e02b2c3d479
dateCreation:
description: Date de création
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-15T10:30:00
dateModification:
description: Date de dernière modification
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-15T14:20:00
creeParUsername:
description: Utilisateur ayant créé l'entité
type: string
example: admin@lions.dev
modifieParUsername:
description: Utilisateur ayant modifié l'entité
type: string
example: superadmin@lions.dev
version:
format: int64
description: Numéro de version pour gestion optimiste
type: integer
example: 1
BeneficiaireAideDTO:
required:
- nomComplet
- relationDemandeur
type: object
properties:
id:
type: string
nomComplet:
maxLength: 100
pattern: \S
type: string
relationDemandeur:
pattern: \S
type: string
dateNaissance:
$ref: "#/components/schemas/LocalDate"
age:
format: int32
type: integer
genre:
type: string
telephone:
pattern: "^\\+?[0-9]{8,15}$"
type: string
email:
type: string
adresse:
maxLength: 200
type: string
situationParticuliere:
maxLength: 500
type: string
estDemandeurPrincipal:
type: boolean
pourcentageAide:
format: double
maximum: 100
minimum: 0
type: number
montantSpecifique:
format: double
minimum: 0
type: number
BloquerMembreRequest:
required:
- membreABloquerId
- organisationId
type: object
properties:
membreABloquerId:
$ref: "#/components/schemas/UUID"
organisationId:
$ref: "#/components/schemas/UUID"
CacheEntry:
type: object
properties:
name:
type: string
sizeBytes:
format: int64
type: integer
entries:
format: int32
type: integer
hitRate:
format: double
type: number
hits:
format: int64
type: integer
misses:
format: int64
type: integer
lastAccessed:
$ref: "#/components/schemas/LocalDateTime"
CacheStatsResponse:
type: object
properties:
totalSizeBytes:
format: int64
type: integer
totalSizeFormatted:
type: string
totalEntries:
format: int32
type: integer
hitRate:
format: double
type: number
hits:
format: int64
type: integer
misses:
format: int64
type: integer
lastCleared:
$ref: "#/components/schemas/LocalDateTime"
caches:
type: object
additionalProperties:
$ref: "#/components/schemas/CacheEntry"
CampagneAgricoleDTO:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nouveau:
type: boolean
organisationCoopId:
type: string
designation:
type: string
typeCulturePrincipale:
type: string
surfaceTotaleEstimeeHectares:
type: number
volumePrevisionnelTonnes:
type: number
volumeReelTonnes:
type: number
statut:
$ref: "#/components/schemas/StatutCampagneAgricole"
CampagneCollecteResponse:
description: Campagne de levée de fonds (Crowdfunding / ONG)
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nouveau:
type: boolean
organisationId:
type: string
titre:
type: string
courteDescription:
type: string
htmlDescriptionComplete:
type: string
imageBanniereUrl:
type: string
objectifFinancier:
description: Objectif monétaire escompté
type: number
montantCollecteActuel:
description: Somme totale déjà récoltée sur cette campagne
type: number
nombreDonateurs:
format: int32
type: integer
statut:
$ref: "#/components/schemas/StatutCampagneCollecte"
dateOuverture:
$ref: "#/components/schemas/LocalDateTime"
dateCloturePrevue:
$ref: "#/components/schemas/LocalDateTime"
estPublique:
type: boolean
CampagneVoteRequest:
description: Requête de création d'une campagne de vote électronique
required:
- titre
- organisationId
- typeVote
- modeScrutin
- dateOuverture
- dateFermeture
type: object
properties:
titre:
pattern: \S
type: string
descriptionOuResolution:
type: string
organisationId:
pattern: \S
type: string
typeVote:
$ref: "#/components/schemas/TypeVote"
modeScrutin:
$ref: "#/components/schemas/ModeScrutin"
dateOuverture:
$ref: "#/components/schemas/LocalDateTime"
dateFermeture:
$ref: "#/components/schemas/LocalDateTime"
restreindreMembresAJour:
description: Restreindre le vote aux membres à jour de cotisations (Optionnel)
type: boolean
autoriserVoteBlanc:
description: Permettre le vote blanc (Optionnel)
type: boolean
CandidatDTO:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nouveau:
type: boolean
campagneVoteId:
type: string
nomCandidatureOuChoix:
type: string
membreIdAssocie:
type: string
professionDeFoi:
type: string
photoUrl:
type: string
nombreDeVoix:
format: int32
type: integer
pourcentageObtenu:
type: number
CommentaireAideResponse:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
contenu:
type: string
typeCommentaire:
type: string
auteurId:
$ref: "#/components/schemas/UUID"
auteurNom:
type: string
auteurRole:
type: string
estPrive:
type: boolean
estImportant:
type: boolean
commentaireParentId:
$ref: "#/components/schemas/UUID"
reponses:
type: array
items:
$ref: "#/components/schemas/CommentaireAideResponse"
piecesJointes:
type: array
items:
$ref: "#/components/schemas/PieceJustificativeDTO"
mentionsUtilisateurs:
type: array
items:
type: string
estModifie:
type: boolean
nombreReactions:
format: int32
type: integer
estResolu:
type: boolean
dateResolution:
$ref: "#/components/schemas/LocalDateTime"
resoluteurId:
$ref: "#/components/schemas/UUID"
CompteEpargneRequest:
description: Requête d'ouverture d'un compte d'épargne
required:
- membreId
- organisationId
- typeCompte
type: object
properties:
membreId:
description: ID UUID du Membre détenteur
pattern: \S
type: string
organisationId:
description: ID UUID de l'Organisation / Mutuelle
pattern: \S
type: string
typeCompte:
description: Le type du compte d'épargne demandé
type: string
allOf:
- $ref: "#/components/schemas/TypeCompteEpargne"
notesOuverture:
description: Notes ou détails éventuels lors de l'ouverture
type: string
CompteEpargneResponse:
description: Réponse des informations d'un compte épargne
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nouveau:
type: boolean
membreId:
type: string
organisationId:
type: string
numeroCompte:
description: "Numéro de compte généré de manière unique (ex: MEC-00123)"
type: string
typeCompte:
$ref: "#/components/schemas/TypeCompteEpargne"
soldeActuel:
description: Solde principal disponible
type: number
soldeBloque:
description: Fonds gelés pour garantie de crédits
type: number
statut:
$ref: "#/components/schemas/StatutCompteEpargne"
dateOuverture:
$ref: "#/components/schemas/LocalDate"
dateDerniereTransaction:
$ref: "#/components/schemas/LocalDate"
description:
type: string
CompteWaveDTO:
required:
- numeroTelephone
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nouveau:
type: boolean
numeroTelephone:
pattern: "^\\+225[0-9]{8}$"
type: string
statutCompte:
$ref: "#/components/schemas/StatutCompteWave"
waveAccountId:
type: string
environnement:
type: string
dateDerniereVerification:
$ref: "#/components/schemas/LocalDateTime"
commentaire:
type: string
organisationId:
$ref: "#/components/schemas/UUID"
membreId:
$ref: "#/components/schemas/UUID"
ContactProposantDTO:
type: object
properties:
telephonePrincipal:
pattern: "^\\+?[0-9]{8,15}$"
type: string
telephoneSecondaire:
pattern: "^\\+?[0-9]{8,15}$"
type: string
email:
type: string
emailSecondaire:
type: string
whatsapp:
pattern: "^\\+?[0-9]{8,15}$"
type: string
telegram:
maxLength: 50
type: string
autresContacts:
type: object
additionalProperties:
type: string
adressePhysique:
maxLength: 200
type: string
rencontresPhysiquesPossibles:
type: boolean
appelsAcceptes:
type: boolean
smsAcceptes:
type: boolean
emailsAcceptes:
type: boolean
horairesDisponibilite:
maxLength: 200
type: string
languesPreferees:
type: array
items:
type: string
instructionsSpeciales:
maxLength: 300
type: string
ContactUrgenceDTO:
required:
- nomComplet
- relation
- telephonePrincipal
type: object
properties:
nomComplet:
maxLength: 100
pattern: \S
type: string
relation:
maxLength: 50
pattern: \S
type: string
telephonePrincipal:
pattern: "^\\+?[0-9]{8,15}$"
type: string
telephoneSecondaire:
pattern: "^\\+?[0-9]{8,15}$"
type: string
email:
type: string
adresse:
maxLength: 200
type: string
disponibilite:
maxLength: 100
type: string
peutPrendreDecisions:
type: boolean
notificationAutomatique:
type: boolean
commentaires:
maxLength: 300
type: string
ContributionCollecteDTO:
description: Don transactionnel reçu pour une campagne de collecte
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nouveau:
type: boolean
campagneId:
type: string
membreDonateurId:
description: Id du membre (Null si le don est public/externe)
type: string
aliasDonateur:
description: Nom affiché si don public ou pour le mur de contributeurs
type: string
estAnonyme:
type: boolean
montantSoutien:
type: number
messageSoutien:
type: string
dateContribution:
$ref: "#/components/schemas/LocalDateTime"
transactionPaiementId:
type: string
statutPaiement:
$ref: "#/components/schemas/StatutTransactionWave"
CotisationResponse:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
numeroReference:
type: string
membreId:
$ref: "#/components/schemas/UUID"
nomMembre:
type: string
nomCompletMembre:
type: string
numeroMembre:
type: string
initialesMembre:
type: string
typeMembre:
type: string
organisationId:
$ref: "#/components/schemas/UUID"
nomOrganisation:
type: string
regionOrganisation:
type: string
iconeOrganisation:
type: string
typeCotisation:
type: string
type:
type: string
typeCotisationLibelle:
type: string
typeLibelle:
type: string
typeSeverity:
type: string
typeIcon:
type: string
libelle:
type: string
description:
type: string
montantDu:
type: number
montant:
type: number
montantFormatte:
type: string
montantPaye:
type: number
montantRestant:
type: number
codeDevise:
type: string
statut:
type: string
statutLibelle:
type: string
statutSeverity:
type: string
statutIcon:
type: string
dateEcheance:
$ref: "#/components/schemas/LocalDate"
dateEcheanceFormattee:
type: string
retardCouleur:
type: string
retardTexte:
type: string
datePaiementFormattee:
type: string
modePaiementIcon:
type: string
modePaiementLibelle:
type: string
datePaiement:
$ref: "#/components/schemas/LocalDateTime"
periode:
type: string
annee:
format: int32
type: integer
mois:
format: int32
type: integer
observations:
type: string
recurrente:
type: boolean
nombreRappels:
format: int32
type: integer
dateDernierRappel:
$ref: "#/components/schemas/LocalDateTime"
valideParId:
$ref: "#/components/schemas/UUID"
nomValidateur:
type: string
dateValidation:
$ref: "#/components/schemas/LocalDateTime"
pourcentagePaiement:
format: int32
type: integer
joursRetard:
format: int64
type: integer
enRetard:
type: boolean
methodePaiement:
type: string
referencePaiement:
type: string
waveSessionId:
type: string
montantDuFormatte:
type: string
montantPayeFormatte:
type: string
montantRestantFormatte:
type: string
montantRestantPositif:
type: boolean
methodePaiementLibelle:
type: string
CotisationSummaryResponse:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
numeroReference:
type: string
nomMembre:
type: string
montantDu:
type: number
montantPaye:
type: number
statut:
type: string
statutLibelle:
type: string
dateEcheance:
$ref: "#/components/schemas/LocalDate"
annee:
format: int32
type: integer
actif:
type: boolean
CountDTO:
description: Réponse de comptage générique
type: object
properties:
count:
format: int64
description: Nombre d'éléments
type: integer
CreateAdhesionRequest:
required:
- numeroReference
- membreId
- organisationId
- dateDemande
- fraisAdhesion
- codeDevise
type: object
properties:
numeroReference:
maxLength: 50
pattern: \S
type: string
membreId:
$ref: "#/components/schemas/UUID"
organisationId:
$ref: "#/components/schemas/UUID"
dateDemande:
$ref: "#/components/schemas/LocalDate"
fraisAdhesion:
minimum: 0
exclusiveMinimum: true
pattern: "^\\d{1,10}([.]\\d{1,2})?$"
type: number
codeDevise:
pattern: "^[A-Z]{3}$"
type: string
observations:
maxLength: 1000
type: string
CreateAuditLogRequest:
type: object
properties:
typeAction:
type: string
severite:
type: string
utilisateur:
type: string
role:
type: string
module:
type: string
description:
type: string
details:
type: string
ipAddress:
type: string
userAgent:
type: string
sessionId:
type: string
dateHeure:
$ref: "#/components/schemas/LocalDateTime"
donneesAvant:
type: string
donneesApres:
type: string
entiteId:
type: string
entiteType:
type: string
CreateBackupRequest:
required:
- name
type: object
properties:
name:
pattern: \S
type: string
description:
type: string
type:
type: string
includeDatabase:
type: boolean
includeFiles:
type: boolean
includeConfiguration:
type: boolean
CreateBudgetLineRequest:
required:
- category
- name
- amountPlanned
type: object
properties:
category:
pattern: ^(CONTRIBUTIONS|SAVINGS|SOLIDARITY|EVENTS|OPERATIONAL|INVESTMENTS|OTHER)$
type: string
name:
maxLength: 200
pattern: \S
type: string
description:
maxLength: 500
type: string
amountPlanned:
minimum: 0
pattern: "^\\d{1,14}([.]\\d{1,2})?$"
type: number
notes:
maxLength: 1000
type: string
CreateBudgetRequest:
required:
- name
- organizationId
- period
- year
- lines
type: object
properties:
name:
maxLength: 200
pattern: \S
type: string
description:
maxLength: 1000
type: string
organizationId:
$ref: "#/components/schemas/UUID"
period:
pattern: ^(MONTHLY|QUARTERLY|SEMIANNUAL|ANNUAL)$
type: string
year:
format: int32
maximum: 2100
minimum: 2020
type: integer
month:
format: int32
maximum: 12
minimum: 1
type: integer
lines:
minItems: 1
type: array
items:
$ref: "#/components/schemas/CreateBudgetLineRequest"
currency:
pattern: "^[A-Z]{3}$"
type: string
CreateCompteComptableRequest:
required:
- numeroCompte
- libelle
- typeCompte
- classeComptable
type: object
properties:
numeroCompte:
pattern: \S
type: string
libelle:
pattern: \S
type: string
typeCompte:
$ref: "#/components/schemas/TypeCompteComptable"
classeComptable:
format: int32
maximum: 7
minimum: 1
type: integer
soldeInitial:
type: number
soldeActuel:
type: number
compteCollectif:
type: boolean
compteAnalytique:
type: boolean
description:
type: string
CreateCotisationRequest:
required:
- membreId
- organisationId
- typeCotisation
- libelle
- montantDu
- dateEcheance
type: object
properties:
membreId:
$ref: "#/components/schemas/UUID"
organisationId:
$ref: "#/components/schemas/UUID"
typeCotisation:
pattern: \S
type: string
libelle:
maxLength: 100
pattern: \S
type: string
description:
maxLength: 500
type: string
montantDu:
minimum: 0
exclusiveMinimum: true
pattern: "^\\d{1,10}([.]\\d{1,2})?$"
type: number
codeDevise:
maxLength: 3
minLength: 3
type: string
dateEcheance:
$ref: "#/components/schemas/LocalDate"
periode:
maxLength: 50
type: string
annee:
format: int32
maximum: 2100
minimum: 2020
type: integer
mois:
format: int32
maximum: 12
minimum: 1
type: integer
recurrente:
type: boolean
observations:
maxLength: 1000
type: string
CreateDemandeAideRequest:
required:
- typeAide
- titre
- description
- membreDemandeurId
- associationId
type: object
properties:
typeAide:
$ref: "#/components/schemas/TypeAide"
titre:
maxLength: 200
pattern: \S
type: string
description:
maxLength: 2000
pattern: \S
type: string
justification:
maxLength: 1000
type: string
montantDemande:
minimum: 0
exclusiveMinimum: true
pattern: "^\\d{1,12}([.]\\d{1,2})?$"
type: number
devise:
pattern: "^[A-Z]{3}$"
type: string
membreDemandeurId:
$ref: "#/components/schemas/UUID"
associationId:
$ref: "#/components/schemas/UUID"
priorite:
$ref: "#/components/schemas/PrioriteAide"
piecesJustificatives:
type: array
items:
$ref: "#/components/schemas/PieceJustificativeDTO"
beneficiaires:
type: array
items:
$ref: "#/components/schemas/BeneficiaireAideDTO"
donneesPersonnalisees:
type: object
additionalProperties: {}
tags:
type: array
items:
type: string
estConfidentielle:
type: boolean
localisation:
$ref: "#/components/schemas/LocalisationDTO"
contactUrgence:
$ref: "#/components/schemas/ContactUrgenceDTO"
dateLimite:
$ref: "#/components/schemas/LocalDate"
CreateDocumentRequest:
required:
- nomFichier
- cheminStockage
- tailleOctets
type: object
properties:
nomFichier:
pattern: \S
type: string
nomOriginal:
type: string
cheminStockage:
pattern: \S
type: string
typeMime:
type: string
tailleOctets:
format: int64
minimum: 0
type: integer
typeDocument:
$ref: "#/components/schemas/TypeDocument"
hashMd5:
type: string
hashSha256:
type: string
description:
type: string
CreateEcritureComptableRequest:
required:
- numeroPiece
- dateEcriture
- libelle
- journalId
type: object
properties:
numeroPiece:
pattern: \S
type: string
dateEcriture:
$ref: "#/components/schemas/LocalDate"
libelle:
pattern: \S
type: string
reference:
type: string
lettrage:
type: string
pointe:
type: boolean
montantDebit:
minimum: 0
pattern: "^\\d{1,12}([.]\\d{1,2})?$"
type: number
montantCredit:
minimum: 0
pattern: "^\\d{1,12}([.]\\d{1,2})?$"
type: number
commentaire:
type: string
journalId:
$ref: "#/components/schemas/UUID"
organisationId:
$ref: "#/components/schemas/UUID"
paiementId:
$ref: "#/components/schemas/UUID"
lignes:
type: array
items:
$ref: "#/components/schemas/CreateLigneEcritureRequest"
CreateFavoriRequest:
type: object
properties:
utilisateurId:
$ref: "#/components/schemas/UUID"
typeFavori:
type: string
titre:
type: string
description:
type: string
url:
type: string
icon:
type: string
couleur:
type: string
categorie:
type: string
ordre:
format: int32
type: integer
nbVisites:
format: int32
type: integer
derniereVisite:
type: string
estPlusUtilise:
type: boolean
CreateJournalComptableRequest:
required:
- code
- libelle
- typeJournal
type: object
properties:
code:
pattern: \S
type: string
libelle:
pattern: \S
type: string
typeJournal:
$ref: "#/components/schemas/TypeJournalComptable"
dateDebut:
$ref: "#/components/schemas/LocalDate"
dateFin:
$ref: "#/components/schemas/LocalDate"
statut:
type: string
description:
type: string
CreateLigneEcritureRequest:
required:
- numeroLigne
- ecritureId
- compteComptableId
type: object
properties:
numeroLigne:
format: int32
minimum: 1
type: integer
montantDebit:
minimum: 0
pattern: "^\\d{1,12}([.]\\d{1,2})?$"
type: number
montantCredit:
minimum: 0
pattern: "^\\d{1,12}([.]\\d{1,2})?$"
type: number
libelle:
type: string
reference:
type: string
ecritureId:
$ref: "#/components/schemas/UUID"
compteComptableId:
$ref: "#/components/schemas/UUID"
CreateMembreRequest:
required:
- prenom
- nom
- email
- dateNaissance
type: object
properties:
prenom:
maxLength: 100
pattern: \S
type: string
nom:
maxLength: 100
pattern: \S
type: string
email:
maxLength: 255
pattern: \S
type: string
telephone:
maxLength: 20
type: string
telephoneWave:
maxLength: 20
type: string
dateNaissance:
$ref: "#/components/schemas/LocalDate"
profession:
maxLength: 100
type: string
photoUrl:
maxLength: 500
type: string
statutMatrimonial:
maxLength: 50
type: string
nationalite:
maxLength: 100
type: string
typeIdentite:
maxLength: 50
type: string
numeroIdentite:
maxLength: 100
type: string
organisationId:
$ref: "#/components/schemas/UUID"
CreateNotificationRequest:
required:
- typeNotification
type: object
properties:
typeNotification:
type: string
priorite:
type: string
sujet:
type: string
corps:
type: string
dateEnvoiPrevue:
$ref: "#/components/schemas/LocalDateTime"
donneesAdditionnelles:
type: string
membreId:
$ref: "#/components/schemas/UUID"
organisationId:
$ref: "#/components/schemas/UUID"
templateId:
$ref: "#/components/schemas/UUID"
CreateOrganisationRequest:
required:
- nom
- email
type: object
properties:
nom:
maxLength: 255
pattern: \S
type: string
nomCourt:
maxLength: 50
type: string
description:
maxLength: 2000
type: string
email:
maxLength: 255
pattern: \S
type: string
telephone:
maxLength: 20
type: string
telephoneSecondaire:
maxLength: 20
type: string
emailSecondaire:
maxLength: 255
type: string
siteWeb:
maxLength: 500
type: string
logo:
maxLength: 500
type: string
reseauxSociaux:
maxLength: 1000
type: string
typeOrganisation:
maxLength: 50
type: string
statut:
maxLength: 30
type: string
dateFondation:
$ref: "#/components/schemas/LocalDate"
numeroEnregistrement:
maxLength: 100
type: string
devise:
maxLength: 3
type: string
budgetAnnuel:
type: number
cotisationObligatoire:
type: boolean
montantCotisationAnnuelle:
type: number
objectifs:
maxLength: 2000
type: string
activitesPrincipales:
maxLength: 2000
type: string
certifications:
maxLength: 500
type: string
partenaires:
maxLength: 1000
type: string
notes:
maxLength: 1000
type: string
latitude:
type: number
longitude:
type: number
adresse:
maxLength: 500
type: string
ville:
maxLength: 100
type: string
region:
maxLength: 100
type: string
pays:
maxLength: 100
type: string
codePostal:
maxLength: 20
type: string
organisationPublique:
type: boolean
accepteNouveauxMembres:
type: boolean
CreatePaiementRequest:
required:
- numeroReference
- montant
- codeDevise
- methodePaiement
type: object
properties:
numeroReference:
pattern: \S
type: string
montant:
minimum: 0.01
type: number
codeDevise:
pattern: \S
type: string
methodePaiement:
pattern: \S
type: string
commentaire:
type: string
membreId:
$ref: "#/components/schemas/UUID"
CreatePieceJointeRequest:
required:
- ordre
- documentId
- typeEntiteRattachee
- entiteRattacheeId
type: object
properties:
ordre:
format: int32
minimum: 1
type: integer
libelle:
type: string
commentaire:
type: string
documentId:
$ref: "#/components/schemas/UUID"
typeEntiteRattachee:
type: string
entiteRattacheeId:
$ref: "#/components/schemas/UUID"
CreatePropositionAideRequest:
type: object
properties:
typeAide:
$ref: "#/components/schemas/TypeAide"
titre:
type: string
description:
type: string
conditions:
type: string
montantMaximum:
type: number
nombreMaxBeneficiaires:
format: int32
type: integer
devise:
type: string
proposantId:
type: string
organisationId:
type: string
demandeAideId:
type: string
dateExpiration:
$ref: "#/components/schemas/LocalDateTime"
delaiReponseHeures:
format: int32
type: integer
CreateSuggestionRequest:
required:
- utilisateurId
- titre
type: object
properties:
utilisateurId:
$ref: "#/components/schemas/UUID"
utilisateurNom:
type: string
titre:
pattern: \S
type: string
description:
type: string
justification:
type: string
categorie:
type: string
prioriteEstimee:
type: string
piecesJointes:
type: array
items:
type: string
CreateTemplateNotificationRequest:
required:
- code
type: object
properties:
code:
pattern: \S
type: string
sujet:
type: string
corpsTexte:
type: string
corpsHtml:
type: string
variablesDisponibles:
type: string
canauxSupportes:
type: string
langue:
type: string
description:
type: string
CreateTicketRequest:
required:
- utilisateurId
- sujet
- description
- categorie
- priorite
type: object
properties:
utilisateurId:
$ref: "#/components/schemas/UUID"
sujet:
maxLength: 200
pattern: \S
type: string
description:
maxLength: 2000
pattern: \S
type: string
categorie:
pattern: \S
type: string
priorite:
pattern: \S
type: string
piecesJointes:
type: array
items:
type: string
CreateTypeReferenceRequest:
required:
- domaine
- code
- libelle
type: object
properties:
domaine:
maxLength: 50
pattern: \S
type: string
code:
maxLength: 50
pattern: \S
type: string
libelle:
maxLength: 200
pattern: \S
type: string
description:
maxLength: 1000
type: string
icone:
maxLength: 100
type: string
couleur:
maxLength: 50
type: string
severity:
maxLength: 20
type: string
ordreAffichage:
format: int32
type: integer
estDefaut:
type: boolean
estSysteme:
type: boolean
organisationId:
$ref: "#/components/schemas/UUID"
categorie:
maxLength: 50
type: string
modulesRequis:
type: string
CreneauDisponibiliteDTO:
required:
- heureDebut
- heureFin
- type
type: object
properties:
id:
type: string
jourSemaine:
$ref: "#/components/schemas/DayOfWeek"
dateSpecifique:
$ref: "#/components/schemas/LocalDate"
heureDebut:
$ref: "#/components/schemas/LocalTime"
heureFin:
$ref: "#/components/schemas/LocalTime"
type:
$ref: "#/components/schemas/TypeCreneau"
estActif:
type: boolean
fuseauHoraire:
type: string
commentaires:
maxLength: 200
type: string
priorite:
format: int32
maximum: 5
minimum: 1
type: integer
dureeMaxMinutes:
format: int32
maximum: 480
minimum: 15
type: integer
pausesNecessaires:
type: boolean
dureePauseMinutes:
format: int32
minimum: 5
type: integer
valide:
type: boolean
dureeMinutes:
format: int64
type: integer
libelle:
type: string
CritereSelectionDTO:
required:
- nom
- type
- operateur
- valeur
type: object
properties:
nom:
maxLength: 100
pattern: \S
type: string
type:
pattern: \S
type: string
operateur:
pattern: \S
type: string
valeur:
pattern: \S
type: string
valeurMax:
type: string
estObligatoire:
type: boolean
poids:
format: int32
maximum: 10
minimum: 1
type: integer
description:
maxLength: 200
type: string
DayOfWeek:
enum:
- MONDAY
- TUESDAY
- WEDNESDAY
- THURSDAY
- FRIDAY
- SATURDAY
- SUNDAY
type: string
DeclarerPaiementManuelRequest:
required:
- cotisationId
- methodePaiement
type: object
properties:
cotisationId:
$ref: "#/components/schemas/UUID"
methodePaiement:
pattern: \S
type: string
reference:
type: string
commentaire:
type: string
DeclarerVersementManuelRequest:
required:
- cotisationId
- methodePaiement
type: object
properties:
cotisationId:
$ref: "#/components/schemas/UUID"
methodePaiement:
pattern: ^(ESPECES|VIREMENT|CHEQUE|AUTRE)$
type: string
reference:
maxLength: 100
type: string
commentaire:
maxLength: 500
type: string
origineFonds:
type: string
justificationLcbFt:
type: string
DemandeAideResponse:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
numeroReference:
type: string
typeAide:
$ref: "#/components/schemas/TypeAide"
titre:
type: string
description:
type: string
justification:
type: string
montantDemande:
type: number
montantApprouve:
type: number
montantVerse:
type: number
devise:
type: string
membreDemandeurId:
$ref: "#/components/schemas/UUID"
nomDemandeur:
type: string
numeroMembreDemandeur:
type: string
evaluateurId:
type: string
evaluateurNom:
type: string
approvateurId:
type: string
approvateurNom:
type: string
associationId:
$ref: "#/components/schemas/UUID"
nomAssociation:
type: string
statut:
$ref: "#/components/schemas/StatutAide"
priorite:
$ref: "#/components/schemas/PrioriteAide"
motifRejet:
type: string
commentairesEvaluateur:
type: string
dateSoumission:
$ref: "#/components/schemas/LocalDateTime"
dateLimiteTraitement:
$ref: "#/components/schemas/LocalDateTime"
dateEvaluation:
$ref: "#/components/schemas/LocalDateTime"
dateApprobation:
$ref: "#/components/schemas/LocalDateTime"
dateVersement:
$ref: "#/components/schemas/LocalDateTime"
dateCloture:
$ref: "#/components/schemas/LocalDateTime"
piecesJustificatives:
type: array
items:
$ref: "#/components/schemas/PieceJustificativeDTO"
beneficiaires:
type: array
items:
$ref: "#/components/schemas/BeneficiaireAideDTO"
historiqueStatuts:
type: array
items:
$ref: "#/components/schemas/HistoriqueStatutDTO"
commentaires:
type: array
items:
$ref: "#/components/schemas/CommentaireAideResponse"
donneesPersonnalisees:
type: object
additionalProperties: {}
tags:
type: array
items:
type: string
estConfidentielle:
type: boolean
necessiteSuivi:
type: boolean
scorePriorite:
format: double
type: number
nombreVues:
format: int32
type: integer
localisation:
$ref: "#/components/schemas/LocalisationDTO"
contactUrgence:
$ref: "#/components/schemas/ContactUrgenceDTO"
dateLimite:
$ref: "#/components/schemas/LocalDate"
justificatifsFournis:
type: boolean
documentsJoints:
type: string
dateDebutAide:
$ref: "#/components/schemas/LocalDate"
dateFinAide:
$ref: "#/components/schemas/LocalDate"
membreAidantId:
$ref: "#/components/schemas/UUID"
nomAidant:
type: string
modeVersement:
type: string
numeroTransaction:
type: string
rejeteParId:
$ref: "#/components/schemas/UUID"
rejetePar:
type: string
dateRejet:
$ref: "#/components/schemas/LocalDateTime"
raisonRejet:
type: string
pourcentageAvancement:
format: double
type: number
delaiRestantHeures:
format: int64
type: integer
statutLibelle:
type: string
prioriteLibelle:
type: string
DemandeCreditRequest:
description: Requête initiale pour une demande de financement (Crédit)
required:
- membreId
- typeCredit
- montantDemande
- justificationDetaillee
type: object
properties:
membreId:
pattern: \S
type: string
typeCredit:
$ref: "#/components/schemas/TypeCredit"
montantDemande:
minimum: 1
type: number
dureeMois:
format: int32
minimum: 1
type: integer
compteLieId:
description: Compte épargne adossé (si remboursement automatique ou nantissement)
type: string
justificationDetaillee:
pattern: \S
type: string
documentIds:
description: Liste des IDs de documents justificatifs attachés au dossier
type: array
items:
type: string
garantiesProposees:
description: Liste des garanties proposées avec la demande
type: array
items:
$ref: "#/components/schemas/GarantieDemandeDTO"
DemandeCreditResponse:
description: Réponse avec le tableau de bord résumé d'un dossier de crédit
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nouveau:
type: boolean
numeroDossier:
type: string
membreId:
type: string
typeCredit:
$ref: "#/components/schemas/TypeCredit"
compteLieId:
type: string
montantDemande:
type: number
dureeMoisDemande:
format: int32
type: integer
montantApprouve:
type: number
dureeMoisApprouvee:
format: int32
type: integer
tauxInteretAnnuel:
type: number
coutTotalCredit:
type: number
statut:
$ref: "#/components/schemas/StatutDemandeCredit"
notesComite:
type: string
dateSoumission:
$ref: "#/components/schemas/LocalDate"
dateValidation:
$ref: "#/components/schemas/LocalDate"
datePremierEcheance:
$ref: "#/components/schemas/LocalDate"
echeancier:
description: Aperçu des échéances générées pour le tableau d'amortissement
type: array
items:
$ref: "#/components/schemas/EcheanceCreditDTO"
DemarrerConversationDirecteRequest:
required:
- destinataireId
- organisationId
type: object
properties:
destinataireId:
$ref: "#/components/schemas/UUID"
organisationId:
$ref: "#/components/schemas/UUID"
contenuInitial:
maxLength: 2000
type: string
DemarrerConversationRoleRequest:
required:
- organisationId
- roleCible
- contenuInitial
type: object
properties:
organisationId:
$ref: "#/components/schemas/UUID"
roleCible:
pattern: ^(PRESIDENT|TRESORIER|SECRETAIRE|VICE_PRESIDENT|ADMIN|ADMIN_ORGANISATION)$
type: string
contenuInitial:
maxLength: 2000
pattern: \S
type: string
DonReligieuxDTO:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nouveau:
type: boolean
institutionId:
type: string
fideleId:
type: string
typeDon:
$ref: "#/components/schemas/TypeDonReligieux"
montant:
type: number
dateEncaissement:
$ref: "#/components/schemas/LocalDateTime"
periodeOuNatureAssociee:
type: string
EcheanceCreditDTO:
description: Représente une ligne unique du tableau d'amortissement d'un crédit
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nouveau:
type: boolean
demandeCreditId:
type: string
ordre:
format: int32
description: "Indice de l'échéance (ex: mois 1, 2, 3...)"
type: integer
dateEcheancePrevue:
$ref: "#/components/schemas/LocalDate"
datePaiementEffectif:
$ref: "#/components/schemas/LocalDate"
capitalAmorti:
type: number
interetsDeLaPeriode:
type: number
montantTotalExigible:
type: number
capitalRestantDu:
type: number
penalitesRetard:
type: number
montantRegle:
type: number
statut:
$ref: "#/components/schemas/StatutEcheanceCredit"
EchelonOrganigrammeDTO:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nouveau:
type: boolean
organisationId:
type: string
echelonParentId:
type: string
niveau:
$ref: "#/components/schemas/NiveauEchelon"
designation:
type: string
zoneGeographiqueOuDelegation:
type: string
EnvoyerMessageRequest:
type: object
properties:
typeMessage:
pattern: ^(TEXTE|VOCAL|IMAGE|SYSTEME)$
type: string
contenu:
maxLength: 4000
type: string
urlFichier:
maxLength: 500
type: string
dureeAudio:
format: int32
maximum: 300
minimum: 1
type: integer
messageParentId:
$ref: "#/components/schemas/UUID"
ErrorType:
description: Type d'erreur d'import
enum:
- INVALID_FORMAT
- VALIDATION_ERROR
- DUPLICATE_USER
- CREATION_ERROR
- SYSTEM_ERROR
type: string
Evenement:
required:
- titre
- dateDebut
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
titre:
maxLength: 200
minLength: 3
pattern: \S
type: string
description:
maxLength: 2000
type: string
dateDebut:
$ref: "#/components/schemas/LocalDateTime"
dateFin:
$ref: "#/components/schemas/LocalDateTime"
lieu:
maxLength: 500
type: string
adresse:
maxLength: 1000
type: string
typeEvenement:
type: string
statut:
type: string
capaciteMax:
format: int32
minimum: 0
type: integer
prix:
minimum: 0
pattern: "^\\d{1,8}([.]\\d{1,2})?$"
type: number
inscriptionRequise:
type: boolean
dateLimiteInscription:
$ref: "#/components/schemas/LocalDateTime"
instructionsParticulieres:
maxLength: 1000
type: string
contactOrganisateur:
maxLength: 500
type: string
materielRequis:
maxLength: 2000
type: string
visiblePublic:
type: boolean
organisation:
$ref: "#/components/schemas/Organisation"
organisateur:
$ref: "#/components/schemas/Membre"
enCours:
type: boolean
termine:
type: boolean
dureeEnHeures:
format: int64
type: integer
EvenementMobileDTO:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
titre:
type: string
description:
type: string
dateDebut:
$ref: "#/components/schemas/LocalDateTime"
dateFin:
$ref: "#/components/schemas/LocalDateTime"
lieu:
type: string
adresse:
type: string
ville:
type: string
codePostal:
type: string
type:
type: string
statut:
type: string
maxParticipants:
format: int32
type: integer
participantsActuels:
format: int32
type: integer
organisateurId:
$ref: "#/components/schemas/UUID"
organisateurNom:
type: string
organisationId:
$ref: "#/components/schemas/UUID"
organisationNom:
type: string
priorite:
type: string
estPublic:
type: boolean
inscriptionRequise:
type: boolean
cout:
type: number
devise:
type: string
tags:
type: array
items:
type: string
imageUrl:
type: string
documentUrl:
type: string
notes:
type: string
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
actif:
type: boolean
FederatedIdentityDTO:
description: Identité fédérée
type: object
properties:
identityProvider:
description: Fournisseur d'identité
type: string
example: google
userId:
description: ID utilisateur chez le fournisseur
type: string
userName:
description: Nom d'utilisateur chez le fournisseur
type: string
FeedbackRequest:
type: object
properties:
subject:
type: string
message:
type: string
FileUpload:
type: object
FrequenceTour:
enum:
- JOURNALIERE
- HEBDOMADAIRE
- DECADE
- QUINZAINE
- MENSUELLE
- TRIMESTRIELLE
type: string
GarantieDemandeDTO:
required:
- typeGarantie
- referenceOuDescription
type: object
properties:
typeGarantie:
$ref: "#/components/schemas/TypeGarantie"
valeurEstimee:
type: number
referenceOuDescription:
pattern: \S
type: string
documentPreuveId:
type: string
HealthStatusDTO:
description: Statut de santé de Keycloak
type: object
properties:
timestamp:
format: int64
description: Timestamp du check de santé (millisecondes)
type: integer
example: 1699545600000
keycloakAccessible:
description: Indique si Keycloak est accessible
type: boolean
example: true
keycloakVersion:
description: Version de Keycloak
type: string
example: 23.0.3
realmsAccessible:
description: Indique si les realms sont accessibles
type: boolean
example: true
realmsCount:
format: int32
description: Nombre de realms disponibles
type: integer
example: 5
overallHealthy:
description: Indique si Keycloak est globalement en bonne santé
type: boolean
example: true
errorMessage:
description: Message d'erreur si le check a échoué
type: string
HistoriqueStatutDTO:
required:
- nouveauStatut
- dateChangement
- auteurId
type: object
properties:
id:
type: string
ancienStatut:
$ref: "#/components/schemas/StatutAide"
nouveauStatut:
$ref: "#/components/schemas/StatutAide"
dateChangement:
$ref: "#/components/schemas/LocalDateTime"
auteurId:
pattern: \S
type: string
auteurNom:
type: string
motif:
maxLength: 500
type: string
commentaires:
maxLength: 1000
type: string
estAutomatique:
type: boolean
dureeDepuisPrecedent:
format: int64
type: integer
donneesAdditionnelles:
type: object
additionalProperties: {}
ImportErrorDTO:
description: Détail d'une erreur d'import
type: object
properties:
lineNumber:
format: int32
description: Numéro de ligne (1-indexed)
type: integer
example: 42
lineContent:
description: Contenu de la ligne en erreur
type: string
example: "john.doe,invalid-email,John,Doe,true"
errorType:
description: Type d'erreur
type: string
allOf:
- $ref: "#/components/schemas/ErrorType"
example: VALIDATION_ERROR
field:
description: Champ concerné par l'erreur
type: string
example: email
message:
description: Message d'erreur descriptif
type: string
example: Format d'email invalide
details:
description: Détails techniques de l'erreur
type: string
ImportResultDTO:
description: Résultat d'un import CSV d'utilisateurs
type: object
properties:
totalLines:
format: int32
description: Nombre total de lignes traitées
type: integer
example: 100
successCount:
format: int32
description: Nombre d'utilisateurs créés avec succès
type: integer
example: 95
errorCount:
format: int32
description: Nombre d'erreurs rencontrées
type: integer
example: 5
message:
description: Message de statut global
type: string
example: "Import terminé: 95 utilisateurs créés, 5 erreurs"
errors:
description: Liste des erreurs détaillées
type: array
items:
$ref: "#/components/schemas/ImportErrorDTO"
InitierDepotEpargneRequest:
required:
- compteId
- montant
type: object
properties:
compteId:
$ref: "#/components/schemas/UUID"
montant:
minimum: 0.01
type: number
numeroTelephone:
pattern: "^\\d{9,15}$"
type: string
origineFonds:
type: string
justificationLcbFt:
type: string
InitierPaiementEnLigneRequest:
required:
- cotisationId
- methodePaiement
type: object
properties:
cotisationId:
$ref: "#/components/schemas/UUID"
methodePaiement:
type: string
numeroTelephone:
type: string
InitierVersementWaveRequest:
required:
- cotisationId
type: object
properties:
cotisationId:
$ref: "#/components/schemas/UUID"
numeroTelephone:
pattern: "^\\d{9,15}$"
type: string
origineFonds:
type: string
justificationLcbFt:
type: string
LocalDate:
format: date
type: string
example: 2022-03-10
LocalDateTime:
format: date-time
type: string
example: 2022-03-10T12:15:50
LocalTime:
format: local-time
type: string
externalDocs:
description: As defined by 'partial-time' in RFC3339
url: https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6
example: 13:45:30.123456789
LocalisationDTO:
type: object
properties:
latitude:
format: double
maximum: 90
minimum: -90
type: number
longitude:
format: double
maximum: 180
minimum: -180
type: number
adresseComplete:
maxLength: 300
type: string
ville:
maxLength: 100
type: string
region:
maxLength: 100
type: string
pays:
maxLength: 100
type: string
codePostal:
maxLength: 20
type: string
precision:
format: double
minimum: 0
type: number
estApproximative:
type: boolean
LogSearchRequest:
type: object
properties:
level:
type: string
source:
type: string
searchQuery:
type: string
timeRange:
type: string
limit:
format: int32
type: integer
offset:
format: int32
type: integer
Membre:
required:
- numeroMembre
- prenom
- nom
- email
- dateNaissance
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
keycloakId:
$ref: "#/components/schemas/UUID"
numeroMembre:
pattern: \S
type: string
prenom:
pattern: \S
type: string
nom:
pattern: \S
type: string
email:
pattern: \S
type: string
telephone:
type: string
telephoneWave:
pattern: "^\\+[1-9][0-9]{6,14}$"
type: string
dateNaissance:
$ref: "#/components/schemas/LocalDate"
profession:
type: string
photoUrl:
type: string
statutCompte:
type: string
premiereConnexion:
type: boolean
statutMatrimonial:
type: string
nationalite:
type: string
typeIdentite:
type: string
numeroIdentite:
type: string
notes:
type: string
niveauVigilanceKyc:
type: string
statutKyc:
type: string
dateVerificationIdentite:
$ref: "#/components/schemas/LocalDate"
nomComplet:
type: string
majeur:
type: boolean
age:
format: int32
type: integer
MembreSearchCriteria:
description: Critères de recherche avancée pour les membres
type: object
properties:
query:
description: "Terme de recherche général dans nom, prénom ou email"
maxLength: 100
type: string
example: marie
nom:
description: Filtre par nom (recherche partielle)
maxLength: 50
type: string
example: Dupont
prenom:
description: Filtre par prénom (recherche partielle)
maxLength: 50
type: string
example: Marie
email:
description: Filtre par email (recherche partielle)
maxLength: 100
type: string
example: '@unionflow.com'
telephone:
description: Filtre par numéro de téléphone
maxLength: 20
type: string
example: "+221"
organisationIds:
description: Liste des IDs d'organisations à inclure
type: array
items:
format: uuid
pattern: "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
type: string
roles:
description: Liste des rôles à rechercher
type: array
items:
type: string
example:
- PRESIDENT
- SECRETAIRE
statut:
description: Filtre par statut d'activité
pattern: ^(ACTIF|INACTIF|SUSPENDU|RADIE)$
type: string
example: ACTIF
dateAdhesionMin:
description: Date d'adhésion minimum
type: string
allOf:
- $ref: "#/components/schemas/LocalDate"
example: 2020-01-01
dateAdhesionMax:
description: Date d'adhésion maximum
type: string
allOf:
- $ref: "#/components/schemas/LocalDate"
example: 2025-12-31
ageMin:
format: int32
description: Âge minimum
maximum: 120
minimum: 0
type: integer
example: 18
ageMax:
format: int32
description: Âge maximum
maximum: 120
minimum: 0
type: integer
example: 65
region:
description: Filtre par région
maxLength: 50
type: string
example: Dakar
ville:
description: Filtre par ville
maxLength: 50
type: string
example: Dakar
profession:
description: Filtre par profession
maxLength: 100
type: string
example: Ingénieur
nationalite:
description: Filtre par nationalité
maxLength: 50
type: string
example: Sénégalaise
membreBureau:
description: Filtre pour les membres du bureau uniquement
type: boolean
responsable:
description: Filtre pour les responsables uniquement
type: boolean
includeInactifs:
description: Inclure les membres inactifs
default: false
type: boolean
valid:
type: boolean
description:
type: string
MembreSearchResultDTO:
description: Résultats de recherche avancée des membres avec pagination
type: object
properties:
membres:
description: Liste des membres correspondant aux critères
type: array
items:
$ref: "#/components/schemas/MembreSummaryResponse"
totalElements:
format: int64
description: Nombre total de résultats trouvés
type: integer
example: 247
totalPages:
format: int32
description: Nombre total de pages
type: integer
example: 13
currentPage:
format: int32
description: Numéro de la page actuelle
type: integer
example: 0
pageSize:
format: int32
description: Nombre d'éléments par page
type: integer
example: 20
numberOfElements:
format: int32
description: Nombre d'éléments sur cette page
type: integer
example: 20
hasNext:
description: Indique s'il y a une page suivante
type: boolean
hasPrevious:
description: Indique s'il y a une page précédente
type: boolean
isFirst:
description: Indique si c'est la première page
type: boolean
isLast:
description: Indique si c'est la dernière page
type: boolean
criteria:
description: Critères de recherche qui ont été appliqués
type: object
allOf:
- $ref: "#/components/schemas/MembreSearchCriteria"
executionTimeMs:
format: int64
description: Temps d'exécution de la recherche en ms
type: integer
example: 45
statistics:
description: Statistiques sur les résultats de recherche
type: object
allOf:
- $ref: "#/components/schemas/SearchStatistics"
empty:
type: boolean
nextPageNumber:
format: int32
type: integer
previousPageNumber:
format: int32
type: integer
resultDescription:
type: string
MembreSummaryResponse:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
numeroMembre:
type: string
prenom:
type: string
nom:
type: string
email:
type: string
telephone:
type: string
profession:
type: string
statutCompte:
type: string
statutCompteLibelle:
type: string
statutCompteSeverity:
type: string
actif:
type: boolean
roles:
type: array
items:
type: string
organisationId:
$ref: "#/components/schemas/UUID"
organisationNom:
type: string
dateAdhesion:
$ref: "#/components/schemas/LocalDate"
nomComplet:
type: string
statut:
type: string
statutLibelle:
type: string
statutSeverity:
type: string
statutIcon:
type: string
typeMembre:
type: string
typeSeverity:
type: string
typeIcon:
type: string
MettreAJourPolitiqueRequest:
type: object
properties:
typePolitique:
pattern: ^(OUVERT|BUREAU_SEULEMENT|GROUPES_INTERNES)$
type: string
autoriserMembreVersMembre:
type: boolean
autoriserMembreVersRole:
type: boolean
autoriserNotesVocales:
type: boolean
ModeScrutin:
enum:
- MAJORITAIRE_UN_TOUR
- MAJORITAIRE_DEUX_TOURS
- PROPORTIONNEL
- BUREAU_CONSENSUEL
type: string
NiveauEchelon:
enum:
- SIEGE_MONDIAL
- NATIONAL
- REGIONAL
- LOCAL
type: string
NotificationGroupeeRequest:
type: object
properties:
membreIds:
type: array
items:
format: uuid
pattern: "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
type: string
sujet:
type: string
corps:
type: string
canaux:
type: array
items:
type: string
Organisation:
required:
- nom
- typeOrganisation
- statut
- email
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nom:
pattern: \S
type: string
nomCourt:
type: string
typeOrganisation:
pattern: \S
type: string
statut:
pattern: \S
type: string
description:
type: string
dateFondation:
$ref: "#/components/schemas/LocalDate"
numeroEnregistrement:
type: string
email:
pattern: \S
type: string
telephone:
type: string
telephoneSecondaire:
type: string
emailSecondaire:
type: string
adresse:
type: string
ville:
type: string
region:
type: string
pays:
type: string
codePostal:
type: string
latitude:
maximum: 90
minimum: -90
pattern: "^\\d{1,3}([.]\\d{1,6})?$"
type: number
longitude:
maximum: 180
minimum: -180
pattern: "^\\d{1,3}([.]\\d{1,6})?$"
type: number
siteWeb:
type: string
logo:
type: string
reseauxSociaux:
type: string
organisationParente:
$ref: "#/components/schemas/Organisation"
niveauHierarchique:
format: int32
type: integer
estOrganisationRacine:
type: boolean
cheminHierarchique:
type: string
nombreMembres:
format: int32
type: integer
nombreAdministrateurs:
format: int32
type: integer
budgetAnnuel:
minimum: 0
pattern: "^\\d{1,12}([.]\\d{1,2})?$"
type: number
devise:
type: string
cotisationObligatoire:
type: boolean
montantCotisationAnnuelle:
minimum: 0
pattern: "^\\d{1,10}([.]\\d{1,2})?$"
type: number
objectifs:
type: string
activitesPrincipales:
type: string
certifications:
type: string
partenaires:
type: string
notes:
type: string
organisationPublique:
type: boolean
accepteNouveauxMembres:
type: boolean
categorieType:
type: string
modulesActifs:
type: string
nomComplet:
type: string
ancienneteAnnees:
format: int32
type: integer
recente:
type: boolean
active:
type: boolean
OrganisationResponse:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nom:
type: string
nomCourt:
type: string
description:
type: string
email:
type: string
telephone:
type: string
telephoneSecondaire:
type: string
emailSecondaire:
type: string
siteWeb:
type: string
logo:
type: string
reseauxSociaux:
type: string
typeOrganisation:
type: string
typeAssociation:
type: string
typeOrganisationLibelle:
type: string
typeLibelle:
type: string
statut:
type: string
statutLibelle:
type: string
statutSeverity:
type: string
dateFondation:
$ref: "#/components/schemas/LocalDate"
numeroEnregistrement:
type: string
adresse:
type: string
quartier:
type: string
ville:
type: string
region:
type: string
pays:
type: string
codePostal:
type: string
latitude:
type: number
longitude:
type: number
organisationParenteId:
$ref: "#/components/schemas/UUID"
organisationParenteNom:
type: string
niveauHierarchique:
format: int32
type: integer
estOrganisationRacine:
type: boolean
devise:
type: string
budgetAnnuel:
type: number
cotisationObligatoire:
type: boolean
montantCotisationAnnuelle:
type: number
nombreMembres:
format: int32
type: integer
nombreAdministrateurs:
format: int32
type: integer
nombreEvenements:
format: int32
type: integer
objectifs:
type: string
activitesPrincipales:
type: string
certifications:
type: string
partenaires:
type: string
notes:
type: string
organisationPublique:
type: boolean
accepteNouveauxMembres:
type: boolean
numeroRegistre:
type: string
nomOrganisationParente:
type: string
PagedResponse:
type: object
properties:
data:
type: array
items: {}
total:
format: int64
type: integer
page:
format: int32
type: integer
size:
format: int32
type: integer
totalPages:
format: int32
type: integer
empty:
type: boolean
PagedResponseEvenementMobileDTO:
type: object
properties:
data:
type: array
items:
$ref: "#/components/schemas/EvenementMobileDTO"
total:
format: int64
type: integer
page:
format: int32
type: integer
size:
format: int32
type: integer
totalPages:
format: int32
type: integer
empty:
type: boolean
PagedResponseMembreSummaryResponse:
type: object
properties:
data:
type: array
items:
$ref: "#/components/schemas/MembreSummaryResponse"
total:
format: int64
type: integer
page:
format: int32
type: integer
size:
format: int32
type: integer
totalPages:
format: int32
type: integer
empty:
type: boolean
ParametresLcbFtRequest:
description: Paramètres LCB-FT (seuils de vigilance)
required:
- montantSeuilJustification
- montantSeuilValidationManuelle
- codeDevise
type: object
properties:
organisationId:
description: ID de l'organisation (null pour paramètres plateforme)
type: string
montantSeuilJustification:
description: Montant au-dessus duquel l'origine des fonds est obligatoire
(ex. 500000 XOF)
minimum: 0
type: number
example: 500000
montantSeuilValidationManuelle:
description: Montant au-dessus duquel une validation manuelle est requise
(ex. 1000000 XOF)
minimum: 0
type: number
example: 1000000
codeDevise:
description: "Code devise ISO 4217 (ex. XOF, EUR, USD)"
maxLength: 3
pattern: \S
type: string
example: XOF
notes:
description: Notes ou commentaires sur la configuration
type: string
ParametresLcbFtResponse:
description: Paramètres LCB-FT avec seuils de vigilance
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
organisationId:
description: ID de l'organisation (null si paramètres plateforme)
type: string
organisationNom:
description: Nom de l'organisation (null si paramètres plateforme)
type: string
montantSeuilJustification:
description: Montant au-dessus duquel l'origine des fonds est obligatoire
type: number
example: 500000
montantSeuilValidationManuelle:
description: Montant au-dessus duquel une validation manuelle est requise
type: number
example: 1000000
codeDevise:
description: Code devise ISO 4217
type: string
example: XOF
notes:
description: Notes ou commentaires sur la configuration
type: string
estParametrePlateforme:
description: Indique si ces paramètres s'appliquent à toute la plateforme
type: boolean
PasswordResetRequestDTO:
description: Requête de réinitialisation de mot de passe
required:
- password
type: object
properties:
password:
description: Nouveau mot de passe
type: string
temporary:
description: Indique si le mot de passe est temporaire
default: true
type: boolean
PeriodeAnalyse:
enum:
- AUJOURD_HUI
- HIER
- CETTE_SEMAINE
- SEMAINE_DERNIERE
- CE_MOIS
- MOIS_DERNIER
- TROIS_DERNIERS_MOIS
- SIX_DERNIERS_MOIS
- CETTE_ANNEE
- ANNEE_DERNIERE
- DEUX_DERNIERES_ANNEES
- SEPT_DERNIERS_JOURS
- TRENTE_DERNIERS_JOURS
- QUATRE_VINGT_DIX_DERNIERS_JOURS
- DEPUIS_CREATION
- PERIODE_PERSONNALISEE
type: string
PieceJustificativeDTO:
required:
- nomFichier
- typePiece
- urlFichier
type: object
properties:
id:
type: string
nomFichier:
maxLength: 255
pattern: \S
type: string
typePiece:
pattern: \S
type: string
description:
maxLength: 500
type: string
urlFichier:
pattern: \S
type: string
typeMime:
type: string
tailleFichier:
format: int64
minimum: 1
type: integer
estObligatoire:
type: boolean
estVerifiee:
type: boolean
dateAjout:
$ref: "#/components/schemas/LocalDateTime"
dateVerification:
$ref: "#/components/schemas/LocalDateTime"
verificateurId:
type: string
commentairesVerification:
maxLength: 500
type: string
PrioriteAide:
enum:
- CRITIQUE
- URGENTE
- ELEVEE
- NORMALE
- FAIBLE
type: string
ProjetOngDTO:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nouveau:
type: boolean
organisationId:
type: string
nomProjet:
type: string
descriptionMandat:
type: string
zoneGeographiqueIntervention:
type: string
budgetPrevisionnel:
type: number
depensesReelles:
type: number
dateLancement:
$ref: "#/components/schemas/LocalDate"
dateFinEstimee:
$ref: "#/components/schemas/LocalDate"
statut:
$ref: "#/components/schemas/StatutProjetOng"
PropositionAideResponse:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
numeroReference:
type: string
typeAide:
$ref: "#/components/schemas/TypeAide"
titre:
type: string
description:
type: string
conditions:
type: string
montantMaximum:
type: number
nombreMaxBeneficiaires:
format: int32
type: integer
devise:
type: string
proposantId:
type: string
proposantNom:
type: string
organisationId:
type: string
demandeAideId:
type: string
statut:
$ref: "#/components/schemas/StatutProposition"
estDisponible:
type: boolean
estRecurrente:
type: boolean
frequenceRecurrence:
type: string
dateExpiration:
$ref: "#/components/schemas/LocalDateTime"
delaiReponseHeures:
format: int32
type: integer
criteresSelection:
type: array
items:
$ref: "#/components/schemas/CritereSelectionDTO"
zonesGeographiques:
type: array
items:
type: string
groupesCibles:
type: array
items:
type: string
competencesRessources:
type: array
items:
type: string
contactProposant:
$ref: "#/components/schemas/ContactProposantDTO"
creneauxDisponibilite:
type: array
items:
$ref: "#/components/schemas/CreneauDisponibiliteDTO"
modeContactPrefere:
type: string
nombreDemandesTraitees:
format: int32
type: integer
nombreBeneficiairesAides:
format: int32
type: integer
montantTotalVerse:
format: double
type: number
noteMoyenne:
format: double
type: number
nombreEvaluations:
format: int32
type: integer
tags:
type: array
items:
type: string
donneesPersonnalisees:
type: object
additionalProperties: {}
estMiseEnAvant:
type: boolean
scorePertinence:
format: double
type: number
nombreVues:
format: int32
type: integer
nombreCandidatures:
format: int32
type: integer
activeEtDisponible:
type: boolean
expiree:
type: boolean
pourcentageCapaciteUtilisee:
format: double
type: number
placesRestantes:
format: int32
type: integer
RealmAccessCheckDTO:
description: Réponse de vérification d'accès au realm
type: object
properties:
canManage:
description: L'utilisateur peut gérer le realm
type: boolean
userId:
description: ID de l'utilisateur
type: string
realmName:
description: Nom du realm
type: string
RealmAssignmentDTO:
description: Attribution ou révocation d'accès à un realm
required:
- userId
- realmName
type: object
properties:
id:
description: Identifiant unique (UUID Keycloak)
type: string
example: f47ac10b-58cc-4372-a567-0e02b2c3d479
dateCreation:
description: Date de création
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-15T10:30:00
dateModification:
description: Date de dernière modification
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-15T14:20:00
creeParUsername:
description: Utilisateur ayant créé l'entité
type: string
example: admin@lions.dev
modifieParUsername:
description: Utilisateur ayant modifié l'entité
type: string
example: superadmin@lions.dev
version:
format: int64
description: Numéro de version pour gestion optimiste
type: integer
example: 1
userId:
description: ID de l'utilisateur Keycloak
pattern: \S
type: string
example: f47ac10b-58cc-4372-a567-0e02b2c3d479
username:
description: Username de l'utilisateur
type: string
example: jdupont
email:
description: Email de l'utilisateur
type: string
example: jdupont@example.com
realmName:
description: Nom du realm assigné
pattern: \S
type: string
example: btpxpress
isSuperAdmin:
description: Indique si l'utilisateur est super admin (peut gérer tous les
realms)
type: boolean
example: false
assignedAt:
description: Date d'assignation
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-15T10:30:00
assignedBy:
description: Username de l'administrateur qui a fait l'assignation
type: string
example: admin@lions.dev
raison:
description: Raison de l'assignation
type: string
example: Nouveau gestionnaire du realm client
commentaires:
description: Commentaires administratifs
type: string
example: Accès temporaire pour support
temporaire:
description: Indique si c'est une assignation temporaire
type: boolean
example: false
dateExpiration:
description: Date d'expiration de l'assignation temporaire
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-12-31T23:59:59
active:
description: Indique si l'assignation est active
type: boolean
example: true
expired:
type: boolean
superAdmin:
type: boolean
summary:
type: string
RejectTransactionRequest:
required:
- reason
type: object
properties:
reason:
maxLength: 1000
minLength: 10
pattern: \S
type: string
RestoreBackupRequest:
required:
- backupId
type: object
properties:
backupId:
$ref: "#/components/schemas/UUID"
restoreDatabase:
type: boolean
restoreFiles:
type: boolean
restoreConfiguration:
type: boolean
createRestorePoint:
type: boolean
RoleAssignmentDTO:
description: Attribution ou révocation de rôles
required:
- userId
- roleNames
- typeRole
type: object
properties:
userId:
description: ID de l'utilisateur cible
pattern: \S
type: string
example: f47ac10b-58cc-4372-a567-0e02b2c3d479
username:
description: Username de l'utilisateur cible (optionnel)
type: string
example: jdupont
roleNames:
description: Liste des noms de rôles à attribuer ou révoquer
minItems: 1
type: array
items:
type: string
roleIds:
description: Liste des IDs de rôles à attribuer ou révoquer
type: array
items:
type: string
typeRole:
description: Type de rôle
type: string
allOf:
- $ref: "#/components/schemas/TypeRole"
example: REALM_ROLE
realmName:
description: Nom du Realm
type: string
example: btpxpress
clientName:
description: Nom du Client (requis si typeRole = CLIENT_ROLE)
type: string
example: btpxpress-app
clientId:
description: ID du Client (optionnel)
type: string
raison:
description: Raison de l'attribution/révocation
type: string
example: Promotion au poste de gestionnaire
commentaires:
description: Commentaires administratifs
type: string
example: Demandé par le manager
temporaire:
description: Indique si c'est une attribution temporaire
type: boolean
example: false
dateExpiration:
description: Date d'expiration de l'attribution temporaire
type: string
example: 2025-12-31T23:59:59
includeComposites:
description: Indique si les rôles composites doivent être inclus
type: boolean
example: true
notifyUser:
description: Indique si l'opération doit notifier l'utilisateur
type: boolean
example: true
validForClientRole:
type: boolean
validForRealmRole:
type: boolean
roleCount:
format: int32
type: integer
RoleAssignmentRequestDTO:
description: Requête d'attribution ou de révocation de rôles
required:
- roleNames
type: object
properties:
roleNames:
description: Liste des noms de rôles
type: array
items:
type: string
RoleCompositeDTO:
description: Rôle composite
type: object
properties:
id:
description: ID du rôle
type: string
example: f47ac10b-58cc-4372-a567-0e02b2c3d479
name:
description: Nom du rôle
type: string
example: gestionnaire
description:
description: Description du rôle
type: string
typeRole:
description: Type de rôle
type: string
allOf:
- $ref: "#/components/schemas/TypeRole"
example: REALM_ROLE
clientName:
description: Nom du client (si client role)
type: string
RoleDTO:
description: Rôle Keycloak (Realm ou Client)
required:
- name
type: object
properties:
id:
description: Identifiant unique (UUID Keycloak)
type: string
example: f47ac10b-58cc-4372-a567-0e02b2c3d479
dateCreation:
description: Date de création
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-15T10:30:00
dateModification:
description: Date de dernière modification
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-15T14:20:00
creeParUsername:
description: Utilisateur ayant créé l'entité
type: string
example: admin@lions.dev
modifieParUsername:
description: Utilisateur ayant modifié l'entité
type: string
example: superadmin@lions.dev
version:
format: int64
description: Numéro de version pour gestion optimiste
type: integer
example: 1
name:
description: Nom du rôle
maxLength: 100
minLength: 2
pattern: "^[a-zA-Z0-9_-]+$"
type: string
example: admin_btpxpress
description:
description: Description du rôle
type: string
example: Administrateur avec tous les privilèges
typeRole:
description: Type de rôle
type: string
allOf:
- $ref: "#/components/schemas/TypeRole"
example: REALM_ROLE
composite:
description: Indique si c'est un rôle composite
type: boolean
example: false
containerId:
description: ID du conteneur (Realm ou Client)
type: string
example: btpxpress
realmName:
description: Nom du Realm
type: string
example: btpxpress
clientName:
description: Nom du Client (si rôle client)
type: string
example: btpxpress-app
clientId:
description: ID du Client (si rôle client)
type: string
compositeRoles:
description: Rôles composites inclus dans ce rôle
type: array
items:
type: string
compositeRealmRoles:
description: Rôles Realm composites
type: array
items:
$ref: "#/components/schemas/RoleCompositeDTO"
compositeClientRoles:
description: Rôles Client composites par client
type: object
additionalProperties:
type: array
items:
$ref: "#/components/schemas/RoleCompositeDTO"
attributes:
description: Attributs personnalisés du rôle
type: object
additionalProperties:
type: array
items:
type: string
userCount:
format: int32
description: Nombre d'utilisateurs ayant ce rôle
type: integer
example: 15
systemRole:
description: Indique si le rôle est un rôle système
type: boolean
example: false
deletable:
description: Indique si le rôle peut être supprimé
type: boolean
example: true
realmRole:
type: boolean
clientRole:
type: boolean
fullName:
type: string
RoleResponse:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
code:
type: string
libelle:
type: string
description:
type: string
typeRole:
type: string
niveauHierarchique:
format: int32
type: integer
organisationId:
$ref: "#/components/schemas/UUID"
nomOrganisation:
type: string
SearchStatistics:
description: Statistiques sur les résultats de recherche
type: object
properties:
membresActifs:
format: int64
description: Nombre de membres actifs dans les résultats
type: integer
membresInactifs:
format: int64
description: Nombre de membres inactifs dans les résultats
type: integer
ageMoyen:
format: double
description: Âge moyen des membres trouvés
type: number
ageMin:
format: int32
description: Âge minimum des membres trouvés
type: integer
ageMax:
format: int32
description: Âge maximum des membres trouvés
type: integer
nombreOrganisations:
format: int64
description: Nombre d'organisations représentées
type: integer
nombreRegions:
format: int64
description: Nombre de régions représentées
type: integer
ancienneteMoyenne:
format: double
description: Ancienneté moyenne en années
type: number
ServiceStatus:
type: object
properties:
name:
type: string
online:
type: boolean
status:
type: string
responseTimeMs:
format: int64
type: integer
lastChecked:
$ref: "#/components/schemas/LocalDateTime"
errorMessage:
type: string
operational:
type: boolean
degraded:
type: boolean
down:
type: boolean
SessionsRevokedDTO:
description: Réponse de révocation de sessions
type: object
properties:
count:
format: int32
description: Nombre de sessions révoquées
type: integer
SouscriptionDemandeRequest:
required:
- typeFormule
- plageMembres
- typePeriode
- organisationId
type: object
properties:
typeFormule:
pattern: \S
type: string
plageMembres:
pattern: \S
type: string
typePeriode:
pattern: \S
type: string
typeOrganisation:
type: string
organisationId:
type: string
StatutAgrement:
enum:
- PROVISOIRE
- VALIDE
- SUSPENDU
- RETRETIRE
type: string
StatutAide:
enum:
- BROUILLON
- SOUMISE
- EN_ATTENTE
- EN_COURS_EVALUATION
- INFORMATIONS_REQUISES
- APPROUVEE
- APPROUVEE_PARTIELLEMENT
- REJETEE
- EN_COURS_TRAITEMENT
- EN_COURS_VERSEMENT
- VERSEE
- LIVREE
- TERMINEE
- ANNULEE
- SUSPENDUE
- EXPIREE
- EN_SUIVI
- CLOTUREE
type: string
StatutCampagneAgricole:
enum:
- PREPARATION
- LABOUR_SEMIS
- ENTRETIEN
- RECOLTE
- COMMERCIALISATION
- CLOTUREE
type: string
StatutCampagneCollecte:
enum:
- BROUILLON
- EN_COURS
- ATTEINTE
- EXPIREE
- SUSPENDUE
type: string
StatutCompteEpargne:
enum:
- ACTIF
- INACTIF
- BLOQUE
- EN_CLOTURE
- CLOTURE
type: string
StatutCompteWave:
enum:
- NON_VERIFIE
- VERIFIE
- SUSPENDU
- BLOQUE
type: string
StatutDemandeCredit:
enum:
- BROUILLON
- SOUMISE
- EN_EVALUATION
- INFORMATIONS_REQUISES
- APPROUVEE
- REJETEE
- DECAISSEE
- SOLDEE
- EN_CONTENTIEUX
type: string
StatutEcheanceCredit:
enum:
- A_VENIR
- EXIGIBLE
- PAYEE
- PAYEE_PARTIELLEMENT
- EN_RETARD
- IMPAYEE
- RESTRUCTUREE
type: string
StatutProjetOng:
enum:
- EN_ETUDE
- FINANCEMENT
- EN_COURS
- EVALUE
- CLOTURE
type: string
StatutProposition:
enum:
- BROUILLON
- ACTIVE
- SUSPENDUE
- EXPIREE
- TERMINEE
- ANNULEE
type: string
StatutTontine:
enum:
- PLANIFIEE
- EN_COURS
- EN_PAUSE
- CLOTUREE
- ANNULEE
type: string
StatutTransactionWave:
enum:
- INITIALISE
- EN_ATTENTE
- EN_COURS
- REUSSIE
- ECHOUE
- ANNULEE
- EXPIRED
type: string
StatutUser:
description: Statut d'un utilisateur
enum:
- ACTIF
- INACTIF
- SUSPENDU
- EN_ATTENTE
- VERROUILLE
- EXPIRE
- SUPPRIME
type: string
StatutVote:
enum:
- BROUILLON
- PLANIFIE
- OUVERT
- SUSPENDU
- CLOTURE
- RESULTATS_PUBLIES
type: string
SyncResultDTO:
description: Résultat d'une synchronisation avec Keycloak
type: object
properties:
realmName:
description: Nom du realm synchronisé
type: string
example: lions
usersCount:
format: int32
description: Nombre d'utilisateurs synchronisés
type: integer
example: 150
realmRolesCount:
format: int32
description: Nombre de rôles realm synchronisés
type: integer
example: 25
clientRolesCount:
format: int32
description: Nombre de rôles client synchronisés
type: integer
example: 50
success:
description: Indique si la synchronisation a réussi
type: boolean
example: true
errorMessage:
description: Message d'erreur si la synchronisation a échoué
type: string
startTime:
format: int64
description: Timestamp de début de la synchronisation (millisecondes)
type: integer
example: 1699545600000
endTime:
format: int64
description: Timestamp de fin de la synchronisation (millisecondes)
type: integer
example: 1699545615000
durationMs:
format: int64
type: integer
SystemAlertResponse:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
level:
type: string
title:
type: string
message:
type: string
timestamp:
$ref: "#/components/schemas/LocalDateTime"
acknowledged:
type: boolean
acknowledgedBy:
type: string
acknowledgedAt:
$ref: "#/components/schemas/LocalDateTime"
source:
type: string
alertType:
type: string
currentValue:
format: double
type: number
thresholdValue:
format: double
type: number
unit:
type: string
recommendedActions:
type: string
critical:
type: boolean
error:
type: boolean
ageInMinutes:
format: int64
type: integer
old:
type: boolean
formattedMessage:
type: string
levelColor:
type: string
thresholdExceeded:
type: boolean
SystemConfigResponse:
type: object
properties:
applicationName:
type: string
timezone:
type: string
defaultLanguage:
type: string
maintenanceMode:
type: boolean
version:
type: string
lastUpdated:
$ref: "#/components/schemas/LocalDateTime"
networkTimeout:
format: int32
type: integer
maxRetries:
format: int32
type: integer
connectionPoolSize:
format: int32
type: integer
twoFactorAuthEnabled:
type: boolean
sessionTimeoutMinutes:
format: int32
type: integer
auditLoggingEnabled:
type: boolean
metricsCollectionEnabled:
type: boolean
metricsIntervalSeconds:
format: int32
type: integer
performanceOptimizationEnabled:
type: boolean
autoBackupEnabled:
type: boolean
backupFrequency:
type: string
backupRetentionDays:
format: int32
type: integer
lastBackup:
$ref: "#/components/schemas/LocalDateTime"
logLevel:
type: string
logRetentionDays:
format: int32
type: integer
detailedLoggingEnabled:
type: boolean
logCompressionEnabled:
type: boolean
realTimeMonitoringEnabled:
type: boolean
monitoringIntervalSeconds:
format: int32
type: integer
emailAlertsEnabled:
type: boolean
pushAlertsEnabled:
type: boolean
cpuHighAlertEnabled:
type: boolean
cpuThresholdPercent:
format: int32
type: integer
memoryLowAlertEnabled:
type: boolean
memoryThresholdPercent:
format: int32
type: integer
criticalErrorAlertEnabled:
type: boolean
connectionFailureAlertEnabled:
type: boolean
connectionFailureThreshold:
format: int32
type: integer
systemStatus:
type: string
uptime:
format: int64
type: integer
SystemLogResponse:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
level:
type: string
source:
type: string
message:
type: string
details:
type: string
timestamp:
$ref: "#/components/schemas/LocalDateTime"
userId:
type: string
sessionId:
type: string
ipAddress:
type: string
endpoint:
type: string
httpStatusCode:
format: int32
type: integer
critical:
type: boolean
error:
type: boolean
warning:
type: boolean
shortMessage:
type: string
levelColor:
type: string
SystemMetricsResponse:
type: object
properties:
cpuUsagePercent:
format: double
type: number
availableProcessors:
format: int32
type: integer
systemLoadAverage:
format: double
type: number
totalMemoryBytes:
format: int64
type: integer
usedMemoryBytes:
format: int64
type: integer
freeMemoryBytes:
format: int64
type: integer
maxMemoryBytes:
format: int64
type: integer
memoryUsagePercent:
format: double
type: number
totalMemoryFormatted:
type: string
usedMemoryFormatted:
type: string
freeMemoryFormatted:
type: string
totalDiskBytes:
format: int64
type: integer
usedDiskBytes:
format: int64
type: integer
freeDiskBytes:
format: int64
type: integer
diskUsagePercent:
format: double
type: number
totalDiskFormatted:
type: string
usedDiskFormatted:
type: string
freeDiskFormatted:
type: string
activeUsersCount:
format: int32
type: integer
totalUsersCount:
format: int32
type: integer
activeSessionsCount:
format: int32
type: integer
failedLoginAttempts24h:
format: int32
type: integer
apiRequestsLastHour:
format: int64
type: integer
apiRequestsToday:
format: int64
type: integer
averageResponseTimeMs:
format: double
type: number
totalRequestsCount:
format: int64
type: integer
dbConnectionPoolSize:
format: int32
type: integer
dbActiveConnections:
format: int32
type: integer
dbIdleConnections:
format: int32
type: integer
dbHealthy:
type: boolean
criticalErrorsCount:
format: int32
type: integer
warningsCount:
format: int32
type: integer
infoLogsCount:
format: int32
type: integer
debugLogsCount:
format: int32
type: integer
totalLogsCount:
format: int64
type: integer
networkBytesReceivedPerSec:
format: double
type: number
networkBytesSentPerSec:
format: double
type: number
networkInFormatted:
type: string
networkOutFormatted:
type: string
systemStatus:
type: string
uptimeMillis:
format: int64
type: integer
uptimeFormatted:
type: string
startTime:
$ref: "#/components/schemas/LocalDateTime"
currentTime:
$ref: "#/components/schemas/LocalDateTime"
javaVersion:
type: string
quarkusVersion:
type: string
applicationVersion:
type: string
lastBackup:
$ref: "#/components/schemas/LocalDateTime"
nextScheduledMaintenance:
$ref: "#/components/schemas/LocalDateTime"
lastMaintenance:
$ref: "#/components/schemas/LocalDateTime"
apiBaseUrl:
type: string
authServerUrl:
type: string
cdnUrl:
type: string
totalCacheSizeBytes:
format: int64
type: integer
totalCacheSizeFormatted:
type: string
totalCacheEntries:
format: int32
type: integer
services:
type: object
additionalProperties:
$ref: "#/components/schemas/ServiceStatus"
timestamp:
$ref: "#/components/schemas/LocalDateTime"
errorRate:
format: double
type: number
activeConnections:
format: int32
type: integer
networkUsageMbps:
format: double
type: number
totalLogs24h:
format: int64
type: integer
totalErrors24h:
format: int64
type: integer
totalWarnings24h:
format: int64
type: integer
totalRequests24h:
format: int64
type: integer
uptime:
format: int64
type: integer
healthy:
type: boolean
cpuOverloaded:
type: boolean
memoryCritical:
type: boolean
SystemTestResultResponse:
type: object
properties:
testType:
type: string
success:
type: boolean
message:
type: string
responseTimeMs:
format: int64
type: integer
testedAt:
$ref: "#/components/schemas/LocalDateTime"
details:
type: string
TontineRequest:
description: Requête de création/paramétrage d'une tontine
required:
- nom
- organisationId
- typeTontine
- frequence
- dateDebutPrevue
type: object
properties:
nom:
pattern: \S
type: string
description:
type: string
organisationId:
pattern: \S
type: string
typeTontine:
$ref: "#/components/schemas/TypeTontine"
frequence:
$ref: "#/components/schemas/FrequenceTour"
dateDebutPrevue:
$ref: "#/components/schemas/LocalDate"
montantMiseParTour:
description: Montant fixe si tontine classique
minimum: 0
type: number
limiteParticipants:
format: int32
description: Le nombre maximum de membres pouvant rejoindre cette tontine
(Optionnel)
minimum: 2
type: integer
TontineResponse:
description: Réponse contenant la structure d'une tontine
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nouveau:
type: boolean
nom:
type: string
description:
type: string
organisationId:
type: string
typeTontine:
$ref: "#/components/schemas/TypeTontine"
frequence:
$ref: "#/components/schemas/FrequenceTour"
statut:
$ref: "#/components/schemas/StatutTontine"
dateDebutEffective:
$ref: "#/components/schemas/LocalDate"
dateFinPrevue:
$ref: "#/components/schemas/LocalDate"
montantMiseParTour:
type: number
limiteParticipants:
format: int32
type: integer
nombreParticipantsActuels:
format: int32
description: "Statistiques directes : nombre de participants actifs et fonds\
\ totaux levés à ce jour"
type: integer
fondTotalCollecte:
type: number
calendrierTours:
description: Calendrier généré des tours de cette tontine
type: array
items:
$ref: "#/components/schemas/TourTontineDTO"
TourTontineDTO:
description: Informations d'un tour spécifique d'une tontine rotative
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nouveau:
type: boolean
tontineId:
type: string
ordreTour:
format: int32
description: "Ordre cronologique (Tour 1, Tour 2...)"
type: integer
dateOuvertureCotisations:
$ref: "#/components/schemas/LocalDate"
dateTirageOuRemise:
$ref: "#/components/schemas/LocalDate"
montantCible:
description: "Montant cible total (Ex: 10 membres x 10 000 = 100 000 cibles)"
type: number
cagnotteCollectee:
description: Montant de la cagnotte réellement collectée pour ce tour
type: number
membreBeneficiaireId:
description: Membre désigné pour remporter ce tour (bénéficiaire de la caisse)
type: string
statutInterne:
description: "Statut: A_VENIR, EN_COURS, CLOTURE/REMIS"
type: string
TransactionEpargneRequest:
description: Requête d'initialisation d'une transaction sur un compte d'épargne
required:
- compteId
- typeTransaction
- montant
type: object
properties:
compteId:
pattern: \S
type: string
typeTransaction:
$ref: "#/components/schemas/TypeTransactionEpargne"
montant:
minimum: 0.01
type: number
compteDestinationId:
description: ID d'un compte de destination en cas de transfert interne
type: string
motif:
description: "Motif, libellé ou preuve de dépôt"
type: string
origineFonds:
description: "Origine des fonds (LCB-FT) — obligatoire au-dessus du seuil\
\ configuré (ex. Salaire, Vente, Héritage)"
type: string
pieceJustificativeId:
description: ID de la pièce justificative (document) — requis au-dessus
du seuil LCB-FT
type: string
TransactionWaveDTO:
required:
- waveTransactionId
- typeTransaction
- statutTransaction
- montant
- codeDevise
- compteWaveId
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
nouveau:
type: boolean
waveTransactionId:
pattern: \S
type: string
waveRequestId:
type: string
waveReference:
type: string
typeTransaction:
$ref: "#/components/schemas/TypeTransactionWave"
statutTransaction:
$ref: "#/components/schemas/StatutTransactionWave"
montant:
minimum: 0
pattern: "^\\d{1,12}([.]\\d{1,2})?$"
type: number
frais:
minimum: 0
pattern: "^\\d{1,10}([.]\\d{1,2})?$"
type: number
montantNet:
minimum: 0
pattern: "^\\d{1,12}([.]\\d{1,2})?$"
type: number
codeDevise:
pattern: "^[A-Z]{3}$"
type: string
telephonePayeur:
type: string
telephoneBeneficiaire:
type: string
metadonnees:
type: string
nombreTentatives:
format: int32
type: integer
dateDerniereTentative:
$ref: "#/components/schemas/LocalDateTime"
messageErreur:
type: string
compteWaveId:
$ref: "#/components/schemas/UUID"
TypeActionAudit:
description: Type d'action pour l'audit
enum:
- USER_CREATE
- USER_UPDATE
- USER_DELETE
- USER_ACTIVATE
- USER_DEACTIVATE
- USER_SUSPEND
- USER_UNLOCK
- USER_PASSWORD_RESET
- USER_EMAIL_VERIFY
- USER_FORCE_LOGOUT
- USER_IMPORT
- ROLE_CREATE
- ROLE_UPDATE
- ROLE_DELETE
- ROLE_ASSIGN
- ROLE_REVOKE
- ROLE_ADD_COMPOSITE
- ROLE_REMOVE_COMPOSITE
- GROUP_CREATE
- GROUP_UPDATE
- GROUP_DELETE
- GROUP_ADD_MEMBER
- GROUP_REMOVE_MEMBER
- REALM_SYNC
- SYNC_USERS
- SYNC_ROLES
- REALM_EXPORT
- REALM_IMPORT
- REALM_ASSIGN
- REALM_REVOKE
- REALM_ACTIVATE
- REALM_DEACTIVATE
- REALM_SET_SUPER_ADMIN
- SESSION_CREATE
- SESSION_DELETE
- SESSION_REVOKE_ALL
- SYSTEM_BACKUP
- SYSTEM_RESTORE
- SYSTEM_CONFIG_CHANGE
type: string
TypeAide:
enum:
- AIDE_FINANCIERE_URGENTE
- PRET_SANS_INTERET
- AIDE_COTISATION
- AIDE_FRAIS_MEDICAUX
- AIDE_FRAIS_SCOLARITE
- DON_MATERIEL
- PRET_MATERIEL
- AIDE_DEMENAGEMENT
- AIDE_TRAVAUX
- AIDE_RECHERCHE_EMPLOI
- FORMATION_PROFESSIONNELLE
- CONSEIL_JURIDIQUE
- AIDE_CREATION_ENTREPRISE
- GARDE_ENFANTS
- AIDE_PERSONNES_AGEES
- TRANSPORT
- AIDE_ADMINISTRATIVE
- HEBERGEMENT_URGENCE
- AIDE_ALIMENTAIRE
- AIDE_VESTIMENTAIRE
- SOUTIEN_PSYCHOLOGIQUE
- AIDE_NUMERIQUE
- TRADUCTION
- AUTRE
type: string
TypeCompteComptable:
enum:
- ACTIF
- PASSIF
- CHARGES
- PRODUITS
- TRESORERIE
- AUTRE
type: string
TypeCompteEpargne:
enum:
- COURANT
- EPARGNE_LIBRE
- EPARGNE_BLOQUEE
- DEPOT_A_TERME
- EPARGNE_PROJET
type: string
TypeCredit:
enum:
- CONSOMMATION
- IMMOBILIER
- PROFESSIONNEL
- AGRICOLE
- SCOLAIRE
- URGENCE
- DECOUVERT
type: string
TypeCreneau:
enum:
- RECURRENT
- PONCTUEL
- URGENCE
- FLEXIBLE
type: string
TypeDocument:
enum:
- IDENTITE
- JUSTIFICATIF_DOMICILE
- PIECE_JUSTIFICATIVE
- PHOTO
- CONTRAT
- FACTURE
- RECU
- RAPPORT
- AUTRE
type: string
TypeDonReligieux:
enum:
- QUETE_ORDINAIRE
- DIME
- ZAKAT
- OFFRANDE_SPECIALE
- INTENTION_PRIERE
type: string
TypeGarantie:
enum:
- EPARGNE_BLOQUEE
- CAUTION_SOLIDAIRE
- MATERIELLE
- IMMOBILIERE
- FOND_GARANTIE
type: string
TypeJournalComptable:
enum:
- ACHATS
- VENTES
- BANQUE
- CAISSE
- OD
type: string
TypeMetrique:
enum:
- NOMBRE_MEMBRES_ACTIFS
- NOMBRE_MEMBRES_INACTIFS
- TAUX_CROISSANCE_MEMBRES
- MOYENNE_AGE_MEMBRES
- REPARTITION_GENRE_MEMBRES
- TOTAL_COTISATIONS_COLLECTEES
- COTISATIONS_EN_ATTENTE
- TAUX_RECOUVREMENT_COTISATIONS
- MOYENNE_COTISATION_MEMBRE
- EVOLUTION_REVENUS_MENSUELLE
- NOMBRE_EVENEMENTS_ORGANISES
- TAUX_PARTICIPATION_EVENEMENTS
- MOYENNE_PARTICIPANTS_EVENEMENT
- EVENEMENTS_ANNULES
- SATISFACTION_EVENEMENTS
- NOMBRE_DEMANDES_AIDE
- MONTANT_AIDES_ACCORDEES
- TAUX_APPROBATION_AIDES
- DELAI_TRAITEMENT_DEMANDES
- IMPACT_SOCIAL_MESURE
- TAUX_CONNEXION_MOBILE
- FREQUENCE_UTILISATION_APP
- ACTIONS_UTILISATEUR_JOUR
- RETENTION_UTILISATEURS
- NPS_SATISFACTION
- NOMBRE_ORGANISATIONS_ACTIVES
- TAUX_CROISSANCE_ORGANISATIONS
- MOYENNE_MEMBRES_PAR_ORGANISATION
- ORGANISATIONS_PREMIUM
- CHURN_RATE_ORGANISATIONS
- TEMPS_REPONSE_API
- TAUX_DISPONIBILITE_SYSTEME
- NOMBRE_ERREURS_SYSTEME
- UTILISATION_STOCKAGE
- PERFORMANCE_MOBILE
type: string
TypeReferenceResponse:
type: object
properties:
id:
$ref: "#/components/schemas/UUID"
dateCreation:
$ref: "#/components/schemas/LocalDateTime"
dateModification:
$ref: "#/components/schemas/LocalDateTime"
creePar:
type: string
modifiePar:
type: string
version:
format: int64
type: integer
actif:
type: boolean
domaine:
type: string
code:
type: string
libelle:
type: string
description:
type: string
icone:
type: string
couleur:
type: string
severity:
type: string
ordreAffichage:
format: int32
type: integer
estDefaut:
type: boolean
estSysteme:
type: boolean
organisationId:
$ref: "#/components/schemas/UUID"
categorie:
type: string
modulesRequis:
type: string
TypeRole:
description: Type de rôle Keycloak
enum:
- REALM_ROLE
- CLIENT_ROLE
- COMPOSITE_ROLE
type: string
TypeTontine:
enum:
- ROTATIVE_CLASSIQUE
- VARIABLE
- ACCUMULATIVE
type: string
TypeTransactionEpargne:
enum:
- DEPOT
- RETRAIT
- TRANSFERT_ENTRANT
- TRANSFERT_SORTANT
- PAIEMENT_INTERETS
- PRELEVEMENT_FRAIS
- RETENUE_GARANTIE
- LIBERATION_GARANTIE
- REMBOURSEMENT_CREDIT
type: string
TypeTransactionWave:
enum:
- DEPOT
- RETRAIT
- TRANSFERT
- PAIEMENT
- REMBOURSEMENT
type: string
TypeVote:
enum:
- ELECTION_BUREAU
- ADOPTION_RESOLUTION
- MODIFICATION_STATUTS
- EXCLUSION_MEMBRE
- REFERENDUM
type: string
UUID:
format: uuid
pattern: "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}"
type: string
UpdateAdhesionRequest:
type: object
properties:
montantPaye:
minimum: 0
pattern: "^\\d{1,10}([.]\\d{1,2})?$"
type: number
statut:
pattern: ^(EN_ATTENTE|APPROUVEE|REJETEE|ANNULEE|EN_PAIEMENT|PAYEE)$
type: string
dateApprobation:
$ref: "#/components/schemas/LocalDate"
datePaiement:
$ref: "#/components/schemas/LocalDateTime"
methodePaiement:
pattern: ^(ESPECES|VIREMENT|CHEQUE|WAVE_MONEY|ORANGE_MONEY|FREE_MONEY|CARTE_BANCAIRE)$
type: string
referencePaiement:
maxLength: 100
type: string
motifRejet:
maxLength: 1000
type: string
observations:
maxLength: 1000
type: string
approuvePar:
maxLength: 255
type: string
dateValidation:
$ref: "#/components/schemas/LocalDate"
UpdateAlertConfigRequest:
type: object
properties:
cpuHighAlertEnabled:
type: boolean
cpuThresholdPercent:
format: int32
maximum: 100
minimum: 0
type: integer
cpuDurationMinutes:
format: int32
maximum: 120
minimum: 1
type: integer
memoryLowAlertEnabled:
type: boolean
memoryThresholdPercent:
format: int32
maximum: 100
minimum: 0
type: integer
criticalErrorAlertEnabled:
type: boolean
errorAlertEnabled:
type: boolean
connectionFailureAlertEnabled:
type: boolean
connectionFailureThreshold:
format: int32
maximum: 1000
minimum: 1
type: integer
connectionFailureWindowMinutes:
format: int32
maximum: 60
minimum: 1
type: integer
emailNotificationsEnabled:
type: boolean
pushNotificationsEnabled:
type: boolean
smsNotificationsEnabled:
type: boolean
alertEmailRecipients:
type: string
UpdateBackupConfigRequest:
type: object
properties:
autoBackupEnabled:
type: boolean
frequency:
type: string
retention:
type: string
retentionDays:
format: int32
type: integer
backupTime:
type: string
includeDatabase:
type: boolean
includeFiles:
type: boolean
includeConfiguration:
type: boolean
UpdateConfigurationRequest:
type: object
properties:
cle:
type: string
valeur:
type: string
type:
type: string
categorie:
type: string
description:
type: string
modifiable:
type: boolean
visible:
type: boolean
metadonnees:
type: object
additionalProperties: {}
UpdateCotisationRequest:
type: object
properties:
libelle:
maxLength: 100
type: string
description:
maxLength: 500
type: string
montantDu:
minimum: 0
exclusiveMinimum: true
pattern: "^\\d{1,10}([.]\\d{1,2})?$"
type: number
dateEcheance:
$ref: "#/components/schemas/LocalDate"
observations:
maxLength: 1000
type: string
statut:
type: string
annee:
format: int32
maximum: 2100
minimum: 2020
type: integer
mois:
format: int32
maximum: 12
minimum: 1
type: integer
recurrente:
type: boolean
UpdateDemandeAideRequest:
type: object
properties:
typeAide:
$ref: "#/components/schemas/TypeAide"
titre:
maxLength: 200
type: string
description:
maxLength: 2000
type: string
justification:
maxLength: 1000
type: string
montantDemande:
type: number
devise:
type: string
priorite:
$ref: "#/components/schemas/PrioriteAide"
piecesJustificatives:
type: array
items:
$ref: "#/components/schemas/PieceJustificativeDTO"
beneficiaires:
type: array
items:
$ref: "#/components/schemas/BeneficiaireAideDTO"
donneesPersonnalisees:
type: object
additionalProperties: {}
tags:
type: array
items:
type: string
estConfidentielle:
type: boolean
necessiteSuivi:
type: boolean
localisation:
$ref: "#/components/schemas/LocalisationDTO"
contactUrgence:
$ref: "#/components/schemas/ContactUrgenceDTO"
dateLimite:
$ref: "#/components/schemas/LocalDate"
statut:
$ref: "#/components/schemas/StatutAide"
montantApprouve:
type: number
commentairesEvaluateur:
type: string
documentsJoints:
type: string
dateSoumission:
$ref: "#/components/schemas/LocalDateTime"
dateEvaluation:
$ref: "#/components/schemas/LocalDateTime"
dateVersement:
$ref: "#/components/schemas/LocalDateTime"
UpdateMembreRequest:
required:
- prenom
- nom
- email
- dateNaissance
type: object
properties:
prenom:
maxLength: 100
pattern: \S
type: string
nom:
maxLength: 100
pattern: \S
type: string
email:
maxLength: 255
pattern: \S
type: string
telephone:
maxLength: 20
type: string
telephoneWave:
maxLength: 20
type: string
dateNaissance:
$ref: "#/components/schemas/LocalDate"
profession:
maxLength: 100
type: string
photoUrl:
maxLength: 500
type: string
statutMatrimonial:
maxLength: 50
type: string
nationalite:
maxLength: 100
type: string
typeIdentite:
maxLength: 50
type: string
numeroIdentite:
maxLength: 100
type: string
actif:
type: boolean
UpdateOrganisationRequest:
required:
- nom
- email
type: object
properties:
nom:
maxLength: 255
pattern: \S
type: string
nomCourt:
maxLength: 50
type: string
description:
maxLength: 2000
type: string
email:
maxLength: 255
pattern: \S
type: string
telephone:
maxLength: 20
type: string
telephoneSecondaire:
maxLength: 20
type: string
emailSecondaire:
maxLength: 255
type: string
siteWeb:
maxLength: 500
type: string
logo:
maxLength: 500
type: string
reseauxSociaux:
maxLength: 1000
type: string
typeOrganisation:
maxLength: 50
type: string
statut:
maxLength: 30
type: string
dateFondation:
$ref: "#/components/schemas/LocalDate"
numeroEnregistrement:
maxLength: 100
type: string
devise:
maxLength: 3
type: string
budgetAnnuel:
type: number
cotisationObligatoire:
type: boolean
montantCotisationAnnuelle:
type: number
objectifs:
maxLength: 2000
type: string
activitesPrincipales:
maxLength: 2000
type: string
certifications:
maxLength: 500
type: string
partenaires:
maxLength: 1000
type: string
notes:
maxLength: 1000
type: string
latitude:
type: number
longitude:
type: number
adresse:
maxLength: 500
type: string
ville:
maxLength: 100
type: string
region:
maxLength: 100
type: string
pays:
maxLength: 100
type: string
codePostal:
maxLength: 20
type: string
organisationPublique:
type: boolean
accepteNouveauxMembres:
type: boolean
UpdatePropositionAideRequest:
type: object
properties:
typeAide:
$ref: "#/components/schemas/TypeAide"
titre:
type: string
description:
type: string
conditions:
type: string
montantMaximum:
type: number
nombreMaxBeneficiaires:
format: int32
type: integer
devise:
type: string
statut:
$ref: "#/components/schemas/StatutProposition"
estDisponible:
type: boolean
estRecurrente:
type: boolean
frequenceRecurrence:
type: string
dateExpiration:
$ref: "#/components/schemas/LocalDateTime"
delaiReponseHeures:
format: int32
type: integer
UpdateSystemConfigRequest:
type: object
properties:
applicationName:
type: string
timezone:
type: string
defaultLanguage:
type: string
maintenanceMode:
type: boolean
networkTimeout:
format: int32
type: integer
maxRetries:
format: int32
type: integer
connectionPoolSize:
format: int32
type: integer
twoFactorAuthEnabled:
type: boolean
sessionTimeoutMinutes:
format: int32
type: integer
auditLoggingEnabled:
type: boolean
metricsCollectionEnabled:
type: boolean
metricsIntervalSeconds:
format: int32
type: integer
performanceOptimizationEnabled:
type: boolean
autoBackupEnabled:
type: boolean
backupFrequency:
type: string
backupRetentionDays:
format: int32
type: integer
logLevel:
type: string
logRetentionDays:
format: int32
type: integer
detailedLoggingEnabled:
type: boolean
logCompressionEnabled:
type: boolean
realTimeMonitoringEnabled:
type: boolean
monitoringIntervalSeconds:
format: int32
type: integer
emailAlertsEnabled:
type: boolean
pushAlertsEnabled:
type: boolean
cpuHighAlertEnabled:
type: boolean
cpuThresholdPercent:
format: int32
type: integer
memoryLowAlertEnabled:
type: boolean
memoryThresholdPercent:
format: int32
type: integer
criticalErrorAlertEnabled:
type: boolean
connectionFailureAlertEnabled:
type: boolean
connectionFailureThreshold:
format: int32
type: integer
UpdateTypeReferenceRequest:
type: object
properties:
code:
maxLength: 50
type: string
libelle:
maxLength: 200
type: string
description:
maxLength: 1000
type: string
icone:
maxLength: 100
type: string
couleur:
maxLength: 50
type: string
severity:
maxLength: 20
type: string
ordreAffichage:
format: int32
type: integer
estDefaut:
type: boolean
actif:
type: boolean
categorie:
maxLength: 50
type: string
modulesRequis:
type: string
UserDTO:
description: Utilisateur Keycloak
required:
- username
- email
- prenom
- nom
type: object
properties:
id:
description: Identifiant unique (UUID Keycloak)
type: string
example: f47ac10b-58cc-4372-a567-0e02b2c3d479
dateCreation:
description: Date de création
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-15T10:30:00
dateModification:
description: Date de dernière modification
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-15T14:20:00
creeParUsername:
description: Utilisateur ayant créé l'entité
type: string
example: admin@lions.dev
modifieParUsername:
description: Utilisateur ayant modifié l'entité
type: string
example: superadmin@lions.dev
version:
format: int64
description: Numéro de version pour gestion optimiste
type: integer
example: 1
username:
description: Nom d'utilisateur unique
maxLength: 100
minLength: 3
pattern: "^[a-zA-Z0-9._-]+$"
type: string
example: jdupont
email:
description: Adresse email
pattern: \S
type: string
example: jean.dupont@lions.dev
emailVerified:
description: Email vérifié
type: boolean
example: true
prenom:
description: Prénom
maxLength: 100
minLength: 2
pattern: \S
type: string
example: Jean
nom:
description: Nom de famille
maxLength: 100
minLength: 2
pattern: \S
type: string
example: Dupont
statut:
description: Statut de l'utilisateur
type: string
allOf:
- $ref: "#/components/schemas/StatutUser"
example: ACTIF
enabled:
description: Compte activé
type: boolean
example: true
telephone:
description: Numéro de téléphone
type: string
example: +225 07 12 34 56 78
organisation:
description: Organisation/Entreprise
type: string
example: Lions Dev
departement:
description: Département
type: string
example: IT
fonction:
description: Fonction/Poste
type: string
example: Développeur Senior
pays:
description: Pays
type: string
example: Côte d'Ivoire
ville:
description: Ville
type: string
example: Abidjan
langue:
description: Langue préférée
type: string
example: fr
timezone:
description: Fuseau horaire
type: string
example: Africa/Abidjan
realmName:
description: Realm Keycloak
type: string
example: btpxpress
realmRoles:
description: Liste des rôles Realm assignés
type: array
items:
type: string
clientRoles:
description: Liste des rôles Client assignés
type: object
additionalProperties:
type: array
items:
type: string
groups:
description: Liste des groupes auxquels appartient l'utilisateur
type: array
items:
type: string
derniereConnexion:
description: Date de dernière connexion
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-15T10:30:00
dateExpiration:
description: Date d'expiration du compte
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2026-01-15T23:59:59
dateVerrouillage:
description: Date de verrouillage du compte
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-15T16:00:00
attributes:
description: Attributs personnalisés Keycloak
type: object
additionalProperties:
type: array
items:
type: string
requiredActions:
description: "Actions requises (ex: UPDATE_PASSWORD, VERIFY_EMAIL)"
type: array
items:
type: string
federatedIdentityProvider:
description: Fournisseur d'identité fédéré
type: string
example: google
federatedIdentities:
description: Lien d'identité fédérée
type: array
items:
$ref: "#/components/schemas/FederatedIdentityDTO"
temporaryPassword:
description: Mot de passe temporaire (création uniquement)
type: string
temporaryPasswordFlag:
description: Indique si le mot de passe est temporaire
type: boolean
activeSessions:
format: int32
description: Nombre de sessions actives
type: integer
example: 2
failedLoginAttempts:
format: int32
description: Nombre d'échecs de connexion
type: integer
example: 0
raisonModification:
description: Raison de la dernière modification
type: string
commentaires:
description: Commentaires administratifs
type: string
nomComplet:
type: string
actif:
type: boolean
expire:
type: boolean
UserSearchCriteriaDTO:
description: Critères de recherche d'utilisateurs
type: object
properties:
searchTerm:
description: "Terme de recherche générale (username, email, nom, prénom)"
type: string
example: dupont
username:
description: Nom d'utilisateur exact
type: string
example: jdupont
email:
description: Email exact
type: string
example: jean.dupont@lions.dev
prenom:
description: Prénom
type: string
example: Jean
nom:
description: Nom de famille
type: string
example: Dupont
telephone:
description: Numéro de téléphone
type: string
example: +225 01 02 03 04 05
statut:
description: Statut de l'utilisateur
type: string
allOf:
- $ref: "#/components/schemas/StatutUser"
example: ACTIF
enabled:
description: Compte activé
type: boolean
example: true
emailVerified:
description: Email vérifié
type: boolean
example: true
realmRoles:
description: Liste des rôles Realm à filtrer
type: array
items:
type: string
clientRoles:
description: Liste des rôles Client à filtrer
type: array
items:
type: string
groups:
description: Liste des groupes à filtrer
type: array
items:
type: string
clientName:
description: Nom du client pour filtrer par rôles client
type: string
example: btpxpress-app
organisation:
description: Organisation/Entreprise
type: string
example: Lions Dev
departement:
description: Département
type: string
example: IT
fonction:
description: Fonction/Poste
type: string
example: Développeur
pays:
description: Pays
type: string
example: Côte d'Ivoire
ville:
description: Ville
type: string
example: Abidjan
dateCreationMin:
description: Date de création minimum
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-01T00:00:00
dateCreationMax:
description: Date de création maximum
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-12-31T23:59:59
derniereConnexionMin:
description: Date de dernière connexion minimum
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-01T00:00:00
derniereConnexionMax:
description: Date de dernière connexion maximum
type: string
allOf:
- $ref: "#/components/schemas/LocalDateTime"
example: 2025-01-31T23:59:59
hasRequiredActions:
description: Utilisateurs avec actions requises uniquement
type: boolean
example: true
isLocked:
description: Utilisateurs verrouillés uniquement
type: boolean
example: false
isExpired:
description: Utilisateurs expirés uniquement
type: boolean
example: false
hasActiveSessions:
description: Utilisateurs avec sessions actives uniquement
type: boolean
example: true
realmName:
description: Nom du Realm à filtrer
type: string
example: btpxpress
page:
format: int32
description: Numéro de page (commence à 0)
default: 0
type: integer
example: 0
pageSize:
format: int32
description: Taille de la page
default: 20
type: integer
example: 20
maxResults:
format: int32
description: Nombre maximum de résultats
type: integer
example: 100
sortBy:
description: "Champ de tri (username, email, prenom, nom, dateCreation,\
\ derniereConnexion)"
type: string
example: username
sortOrder:
description: Ordre de tri (ASC ou DESC)
type: string
example: ASC
includeRoles:
description: Inclure les rôles dans les résultats
type: boolean
example: true
includeGroups:
description: Inclure les groupes dans les résultats
type: boolean
example: true
includeAttributes:
description: Inclure les attributs personnalisés
type: boolean
example: false
includeSessionInfo:
description: Inclure les informations de session
type: boolean
example: false
offset:
format: int32
type: integer
UserSearchResultDTO:
description: Résultat paginé de recherche d'utilisateurs
type: object
properties:
users:
description: Liste des utilisateurs trouvés
type: array
items:
$ref: "#/components/schemas/UserDTO"
totalCount:
format: int64
description: Nombre total d'utilisateurs correspondant aux critères
type: integer
example: 156
currentPage:
format: int32
description: Numéro de la page actuelle (commence à 0)
type: integer
example: 0
pageSize:
format: int32
description: Taille de la page
type: integer
example: 20
totalPages:
format: int32
description: Nombre total de pages
type: integer
example: 8
hasNextPage:
description: Indique s'il y a une page suivante
type: boolean
example: true
hasPreviousPage:
description: Indique s'il y a une page précédente
type: boolean
example: false
firstElement:
format: int32
description: Index du premier élément de la page
type: integer
example: 0
lastElement:
format: int32
description: Index du dernier élément de la page
type: integer
example: 19
isEmpty:
description: Indique si la page est vide
type: boolean
example: false
isFirstPage:
description: Indique si c'est la première page
type: boolean
example: true
isLastPage:
description: Indique si c'est la dernière page
type: boolean
example: false
criteria:
description: Critères de recherche utilisés
type: object
allOf:
- $ref: "#/components/schemas/UserSearchCriteriaDTO"
executionTimeMs:
format: int64
description: Temps d'exécution de la recherche en millisecondes
type: integer
example: 145
currentPageSize:
format: int32
type: integer
UserSessionStatsDTO:
description: Statistiques de sessions et d'utilisateurs en ligne pour un realm
type: object
properties:
realmName:
description: Nom du realm concerné
type: string
totalUsers:
format: int64
description: Nombre total d'utilisateurs dans le realm
type: integer
activeSessions:
format: int64
description: Nombre total de sessions actives (approximation)
type: integer
onlineUsers:
format: int64
description: Nombre d'utilisateurs considérés comme en ligne (approximation)
type: integer
securitySchemes:
Keycloak:
type: openIdConnect
description: Authentification Bearer JWT via Keycloak
openIdConnectUrl: https://security.lions.dev/realms/unionflow/.well-known/openid-configuration