Console
La console (/api/v1/console/*) est la surface libre-service derrière
le portail bloonio_chat_admin_ssr (port 4318). Un admin s’inscrit
(par OTP e-mail), possède un espace de travail (workspace), et y gère
ses tenants, opérateurs, membres et invitations — sans jamais toucher à la
clé admin de plateforme.
L’authentification est un jeton de console (console_token, HS256,
~7 jours, kind=tenant_admin), scopé à travers les appartenances aux
espaces de travail.
Inscription (publique, par OTP)
Section intitulée « Inscription (publique, par OTP) »L’inscription est en deux étapes et atterrit toujours dans un espace de
travail — créé depuis organization_name, ou rejoint via un
invite_token.
- Démarrer —
POST /console/registercrée un compte PENDING et envoie un OTP par e-mail. En dev local (ENV=local, SMTP non configuré), la réponse renvoie l’OTP dansdev_otp. - Vérifier —
POST /console/verify/registrationvalide l’OTP, active le compte, crée (ou rejoint) l’espace de travail et renvoie une session. - Renvoyer (au besoin) —
POST /console/resend/registration-otp.
curl $BASE_URL/api/v1/console/register \ -X POST -H "Content-Type: application/json" \ -d '{ "email": "admin@acme.com", "password": "une-phrase-de-passe-forte", "display_name": "Alex Admin", "organization_name": "Acme Co" }'Connexion et MFA
Section intitulée « Connexion et MFA »POST /console/login authentifie par e-mail + mot de passe. Le résultat
est discriminé par redirect_to_mfa :
false— pas de second facteur : la session complète (avecconsole_token) est renvoyée.true— unchallenge_tokenet la listemfa_factors(par exemple["email", "totp"]) sont renvoyés ; il faut compléter un second facteur.
# 1. Login → renvoie un challenge_token quand redirect_to_mfa = truecurl $BASE_URL/api/v1/console/login -X POST -H "Content-Type: application/json" \ -d '{"email":"admin@acme.com","password":"..."}'
# 2. Émettre l'OTP du second facteurcurl $BASE_URL/api/v1/console/get/login-otp -X POST -H "Content-Type: application/json" \ -d '{"challenge_token":"chl_..."}'
# 3. Vérifier l'OTP → session complètecurl $BASE_URL/api/v1/console/verify/login-otp -X POST -H "Content-Type: application/json" \ -d '{"challenge_token":"chl_...","code":"123456"}'L’OTP e-mail est le facteur local toujours disponible. Le facteur TOTP
(application Bloonio Authenticator) est délégué à bloonio_auth_relay —
chat_relay y est lui-même un tenant. La vérification se fait via
POST /console/verify/login-totp avec le challenge_token et le code
totp.
Les routes protégées de la console exigent ensuite l’en-tête
Authorization: Bearer <console_token>.
Console système
Section intitulée « Console système »La console système (/api/v1/console/system/*) est la surface
super-admin de toute la plateforme. Un compte est super-admin lorsque son
champ is_system vaut vrai — c’est le seul booléen qui distingue un compte.
Elle expose, entre autres, des compteurs de plateforme et des lectures globales :
| Méthode | Chemin | Rôle |
|---|---|---|
GET | /system/fetch/stats | Compteurs (espaces, admins, tenants, opérateurs, affectations en attente) |
GET | /system/fetch/workspaces | Tous les espaces de travail |
GET | /system/fetch/tenants | Tous les tenants (?status=active|suspended) |
GET | /system/fetch/admins | Tous les comptes (hachages exclus) |
POST | /system/suspend/tenant | Suspension à l’échelle plateforme |
POST | /system/reactivate/tenant | Réactivation |
Amorcer un super-admin
Section intitulée « Amorcer un super-admin »Trois façons de créer un compte is_system, de la plus forte à la plus
faible :
-
Seed déterministe (recommandé). Définissez
SYSTEM_ADMIN_EMAIL+SYSTEM_ADMIN_PASSWORD(et l’optionnelSYSTEM_ADMIN_DISPLAY_NAME). Au démarrage, le relais s’assure qu’un super-admin connectable existe. Idempotent : un compte déjà présent est promu sur place et son mot de passe n’est jamais réinitialisé. Pour l’exécuter à la demande, sans redéploiement :Fenêtre de terminal ENV=production python3 bash/seeds/bootstrap-system-admin.py \--email ops@bloonio.com --password '<mot-de-passe-fort>'Sans
--email/--password, le script retombe surSYSTEM_ADMIN_EMAIL/SYSTEM_ADMIN_PASSWORDdu.envsélectionné parENV. -
Liste d’autorisation. Les e-mails de la csv
SYSTEM_ADMIN_EMAILSdeviennentis_systemdès qu’ils s’inscrivent ou se connectent (ils choisissent leur propre mot de passe). -
Trappe de secours runtime. Promouvoir un compte existant via la clé admin :
Fenêtre de terminal curl "$BASE_URL/api/v1/console/promote/console-admin?email=ops@bloonio.com" \-X POST -H "X-Admin-Key: YOUR_ADMIN_KEY"
Étapes suivantes
Section intitulée « Étapes suivantes »- La surface publique exacte de la console. Voir la Référence API.
- Gérer les tenants côté plateforme. Voir Gestion des tenants.
- Provisionner des opérateurs. Voir Opérateurs.