Skip to Content

Users

User accounts, profiles, session info and password management.

Get current user profile

GET/api/v1/users/profile
User session only — API tokens not accepted

Return the currently authenticated user, or an anonymous user object if no session is present.

Request

Get current user session

GET/api/v1/users/session
User session only — API tokens not accepted

Return the full session for the current user, including org memberships and roles. Cached in Redis for up to 10 minutes per user.

Returns

UserSession — Full session info for the current user.

userUserReadrequired
Show child attributes
usernamestringrequired
first_namestringrequired
last_namestringrequired
emailstringrequired
avatar_imagestring | null
biostring | null
languagestring | null
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null
idintegerrequired
user_uuidstringrequired
email_verifiedboolean
last_login_atstring | null
signup_methodstring | null
is_superadminboolean
rolesUserRoleWithOrg[]required
Show child attributes
roleRoleReadrequired
Show child attributes
namestringrequired
descriptionstring | null
rightsRights | object | null
Show child attributes
coursesPermissionsWithOwnrequired
usersPermissionrequired
usergroupsPermissionrequired
foldersPermission
mediaPermission
organizationsPermissionrequired
coursechaptersPermissionrequired
activitiesPermissionrequired
assignmentsPermission
rolesPermissionrequired
dashboardDashboardPermissionrequired
communitiesPermissionrequired
discussionsPermissionsWithOwnrequired
podcastsPermissionsWithOwnrequired
boardsPermissionsWithOwn
playgroundsPermissionsWithOwn
idinteger | null
org_idinteger | null
role_typeRoleTypeEnum
TYPE_ORGANIZATIONTYPE_ORGANIZATION_API_TOKENTYPE_GLOBAL
role_uuidstringrequired
creation_datestringrequired
update_datestringrequired
orgOrganizationReadrequired
Show child attributes
namestringrequired
descriptionstring | null
aboutstring | null
socialsSocials | null
linksLinks | null
scriptsScripts | null
logo_imagestring | null
thumbnail_imagestring | null
previewsPreviews | null
exploreboolean | null
labelstring | null
slugstringrequired
emailstringrequired
idintegerrequired
org_uuidstringrequired
configOrganizationConfig | object | null
Show child attributes
idinteger | null
org_idintegerrequired
configConfig
creation_datestring | null
update_datestring | null
is_demoboolean
creation_datestringrequired
update_datestringrequired
Request
Response
{
  "user": {
    "username": "string",
    "first_name": "Example name",
    "last_name": "Example name",
    "email": "ada@example.com",
    "avatar_image": "string",
    "bio": "string",
    "language": "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"
        },
        "is_demo": false,
        "creation_date": "string",
        "update_date": "string"
      }
    }
  ]
}

Check authorization for resource action

GET/api/v1/users/authorize/ressource/{ressource_uuid}/action/{action}
User session only — API tokens not accepted

Check whether the current user is authorized to perform the given action (create/read/update/delete) on a specific resource.

Path parameters

ressource_uuidstringrequired
actionenumrequired
createreadupdatedelete
Error responses
  • 404 Resource not found
  • 422 Validation Error — HTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Create user in organization

POST/api/v1/users/{org_id}
User session only — API tokens not accepted

Create a user and attach them to the given organization. Rejected if the organization is invite-only — use the invite-code endpoint instead.

Path parameters

org_idintegerrequired

Request bodyapplication/jsonrequired

usernamestringrequired
first_namestring
last_namestring
emailstringrequired
avatar_imagestring | null
biostring | null
languagestring | null
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null
passwordstringrequired
custom_fieldsCustom Fields | null

Returns

UserRead — User created and attached to the organization.

usernamestringrequired
first_namestringrequired
last_namestringrequired
emailstringrequired
avatar_imagestring | null
biostring | null
languagestring | null
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null
idintegerrequired
user_uuidstringrequired
email_verifiedboolean
last_login_atstring | null
signup_methodstring | null
is_superadminboolean
Error responses
  • 403 Organization is invite-only; an invite code is required
  • 422 Validation Error — HTTPValidationError
