--- title: WSD Unified Search API description: The WSD Unified Search API provides an endpoint to search across workplace users and locations.Searches for users and workplace locations \(case-insensitive\) matching the provided search term. Returns a combined list of matching results with pagination support.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. locale: en-US canonical_url: https://www.servicenow.com/docs/r/australia/api-reference/rest-apis/wsd\_unified-search-api.html release: australia product: REST APIs classification: rest-apis topic_type: concept last_updated: "2026-04-28" reading_time_minutes: 12 keywords: [Workplace Service Delivery Core, WSD] breadcrumb: [REST API reference, API reference, API implementation and reference] --- # WSD Unified Search API 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 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. **Parent Topic:**[REST API reference](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/api-reference/rest-apis/api-rest.md) ## WSD Unified Search - POST /api/sn\_wsd\_core/wsd\_unified\_search/users\_and\_locations 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
| Name | Description |
|---|---|
| api\_version | Optional. Version of the endpoint to access. For example, `v1` or `v2`. Only specify this value to use an endpoint version other than the latest. Data type: String |
| 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, `"Conference, Desk"` 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. 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. 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 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
Data type: Object
```
"filterConfig": {
" |
| 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. 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. 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 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. 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 |
| 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. 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. 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, `Conference Room A - Floor 1` for a space or `Jane Doe` 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. 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, `sn_wsd_core_space` or `sys_user`.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 `Jane Doe`.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 |
| Name | Description |
|---|---|
| api\_version | Optional. Version of the endpoint to access. For example, `v1` or `v2`. Only specify this value to use an endpoint version other than the latest. Data type: String |
| 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. Data type: Boolean Default: false |
| 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. |
| 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. 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. Data type: Boolean |