Skip to content

Users API

The Users API allows you to manage user accounts, permissions, and access control on the Lumea platform.

Overview

The Users API provides comprehensive functionality for managing users within your organization on the Lumea platform. It allows administrators to create, update, and delete user accounts, as well as manage user roles and permissions. Regular users can also access their own profile information and make permitted updates.

Note: Each customer receives a custom deployment with a unique API endpoint. The endpoints described in this documentation should be prefixed with your organization's specific API URL provided during onboarding.

Data Models

User Object

FieldTypeDescription
idstringUnique identifier for the user
emailstringUser's email address
namestringUser's full name
rolestringUser's role (e.g., "user", "admin")

Endpoints

Create User

Creates a new user in the system. Requires admin privileges.

URL: /users

Method: POST

Auth required: Yes (Admin only)

Request Body:

json
{
  "email": "user@example.com",
  "name": "John Doe",
  "role": "user"
}
FieldTypeRequiredDescription
emailstringYesValid email address
namestringYesUser's full name
rolestringYesUser role (e.g., "user", "admin")

Success Response:

  • Code: 200 OK
  • Content:
json
{
  "id": "user123",
  "email": "user@example.com",
  "name": "John Doe",
  "role": "user"
}

Error Responses:

  • Code: 400 Bad Request

    • Content: {"detail": "Email already exists"}
  • Code: 403 Forbidden

    • Content: {"detail": "Unauthorized"}

List Users

Retrieves a list of all users in the system. Requires admin privileges.

URL: /users

Method: GET

Auth required: Yes (Admin only)

Success Response:

  • Code: 200 OK
  • Content:
json
[
  {
    "id": "user123",
    "email": "user@example.com",
    "name": "John Doe",
    "role": "user"
  },
  {
    "id": "user456",
    "email": "admin@example.com",
    "name": "Jane Smith",
    "role": "admin"
  }
]

Error Response:

  • Code: 403 Forbidden
    • Content: {"detail": "Unauthorized"}

Get Current User

Retrieves information about the currently authenticated user.

URL: /users/me

Method: GET

Auth required: Yes

Success Response:

  • Code: 200 OK
  • Content:
json
{
  "id": "user123",
  "email": "user@example.com",
  "name": "John Doe",
  "role": "user"
}

Error Response:

  • Code: 400 Bad Request
    • Content: {"detail": "Invalid user"}

Get User by ID

Retrieves information about a specific user by their ID.

URL: /users/{user_id}

Method: GET

Auth required: Yes

URL Parameters:

ParameterDescription
user_idThe unique ID of the user

Success Response:

  • Code: 200 OK
  • Content:
json
{
  "id": "user123",
  "email": "user@example.com",
  "name": "John Doe",
  "role": "user"
}

Error Response:

  • Code: 400 Bad Request
    • Content: {"detail": "User not found"}

Update Current User

Updates information for the currently authenticated user.

URL: /users/me

Method: PUT

Auth required: Yes

Request Body:

json
{
  "name": "John Smith"
}
FieldTypeRequiredDescription
namestringNoUser's full name

Notes:

  • Regular users can only update their name
  • All fields are optional. Only specified fields will be updated.

Success Response:

  • Code: 200 OK
  • Content:
json
{
  "id": "user123",
  "email": "user@example.com",
  "name": "John Smith",
  "role": "user"
}

Error Responses:

  • Code: 400 Bad Request
    • Content: {"detail": "Invalid input"}

Update User by ID

Updates information for a specific user. Requires admin privileges.

URL: /users/{user_id}

Method: PUT

Auth required: Yes (Admin only)

URL Parameters:

ParameterDescription
user_idThe unique ID of the user

Request Body:

json
{
  "name": "John Smith",
  "email": "john.smith@example.com",
  "role": "admin"
}
FieldTypeRequiredDescription
emailstringNoValid email address
namestringNoUser's full name
rolestringNoUser role

Notes:

  • All fields are optional. Only specified fields will be updated.

Success Response:

  • Code: 200 OK
  • Content:
json
{
  "id": "user123",
  "email": "john.smith@example.com",
  "name": "John Smith",
  "role": "admin"
}

Error Responses:

  • Code: 400 Bad Request

    • Content: {"detail": "User not found"}
    • Content: {"detail": "Email already exists"}
  • Code: 403 Forbidden

    • Content: {"detail": "Unauthorized"}

Delete User

Deletes a specific user from the system. Requires admin privileges.

URL: /users/{user_id}

Method: DELETE

Auth required: Yes (Admin only)

URL Parameters:

ParameterDescription
user_idThe unique ID of the user

Success Response:

  • Code: 200 OK
  • Content:
json
{
  "message": "User deleted successfully"
}

Error Responses:

  • Code: 400 Bad Request

    • Content: {"detail": "User not found"}
  • Code: 403 Forbidden

    • Content: {"detail": "Unauthorized"}

Authentication Endpoints

Request Login Code

Requests a login code to be sent to the specified email address.

URL: /users/request-login-code

Method: POST

Auth required: No

Request Body:

json
{
  "email": "user@example.com"
}
FieldTypeRequiredDescription
emailstringYesValid email address

Notes:

  • For security reasons, the API returns the same response whether the email exists or not
  • Login codes expire after 10 minutes
  • Each request generates a new 6-digit login code

Success Response:

  • Code: 200 OK
  • Content:
json
{
  "message": "If your email exists in our system, a login code has been sent"
}

Error Response:

  • Code: 500 Internal Server Error
    • Content: {"detail": "Failed to send login code email"}

Verify Login Code

Verifies a login code and returns an access token if valid.

URL: /users/verify-login-code

Method: POST

Auth required: No

Request Body:

json
{
  "email": "user@example.com",
  "code": "123456"
}
FieldTypeRequiredDescription
emailstringYesValid email address
codestringYes6-digit login code

Success Response:

  • Code: 200 OK
  • Content:
json
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "id": "user123",
    "email": "user@example.com",
    "name": "John Doe",
    "role": "user"
  }
}

Error Responses:

  • Code: 400 Bad Request
    • Content: {"detail": "Invalid email or login code"}
    • Content: {"detail": "Login code expired"}