Référence API
L’API Auris est une API REST qui fournit un accès programmatique à toutes les fonctionnalités IAM : authentification, gestion des utilisateurs, rôles, permissions, organisations, autorisation fine-grained et plus. Toutes les réponses API utilisent JSON.
URL de Base
https://api.altovar.net/apiRemplace api.altovar.net par le domaine où ton Auris est déployé. Si tu utilises le service cloud Auris, ton domaine est celui affiché dans la Console sous Paramètres → Domaines Personnalisés.
Authentification
Bearer Token
La plupart des endpoints nécessitent un access token valide dans le header Authorization :
Authorization: Bearer <access_token>Les access tokens sont des JWT à courte durée de vie (défaut 15 minutes) obtenus via les endpoints d’authentification. Ils sont signés avec RS256 (ou HS256 selon la configuration) et peuvent être vérifiés localement en utilisant l’endpoint JWKS.
Niveau d’Accès par Type d’Endpoint
| Type d’Endpoint | Authentification Requise | Notes |
|---|---|---|
| Endpoints auth publics | Non | /api/auth/login, /api/auth/signup, /api/auth/magic-link, /api/oauth/authorize |
| Utilisateur authentifié | Oui | Access token utilisateur standard |
| Endpoints admin | Oui | Le token doit avoir la permission requise (ex. manage:users) |
| Endpoints M2M | Oui | Token client_credentials avec scopes configurés |
Les endpoints admin et de management vérifient les permissions en utilisant le header x-tenant en combinaison avec le Bearer token. Les rôles du token sont résolus et vérifiés par rapport à la permission requise avant que la requête soit traitée.
Header Tenant
Auris est une plateforme multi-tenant. Les requêtes aux endpoints admin doivent inclure l’identifiant du tenant :
x-tenant: <tenant-id>Le tenant ID est le nom du realm configuré dans ton déploiement Auris. Pour l’installation par défaut, c’est default. Pour les configurations tenant personnalisées, c’est le nom du realm affiché dans la Console sous Paramètres → Général.
Si le header est omis sur les endpoints qui le nécessitent, l’API retourne 400 Bad Request avec le code MISSING_TENANT.
Format des Requêtes
Utilise Content-Type: application/json pour toutes les requêtes POST, PUT et PATCH avec un corps de requête :
Content-Type: application/jsonExemple de requête :
curl -X POST https://api.altovar.net/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "password": "secret"}'Pour l’upload de fichiers (import utilisateurs), utilise multipart/form-data.
Format des Réponses
Toutes les réponses API suivent un format envelope cohérent.
Réponse de Succès
{
"ok": true,
"data": { }
}Le champ data contient le résultat. Sa forme varie selon les endpoints et est documentée individuellement pour chaque endpoint.
Réponse d’Erreur
{
"ok": false,
"error": {
"code": "CODE_ERREUR",
"message": "Description lisible de ce qui s'est mal passé."
}
}Codes de Statut HTTP
| Code | Signification |
|---|---|
200 OK | Requête réussie |
201 Created | Ressource créée avec succès |
400 Bad Request | Corps de requête ou paramètres invalides |
401 Unauthorized | Access token manquant ou invalide |
403 Forbidden | Le token est valide mais n’a pas la permission requise |
404 Not Found | La ressource n’existe pas |
409 Conflict | La ressource existe déjà (ex. email dupliqué) |
429 Too Many Requests | Rate limit dépassé |
500 Internal Server Error | Erreur côté serveur |
Codes d’Erreur Courants
| Code | Description |
|---|---|
INVALID_CREDENTIALS | Combinaison email/mot de passe incorrecte |
ACCOUNT_LOCKED | Compte bloqué pour trop de tentatives échouées |
TOKEN_EXPIRED | L’access token est expiré |
TOKEN_INVALID | L’access token est malformé ou la signature n’est pas valide |
PERMISSION_DENIED | L’utilisateur n’a pas la permission requise |
NOT_FOUND | La ressource demandée n’existe pas |
VALIDATION_ERROR | Le corps de la requête n’a pas passé la validation du schéma |
RATE_LIMITED | Trop de requêtes dans une courte fenêtre temporelle |
MISSING_TENANT | Le header x-tenant obligatoire est manquant |
TENANT_NOT_FOUND | Le tenant spécifié n’existe pas |
Pagination
Les endpoints de liste retournent des résultats paginés en utilisant des numéros de page.
Structure de la Réponse
{
"ok": true,
"data": {
"data": [],
"pagination": {
"page": 1,
"limit": 20,
"total": 143,
"totalPages": 8
}
}
}Paramètres de Query
| Paramètre | Type | Défaut | Max | Description |
|---|---|---|---|---|
page | integer | 1 | — | Numéro de page (base 1) |
limit | integer | 20 | 100 | Éléments par page |
Exemple :
GET /api/users?page=2&limit=50Rate Limiting
Chaque réponse inclut des headers de rate limiting :
| Header | Description |
|---|---|
X-RateLimit-Limit | Nombre maximum de requêtes autorisées dans la fenêtre courante |
X-RateLimit-Remaining | Requêtes restantes dans la fenêtre courante |
X-RateLimit-Reset | Timestamp Unix quand la fenêtre se réinitialise |
Quand un rate limit est dépassé, l’API retourne 429 Too Many Requests avec un header Retry-After indiquant combien de secondes attendre avant de réessayer.
Niveaux de Rate Limiting
| Niveau | Endpoints | Limite |
|---|---|---|
| Auth | Login, signup, mot de passe oublié | Sévère (prévient le brute force) |
| Sensible | 2FA, changement mot de passe, magic link | Modéré |
| API | Tous les endpoints admin/management | Standard |
| Public | Discovery OIDC, JWKS | Relaxé |
Les endpoints auth et sensibles ont des rate limits additionnels par compte en plus des limites basées sur l’IP. Les échecs répétés de login déclenchent le blocage progressif.
CORS
Le Cross-Origin Resource Sharing (CORS) est appliqué sur tous les endpoints API. Les origines autorisées doivent être enregistrées dans les paramètres de l’Application dans la Console Auris sous Applications → [App] → Origines Autorisées.
Les requêtes preflight OPTIONS sont gérées automatiquement. Les credentials (cookies) sont autorisés quand l’origine de la requête est enregistrée.
Pour enregistrer une origine :
- Aller dans Console → Applications
- Sélectionner ton application
- Ajouter l’origine dans les Origines Autorisées (ex.
https://app.votredomaine.com)
Discovery OIDC
Auris expose un document de discovery OpenID Connect standard :
GET /.well-known/openid-configurationCela retourne un document JSON contenant tous les URLs des endpoints, les grant types supportés, les scopes, les algorithmes de signature et autres métadonnées. Les bibliothèques OIDC standard utilisent ceci pour s’auto-configurer.
Exemple de champs de réponse :
{
"issuer": "https://api.altovar.net",
"authorization_endpoint": "https://api.altovar.net/api/oauth/authorize",
"token_endpoint": "https://api.altovar.net/api/auth/token",
"userinfo_endpoint": "https://api.altovar.net/api/auth/validate",
"jwks_uri": "https://api.altovar.net/.well-known/jwks.json",
"response_types_supported": ["code"],
"grant_types_supported": ["authorization_code", "client_credentials", "urn:ietf:params:oauth:grant-type:device_code", "urn:ietf:params:oauth:grant-type:token-exchange"],
"subject_types_supported": ["public"],
"id_token_signing_alg_values_supported": ["RS256", "HS256"],
"scopes_supported": ["openid", "profile", "email"]
}JWKS
Les clés de signature publiques utilisées pour la vérification JWT sont disponibles sur :
GET /.well-known/jwks.jsonRéponse :
{
"keys": [
{
"kty": "RSA",
"use": "sig",
"kid": "key-id-1",
"alg": "RS256",
"n": "...",
"e": "AQAB"
}
]
}Les clés sont mises en cache par les clients pendant un maximum d’1 heure (Cache-Control: public, max-age=3600). La rotation des clés ajoute une nouvelle clé au set ; les anciennes clés restent présentes jusqu’à l’expiration des tokens émis.
Le SDK JS Auris (@auris/js) inclut un vérificateur JWT basé sur JWKS intégré qui récupère et met en cache automatiquement les clés de signature. Consulte la documentation du SDK pour l’utilisation.
SDK Client
Plutôt qu’appeler directement l’API, envisage d’utiliser un SDK Auris qui gère automatiquement la gestion des tokens, PKCE, le refresh et la gestion des erreurs :
| SDK | Package | Langage |
|---|---|---|
| JavaScript | @auris/js | Browser + Node.js |
| React | @auris/react | React 18+ |
| Next.js | @auris/nextjs | Next.js 13+ App Router |
| PHP | auris/sdk | PHP 7.4+ |
| WordPress | auris-sso | Plugin WordPress |
Consulte la documentation des SDKs pour les guides d’installation et d’utilisation.