432 lines
10 KiB
JSON
432 lines
10 KiB
JSON
{
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
} |