Authentication¶
-
POST
/api/auth/register
¶ register a user
Example request:
POST /api/auth/register HTTP/1.1 Content-Type: application/json
Example responses:
successful registration
HTTP/1.1 201 CREATED Content-Type: application/json { "auth_token": "JSON Web Token", "message": "successfully registered", "status": "success" }
error on registration
HTTP/1.1 400 BAD REQUEST Content-Type: application/json { "message": "Errors: email: valid email must be provided\n", "status": "error" }
- Request JSON Object
username (string) – user name (3 to 12 characters required)
email (string) – user email
password (string) – password (8 characters required)
password_conf (string) – password confirmation
- Status Codes
201 Created – successfully registered
invalid payload
sorry, that user already exists
- Errors:
username: 3 to 12 characters required
email: valid email must be provided
password: password and password confirmation don’t match
password: 8 characters required
403 Forbidden – error, registration is disabled
500 Internal Server Error – error, please try again or contact the administrator
-
POST
/api/auth/login
¶ user login
Example request:
POST /api/auth/login HTTP/1.1 Content-Type: application/json
Example responses:
successful login
HTTP/1.1 200 OK Content-Type: application/json { "auth_token": "JSON Web Token", "message": "successfully logged in", "status": "success" }
error on login
HTTP/1.1 404 NOT FOUND Content-Type: application/json { "message": "invalid credentials", "status": "error" }
- Request JSON Object
email (string) – user email
password_conf (string) – password confirmation
- Status Codes
200 OK – successfully logged in
400 Bad Request – invalid payload
401 Unauthorized – invalid credentials
500 Internal Server Error – error, please try again or contact the administrator
-
GET
/api/auth/logout
¶ user logout
Example request:
GET /api/auth/logout HTTP/1.1 Content-Type: application/json
Example responses:
successful logout
HTTP/1.1 200 OK Content-Type: application/json { "message": "successfully logged out", "status": "success" }
error on login
HTTP/1.1 401 UNAUTHORIZED Content-Type: application/json { "message": "provide a valid auth token", "status": "error" }
- Request Headers
Authorization – OAuth 2.0 Bearer Token
- Status Codes
200 OK – successfully logged out
401 Unauthorized – provide a valid auth token
-
GET
/api/auth/profile
¶ get authenticated user info
Example request:
GET /api/auth/profile HTTP/1.1 Content-Type: application/json
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "data": { "admin": false, "bio": null, "birth_date": null, "created_at": "Sun, 14 Jul 2019 14:09:58 GMT", "email": "sam@example.com", "first_name": null, "language": "en", "last_name": null, "location": null, "nb_sports": 3, "nb_workouts": 6, "picture": false, "records": [ { "id": 9, "record_type": "AS", "sport_id": 1, "user": "sam", "value": 18, "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT", "workout_id": "hvYBqYBRa7wwXpaStWR4V2" }, { "id": 10, "record_type": "FD", "sport_id": 1, "user": "sam", "value": 18, "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT", "workout_id": "hvYBqYBRa7wwXpaStWR4V2" }, { "id": 11, "record_type": "LD", "sport_id": 1, "user": "sam", "value": "1:01:00", "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT", "workout_id": "hvYBqYBRa7wwXpaStWR4V2" }, { "id": 12, "record_type": "MS", "sport_id": 1, "user": "sam", "value": 18, "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT", "workout_id": "hvYBqYBRa7wwXpaStWR4V2" } ], "sports_list": [ 1, 4, 6 ], "timezone": "Europe/Paris", "total_distance": 67.895, "total_duration": "6:50:27", "username": "sam", "weekm": false }, "status": "success" }
- Request Headers
Authorization – OAuth 2.0 Bearer Token
- Status Codes
200 OK – success.
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
-
POST
/api/auth/profile/edit
¶ edit authenticated user
Example request:
POST /api/auth/profile/edit HTTP/1.1 Content-Type: application/json
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "data": { "admin": false, "bio": null, "birth_date": null, "created_at": "Sun, 14 Jul 2019 14:09:58 GMT", "email": "sam@example.com", "first_name": null, "language": "en", "last_name": null, "location": null, "nb_sports": 3, "nb_workouts": 6, "picture": false, "records": [ { "id": 9, "record_type": "AS", "sport_id": 1, "user": "sam", "value": 18, "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT", "workout_id": "hvYBqYBRa7wwXpaStWR4V2" }, { "id": 10, "record_type": "FD", "sport_id": 1, "user": "sam", "value": 18, "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT", "workout_id": "hvYBqYBRa7wwXpaStWR4V2" }, { "id": 11, "record_type": "LD", "sport_id": 1, "user": "sam", "value": "1:01:00", "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT", "workout_id": "hvYBqYBRa7wwXpaStWR4V2" }, { "id": 12, "record_type": "MS", "sport_id": 1, "user": "sam", "value": 18, "workout_date": "Sun, 07 Jul 2019 08:00:00 GMT", "workout_id": "hvYBqYBRa7wwXpaStWR4V2" } ], "sports_list": [ 1, 4, 6 ], "timezone": "Europe/Paris", "total_distance": 67.895, "total_duration": "6:50:27", "username": "sam" "weekm": true, }, "message": "user profile updated", "status": "success" }
- Request JSON Object
first_name (string) – user first name
last_name (string) – user last name
location (string) – user location
bio (string) – user biography
birth_date (string) – user birth date (format:
%Y-%m-%d
)password (string) – user password
password_conf (string) – user password confirmation
- Request Headers
Authorization – OAuth 2.0 Bearer Token
- Status Codes
200 OK – user profile updated
invalid payload
password: password and password confirmation don’t match
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
500 Internal Server Error – error, please try again or contact the administrator
-
POST
/api/auth/picture
¶ update authenticated user picture
Example request:
POST /api/auth/picture HTTP/1.1 Content-Type: multipart/form-data
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "message": "user picture updated", "status": "success" }
- Form Parameters
file – image file (allowed extensions: .jpg, .png, .gif)
- Request Headers
Authorization – OAuth 2.0 Bearer Token
- Status Codes
200 OK – user picture updated
invalid payload
no file part
no selected file
file extension not allowed
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
413 Request Entity Too Large – error during picture update: file size exceeds 1.0MB
500 Internal Server Error – error during picture update
-
DELETE
/api/auth/picture
¶ delete authenticated user picture
Example request:
DELETE /api/auth/picture HTTP/1.1 Content-Type: application/json
Example response:
HTTP/1.1 204 NO CONTENT Content-Type: application/json
- Request Headers
Authorization – OAuth 2.0 Bearer Token
- Status Codes
204 No Content – picture deleted
provide a valid auth token
signature expired, please log in again
invalid token, please log in again
500 Internal Server Error – error during picture deletion
-
POST
/api/auth/password/reset-request
¶ handle password reset request
Example request:
POST /api/auth/password/reset-request HTTP/1.1 Content-Type: application/json
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "message": "password reset request processed", "status": "success" }
- Request JSON Object
email (string) – user email
- Status Codes
200 OK – password reset request processed
400 Bad Request – invalid payload
-
POST
/api/auth/password/update
¶ update user password
Example request:
POST /api/auth/password/update HTTP/1.1 Content-Type: application/json
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "message": "password updated", "status": "success" }
- Request JSON Object
password (string) – password (8 characters required)
password_conf (string) – password confirmation
token (string) – password reset token
- Status Codes
200 OK – password updated
400 Bad Request – invalid payload
401 Unauthorized – invalid token, please request a new token
500 Internal Server Error – error, please try again or contact the administrator