Équipements

GET /api/equipments

Obtenir tous les équipements d’un utilisateur. Seul le propriétaire de l’équipement peut voir son équipement.

Scope : equipments:read

Exemple de requête :

GET /api/equipments HTTP/1.1
Content-Type: application/json
  • avec quelques paramètres de requête (obtenir tous les équipements de type « Shoes »)

GET /api/equipment?equipment_type_id=1  HTTP/1.1

Exemple de réponse :

HTTP/1.1 200 OK
Content-Type: application/json

{
  "data": {
    "equipments": [
      {
        "creation_date": "Tue, 21 Mar 2023 06:08:06 GMT",
        "default_for_sport_ids": [],
        "description": "The first shoes added to FitTrackee",
        "equipment_type": {
          "id": 1,
          "is_active": true,
          "label": "Shoe"
        },
        "id": "2UkrViYShoAkg8qSUKnUS4",
        "is_active": true,
        "label": "My shoes",
        "total_distance": 0.0,
        "total_duration": "0:00:00",
        "total_moving": "0:00:00",
        "user_id": 1,
        "workouts_count": 0
    },
    {
        "creation_date": "Tue, 21 Mar 2023 06:08:29 GMT",
        "default_for_sport_ids": [],
        "description": "The second shoes added to FitTrackee",
        "equipment_type": {
          "id": 1,
          "is_active": true,
          "label": "Shoe"
        },
        "id": "2UkrViYShoAkg8qSUKnUS4",
        "is_active": true,
        "label": "My shoes 2",
        "total_distance": 0.0,
        "total_duration": "0:00:00",
        "total_moving": "0:00:00",
        "user_id": ,
        "workouts_count": 0
        }
      ]
    }
  },
  "status": "success"
}
Paramètres de requête:
  • equipment_type_id (integer) – id du type d’équipement

En-têtes de requête:
Codes d’état:
  • 200 OK – succès

  • 401 Unauthorized

    • provide a valid auth token

    • signature expired, please log in again

    • invalid token, please log in again

  • 403 Forbiddenyou do not have permissions

GET /api/equipments/(string: equipment_short_id)

Obtenir un équipement. Seul le propriétaire de l’équipement peut voir son équipement.

Scope : equipments:read

Exemple de requête :

GET /api/equipments/2UkrViYShoAkg8qSUKnUS4 HTTP/1.1
Content-Type: application/json

Exemple de réponse :

  • succès

HTTP/1.1 200 OK
Content-Type: application/json

{
  "data": {
    "equipments": [
      {
        "creation_date": "Tue, 21 Mar 2023 06:08:06 GMT",
        "default_for_sport_ids": [],
        "description": "Another piece of equipment",
        "equipment_type": {
          "id": 1,
          "is_active": true,
          "label": "Shoe"
        },
        "id": "2UkrViYShoAkg8qSUKnUS4",
        "is_active": true,
        "label": "Other user Equipment",
        "total_distance": 0.0,
        "total_duration": "0:00:00",
        "total_moving": "0:00:00",
        "user_id": 2,
        "workouts_count": 0
      }
    ]
  },
  "status": "success"
}
  • équipement non trouvé :

HTTP/1.1 404 NOT FOUND
Content-Type: application/json

{
  "data": {
    "equipments": []
  },
  "status": "not found"
}
Paramètres:
  • equipment_short_id (string) – id court de l’équipement

En-têtes de requête:
Codes d’état:
POST /api/equipments

Créer un nouvel équipement.

Scope : equipments:write

Exemple de requête :

POST /api/equipments HTTP/1.1
Content-Type: application/json

Exemple de réponse :

HTTP/1.1 201 CREATED
Content-Type: application/json

{
  "data": {
    "equipments": [
      {
        "creation_date": "Tue, 21 Mar 2023 06:08:29 GMT",
        "default_for_sport_ids": [],
        "description": null,
        "equipment_type": {
          "id": 1,
          "is_active": true,
          "label": "Shoe"
        },
        "id": "2UkrViYShoAkg8qSUKnUS4",
        "is_active": true,
        "label": "New equipment from API",
        "total_distance": 0.0,
        "total_duration": "0:00:00",
        "total_moving": "0:00:00",
        "user_id": 1,
        "workouts_count": 0
      }
    ]
  },
  "status": "created"
}
Objet JSON de requête:
  • label (string) – un label bref (moins de 50 caractères) pour l’équipement

  • equipment_type (integer) – l’id d’un type d’équipement (il doit être actif)

  • description (string) – une description (éventuellement plus longue) de l’équipement (limitée à 200 caractères, facultatif)

  • is_active (boolean) – si cet équipement est actuellement actif ou non (par défaut : true)

  • default_for_sport_ids (array of integers) – les id des sports par défaut à utiliser pour cet équipement, non obligatoires

En-têtes de requête:
Codes d’état:
  • 201 Created – équipement créé

  • 400 Bad Request

    • the 'label' and 'equipment_type_id' parameters must be provided

    • equipment already exists with the same label

    • label exceeds 50 characters

    • invalid equipment type id

    • equipment type is inactive

    • sport (id <sport_id>) does not exist

    • invalid sport '<sport_label>' for equipment type '<equipment_type_label>'

  • 401 Unauthorized

    • provide a valid auth token

    • signature expired, please log in again

    • invalid token, please log in again

  • 403 Forbiddenyou do not have permissions

  • 404 Not Foundequipment not found

  • 500 Internal Server ErrorError during equipment save

