Aller au contenu principal

Accounts API

Gestion des comptes utilisateur avec un systeme multi-profil de type Netflix.

Base URL : /api/v2/account-auth et /api/v2/account-deletion

Architecture des comptes

Account (email/password)
+-- Profiles (max 4)
|-- Profile 1 (Standard) -- defaut
|-- Profile 2 (Standard)
|-- Profile 3 (Kids)
+-- Profile 4 (Standard)

Endpoints Account Auth

Vue d'ensemble

MethodeEndpointDescriptionAuth
POST/account-auth/registerCreer un compteNon
POST/account-auth/loginConnexion (Etape 1)Non
POST/account-auth/select-profileSelection profil (Etape 2)Oui (temp)
POST/account-auth/refreshRafraichir tokenNon
POST/account-auth/logoutDeconnexionOui
POST/account-auth/logout-allDeconnexion de toutes les sessionsOui
GET/account-auth/meObtenir le compte courantOui
POST/account-auth/verify-2faVerifier le code 2FA pendant le loginMFA Token

POST /account-auth/register

Creer un nouveau compte.

POST /api/v2/account-auth/register
Content-Type: application/json
X-Tenant-ID: tenant-slug

{
"email": "[email protected]",
"password": "SecureP@ss123",
"displayName": "John Doe"
}

POST /account-auth/login

Login et selection de profil en deux etapes.

Etape 1 -- Valider les credentials

POST /api/v2/account-auth/login
Content-Type: application/json

{
"email": "[email protected]",
"password": "SecureP@ss123"
}

Reponse 200 OK

{
"accountId": "uuid",
"profiles": [
{ "id": "uuid", "name": "John", "avatar": "url", "type": "STANDARD" },
{ "id": "uuid", "name": "Kids", "avatar": "url", "type": "KIDS" }
],
"tempToken": "eyJhbG..."
}

Etape 2 -- Selectionner un profil

POST /api/v2/account-auth/select-profile
Content-Type: application/json
Authorization: Bearer <tempToken>

{
"profileId": "uuid",
"pin": "1234"
}
info

Si la 2FA est activee, le login retourne un temporaryToken et requiresTwoFactor: true. Le client doit d'abord appeler POST /account-auth/verify-2fa avant de pouvoir selectionner un profil.


POST /account-auth/refresh

Rafraichir le token.

POST /api/v2/account-auth/refresh
Content-Type: application/json

{
"refreshToken": "eyJhbG..."
}

POST /account-auth/logout

Deconnexion de la session courante.

POST /api/v2/account-auth/logout
Authorization: Bearer <token>

POST /account-auth/logout-all

Deconnexion de toutes les sessions du compte.

POST /api/v2/account-auth/logout-all
Authorization: Bearer <token>

GET /account-auth/me

Obtenir les informations du compte courant.

GET /api/v2/account-auth/me
Authorization: Bearer <token>

Endpoints Account Deletion

Suppression de compte conforme RGPD avec periode de retractation de 30 jours.

MethodeEndpointDescriptionAuth
GET/account-deletion/statusVerifier le statut de suppressionOui
GET/account-deletion/consequencesPreview des donnees supprimeesOui
POST/account-deletion/requestDemander la suppression (30 jours)Oui
DELETE/account-deletion/cancelAnnuler la demandeOui
POST/account-deletion/confirm-immediateSuppression immediate (irreversible)Oui

GET /account-deletion/consequences

Preview des donnees qui seront supprimees.

GET /api/v2/account-deletion/consequences
Authorization: Bearer <token>

POST /account-deletion/request

Demander la suppression du compte avec une periode de retractation de 30 jours.

POST /api/v2/account-deletion/request
Authorization: Bearer <token>
Content-Type: application/json

{
"password": "currentPassword",
"reason": "optional reason"
}

DELETE /account-deletion/cancel

Annuler une demande de suppression en cours.

DELETE /api/v2/account-deletion/cancel
Authorization: Bearer <token>

POST /account-deletion/confirm-immediate

Suppression immediate et irreversible du compte.

POST /api/v2/account-deletion/confirm-immediate
Authorization: Bearer <token>
Content-Type: application/json

{
"password": "currentPassword",
"confirmation": "DELETE MY ACCOUNT"
}
danger

Cette action est irreversible. Toutes les donnees du compte seront anonymisees et les sessions revoquees.

Processus de suppression

  1. L'utilisateur demande la suppression -- le statut passe a PENDING_DELETION
  2. Date de suppression programmee = date courante + 30 jours
  3. L'utilisateur peut annuler a tout moment pendant la periode de retractation
  4. Si l'utilisateur se connecte pendant la retractation, le compte est automatiquement restaure
  5. Avertissement envoye 3 jours avant la suppression (cron 1:00 AM)
  6. Apres 30 jours, le cron effectue la suppression (cron 2:00 AM)

Actions lors de la suppression

  • Toutes les sessions revoquees
  • Tous les appareils marques comme revoques
  • Tous les profils marques comme supprimes
  • Email anonymise (deleted_<accountId>@deleted.local)
  • Compte soft-delete avec timestamp deletedAt

Codes d'erreur

CodeMessageDescription
401Invalid credentialsEmail ou mot de passe incorrect
403Account suspendedCompte suspendu
404Profile not foundProfil introuvable
409Email already existsEmail deja utilise
423Account lockedTrop de tentatives de connexion