API permettant la gestion des véhicules : Création; Kilométrage; Entretiens; Notes facultatives
Find a file
2026-09-16 14:42:38 +02:00
.htaccess Authentification de l'api (TODO : Lier voiture à un user) 2026-09-16 12:18:28 +02:00
config.php Création de l'api 2026-09-16 11:11:08 +02:00
index.php Liaison d'un véhicule avec un user 2026-09-16 14:36:42 +02:00
README.md Ajout du README 2026-09-16 14:42:38 +02:00
voituresapi (1).sql Liaison d'un véhicule avec un user 2026-09-16 14:36:42 +02:00

🚗 API REST Voitures

API REST en PHP 8 / MySQL pour la gestion d'un parc automobile (voitures, plaques d'immatriculation, relevés kilométriques, entretiens, notes de suivi) avec système d'authentification par jeton et contrôle des droits par propriétaire et administrateur.


⚙️ Configuration & Prérequis

  • Environnement : WampServer (Apache + MySQL + PHP 8.x)
  • Base de données : voituresapi
    • Gérable via phpMyAdmin : http://localhost/phpmyadmin5.2.3/index.php
    • Fichier de structure & données : voituresapi (1).sql
  • Fichier de connexion : config.php
    • Hôte : 127.0.0.1:3306 | Utilisateur : root | Mot de passe : "" (vide)

🔐 Authentification & Rôles

Les requêtes protégées requièrent l'en-tête HTTP :

Authorization: Bearer <token>

(ou X-API-KEY: <token>, ou le paramètre ?token=<token>)

Comptes de démonstration préconfigurés :

Rôle Utilisateur Mot de passe Jeton direct (api_token) Droits
Admin admin adminpassword admin-token-secret-12345 Accès total : consultation, modification et suppression de tout véhicule et contenu
Utilisateur user userpassword user-token-secret-67890 Propriétaire : gestion de ses propres véhicules, kilométrages, entretiens et notes

📡 Endpoints de l'API

1. Authentification (/auth)

Méthode Endpoint Accès Description
POST /auth/login Public Connexion (username, password) et récupération d'un jeton
POST /auth/register Public Inscription d'un nouvel utilisateur (username, password, nom)
GET /auth/me Authentifié Obtenir le profil et rôle du compte connecté
POST /auth/logout Authentifié Révocation du jeton de session

2. Voitures (/cars)

Méthode Endpoint Accès Description
GET /cars Public Liste toutes les voitures (filtrable par ?immatriculation=..., ?user_id=..., ?mine=true)
GET /cars/mes-voitures Authentifié Liste uniquement les voitures appartenant à l'utilisateur connecté
GET /cars/{id} Public Fiche d'une voiture avec son dernier km et son propriétaire
GET /cars/immatriculation/{plaque} Public Identification par plaque (insensible à la casse, espaces et tirets, ex: AB-123-CD)
GET /cars/{id}/etat Propriétaire ou Admin État complet (voiture, dernier km, historique entretiens et notes de suivi)
POST /cars Authentifié Créer une voiture (attribuée automatiquement à l'utilisateur connecté)
PUT /cars/{id} Propriétaire ou Admin Mettre à jour les paramètres d'une voiture (marque, modèle, année, immatriculation...)
DELETE /cars/{id} Propriétaire ou Admin Supprimer une voiture et toutes ses données associées (cascade)

Corps attendu pour POST /cars :

{
  "marque": "Renault",
  "modele": "Clio V",
  "annee": 2021,
  "dateAchat": "2023-06-15",
  "immatriculation": "AB-123-CD",
  "VIN": "VF1RJA00012345678",
  "kilometrage_initial": 45000
}

3. Kilométrage (/cars/{id}/kilometrage & /kilometrage)

Méthode Endpoint Accès Description
GET /cars/{id}/kilometrage Public Historique des relevés kilométriques d'une voiture
POST /cars/{id}/kilometrage Propriétaire ou Admin Ajouter un relevé (valeur, date_releve optionnelle)
DELETE /kilometrage/{id} Propriétaire ou Admin Supprimer un relevé kilométrique

4. Entretiens / Maintenance (/cars/{id}/maintenance & /maintenance)

Méthode Endpoint Accès Description
GET /cars/{id}/maintenance Public Historique des entretiens d'une voiture
GET /maintenance/{id} Public Détail d'un entretien spécifique
POST /cars/{id}/maintenance Propriétaire ou Admin Enregistrer un entretien (type_entretien, date_evenement, kilometrage, description, prix)
PUT /maintenance/{id} Propriétaire ou Admin Modifier un entretien
DELETE /maintenance/{id} Propriétaire ou Admin Supprimer un entretien

5. Notes de suivi confidentielles (/cars/{id}/notes & /notes)

Méthode Endpoint Accès Description
GET /cars/{id}/notes Propriétaire ou Admin Consulter les notes de suivi interne d'une voiture
POST /cars/{id}/notes Propriétaire ou Admin Ajouter une note (titre, contenu)
PUT /notes/{id} Propriétaire ou Admin Modifier une note
DELETE /notes/{id} Propriétaire ou Admin Supprimer une note

🧪 Exemples rapides de requêtes (cURL)

1. Identification par plaque (Public) :

curl -X GET "http://localhost/voitureAPI/cars/immatriculation/AB-123-CD"

2. Connexion :

curl -X POST "http://localhost/voitureAPI/auth/login" \
     -H "Content-Type: application/json" \
     -d '{"username": "user", "password": "userpassword"}'

3. Création d'une voiture (Authentifié) :

curl -X POST "http://localhost/voitureAPI/cars" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer user-token-secret-67890" \
     -d '{"marque": "Peugeot", "modele": "308", "annee": 2022, "dateAchat": "2023-01-10", "immatriculation": "GA-987-ZB"}'

4. Modification de sa voiture (Propriétaire ou Admin) :

curl -X PUT "http://localhost/voitureAPI/cars/2" \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer user-token-secret-67890" \
     -d '{"modele": "208 GT Line"}'