> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nexudus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Search Users

> Search and list User records with filtering, sorting, and pagination.

A **User** represents an administrator or staff member who can sign in to the Nexudus admin panel. Users are assigned roles that control their permissions and can be associated with one or more business locations.

## Authentication

<Note>
  This endpoint requires OAuth2 authentication. Include a valid bearer token in the `Authorization` header.
  The authenticated user must be a full unrestricted administrator or have the **`User-List`** role.
</Note>

## Enums

<Accordion title="eLanguage — Language values">
  | Value | Name      |
  | ----- | --------- |
  | 3     | EnglishUK |
  | 1     | EnglishUS |
  | 2     | Spanish   |
</Accordion>

## Query Parameters

### Pagination & Sorting

<ParamField query="page" type="integer" default="1">
  The page number to retrieve.
</ParamField>

<ParamField query="size" type="integer" default="25">
  The number of records per page.
</ParamField>

<ParamField query="orderBy" type="string">
  The property name to sort results by (e.g. `Name`, `CreatedOn`).
</ParamField>

<ParamField query="dir" type="integer">
  Sort direction. `0` for ascending, `1` for descending.
</ParamField>

### Filters

<ParamField query="User_FullName" type="string">
  Filter by the full name value for this user.
</ParamField>

<ParamField query="User_Email" type="string">
  Filter by the email value for this user.
</ParamField>

<ParamField query="User_AccessToken" type="string">
  Filter by the access token value for this user.
</ParamField>

<ParamField query="User_Language" type="integer">
  Filter by the language value for this user.
</ParamField>

<ParamField query="User_PreferredLanguage" type="integer">
  Filter by iD of the preferred language linked to this record.
</ParamField>

<ParamField query="User_NewPassword" type="string">
  Filter by the new password value for this user.
</ParamField>

<ParamField query="User_Password" type="string">
  Filter by the password value for this user.
</ParamField>

<ParamField query="User_PasswordSalt" type="string">
  Filter by the password salt value for this user.
</ParamField>

<ParamField query="User_AvatarFileName" type="string">
  Filter by current file name of the avatar (read-only; upload via the corresponding URL field).
</ParamField>

<ParamField query="User_NewAvatarUrl" type="string">
  Filter by uRL of a new file to upload as the avatar.
</ParamField>

<ParamField query="User_ClearAvatar" type="boolean">
  Filter by set to true to remove the current avatar file.
</ParamField>

<ParamField query="User_Application" type="integer">
  Filter by iD of the application linked to this record.
</ParamField>

<ParamField query="User_PassportNumber" type="string">
  Filter by the passport number value for this user.
</ParamField>

<ParamField query="User_PassportCardNumber" type="string">
  Filter by the passport card number value for this user.
</ParamField>

<ParamField query="User_EnablePassportAccess" type="boolean">
  Filter by whether enable passport access is enabled.
</ParamField>

<ParamField query="User_Active" type="boolean">
  Filter by whether this user is currently active.
</ParamField>

<ParamField query="User_IsAdmin" type="boolean">
  Filter by whether is admin is enabled.
</ParamField>

<ParamField query="User_APIAccess" type="boolean">
  Filter by whether api access is enabled.
</ParamField>

<ParamField query="User_Validated" type="boolean">
  Filter by whether validated is enabled.
</ParamField>

<ParamField query="User_MustResetPassword" type="boolean">
  Filter by whether must reset password is enabled.
</ParamField>

<ParamField query="User_LastAccess" type="string">
  Filter by date/time value for last access.
</ParamField>

<ParamField query="User_Devices" type="string">
  Filter by the devices value for this user.
</ParamField>

<ParamField query="User_OnNewEmail" type="boolean">
  Filter by whether on new email is enabled.
</ParamField>

<ParamField query="User_OnHelpDeskMsg" type="boolean">
  Filter by whether on help desk msg is enabled.
</ParamField>

<ParamField query="User_OnNewWallPost" type="boolean">
  Filter by whether on new wall post is enabled.
</ParamField>

<ParamField query="User_OnNewMember" type="boolean">
  Filter by whether on new member is enabled.
