Séances¶
- GET /api/workouts¶
Obtenir les séances de l’utilisateur authentifié.
Scope :
workouts:read
Exemple de requêtes :
sans paramètres :
GET /api/workouts/ HTTP/1.1
avec quelques paramètres de requête :
GET /api/workouts?from=2019-07-02&to=2019-07-31&sport_id=1 HTTP/1.1
Exemple de réponses :
renvoyant au moins une séance :
HTTP/1.1 200 OK Content-Type: application/json { "data": { "workouts": [ { "analysis_visibility": "private", "ascent": null, "ave_speed": 10.0, "bounds": [], "creation_date": "Sun, 14 Jul 2019 13:51:01 GMT", "descent": null, "description": null, "distance": 10.0, "duration": "0:17:04", "equipments": [], "id": "kjxavSTUrJvoAh2wvCeGEF", "liked": false, "likes_count": 0, "map": null, "map_visibility": "private", "max_alt": null, "max_speed": 10.0, "min_alt": null, "modification_date": null, "moving": "0:17:04", "next_workout": 3, "notes": null, "pauses": null, "previous_workout": null, "records": [ { "id": 4, "record_type": "MS", "sport_id": 1, "user": "admin", "value": 10.0, "workout_date": "Mon, 01 Jan 2018 00:00:00 GMT", "workout_id": "kjxavSTUrJvoAh2wvCeGEF" }, { "id": 13, "record_type": "HA", "sport_id": 1, "user": "Sam", "value": 43.97, "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT", "workout_id": "hvYBqYBRa7wwXpaStWR4V2" }, { "id": 3, "record_type": "LD", "sport_id": 1, "user": "admin", "value": "0:17:04", "workout_date": "Mon, 01 Jan 2018 00:00:00 GMT", "workout_id": "kjxavSTUrJvoAh2wvCeGEF" }, { "id": 2, "record_type": "FD", "sport_id": 1, "user": "admin", "value": 10.0, "workout_date": "Mon, 01 Jan 2018 00:00:00 GMT", "workout_id": "kjxavSTUrJvoAh2wvCeGEF" }, { "id": 1, "record_type": "AS", "sport_id": 1, "user": "admin", "value": 10.0, "workout_date": "Mon, 01 Jan 2018 00:00:00 GMT", "workout_id": "kjxavSTUrJvoAh2wvCeGEF" } ], "segments": [], "sport_id": 1, "suspended": false, "suspended_at": null, "title": null, "user": { "created_at": "Sun, 31 Dec 2017 09:00:00 GMT", "followers": 0, "following": 0, "nb_workouts": 1, "picture": false, "role": "user", "suspended_at": null, "username": "Sam" }, "weather_end": null, "weather_start": null, "with_analysis": false, "with_gpx": false, "workout_date": "Mon, 01 Jan 2018 00:00:00 GMT", "workout_visibility": "private" } ] }, "status": "success" }
renvoyant aucune séance
HTTP/1.1 200 OK Content-Type: application/json { "data": { "workouts": [] }, "status": "success" }
- Paramètres de requête:
page (integer) – page si pagination (par défaut : 1)
per_page (integer) – nombre d’entraînements par page (par défaut : 5, max : 100)
sport_id (integer) – identifiant du sport
title (string) – une partie (ou la totalité) du titre de la séance, la correspondance avec le titre ne tient pas compte des majuscules et des minuscules
from (string) – date de début (format :
%Y-%m-%d
)to (string) – date de fin (format :
%Y-%m-%d
)distance_from (float) – distance minimale
distance_to (float) – distance maximale
duration_from (string) – durée minimale (format :
%H:%M
)duration_to (string) – distance maximale (format :
%H:%M
)ave_speed_from (float) – vitesse moyenne minimale
ave_speed_to (float) – vitesse moyenne maximale
max_speed_from (float) – vitesse max. minimale
max_speed_to (float) – vitesse max. maximale
order (string) – ordre de tri :
asc
,desc
(par défaut :desc
)order_by (string) – sorting criteria:
ave_speed
,distance
,duration
,workout_date
(default:workout_date
)equipment_id (string) – identifiant de l’équipement (si valeur à
none
, seules les séances sans équipements seront renvoyées)notes (string) – une partie (ou la totalité) des notes de la séance, la correspondance avec les notes ne tient pas compte des majuscules et des minuscules
description (string) – une partie de la description de la séance, la correspondance avec la description ne tient pas compte des majuscules et des minuscules
return_equipments (string) – renvoie les séances avec l’équipement (par défaut, l’équipement n’est pas renvoyé). Note: Il ne s’agit pas d’un filtre. Attention: nécessaire pour les applications tierces mettant à jour les équipements.
- 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
you do not have permissions, your account is suspended
500 Internal Server Error –
error, please try again or contact the administrator
- GET /api/workouts/(string: workout_short_id)¶
Obtenir une séance.
Exemple de requête :
GET /api/workouts/kjxavSTUrJvoAh2wvCeGEF HTTP/1.1
Exemple de réponses :
succès :
HTTP/1.1 200 OK Content-Type: application/json { "data": { "workouts": [ { "analysis_visibility": "private", "ascent": null, "ave_speed": 16, "bounds": [], "creation_date": "Sun, 14 Jul 2019 18:57:14 GMT", "descent": null, "description": null, "distance": 12, "duration": "0:45:00", "equipments": [], "id": "kjxavSTUrJvoAh2wvCeGEF", "liked": false, "likes_count": 0, "map": null, "map_visibility": "private", "max_alt": null, "max_speed": 16, "min_alt": null, "modification_date": "Sun, 14 Jul 2019 18:57:22 GMT", "moving": "0:45:00", "next_workout": 4, "notes": "workout without gpx", "pauses": null, "previous_workout": 3, "records": [], "segments": [], "sport_id": 1, "suspended": false, "suspended_at": null, "title": "biking on sunday morning", "user": { "created_at": "Sun, 31 Dec 2017 09:00:00 GMT", "followers": 0, "following": 0, "nb_workouts": 1, "picture": false, "role": "user", "suspended_at": null, "username": "Sam" }, "weather_end": null, "weather_start": null, "with_analysis": false, "with_gpx": false, "workout_date": "Sun, 07 Jul 2019 07:00:00 GMT", "workout_visibility": "private" } ] }, "status": "success" }
séance non trouvé :
HTTP/1.1 404 NOT FOUND Content-Type: application/json { "data": { "workouts": [] }, "status": "not found" }
- Paramètres:
workout_short_id (string) – identifiant court de la séance
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer” pour la séance avec une visibilité
private
etfollowers_only
- Codes d’état:
200 OK –
success
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
you do not have permissions
you do not have permissions, your account is suspended
404 Not Found –
workout not found
- GET /api/workouts/(string: workout_short_id)/gpx¶
Obtenir un fichier gpx pour une séance affichée sur une carte avec Leaflet.
Exemple de requête :
GET /api/workouts/kjxavSTUrJvoAh2wvCeGEF/gpx HTTP/1.1 Content-Type: application/json
Exemple de réponse :
HTTP/1.1 200 OK Content-Type: application/json { "data": { "gpx": "gpx file content" }, "message": "", "status": "success" }
- Paramètres:
workout_short_id (string) – identifiant court de la séance
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer” pour la séance avec une visibilité
private
etfollowers_only
pour la carte
- Codes d’état:
200 OK –
success
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
you do not have permissions
you do not have permissions, your account is suspended
workout not found
no gpx file for this workout
500 Internal Server Error –
error, please try again or contact the administrator
- GET /api/workouts/(string: workout_short_id)/chart_data¶
Récupérer les données d’une séance avec gpx pour les afficher avec Chart.js.
Exemple de requête :
GET /api/workouts/kjxavSTUrJvoAh2wvCeGEF/chart HTTP/1.1 Content-Type: application/json
Exemple de réponse :
HTTP/1.1 200 OK Content-Type: application/json { "data": { "chart_data": [ { "distance": 0, "duration": 0, "elevation": 279.4, "latitude": 51.5078118, "longitude": -0.1232004, "speed": 8.63, "time": "Fri, 14 Jul 2017 13:44:03 GMT" }, { "distance": 7.5, "duration": 7380, "elevation": 280, "latitude": 51.5079733, "longitude": -0.1234538, "speed": 6.39, "time": "Fri, 14 Jul 2017 15:47:03 GMT" } ] }, "message": "", "status": "success" }
- Paramètres:
workout_short_id (string) – identifiant court de la séance
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer” pour la séance avec une visibilité
private
etfollowers_only
pour la carte
- Codes d’état:
200 OK –
success
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
you do not have permissions
you do not have permissions, your account is suspended
workout not found
no gpx file for this workout
500 Internal Server Error –
error, please try again or contact the administrator
- GET /api/workouts/(string: workout_short_id)/chart_data/segment/(int: segment_id)¶
Récupérer les données d’une séance avec gpx pour les afficher avec Chart.js.
Exemple de requête :
GET /api/workouts/kjxavSTUrJvoAh2wvCeGEF/chart/segment/1 HTTP/1.1 Content-Type: application/json
Exemple de réponse :
HTTP/1.1 200 OK Content-Type: application/json { "data": { "chart_data": [ { "distance": 0, "duration": 0, "elevation": 279.4, "latitude": 51.5078118, "longitude": -0.1232004, "speed": 8.63, "time": "Fri, 14 Jul 2017 13:44:03 GMT" }, { "distance": 7.5, "duration": 7380, "elevation": 280, "latitude": 51.5079733, "longitude": -0.1234538, "speed": 6.39, "time": "Fri, 14 Jul 2017 15:47:03 GMT" } ] }, "message": "", "status": "success" }
- Paramètres:
workout_short_id (string) – identifiant court de la séance
segment_id (integer) – identifiant du segment
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer” pour la séance avec une visibilité
private
etfollowers_only
pour la carte
- Codes d’état:
200 OK –
success
400 Bad Request –
no gpx file for this workout
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
you do not have permissions
you do not have permissions, your account is suspended
404 Not Found –
workout not found
500 Internal Server Error –
error, please try again or contact the administrator
- GET /api/workouts/(string: workout_short_id)/gpx/segment/(int: segment_id)¶
Obtenir un fichier gpx pour le segment d’une séance pour l’afficher sur la carte avec Leaflet.
Exemple de requête :
GET /api/workouts/kjxavSTUrJvoAh2wvCeGEF/gpx/segment/1 HTTP/1.1 Content-Type: application/json
Exemple de réponse :
HTTP/1.1 200 OK Content-Type: application/json { "data": { "gpx": "gpx file content" }, "message": "", "status": "success" }
- Paramètres:
workout_short_id (string) – identifiant court de la séance
segment_id (integer) – identifiant du segment
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer” pour la séance avec une visibilité
private
etfollowers_only
pour la carte
- Codes d’état:
200 OK –
success
400 Bad Request –
no gpx file for this workout
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
you do not have permissions
you do not have permissions, your account is suspended
404 Not Found –
workout not found
500 Internal Server Error –
error, please try again or contact the administrator
- GET /api/workouts/map/(map_id)¶
Obtenir l’image de la carte pour les séances avec gpx.
Exemple de requête :
GET /api/workouts/map/fa33f4d996844a5c73ecd1ae24456ab8?1563529507772 HTTP/1.1
Exemple de réponse :
HTTP/1.1 200 OK Content-Type: image/png
- Paramètres:
map_id (string) – identifiant de la carte de la séance
- Codes d’état:
200 OK –
success
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
you do not have permissions, your account is suspended
404 Not Found –
map does not exist
500 Internal Server Error –
error, please try again or contact the administrator
- GET /api/workouts/map_tile/(s)/(z)/(x)/(y).png¶
Obtenir une tuile de la carte à partir du serveur de tuiles.
Exemple de requête :
GET /api/workouts/map_tile/c/13/4109/2930.png HTTP/1.1
Exemple de réponse :
HTTP/1.1 200 OK Content-Type: image/png
- Paramètres:
s (string) – sous-domaine
z (string) – zoom
x (string) – index de la tuile sur l’axe x de la carte
y (string) – index de la tuile sur l’axe y de la carte
Les codes d’état sont des codes d’état renvoyés par le serveur de tuiles
- GET /api/workouts/(string: workout_short_id)/gpx/download¶
Télécharger le fichier gpx.
Scope :
workouts:read
Exemple de requête :
GET /api/workouts/kjxavSTUrJvoAh2wvCeGEF/gpx/download HTTP/1.1
Exemple de réponse :
HTTP/1.1 200 OK Content-Type: application/gpx+xml
- Paramètres:
workout_short_id (string) – identifiant court de la séance
- Codes d’état:
200 OK –
success
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
you do not have permissions, your account is suspended
workout not found
no gpx file for workout
- POST /api/workouts¶
Créer une séance à partir d’un fichier gpx.
Scope :
workouts:write
Exemple de requête :
POST /api/workouts/ HTTP/1.1 Content-Type: multipart/form-data
Exemple de réponse :
HTTP/1.1 201 CREATED Content-Type: application/json { "data": { "workouts": [ { "analysis_visibility": "private", "ascent": 435.621, "ave_speed": 13.14, "bounds": [ 43.93706, 4.517587, 43.981933, 4.560627 ], "creation_date": "Sun, 14 Jul 2019 13:51:01 GMT", "descent": 427.499, "description": null, "distance": 23.478, "duration": "2:08:35", "equipments": [], "id": "PsjeeXbJZ2JJNQcTCPxVvF", "liked": false, "likes_count": 0, "map": "ac075ec36dc25dcc20c270d2005f0398", "map_visibility": "private", "max_alt": 158.41, "max_speed": 25.59, "min_alt": 55.03, "modification_date": null, "moving": "1:47:11", "next_workout": "Kd5wyhwLtVozw6o3AU5M4J", "notes": "", "pauses": "0:20:32", "previous_workout": "HgzYFXgvWKCEpdq3vYk67q", "records": [ { "id": 6, "record_type": "AS", "sport_id": 4, "user": "Sam", "value": 13.14, "workout_date": "Tue, 26 Apr 2016 14:42:30 GMT", "workout_id": "PsjeeXbJZ2JJNQcTCPxVvF" }, { "id": 7, "record_type": "FD", "sport_id": 4, "user": "Sam", "value": 23.478, "workout_date": "Tue, 26 Apr 2016 14:42:30 GMT", "workout_id": "PsjeeXbJZ2JJNQcTCPxVvF" }, { "id": 9, "record_type": "LD", "sport_id": 4, "user": "Sam", "value": "1:47:11", "workout_date": "Tue, 26 Apr 2016 14:42:30 GMT", "workout_id": "PsjeeXbJZ2JJNQcTCPxVvF" }, { "id": 10, "record_type": "MS", "sport_id": 4, "user": "Sam", "value": 25.59, "workout_date": "Tue, 26 Apr 2016 14:42:30 GMT", "workout_id": "PsjeeXbJZ2JJNQcTCPxVvF" }, { "id": 8, "record_type": "HA", "sport_id": 4, "user": "Sam", "value": 435.621, "workout_date": "Tue, 26 Apr 2016 14:42:30 GMT", "workout_id": "PsjeeXbJZ2JJNQcTCPxVvF" } ], "segments": [ { "ascent": 435.621, "ave_speed": 13.14, "descent": 427.499, "distance": 23.478, "duration": "2:08:35", "max_alt": 158.41, "max_speed": 25.59, "min_alt": 55.03, "moving": "1:47:11", "pauses": "0:20:32", "segment_id": 0, "workout_id": "PsjeeXbJZ2JJNQcTCPxVvF" } ], "sport_id": 4, "suspended": false, "suspended_at": null, "title": "VTT dans le Gard", "user": { "created_at": "Sun, 31 Dec 2017 09:00:00 GMT", "followers": 0, "following": 0, "nb_workouts": 3, "picture": false, "role": "user", "suspended_at": null, "username": "Sam" }, "weather_end": null, "weather_start": null, "with_analysis": false, "with_gpx": true, "workout_date": "Tue, 26 Apr 2016 14:42:30 GMT", "workout_visibility": "private" } ] }, "status": "success" }
- Paramètres de la forme:
file – fichier gpx (extensions autorisées : .gpx, .zip)
data – id du sport, id de l’équipement, description, titre et notes, par exemple:
{"sport_id": 1, "notes": "", "title": "", "description": "", "analysis_visibility": "private", "map_visibility": "private", "workout_visibility": "private", "equipment_ids": []}
. Les guillemets doubles dans les notes, la description et le titre doivent être échappés. La longueur maximale est de 500 caractères pour les notes, de 10000 caractères pour la description et de 255 caractères pour le titre. Dans le cas contraire, ils seront tronqués. Pour equipment_ids, l’id de l’équipement à associer à la séance. Note: pour le moment, seul un équipement peut être associé. Si non fourni et qu’il existe un équipement par défaut pour le sport, l’équipement par défaut sera associé. Les notes, la description, le titre, l’id de l’équipement et la visibilité pour la séance, l’analyse et la carte ne sont pas obligatoires.
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer”
- Codes d’état:
201 Created – séance créée
invalid payload
no file part
no selected file
file extension not allowed
equipment_ids must be an array of strings
only one equipment can be added
equipment with id <equipment_id> does not exist
invalid equipment id <equipment_id> for sport
equipment with id <equipment_id> is inactive
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
you do not have permissions, your account is suspended
413 Request Entity Too Large –
error during picture update: file size exceeds 1.0MB
500 Internal Server Error –
error, please try again or contact the administrator
- POST /api/workouts/no_gpx¶
Créer une séance sans fichier gpx.
Scope :
workouts:write
Exemple de requête :
POST /api/workouts/no_gpx HTTP/1.1 Content-Type: application/json
Exemple de réponse :
HTTP/1.1 201 CREATED Content-Type: application/json { "data": { "workouts": [ { "analysis_visibility": "private", "ascent": null, "ave_speed": 10.0, "bounds": [], "creation_date": "Sun, 14 Jul 2019 13:51:01 GMT", "descent": null, "description": null, "distance": 10.0, "duration": "0:17:04", "id": "Kd5wyhwLtVozw6o3AU5M4J", "liked": false, "likes_count": 0, "equipments": [], "map": null, "map_visibility": "private", "max_alt": null, "max_speed": 10.0, "min_alt": null, "modification_date": null, "moving": "0:17:04", "next_workout": 3, "notes": null, "pauses": null, "previous_workout": null, "records": [ { "id": 4, "record_type": "MS", "sport_id": 1, "user": "admin", "value": 10., "workout_date": "Mon, 01 Jan 2018 00:00:00 GMT", "workout_id": "kjxavSTUrJvoAh2wvCeGEF" }, { "id": 3, "record_type": "LD", "sport_id": 1, "user": "admin", "value": "0:17:04", "workout_date": "Mon, 01 Jan 2018 00:00:00 GMT", "workout_id": "kjxavSTUrJvoAh2wvCeGEF" }, { "id": 2, "record_type": "FD", "sport_id": 1, "user": "admin", "value": 10.0, "workout_date": "Mon, 01 Jan 2018 00:00:00 GMT", "workout_id": "kjxavSTUrJvoAh2wvCeGEF" }, { "id": 1, "record_type": "AS", "sport_id": 1, "user": "admin", "value": 10.0, "workout_date": "Mon, 01 Jan 2018 00:00:00 GMT", "workout_id": "kjxavSTUrJvoAh2wvCeGEF" } ], "segments": [], "sport_id": 1, "suspended": false, "suspended_at": null, "title": null, "user": { "created_at": "Sun, 31 Dec 2017 09:00:00 GMT", "followers": 0, "following": 0, "nb_workouts": 1, "picture": false, "role": "user", "suspended_at": null, "username": "Sam" }, "uuid": "kjxavSTUrJvoAh2wvCeGEF" "weather_end": null, "weather_start": null, "with_analysis": false, "with_gpx": false, "workout_date": "Mon, 01 Jan 2018 00:00:00 GMT", "workout_visibility": "private" } ] }, "status": "success" }
- Objet JSON de requête:
analysis_visibility (string) – visibilité pour l’analyse (
private
,followers_only
oupublic
). Non obligatoire, si non fournie utilise la préférence utilisateur.ascent (float) – dénivelé positif de la séance (non obligatoire, à fournir avec le dénivelé positif)
descent (float) – dénivelé négatif de la séance (non obligatoire, à fournir avec le dénivelé positif)
description (string) – description de la séance (non obligatoire, longueur max. : 10000 caractères, dans le cas contraire elle sera tronquée)
distance (float) – distance de la séance en km
duration (integer) – durée de la séance en secondes
equipment_ids (array of strings) – l’id de l’équipement à associer à cette séance. Note: pour le moment, un seul équipement peut être associé. Si non fourni et qu’il existe un équipement par défaut pour le sport, l’équipement par défaut sera associé.
map_visibility (string) – visibilité de la carte (
private
,followers_only
orpublic
). Non obligatoire, si non fournie utilise la préférence utilisateur.notes (string) – notes (non obligatoire, longueur max. : 500 caractères, dans le cas contraire elles seront tronquées)
sport_id (integer) – identifiant du sport de la séance
title (string) – titre de la séance (non obligatoire, longueur max. : 255 caractères, dans le cas contraire il sera tronqué)
workout_date (string) – date de la séance, dans le fuseau horaire de l’utilisateur (format :
%Y-%m-%d %H:%M
)workout_visibility (string) – visibilité de la séance (
private
,followers_only
oupublic
). Non obligatoire, si non fournie utilise la préférence utilisateur.
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer”
- Codes d’état:
201 Created – séance créée
invalid payload
equipment_ids must be an array of strings
only one equipment can be added
equipment with id <equipment_id> does not exist
invalid equipment id <equipment_id> for sport
equipment with id <equipment_id> is inactive
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
you do not have permissions, your account is suspended
500 Internal Server Error –
error, please try again or contact the administrator
- PATCH /api/workouts/(string: workout_short_id)¶
Mettre à jour une séance.
Scope :
workouts:write
Exemple de requête :
PATCH /api/workouts/2oRDfncv6vpRkfp3yrCYHt HTTP/1.1 Content-Type: application/json
Exemple de réponse :
HTTP/1.1 200 OK Content-Type: application/json { "data": { "workouts": [ { "analysis_visibility": "private", "ascent": null, "ave_speed": 10.0, "bounds": [], "creation_date": "Sun, 14 Jul 2019 13:51:01 GMT", "descent": null, "description": null, "distance": 10.0, "duration": "0:17:04", "equipments": [], "id": "2oRDfncv6vpRkfp3yrCYHt", "liked": false, "likes_count": 0, "map": null, "map_visibility": "private", "max_alt": null, "max_speed": 10.0, "min_alt": null, "modification_date": null, "moving": "0:17:04", "next_workout": 3, "notes": null, "pauses": null, "previous_workout": null, "records": [ { "id": 4, "record_type": "MS", "sport_id": 1, "user": "admin", "value": 10.0, "workout_date": "Mon, 01 Jan 2018 00:00:00 GMT", "workout_id": "kjxavSTUrJvoAh2wvCeGEF" }, { "id": 3, "record_type": "LD", "sport_id": 1, "user": "admin", "value": "0:17:04", "workout_date": "Mon, 01 Jan 2018 00:00:00 GMT", "workout_id": "kjxavSTUrJvoAh2wvCeGEF" }, { "id": 2, "record_type": "FD", "sport_id": 1, "user": "admin", "value": 10.0, "workout_date": "Mon, 01 Jan 2018 00:00:00 GMT", "workout_id": "kjxavSTUrJvoAh2wvCeGEF", }, { "id": 1, "record_type": "AS", "sport_id": 1, "user": "admin", "value": 10.0, "workout_date": "Mon, 01 Jan 2018 00:00:00 GMT", "workout_id": "kjxavSTUrJvoAh2wvCeGEF", } ], "segments": [], "sport_id": 1, "suspended": false, "suspended_at": null, "title": null, "user": { "created_at": "Sun, 31 Dec 2017 09:00:00 GMT", "followers": 0, "following": 0, "nb_workouts": 1, "picture": false, "role": "user", "suspended_at": null, "username": "Sam" }, "uuid": "kjxavSTUrJvoAh2wvCeGEF" "weather_end": null, "weather_start": null, "with_analysis": false, "with_gpx": false, "workout_date": "Mon, 01 Jan 2018 00:00:00 GMT", "workout_visibility": "private" } ] }, "status": "success" }
- Paramètres:
workout_short_id (string) – identifiant court de la séance
- Objet JSON de requête:
analysis_visibility (string) – visibilité pour l’analyse (
private
,followers_only
oupublic
)ascent (float) – dénivelé positif de la séance (seulement pour les séances sans gpx, doit être fourni avec le dénivelé négatif)
descent (float) – dénivelé négatif de la séance (seulement pour les séances sans gpx, doit être fourni avec le dénivelé positif)
description (string) – description de la séance (longueur max. : 10000 caractères, dans le cas contraire elle sera tronquée)
distance (float) – distance de la séance en km (seulement pour les séances sans gpx)
duration (integer) – durée de la séance en secondes (seulement pour les séances sans gpx)
equipment_ids (array of strings) – l’id de l’équipement à associer à cette séance (si un équipement est déjà associé, il sera remplacé). Note: pour le moment, un seul équipement peut être associé. Si la liste est vide, l’équipement sera supprimé.
map_visibility (string) – visibilité de la carte (
private
,followers_only
oupublic
)notes (string) – notes (longueur max. : 500 caractères, dans le cas contraire elles seront tronquées)
sport_id (integer) – identifiant du sport de la séance
title (string) – titre de la séance (longueur max. : 255 caractères, dans le cas contraire il sera tronqué)
workout_date (string) – date de la séance dans le fuseau horaire de l’utilisateur (format :
%Y-%m-%d %H:%M
) (seulement pour les séances sans gpx)workout_visibility (string) – visibilité de la séance (
private
,followers_only
orpublic
)
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer”
- Codes d’état:
200 OK – séance mise à jour
invalid payload
equipment_ids must be an array of strings
only one equipment can be added
equipment with id <equipment_id> does not exist
invalid equipment id <equipment_id> for sport
equipment with id <equipment_id> is inactive
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
you do not have permissions, your account is suspended
404 Not Found –
workout not found
500 Internal Server Error –
error, please try again or contact the administrator
- DELETE /api/workouts/(string: workout_short_id)¶
Supprimer la séance.
Scope :
workouts:write
Exemple de requête :
DELETE /api/workouts/kjxavSTUrJvoAh2wvCeGEF HTTP/1.1 Content-Type: application/json
Exemple de réponse :
HTTP/1.1 204 NO CONTENT Content-Type: application/json
- Paramètres:
workout_short_id (string) – identifiant court de la séance
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer”
- Codes d’état:
204 No Content – séance supprimée
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
you do not have permissions, your account is suspended
404 Not Found –
workout not found
500 Internal Server Error –
error, please try again or contact the administrator
- POST /api/workouts/(string: workout_short_id)/like¶
Ajouter un « like » à une séance.
Scope :
workouts:write
Exemple de requête :
POST /api/workouts/HgzYFXgvWKCEpdq3vYk67q/like HTTP/1.1 Content-Type: application/json
Exemple de réponse :
HTTP/1.1 200 OK Content-Type: application/json { "data": { "workouts": [ { "analysis_visibility": "private", "ascent": 231.208, "ave_speed": 13.12, "bounds": [], "creation_date": "Wed, 04 Dec 2024 09:18:26 GMT", "descent": 234.208, "description": null, "distance": 23.41, "duration": "3:32:27", "equipments": [], "id": "HgzYFXgvWKCEpdq3vYk67q", "liked": true, "likes_count": 1, "map": null, "map_visibility": "private", "max_alt": 104.44, "max_speed": 25.59, "min_alt": 19.0, "modification_date": "Wed, 04 Dec 2024 16:45:14 GMT", "moving": "1:47:04", "next_workout": null, "notes": null, "pauses": "1:23:51", "previous_workout": null, "records": [], "segments": [], "sport_id": 1, "suspended": false, "title": "Cycling (Sport) - 2016-04-26 16:42:27", "user": { "created_at": "Sun, 24 Nov 2024 16:52:14 GMT", "followers": 0, "following": 0, "nb_workouts": 1, "picture": false, "role": "user", "suspended_at": null, "username": "Sam" }, "weather_end": null, "weather_start": null, "with_analysis": false, "with_gpx": false, "workout_date": "Tue, 26 Apr 2016 14:42:27 GMT", "workout_visibility": "public" } ] }, "status": "success" }
- Paramètres:
workout_short_id (string) – identifiant court de la séance
- 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
you do not have permissions
you do not have permissions, your account is suspended
404 Not Found –
comment not found
- POST /api/workouts/(string: workout_short_id)/like/undo¶
Supprimer le « like » de la séance.
Scope :
workouts:write
Exemple de requête :
POST /api/workouts/HgzYFXgvWKCEpdq3vYk67q/like/undo HTTP/1.1 Content-Type: application/json
Exemple de réponse :
HTTP/1.1 200 OK Content-Type: application/json { "data": { "workouts": [ { "analysis_visibility": "private", "ascent": 231.208, "ave_speed": 13.12, "bounds": [], "creation_date": "Wed, 04 Dec 2024 09:18:26 GMT", "descent": 234.208, "description": null, "distance": 23.41, "duration": "3:32:27", "equipments": [], "id": "HgzYFXgvWKCEpdq3vYk67q", "liked": false, "likes_count": 0, "map": null, "map_visibility": "private", "max_alt": 104.44, "max_speed": 25.59, "min_alt": 19.0, "modification_date": "Wed, 04 Dec 2024 16:45:14 GMT", "moving": "1:47:04", "next_workout": null, "notes": null, "pauses": "1:23:51", "previous_workout": null, "records": [], "segments": [], "sport_id": 1, "suspended": false, "title": "Cycling (Sport) - 2016-04-26 16:42:27", "user": { "created_at": "Sun, 24 Nov 2024 16:52:14 GMT", "followers": 0, "following": 0, "nb_workouts": 1, "picture": false, "role": "user", "suspended_at": null, "username": "Sam" }, "weather_end": null, "weather_start": null, "with_analysis": false, "with_gpx": false, "workout_date": "Tue, 26 Apr 2016 14:42:27 GMT", "workout_visibility": "public" } ] }, "status": "success" }
- Paramètres:
workout_short_id (string) – identifiant court de la séance
- 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
you do not have permissions
you do not have permissions, your account is suspended
404 Not Found –
comment not found
- GET /api/workouts/(string: workout_short_id)/likes¶
Obtenir la liste des utilisateurs qui ont « liké » la séance
Exemple de requête :
GET /api/workouts/kjxavSTUrJvoAh2wvCeGEF/likes HTTP/1.1
Exemple de réponses :
succès :
HTTP/1.1 200 OK Content-Type: application/json { "data": { "likes": [ { "created_at": "Sun, 31 Dec 2017 09:00:00 GMT", "followers": 0, "following": 0, "nb_workouts": 1, "picture": false, "role": "user", "suspended_at": null, "username": "Sam" } ] }, "status": "success" }
séance non trouvé :
HTTP/1.1 404 NOT FOUND Content-Type: application/json { "data": { "likes": [] }, "status": "not found" }
- Paramètres:
workout_short_id (string) – identifiant court de la séance
- Paramètres de requête:
page (integer) – page si pagination (par défaut : 1)
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer” pour la séance avec une visibilité
private
etfollowers_only
- Codes d’état:
200 OK –
success
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
you do not have permissions
you do not have permissions, your account is suspended
404 Not Found –
workout not found
- POST /api/workouts/(string: workout_short_id)/suspension/appeal¶
Faire appel de la suspension de la séance.
Seul l’auteur de la séance peut fait appel de la suspension.
Scope :
workouts:write
Exemple de requête :
POST /api/workouts/2oRDfncv6vpRkfp3yrCYHt/suspension/appeal HTTP/1.1 Content-Type: application/json
Exemple de réponse :
HTTP/1.1 201 CREATED Content-Type: application/json { "status": "success" }
- Paramètres:
workout_short_id (string) – identifiant court de la séance
- En-têtes de requête:
Authorization – Jeton “OAuth 2.0 Bearer”
- Codes d’état:
201 Created – appel créé
no text provided
you can appeal only once
workout is not suspended
workout has no suspension
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
403 Forbidden –
you do not have permissions
404 Not Found –
workout not found
500 Internal Server Error –
error, please try again or contact the administrator