Référence API

Documentation complète de tous les endpoints OAuth 2.0 et OpenID Connect.

URL de base

https://account.groupeoctal.com

Tous les endpoints doivent être appelés en HTTPS. Les requêtes HTTP sont rejetées en production.

Authorization Endpoint

GET
https://account.groupeoctal.com/oauth/authorize

Démarre le flux d'autorisation OAuth 2.0. Redirige l'utilisateur vers la page d'authentification Octal Group.

Paramètres de requête

Paramètre Type Requis Description
client_id string Requis Votre identifiant client OAuth
redirect_uri string (URL) Requis URL de callback enregistrée dans votre application
response_type string Requis Doit être code
scope string Requis Espaces séparés : openid profile email
state string Recommandé Valeur aléatoire opaque pour la protection CSRF
code_challenge string Recommandé PKCE challenge (Base64URL-encoded SHA-256 du verifier)
code_challenge_method string Si PKCE Doit être S256

Réponse

Redirection vers redirect_uri avec les paramètres :

https://votre-app.com/callback?code=AUTH_CODE&state=VOTRE_STATE

# En cas d'erreur :
https://votre-app.com/callback?error=access_denied&error_description=...

Token Endpoint

POST
https://account.groupeoctal.com/oauth/token

Échange un code d'autorisation contre des tokens d'accès. Doit être appelé côté serveur uniquement.

Corps de la requête application/x-www-form-urlencoded

Paramètre Requis Description
grant_typeRequisauthorization_code
codeRequisCode reçu en callback
redirect_uriRequisMême URL que lors de l'autorisation
client_idRequisVotre Client ID
client_secretRequisVotre Client Secret (côté serveur uniquement)
code_verifierSi PKCECode verifier original (PKCE)

Réponse

{
  "access_token":  "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
  "token_type":    "Bearer",
  "expires_in":    3600,              // secondes
  "refresh_token": "def50200abc...",
  "scope":         "openid profile email"
}

UserInfo Endpoint

GET
https://account.groupeoctal.com/oauth/userinfo

Retourne les informations du profil de l'utilisateur authentifié. Requiert le scope profile.

Header requis

Authorization: Bearer YOUR_ACCESS_TOKEN

Réponse

{
  "sub":            "12345",              // identifiant unique Octal
  "name":           "Jean Dupont",
  "email":          "jean_dupont@mail8g.com",
  "email_verified": true,
  "phone":          "+22901234567",         // si disponible
  "avatar":         "https://account.groupeoctal.com/storage/avatars/...",
  "updated_at":     "2025-01-15T10:30:00Z"
}

Renouveler un token (Refresh)

POST
https://account.groupeoctal.com/oauth/token
grant_type    = refresh_token
refresh_token = VOTRE_REFRESH_TOKEN
client_id     = OCTAL_CLIENT_ID
client_secret = OCTAL_CLIENT_SECRET

Les refresh tokens expirent après 30 jours d'inactivité. Un nouveau refresh token est retourné à chaque renouvellement.

Révoquer un token

POST
https://account.groupeoctal.com/oauth/token/revoke

Invalide un access token ou refresh token. Appelez cet endpoint lors de la déconnexion de l'utilisateur.

token           = TOKEN_À_RÉVOQUER
token_type_hint = access_token  // ou refresh_token
client_id       = OCTAL_CLIENT_ID
client_secret   = OCTAL_CLIENT_SECRET

Scopes disponibles

Scope Description Champs retournés
openid Authentification OpenID Connect sub
profile Informations de profil name, avatar, updated_at
email Adresse email Octal Group email, email_verified
phone Numéro de téléphone (si renseigné) phone

Codes d'erreur

Code HTTP error Cause
400invalid_requestParamètre manquant ou invalide
401invalid_clientClient ID ou Secret invalide
401invalid_tokenAccess token expiré ou révoqué
400invalid_grantCode expiré, déjà utilisé, ou redirect_uri incorrect
403access_deniedL'utilisateur a refusé l'autorisation
429rate_limitedTrop de requêtes (limite : 60/min/IP)