Files
AWA/laravel/resources/swagger/openapi.yml
2025-06-10 21:17:33 +02:00

281 lines
6.7 KiB
YAML
Executable File

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