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
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
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",
    "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"
      }
    }
  ]
}

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 ErrorHTTPValidationError
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
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null
passwordstringrequired

Returns

UserRead — User created and attached to the organization.

usernamestringrequired
first_namestringrequired
last_namestringrequired
emailstringrequired
avatar_imagestring | null
biostring | 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 ErrorHTTPValidationError
Request
Response
{
  "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
}

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
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null
passwordstringrequired

Returns

UserRead — User created and attached via invite code.

usernamestringrequired
first_namestringrequired
last_namestringrequired
emailstringrequired
avatar_imagestring | null
biostring | 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 ErrorHTTPValidationError
Request
Response
{
  "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
}

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
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null
passwordstringrequired

Returns

UserRead — User account created.

usernamestringrequired
first_namestringrequired
last_namestringrequired
emailstringrequired
avatar_imagestring | null
biostring | 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 ErrorHTTPValidationError
Request
Response
{
  "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
}

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 ErrorHTTPValidationError
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 ErrorHTTPValidationError
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 ErrorHTTPValidationError
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": {}
}

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
detailsDetails | null
profileProfile | null
extra_metadataExtra Metadata | null

Returns

UserRead — User updated successfully.

usernamestringrequired
first_namestringrequired
last_namestringrequired
emailstringrequired
avatar_imagestring | null
biostring | 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 ErrorHTTPValidationError
Request
Response
{
  "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
}

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
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 ErrorHTTPValidationError
Request
Response
{
  "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
}

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
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 ErrorHTTPValidationError
Request
Response
{
  "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
}

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 ErrorHTTPValidationError
  • 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 ErrorHTTPValidationError
  • 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 ErrorHTTPValidationError
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 ErrorHTTPValidationError
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 ErrorHTTPValidationError
  • 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 ErrorHTTPValidationError
  • 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 ErrorHTTPValidationError
  • 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 ErrorHTTPValidationError
  • 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 ErrorHTTPValidationError
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
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
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 ErrorHTTPValidationError
Request
Response
[
  {
    "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": {}
  }
]