Obexal Docs

Docs/Référence/Référence de l'API d'administration

Référence de l'API d'administration

L'API d'administration programmable : authentification par jeton obx_, permissions RBAC, toutes les opérations documentées et la carte des routes de la console.

L'API d'administration est servie sur votre domaine de connexion (https://accounts.obexal.com par défaut ; un domaine personnalisé remplace cet hôte). Son contrat machine-to-machine est publié sous forme de document OpenAPI 3.1. Pour une introduction guidée, voir API d'administration.

Authentification

Les appels machine-to-machine s'authentifient avec un jeton d'API d'administration, un secret bearer préfixé obx_ :

curl https://accounts.obexal.com/v1/admin/agents \
  -H "Authorization: Bearer $OBEXAL_API_TOKEN"
  • Les jetons se créent dans la console (Administration, Jetons d'API) ou via POST /v1/admin/api-tokens. Le secret brut n'est renvoyé qu'une seule fois.
  • Les scopes demandés doivent être un sous-ensemble des permissions du créateur (aucune escalade de privilèges).
  • L'expiration est optionnelle ; la révocation prend effet à la requête suivante (fail closed).
  • Aucun cookie n'est impliqué : ces appels sont exemptés de CSRF.
  • 401 signifie jeton absent, invalide, expiré ou révoqué ; 403 signifie que la permission requise n'est pas dans les scopes du jeton.

Permissions

Chaque opération exige une permission RBAC, vérifiée contre les scopes figés du jeton :

PermissionDonne accès à
users:viewLecture de l'annuaire et du registre unifié des identités
apps:manageGestion des applications et des agents IA (gouvernance, identité, secrets, anomalies)
audit:viewLecture du journal d'audit
members:manageGestion des membres et des invitations
tenant:manageParamètres du tenant, jetons d'API, politiques d'accès et de risque, policy as code
roles:manageGestion des rôles RBAC personnalisés
groups:manageGestion des groupes et de leurs affectations d'applications

Le contrat OpenAPI

Le contrat complet est téléchargeable, sans authentification, depuis votre propre instance :

curl https://accounts.obexal.com/v1/openapi.json

Importez-le dans votre client d'API ou votre générateur de code. Les opérations des sections suivantes sont exactement celles qu'il documente : c'est la surface machine-to-machine stable.

Jetons d'API

MéthodeCheminPermissionDescription
GET/v1/admin/api-tokenstenant:manageListe les jetons (métadonnées seulement, jamais le secret) et les scopes assignables
POST/v1/admin/api-tokenstenant:manageCrée un jeton ; le secret brut est renvoyé une seule fois
DELETE/v1/admin/api-tokens/{id}tenant:manageRévoque un jeton immédiatement (idempotent)

Agents IA

MéthodeCheminPermissionDescription
GET/v1/admin/agentsapps:manageInventaire des agents avec gouvernance, identité, statut et état de revue
PUT/v1/admin/agents/{clientId}/policyapps:manageDéfinit le kill switch et les plafonds (TTL de jeton, scopes, audiences)
DELETE/v1/admin/agents/{clientId}/policyapps:manageRéinitialise la politique de l'agent aux défauts
PUT/v1/admin/agents/{clientId}/identityapps:manageDéfinit le responsable humain et la date d'expiration de l'agent
POST/v1/admin/agents/{clientId}/reviewapps:manageAtteste une revue d'accès (l'horodate)
POST/v1/admin/agents/{clientId}/secretapps:manageRenouvelle le client_secret ; le nouveau secret est renvoyé une seule fois
GET/v1/admin/agents/anomaliesapps:manageListe les anomalies de comportement (?all=true inclut les acquittées)
POST/v1/admin/agents/anomalies/{id}/ackapps:manageAcquitte une anomalie

Voir Politique de gouvernance et Kill switch et anomalies pour les concepts derrière ces opérations.

Annuaire

MéthodeCheminPermissionDescription
GET/v1/admin/usersusers:viewListe les utilisateurs du tenant
GET/v1/admin/identitiesusers:viewRegistre unifié des humains, services et agents IA, avec responsable, statut et anomalies

Accès conditionnel

MéthodeCheminPermissionDescription
GET/v1/admin/access-policy/versionstenant:manageHistorique versionné de la politique d'accès, récentes d'abord
POST/v1/admin/access-policy/versions/{id}/restoretenant:manageRollback vers un instantané (crée une nouvelle version courante)
POST/v1/admin/access-policy/simulatetenant:manageÉvalue une politique candidate sur les connexions récentes ; n'applique rien
GET/v1/admin/risk-policytenant:manageLit la politique d'accès adaptatif au risque
PUT/v1/admin/risk-policytenant:manageRègle les seuils de score de risque (step-up MFA, refus)

Policy as code

MéthodeCheminPermissionDescription
GET/v1/admin/configtenant:manageExporte la configuration de gouvernance en bundle déclaratif
POST/v1/admin/config/plantenant:manageDiff d'un bundle candidat contre l'état courant ; n'applique rien
POST/v1/admin/config/applytenant:manageApplique un bundle (?prune=true supprime aussi les rôles absents)

Voir Policy as code pour le flux GitOps.

Routes de console hors du contrat OpenAPI

La console d'administration utilise beaucoup d'autres routes sous /v1/*. Elles s'authentifient par session navigateur (plus un en-tête CSRF sur les mutations) ; la plupart acceptent aussi un jeton d'API portant la permission correspondante, mais seules les opérations ci-dessus forment le contrat machine documenté, et les formes ci-dessous peuvent évoluer avec la console.

DomaineRoutes
MembresGET /v1/admin/members, PUT/DELETE /v1/admin/members/{userId}
Cycle de vie utilisateurPUT /v1/admin/users/{userId}, POST /v1/admin/users/{userId}/suspend, POST /v1/admin/users/{userId}/reactivate, POST /v1/admin/users/{userId}/logout, POST /v1/admin/users/unlock
InvitationsGET/POST /v1/admin/invitations, DELETE /v1/admin/invitations/{id}
GroupesGET/POST /v1/admin/groups, PUT/DELETE /v1/admin/groups/{id}, membres sous /v1/admin/groups/{id}/members, affectations d'apps sous /v1/admin/groups/{id}/apps
Rôles personnalisésGET/POST /v1/admin/roles, PUT/DELETE /v1/admin/roles/{key}
Tenant et marqueGET/PATCH /v1/admin/tenant, PUT/DELETE /v1/admin/tenant/logo
Domaines personnalisésGET/POST /v1/admin/domains, POST /v1/admin/domains/{domain}/verify, DELETE /v1/admin/domains/{domain}
WebhooksGET/POST /v1/admin/webhooks, DELETE /v1/admin/webhooks/{id}
AuditGET /v1/admin/audit, GET /v1/admin/audit/stream (SSE), GET /v1/admin/audit/export (CSV ou JSON)
Politiques d'accès et de mot de passeGET/PUT /v1/admin/access-policy, GET/PUT /v1/admin/password-policy, dérogations par groupe sous /v1/admin/password-policy/groups, GET/POST /v1/admin/ip-blocks, DELETE /v1/admin/ip-blocks/{ip}
SAMLGET/PUT /v1/admin/saml (connexion entrante), GET /v1/admin/saml-idp, POST /v1/admin/saml-idp/apps, DELETE /v1/admin/saml-idp/apps/{id}
SCIMGET/POST /v1/admin/scim/tokens, DELETE /v1/admin/scim/tokens/{id} (jetons entrants), GET/POST /v1/admin/scim-targets, PUT/DELETE /v1/admin/scim-targets/{id}, POST /v1/admin/scim-targets/{id}/sync (sortant)
LDAPGET/PUT/DELETE /v1/admin/ldap
Connexions socialesGET/POST /v1/admin/social/connections, DELETE /v1/admin/social/connections/{provider}
Tableaux de bord sécuritéGET /v1/admin/security-stats, GET /v1/admin/security-incidents, POST /v1/admin/security-incidents/{id}/ack, GET /v1/admin/growth-stats
Délégations d'agentsGET /v1/admin/agents/delegations (journal forensic de qui a agi au nom de qui)
Applications (clients OAuth)GET/POST /v1/applications, GET/PATCH/DELETE /v1/applications/{clientId}, catalogue d'intégrations sous /v1/integrations

Pagination et erreurs

Les endpoints de liste acceptent ?limit (défaut 100, maximum 500) et ?offset ; le journal d'audit ajoute les filtres ?q (plein texte) et ?outcome. Les erreurs utilisent l'enveloppe JSON {"error": {"code", "message"}} : les codes, limites de débit et plafonds sont documentés dans Erreurs et limites.