WSD 統一検索 API
WSD 統一検索 API は、職場のユーザーと場所を検索するためのエンドポイントを提供します。
WSD 統一検索 API は sn_wsd_core 名前空間で実行され、ワークプレイスサービスデリバリ (WSD) ポータルでの検索/先行入力エクスペリエンスを強化し、一致するユーザー、スペース、フロア、建物、敷地、および近隣を単一の応答で返します。
要件
- 呼び出し元ユーザーには sn_wsd_core.workplace_user ロールがあります。
- ワークプレイスサービスデリバリ Core (com.sn_wsd_core) プラグインがアクティブである。
- 少なくとも 1 つの建物とフロアが職場の場所階層で構成されている必要があります。
WSD 統一検索:POST /api/sn_wsd_core/wsd_unified_search/users_and_locations
指定された検索用語に一致するユーザーと職場の場所 (大文字と小文字の区別なし) を検索します。ページネーションをサポートする一致結果の組み合わせリストを返します。
URL 形式
バージョニングされた URL: /api/sn_wsd_core/{api_version}/wsd_unified_search/users_and_locations
デフォルト URL: /api/sn_wsd_core/wsd_unified_search/users_and_locations
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプション。アクセスするエンドポイントのバージョン。たとえば、 v1 や v2 などです。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| なし |
| 名前 | 説明 |
|---|---|
| search_term | 一致するユーザーと職場の場所を検索するために使用される検索クエリ。複数の用語を同時に検索するための値のカンマ区切りリストを受け入れます。たとえば 、「Conference, Desk」の場合、 いずれかの用語に一致する結果が返されます。空のセグメントは無視されます。 データタイプ:文字列 デフォルト値:空の文字列 (すべての結果を返します) |
| show_location | 結果ラベルにユーザーの現在の場所を含めるかどうかを示すフラグ。 可能な値:
データタイプ:ブーリアン デフォルト:true |
| show_loggedin_user | 検索用語が指定されていない場合に、認証されたユーザーを最初の結果として表示するかどうかを示すフラグ。オフセット 0 のデスクトップクライアントにのみ適用されます。 可能な値:
データタイプ:ブーリアン デフォルト:true |
| include_user_email | 結果ラベルにユーザーのメールアドレスを含め、メールアドレスによる検索を許可するかどうかを示すフラグ。 可能な値:
データタイプ:ブーリアン デフォルト値:false |
| filterConfig | テーブル固有のエンコードクエリ。キーはテーブル名です。値はエンコードされたクエリ文字列です。 有効なフィールド (テーブル名):
データタイプ: オブジェクト デフォルト:{} (フィルターが適用されていません。すべてのテーブルが検索されます) |
| filterConfig.<table_name> | 指定したテーブルの結果を含めるかどうかを示すフラグ。true に設定すると、そのエンティティタイプからの結果が組み込まれます。 有効な値:
データタイプ:ブーリアン |
| オプション | 検索動作の追加構成を含むオブジェクト。 データタイプ: オブジェクト |
| options.search_in_parent | 子エンティティでフィルタリングするときに、親の場所レコードからの結果を含めるかどうかを示すフラグ。 可能な値:
データタイプ:ブーリアン |
| options.cache | キャッシュされた検索結果を使用するかどうかを示すフラグ。 可能な値:
データタイプ:ブーリアン |
| options.rsvModule | 予約可能モジュールコンテキストで結果をフィルタリングするための予約モジュール構成を含むオブジェクト。 データタイプ: オブジェクト |
| options.rsvModule.value | 利用可能なスペースをフィルタリングするために使用する予約可能モジュールのSys_id。 テーブル:予約可能なモジュール [sn_wsd_rsv_reservable_module] データタイプ:文字列 |
| options.rsvModule.enable_restricted_neighborhood_rules | 予約モジュールで結果をフィルタリングするときに、制限付き近隣ルールを適用するかどうかを示すフラグ。 可能な値:
データタイプ:ブーリアン |
| sysparam_offset | ページネーションオフセット。結果を返す前にスキップするレコードの数。ページネーションに sysparam_limit とともに使用します。 最小値:0 データタイプ:数値 デフォルト値:0 |
| sysparam_limit | 要求ごとに返されるレコードの最大数。ページネーションに sysparam_offset とともに使用します。 最小値:1 データタイプ:数値 デフォルト値:10 |
ヘッダー
次の要求ヘッダーと応答ヘッダーは、この HTTP アクションにのみ適用されるか、別の方法でこのアクションに適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| 承認 | 応答本文のデータフォーマット。サポートされているタイプ:application/json、application/xml、text/xml。 |
| Content-Type | 要求本文のデータ形式:application/json。 |
| 認証 | 認証情報。ベーシック認証またはセッションベースの認証をサポートします。 |
| ヘッダー | 説明 |
|---|---|
| Content-Type | 応答本文のデータ形式:application/json。 |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 200 | 成功。要求が正常に処理されました。 |
| 400 | 要求が正しくありません。要求本文の形式が無効です。 |
| 401 | 認証に失敗しました。 |
| 403 | 必要な ACL 権限がユーザーにありません。 |
| 500 | 内部サーバーエラー要求の処理中に予期しないエラーが発生しました。 |
応答本文のパラメーター (JSON または XML)
| 名前 | 説明 |
|---|---|
| result | 要求の結果を含むオブジェクト。 データタイプ: オブジェクト |
| result.isMobile | 要求がモバイルクライアントからのものとして検出されたかどうかを示すフラグ。 可能な値:
データタイプ:ブーリアン |
| result.more | 現在のページ以外に追加の結果があるかどうかを示すフラグ。 可能な値:
データタイプ:ブーリアン |
| result.result | 一致するユーザーオブジェクトと場所オブジェクトのアレイ。各オブジェクトには、すべての結果タイプで共有される共通フィールドと、ユーザーの結果にのみ存在するタイプ固有のフィールドが含まれています。 データタイプ:オブジェクトのアレイ |
| result.result.displayValue | 結果の表示名。たとえば、スペースの場合は 「会議室 A - フロア 1 」、ユーザーの場合は「 Jane Doe 」などです。 データタイプ:文字列 |
| result.result.externalId | 外部ソースシステム内の結果レコードの識別子 (該当する場合)。 データタイプ:文字列 |
| result.result.floorId | 結果の場所が存在するフロアのSys_id。場所の結果にのみ存在します。 テーブル:職場フロア [sn_wsd_core_floor] データタイプ:文字列 |
| result.result.isReservable | 結果の場所を予約できるかどうかを示すフラグ。 可能な値:
データタイプ:ブーリアン |
| result.result.label | 結果の追加コンテキストを提供するセカンダリ表示文字列。たとえば、スペースの場所階層や、ユーザーの部門と役職などです。 データタイプ:文字列 |
| result.result.selectedTreeBranch | この結果に関連付けられている職場階層内の親の場所レコードのSys_id。UI で場所ツリーを事前に選択するために使用されます。 データタイプ:文字列 |
| result.result.table | 結果の発生元のテーブル名。たとえば、 sn_wsd_core_space や sys_user などです。 データタイプ:文字列 |
| result.result.timezone | 結果の場所に関連付けられたタイムゾーン。場所の結果に存在します。 データタイプ: オブジェクト |
| result.result.timezone.displayValue | 分かりやすいタイムゾーン名。たとえば、 東部標準時などです。データタイプ:文字列 |
| result.result.timezone.value | 結果の場所の IANA タイムゾーン識別子。たとえば、 アメリカ/New_Yorkなどです。データタイプ:文字列 |
| result.result.userDetails | ユーザーの結果に関する追加の詳細を含むオブジェクト。ユーザーの結果にのみ存在します (ユーザー [sys_user] テーブル)。 データタイプ: オブジェクト |
| result.result.userDetails.avatar | ユーザーのプロファイルアバター画像への相対 URL パス。 データタイプ:文字列 |
| result.result.userDetails.department | ユーザーが所属する部門の名前。 データタイプ:文字列 |
| result.result.userDetails.initials | ユーザーの表示名から派生したイニシャル。アバターが利用できない場合の代替として使用されます。たとえば、Jane Doe の場合は JD です。データタイプ:文字列 |
| result.result.userDetails.name | ユーザーの完全な表示名。例: Jane Doe。データタイプ:文字列 |
| result.result.userDetails.userID | ユーザーレコードの Sys_id。 テーブル: ユーザー [sys_user] データタイプ:文字列。 |
| result.result.value | 結果レコードのSys_id。 データタイプ:文字列 |
| result.result.wsdSource | 結果のソースシステム識別子。場所が外部統合から取得される場合に使用されます。 データタイプ:文字列 |
cURL 要求
次の例では、特定の建物内で「会議」または「デスク」に一致するスペースを検索し、最大 10 件の結果を返します。
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": {},
"options": {
"search_in_parent": false,
"cache": true
},
"sysparam_offset": 0,
"sysparam_limit": 10
}
}'
応答本文。
{
"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 要求
さまざまな検索条件の例を次に示します。
すべての場所とユーザーを検索:
{
"search_term": "engineering",
"filterConfig": {},
"sysparm_offset": 0,
"sysparm_limit": 20
}
予約可能スペースのみを検索:
{
"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
}
IT 部門のアクティブなユーザーのみを検索:
{
"search_term": "smith",
"include_user_email": true,
"filterConfig": {
"sys_user": "department.name=IT Department"
},
"sysparm_offset": 0,
"sysparm_limit": 10
}
アクセスが制限されている近隣の検証を検索:
{
"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 統一検索:GET /api/sn_wsd_core/wsd_unified_search/current_location
アクティブな予約、ワークプレイスプロファイル、または近隣のアサインに基づいて、特定のユーザーの現在の場所を取得します。最も関連性の高いパブリックロケーションを最初に返し、パブリックロケーションが見つからない場合はプライベートロケーションにフォールバックします。
URL 形式
バージョニングされた URL: /api/sn_wsd_core/{api_version}/wsd_unified_search/current_location
デフォルト URL: /api/sn_wsd_core/wsd_unified_search/current_location
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプション。アクセスするエンドポイントのバージョン。たとえば、 v1 や v2 などです。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| 名前 | 説明 |
|---|---|
| userSysId | 必須です。現在の場所を取得するユーザーのSys_id。 テーブル: ユーザー [sys_user] データタイプ:文字列 |
| useNeighborhoods | 予約または直接プロファイルの場所が見つからない場合に、ユーザーのワークプレイスプロファイルから近隣ベースの場所を含めるかどうかを示すフラグ。 有効な値:
データタイプ:ブーリアン デフォルト値:false |
| 名前 | 説明 |
|---|---|
| なし |
ヘッダー
次の要求ヘッダーと応答ヘッダーは、この HTTP アクションにのみ適用されるか、別の方法でこのアクションに適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| 承認 | 応答本文のデータフォーマット。サポートされるタイプ:application/json または application/xml。 デフォルト: application/json |
| 認証 | 認証情報。ベーシック認証またはセッションベースの認証をサポートします。 |
| ヘッダー | 説明 |
|---|---|
| Content-Type | 応答本文のデータ形式:application/json。 |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 200 | 成功。要求が正常に処理されました。 |
| 400 | 要求が正しくありません。userSysId パラメーターがないか、無効です。 |
| 500 | 内部サーバーエラー要求の処理中に予期しないエラーが発生しました。 |
応答本文のパラメーター (JSON または XML)
現在の場所が見つかった場合は単一の場所オブジェクトを返し、場所が見つからない場合は空のオブジェクト {} を返します。| 名前 | 説明 |
|---|---|
| isPrivate | 返された場所がプライベートであるかどうかを示すフラグ。場所は、ワークプレイスプロファイルでプライベートとしてマークされている場合、またはプライベートまたは機密ステータスの予約に関連付けられている場合、プライベートと見なされます。 有効な値:
データタイプ:ブーリアン |
| displayValue | 結果の場所の表示名。たとえば、 建物 A - フロア 2 - ワークスペース 201 などです。データタイプ:文字列 |
| value | 結果の場所レコードのSys_id。 データタイプ:文字列。 最大長:32 |
| table | 場所の発生元の ServiceNow テーブルの名前 たとえば、「 sn_wsd_core_space」などです。データタイプ:文字列 |
| label | 場所階層コンテキストを提供するセカンダリ表示文字列。たとえば 、建物 A の 2 階などです。データタイプ:文字列 |
| selectedTreeBranch | 職場階層内の親の場所レコードのSys_id。UI で場所ツリーを事前に選択するために使用されます。 データタイプ:文字列 |
| タイムゾーン | 結果の場所に関連付けられたタイムゾーン。 データタイプ: オブジェクト |
| timezone.value | 結果の場所の IANA タイムゾーン識別子。たとえば、 アメリカ/New_Yorkなどです。データタイプ:文字列 |
| timezone.displayValue | 分かりやすいタイムゾーン名。たとえば、 米国/東部です。データタイプ:文字列 |
| wsd ソース | 場所のソースシステム識別子。場所が外部統合から取得される場合に使用されます。 データタイプ:文字列 |
| externalId | 外部ソースシステム内の場所レコードの識別子 (該当する場合)。 データタイプ:文字列 |
| floorId | 場所が存在するフロアのSys_id。 テーブル:職場フロア [sn_wsd_core_floor] テーブル データタイプ:文字列 |
| 予約可能 | 場所を予約できるかどうかを示すフラグ。 可能な値:
データタイプ:ブーリアン |
| isPrivate | 返された場所がプライベートであるかどうかを示すフラグ。 場所がワークプレイスプロファイルでプライベートとしてマークされている場合、またはプライベートまたは機密ステータスの予約に関連付けられている場合は、場所がプライベートと見なされます。 可能な値:
データタイプ:ブーリアン |
cURL 要求
次の例では、フォールバックとして近隣ベースの場所を含む、特定のユーザーの現在の場所を取得します。
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"
場所が見つかった場合の応答本文。
{
"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": "US/Eastern"
},
"wsdSource": "manual",
"externalId": "EXT-WS-201",
"floorId": "floor123",
"isReservable": true,
"isPrivate": false
}
}
場所が見つからない場合の応答本文 (空のオブジェクト {})。
{
"result": {}
}