Aller au contenu

API Bibliothèque v1.2.0

1. Informations Générales⚓︎

  • Base URL : https://projects.evan-gerlandmolinier.fr/r506-bibliotheque/api
  • Encodage : UTF-8
  • Content-Type : application/json
  • Accept : application/json

Authentification⚓︎

L'API utilise un système de Jeton de Session (Bearer Token) propriétaire.

  1. L'usager s'identifie via l'endpoint /connexion.
  2. Le serveur retourne un api_token (valide 30 minutes).
  3. Ce jeton doit être transmis dans chaque requête suivante.

Transmission du jeton : Dans le Header HTTP de chaque requête authentifiée :

Authorization: Bearer <votre_token_base64>

2. Endpoints d'Authentification⚓︎

2.1 Connexion (Login)⚓︎

Authentifie un usager et génère un jeton de session.

  • URL : /connexion
  • Méthode : POST
  • Accès : Public

Paramètres (Body JSON) :

Champ Type Obligatoire Description
identifiant String Oui Identifiant ou Email de l'usager
password String Oui Mot de passe en clair

Réponse (Succès 200 OK) :

{
  "success": true,
  "message": "Connexion réussie.",
  "api_token": "AbCdE...", // Jeton à conserver pour la session
  "usager": {
    "id": 42,
    "nom": "JACQUOT",
    "prenom": "Pierre-Alain"
  }
}

2.2 Déconnexion (Logout)⚓︎

Invalide le jeton de session actuel côté serveur.

  • URL : /deconnexion
  • Méthode : DELETE
  • Accès : Authentifié

Réponse (Succès 200 OK) :

{
  "success": true
}

3. Endpoints Profil Usager⚓︎

3.1 Consulter le profil⚓︎

Récupère les informations personnelles de l'usager connecté.

  • URL : /profil
  • Méthode : GET
  • Accès : Authentifié

Réponse (Succès 200 OK) :

{
  "success": true,
  "profil": {
    "nom": "JACQUOT",
    "prenom": "Pierre-Alain",
    "email": "pierre-alain.jacquot@goat.com",
    "identifiant": "the_goat",
    "created_at": "2023-09-01T10:00:00.000000Z",
    "blocage": 0
  }
}

3.2 Mettre à jour le profil⚓︎

Permet à l'usager de modifier ses informations et son mot de passe.

  • URL : /profil
  • Méthode : PATCH
  • Accès : Authentifié

Paramètres (Body JSON) :

Champ Type Obligatoire Description
nom String Oui
prenom String Oui
email String Oui Doit être unique
identifiant String Oui Doit être unique
password String Non Min. 8 caractères. Laisser vide pour ne pas changer.
password_confirmation String Oui (si password présent) Doit être identique au password.

Réponse (Succès 200 OK) :

{
  "success": true,
  "message": "Profil mis à jour avec succès.",
  "usager": {
    "nom": "JACQUOT",
    "prenom": "Pierre-Alain"
  }
}

4. Endpoints Emprunts & Ouvrages⚓︎

4.1 Liste des emprunts⚓︎

Récupère la liste des ouvrages actuellement empruntés par l'usager.

  • URL : /emprunts
  • Méthode : GET
  • Accès : Authentifié

Réponse (Succès 200 OK) :

{
  "success": true,
  "emprunts": [
    {
      "exemplaire_id": 105,
      "titre": "Le Petit Prince",
      "auteur": "Antoine de Saint-Exupéry",
      "image_url": "http://.../images/le-petit-prince.jpg",
      "date_retour_prevue": "2024-02-15",
      "est_en_retard": false,
      "deja_renouvele": false
    },
    {
      "exemplaire_id": 202,
      "titre": "1984",
      "auteur": "George Orwell",
      "image_url": null,
      "date_retour_prevue": "2023-12-01",
      "est_en_retard": true,
      "deja_renouvele": true
    }
  ]
}

4.2 Renouveler un emprunt⚓︎

Prolonge la date de retour d'un mois. Possible une seule fois par exemplaire.

  • URL : /emprunts/{id}/renouvellement
  • Méthode : PATCH
  • Accès : Authentifié

Paramètres (URL) :

Paramètre Type Obligatoire Description
id Int Oui ID de l'exemplaire concerné

Réponse (Succès 200 OK) :

{
  "success": true,
  "message": "Renouvelé.",
  "nouvelle_date": "2024-03-15"
}

5. Gestion des Erreurs⚓︎

L'API retourne des codes HTTP standards accompagnés d'un message JSON explicatif.

Structure d'erreur⚓︎

{
  "error": "code_erreur_interne",
  "message": "Message lisible par l'humain."
}

Codes HTTP fréquents⚓︎

Code HTTP Signification Cause probable / Action
400 Bad Request Requête mal formée ou règle métier non respectée (ex: ouvrage déjà renouvelé).
401 Unauthorized Jeton manquant, invalide ou expiré (Session time-out > 30min). Action client : Rediriger vers Login.
403 Forbidden Compte usager bloqué par l'administration.
404 Not Found Ressource introuvable (ex: ID exemplaire incorrect).
422 Unprocessable Entity Erreur de validation des champs (email invalide, mot de passe trop court, etc.).
500 Internal Server Error Erreur serveur inattendue.

Codes erreurs spécifiques (Champ "error")⚓︎

  • invalid_credentials : Couple identifiant/mot de passe incorrect.
  • account_locked : L'usager est banni.
  • token_expired : Le jeton n'est plus valide (délai dépassé).
  • already_renewed : Tentative de renouveler un ouvrage une seconde fois.

Auteur : Evan GERLAND--MOLINIER