> ## 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 required full name shown for this staff account..
</ParamField>

<ParamField query="User_Email" type="string">
  Filter by required valid email address used to identify and sign in to this staff account..
</ParamField>

<ParamField query="User_AccessToken" type="string">
  Filter by authentication token generated by the platform; never expose or set it..
</ParamField>

<ParamField query="User_Language" type="integer">
  Filter by legacy language setting; use PreferredLanguage instead..
</ParamField>

<ParamField query="User_PreferredLanguage" type="integer">
  Filter by iD of the optional location language used for this account's preferred interface and content language..
</ParamField>

<ParamField query="User_NewPassword" type="string">
  Filter by new sign-in password; do not expose or set passwords through the Admin Agent..
</ParamField>

<ParamField query="User_Password" type="string">
  Filter by stored password hash; never expose or set it directly..
</ParamField>

<ParamField query="User_PasswordSalt" type="string">
  Filter by password-hashing salt generated by the platform; never expose or set it..
</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 optional marketplace application whose integration uses this account..
</ParamField>

<ParamField query="User_PassportNumber" type="string">
  Filter by read-only Nexudus Passport identifier; the platform verifies that it is unique..
</ParamField>

<ParamField query="User_PassportCardNumber" type="string">
  Filter by read-only Nexudus Passport card code; it must be a valid unused Passport card..
</ParamField>

<ParamField query="User_EnablePassportAccess" type="boolean">
  Filter by whether this account is eligible for Nexudus Passport access; the platform enables it on user creation..
</ParamField>

<ParamField query="User_Active" type="boolean">
  Filter by whether this staff account is active; notification recipient queries generally require an active account..
</ParamField>

<ParamField query="User_IsAdmin" type="boolean">
  Filter by whether this account has administrator access in addition to any permissions granted through UserRoles..
</ParamField>

<ParamField query="User_APIAccess" type="boolean">
  Filter by whether this account may authenticate for API access..
</ParamField>

<ParamField query="User_Validated" type="boolean">
  Filter by whether the platform marks this account as validated..
</ParamField>

<ParamField query="User_MustResetPassword" type="boolean">
  Filter by whether the user must reset their sign-in password; the platform sets this when it generates a password..
</ParamField>

<ParamField query="User_LastAccess" type="string">
  Filter by read-only UTC timestamp of the latest account access, rounded down to the nearest 15 minutes..
</ParamField>

<ParamField query="User_Devices" type="string">
  Filter by registered device identifiers used for device-based authentication; manage them outside the Admin Agent..
</ParamField>

<ParamField query="User_OnNewEmail" type="boolean">
  Filter by whether to notify this active user about new internal messages for their locations..
</ParamField>

<ParamField query="User_OnHelpDeskMsg" type="boolean">
  Filter by whether to notify this active user about new help desk messages for their locations..
</ParamField>

<ParamField query="User_OnNewWallPost" type="boolean">
  Filter by whether to notify this active user about new community wall posts for their locations..
</ParamField>

<ParamField query="User_OnNewMember" type="boolean">
  Filter by whether to notify this active user when a new customer profile is created for their locations..
</ParamField>

<ParamField query="User_OnProfileChanges" type="boolean">
  Filter by whether to notify this user about customer profile changes..
</ParamField>

<ParamField query="User_OnNewBlogComment" type="boolean">
  Filter by whether to notify this active user with a customer profile at the location about new blog comments..
</ParamField>

<ParamField query="User_OnNewEventComment" type="boolean">
  Filter by whether to notify this active user with a customer profile at the location about new calendar-event comments..
</ParamField>

<ParamField query="User_OnTariffChange" type="boolean">
  Filter by whether to notify this active user about plan changes; virtual-office plans instead use OnVirtualOfficeTariffChange..
</ParamField>

<ParamField query="User_OnBookingChange" type="boolean">
  Filter by whether to notify this active user about booking changes for their locations..
</ParamField>

<ParamField query="User_OnTentativeBookingChange" type="boolean">
  Filter by whether to notify this active user about tentative booking changes for their locations..
</ParamField>

<ParamField query="User_OnPurchases" type="boolean">
  Filter by whether to notify this active user about purchases for their locations..
</ParamField>

<ParamField query="User_OnVisitorRegistration" type="boolean">
  Filter by whether to notify this user when visitors register at their locations..
</ParamField>

<ParamField query="User_OnPlaformInvoices" type="boolean">
  Filter by whether to notify this user about Nexudus platform invoices for their locations..
</ParamField>

<ParamField query="User_ReceiveCommunityDigest" type="boolean">
  Filter by whether this user is subscribed to scheduled community-board digest emails; new accounts inherit the location digest setting..
</ParamField>

<ParamField query="User_ReceiveEveryMessage" type="boolean">
  Filter by whether this user receives an email for each new community-board message instead of only digest notifications..
</ParamField>

