# OAuth2 - Documentation FitTrackee 0.7.28

Hide navigation sidebar
Hide table of contents sidebar
Back to top
Toggle table of contents sidebar

# 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`

    - 401 Unauthorized –

      - `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`

    - 401 Unauthorized –

      - `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`

    - 401 Unauthorized –

      - `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`

    - 401 Unauthorized –

      - `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

    - 401 Unauthorized –

      - `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`

    - 401 Unauthorized –

      - `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`

    - 400 Bad Request –

      - `invalid payload`

      - erreurs renvoyées par la librairie Authlib

    - 401 Unauthorized –

      - `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

    - 401 Unauthorized –

      - `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

    - 401 Unauthorized –

      - `provide a valid auth token`

      - `signature expired, please log in again`

      - `invalid token, please log in again`