Request
Response
{
  "username": "string",
  "first_name": "Example name",
  "last_name": "Example name",
  "email": "ada@example.com",
  "avatar_image": "string",
  "bio": "string",
  "language": "string",
  "details": {},
  "profile": {},
  "extra_metadata": {},
  "id": 1,
  "user_uuid": "string",
  "email_verified": false,
  "last_login_at": "string",
  "signup_method": "string",
  "is_superadmin": false
}

Create user with invite code

POST/api/v1/users/{org_id}/invite/{invite_code}
User session only — API tokens not accepted

Create a user and attach them to the given organization using an invite code. Only valid when the organization is configured as invite-only.

Path parameters

invite_codestringrequired
org_idintegerrequired

Request bodyapplication/jsonrequired

usernamestringrequired
first_namestring
last_namestring
emailstringrequired
avatar_imagestring | null
biostring | null
languagestring | null
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null
passwordstringrequired
custom_fieldsCustom Fields | null

Returns

UserRead — User created and attached via invite code.

usernamestringrequired
first_namestringrequired
last_namestringrequired
emailstringrequired
avatar_imagestring | null
biostring | null
languagestring | null
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null
idintegerrequired
user_uuidstringrequired
email_verifiedboolean
last_login_atstring | null
signup_methodstring | null
is_superadminboolean
Error responses
  • 403 Organization does not require an invite code
  • 422 Validation Error — HTTPValidationError
Request
Response
{
  "username": "string",
  "first_name": "Example name",
  "last_name": "Example name",
  "email": "ada@example.com",
  "avatar_image": "string",
  "bio": "string",
  "language": "string",
  "details": {},
  "profile": {},
  "extra_metadata": {},
  "id": 1,
  "user_uuid": "string",
  "email_verified": false,
  "last_login_at": "string",
  "signup_method": "string",
  "is_superadmin": false
}

Create user without organization

POST/api/v1/users/
User session only — API tokens not accepted

Create a user account that is not attached to any organization at creation time.

Request bodyapplication/jsonrequired

usernamestringrequired
first_namestring
last_namestring
emailstringrequired
avatar_imagestring | null
biostring | null
languagestring | null
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null
passwordstringrequired
custom_fieldsCustom Fields | null

Returns

UserRead — User account created.

usernamestringrequired
first_namestringrequired
last_namestringrequired
emailstringrequired
avatar_imagestring | null
biostring | null
languagestring | null
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null
idintegerrequired
user_uuidstringrequired
email_verifiedboolean
last_login_atstring | null
signup_methodstring | null
is_superadminboolean
Error responses
  • 400 Password fails validation, email already registered, or username taken
  • 422 Validation Error — HTTPValidationError
Request
Response
{
  "username": "string",
  "first_name": "Example name",
  "last_name": "Example name",
  "email": "ada@example.com",
  "avatar_image": "string",
  "bio": "string",
  "language": "string",
  "details": {},
  "profile": {},
  "extra_metadata": {},
  "id": 1,
  "user_uuid": "string",
  "email_verified": false,
  "last_login_at": "string",
  "signup_method": "string",
  "is_superadmin": false
}

Get user by ID

GET/api/v1/users/id/{user_id}
User session only — API tokens not accepted

Get a user by numeric ID. Requires authentication to prevent user enumeration attacks. Sensitive fields (`is_superadmin`, `signup_method`) are excluded.

Path parameters

user_idintegerrequired

Returns

UserReadPublic — Public view of the user.

idintegerrequired
user_uuidstringrequired
usernamestringrequired
first_namestringrequired
last_namestringrequired
email_verifiedboolean
avatar_imagestring | null
biostring | null
detailsDetails | null
profileProfile | null
Error responses
  • 401 Authentication required
  • 422 Validation Error — HTTPValidationError
Request
Response
{
  "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": {}
}

Get user by UUID

GET/api/v1/users/uuid/{user_uuid}
User session only — API tokens not accepted

Get a user by UUID. Requires authentication to prevent user enumeration attacks. Sensitive fields (`is_superadmin`, `signup_method`) are excluded.

Path parameters

user_uuidstringrequired

Returns

UserReadPublic — Public view of the user.

