Skip to Content

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/api

Remplace 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’EndpointAuthentification RequiseNotes
Endpoints auth publicsNon/api/auth/login, /api/auth/signup, /api/auth/magic-link, /api/oauth/authorize
Utilisateur authentifiéOuiAccess token utilisateur standard
Endpoints adminOuiLe token doit avoir la permission requise (ex. manage:users)
Endpoints M2MOuiToken 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/json

Exemple 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

CodeSignification
200 OKRequête réussie
201 CreatedRessource créée avec succès
400 Bad RequestCorps de requête ou paramètres invalides
401 UnauthorizedAccess token manquant ou invalide
403 ForbiddenLe token est valide mais n’a pas la permission requise
404 Not FoundLa ressource n’existe pas
409 ConflictLa ressource existe déjà (ex. email dupliqué)
429 Too Many RequestsRate limit dépassé
500 Internal Server ErrorErreur côté serveur

Codes d’Erreur Courants

CodeDescription
INVALID_CREDENTIALSCombinaison email/mot de passe incorrecte
ACCOUNT_LOCKEDCompte bloqué pour trop de tentatives échouées
TOKEN_EXPIREDL’access token est expiré
TOKEN_INVALIDL’access token est malformé ou la signature n’est pas valide
PERMISSION_DENIEDL’utilisateur n’a pas la permission requise
NOT_FOUNDLa ressource demandée n’existe pas
VALIDATION_ERRORLe corps de la requête n’a pas passé la validation du schéma
RATE_LIMITEDTrop de requêtes dans une courte fenêtre temporelle
MISSING_TENANTLe header x-tenant obligatoire est manquant
TENANT_NOT_FOUNDLe 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ètreTypeDéfautMaxDescription
pageinteger1—Numéro de page (base 1)
limitinteger20100Éléments par page

Exemple :

GET /api/users?page=2&limit=50

Rate Limiting

Chaque réponse inclut des headers de rate limiting :

HeaderDescription
X-RateLimit-LimitNombre maximum de requêtes autorisées dans la fenêtre courante
X-RateLimit-RemainingRequêtes restantes dans la fenêtre courante
X-RateLimit-ResetTimestamp 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

NiveauEndpointsLimite
AuthLogin, signup, mot de passe oubliéSévère (prévient le brute force)
Sensible2FA, changement mot de passe, magic linkModéré
APITous les endpoints admin/managementStandard
PublicDiscovery OIDC, JWKSRelaxé

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 :

  1. Aller dans Console → Applications
  2. Sélectionner ton application
  3. 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-configuration

Cela 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.json

Ré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 :

SDKPackageLangage
JavaScript@auris/jsBrowser + Node.js
React@auris/reactReact 18+
Next.js@auris/nextjsNext.js 13+ App Router
PHPauris/sdkPHP 7.4+
WordPressauris-ssoPlugin WordPress

Consulte la documentation des SDKs pour les guides d’installation et d’utilisation.