All user endpoints require a valid JWT Bearer token in theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/jaimegayo/KERNDOCUMENTATION/llms.txt
Use this file to discover all available pages before exploring further.
Authorization header. See Authentication for how to obtain a token.
GET /users/me
Returns the full profile of the currently authenticated user. Auth required: YesResponse — 200
Auto-incremented user ID.
The user’s display name.
Email address on file.
Full name.
null if not set.Phone number.
null if not set.URL of the avatar image.
null if not set.Account role. Default:
"user".Short biography.
null if not set.Whether the onboarding questionnaire has been completed.
The routine type selected during the quiz:
"Full Body", "PPL (Push Pull Leg)", or "Torso-Pierna". null until the quiz is completed.ISO 8601 account creation timestamp.
Whether the account is disabled.
Example
POST /users/complete-quiz
Marks the onboarding questionnaire as complete, sets the user’s assigned routine type, and automatically generates an initial routine with exercises selected from the gym catalog. Auth required: YesRequest body
The training plan chosen by the user. Must be one of:
"Full Body""PPL (Push Pull Leg)""Torso-Pierna"
Response — 200
Returns the updatedUserData object with has_completed_quiz set to true and assigned_routine populated.
Example
PUT /users/avatar
Updates the avatar image URL for the authenticated user. Auth required: YesRequest body
Public URL of the new avatar image. Typically a Cloudinary URL obtained after uploading from the Android client.
Response — 200
Returns the updatedUserData object with the new avatar_url.
Example
PUT /users/update_name
Updates the username of the authenticated user. Because the username is embedded in the JWT payload (sub claim), this endpoint issues a new token and returns a full LoginResponse.
Auth required: Yes
Request body
The new username. Must not already be in use by another account.
Response — 200
Returns a fullLoginResponse (same shape as login/register) with a fresh JWT token and updated user data.
Errors
| Status | detail | Cause |
|---|---|---|
400 | "El nombre de usuario ya está en uso" | Another account already uses this username |
Example
GET /users/stats
Returns aggregate training statistics for the authenticated user, calculated from all saved workout sessions. Auth required: YesResponse — 200
Total number of completed workout sessions recorded.
Sum of all steps recorded across every workout session.
Sorted list of unique calendar dates (
"YYYY-MM-DD") on which at least one workout was completed.Example
GET /users/my-routines
Returns all workout routines belonging to the authenticated user, each with its full list of exercises and their stored series data. Auth required: YesResponse — 200
Returns an array of routine objects.Routine ID.
Routine display name.
ISO 8601 creation timestamp.
Example
GET /users/my-history
Returns all completed workout sessions for the authenticated user, ordered from most recent to oldest. Auth required: YesResponse — 200
Returns an array ofWorkoutSession objects directly from the database.
Session ID.
The user this session belongs to.
Name of the routine that was performed.
Total session duration in seconds.
Sum of (kilos × reps) for all sets completed in the session.
Steps recorded by the Android StepCounterService during the session.
ISO 8601 timestamp when the session was saved.
Full snapshot of all exercises and series performed. Same shape as the
POST /workouts/finish request body data_json.