docs: Workflow création de compte + refonte documentation
- Ajout Cahier des Charges v1.3 - Ajout Workflow technique création de compte (v1.0) - Réorganisation docs avec préfixes numériques (00_, 01_, etc.) - Ajout données de test CSV - Modifications principales : * Champ téléphone unique (suppression mobile/fixe) * Inscription sans mot de passe (Parents + AM) * Création MDP par email après validation (7j) * Genre enfant obligatoire (H/F) * Date agrément obligatoire pour AM
This commit is contained in:
+873
@@ -0,0 +1,873 @@
|
||||
# 🌐 Documentation API
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
L'API PtitsPas est une API REST construite avec **NestJS**.
|
||||
|
||||
**URL de base** : `https://app.ptits-pas.fr/api/v1`
|
||||
**Format** : JSON
|
||||
**Authentication** : JWT Bearer Token
|
||||
|
||||
---
|
||||
|
||||
## Authentication
|
||||
|
||||
Toutes les routes (sauf `/auth/login`, `/auth/register`, `/auth/refresh`) nécessitent un token JWT dans le header :
|
||||
|
||||
```http
|
||||
Authorization: Bearer <access_token>
|
||||
```
|
||||
|
||||
### Tokens
|
||||
|
||||
L'API utilise deux types de tokens :
|
||||
- **Access Token** : Durée de vie courte, utilisé pour les requêtes API
|
||||
- **Refresh Token** : Durée de vie longue, utilisé pour renouveler l'access token
|
||||
|
||||
---
|
||||
|
||||
## Endpoints
|
||||
|
||||
### 🔐 Authentification (`/auth`)
|
||||
|
||||
#### POST `/auth/login`
|
||||
|
||||
Connexion d'un utilisateur.
|
||||
|
||||
**Public** : ✅ Oui
|
||||
|
||||
**Request Body** :
|
||||
```json
|
||||
{
|
||||
"email": "admin@ptits-pas.fr",
|
||||
"password": "4dm1n1strateur"
|
||||
}
|
||||
```
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
{
|
||||
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
||||
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
||||
"user": {
|
||||
"id": "uuid",
|
||||
"email": "admin@ptits-pas.fr",
|
||||
"role": "super_admin",
|
||||
"prenom": "Admin",
|
||||
"nom": "Système"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Errors** :
|
||||
- `401` : Email ou mot de passe incorrect
|
||||
- `403` : Compte suspendu ou en attente de validation
|
||||
|
||||
---
|
||||
|
||||
#### POST `/auth/register`
|
||||
|
||||
Inscription d'un nouvel utilisateur (parent ou assistante maternelle).
|
||||
|
||||
**Public** : ✅ Oui
|
||||
|
||||
**Request Body** :
|
||||
```json
|
||||
{
|
||||
"email": "parent@example.com",
|
||||
"password": "motdepasse123",
|
||||
"prenom": "Jean",
|
||||
"nom": "Dupont",
|
||||
"role": "parent",
|
||||
"telephone": "0601020304"
|
||||
}
|
||||
```
|
||||
|
||||
**Response** (201) :
|
||||
```json
|
||||
{
|
||||
"message": "Inscription réussie. Votre compte est en attente de validation.",
|
||||
"userId": "uuid"
|
||||
}
|
||||
```
|
||||
|
||||
**Errors** :
|
||||
- `409` : Email déjà utilisé
|
||||
- `400` : Données invalides
|
||||
|
||||
---
|
||||
|
||||
#### POST `/auth/refresh`
|
||||
|
||||
Rafraîchir l'access token à l'aide du refresh token.
|
||||
|
||||
**Public** : ✅ Oui
|
||||
|
||||
**Request Body** :
|
||||
```json
|
||||
{
|
||||
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
|
||||
}
|
||||
```
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
{
|
||||
"access_token": "nouveau_token...",
|
||||
"refresh_token": "nouveau_refresh_token..."
|
||||
}
|
||||
```
|
||||
|
||||
**Errors** :
|
||||
- `401` : Token de rafraîchissement invalide ou expiré
|
||||
|
||||
---
|
||||
|
||||
#### GET `/auth/me`
|
||||
|
||||
Récupérer le profil de l'utilisateur connecté.
|
||||
|
||||
**Auth** : 🔒 Requis
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
{
|
||||
"id": "uuid",
|
||||
"email": "admin@ptits-pas.fr",
|
||||
"role": "super_admin",
|
||||
"prenom": "Admin",
|
||||
"nom": "Système",
|
||||
"statut": "actif"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### POST `/auth/logout`
|
||||
|
||||
Déconnexion (invalide le refresh token).
|
||||
|
||||
**Auth** : 🔒 Requis
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
{
|
||||
"message": "Déconnexion réussie"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 👥 Utilisateurs (`/users`)
|
||||
|
||||
**Auth** : 🔒 Requis pour toutes les routes
|
||||
|
||||
#### GET `/users`
|
||||
|
||||
Liste tous les utilisateurs.
|
||||
|
||||
**Rôles autorisés** : `super_admin`
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": "uuid",
|
||||
"email": "user@example.com",
|
||||
"role": "parent",
|
||||
"prenom": "Jean",
|
||||
"nom": "Dupont",
|
||||
"statut": "actif",
|
||||
"cree_le": "2025-01-15T10:30:00Z"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### GET `/users/:id`
|
||||
|
||||
Récupérer un utilisateur par son ID.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
{
|
||||
"id": "uuid",
|
||||
"email": "user@example.com",
|
||||
"role": "parent",
|
||||
"prenom": "Jean",
|
||||
"nom": "Dupont",
|
||||
"telephone": "0601020304",
|
||||
"statut": "actif"
|
||||
}
|
||||
```
|
||||
|
||||
**Errors** :
|
||||
- `404` : Utilisateur non trouvé
|
||||
- `403` : Accès refusé
|
||||
|
||||
---
|
||||
|
||||
#### POST `/users`
|
||||
|
||||
Créer un nouvel utilisateur.
|
||||
|
||||
**Rôles autorisés** : `super_admin`
|
||||
|
||||
**Request Body** :
|
||||
```json
|
||||
{
|
||||
"email": "newuser@example.com",
|
||||
"password": "password123",
|
||||
"role": "gestionnaire",
|
||||
"prenom": "Marie",
|
||||
"nom": "Martin"
|
||||
}
|
||||
```
|
||||
|
||||
**Response** (201) :
|
||||
```json
|
||||
{
|
||||
"id": "uuid",
|
||||
"email": "newuser@example.com",
|
||||
"role": "gestionnaire"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### PATCH `/users/:id`
|
||||
|
||||
Mettre à jour un utilisateur.
|
||||
|
||||
**Rôles autorisés** : `super_admin`
|
||||
|
||||
**Request Body** (tous les champs sont optionnels) :
|
||||
```json
|
||||
{
|
||||
"prenom": "Jean-Claude",
|
||||
"telephone": "0612345678",
|
||||
"adresse": "1 rue de la Paix, 75001 Paris"
|
||||
}
|
||||
```
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
{
|
||||
"id": "uuid",
|
||||
"email": "user@example.com",
|
||||
"prenom": "Jean-Claude",
|
||||
"telephone": "0612345678"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### PATCH `/users/:id/valider`
|
||||
|
||||
Valider un compte utilisateur en attente.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`, `administrateur`
|
||||
|
||||
**Request Body** :
|
||||
```json
|
||||
{
|
||||
"comment": "Compte validé après vérification des documents"
|
||||
}
|
||||
```
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
{
|
||||
"message": "Compte validé avec succès",
|
||||
"userId": "uuid"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### PATCH `/users/:id/suspendre`
|
||||
|
||||
Suspendre un compte utilisateur.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`, `administrateur`
|
||||
|
||||
**Request Body** :
|
||||
```json
|
||||
{
|
||||
"comment": "Compte suspendu pour non-respect des conditions"
|
||||
}
|
||||
```
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
{
|
||||
"message": "Compte suspendu",
|
||||
"userId": "uuid"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### DELETE `/users/:id`
|
||||
|
||||
Supprimer un utilisateur.
|
||||
|
||||
**Rôles autorisés** : `super_admin`
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
{
|
||||
"message": "Utilisateur supprimé"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 🏢 Gestionnaires (`/gestionnaires`)
|
||||
|
||||
**Auth** : 🔒 Requis pour toutes les routes
|
||||
|
||||
#### GET `/gestionnaires`
|
||||
|
||||
Liste tous les gestionnaires.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": "uuid",
|
||||
"email": "gestionnaire@ptits-pas.fr",
|
||||
"role": "gestionnaire",
|
||||
"prenom": "Sophie",
|
||||
"nom": "Leroy"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### GET `/gestionnaires/:id`
|
||||
|
||||
Récupérer un gestionnaire par son ID.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`
|
||||
|
||||
**Response** (200) : Identique à `/users/:id`
|
||||
|
||||
---
|
||||
|
||||
#### POST `/gestionnaires`
|
||||
|
||||
Créer un nouveau gestionnaire.
|
||||
|
||||
**Rôles autorisés** : `super_admin`
|
||||
|
||||
**Request Body** :
|
||||
```json
|
||||
{
|
||||
"email": "nouveau.gestionnaire@ptits-pas.fr",
|
||||
"password": "password123",
|
||||
"prenom": "Laurent",
|
||||
"nom": "Bernard"
|
||||
}
|
||||
```
|
||||
|
||||
**Response** (201) :
|
||||
```json
|
||||
{
|
||||
"id": "uuid",
|
||||
"email": "nouveau.gestionnaire@ptits-pas.fr",
|
||||
"role": "gestionnaire"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### PATCH `/gestionnaires/:id`
|
||||
|
||||
Mettre à jour un gestionnaire.
|
||||
|
||||
**Rôles autorisés** : `super_admin`
|
||||
|
||||
**Request Body** : Identique à `/users/:id` (PATCH)
|
||||
|
||||
---
|
||||
|
||||
### 👶 Parents (`/parents`)
|
||||
|
||||
**Auth** : 🔒 Requis pour toutes les routes
|
||||
|
||||
#### GET `/parents`
|
||||
|
||||
Liste tous les parents.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id_utilisateur": "uuid",
|
||||
"id_co_parent": "uuid",
|
||||
"utilisateur": {
|
||||
"email": "parent@example.com",
|
||||
"prenom": "Jean",
|
||||
"nom": "Dupont"
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### GET `/parents/:id`
|
||||
|
||||
Récupérer un parent par son ID utilisateur.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
{
|
||||
"id_utilisateur": "uuid",
|
||||
"id_co_parent": "uuid",
|
||||
"utilisateur": {
|
||||
"email": "parent@example.com",
|
||||
"prenom": "Jean",
|
||||
"nom": "Dupont",
|
||||
"telephone": "0601020304"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### POST `/parents`
|
||||
|
||||
Créer un nouveau parent.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`
|
||||
|
||||
**Request Body** :
|
||||
```json
|
||||
{
|
||||
"email": "parent@example.com",
|
||||
"password": "password123",
|
||||
"prenom": "Jean",
|
||||
"nom": "Dupont",
|
||||
"telephone": "0601020304",
|
||||
"id_co_parent": "uuid" // optionnel
|
||||
}
|
||||
```
|
||||
|
||||
**Response** (201) : Identique à GET
|
||||
|
||||
---
|
||||
|
||||
#### PATCH `/parents/:id`
|
||||
|
||||
Mettre à jour un parent.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`
|
||||
|
||||
**Request Body** :
|
||||
```json
|
||||
{
|
||||
"id_co_parent": "uuid",
|
||||
"telephone": "0612345678"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 👧 Enfants (`/enfants`)
|
||||
|
||||
**Auth** : 🔒 Requis pour toutes les routes
|
||||
|
||||
#### GET `/enfants`
|
||||
|
||||
Liste tous les enfants.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`, `administrateur`
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": "uuid",
|
||||
"prenom": "Alice",
|
||||
"nom": "Dupont",
|
||||
"genre": "F",
|
||||
"date_naissance": "2020-05-15",
|
||||
"statut": "actif"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### GET `/enfants/:id`
|
||||
|
||||
Récupérer un enfant par son ID.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`, `administrateur`, `parent` (si c'est son enfant)
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
{
|
||||
"id": "uuid",
|
||||
"prenom": "Alice",
|
||||
"nom": "Dupont",
|
||||
"genre": "F",
|
||||
"date_naissance": "2020-05-15",
|
||||
"statut": "actif",
|
||||
"consentement_photo": false
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### POST `/enfants`
|
||||
|
||||
Créer un nouvel enfant.
|
||||
|
||||
**Rôles autorisés** : `parent`
|
||||
|
||||
**Request Body** :
|
||||
```json
|
||||
{
|
||||
"prenom": "Alice",
|
||||
"nom": "Dupont",
|
||||
"genre": "F",
|
||||
"date_naissance": "2020-05-15",
|
||||
"statut": "actif"
|
||||
}
|
||||
```
|
||||
|
||||
**Response** (201) : Identique à GET
|
||||
|
||||
---
|
||||
|
||||
#### PATCH `/enfants/:id`
|
||||
|
||||
Mettre à jour un enfant.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `administrateur`, `parent` (si c'est son enfant)
|
||||
|
||||
**Request Body** :
|
||||
```json
|
||||
{
|
||||
"statut": "scolarise",
|
||||
"consentement_photo": true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### DELETE `/enfants/:id`
|
||||
|
||||
Supprimer un enfant.
|
||||
|
||||
**Rôles autorisés** : `super_admin`
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
{
|
||||
"message": "Enfant supprimé"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 👩🍼 Assistantes Maternelles (`/assistantes-maternelles`)
|
||||
|
||||
**Auth** : 🔒 Requis pour toutes les routes
|
||||
|
||||
#### GET `/assistantes-maternelles`
|
||||
|
||||
Liste toutes les assistantes maternelles.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id_utilisateur": "uuid",
|
||||
"numero_agrement": "AM123456",
|
||||
"nb_max_enfants": 4,
|
||||
"place_disponible": 2,
|
||||
"disponible": true,
|
||||
"utilisateur": {
|
||||
"email": "am@example.com",
|
||||
"prenom": "Marie",
|
||||
"nom": "Martin"
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### GET `/assistantes-maternelles/:id`
|
||||
|
||||
Récupérer une assistante maternelle par son ID utilisateur.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
{
|
||||
"id_utilisateur": "uuid",
|
||||
"numero_agrement": "AM123456",
|
||||
"nir_chiffre": "123456789012345",
|
||||
"nb_max_enfants": 4,
|
||||
"place_disponible": 2,
|
||||
"biographie": "Assistante maternelle depuis 10 ans...",
|
||||
"disponible": true,
|
||||
"ville_residence": "Paris",
|
||||
"date_agrement": "2015-06-01",
|
||||
"annee_experience": 10,
|
||||
"specialite": "Pédagogie Montessori"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### POST `/assistantes-maternelles`
|
||||
|
||||
Créer une nouvelle assistante maternelle.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`
|
||||
|
||||
**Request Body** :
|
||||
```json
|
||||
{
|
||||
"email": "am@example.com",
|
||||
"password": "password123",
|
||||
"prenom": "Marie",
|
||||
"nom": "Martin",
|
||||
"numero_agrement": "AM123456",
|
||||
"nb_max_enfants": 4,
|
||||
"ville_residence": "Paris"
|
||||
}
|
||||
```
|
||||
|
||||
**Response** (201) : Identique à GET
|
||||
|
||||
---
|
||||
|
||||
#### PATCH `/assistantes-maternelles/:id`
|
||||
|
||||
Mettre à jour une assistante maternelle.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`
|
||||
|
||||
**Request Body** :
|
||||
```json
|
||||
{
|
||||
"place_disponible": 1,
|
||||
"disponible": true,
|
||||
"biographie": "Nouvelle bio..."
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### DELETE `/assistantes-maternelles/:id`
|
||||
|
||||
Supprimer une assistante maternelle.
|
||||
|
||||
**Rôles autorisés** : `super_admin`, `gestionnaire`, `administrateur`
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
{
|
||||
"message": "Assistante maternelle supprimée"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 🏠 Root (`/`)
|
||||
|
||||
#### GET `/`
|
||||
|
||||
Aperçu de l'API.
|
||||
|
||||
**Public** : ✅ Oui
|
||||
|
||||
**Response** (200) :
|
||||
```json
|
||||
{
|
||||
"message": "Bienvenue sur l'API PtitsPas",
|
||||
"version": "1.0.0",
|
||||
"endpoints": {
|
||||
"auth": "/api/v1/auth",
|
||||
"users": "/api/v1/users",
|
||||
"parents": "/api/v1/parents",
|
||||
"enfants": "/api/v1/enfants",
|
||||
"assistantes-maternelles": "/api/v1/assistantes-maternelles",
|
||||
"gestionnaires": "/api/v1/gestionnaires"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### GET `/hello`
|
||||
|
||||
Endpoint de test.
|
||||
|
||||
**Public** : ✅ Oui
|
||||
|
||||
**Response** (200) :
|
||||
```text
|
||||
Hello World!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Codes d'erreur HTTP
|
||||
|
||||
| Code | Signification | Explication |
|
||||
|------|---------------|-------------|
|
||||
| `200` | OK | Requête réussie |
|
||||
| `201` | Created | Ressource créée |
|
||||
| `400` | Bad Request | Données invalides |
|
||||
| `401` | Unauthorized | Non authentifié ou token invalide |
|
||||
| `403` | Forbidden | Accès refusé (rôle insuffisant) |
|
||||
| `404` | Not Found | Ressource non trouvée |
|
||||
| `409` | Conflict | Conflit (ex: email déjà existant) |
|
||||
| `500` | Internal Server Error | Erreur serveur |
|
||||
|
||||
---
|
||||
|
||||
## Format des réponses d'erreur
|
||||
|
||||
```json
|
||||
{
|
||||
"statusCode": 400,
|
||||
"message": "Validation failed",
|
||||
"error": "Bad Request"
|
||||
}
|
||||
```
|
||||
|
||||
Ou avec détails :
|
||||
|
||||
```json
|
||||
{
|
||||
"statusCode": 403,
|
||||
"message": "Accès refusé : rôle insuffisant",
|
||||
"error": "Forbidden"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Authentification et Rôles
|
||||
|
||||
### Hiérarchie des rôles
|
||||
|
||||
1. **super_admin** : Accès total
|
||||
2. **administrateur** : Gestion des utilisateurs
|
||||
3. **gestionnaire** : Gestion des dossiers et validation
|
||||
4. **assistante_maternelle** : Accès à ses propres données
|
||||
5. **parent** : Accès à ses propres données et enfants
|
||||
|
||||
### Guards
|
||||
|
||||
L'API utilise deux guards :
|
||||
- **AuthGuard** : Vérifie la validité du token JWT
|
||||
- **RolesGuard** : Vérifie que l'utilisateur a le bon rôle
|
||||
|
||||
### Décorateurs
|
||||
|
||||
- `@Public()` : Route accessible sans authentification
|
||||
- `@Roles(...roles)` : Restreint l'accès aux rôles spécifiés
|
||||
- `@User()` : Injecte l'utilisateur connecté dans le contrôleur
|
||||
|
||||
---
|
||||
|
||||
## Swagger / OpenAPI
|
||||
|
||||
L'API expose automatiquement sa documentation Swagger :
|
||||
|
||||
**URL** : `https://app.ptits-pas.fr/api/docs`
|
||||
|
||||
Cette documentation interactive permet de :
|
||||
- Visualiser tous les endpoints
|
||||
- Tester les requêtes directement
|
||||
- Voir les schémas de données
|
||||
|
||||
---
|
||||
|
||||
## Exemples d'utilisation
|
||||
|
||||
### Connexion et récupération du profil
|
||||
|
||||
```bash
|
||||
# 1. Login
|
||||
curl -X POST https://app.ptits-pas.fr/api/v1/auth/login \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"email":"admin@ptits-pas.fr","password":"4dm1n1strateur"}'
|
||||
|
||||
# Response
|
||||
{
|
||||
"access_token": "eyJhbGc...",
|
||||
"refresh_token": "eyJhbGc..."
|
||||
}
|
||||
|
||||
# 2. Récupérer son profil
|
||||
curl https://app.ptits-pas.fr/api/v1/auth/me \
|
||||
-H "Authorization: Bearer eyJhbGc..."
|
||||
```
|
||||
|
||||
### Créer un parent
|
||||
|
||||
```bash
|
||||
curl -X POST https://app.ptits-pas.fr/api/v1/parents \
|
||||
-H "Authorization: Bearer <access_token>" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"email": "parent@example.com",
|
||||
"password": "password123",
|
||||
"prenom": "Jean",
|
||||
"nom": "Dupont",
|
||||
"telephone": "0601020304"
|
||||
}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Limitations et Rate Limiting
|
||||
|
||||
**Actuellement** : Aucune limitation n'est active.
|
||||
|
||||
**À implémenter** :
|
||||
- Rate limiting (ex: 100 requêtes/minute)
|
||||
- Pagination pour les listes longues
|
||||
- Filtrage et tri sur les endpoints de liste
|
||||
|
||||
---
|
||||
|
||||
## Évolutions prévues
|
||||
|
||||
- [ ] Endpoints pour les dossiers (`/dossiers`)
|
||||
- [ ] Endpoints pour les contrats (`/contrats`)
|
||||
- [ ] Endpoints pour les événements (`/evenements`)
|
||||
- [ ] Endpoints pour les messages (`/messages`)
|
||||
- [ ] Endpoints pour les notifications (`/notifications`)
|
||||
- [ ] WebSocket pour les notifications en temps réel
|
||||
- [ ] Upload de fichiers (`/uploads`)
|
||||
- [ ] Génération de PDF (contrats)
|
||||
|
||||
---
|
||||
|
||||
**Dernière mise à jour** : Novembre 2025
|
||||
|
||||
Reference in New Issue
Block a user