# API Documentation ## Base URL ``` http://localhost:980/api/v1 ``` ## Authentication La plupart des endpoints nécessitent une authentification. Après connexion, incluez le token dans l'en-tête Authorization : ``` Authorization: Bearer ``` ## Endpoints ### Authentication #### POST /auth/login Connexion utilisateur. **Body:** ```json { "username": "admin", "password": "password" } ``` **Response:** ```json { "success": true, "message": "Login successful", "data": { "id": 1, "username": "admin", "role": "admin", "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." } } ``` #### POST /auth/logout Déconnexion utilisateur. #### GET /auth/me Informations de l'utilisateur connecté. ### Certificates #### GET /certificates Liste paginée des certificats. **Query Parameters:** - `page` (int): Page à récupérer (défaut: 1) - `per_page` (int): Nombre d'éléments par page (défaut: 50, max: 100) **Response:** ```json { "success": true, "data": { "data": [...], "current_page": 1, "per_page": 50, "total": 42, "last_page": 1 } } ``` #### POST /certificates Créer un nouveau certificat. **Body:** ```json { "subdomain_name": "www", "functional_perimeter_id": 1 } ``` #### POST /certificates/{id}/revoke Révoquer un certificat. #### GET /certificates/download Télécharger un certificat. **Query Parameters:** - `type`: Type de certificat (`root`, `intermediate`, `simple`) - `file`: Nom du fichier - `perimeter`: Nom du périmètre (requis pour intermediate/simple) #### GET /certificates/stats Statistiques des certificats. **Response:** ```json { "success": true, "data": { "total": 42, "active": 38, "revoked": 4, "expiring_soon": [...] } } ``` ### Functional Perimeters #### GET /perimeters Liste des périmètres fonctionnels. #### POST /perimeters Créer un nouveau périmètre. **Body:** ```json { "name": "Finance", "intermediate_passphrase": "optional_passphrase" } ``` ### Users #### GET /users Liste des utilisateurs (Admin uniquement). #### POST /users Créer un nouvel utilisateur (Admin uniquement). **Body:** ```json { "username": "newuser", "password": "securepassword", "role": "user" } ``` #### DELETE /users/{id} Supprimer un utilisateur (Admin uniquement). #### PUT /users/{id}/role Modifier le rôle d'un utilisateur (Admin uniquement). **Body:** ```json { "role": "admin" } ``` #### PUT /users/{id}/password Modifier le mot de passe d'un utilisateur (Admin uniquement). **Body:** ```json { "new_password": "newpassword", "confirm_password": "newpassword" } ``` ### Dashboard #### GET /dashboard/stats Statistiques générales du dashboard. ## Error Responses Toutes les erreurs suivent ce format : ```json { "success": false, "message": "Error description", "errors": { "field": ["Validation error message"] } } ``` ### Status Codes - `200`: OK - `201`: Created - `400`: Bad Request - `401`: Unauthorized - `403`: Forbidden - `404`: Not Found - `405`: Method Not Allowed - `422`: Unprocessable Entity - `500`: Internal Server Error