Présentation de l’API
L’interface de Lore repose entièrement sur une API REST, décrite en OpenAPI. Elle couvre aujourd’hui la configuration, la connexion, le compte et l’administration de l’organisation.
Documentation de la version 0.1, en préparation. Les commandes, les variables et les points d’accès de l’API sont des propositions : ils peuvent changer d’ici la sortie.
Adresse de base
https://lore.example.com/api/v1La description OpenAPI complète est servie, sans authentification, à l’adresse /api/v1/openapi.json.
Ce que couvre l’API
- Configuration initiale :
GET /api/v1/setup,POST /api/v1/setup/verify-codeetPOST /api/v1/setup. - Connexion :
POST /api/v1/auth/login,POST /api/v1/auth/logoutetGET /api/v1/session. - Invitations :
POST /api/v1/invitations/inspectetPOST /api/v1/invitations/accept. - Réinitialisation du mot de passe :
POST /api/v1/password-reset/inspectetPOST /api/v1/password-reset/complete. - Mon compte :
/api/v1/account, son adresse (/email), son mot de passe (/password) et ses sessions (/sessions). - Administration :
/api/v1/admin/organization,/api/v1/admin/memberset/api/v1/admin/invitations, réservées aux propriétaires et aux administrateurs.
Les espaces, les documents et la recherche s’y ajouteront avec la version 0.1.
Authentification
L’API utilise la même session que l’interface : POST /api/v1/auth/login l’ouvre et la garde dans un cookie. Les requêtes qui modifient quelque chose (POST, PUT, PATCH, DELETE) doivent aussi renvoyer le jeton CSRF : Lore le dépose dans le cookie XSRF-TOKEN, et la requête le renvoie dans l’en-tête X-XSRF-TOKEN.
# 1. Recevoir le cookie XSRF-TOKEN
curl -c cookies.txt https://lore.example.com/api/v1/session
# 2. Se connecter, avec la valeur de XSRF-TOKEN lue dans cookies.txt
curl -b cookies.txt -c cookies.txt -X POST https://lore.example.com/api/v1/auth/login \
-H "Content-Type: application/json" -H "X-XSRF-TOKEN: <jeton>" \
-d '{"email": "admin@example.com", "password": "<mot de passe>"}'
# 3. Appeler l’API
curl -b cookies.txt https://lore.example.com/api/v1/accountDes jetons d’accès personnels, pour les scripts et les intégrations, sont prévus après la version 0.1.
Pagination
Les listes, comme celle des membres, acceptent page (à partir de 0) et size (50 par défaut, 200 au maximum) :
{
"items": [ … ],
"page": 0,
"size": 50,
"total": 128
}Erreurs
Les erreurs suivent le format application/problem+json, avec un champ code stable : utilisez-le plutôt que le message.
| Code HTTP | Exemples de code |
Signification |
|---|---|---|
| 400 | invalid_request |
Requête invalide. Le champ errors liste les champs en cause, chacun avec son code, par exemple invalid_email ou password_min_length |
| 401 | unauthenticated, invalid_credentials |
Pas de session ouverte, ou identifiants refusés |
| 403 | admin_only, owner_only, csrf |
Action réservée à un autre rôle, ou jeton CSRF absent ou périmé |
| 404 | not_found, invalid_link |
Introuvable, ou lien d’invitation ou de réinitialisation périmé |
| 409 | last_owner, own_account, setup_done |
L’action contredit l’état actuel, par exemple retirer le dernier propriétaire |
| 415 | unsupported_media_type |
Le corps doit être en JSON |
| 429 | login_locked |
Trop d’échecs de connexion : réessayez après le blocage |