idintegerrequired
user_uuidstringrequired
usernamestringrequired
first_namestringrequired
last_namestringrequired
email_verifiedboolean
avatar_imagestring | null
biostring | null
detailsDetails | null
profileProfile | null
Error responses
  • 401 Authentication required
  • 422 Validation Error — HTTPValidationError
Request
Response
{
  "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": {}
}

Get user by username

GET/api/v1/users/username/{username}
User session only — API tokens not accepted

Get a user by username. Requires authentication to prevent username enumeration attacks. Sensitive fields (`is_superadmin`, `signup_method`) are excluded.

Path parameters

usernamestringrequired

Returns

UserReadPublic — Public view of the user.

idintegerrequired
user_uuidstringrequired
usernamestringrequired
first_namestringrequired
last_namestringrequired
email_verifiedboolean
avatar_imagestring | null
biostring | null
detailsDetails | null
profileProfile | null
Error responses
  • 401 Authentication required
  • 422 Validation Error — HTTPValidationError
Request
Response
{
  "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": {}
}

Set my interface language

PATCH/api/v1/users/me/language
User session only — API tokens not accepted

Persist the caller's chosen interface language so it follows them across devices and browsers. An empty value clears the preference, which returns them to the organization's default.

Request bodyapplication/jsonrequired

languagestring

Returns

UserRead — Preference saved.

usernamestringrequired
first_namestringrequired
last_namestringrequired
emailstringrequired
avatar_imagestring | null
biostring | null
languagestring | null
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null
idintegerrequired
user_uuidstringrequired
email_verifiedboolean
last_login_atstring | null
signup_methodstring | null
is_superadminboolean
Error responses
  • 400 Unsupported language code
  • 401 Authentication required
  • 422 Validation Error — HTTPValidationError
Request
Response
{
  "username": "string",
  "first_name": "Example name",
  "last_name": "Example name",
  "email": "ada@example.com",
  "avatar_image": "string",
  "bio": "string",
  "language": "string",
  "details": {},
  "profile": {},
  "extra_metadata": {},
  "id": 1,
  "user_uuid": "string",
  "email_verified": false,
  "last_login_at": "string",
  "signup_method": "string",
  "is_superadmin": false
}

Update user

PUT/api/v1/users/{user_id}
User session only — API tokens not accepted

Update a user's profile fields. Invalidates the user's cached session so subsequent session reads reflect the change.

Path parameters

user_idintegerrequired

Request bodyapplication/jsonrequired

usernamestringrequired
first_namestring | null
last_namestring | null
emailstringrequired
avatar_imagestring | null
biostring | null
languagestring | null
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null

Returns

UserRead — User updated successfully.

usernamestringrequired
first_namestringrequired
last_namestringrequired
emailstringrequired
avatar_imagestring | null
biostring | null
languagestring | null
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null
idintegerrequired
user_uuidstringrequired
email_verifiedboolean
last_login_atstring | null
signup_methodstring | null
is_superadminboolean
Error responses
  • 400 Validation failed (duplicate email/username, invalid fields)
  • 403 Caller lacks permission to update this user
  • 404 User not found
  • 422 Validation Error — HTTPValidationError
Request
Response
{
  "username": "string",
  "first_name": "Example name",
  "last_name": "Example name",
  "email": "ada@example.com",
  "avatar_image": "string",
  "bio": "string",
  "language": "string",
  "details": {},
  "profile": {},
  "extra_metadata": {},
  "id": 1,
  "user_uuid": "string",
  "email_verified": false,
  "last_login_at": "string",
  "signup_method": "string",
  "is_superadmin": false
}

Update user avatar

PUT/api/v1/users/update_avatar/{user_id}
User session only — API tokens not accepted

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).

Path parameters

user_idintegerrequired

Request bodymultipart/form-data

avatar_filefile | null

Returns

UserRead — Avatar updated; cached session is invalidated so subsequent reads return the new image.

usernamestringrequired
first_namestringrequired
last_namestringrequired
emailstringrequired
avatar_imagestring | null
biostring | null
languagestring | null
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null
idintegerrequired
user_uuidstringrequired
email_verifiedboolean
last_login_atstring | null
signup_methodstring | null
is_superadminboolean
Error responses
  • 403 Attempted to update another user's avatar
  • 422 Validation Error — HTTPValidationError