</ParamField>

<ParamField query="User_OnProfileChanges" type="boolean">
  Filter by whether on profile changes is enabled.
</ParamField>

<ParamField query="User_OnNewBlogComment" type="boolean">
  Filter by whether on new blog comment is enabled.
</ParamField>

<ParamField query="User_OnNewEventComment" type="boolean">
  Filter by whether on new event comment is enabled.
</ParamField>

<ParamField query="User_OnTariffChange" type="boolean">
  Filter by whether on tariff change is enabled.
</ParamField>

<ParamField query="User_OnBookingChange" type="boolean">
  Filter by whether on booking change is enabled.
</ParamField>

<ParamField query="User_OnTentativeBookingChange" type="boolean">
  Filter by whether on tentative booking change is enabled.
</ParamField>

<ParamField query="User_OnPurchases" type="boolean">
  Filter by whether on purchases is enabled.
</ParamField>

<ParamField query="User_OnVisitorRegistration" type="boolean">
  Filter by whether on visitor registration is enabled.
</ParamField>

<ParamField query="User_OnPlaformInvoices" type="boolean">
  Filter by whether on plaform invoices is enabled.
</ParamField>

<ParamField query="User_ReceiveCommunityDigest" type="boolean">
  Filter by whether receive community digest is enabled.
</ParamField>

<ParamField query="User_ReceiveEveryMessage" type="boolean">
  Filter by whether receive every message is enabled.
</ParamField>

<ParamField query="User_TwoFactorEnabled" type="boolean">
  Filter by whether two factor enabled is enabled.
</ParamField>

<ParamField query="User_TwoFactorSecret" type="string">
  Filter by the two factor secret value for this user.
</ParamField>

<ParamField query="User_EmailCallBackGuid" type="string">
  Filter by unique identifier (GUID) for the email call back.
</ParamField>

<ParamField query="User_DefaultBusiness" type="integer">
  Filter by iD of the default business linked to this record.
</ParamField>

<ParamField query="User_LastHelpVisited" type="integer">
  Filter by the last help visited value for this user.
</ParamField>

<ParamField query="User_LastReceivedCommunityThreadDate" type="string">
  Filter by date/time value for last received community thread date.
</ParamField>

<ParamField query="User_LastReceivedCommunityMessageDate" type="string">
  Filter by date/time value for last received community message date.
</ParamField>

<ParamField query="User_NextCommunityDigest" type="string">
  Filter by date/time value for next community digest.
</ParamField>

<ParamField query="User_SupportTeamUserEmail" type="string">
  Filter by the support team user email value for this user.
</ParamField>

<ParamField query="User_InvalidLoginAttempts" type="integer">
  Filter by the invalid login attempts value for this user.
</ParamField>

<ParamField query="User_LastLoginAttempt" type="string">
  Filter by date/time value for last login attempt.
</ParamField>

<ParamField query="User_OnAccessControlErrors" type="boolean">
  Filter by whether on access control errors is enabled.
</ParamField>

<ParamField query="User_NextHelpDeskMessageReminder" type="string">
  Filter by date/time value for next help desk message reminder.
</ParamField>

<ParamField query="User_OnMemberRemovedFromTeam" type="boolean">
  Filter by whether on member removed from team is enabled.
</ParamField>

<ParamField query="User_OnVirtualOfficeTariffChange" type="boolean">
  Filter by whether on virtual office tariff change is enabled.
</ParamField>

<ParamField query="User_OnVirtualOfficeDeliveryPreferenceUpdate" type="boolean">
  Filter by whether on virtual office delivery preference update is enabled.
</ParamField>

<ParamField query="User_OnIdentityCheckUpdate" type="boolean">
  Filter by whether on identity check update is enabled.
</ParamField>

### Range Filters

<ParamField query="from_User_LastAccess" type="string">
  Filter by date/time value for last access greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_User_LastAccess" type="string">
  Filter by date/time value for last access less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_User_LastHelpVisited" type="integer">
  Filter by the last help visited value for this user greater than or equal to this value.
</ParamField>

