{
 "openapi": "3.1.0",
 "info": {
  "title": "liregratuitement.com API",
  "version": "1.0.0",
  "description": "Livres du domaine public en français : catalogue, texte exact, passages. Public-domain books in French: catalogue, exact text, passages. Sans clé / no key.",
  "license": {
   "name": "Métadonnées CC BY 4.0",
   "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "contact": {
   "email": "contact@liregratuitement.com",
   "url": "https://liregratuitement.com/developpeurs/"
  }
 },
 "servers": [
  {
   "url": "https://liregratuitement.com/api/v1"
  }
 ],
 "paths": {
  "/livres": {
   "get": {
    "summary": "Chercher des livres / Search books",
    "parameters": [
     {
      "name": "q",
      "in": "query",
      "required": false,
      "description": "Titre, auteur ou mot-clé / title, author or keyword",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "auteur",
      "in": "query",
      "required": false,
      "description": "Filtrer par auteur (alias: author)",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "rayon",
      "in": "query",
      "required": false,
      "description": "aventure, policier, fantastique, amour, rire, frissons, societe, histoire, idees, spiritualite, sciences, poesie, theatre, jeunesse (alias: shelf)",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "relu",
      "in": "query",
      "required": false,
      "description": "1 = textes relus seulement (alias: reviewed)",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "page",
      "in": "query",
      "required": false,
      "description": "Page, à partir de 1",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "par",
      "in": "query",
      "required": false,
      "description": "Résultats par page, 50 au plus (alias: per_page)",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Résultats",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "total": {
           "type": "integer"
          },
          "page": {
           "type": "integer"
          },
          "par": {
           "type": "integer"
          },
          "resultats": {
           "type": "array",
           "items": {
            "type": "object"
           }
          }
         }
        }
       }
      }
     },
     "429": {
      "description": "Quota journalier dépassé / daily quota exceeded"
     }
    }
   }
  },
  "/livres/{slug}": {
   "get": {
    "summary": "Fiche et chapitres / Book record and chapters",
    "parameters": [
     {
      "name": "slug",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      },
      "description": "Identifiant du livre / book identifier"
     }
    ],
    "responses": {
     "200": {
      "description": "Fiche",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "slug": {
           "type": "string"
          },
          "titre": {
           "type": "string"
          },
          "auteur": {
           "type": "string"
          },
          "rayon": {
           "type": "string"
          },
          "difficulte": {
           "type": "string"
          },
          "quarts_d_heure": {
           "type": "integer"
          },
          "mots": {
           "type": "integer"
          },
          "relu": {
           "type": "boolean"
          },
          "qualite_ocr": {
           "type": "number"
          },
          "resume": {
           "type": "string"
          },
          "resume_verifie": {
           "type": "boolean"
          },
          "source": {
           "type": "string"
          },
          "licence": {
           "type": "string"
          },
          "usage_commercial": {
           "type": "boolean"
          },
          "fiche": {
           "type": "string"
          }
         }
        }
       }
      }
     },
     "404": {
      "description": "Livre introuvable / not found"
     }
    }
   }
  },
  "/livres/{slug}/chapitres/{n}": {
   "get": {
    "summary": "Texte exact d'un chapitre / Exact chapter text",
    "parameters": [
     {
      "name": "slug",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      },
      "description": "Identifiant du livre / book identifier"
     },
     {
      "name": "n",
      "in": "path",
      "required": true,
      "schema": {
       "type": "integer",
       "minimum": 1
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Chapitre"
     },
     "404": {
      "description": "Chapitre introuvable"
     }
    }
   }
  },
  "/livres/{slug}/texte": {
   "get": {
    "summary": "Texte intégral en texte brut / Full plain text",
    "parameters": [
     {
      "name": "slug",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      },
      "description": "Identifiant du livre / book identifier"
     }
    ],
    "responses": {
     "200": {
      "description": "text/plain",
      "content": {
       "text/plain": {}
      }
     }
    }
   }
  },
  "/livres/{slug}/passages": {
   "get": {
    "summary": "Retrouver un passage exact / Find an exact passage",
    "parameters": [
     {
      "name": "slug",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      },
      "description": "Identifiant du livre / book identifier"
     },
     {
      "name": "q",
      "in": "query",
      "required": true,
      "description": "Texte à retrouver / text to find",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Passages trouvés"
     }
    }
   }
  }
 }
}