Request
Response
{
  "username": "string",
  "first_name": "Example name",
  "last_name": "Example name",
  "email": "ada@example.com",
  "avatar_image": "string",
  "bio": "string",
  "language": "string",
  "details": {},
  "profile": {},
  "extra_metadata": {},
  "id": 1,
  "user_uuid": "string",
  "email_verified": false,
  "last_login_at": "string",
  "signup_method": "string",
  "is_superadmin": false
}

Change user password

PUT/api/v1/users/change_password/{user_id}
User session only — API tokens not accepted

Update a user's password. The authenticated user must either be the target user or otherwise authorized by the service layer.

Path parameters

user_idintegerrequired

Request bodyapplication/jsonrequired

old_passwordstringrequired
new_passwordstringrequired

Returns

UserRead — Password changed successfully.

usernamestringrequired
first_namestringrequired
last_namestringrequired
emailstringrequired
avatar_imagestring | null
biostring | null
languagestring | null
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null
idintegerrequired
user_uuidstringrequired
email_verifiedboolean
last_login_atstring | null
signup_methodstring | null
is_superadminboolean
Error responses
  • 400 New password fails validation
  • 401 Wrong current password
  • 403 Caller cannot change this user's password
  • 404 User not found
  • 422 Validation Error — HTTPValidationError
Request
Response
{
  "username": "string",
  "first_name": "Example name",
  "last_name": "Example name",
  "email": "ada@example.com",
  "avatar_image": "string",
  "bio": "string",
  "language": "string",
  "details": {},
  "profile": {},
  "extra_metadata": {},
  "id": 1,
  "user_uuid": "string",
  "email_verified": false,
  "last_login_at": "string",
  "signup_method": "string",
  "is_superadmin": false
}

Change password with reset code

POST/api/v1/users/reset_password/change_password
User session only — API tokens not accepted

Change 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.

Request bodyapplication/jsonrequired

emailstring | null
new_passwordstringrequired
org_idintegerrequired
reset_codestringrequired
Error responses
  • 422 Validation Error — HTTPValidationError
  • 429 Too many password reset attempts for this email
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Change password with reset code (legacy path)deprecated

POST/api/v1/users/reset_password/change_password/{email}
User session only — API tokens not accepted

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.

Path parameters

emailstringrequired

Request bodyapplication/jsonrequired

emailstring | null
new_passwordstringrequired
org_idintegerrequired
reset_codestringrequired
Error responses
  • 422 Validation Error — HTTPValidationError
  • 429 Too many password reset attempts for this email
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Send password reset code

POST/api/v1/users/reset_password/send_reset_code
User session only — API tokens not accepted

Dispatch 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.

Request bodyapplication/jsonrequired

emailstringrequired
org_idintegerrequired
Error responses
  • 400 Organization not found
  • 422 Validation Error — HTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Send password reset code (legacy path)deprecated

POST/api/v1/users/reset_password/send_reset_code/{email}
User session only — API tokens not accepted

Deprecated: use /reset_password/send_reset_code with email in the body.

Path parameters

emailstringrequired

Query parameters

org_idintegerrequired
Error responses
  • 400 Organization not found
  • 422 Validation Error — HTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Send platform password reset code

POST/api/v1/users/reset_password/platform/send_reset_code
User session only — API tokens not accepted

Dispatch a platform-level password reset code (email supplied in body so it does not appear in access logs). Subject to rate limiting per email.

Request bodyapplication/jsonrequired

emailstringrequired
Error responses
  • 422 Validation Error — HTTPValidationError
  • 429 Too many password reset attempts for this email
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Send platform password reset code (legacy path)deprecated

POST/api/v1/users/reset_password/platform/send_reset_code/{email}
User session only — API tokens not accepted

Deprecated: use /reset_password/platform/send_reset_code with email in the body.

Path parameters

emailstringrequired
Error responses
  • 422 Validation Error — HTTPValidationError
  • 429 Too many password reset attempts for this email
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Change platform password with reset code

