API Auth
L’API Pionne utilise Laravel Sanctum. Après login, tu reçois un token à passer dans Authorization: Bearer <token> pour toutes les routes protégées.
Base URL : https://api.pionne.app
POST /api/auth/register
Section intitulée « POST /api/auth/register »Crée un compte. Démarre automatiquement un essai de 30 jours.
{ "email": "you@example.com", "password": "min8chars", "name": "Jane Doe"}Response 201
Section intitulée « Response 201 »{ "user": { "id": "usr_a1b2c3", "email": "you@example.com", "name": "Jane Doe", "trial_ends_at": "2026-06-04T12:00:00Z" }, "token": "1|abcXYZ..."}422— Email déjà pris ou format invalide.
POST /api/auth/login
Section intitulée « POST /api/auth/login »{ "email": "you@example.com", "password": "..."}Headers (optionnel)
Section intitulée « Headers (optionnel) »X-Pionne-Client: cli | mobile | webL’API nomme le Sanctum token créé d’après ce header (mobile par défaut).
Sur chaque login, les autres tokens du même type sont révoqués, ce qui
maintient une seule session active par client. Re-lancer le wizard CLI
(X-Pionne-Client: cli) ou se reconnecter sur mobile invalide automatiquement
la session précédente du même type. Les autres types ne sont pas touchés.
Response 200
Section intitulée « Response 200 »{ "user": { "id": "usr_a1b2c3", "email": "you@example.com", "name": "Jane Doe" }, "token": "2|defGHI..."}Réponse 2FA
Section intitulée « Réponse 2FA »Si le compte a la 2FA activée, l’API renvoie d’abord un challenge :
{ "requires_totp": true, "totp_token": "pionne_totp_xxxxxx" }Tu fais ensuite POST /api/auth/login/totp avec { totp_token, code } (ou
recovery_code) pour récupérer le vrai Sanctum token. Même règle de
nommage / révocation s’applique selon X-Pionne-Client.
401— Email/mot de passe incorrect.429— Trop de tentatives (rate limit).
POST /api/auth/logout
Section intitulée « POST /api/auth/logout »Révoque le token courant.
Authorization: Bearer <token>Response 204
Section intitulée « Response 204 »Pas de body.
GET /api/auth/me
Section intitulée « GET /api/auth/me »Renvoie l’utilisateur courant.
Authorization: Bearer <token>Response 200
Section intitulée « Response 200 »{ "id": "usr_a1b2c3", "email": "you@example.com", "name": "Jane Doe", "subscription": { "status": "trialing", "trial_ends_at": "2026-06-04T12:00:00Z", "plan": "monthly" }}Sessions actives — gestion des tokens
Section intitulée « Sessions actives — gestion des tokens »Trois endpoints permettent de lister et révoquer les Sanctum tokens du compte courant. Utilisés par l’écran Compte → Réglages → Sécurité → Sessions actives dans pionne-app.
GET /api/me/tokens
Section intitulée « GET /api/me/tokens »Liste tous les tokens du compte (mobile, CLI, web), du plus récent au
plus ancien. Le token utilisé pour faire l’appel est marqué is_current: true.
{ "tokens": [ { "id": 14, "name": "cli", "created_at": "2026-05-07T16:46:00Z", "last_used_at": "2026-05-07T16:46:01Z", "is_current": false }, { "id": 13, "name": "mobile", "created_at": "2026-05-07T15:10:00Z", "last_used_at": "2026-05-07T17:30:00Z", "is_current": true } ]}DELETE /api/me/tokens/{id}
Section intitulée « DELETE /api/me/tokens/{id} »Révoque le token spécifié. Refuse de révoquer le token courant (422 cannot_revoke_current) — utilise /auth/logout à la place.
DELETE /api/me/tokens/others
Section intitulée « DELETE /api/me/tokens/others »Révoque tous les tokens du compte sauf celui qui fait l’appel. Pratique après une fuite de token suspectée. Renvoie le compte révoqué :
{ "revoked_count": 7 }