---
sourceDocument: Australia API Reference
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/api-reference

 Release :

    - australia

ft:locale :

    - en-US

ft:publication_title :

    - Australia API Reference

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# WSD Unified Search API

# WSD Unified Search API {#ariaid-title1}

Release version: Australia  
Updated April 28, 2026  
![](https://www.servicenow.com/docs/portal-asset/ico-clock) 11 minutes to read  
The WSD Unified Search API provides an endpoint to search across workplace users and locations.
The WSD Unified Search API runs in the sn_wsd_core namespace and powers the search/type ahead experience in the Workplace Service Delivery (WSD) portal, returning matching users, spaces, floors, buildings, campuses, and neighborhoods in a single response.

## Requirements {#wsd_unified-search-api__section_mbl_vw4_bjc}

The WSD Unified Search API requires:

* The calling user have the sn_wsd_core.workplace_user role.
* The Workplace Service Delivery Core (com.sn_wsd_core) plugin be active.
* At least one building and floor be configured in the workplace location hierarchy.
{#wsd_unified-search-api__ul_okx_zw4_bjc}

## WSD Unified Search - POST /api/sn_wsd_core/wsd_unified_search/users_and_locations {#ariaid-title2}

Searches for users and workplace locations (case-insensitive) matching the provided search term. Returns a combined list of matching results with pagination support.

### URL format

Versioned URL: /api/sn_wsd_core/{api_version}/wsd_unified_search/users_and_locations

Default URL: /api/sn_wsd_core/wsd_unified_search/users_and_locations

### Supported request parameters

{#wsd_unifsearch-POST-users-locations__entry__2}{#wsd_unifsearch-POST-users-locations__version-not_optional-RESTAPI}

| Name | Description |
|-|-|
| api_version | Optional. Version of the endpoint to access. For example, <kbd class="ph userinput">v1</kbd> or <kbd class="ph userinput">v2</kbd>. Only specify this value to use an endpoint version other than the latest. Data type: String |
[Table 1. Path parameters]

{#wsd_unifsearch-POST-users-locations__entry__6}

| Name | Description |
|-|-|
| None |   |
[Table 2. Query parameters]

Note:  
All searches are case-insensitive.
{#wsd_unifsearch-POST-users-locations__entry__10}

| Name | Description |
|-|-|
| search_term | Search query used to find matching users and workplace locations. Accepts a comma-separated list of values to search for multiple terms simultaneously. For example, <kbd class="ph userinput">"Conference, Desk"</kbd> returns results matching either term. Empty segments are ignored. Data type: String Default value: Empty string (returns all results) |
| show_location | Flag that indicates whether to include the user's current location in the result label. Possible values: * `true`: Display the user's current location in the result label. * `false`: Don't display the user's current location in the result label. {#wsd_unifsearch-POST-users-locations__ul_cwk_11w_bjc} Data type: Boolean Default: true |
| show_loggedin_user | Flag that indicates whether to display the authenticated user as the first result when no search term is provided. Only applies to desktop clients at offset 0. When a `search_term` is provided, this flag has no effect. The authenticated user is returned only if they match the search criteria. Possible values: * `true`: Show the authenticated user as the first result. * `false`: Don't show the authenticated user as the first result. {#wsd_unifsearch-POST-users-locations__ul_r1p_f1w_bjc} Data type: Boolean Default: true |
| include_user_email | Flag that indicates whether to include user email addresses in result labels and allow searching by email address. Possible values: * `true`: Include email in result labels and enable email search. * `false`: Don't include email in result labels or enable email search {#wsd_unifsearch-POST-users-locations__ul_ohx_k1w_bjc} Data type: Boolean Default: false |
| filterConfig | Table-specific encoded queries. Keys are table names. Values are encoded query strings. Note: filterConfig filters by entity type only. It doesn't support filtering results to a specific record or location hierarchy. To narrow results by location, use search_term in combination with options.rsvModule. Valid fields (table names): * sys_user * sn_wsd_core_workplace_location * sn_wsd_core_region * sn_wsd_core_site * sn_wsd_core_campus * sn_wsd_core_building * sn_wsd_core_floor * sn_wsd_core_area * sn_wsd_core_space * sn_wsd_core_room * sn_wsd_core_neighborhood {#wsd_unifsearch-POST-users-locations__ul_adq_41w_bjc} Data type: Object "filterConfig": { "<table_name>": Boolean } Default: {} (no filter applied, searches all tables) |
| filterConfig.\<table_name\> | Flag that indicates whether to include results from the specified table. Set to `true` to include results from that entity type. Valid values: * `true`: Include results from that entity type. * `false`: Don't include results from that entity type. {#wsd_unifsearch-POST-users-locations__ul_yxf_5cw_bjc} Data type: Boolean |
| options | Object containing additional configuration for search behavior. Data type: Object "options": { "search_in_parent": Boolean, "cache": Boolean, "rsvModule": {Object} } |
| options.search_in_parent | Flag that indicates whether to include results from parent location records when filtering by a child entity. Possible values: * `true`: Include parent location results. * `false`: Don't include parent location results. {#wsd_unifsearch-POST-users-locations__ul_ilq_bdw_bjc} Data type: Boolean |
| options.cache | Flag that indicates whether to use cached search results. Possible values: * `true`: Use cached results where available. * `false`: Always fetch fresh results {#wsd_unifsearch-POST-users-locations__ul_p1l_fdw_bjc} Data type: Boolean |
| options.rsvModule | Object containing reservation module configuration for filtering results by reservable module context. Data type: Object "rsvModule": { "value": "String", "enable_restricted_neighborhood_rules": Boolean } |
| options.rsvModule.value | Sys_id of the reservable module to use for filtering available spaces. Table: Reservable Module \[sn_wsd_rsv_reservable_module\] Data type: String |
| options.rsvModule.enable_restricted_neighborhood_rules | Flag that indicates whether to apply restricted neighborhood rules when filtering results by reservation module. Possible values: * `true`: Apply restricted neighborhood rules. * `false`: Don't apply restricted neighborhood rules. {#wsd_unifsearch-POST-users-locations__ul_qlr_ndw_bjc} Data type: Boolean |
| sysparam_offset | Pagination offset. Number of records to skip before returning results. Use with sysparam_limit for pagination. Minimum value: 0 Data type: Number Default value: 0 |
| sysparam_limit | Maximum number of records to return per request. Use with sysparam_offset for pagination. Minimum value: 1 Data type: Number Default value: 10 |
[Table 3. Request body parameters (XML or JSON)]

### Headers

The following request and response headers apply to this HTTP
action only, or apply to this action in a distinct way. For a list of general headers used
in the REST API, see [Supported REST API headers](https://servicenow-prod.fluidtopics.net/qh7RcF0RI6a~i9u3octdlg "REST (REpresentational State Transfer) is a simple stateless architecture that provides standards between computer systems on the web, making it easier for them to communicate with each other.").
{#wsd_unifsearch-POST-users-locations__entry__40}

| Header | Description |
|-|-|
| Accept | Data format of the response body. Supported types: application/json, application/xml, text/xml. |
| Content-Type | Data format of the request body: application/json. |
| Authorization | Authentication credentials. Supports Basic authentication or session-based authentication. |
[Table 4. Request headers]

{#wsd_unifsearch-POST-users-locations__entry__48}

| Header | Description |
|-|-|
| Content-Type | Data format of the response body: application/json. |
[Table 5. Response headers]

### Status codes

The following status codes apply to this HTTP action. For a
list of possible status codes used in the REST API, see [REST API HTTP response
codes](https://servicenow-prod.fluidtopics.net/qh7RcF0RI6a~i9u3octdlg "REST (REpresentational State Transfer) is a simple stateless architecture that provides standards between computer systems on the web, making it easier for them to communicate with each other.").
{#wsd_unifsearch-POST-users-locations__entry__52}{#wsd_unifsearch-POST-users-locations__entry-200-status-code}

| Status code | Description |
|-|-|
| 200 | Successful. The request was successfully processed. |
| 400 | Bad Request. Invalid request body format. |
| 401 | Authentication failed. |
| 403 | User lacks required ACL permissions. |
| 500 | Internal server error. An unexpected error occurred while processing the request. |
[Table 6. Status codes]

### Response body parameters (JSON or XML)

{#wsd_unifsearch-POST-users-locations__entry__64}

| Name | Description |
|-|-|
| result | Object containing results of the request. Data type: Object "result": { "result": [Array], "more": Boolean, "isMobile": Boolean } |
| result.isMobile | Flag that indicates whether the request was detected as originating from a mobile client. This value can be used to mirror the same client-type logic in your own UI, for example to replicate the `show_loggedin_user` behavior. Possible values: * `true`: Request originated from a mobile client. * `false`: Request originated from a desktop client. {#wsd_unifsearch-POST-users-locations__ul_gxs_2fw_bjc} Data type: Boolean |
| result.more | Flag that indicates whether additional results are available beyond the current page. Possible values: * `true`: More results are available. Increment sysparam_offset by sysparam_limit to retrieve the next page. * `false`: No more results are available. {#wsd_unifsearch-POST-users-locations__ul_ilw_bfw_bjc} Data type: Boolean |
| result.result | Array of matching user and location objects. Each object contains common fields shared across all result types, as well as type-specific fields that are only present for user results. Data type: Array of Objects "result": [ { "displayValue": "String", "value": "String", "table": "String", "label": "String", "selectedTreeBranch": "String", "timezone": {Object}, "wsdSource": "String", "externalId": "String", "floorId": "String", "isReservable": Boolean } ] |
| result.result.displayValue | Display name of the result. For example, <kbd class="ph userinput">Conference Room A - Floor 1</kbd> for a space or <kbd class="ph userinput">Jane Doe</kbd> for a user. Data type: String |
| result.result.externalId | Identifier of the result record in an external source system, when applicable. Data type: String |
| result.result.floorId | Sys_id of the floor on which the result location resides. Present for location results only. Table: Workplace Floor \[sn_wsd_core_floor\] Data type: String |
| result.result.isReservable | Flag that indicates whether the result location can be reserved. Possible values: * `true`: The location is reservable. * `false`: The location isn't reservable. {#wsd_unifsearch-POST-users-locations__ul_kpd_w2w_bjc} Data type: Boolean |
| result.result.label | Secondary display string providing additional context for the result. For example, the location hierarchy for a space, or the department and title for a user. Data type: String |
| result.result.selectedTreeBranch | Sys_id of the parent location record in the workplace hierarchy associated with this result. Used to pre-select the location tree in the UI. Data type: String |
| result.result.table | Table name from which the result originates. For example, <kbd class="ph userinput">sn_wsd_core_space</kbd> or <kbd class="ph userinput">sys_user</kbd>. Data type: String |
| result.result.timezone | Time zone associated with the result location. Present for location results. Data type: Object "timezone": { "displayValue": "String", "value": "String" } |
| result.result.timezone.displayValue | Human-readable time zone name. For example, `Eastern Standard Time`. Data type: String |
| result.result.timezone.value | IANA time zone identifier for the result location. For example, `America/New_York.` Data type: String |
| result.result.userDetails | Object containing additional details about a user result. Present for user results only (User \[sys_user\] table). Data type: Object "userDetails": { "userID": "String", "name": "String", "department": "String", "avatar": "String", "initials": "String" } |
| result.result.userDetails.avatar | Relative URL path to the user's profile avatar image. Data type: String |
| result.result.userDetails.department | Name of the department the user belongs to. Data type: String |
| result.result.userDetails.initials | Initials derived from the user's display name, used as a fallback when no avatar is available. For example, `JD` for <kbd class="ph userinput">Jane Doe</kbd>. Data type: String |
| result.result.userDetails.name | Full display name of the user. For example, `Jane Doe`. Data type: String |
| result.result.userDetails.userID | Sys_id of the user record. Table: User \[sys_user\] Data type: String. |
| result.result.value | Sys_id of the result record. Data type: String |
| result.result.wsdSource | Source system identifier for the result. Used when the location originates from an external integration. Data type: String |
[ ]

### cURL request

The following example searches for spaces matching "Conference" or "Desk" within a specific building, returning up to 10 results.

    curl "https://<instance>.service-now.com/api/sn_wsd_core/wsd_unified_search/users_and_locations" \ 
    --request POST \ 
    --header "Accept: application/json" \ 
    --header "Content-Type: application/json" \ 
    --user "username:password" \
    --data '{
      "search_term": "Conference, Desk",
      "show_location": true,
      "show_loggedin_user": true,
      "include_user_email": false,
      "filterConfig": {
      "sn_wsd_core_building": true
                      },
      "options": {
           "search_in_parent": false,
           "cache": true
                  },
           "sysparam_offset": 0,
           "sysparam_limit": 10 
      }
    }'

Response body.

    {
      "result": {
        "result": [
          {
            "displayValue": "Conference Room A - Floor 1",
            "value": "space_123",
            "table": "sn_wsd_core_space",
            "label": "Floor 1, Building A, Main Campus",
            "selectedTreeBranch": "building_456",
            "timezone": {
              "value": "America/New_York",
              "displayValue": "Eastern Standard Time"
            },
            "wsdSource": "",
            "externalId": "",
            "floorId": "floor_789",
            "isReservable": true
          },
          {
            "displayValue": "Jane Doe",
            "value": "user_789",
            "table": "sys_user",
            "label": "Senior Engineer, Engineering",
            "selectedTreeBranch": "building_456",
            "userDetails": {
              "userID": "user_789",
              "name": "Jane Doe",
              "department": "Engineering",
              "avatar": "/avatar/user_789",
              "initials": "JD"
            }
          }
        ],
        "more": true,
        "isMobile": false
      }
    }

### cURL request

The following are examples of different search criteria.

Search all locations and users:

    { 
      "search_term": "engineering", 
      "filterConfig": {}, 
      "sysparm_offset": 0, 
      "sysparm_limit": 20
    }

Search only reservable spaces:

    {
      "search_term": "workspace",
      "filterConfig": {
        "sn_wsd_core_workplace_location": "is_reservable=true^sys_class_name=sn_wsd_core_space"
      },
      "sysparm_offset": 0,
      "sysparm_limit": 10
    }

Search only active users in IT department:

    {
      "search_term": "smith",
      "include_user_email": true,
      "filterConfig": {
        "sys_user": "department.name=IT Department"
      },
      "sysparm_offset": 0,
      "sysparm_limit": 10
    }

Search neighborhoods with restricted access validation:

    {
      "search_term": "team",
      "filterConfig": {
        "sn_wsd_core_neighborhood": ""
      },
      "options": {
        "sn_wsd_core_neighborhood": {
          "validateAccess": true
        },
        "rsvModule": {
          "value": "module_sys_id_here"
        }
      },
      "sysparm_offset": 0,
      "sysparm_limit": 10
    }

## WSD Unified Search - GET /api/sn_wsd_core/wsd_unified_search/current_location {#ariaid-title3}

Retrieve the current location of a specific user based on their active reservations, workplace profile, or neighborhood assignment. Returns the most relevant public location first, falling back to private locations if no public
location is found.

### URL format {#wsd_uinified_search-GET-location__section_1}

Versioned URL: /api/sn_wsd_core/{api_version}/wsd_unified_search/current_location

Default URL: /api/sn_wsd_core/wsd_unified_search/current_location

### Supported request parameters

{#wsd_uinified_search-GET-location__entry__2}{#wsd_uinified_search-GET-location__version-not_optional-RESTAPI}

| Name | Description |
|-|-|
| api_version | Optional. Version of the endpoint to access. For example, <kbd class="ph userinput">v1</kbd> or <kbd class="ph userinput">v2</kbd>. Only specify this value to use an endpoint version other than the latest. Data type: String |
[Table 7. Path parameters]

{#wsd_uinified_search-GET-location__entry__6}

| Name | Description |
|-|-|
| userSysId | Required. Sys_id of the user whose current location to retrieve. Table: User \[sys_user\] Data type: String |
| useNeighborhoods | Flag that indicates whether to include a neighborhood-based location from the user's workplace profile record when no reservation or direct profile location is found. Table: Workplace Profile \[sn_wsd_core_workplace_profile\] Valid values: * `true`: Include neighborhood-based location as a fallback. * `false`: Don't include neighborhood-based location. {#wsd_uinified_search-GET-location__ul_ehg_b2j_cjc} Data type: Boolean Default: false |
[Table 8. Query parameters]

{#wsd_uinified_search-GET-location__entry__12}

| Name | Description |
|-|-|
| None |   |
[Table 9. Request body parameters (XML or JSON)]

### Headers

The following request and response headers apply to this HTTP
action only, or apply to this action in a distinct way. For a list of general headers used
in the REST API, see [Supported REST API headers](https://servicenow-prod.fluidtopics.net/qh7RcF0RI6a~i9u3octdlg "REST (REpresentational State Transfer) is a simple stateless architecture that provides standards between computer systems on the web, making it easier for them to communicate with each other.").
{#wsd_uinified_search-GET-location__entry__16}{#wsd_uinified_search-GET-location__accept-RESTAPI}

| Header | Description |
|-|-|
| Accept | Data format of the response body. Supported types: application/json or application/xml. Default: application/json |
| Authorization | Authentication credentials. Supports Basic authentication or session-based authentication. |
[Table 10. Request headers]

{#wsd_uinified_search-GET-location__entry__22}

| Header | Description |
|-|-|
| Content-Type | Data format of the response body: application/json. |
[Table 11. Response headers]

### Status codes

The following status codes apply to this HTTP action. For a
list of possible status codes used in the REST API, see [REST API HTTP response
codes](https://servicenow-prod.fluidtopics.net/qh7RcF0RI6a~i9u3octdlg "REST (REpresentational State Transfer) is a simple stateless architecture that provides standards between computer systems on the web, making it easier for them to communicate with each other.").
{#wsd_uinified_search-GET-location__entry__26}{#wsd_uinified_search-GET-location__entry-200-status-code}

| Status code | Description |
|-|-|
| 200 | Successful. The request was successfully processed. |
| 400 | Bad Request. The userSysId parameter is missing or invalid. |
| 500 | Internal server error. An unexpected error occurred while processing the request. |
[Table 12. Status codes]

### Response body parameters (JSON or XML)

Returns a single location object when a current location is found, or an empty object {} when no location is found.{#wsd_uinified_search-GET-location__entry__34}

| Name | Description |
|-|-|
| isPrivate | Flag that indicates whether the returned location is private. A location is considered private when it's marked as private in the workplace profile or when it's associated with a reservation that has a private or sensitive status. Valid values: * `true`: Location is private or the reservation has private/sensitive status. * `false`: Location is public. {#wsd_uinified_search-GET-location__ul_zwf_j2j_cjc} Data type: Boolean |
| displayValue | Display name of the result location. For example, `Building A - Floor 2 - Workspace 201`. Data type: String |
| value | Sys_id of the result location record. Data type: String. |
| table | Name of the ServiceNow table from which the location originates For example, `sn_wsd_core_space`. Data type: String |
| label | Secondary display string providing location hierarchy context. For example, `Floor 2, Building A`. Data type: String |
| selectedTreeBranch | Sys_id of the parent location record in the workplace hierarchy. Used to pre-select the location tree in the UI. Data type: String |
| timezone | Time zone associated with the result location. Data type: Object "timezone": { "value": "String", "displayValue": "String" } |
| timezone.value | IANA time zone identifier for the result location. For example, `America/New_York`. Data type: String |
| timezone.displayValue | Human-readable timezone name. For example, `Eastern Standard Time`. Data type: String |
| wsdSource | Source system identifier for the location. Used when the location originates from an external integration. Data type: String |
| externalId | Identifier of the location record in an external source system, when applicable. Data type: String |
| floorId | Sys_id of the floor on which the location resides. Table: Workplace Floor \[sn_wsd_core_floor\] table Data type: String |
| isReservable | Flag that indicates whether the location can be reserved. Possible values: * `true`: The location is reservable. * `false`: The location isn't reservable. {#wsd_uinified_search-GET-location__ul_rqz_xhj_cjc} Data type: Boolean |
[ ]

### cURL request

The following example retrieves the current location of a specific user, including neighborhood-based location as a fallback.

    curl "https://<instance>.service-now.com/api/sn_wsd_core/wsd_unified_search/current_location
      ?userSysId=abc123def456&useNeighborhoods=true" \
      --request GET \
      --header "Accept: application/json" \
      --user "username:password"

Reponse body when location is found.

    {
      "result": {
        "displayValue": "Building A - Floor 2 - Workspace 201",
        "value": "abc123def456",
        "table": "sn_wsd_core_space",
        "label": "Floor 2, Building A",
        "selectedTreeBranch": "building789xyz",
        "timezone": {
          "value": "America/New_York",
          "displayValue": "Eastern Standard Time"
        },
        "wsdSource": "manual",
        "externalId": "EXT-WS-201",
        "floorId": "floor123",
        "isReservable": true,
        "isPrivate": false
      }
    }

Response body when location isn't found (empty object {}).

    {
      "result": {}
    }


