Users

Complete user lifecycle management including creation, updates, deletion, and invitation handling.

List Users

GET /v1/users

List users on the current account.

Query Parameters:

  • pageSize (integer, optional): How many elements per page (1-100, default: 50)
  • pageNumber (integer, optional): Current page number (default: 1)
  • sortField (string, optional): Field to sort by (id, firstName, lastName, email, createdAt, lastLoginAt, role, default: createdAt)
  • sortDirection (string, optional): Sort direction (ASC, DESC, default: ASC)
  • search (string, optional): Search keyword
  • invitationStatus (string, optional): Filter by invitation status (any, invite, accepted, default: any)

Response (200 OK):

{
    "content": [
        {
            "id": "56d4b940-ae51-4515-b207-f63328a66b32",
            "fsidUserId": "56d4b940-ae51-4515-b207-f63328a66b32",
            "firstName": "Joe",
            "lastName": "Test",
            "email": "[email protected]",
            "avatarUrl": "https://example.com/avatar.jpg",
            "lastLoginAt": "2024-01-15T10:30:00Z",
            "createdAt": "2024-01-01T08:00:00Z",
            "updatedAt": "2024-01-15T10:30:00Z",
            "isInvite": false,
            "role": "builder",
            "groupNames": ["Developers", "QA Team"],
            "__fsidPermissions": {
                "api-keys.manage.own": true,
                "api-keys.manage.all": false
            }
        },
        {
            "id": "78f6c152-bf62-5626-c318-g74439b77c43",
            "fsidUserId": "78f6c152-bf62-5626-c318-g74439b77c43",
            "firstName": "Jane",
            "lastName": "Smith",
            "email": "[email protected]",
            "avatarUrl": null,
            "lastLoginAt": null,
            "createdAt": "2024-01-10T09:00:00Z",
            "updatedAt": "2024-01-10T09:00:00Z",
            "isInvite": true,
            "role": "operator",
            "groupNames": ["Support Team"],
            "__fsidPermissions": {
                "api-keys.manage.own": false,
                "api-keys.manage.all": false
            }
        }
    ],
    "page": {
        "size": 2,
        "pageSize": 50,
        "pageNumber": 1,
        "totalElements": 2,
        "totalPages": 1
    }
}

Response (400 Bad Request):

{
    "message": "Invalid Paging Arguments",
    "traceId": "09f9aa68-4d89-465b-8d6d-41490fff7727"
}

Create User

POST /v1/users

Create a new user.

Request Body:

Required fields:

  • firstName
  • lastName
  • email
  • role
{
    "firstName": "John",
    "lastName": "Doe",
    "email": "[email protected]",
    "role": "builder"
}

Response (201 Created):

{
    "id": "89g7d263-ch73-6737-d429-h85550c88d54",
    "fsidUserId": "89g7d263-ch73-6737-d429-h85550c88d54",
    "firstName": "John",
    "lastName": "Doe",
    "email": "[email protected]",
    "avatarUrl": null,
    "lastLoginAt": null,
    "createdAt": "2024-01-20T14:30:00Z",
    "updatedAt": "2024-01-20T14:30:00Z",
    "isInvite": true,
    "role": "builder",
    "groupNames": [],
    "__fsidPermissions": {
        "api-keys.manage.own": true,
        "api-keys.manage.all": false
    }
}

Response (422 Unprocessable Entity):

{
    "message": "The given data failed to pass validation.",
    "traceId": "09f9aa68-4d89-465b-8d6d-41490fff7727",
    "errors": {
        "email": ["The email field is required."],
        "firstName": ["The first name field is required."]
    }
}

Get User Details

GET /v1/users/{id}

Get details of a specific user.

Path Parameters:

  • id (string, required): User UUID

Response (200 OK):

{
    "id": "56d4b940-ae51-4515-b207-f63328a66b32",
    "fsidUserId": "56d4b940-ae51-4515-b207-f63328a66b32",
    "firstName": "Joe",
    "lastName": "Test",
    "email": "[email protected]",
    "avatarUrl": "https://example.com/avatar.jpg",
    "lastLoginAt": "2024-01-15T10:30:00Z",
    "createdAt": "2024-01-01T08:00:00Z",
    "updatedAt": "2024-01-15T10:30:00Z",
    "isInvite": false,
    "role": "builder",
    "groupNames": ["Developers", "QA Team"],
    "__fsidPermissions": {
        "api-keys.manage.own": true,
        "api-keys.manage.all": false
    }
}

Update User

PUT /v1/users/{id}

Update a user.

Path Parameters:

  • id (string, required): User UUID

Request Body:

Required fields:

  • firstName
  • lastName
  • email
  • role
{
    "firstName": "Joe",
    "lastName": "Updated",
    "email": "[email protected]",
    "role": "manager"
}

Response (202 Accepted):

{
    "id": "56d4b940-ae51-4515-b207-f63328a66b32",
    "fsidUserId": "56d4b940-ae51-4515-b207-f63328a66b32",
    "firstName": "Joe",
    "lastName": "Updated",
    "email": "[email protected]",
    "avatarUrl": "https://example.com/avatar.jpg",
    "lastLoginAt": "2024-01-15T10:30:00Z",
    "createdAt": "2024-01-01T08:00:00Z",
    "updatedAt": "2024-01-20T15:45:00Z",
    "isInvite": false,
    "role": "manager",
    "groupNames": ["Developers", "QA Team"],
    "__fsidPermissions": {
        "api-keys.manage.own": true,
        "api-keys.manage.all": true
    }
}

Response (404 Not Found):

{
    "message": "User was not found",
    "traceId": "09f9aa68-4d89-465b-8d6d-41490fff7727"
}

Remove User

DELETE /v1/users/{id}

Remove a user.

Path Parameters:

  • id (string, required): User UUID

Response (204 No Content):

No response body.

Response (404 Not Found):

{
    "message": "User was not found",
    "traceId": "09f9aa68-4d89-465b-8d6d-41490fff7727"
}

Resend Invitation Email

POST /v1/users/{id}/resend-invitation

Resend the invitation email to a user who hasn't accepted yet.

Path Parameters:

  • id (string, required): User UUID

Response (204 No Content):

No response body.

Response (404 Not Found):

{
    "message": "User was not found",
    "traceId": "09f9aa68-4d89-465b-8d6d-41490fff7727"
}

Response (422 Unprocessable Entity):

{
    "message": "The given data failed to pass validation.",
    "traceId": "09f9aa68-4d89-465b-8d6d-41490fff7727",
    "errors": {
        "invitation": ["Invitation has already been accepted"]
    }
}