Get current user profile
/api/v1/users/profileReturn the currently authenticated user, or an anonymous user object if no session is present.
User accounts, profiles, session info and password management.
/api/v1/users/profileReturn the currently authenticated user, or an anonymous user object if no session is present.
/api/v1/users/sessionReturn the full session for the current user, including org memberships and roles. Cached in Redis for up to 10 minutes per user.
UserSession — Full session info for the current user.
userUserReadrequiredusernamestringrequiredfirst_namestringrequiredlast_namestringrequiredemailstringrequiredavatar_imagestring | nullbiostring | nulldetailsDetails | nullprofileProfile | nullextra_metadataExtra Metadata | nullidintegerrequireduser_uuidstringrequiredemail_verifiedbooleanlast_login_atstring | nullsignup_methodstring | nullis_superadminbooleanrolesUserRoleWithOrg[]requiredroleRoleReadrequirednamestringrequireddescriptionstring | nullrightsRights | object | nullcoursesPermissionsWithOwnrequiredusersPermissionrequiredusergroupsPermissionrequiredfoldersPermissionmediaPermissionorganizationsPermissionrequiredcoursechaptersPermissionrequiredactivitiesPermissionrequiredassignmentsPermissionrolesPermissionrequireddashboardDashboardPermissionrequiredcommunitiesPermissionrequireddiscussionsPermissionsWithOwnrequiredpodcastsPermissionsWithOwnrequiredboardsPermissionsWithOwnplaygroundsPermissionsWithOwnidinteger | nullorg_idinteger | nullrole_typeRoleTypeEnumTYPE_ORGANIZATIONTYPE_ORGANIZATION_API_TOKENTYPE_GLOBALrole_uuidstringrequiredcreation_datestringrequiredupdate_datestringrequiredorgOrganizationReadrequirednamestringrequireddescriptionstring | nullaboutstring | nullsocialsSocials | nulllinksLinks | nullscriptsScripts | nulllogo_imagestring | nullthumbnail_imagestring | nullpreviewsPreviews | nullexploreboolean | nulllabelstring | nullslugstringrequiredemailstringrequiredidintegerrequiredorg_uuidstringrequiredconfigOrganizationConfig | object | nullidinteger | nullorg_idintegerrequiredconfigConfigcreation_datestring | nullupdate_datestring | nullcreation_datestringrequiredupdate_datestringrequired{
"user": {
"username": "string",
"first_name": "Example name",
"last_name": "Example name",
"email": "ada@example.com",
"avatar_image": "string",
"bio": "string",
"details": {},
"profile": {},
"extra_metadata": {},
"id": 1,
"user_uuid": "string",
"email_verified": false,
"last_login_at": "string",
"signup_method": "string",
"is_superadmin": false
},
"roles": [
{
"role": {
"name": "Example name",
"description": "An example description",
"rights": {
"courses": {
"action_create": null,
"action_read": null,
"action_read_own": null,
"action_update": null,
"action_update_own": null,
"action_delete": null,
"action_delete_own": null
},
"users": {
"action_create": null,
"action_read": null,
"action_update": null,
"action_delete": null
},
"usergroups": {
"action_create": null,
"action_read": null,
"action_update": null,
"action_delete": null
},
"folders": {
"action_create": null,
"action_read": null,
"action_update": null,
"action_delete": null
},
"media": {
"action_create": null,
"action_read": null,
"action_update": null,
"action_delete": null
},
"organizations": {
"action_create": null,
"action_read": null,
"action_update": null,
"action_delete": null
},
"coursechapters": {
"action_create": null,
"action_read": null,
"action_update": null,
"action_delete": null
},
"activities": {
"action_create": null,
"action_read": null,
"action_update": null,
"action_delete": null
},
"assignments": {
"action_create": null,
"action_read": null,
"action_update": null,
"action_delete": null
},
"roles": {
"action_create": null,
"action_read": null,
"action_update": null,
"action_delete": null
},
"dashboard": {
"action_access": null
},
"communities": {
"action_create": null,
"action_read": null,
"action_update": null,
"action_delete": null
},
"discussions": {
"action_create": null,
"action_read": null,
"action_read_own": null,
"action_update": null,
"action_update_own": null,
"action_delete": null,
"action_delete_own": null
},
"podcasts": {
"action_create": null,
"action_read": null,
"action_read_own": null,
"action_update": null,
"action_update_own": null,
"action_delete": null,
"action_delete_own": null
},
"boards": {
"action_create": null,
"action_read": null,
"action_read_own": null,
"action_update": null,
"action_update_own": null,
"action_delete": null,
"action_delete_own": null
},
"playgrounds": {
"action_create": null,
"action_read": null,
"action_read_own": null,
"action_update": null,
"action_update_own": null,
"action_delete": null,
"action_delete_own": null
}
},
"id": 1,
"org_id": 1,
"role_type": "TYPE_ORGANIZATION",
"role_uuid": "string",
"creation_date": "string",
"update_date": "string"
},
"org": {
"name": "Example name",
"description": "An example description",
"about": "string",
"socials": {},
"links": {},
"scripts": {},
"logo_image": "string",
"thumbnail_image": "string",
"previews": {},
"explore": false,
"label": "string",
"slug": "my-example-slug",
"email": "ada@example.com",
"id": 1,
"org_uuid": "string",
"config": {
"id": 1,
"org_id": 1,
"config": {},
"creation_date": "string",
"update_date": "string"
},
"creation_date": "string",
"update_date": "string"
}
}
]
}/api/v1/users/authorize/ressource/{ressource_uuid}/action/{action}Check whether the current user is authorized to perform the given action (create/read/update/delete) on a specific resource.
ressource_uuidstringrequiredactionenumrequiredcreatereadupdatedelete404 Resource not found422 Validation Error — HTTPValidationError{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}/api/v1/users/{org_id}Create a user and attach them to the given organization. Rejected if the organization is invite-only — use the invite-code endpoint instead.
org_idintegerrequiredusernamestringrequiredfirst_namestringlast_namestringemailstringrequiredavatar_imagestring | nullbiostring | nulldetailsDetails | nullprofileProfile | nullextra_metadataExtra Metadata | nullpasswordstringrequiredUserRead — User created and attached to the organization.
usernamestringrequiredfirst_namestringrequiredlast_namestringrequiredemailstringrequiredavatar_imagestring | nullbiostring | nulldetailsDetails | nullprofileProfile | nullextra_metadataExtra Metadata | nullidintegerrequireduser_uuidstringrequiredemail_verifiedbooleanlast_login_atstring | nullsignup_methodstring | nullis_superadminboolean403 Organization is invite-only; an invite code is required422 Validation Error — HTTPValidationError{
"username": "string",
"first_name": "Example name",
"last_name": "Example name",
"email": "ada@example.com",
"avatar_image": "string",
"bio": "string",
"details": {},
"profile": {},
"extra_metadata": {},
"id": 1,
"user_uuid": "string",
"email_verified": false,
"last_login_at": "string",
"signup_method": "string",
"is_superadmin": false
}/api/v1/users/{org_id}/invite/{invite_code}Create a user and attach them to the given organization using an invite code. Only valid when the organization is configured as invite-only.
invite_codestringrequiredorg_idintegerrequiredusernamestringrequiredfirst_namestringlast_namestringemailstringrequiredavatar_imagestring | nullbiostring | nulldetailsDetails | nullprofileProfile | nullextra_metadataExtra Metadata | nullpasswordstringrequiredUserRead — User created and attached via invite code.
usernamestringrequiredfirst_namestringrequiredlast_namestringrequiredemailstringrequiredavatar_imagestring | nullbiostring | nulldetailsDetails | nullprofileProfile | nullextra_metadataExtra Metadata | nullidintegerrequireduser_uuidstringrequiredemail_verifiedbooleanlast_login_atstring | nullsignup_methodstring | nullis_superadminboolean403 Organization does not require an invite code422 Validation Error — HTTPValidationError{
"username": "string",
"first_name": "Example name",
"last_name": "Example name",
"email": "ada@example.com",
"avatar_image": "string",
"bio": "string",
"details": {},
"profile": {},
"extra_metadata": {},
"id": 1,
"user_uuid": "string",
"email_verified": false,
"last_login_at": "string",
"signup_method": "string",
"is_superadmin": false
}/api/v1/users/Create a user account that is not attached to any organization at creation time.
usernamestringrequiredfirst_namestringlast_namestringemailstringrequiredavatar_imagestring | nullbiostring | nulldetailsDetails | nullprofileProfile | nullextra_metadataExtra Metadata | nullpasswordstringrequiredUserRead — User account created.
usernamestringrequiredfirst_namestringrequiredlast_namestringrequiredemailstringrequiredavatar_imagestring | nullbiostring | nulldetailsDetails | nullprofileProfile | nullextra_metadataExtra Metadata | nullidintegerrequireduser_uuidstringrequiredemail_verifiedbooleanlast_login_atstring | nullsignup_methodstring | nullis_superadminboolean400 Password fails validation, email already registered, or username taken422 Validation Error — HTTPValidationError{
"username": "string",
"first_name": "Example name",
"last_name": "Example name",
"email": "ada@example.com",
"avatar_image": "string",
"bio": "string",
"details": {},
"profile": {},
"extra_metadata": {},
"id": 1,
"user_uuid": "string",
"email_verified": false,
"last_login_at": "string",
"signup_method": "string",
"is_superadmin": false
}/api/v1/users/id/{user_id}Get a user by numeric ID. Requires authentication to prevent user enumeration attacks. Sensitive fields (`is_superadmin`, `signup_method`) are excluded.
user_idintegerrequiredUserReadPublic — Public view of the user.
idintegerrequireduser_uuidstringrequiredusernamestringrequiredfirst_namestringrequiredlast_namestringrequiredemail_verifiedbooleanavatar_imagestring | nullbiostring | nulldetailsDetails | nullprofileProfile | null401 Authentication required422 Validation Error — HTTPValidationError{
"id": 1,
"user_uuid": "string",
"username": "string",
"first_name": "Example name",
"last_name": "Example name",
"email_verified": false,
"avatar_image": "string",
"bio": "string",
"details": {},
"profile": {}
}/api/v1/users/uuid/{user_uuid}Get a user by UUID. Requires authentication to prevent user enumeration attacks. Sensitive fields (`is_superadmin`, `signup_method`) are excluded.
user_uuidstringrequiredUserReadPublic — Public view of the user.
idintegerrequireduser_uuidstringrequiredusernamestringrequiredfirst_namestringrequiredlast_namestringrequiredemail_verifiedbooleanavatar_imagestring | nullbiostring | nulldetailsDetails | nullprofileProfile | null401 Authentication required422 Validation Error — HTTPValidationError{
"id": 1,
"user_uuid": "string",
"username": "string",
"first_name": "Example name",
"last_name": "Example name",
"email_verified": false,
"avatar_image": "string",
"bio": "string",
"details": {},
"profile": {}
}/api/v1/users/username/{username}Get a user by username. Requires authentication to prevent username enumeration attacks. Sensitive fields (`is_superadmin`, `signup_method`) are excluded.
usernamestringrequiredUserReadPublic — Public view of the user.
idintegerrequireduser_uuidstringrequiredusernamestringrequiredfirst_namestringrequiredlast_namestringrequiredemail_verifiedbooleanavatar_imagestring | nullbiostring | nulldetailsDetails | nullprofileProfile | null401 Authentication required422 Validation Error — HTTPValidationError{
"id": 1,
"user_uuid": "string",
"username": "string",
"first_name": "Example name",
"last_name": "Example name",
"email_verified": false,
"avatar_image": "string",
"bio": "string",
"details": {},
"profile": {}
}/api/v1/users/{user_id}Update a user's profile fields. Invalidates the user's cached session so subsequent session reads reflect the change.
user_idintegerrequiredusernamestringrequiredfirst_namestring | nulllast_namestring | nullemailstringrequiredavatar_imagestring | nullbiostring | nulldetailsDetails | nullprofileProfile | nullextra_metadataExtra Metadata | nullUserRead — User updated successfully.
usernamestringrequiredfirst_namestringrequiredlast_namestringrequiredemailstringrequiredavatar_imagestring | nullbiostring | nulldetailsDetails | nullprofileProfile | nullextra_metadataExtra Metadata | nullidintegerrequireduser_uuidstringrequiredemail_verifiedbooleanlast_login_atstring | nullsignup_methodstring | nullis_superadminboolean400 Validation failed (duplicate email/username, invalid fields)403 Caller lacks permission to update this user404 User not found422 Validation Error — HTTPValidationError{
"username": "string",
"first_name": "Example name",
"last_name": "Example name",
"email": "ada@example.com",
"avatar_image": "string",
"bio": "string",
"details": {},
"profile": {},
"extra_metadata": {},
"id": 1,
"user_uuid": "string",
"email_verified": false,
"last_login_at": "string",
"signup_method": "string",
"is_superadmin": false
}/api/v1/users/update_avatar/{user_id}Upload a new avatar image for a user. Users can only update their own avatar (the `user_id` in the URL must match the authenticated user's ID).
user_idintegerrequiredavatar_filefile | nullUserRead — Avatar updated; cached session is invalidated so subsequent reads return the new image.
usernamestringrequiredfirst_namestringrequiredlast_namestringrequiredemailstringrequiredavatar_imagestring | nullbiostring | nulldetailsDetails | nullprofileProfile | nullextra_metadataExtra Metadata | nullidintegerrequireduser_uuidstringrequiredemail_verifiedbooleanlast_login_atstring | nullsignup_methodstring | nullis_superadminboolean403 Attempted to update another user's avatar422 Validation Error — HTTPValidationError{
"username": "string",
"first_name": "Example name",
"last_name": "Example name",
"email": "ada@example.com",
"avatar_image": "string",
"bio": "string",
"details": {},
"profile": {},
"extra_metadata": {},
"id": 1,
"user_uuid": "string",
"email_verified": false,
"last_login_at": "string",
"signup_method": "string",
"is_superadmin": false
}/api/v1/users/change_password/{user_id}Update a user's password. The authenticated user must either be the target user or otherwise authorized by the service layer.
user_idintegerrequiredold_passwordstringrequirednew_passwordstringrequiredUserRead — Password changed successfully.
usernamestringrequiredfirst_namestringrequiredlast_namestringrequiredemailstringrequiredavatar_imagestring | nullbiostring | nulldetailsDetails | nullprofileProfile | nullextra_metadataExtra Metadata | nullidintegerrequireduser_uuidstringrequiredemail_verifiedbooleanlast_login_atstring | nullsignup_methodstring | nullis_superadminboolean400 New password fails validation401 Wrong current password403 Caller cannot change this user's password404 User not found422 Validation Error — HTTPValidationError{
"username": "string",
"first_name": "Example name",
"last_name": "Example name",
"email": "ada@example.com",
"avatar_image": "string",
"bio": "string",
"details": {},
"profile": {},
"extra_metadata": {},
"id": 1,
"user_uuid": "string",
"email_verified": false,
"last_login_at": "string",
"signup_method": "string",
"is_superadmin": false
}/api/v1/users/reset_password/change_passwordChange a user's password using a reset code. Email, reset code and new password are all supplied in the request body so they never appear in server logs or browser history.
emailstring | nullnew_passwordstringrequiredorg_idintegerrequiredreset_codestringrequired422 Validation Error — HTTPValidationError429 Too many password reset attempts for this email{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}/api/v1/users/reset_password/change_password/{email}Deprecated: use /reset_password/change_password with email in the body. This path variant leaks the email into server access logs and exists only for backward compatibility.
emailstringrequiredemailstring | nullnew_passwordstringrequiredorg_idintegerrequiredreset_codestringrequired422 Validation Error — HTTPValidationError429 Too many password reset attempts for this email{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}/api/v1/users/reset_password/send_reset_codeDispatch an org-scoped password reset code to the given email address (email supplied in body so it never appears in access logs). Returns a generic response regardless of whether the email exists to avoid user enumeration.
emailstringrequiredorg_idintegerrequired400 Organization not found422 Validation Error — HTTPValidationError{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}/api/v1/users/reset_password/send_reset_code/{email}Deprecated: use /reset_password/send_reset_code with email in the body.
emailstringrequiredorg_idintegerrequired400 Organization not found422 Validation Error — HTTPValidationError{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}/api/v1/users/reset_password/platform/send_reset_codeDispatch a platform-level password reset code (email supplied in body so it does not appear in access logs). Subject to rate limiting per email.
emailstringrequired422 Validation Error — HTTPValidationError429 Too many password reset attempts for this email{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}/api/v1/users/reset_password/platform/send_reset_code/{email}Deprecated: use /reset_password/platform/send_reset_code with email in the body.
emailstringrequired422 Validation Error — HTTPValidationError429 Too many password reset attempts for this email{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}/api/v1/users/reset_password/platform/change_passwordChange a user's password at the platform level (email + reset code + new password all supplied in the body so none of them appear in server access logs).
emailstring | nullnew_passwordstringrequiredreset_codestringrequired422 Validation Error — HTTPValidationError429 Too many password reset attempts for this email{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}/api/v1/users/reset_password/platform/change_password/{email}Deprecated: use /reset_password/platform/change_password with email in the body.
emailstringrequiredemailstring | nullnew_passwordstringrequiredreset_codestringrequired422 Validation Error — HTTPValidationError429 Too many password reset attempts for this email{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}/api/v1/users/user_id/{user_id}Delete a user by ID. Invalidates the user's cached session so stale session data is not served.
user_idintegerrequired403 Caller cannot delete this user404 User not found422 Validation Error — HTTPValidationError{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}/api/v1/users/{user_id}/coursesList courses authored or contributed to by a user. Paginated; the maximum page size is 50 to prevent bulk data extraction.
user_idintegerrequiredpageintegerPage number
limitintegerItems per page (max 50)
CourseRead[] — Paginated list of the user's courses (max 50 per page).
namestringrequireddescriptionstring | nullaboutstring | nulllearningsstring | nulltagsstring | nullthumbnail_typeenum | nullimagevideoboththumbnail_imagestring | nullthumbnail_videostring | nullpublicbooleanrequiredpublishedbooleanopen_to_contributorsbooleanrequiredidintegerrequiredorg_idintegerauthorsAuthorWithRole[]requireduserUserReadrequiredusernamestringrequiredfirst_namestringrequiredlast_namestringrequiredemailstringrequiredavatar_imagestring | nullbiostring | nulldetailsDetails | nullprofileProfile | nullextra_metadataExtra Metadata | nullidintegerrequireduser_uuidstringrequiredemail_verifiedbooleanlast_login_atstring | nullsignup_methodstring | nullis_superadminbooleanauthorshipResourceAuthorshipEnumrequiredCREATORCONTRIBUTORMAINTAINERREPORTERauthorship_statusResourceAuthorshipStatusEnumrequiredACTIVEPENDINGINACTIVEcreation_datestringrequiredupdate_datestringrequiredcourse_uuidstringrequiredcreation_datestringrequiredupdate_datestringrequiredseoSeo | nullextra_metadataExtra Metadata | null404 User not found422 Validation Error — HTTPValidationError[
{
"name": "Example name",
"description": "An example description",
"about": "string",
"learnings": "string",
"tags": "string",
"thumbnail_type": "image",
"thumbnail_image": "string",
"thumbnail_video": "string",
"public": false,
"published": false,
"open_to_contributors": false,
"id": 1,
"org_id": 1,
"authors": [
{
"user": {
"username": "string",
"first_name": "Example name",
"last_name": "Example name",
"email": "ada@example.com",
"avatar_image": "string",
"bio": "string",
"details": {},
"profile": {},
"extra_metadata": {},
"id": 1,
"user_uuid": "string",
"email_verified": false,
"last_login_at": "string",
"signup_method": "string",
"is_superadmin": false
},
"authorship": "CREATOR",
"authorship_status": "ACTIVE",
"creation_date": "string",
"update_date": "string"
}
],
"course_uuid": "string",
"creation_date": "string",
"update_date": "string",
"seo": {},
"extra_metadata": {}
}
]