<ParamField query="to_User_LastHelpVisited" type="integer">
  Filter by the last help visited value for this user less than or equal to this value.
</ParamField>

<ParamField query="from_User_LastReceivedCommunityThreadDate" type="string">
  Filter by date/time value for last received community thread date greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_User_LastReceivedCommunityThreadDate" type="string">
  Filter by date/time value for last received community thread date less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_User_LastReceivedCommunityMessageDate" type="string">
  Filter by date/time value for last received community message date greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_User_LastReceivedCommunityMessageDate" type="string">
  Filter by date/time value for last received community message date less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_User_NextCommunityDigest" type="string">
  Filter by date/time value for next community digest greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_User_NextCommunityDigest" type="string">
  Filter by date/time value for next community digest less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_User_InvalidLoginAttempts" type="integer">
  Filter by the invalid login attempts value for this user greater than or equal to this value.
</ParamField>

<ParamField query="to_User_InvalidLoginAttempts" type="integer">
  Filter by the invalid login attempts value for this user less than or equal to this value.
</ParamField>

<ParamField query="from_User_LastLoginAttempt" type="string">
  Filter by date/time value for last login attempt greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_User_LastLoginAttempt" type="string">
  Filter by date/time value for last login attempt less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_User_NextHelpDeskMessageReminder" type="string">
  Filter by date/time value for next help desk message reminder greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_User_NextHelpDeskMessageReminder" type="string">
  Filter by date/time value for next help desk message reminder less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_User_CreatedOn" type="string">
  Filter records created on or after this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_User_CreatedOn" type="string">
  Filter records created on or before this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_User_UpdatedOn" type="string">
  Filter records updated on or after this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_User_UpdatedOn" type="string">
  Filter records updated on or before this date. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

## Code Examples

### Simple listing

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/sys/users?page=1&size=15&orderBy=FullName&dir=0" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/sys/users?' + new URLSearchParams({
      page: 1,
      size: 15,
      orderBy: 'FullName',
      dir: 1 // Ascending
    }),
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/sys/users',
      params={
          'page': 1,
          'size': 15,
          'orderBy': 'FullName',
          'dir': 0 // Ascending
      },
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  data = response.json()
  ```
</CodeGroup>

### Filtering by FullName

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/sys/users?User_FullName=example-value&orderBy=FullName&dir=0" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/sys/users?' + new URLSearchParams({
      User_FullName: 'example-value',
      orderBy: 'FullName',
      dir: 1
    }),
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/sys/users',
      params={
          'User_FullName': 'example-value',
          'orderBy': 'FullName',
          'dir': 0 // Ascending
      },
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  data = response.json()
  ```
</CodeGroup>

