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

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"
}
}
}
}