<ParamField query="User_TwoFactorEnabled" type="boolean">
  Filter by read-only indicator of whether two-factor authentication is enabled for this account..
</ParamField>

<ParamField query="User_TwoFactorSecret" type="string">
  Filter by two-factor authentication secret; never expose or set it..
</ParamField>

<ParamField query="User_EmailCallBackGuid" type="string">
  Filter by internal token-invalidating password-hash claim; never expose or set it..
</ParamField>

<ParamField query="User_DefaultBusiness" type="integer">
  Filter by read-only ID of the user's default location; the platform falls back to the first linked location when it is empty..
</ParamField>

<ParamField query="User_LastHelpVisited" type="integer">
  Filter by internal identifier of the last help page viewed by this user..
</ParamField>

<ParamField query="User_LastReceivedCommunityThreadDate" type="string">
  Filter by internal timestamp of the latest community thread included in this user's notification tracking..
</ParamField>

<ParamField query="User_LastReceivedCommunityMessageDate" type="string">
  Filter by internal timestamp of the latest community message included in this user's notification tracking..
</ParamField>

<ParamField query="User_NextCommunityDigest" type="string">
  Filter by internal timestamp for this user's next scheduled community digest..
</ParamField>

<ParamField query="User_SupportTeamUserEmail" type="string">
  Filter by internal support-team routing email associated with this account..
</ParamField>

<ParamField query="User_InvalidLoginAttempts" type="integer">
  Filter by internal count of failed login attempts; the platform resets it after a successful password change and applies its lockout threshold..
</ParamField>

<ParamField query="User_LastLoginAttempt" type="string">
  Filter by internal timestamp of the most recent failed login attempt, used with InvalidLoginAttempts for lockout handling..
</ParamField>

<ParamField query="User_OnAccessControlErrors" type="boolean">
  Filter by whether to notify this user about access-control errors for their locations..
</ParamField>

<ParamField query="User_NextHelpDeskMessageReminder" type="string">
  Filter by timestamp of the next help desk message reminder for this user..
</ParamField>

<ParamField query="User_OnMemberRemovedFromTeam" type="boolean">
  Filter by whether to notify this user when a customer is removed from a team..
</ParamField>

<ParamField query="User_OnVirtualOfficeTariffChange" type="boolean">
  Filter by whether to notify this active user about virtual-office plan changes for their locations..
</ParamField>

<ParamField query="User_OnVirtualOfficeDeliveryPreferenceUpdate" type="boolean">
  Filter by whether to notify this user when a virtual-office customer updates delivery preferences..
</ParamField>

<ParamField query="User_OnIdentityCheckUpdate" type="boolean">
  Filter by whether to notify this user when a customer's identity-check status changes..
</ParamField>

### Range Filters

<ParamField query="from_User_LastAccess" type="string">
  Filter by read-only UTC timestamp of the latest account access, rounded down to the nearest 15 minutes. greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_User_LastAccess" type="string">
  Filter by read-only UTC timestamp of the latest account access, rounded down to the nearest 15 minutes. less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_User_LastHelpVisited" type="integer">
  Filter by internal identifier of the last help page viewed by this user. greater than or equal to this value.
</ParamField>

<ParamField query="to_User_LastHelpVisited" type="integer">
  Filter by internal identifier of the last help page viewed by this user. less than or equal to this value.
</ParamField>

<ParamField query="from_User_LastReceivedCommunityThreadDate" type="string">
  Filter by internal timestamp of the latest community thread included in this user's notification tracking. greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_User_LastReceivedCommunityThreadDate" type="string">
  Filter by internal timestamp of the latest community thread included in this user's notification tracking. less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="from_User_LastReceivedCommunityMessageDate" type="string">
  Filter by internal timestamp of the latest community message included in this user's notification tracking. greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_User_LastReceivedCommunityMessageDate" type="string">
  Filter by internal timestamp of the latest community message included in this user's notification tracking. less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

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

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

<ParamField query="from_User_InvalidLoginAttempts" type="integer">
  Filter by internal count of failed login attempts; the platform resets it after a successful password change and applies its lockout threshold. greater than or equal to this value.
</ParamField>

<ParamField query="to_User_InvalidLoginAttempts" type="integer">
  Filter by internal count of failed login attempts; the platform resets it after a successful password change and applies its lockout threshold. less than or equal to this value.
</ParamField>

<ParamField query="from_User_LastLoginAttempt" type="string">
  Filter by internal timestamp of the most recent failed login attempt, used with InvalidLoginAttempts for lockout handling. greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

<ParamField query="to_User_LastLoginAttempt" type="string">
  Filter by internal timestamp of the most recent failed login attempt, used with InvalidLoginAttempts for lockout handling. less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.
</ParamField>

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

<ParamField query="to_User_NextHelpDeskMessageReminder" type="string">
  Filter by timestamp of the next help desk message reminder for this user. 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`, `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,
      "IsAdmin": 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
}
```
