OAuth2¶
- GET /api/oauth/apps¶
Obtenir les clients OAuth2 pour l’utilisateur authentifié avec pagination (5 clients/page).
Ce point d’accès n’est accessible que par le client web FitTrackee.
Exemple de requête :
sans paramètres :
GET /api/oauth/apps HTTP/1.1 Content-Type: application/json
avec le paramètre “page” :
GET /api/oauth/apps?page=2 HTTP/1.1 Content-Type: application/json
Exemple de réponse :
HTTP/1.1 200 SUCCESS Content-Type: application/json { "data": { "clients": [ { "client_description": "", "client_id": "o22a27s2aBPUoxJbxV3UjDOx", "id": 1, "issued_at": "Thu, 14 July 2022 06:27:53 GMT", "name": "GPX Importer", "redirect_uris": [ " https://example.com/callback" ], "scope": "profile:read workouts:write", "website": "https://example.com" } ] }, "pagination": { "has_next": false, "has_prev": false, "page": 1, "pages": 1, "total": 1 }, "status": "success" }
- Paramètres de requête:
page (integer) – page pour la pagination (par défaut : 1)
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer”
- Codes d’état:
200 OK –
success
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
- POST /api/oauth/apps¶
Créer un client OAuth2 pour l’utilisateur authentifié.
Ce point d’accès n’est accessible que par le client web FitTrackee.
Exemple de requête :
POST /api/oauth/apps HTTP/1.1 Content-Type: application/json
Exemple de réponse :
HTTP/1.1 200 SUCCESS Content-Type: application/json { "data": { "client": { "client_description": "", "client_id": "o22a27s2aBPUoxJbxV3UjDOx", "client_secret": "<CLIENT SECRET>", "id": 1, "issued_at": "Thu, 14 July 2022 06:27:53 GMT", "name": "GPX Importer", "redirect_uris": [ "https://example.com/callback" ], "scope": "profile:read workouts:write", "website": "https://example.com" } }, "status": "created" }
- Paramètre JSON:
client_name (string) – nom du client
client_uri (string) – URl du client
redirect_uri (array) – liste des URL de redirection du client (chaîne de caractères)
scope (string) – scopes du client
client_description (string) – description du client (optionnelle)
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer”
- Codes d’état:
200 OK –
success
400 Bad Request –
invalid payload
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
- GET /api/oauth/apps/(string: client_client_id)¶
Obtenir un client OAuth2 avec le “client_id”.
Ce point d’accès n’est accessible que par le client web FitTrackee.
Exemple de requête :
GET /api/oauth/apps/o22a27s2aBPUoxJbxV3UjDOx HTTP/1.1 Content-Type: application/json
Exemple de réponses :
succès :
HTTP/1.1 200 SUCCESS Content-Type: application/json { "data": { "client": { "client_description": "", "client_id": "o22a27s2aBPUoxJbxV3UjDOx", "id": 1, "issued_at": "Thu, 14 July 2022 06:27:53 GMT", "name": "GPX Importer", "redirect_uris": [ "https://example.com/callback" ], "scope": "profile:read workouts:write", "website": "https://example.com" } }, "status": "success" }
non trouvé :
HTTP/1.1 404 NOT FOUND Content-Type: application/json { "status": "not found", "message": "OAuth2 client not found" }
- Paramètres:
client_client_id (string) – client_id du client OAuth2
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer”
- Codes d’état:
200 OK –
success
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
404 Not Found –
OAuth2 client not found
- GET /api/oauth/apps/(int: client_id)/by_id¶
Obtenir un client OAuth2 avec l’identifiant (valeur de type entier).
Ce point d’accès n’est accessible que par le client web FitTrackee.
Exemple de requête :
GET /api/oauth/apps/1/by_id HTTP/1.1 Content-Type: application/json
Exemple de réponses :
succès :
HTTP/1.1 200 SUCCESS Content-Type: application/json { "data": { "client": { "client_description": "", "client_id": "o22a27s2aBPUoxJbxV3UjDOx", "id": 1, "issued_at": "Thu, 14 July 2022 06:27:53 GMT", "name": "GPX Importer", "redirect_uris": [ "https://example.com/callback" ], "scope": "profile:read workouts:write", "website": "https://example.com" } }, "status": "success" }
non trouvé :
HTTP/1.1 404 NOT FOUND Content-Type: application/json { "status": "not found", "message": "OAuth2 client not found" }
- Paramètres:
client_id (integer) – Identifiant du client OAuth2
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer”
- Codes d’état:
200 OK –
success
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
404 Not Found –
OAuth2 client not found
- DELETE /api/oauth/apps/(int: client_id)¶
Delete an OAuth2 client (app).
Ce point d’accès n’est accessible que par le client web FitTrackee.
Exemple de requête :
DELETE /api/oauth/apps/1 HTTP/1.1 Content-Type: application/json
Exemple de réponse :
HTTP/1.1 204 NO CONTENT Content-Type: application/json
- Paramètres:
client_id (integer) – Identifiant du client OAuth2
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer”
- Codes d’état:
204 No Content – Supprimer un client OAuth2
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
404 Not Found –
OAuth2 client not found
- POST /api/oauth/apps/(int: client_id)/revoke¶
Révoquer tous les tokens associés à un client OAuth2.
Ce point d’accès n’est accessible que par le client web FitTrackee.
Exemple de requête :
POST /api/oauth/apps/1/revoke HTTP/1.1 Content-Type: application/json
Exemple de réponse :
HTTP/1.1 200 SUCCESS Content-Type: application/json { "status": "success" }
- Paramètres:
client_id (integer) – Identifiant du client OAuth2
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer”
- Codes d’état:
200 OK –
success
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
404 Not Found –
OAuth2 client not found
- POST /api/oauth/authorize¶
Autoriser un client OAuth2 (app). En cas de succès, il redirige vers l’URL de redirection du client avec le code pour émettre un jeton.
Ce point d’accès n’est accessible que par le client web FitTrackee.
Exemple de requête :
POST /api/oauth/authorize HTTP/1.1 Content-Type: multipart/form-data
Exemple de réponse :
HTTP/1.1 200 SUCCESS Content-Type: application/json { "status": "success" }
- Paramètres de la forme:
string client_id – “client_id” du client OAuth2
string response_type – type de réponse du client (seul “code” est supporté par FitTrackee)
string scopes – scope du client OAuth2
boolean confirm – confirmation (doit être
true
)string state – valeur unique pour éviter la falsification des requêtes entre les sites (cross-site request forgery (CSRF)), non obligatoire mais recommandée
string code_challenge – chaîne générée par un vérificateur de code (pour PKCE, non obligatoire mais recommandée)
string code_challenge_method – méthode utilisée pour créer le challenge, par exemple « S256 » (obligatoire si code_challenge fourni)
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer”
- Codes d’état:
200 OK –
success
invalid payload
erreurs renvoyées par la librairie Authlib
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
- POST /api/oauth/token¶
Délivrer ou rafraîchir un jeton pour un client OAuth2 donné.
Exemple de requête :
POST /api/oauth/token HTTP/1.1 Content-Type: multipart/form-data
Exemple de réponse :
HTTP/1.1 200 SUCCESS Content-Type: application/json { "access_token": "rOEHv64THCG28WcewZHRnVLUsOdUvw8NVnHKCmL57e", "expires_in": 864000, "refresh_token": "NuV9cY8VQOnrQKHTZ5pQAq2Zw7mSH0MorNPJr14AmSwD6f6I", "scope": ["profile:read", "workouts:write"], "token_type": "Bearer", "expires_at": 1658660147.0667062 }
- Paramètres de la forme:
string client_id – “client_id” du client OAuth2
string client_secret – secret du client OAuth2
string grant_type – Type d’autorisation du client OAuth2 (seuls “authorization_code” (pour l’émission de jetons) et “refresh_token” (pour le rafraîchissement de jeton) sont pris en charge par FitTrackee)
string code – code généré après l’autorisation du client (pour l’émission de jetons)
string code_verifier – vérificateur de code (pour l’émission de jetons avec PKCE, non obligatoire)
string refresh_token – jeton de rafraîchissement (pour le rafraîchissement du jeton)
- Codes d’état:
200 OK –
success
400 Bad Request – erreurs renvoyées par la librairie Authlib
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
- POST /api/oauth/revoke¶
Révoquer un jeton pour un client OAuth2 donné.
Exemple de requête :
POST /api/oauth/revoke HTTP/1.1 Content-Type: multipart/form-data
Exemple de réponse :
HTTP/1.1 200 SUCCESS Content-Type: application/json {}
- Paramètres de la forme:
string client_id – “client_id” du client OAuth2
string client_secret – secret du client OAuth2
string token – jeton d’accès à révoquer
- Codes d’état:
200 OK –
success
400 Bad Request – erreurs renvoyées par la librairie Authlib
provide a valid auth token
signature expired, please log in again
invalid token, please log in again