PATCH /api/equipments/(string: equipment_short_id)

Modifier un équipement. Permet à un utilisateur de modifier le label, la description, le type ou le statut actif d’un de ses équipements.

Le changement de type d’un équipement supprimera toutes les associations existantes à des séances pour cet équipement et les sports définis par défaut.

Scope : equipments:write

Exemple de requête :

PATCH /api/equipments/QRj7BY6H2iYjSV8sersFgV HTTP/1.1
Content-Type: application/json

Exemple de réponses :

  • succès

HTTP/1.1 200 OK
Content-Type: application/json

  {
    "data": {
      "equipments": [
        {
          "creation_date": "Tue, 21 Mar 2023 06:28:10 GMT",
          "default_for_sport_ids": [],
          "description": "Change bike to shoes",
          "equipment_type": {
            "id": 1,
            "is_active": true,
            "label": "Shoe"
          },
          "id": "QRj7BY6H2iYjSV8sersFgV",
          "is_active": true,
          "label": "Updated bike",
          "total_distance": 0.0,
          "total_duration": "0:00:00",
          "total_moving": "0:00:00",
          "user_id": 1,
          "workouts_count": 0
        }
      ]
    },
    "status": "success"
  }
  • équipement non trouvé :

HTTP/1.1 404 NOT FOUND
Content-Type: application/json

{
  "data": {
    "equipments": []
  },
  "status": "not found"
}
Paramètres:
  • equipment_short_id (string) – id court de l’équipement

Objet JSON de requête:
  • label (string) – un label bref (moins de 50 caractères) pour l’équipement

  • equipment_type_id (int) – l’id d’un type d’équipement (il doit être actif)

  • description (string) – une description (éventuellement plus longue) de l’équipement (limitée à 200 caractères, facultatif)

  • is_active (boolean) – si cet équipement est actuellement actif ou non (par défaut : true)

  • default_for_sport_ids (array of integers) – les id des sports par défaut à utiliser pour cet équipement

En-têtes de requête:
Codes d’état:
  • 200 OK – équipement mis à jour

  • 400 Bad Request

    • no request data was supplied

    • no valid parameters supplied

    • equipment already exists with the same label

    • label exceeds 50 characters

    • invalid equipment type id

    • equipment type is inactive

    • sport (id <sport_id>) does not exist

    • invalid sport '<sport_label>' for equipment type '<equipment_type_label>'

  • 401 Unauthorized

    • provide a valid auth token

    • signature expired, please log in again

    • invalid token, please log in again

  • 403 Forbiddenyou do not have permissions

  • 404 Not Foundequipment not found

  • 500 Internal Server ErrorError during equipment update

POST /api/equipments/(string: equipment_short_id)/refresh

Recalcule les totaux de l’équipement (dans le cas où les valeurs seraient incorrectes).

Scope : equipments:write

Exemple de requête :

POST /api/equipments/QRj7BY6H2iYjSV8sersFgV/refresh HTTP/1.1
Content-Type: application/json

Exemple de réponse :

HTTP/1.1 200 OK
Content-Type: application/json

  {
    "data": {
      "equipments": [
        {
          "creation_date": "Tue, 21 Mar 2023 06:28:10 GMT",
          "default_for_sport_ids": [],
          "description": "My Shoes",
          "equipment_type": {
            "id": 1,
            "is_active": true,
            "label": "Shoe"
          },
          "id": "QRj7BY6H2iYjSV8sersFgV",
          "is_active": true,
          "label": "Updated bike",
          "total_distance": 6.0,
          "total_duration": "1:10:00",
          "total_moving": "1:00:00",
          "user_id": 1,
          "workouts_count": 1
        }
      ]
    },
    "status": "success"
  }
En-têtes de requête:
Codes d’état:
DELETE /api/equipments/(string: equipment_short_id)

Supprimer un équipement

Un utilisateur ne peut supprimer que son propre équipement, et seulement s’il n’y a pas de séances associées à cet équipement (à moins que la suppression ne soit forcée). Si l’équipement était associé à des séances et que la suppression est forcée, l’association entre cet équipement et ces séances sera supprimée. Si cet équipement était un équipement par défaut pour n’importe quel sport, la préférence sera mise à jour.

Scope : equipments:write

Exemple de requête :

DELETE /api/equipments/QRj7BY6H2iYjSV8sersFgV HTTP/1.1
Content-Type: application/json

Exemple de réponse :

HTTP/1.1 204 NO CONTENT
Content-Type: application/json
Paramètres:
  • equipment_short_id (string) – id court de l’équipement

Paramètres de requête:
  • force – si fourni en tant qu’argument (aucune valeur requise), cela forcera la suppression de l’équipement et l’enlèvera des séances associées

En-têtes de requête:
Codes d’état:
  • 204 No Content – équipement supprimé

  • 401 Unauthorized

    • provide a valid auth token

    • signature expired, please log in again

    • invalid token, please log in again

  • 403 Forbidden

    • you do not have permissions

    • you cannot delete equipment that has workouts associated with it without 'force' parameter

  • 404 Not Foundequipment not found

  • 500 Internal Server Errorerror, please try again or contact the administrator