281 lines
6.7 KiB
YAML
Executable File
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 |