### Range filters

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET \
    "https://spaces.nexudus.com/api/sys/users?from_User_UpdatedOn=2025-01-01T00:00&to_User_UpdatedOn=2025-12-31T23:59&orderBy=UpdatedOn&dir=0" \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://spaces.nexudus.com/api/sys/users?' + new URLSearchParams({
      from_User_UpdatedOn: '2025-01-01T00:00',
      to_User_UpdatedOn: '2025-12-31T23:59',
      orderBy: 'UpdatedOn',
      dir: 1 // Descending
     }),
    {
      headers: {
        'Authorization': 'Bearer YOUR_TOKEN'
      }
    }
  );

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://spaces.nexudus.com/api/sys/users',
      params={
          'from_User_UpdatedOn': '2025-01-01T00:00',
          'to_User_UpdatedOn': '2025-12-31T23:59',
          'orderBy': 'UpdatedOn',
          'dir': 1 // Descending
      },
      headers={
          'Authorization': 'Bearer YOUR_TOKEN'
      }
  )

  data = response.json()
  ```
</CodeGroup>

## Response

### 200

<ResponseField name="Records" type="User[]">
  The list of User records matching the query. See the [Get one User](/rest-api/sys/get-users-by-id) endpoint for the full list of properties returned for each record.
</ResponseField>

<Warning>
  **Partial records** — The listing endpoint returns a summary representation of each User. The following fields are **not populated** in the `Records[]` response: `NewPassword`, `IsAdmin`, `APIAccess`, `MustResetPassword`, `LastAccess`, `Devices`, `OnNewEmail`, `OnHelpDeskMsg`, `OnNewWallPost`, `OnNewMember`, `OnProfileChanges`, `OnNewBlogComment`, `OnNewEventComment`, `OnTariffChange`, `OnBookingChange`, `OnTentativeBookingChange`, `OnPurchases`, `OnVisitorRegistration`, `OnPlaformInvoices`, `ReceiveCommunityDigest`, `ReceiveEveryMessage`, `TwoFactorSecret`, `LastHelpVisited`, `OnAccessControlErrors`, `OnMemberRemovedFromTeam`, `OnVirtualOfficeTariffChange`, `OnVirtualOfficeDeliveryPreferenceUpdate`, `OnIdentityCheckUpdate`.

  To get all fields, fetch the full record using the [Get one User](/rest-api/sys/get-users-by-id) endpoint.

  **Important for updates:** When updating a record via `PUT`, always retrieve the full record with a `GET` request first, apply your changes to that complete data, and then send the updated record. Do not use data from a listing response as the base for a `PUT` request, as missing fields may be unintentionally cleared.
</Warning>

<ResponseField name="CurrentPage" type="integer">
  Current page number.
</ResponseField>

<ResponseField name="CurrentPageSize" type="integer">
  Number of records per page.
</ResponseField>

<ResponseField name="CurrentOrderField" type="string">
  The field used for sorting.
</ResponseField>

<ResponseField name="CurrentSortDirection" type="integer">
  The sort direction (`0` = ascending, `1` = descending).
</ResponseField>

<ResponseField name="FirstItem" type="integer">
  Index of the first item on the current page.
</ResponseField>

<ResponseField name="LastItem" type="integer">
  Index of the last item on the current page.
</ResponseField>

<ResponseField name="TotalItems" type="integer">
  Total number of matching records across all pages.
</ResponseField>

<ResponseField name="TotalPages" type="integer">
  Total number of pages.
</ResponseField>

<ResponseField name="HasNextPage" type="boolean">
  Whether there is a next page of results.
</ResponseField>

<ResponseField name="HasPreviousPage" type="boolean">
  Whether there is a previous page of results.
</ResponseField>

```json Example Response theme={null}
{
  "Records": [
    {
      "FullName": "",
      "Email": "",
      "AccessToken": null,
      "Language": 0,
      "PreferredLanguageId": null,
      "Password": null,
      "PasswordSalt": "",
      "AvatarFileName": null,
      "NewAvatarUrl": null,
      "ClearAvatarFile": null,
      "ApplicationId": null,
      "PassportNumber": null,
      "PassportCardNumber": null,
      "EnablePassportAccess": false,
      "Active": false,
      "Validated": false,
      "TwoFactorEnabled": false,
      "EmailCallBackGuid": null,
      "Businesses": [],
      "UserRoles": [],
      "ChatRooms": [],
      "DefaultBusinessId": null,
      "LastReceivedCommunityThreadDate": null,
      "LastReceivedCommunityMessageDate": null,
      "NextCommunityDigest": null,
      "SupportTeamUserEmail": null,
      "InvalidLoginAttempts": 0,
      "LastLoginAttempt": null,
      "NextHelpDeskMessageReminder": null,
      "Id": 87654321,
      "UpdatedOn": "2025-01-15T10:30:00Z",
      "CreatedOn": "2025-01-10T08:00:00Z",
      "UniqueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "UpdatedBy": "admin@example.com",
      "IsNew": false,
      "SystemId": null,
      "ToStringText": "User Example",
      "LocalizationDetails": null,
      "CustomFields": null
    }
  ],
  "CurrentPageSize": 15,
  "CurrentPage": 1,
  "CurrentOrderField": "FullName",
  "CurrentSortDirection": 1,
  "FirstItem": 1,
  "HasNextPage": false,
  "HasPreviousPage": false,
  "LastItem": 1,
  "PageNumber": 1,
  "PageSize": 15,
  "TotalItems": 1,
  "TotalPages": 1
}
```
