WSD 통합 검색 API
WSD 통합 검색 API는 직장 사용자 및 위치 전체에서 검색할 수 있는 엔드포인트를 제공합니다.
WSD 통합 검색 API는 sn_wsd_core 네임스페이스에서 실행되며 (WSD) 포털에서 워크플레이스 서비스 제공 검색/자동 완성 환경을 강화하여 일치하는 사용자, 공간, 층, 건물, 캠퍼스 및 인접 지역을 단일 응답으로 반환합니다.
요구 사항
- 호출 사용자에게 sn_wsd_core.workplace_user 역할이 있습니다.
- Core(com.sn_wsd_core) 플러그인이 워크플레이스 서비스 제공 활성 상태여야 합니다.
- 직장 위치 계층 구조에 하나 이상의 건물과 층을 구성해야 합니다.
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 | 일치하는 사용자 및 직장 위치를 찾는 데 사용되는 검색 쿼리입니다. 콤마로 구분된 값 목록을 사용하여 여러 용어를 동시에 검색할 수 있습니다. 예를 들어, "회의, 데스크" 는 두 용어 중 하나와 일치하는 결과를 반환합니다. 빈 세그먼트는 무시됩니다. 데이터 유형: 문자열 기본값: 빈 문자열(모든 결과 반환) |
| show_location | 결과 레이블에 사용자의 현재 위치를 포함할지 여부를 나타내는 플래그입니다. 가능한 값:
데이터 유형: 부울 기본값: true |
| show_loggedin_user | 검색어가 제공되지 않은 경우 인증된 사용자를 첫 번째 결과로 표시할지 여부를 나타내는 플래그입니다. 오프셋 0의 데스크톱 클라이언트에만 적용됩니다. 가능한 값:
데이터 유형: 부울 기본값: true |
| include_user_email | 결과 레이블에 사용자 이메일 주소를 포함하고 이메일 주소로 검색을 허용할지 여부를 나타내는 플래그입니다. 가능한 값:
데이터 유형: 부울 기본값: false |
| filterConfig | 테이블별로 인코딩된 쿼리. 키는 테이블 이름입니다. 값은 인코딩된 쿼리 문자열입니다. 유효한 필드(테이블 이름):
데이터 유형: 객체 기본값: {}(적용된 필터 없음, 모든 테이블 검색) |
| filterConfig.<table_name> | 지정된 테이블의 결과를 포함할지 여부를 나타내는 플래그입니다. 해당 엔터티 유형의 결과를 포함하려면 true로 설정합니다. 유효한 값은 다음과 같습니다.
데이터 유형: 부울 |
| 옵션 | 검색 동작에 대한 추가 구성을 포함하는 객체입니다. 데이터 유형: 객체 |
| options.search_in_parent | 하위 엔터티로 필터링할 때 상위 위치 기록의 결과를 포함할지 여부를 나타내는 플래그입니다. 가능한 값:
데이터 유형: 부울 |
| 옵션.캐시 | 캐시된 검색 결과를 사용할지 여부를 나타내는 플래그입니다. 가능한 값:
데이터 유형: 부울 |
| options.rsv모듈 | 예약 가능한 모듈 컨텍스트별로 결과를 필터링하기 위한 예약 모듈 구성을 포함하는 객체입니다. 데이터 유형: 객체 |
| 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. |
| 콘텐츠-형식 | 요청 본문의 데이터 형식: application/json. |
| 권한 부여 | 인증 자격 증명입니다. 기본 인증 또는 세션 기반 인증을 지원합니다. |
| 머리글 | 설명 |
|---|---|
| 콘텐츠-형식 | 응답 본문의 데이터 형식: application/json. |
상태 코드
이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.
| 상태 코드 | 설명 |
|---|---|
| 200 | 성공입니다. 요청이 성공적으로 처리되었습니다. |
| 400 | 잘못된 요청입니다. 잘못된 요청 본문 형식입니다. |
| 401 | 인증에 실패했습니다. |
| 403 | 사용자에게 필요한 ACL 권한이 없습니다. |
| 500 | 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. |
응답 본문 매개변수(JSON 또는 XML)
| 이름 | 설명 |
|---|---|
| 결과 | 요청의 결과를 포함하는 객체입니다. 데이터 유형: 객체 |
| result.isMobile | 요청이 모바일 클라이언트에서 시작된 것으로 탐지되었는지 여부를 나타내는 플래그입니다. 가능한 값:
데이터 유형: 부울 |
| 결과.더 보기 | 현재 페이지 이상에서 추가 결과를 사용할 수 있는지 여부를 나타내는 플래그입니다. 가능한 값:
데이터 유형: 부울 |
| 결과.결과 | 일치하는 사용자 및 위치 객체의 배열입니다. 각 객체에는 모든 결과 유형에서 공유되는 공통 필드와 사용자 결과에만 존재하는 유형별 필드가 포함되어 있습니다. 데이터 유형: 객체 배열 |
| result.result.displayValue | 결과의 표시 이름입니다. 예를 들어 회의실 A - 공간의 경우 1층, 사용자의 경우 Jane Doe 입니다. 데이터 유형: 문자열 |
| result.result.externalId | 해당하는 경우 외부 소스 시스템에 있는 결과 기록의 식별자입니다. 데이터 유형: 문자열 |
| result.result.floorId | 결과 위치가 있는 층의 Sys_id입니다. 위치 결과에만 표시됩니다. 테이블: 직장 층 [sn_wsd_core_floor] 데이터 유형: 문자열 |
| result.result.isReserved 가능 | 결과 위치를 예약할 수 있는지 여부를 나타내는 플래그입니다. 가능한 값:
데이터 유형: 부울 |
| 결과.결과.레이블 | 결과에 대한 추가 컨텍스트를 제공하는 보조 표시 문자열입니다. 예를 들어 공간의 위치 계층 구조나 사용자의 부서 및 직책이 있습니다. 데이터 유형: 문자열 |
| result.result.selectedTreeBranch | 이 결과와 연결된 직장 계층 구조의 상위 위치 기록 Sys_id입니다. UI에서 위치 트리를 미리 선택하는 데 사용됩니다. 데이터 유형: 문자열 |
| 결과.결과.테이블 | 결과가 시작된 테이블 이름입니다. 예를 들어 sn_wsd_core_space 또는 sys_user입니다. 데이터 유형: 문자열 |
| 결과.결과.시간대 | 결과 위치와 연결된 시간대입니다. 위치 결과에 대해 존재합니다. 데이터 유형: 객체 |
| result.result.timezone.displayValue | 사람이 읽을 수 있는 시간대 이름입니다. 예를 들어 동부 표준시입니다.데이터 유형: 문자열 |
| 결과.결과.시간대.값 | 결과 위치의 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] 데이터 유형: 문자열. |
| 결과.결과.값 | 결과 기록의 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] 데이터 유형: 문자열 |
| 사용 인접 | 예약 또는 직접 프로파일 위치를 찾을 수 없는 경우 사용자의 직장 프로파일에서 인접 기반 위치를 포함할지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
데이터 유형: 부울 기본값: false |
| 이름 | 설명 |
|---|---|
| 안 함 |
헤더
다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.
| 머리글 | 설명 |
|---|---|
| 수용 | 응답 본문의 데이터 형식입니다. 지원되는 유형은 application/json 또는 application/xml입니다. 기본값: application/json |
| 권한 부여 | 인증 자격 증명입니다. 기본 인증 또는 세션 기반 인증을 지원합니다. |
| 머리글 | 설명 |
|---|---|
| 콘텐츠-형식 | 응답 본문의 데이터 형식: application/json. |
상태 코드
이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.
| 상태 코드 | 설명 |
|---|---|
| 200 | 성공입니다. 요청이 성공적으로 처리되었습니다. |
| 400 | 잘못된 요청입니다. userSysId 매개변수가 누락되었거나 잘못되었습니다. |
| 500 | 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. |
응답 본문 매개변수(JSON 또는 XML)
현재 위치를 찾으면 단일 위치 객체를 반환하고, 위치를 찾을 수 없으면 빈 객체 {}를 반환합니다.| 이름 | 설명 |
|---|---|
| isPrivate | 반환된 위치가 비공개인지 여부를 나타내는 플래그입니다. 위치가 직장 프로필에서 비공개로 표시되어 있거나 비공개 또는 민감한 상태의 예약과 연결된 경우 비공개로 간주됩니다. 유효한 값은 다음과 같습니다.
데이터 유형: 부울 |
| displayValue | 결과 위치의 표시 이름입니다. 예를 들어, 건물 A - 2층 - 작업 공간 201입니다.데이터 유형: 문자열 |
| 값 | 결과 위치 기록의 Sys_id입니다. 데이터 유형: 문자열. 최대 길이: 32 |
| 테이블 | 위치가 시작된 ServiceNow 테이블의 이름 예를 들면 sn_wsd_core_space입니다.데이터 유형: 문자열 |
| 레이블 | 위치 계층 구조 컨텍스트를 제공하는 보조 표시 문자열입니다. 예를 들어 2 층, 건물 A입니다.데이터 유형: 문자열 |
| selectedTreeBranch | 직장 계층 구조의 상위 위치 기록 Sys_id입니다. UI에서 위치 트리를 미리 선택하는 데 사용됩니다. 데이터 유형: 문자열 |
| 시간대 | 결과 위치와 연결된 시간대입니다. 데이터 유형: 객체 |
| 시간대.값 | 결과 위치의 IANA 시간대 식별자입니다. 예: 아메리카/New_York.데이터 유형: 문자열 |
| timezone.displayValue | 사람이 읽을 수 있는 시간대 이름입니다. 예: 미국/동부.데이터 유형: 문자열 |
| wsd소스 | 위치의 소스 시스템 식별자입니다. 위치가 외부 통합에서 시작된 경우 사용됩니다. 데이터 유형: 문자열 |
| externalId | 해당되는 경우 외부 소스 시스템의 위치 기록 식별자입니다. 데이터 유형: 문자열 |
| floorId | 위치가 있는 층의 Sys_id입니다. 테이블: 직장 층 [sn_wsd_core_floor] 테이블 데이터 유형: 문자열 |
| isReserved 가능 | 위치를 예약할 수 있는지 여부를 나타내는 플래그입니다. 가능한 값:
데이터 유형: 부울 |
| 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": {}
}