Avec OAuth 2.0, votre logiciel peut accéder à l'API Brutlers au nom d'un prestataire. Le prestataire autorise l'accès une seule fois — votre logiciel se synchronise ensuite automatiquement.
Brutlers implémente le flux OAuth 2.0 Authorization Code avec PKCE (RFC 7636). Voici comment fonctionne le processus :
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Your App │ │ Brutlers │ │ Vendor │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
│ 1. Redirect │ │
│──────────────────>│ │
│ │ 2. Login/Consent │
│ │<─────────────────>│
│ │ │
│ 3. code + state │ 3. Allow │
│<──────────────────│<──────────────────│
│ │ │
│ 4. Exchange code │ │
│──────────────────>│ │
│ │ │
│ 5. Tokens │ │
│<──────────────────│ │
│ │ │
│ 6. API calls │ │
│──────────────────>│ │
Enregistrez votre application dans le tableau de bord prestataire sous Intégrations. Vous recevrez un Client ID et un Client Secret.
Accéder au tableau de bord prestataireRedirigez le prestataire vers notre endpoint d'autorisation. Le prestataire se connecte et accorde la permission.
GET /api/oauth/authorize?
response_type=code
&client_id=brut_app_...
&redirect_uri=https://app.example.com/callback
&scope=orders:read orders:write
&state=random_csrf_token
&code_challenge=BASE64URL_SHA256_HASH
&code_challenge_method=S256| Parameter | Required | Description |
|---|---|---|
| response_type | Yes | Doit être "code" |
| client_id | Yes | Votre Client ID |
| redirect_uri | Yes | Doit correspondre exactement à une URI enregistrée |
| scope | Yes | Liste de scopes séparés par des espaces |
| state | Recommandé | Chaîne aléatoire pour la protection CSRF |
| code_challenge | Recommandé | Hash SHA-256 encodé en Base64url du Code Verifier |
| code_challenge_method | Recommandé | Doit être "S256" |
Après l'autorisation, vous recevez un Authorization Code. Échangez-le contre un Access Token et un Refresh Token.
curl -X POST https://brutlers.com/api/oauth/token \
-d "grant_type=authorization_code" \
-d "code=AUTH_CODE" \
-d "client_id=brut_app_..." \
-d "client_secret=brut_secret_..." \
-d "redirect_uri=https://app.example.com/callback" \
-d "code_verifier=ORIGINAL_RANDOM_STRING"Réponse
{
"access_token": "brut_at_...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "brut_rt_...",
"scope": "orders:read orders:write"
}Utilisez l'Access Token comme Bearer Token dans l'en-tête Authorization de vos appels API.
GET /api/vendor/orders HTTP/1.1
Host: brutlers.com
Authorization: Bearer brut_at_...Les Access Tokens sont valides 1 heure. Utilisez le Refresh Token pour obtenir un nouvel Access Token. Les Refresh Tokens sont valides 30 jours et sont renouvelés à chaque utilisation.
curl -X POST https://brutlers.com/api/oauth/token \
-d "grant_type=refresh_token" \
-d "refresh_token=brut_rt_..." \
-d "client_id=brut_app_..." \
-d "client_secret=brut_secret_..."| Scope | Description |
|---|---|
| orders:read | Lire les commandes |
| orders:write | Créer des commandes et modifier leur statut |
| customers:read | Lire les données clients |
| profile:read | Lire le profil prestataire |
Invalide un Access Token ou un Refresh Token. L'endpoint retourne toujours HTTP 200 (RFC 7009).
curl -X POST https://brutlers.com/api/oauth/revoke \
-d "token=brut_at_..." \
-d "client_id=brut_app_..." \
-d "client_secret=brut_secret_..."