POST/api/v1/users/reset_password/platform/change_password
User session only — API tokens not accepted

Change 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).

Request bodyapplication/jsonrequired

emailstring | null
new_passwordstringrequired
reset_codestringrequired
Error responses
  • 422 Validation Error — HTTPValidationError
  • 429 Too many password reset attempts for this email
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Change platform password with reset code (legacy path)deprecated

POST/api/v1/users/reset_password/platform/change_password/{email}
User session only — API tokens not accepted

Deprecated: use /reset_password/platform/change_password with email in the body.

Path parameters

emailstringrequired

Request bodyapplication/jsonrequired

emailstring | null
new_passwordstringrequired
reset_codestringrequired
Error responses
  • 422 Validation Error — HTTPValidationError
  • 429 Too many password reset attempts for this email
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Delete user

DELETE/api/v1/users/user_id/{user_id}
User session only — API tokens not accepted

Delete a user by ID. Invalidates the user's cached session so stale session data is not served.

Path parameters

user_idintegerrequired
Error responses
  • 403 Caller cannot delete this user
  • 404 User not found
  • 422 Validation Error — HTTPValidationError
Request
Response
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

List courses for user

GET/api/v1/users/{user_id}/courses
User session only — API tokens not accepted

List courses authored or contributed to by a user. Paginated; the maximum page size is 50 to prevent bulk data extraction.

Path parameters

user_idintegerrequired

Query parameters

pageinteger

Page number

limitinteger

Items per page (max 50)

Returns

CourseRead[] — Paginated list of the user's courses (max 50 per page).

namestringrequired
descriptionstring | null
aboutstring | null
learningsstring | null
tagsstring | null
target_languagestring | null
target_levelstring | null
target_level_scalestring | null
thumbnail_typeenum | null
imagevideoboth
thumbnail_imagestring | null
thumbnail_videostring | null
publicbooleanrequired
publishedboolean
open_to_contributorsbooleanrequired
idintegerrequired
org_idinteger
authorsAuthorWithRole[]required
Show child attributes
userUserReadrequired
Show child attributes
usernamestringrequired
first_namestringrequired
last_namestringrequired
emailstringrequired
avatar_imagestring | null
biostring | null
languagestring | null
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null
idintegerrequired
user_uuidstringrequired
email_verifiedboolean
last_login_atstring | null
signup_methodstring | null
is_superadminboolean
authorshipResourceAuthorshipEnumrequired
CREATORCONTRIBUTORMAINTAINERREPORTER
authorship_statusResourceAuthorshipStatusEnumrequired
ACTIVEPENDINGINACTIVE
creation_datestringrequired
update_datestringrequired
course_uuidstringrequired
creation_datestringrequired
update_datestringrequired
seoSeo | null
extra_metadataExtra Metadata | null
Error responses
  • 404 User not found
  • 422 Validation Error — HTTPValidationError
Request
Response
[
  {
    "name": "Example name",
    "description": "An example description",
    "about": "string",
    "learnings": "string",
    "tags": "string",
    "target_language": "string",
    "target_level": "string",
    "target_level_scale": "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",
          "language": "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": {}
  }
]

Get favorites for current user

GET/api/v1/users/me/favorites
User session only — API tokens not accepted

List all favorited resource IDs for the current user, optionally filtered by resource_type (e.g. course, media, podcast).

Query parameters

resource_typestring | null

Optional resource type to filter by, e.g. 'course'

Error responses
  • 401 Authentication required
  • 422 Validation Error — HTTPValidationError
Request
Response
[
  "string"
]

Toggle resource favorite

POST/api/v1/users/me/favorites/toggle
User session only — API tokens not accepted

Toggle favorite status for a given resource (course, media, podcast).

Request bodyapplication/jsonrequired

resource_typestringrequired
resource_idstringrequired

Returns

UserFavoriteToggleResponse — Favorite status toggled successfully.

is_favoritebooleanrequired
resource_typestringrequired
resource_idstringrequired
Error responses
  • 401 Authentication required
  • 422 Validation Error — HTTPValidationError
Request
Response
{
  "is_favorite": false,
  "resource_type": "string",
  "resource_id": "string"
}