{
  "info": {
    "name": "OTTERWISE API",
    "description": "Documentation et endpoints pédagogiques pour étudiants — Make / n8n / Airtable.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "Users API",
      "description": "Une base déterministe de 50 utilisateurs (toujours les mêmes pour faciliter tes tests). Couvre tout le cycle CRUD : lister, lire un détail, créer, mettre à jour, supprimer. La pagination renvoie `total_pages`, `has_next` et même un objet `links` façon HATEOAS — parfait pour t'entraîner à boucler sur les pages dans Make ou n8n.",
      "item": [
        {
          "name": "GET Lister les utilisateurs",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "demo-key",
                "description": "Optionnel — clé démo"
              }
            ],
            "url": {
              "raw": "https://otter-api-playground.lovable.app/api/users?page=1&per_page=10",
              "host": [
                "otter-api-playground.lovable.app"
              ],
              "path": [
                "api",
                "users"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Page demandée (1 → total_pages). Plafonnée automatiquement.",
                  "disabled": false
                },
                {
                  "key": "per_page",
                  "value": "10",
                  "description": "Nombre d'utilisateurs par page (1–50).",
                  "disabled": false
                }
              ]
            },
            "description": "Retourne une page d'utilisateurs avec une pagination complète : `total`, `total_pages`, `has_next`, `next_page` et un objet `links` (next/prev/first/last). Utilise `total_pages` comme **page max** pour ta boucle d'automatisation. Si tu demandes une page > total_pages, l'API te renvoie automatiquement la dernière page valide."
          }
        },
        {
          "name": "GET Récupérer un utilisateur",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "demo-key",
                "description": "Optionnel — clé démo"
              }
            ],
            "url": {
              "raw": "https://otter-api-playground.lovable.app/api/users/3",
              "host": [
                "otter-api-playground.lovable.app"
              ],
              "path": [
                "api",
                "users",
                "3"
              ],
              "query": []
            },
            "description": "Renvoie un seul utilisateur. Si l'identifiant n'existe pas, retourne 404 avec un message explicite. Les IDs valides vont de 1 à 50."
          }
        },
        {
          "name": "POST Créer un utilisateur",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "demo-key",
                "description": "Optionnel — clé démo"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"prenom\": \"Marie\",\n  \"nom\": \"Dupont\",\n  \"email\": \"marie.dupont@loutre.me\",\n  \"pays\": \"France\",\n  \"age\": 28,\n  \"profession\": \"Designer\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "https://otter-api-playground.lovable.app/api/users",
              "host": [
                "otter-api-playground.lovable.app"
              ],
              "path": [
                "api",
                "users"
              ],
              "query": []
            },
            "description": "Reçoit un body JSON et renvoie l'utilisateur créé avec un `id` et un `createdAt`. Les données ne sont pas réellement persistées : l'API rejoue ton input pour que tu puisses tester ton intégration sans risque."
          }
        },
        {
          "name": "PUT Mettre à jour un utilisateur",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "X-API-Key",
                "value": "demo-key",
                "description": "Optionnel — clé démo"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"ville\": \"Paris\",\n  \"profession\": \"Lead Designer\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "https://otter-api-playground.lovable.app/api/users/3",
              "host": [
                "otter-api-playground.lovable.app"
              ],
              "path": [
                "api",
                "users",
                "3"
              ],
              "query": []
            },
            "description": "Renvoie l'utilisateur mis à jour. Comme pour POST, rien n'est réellement persisté — c'est volontaire pour que les étudiants puissent tester sans casser quoi que ce soit."
          }
        },
        {
          "name": "DELETE Supprimer un utilisateur",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "X-API-Key",
                "value": "demo-key",
                "description": "Optionnel — clé démo"
              }
            ],
            "url": {
              "raw": "https://otter-api-playground.lovable.app/api/users/3",
              "host": [
                "otter-api-playground.lovable.app"
              ],
              "path": [
                "api",
                "users",
                "3"
              ],
              "query": []
            },
            "description": "Retourne 204 No Content. Aucune donnée n'est supprimée côté serveur, mais ton client recevra exactement la réponse d'une vraie API REST."
          }
        }
      ]
    },
    {
      "name": "Quotes API",
      "description": "Plus de 25 citations françaises curatées dans 5 catégories : nature, sagesse, science, motivation, humour. Trois endpoints au choix selon ton besoin.",
      "item": [
        {
          "name": "GET Citation aléatoire",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "demo-key",
                "description": "Optionnel — clé démo"
              }
            ],
            "url": {
              "raw": "https://otter-api-playground.lovable.app/api/quote?categorie=motivation",
              "host": [
                "otter-api-playground.lovable.app"
              ],
              "path": [
                "api",
                "quote"
              ],
              "query": [
                {
                  "key": "categorie",
                  "value": "motivation",
                  "description": "Filtre par catégorie. Vide = toutes.",
                  "disabled": false
                }
              ]
            },
            "description": "Idéal pour un widget « citation du jour » dans Make ou pour alimenter un Slack quotidien via n8n."
          }
        },
        {
          "name": "GET Lister les citations",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "demo-key",
                "description": "Optionnel — clé démo"
              }
            ],
            "url": {
              "raw": "https://otter-api-playground.lovable.app/api/quotes?page=1&per_page=10",
              "host": [
                "otter-api-playground.lovable.app"
              ],
              "path": [
                "api",
                "quotes"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1",
                  "description": "Page.",
                  "disabled": false
                },
                {
                  "key": "per_page",
                  "value": "10",
                  "description": "Citations par page (1–50).",
                  "disabled": false
                },
                {
                  "key": "categorie",
                  "value": "",
                  "description": "Filtre catégorie.",
                  "disabled": true
                }
              ]
            },
            "description": "Retourne la liste paginée. Combine avec `categorie` pour filtrer."
          }
        },
        {
          "name": "GET Récupérer une citation",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "demo-key",
                "description": "Optionnel — clé démo"
              }
            ],
            "url": {
              "raw": "https://otter-api-playground.lovable.app/api/quotes/5",
              "host": [
                "otter-api-playground.lovable.app"
              ],
              "path": [
                "api",
                "quotes",
                "5"
              ],
              "query": []
            },
            "description": "Pratique pour citer une réponse précise dans un workflow ou une interface."
          }
        }
      ]
    },
    {
      "name": "Generate API",
      "description": "Génère à la volée jusqu'à 500 lignes de données factices : utilisateurs, produits ou loutres. Sortie CSV (téléchargement) ou JSON.",
      "item": [
        {
          "name": "GET Générer un dataset",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "demo-key",
                "description": "Optionnel — clé démo"
              }
            ],
            "url": {
              "raw": "https://otter-api-playground.lovable.app/api/generate?type=users&count=50&format=json",
              "host": [
                "otter-api-playground.lovable.app"
              ],
              "path": [
                "api",
                "generate"
              ],
              "query": [
                {
                  "key": "type",
                  "value": "users",
                  "description": "Type de données.",
                  "disabled": false
                },
                {
                  "key": "count",
                  "value": "50",
                  "description": "Nombre de lignes (1–500).",
                  "disabled": false
                },
                {
                  "key": "format",
                  "value": "json",
                  "description": "Format de sortie.",
                  "disabled": false
                }
              ]
            },
            "description": "Choisis le `type`, le `count` (1–500) et le `format`. En CSV, le navigateur télécharge directement le fichier. En JSON, tu reçois un objet `{ count, type, data }` exploitable."
          }
        },
        {
          "name": "GET Décrire les schémas",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "demo-key",
                "description": "Optionnel — clé démo"
              }
            ],
            "url": {
              "raw": "https://otter-api-playground.lovable.app/api/generate/schema",
              "host": [
                "otter-api-playground.lovable.app"
              ],
              "path": [
                "api",
                "generate",
                "schema"
              ],
              "query": []
            },
            "description": "Utile pour documenter ton automatisation ou créer dynamiquement les colonnes Airtable."
          }
        }
      ]
    },
    {
      "name": "Otters API",
      "description": "Une base pédagogique sur les 8 espèces de loutres : habitat, statut de conservation, particularités, image. Trois endpoints au choix.",
      "item": [
        {
          "name": "GET Lister les espèces",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "demo-key",
                "description": "Optionnel — clé démo"
              }
            ],
            "url": {
              "raw": "https://otter-api-playground.lovable.app/api/otters",
              "host": [
                "otter-api-playground.lovable.app"
              ],
              "path": [
                "api",
                "otters"
              ],
              "query": []
            },
            "description": "Retourne la liste complète sans pagination (le dataset est court)."
          }
        },
        {
          "name": "GET Récupérer une espèce",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "demo-key",
                "description": "Optionnel — clé démo"
              }
            ],
            "url": {
              "raw": "https://otter-api-playground.lovable.app/api/otters/2",
              "host": [
                "otter-api-playground.lovable.app"
              ],
              "path": [
                "api",
                "otters",
                "2"
              ],
              "query": []
            },
            "description": "Renvoie toutes les infos d'une espèce, image incluse."
          }
        },
        {
          "name": "GET Espèce aléatoire",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "demo-key",
                "description": "Optionnel — clé démo"
              }
            ],
            "url": {
              "raw": "https://otter-api-playground.lovable.app/api/otters/random",
              "host": [
                "otter-api-playground.lovable.app"
              ],
              "path": [
                "api",
                "otters",
                "random"
              ],
              "query": []
            },
            "description": "Pratique pour un quiz ou un widget « espèce du jour »."
          }
        }
      ]
    }
  ]
}