paths: /api/herowars/members: get: summary: Récupère la liste de tous les membres description: Retourne une liste paginée de tous les membres. Authentification requise. tags: - Members security: - bearerAuth: [] parameters: - in: query name: page schema: type: integer default: 1 description: Numéro de page - in: query name: limit schema: type: integer default: 20 description: Nombre de membres par page - in: query name: clanId schema: type: integer description: Filtrer les membres par clan - in: query name: search schema: type: string description: Terme de recherche pour les membres responses: '200': description: Liste des membres récupérée avec succès content: application/json: schema: type: object properties: members: type: array items: $ref: '#/components/schemas/Member' membersCount: type: integer '401': description: Non authentifié '400': description: Erreur de validation '500': description: Erreur serveur post: summary: Crée un nouveau membre description: Crée un nouveau membre du clan. Authentification requise. tags: - Members security: - bearerAuth: [] requestBody: required: true content: application/json: schema: type: object required: - member properties: member: type: object required: - userId - clanId properties: userId: type: integer example: 1 clanId: type: integer example: 1 role: type: string enum: ["member", "officer", "leader"] default: "member" example: "member" joinedAt: type: string format: date-time responses: '201': description: Membre créé avec succès content: application/json: schema: type: object properties: member: $ref: '#/components/schemas/Member' '400': description: Données invalides '401': description: Non authentifié '422': description: Erreur de validation des données '500': description: Erreur serveur /api/herowars/members/{memberId}: get: summary: Récupère les détails d'un membre description: Retourne les détails complets d'un membre spécifique. Authentification requise. tags: - Members security: - bearerAuth: [] parameters: - in: path name: memberId required: true schema: type: integer description: L'ID unique du membre responses: '200': description: Membre récupéré avec succès content: application/json: schema: type: object properties: member: $ref: '#/components/schemas/Member' '401': description: Non authentifié '404': description: Membre non trouvé '500': description: Erreur serveur put: summary: Met à jour un membre description: Met à jour les informations d'un membre (rôle, date d'adhésion, etc.). Authentification requise. tags: - Members security: - bearerAuth: [] parameters: - in: path name: memberId required: true schema: type: integer description: L'ID unique du membre requestBody: required: true content: application/json: schema: type: object required: - member properties: member: type: object properties: role: type: string enum: ["member", "officer", "leader"] joinedAt: type: string format: date-time responses: '200': description: Membre mis à jour avec succès content: application/json: schema: type: object properties: member: $ref: '#/components/schemas/Member' '401': description: Non authentifié '404': description: Membre non trouvé '422': description: Erreur de validation des données '500': description: Erreur serveur delete: summary: Supprime un membre description: Supprime un membre du clan. Authentification requise. tags: - Members security: - bearerAuth: [] parameters: - in: path name: memberId required: true schema: type: integer description: L'ID unique du membre responses: '200': description: Membre supprimé avec succès '401': description: Non authentifié '403': description: Vous n'êtes pas autorisé à supprimer ce membre '404': description: Membre non trouvé '500': description: Erreur serveur components: schemas: Member: type: object properties: id: type: integer description: Identifiant unique du membre userId: type: integer description: ID de l'utilisateur associé user: type: object description: Informations de l'utilisateur properties: id: type: integer username: type: string email: type: string image: type: string clanId: type: integer description: ID du clan clan: type: object description: Informations du clan properties: id: type: integer name: type: string level: type: integer role: type: string description: Rôle du membre dans le clan enum: ["member", "officer", "leader"] example: "member" joinedAt: type: string format: date-time description: Date d'adhésion au clan createdAt: type: string format: date-time description: Date/heure de création du membre updatedAt: type: string format: date-time description: Date/heure de la dernière mise à jour