openapi: 3.0.4 info: title: Blog API description: |- Projet Laravel avec Sanctum pour l'authentification license: name: Creative Commons 4.0 url: https://creativecommons.org/licenses/by/4.0/ version: 1.0.0 servers: - url: https://isi2.ale-pri.com/api/ description: Serveur de production - url: http://localhost:8000/api/ description: Serveur de développement local tags: - name: billets description: Opérations sur les billets - name: commentaires description: Operations sur les commentaires - name: user description: Operations about user paths: /billets: get: tags: - billets summary: Liste des billets operationId: getBillets responses: '200': description: Liste des billets content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Billet' /login: post: responses: '200': description: Authentification réussie content: application/json: schema: $ref: '#/components/schemas/TokenResponse' '401': description: Authentification échouée tags: - user summary: Authentification de l'utilisateur operationId: loginUser requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LoginRequest' /register: post: responses: '201': description: Utilisateur créé avec succès content: application/json: schema: $ref: '#/components/schemas/TokenResponse' '422': description: Erreur de validation tags: - user summary: Enregistrement d'un nouvel utilisateur operationId: registerUser requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RegisterRequest' /user: get: security: - sanctum: [] tags: - user summary: Récupérer les informations de l'utilisateur connecté operationId: getUser responses: '200': description: Informations de l'utilisateur content: application/json: schema: $ref: '#/components/schemas/User' '401': description: Non autorisé /user/logout: post: security: - sanctum: [] tags: - user summary: Déconnexion de l'utilisateur operationId: logoutUser responses: '204': description: Déconnexion réussie '401': description: Non autorisé /billets/{id}: get: security: - sanctum: [] tags: - billets summary: Détails d'un billet operationId: getBilletById parameters: - name: id in: path required: true schema: type: integer description: ID du billet responses: '200': description: Détails du billet content: application/json: schema: $ref: '#/components/schemas/BilletWithComments' '404': description: Billet non trouvé /commentaires: post: security: - sanctum: [] tags: - commentaires summary: Ajouter un commentaire à un billet operationId: addComment requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CommentaireRequest' responses: '201': description: Commentaire ajouté avec succès content: application/json: schema: $ref: '#/components/schemas/Commentaire' '422': description: Erreur de validation components: schemas: Billet: type: object properties: Date: type: string format: date-time example: '2023-10-01' Titre: type: string example: Billet 1 Contenu: type: string example: Lorem ipsum dolor sit amet. BilletWithComments: type: object properties: Date: type: string format: date-time example: '2023-10-01' Titre: type: string example: Billet 1 Contenu: type: string example: Lorem ipsum dolor sit amet. Commentaires: type: array items: $ref: '#/components/schemas/Commentaire' Commentaire: type: object properties: COM_DATE: type: string format: date-time example: '2023-10-01' COM_AUTEUR: type: string example: John Doe COM_CONTENU: type: string example: Lorem ipsum dolor sit amet. billet_id: type: integer example: 1 user_id: type: integer example: 1 CommentaireRequest: type: object properties: COM_DATE: type: string format: date-time example: '2023-10-01' COM_CONTENU: type: string example: Lorem ipsum dolor sit amet. billet_id: type: integer example: 1 user_id: type: integer example: 1 LoginRequest: type: object properties: email: type: string format: email example: au@secou.rs password: type: string format: password example: secret123 TokenResponse: type: object properties: token: type: string example: 1|a2b3c4d5e6f7g8h9i0j type: type: string example: Bearer RegisterRequest: type: object properties: name: type: string example: John Doe email: type: string format: email example: au@secou.rs password: type: string format: password example: secret123 User: type: object properties: id: type: integer example: 1 name: type: string example: John Doe email: type: string format: email example: au@secou.rs securitySchemes: sanctum: type: http scheme: bearer bearerFormat: Bearer description: Utiliser le token Bearer pour l'authentification