약속 오픈 API

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 20분
  • 약속 오픈 API는 약속 예약 애플리케이션과 상호작용할 수 있는 통신 API입니다. 이 API를 사용하여 약속을 예약하고 사용 가능한 시간 슬롯을 검색합니다.

    약속 개방형 API는 개방형 API TMForum TMF646 약속 REST API 사양의 구현이며 ServiceNow® TM Forum의 적합성 인증을 받았습니다. 이 구현은 TMF646 약속 API REST 사양 R16.0.1을 기반으로 합니다.

    TMF 적합성 로고
    이 API에는 다음에서 사용할 수 있는 다음 플러그인이 필요합니다.ServiceNow Store
    • 약속 예약(com.snc.appointment_booking)
    • 현장 서비스 관리(com.snc.work_management)
    • 통신용 현장 서비스 관리(com.sn_fsmt)
    • 통신 개방형 API(com.sn_tmf_api)

    이 API를 사용하기 전에 약속 예약 구성 및 서비스 구성을 설정해야 합니다. 또한 약속을 예약 중인 작업이 있어야 합니다.

    이 API는 sn_tmf_api 네임스페이스 내에서 제공됩니다. 호출 사용자에게 sn_tmf_api.appointment_integrator 역할이 있어야 합니다.

    약속 오픈 - GET /api/sn_tmf_api/appointment/searchTimeSlot

    약속 예약 서비스 구성에 구성된 시간 슬롯을 해당 가용성과 함께 반환합니다.

    URL 형식

    /api/sn_tmf_api/appointment/searchTimeSlot

    지원되는 요청 매개변수

    표 1. 경로 매개변수
    이름 설명
    없음
    표 2. 쿼리 매개변수
    이름 설명
    catalog_id 필수 약속 예약 서비스 구성으로 구성된 기록 생성자의 Sys_id입니다.

    데이터 유형: 문자열

    테이블: 기록 생성자 [sc_cat_item_producer]

    end_date 필수 약속을 검색하려는 기간의 종료 날짜 및 시간입니다.

    데이터 유형: 문자열

    형식: YYYY-MM-DD 00:00:00. 예: 2025-01-31 12:00:00.

    위치 약속 위치의 Sys_id입니다.

    테이블: 위치 [cmn_location]

    데이터 유형: 문자열

    기본값: 지정되지 않은 경우 모든 위치를 반환합니다.

    opened_for 필수 약속이 예약되는 사용자의 Sys_id입니다.

    테이블: 연락처 [customer_contact]

    데이터 유형: 문자열

    start_date 필수 약속을 검색하려는 기간의 시작 날짜 및 시간입니다.

    데이터 유형: 문자열

    형식: YYYY-MM-DD 00:00:00. 예: 2025-01-31 09:00:00.

    표 3. 요청 본문 매개변수
    이름 설명
    안 함

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 4. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 5. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 6. 상태 코드
    상태 코드 설명
    200 성공입니다. 요청이 성공적으로 처리되었습니다.
    400 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다.
    500 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다.

    응답 본문 매개변수

    이름 설명
    availableTime슬롯 지정된 요청 시간 블록 내의 약속 슬롯 목록입니다.

    데이터 유형: 객체 배열

    'availableTimeSlot': [
     { 
      "available": Boolean,
      "end_date": "String",
      "end_date_display": "String",
      "end_dateUTC": "String",
      "start_date": "String",
      "start_date_display": "String",
      "start_dateUTC": "String"
     }
    ]
    availableTimeSlot.available 연결된 시간 슬롯을 사용할 수 있는지 여부를 나타내는 플래그입니다.
    가능한 값:
    • true: 시간 슬롯을 사용할 수 있습니다.
    • false: 시간 슬롯을 사용할 수 없습니다.

    데이터 유형: 부울

    availableTimeSlot.end_date 연결된 약속의 종료 날짜 및 시간입니다. 시간대는 매개변수의 timeZone 값을 기반으로 합니다.

    데이터 유형: 문자열

    형식: YYYY-MM-DD 00:00:00. 예: 2025-01-31 09:35:43.

    availableTimeSlot.end_date_display 연결된 약속의 종료 날짜 및 시간을 표시합니다. 시간대는 매개변수의 timeZone 값을 기반으로 합니다.

    데이터 유형: 문자열

    형식: YYYY-MM-DD 00:00:00. 예: 2025-01-31 09:35:43.

    availableTimeSlot.end_dateUTC 연결된 약속의 종료 날짜 및 시간입니다.

    데이터 유형: 문자열

    형식: UTC

    availableTimeSlot.start_date 연결된 약속의 시작 날짜 및 시간입니다. 매개변수 값을 반영합니다 timeZone .

    데이터 유형: 문자열

    형식: YYYY-MM-DD 00:00:00. 예: 2025-01-31 09:35:43.

    availableTimeSlot.start_date_display 연결된 약속의 시작 날짜 및 시간을 표시합니다. 매개변수 값을 반영합니다 timeZone .

    데이터 유형: 문자열

    형식: YYYY-MM-DD 00:00:00. 예: 2025-01-31 09:35:43.

    availableTimeSlot.start_dateUTC 연결된 약속의 시작 날짜 및 시간입니다.

    데이터 유형: 문자열

    형식: UTC

    hasMore 제한을 반환한 후 가져올 약속 슬롯이 더 있는지 여부를 나타내는 플래그입니다. 이 제한은 약속 예약 속성 sn_apptmnt_booking.max_appointments_returned에 지정됩니다(기본값: 100). 이 속성에 대한 자세한 내용은 다음을 참조하십시오 Appointment booking components .
    가능한 값:
    • 예: 더 많은 약속 슬롯을 가져올 수 있습니다.
    • false: 더 이상 사용할 수 있는 약속 슬롯이 없습니다.

    데이터 유형: 부울

    noApptAvailable 지정된 날짜 및 시간에 사용할 수 있는 약속 슬롯이 더 있는지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 지정된 날짜 및 시간에 더 많은 약속 슬롯을 사용할 수 있습니다.
    • false: 지정된 날짜 및 시간에 사용할 수 있는 약속 슬롯이 없습니다.

    데이터 유형: 부울

    검색 결과 지정된 검색 시간 슬롯 내의 약속 가용성에 대한 결과입니다.
    가능한 값:
    • 성공
    • 실패

    데이터 유형: 문자열

    상태 사용 가능한 시간 슬롯 검색의 완료 상태입니다. 예: 완료.

    데이터 유형: 문자열

    시간대 지정된 약속 슬롯을 예약하거나 업데이트할 때 사용되는 시간대입니다.

    날짜 유형: 문자열

    형식: 미국/동부와 같은 국가/도시 또는 지역 형식

    cURL 요청

    다음 코드 예제에서는 이 엔드포인트를 호출하는 방법을 보여 줍니다.

    curl --location --request GET 'https://instance.service-now.com/api/sn_tmf_api/appointment/searchTimeSlot?
    start_date=2024-07-10 09:00:00&end_date=2024-07-20 23:00:00&catalog_id=ada50a93f0220210f8776517d8c8e776&
    opened_for=51670151c35420105252716b7d40ddfe&location=f48b21850a0a0ba7004182b18099696d ' \
    --user 'username':'password'

    결과:

    {
      "searchResult": "success",
      "status": "done",
      "availableTimeSlot": [
        {
          "start_date": "2024-07-10 09:00:00",
          "end_date": "2024-07-10 12:00:00",
          "start_date_display": "09:00",
          "end_date_display": "12:00",
          "start_dateUTC": "2024-07-10 16:00:00",
          "end_dateUTC": "2024-07-10 19:00:00",
          "available": false
        },
        {
          "start_date": "2024-07-11 13:00:00",
          "end_date": "2024-07-11 16:00:00",
          "start_date_display": "13:00",
          "end_date_display": "16:00",
          "start_dateUTC": "2024-07-11 20:00:00",
          "end_dateUTC": "2024-07-11 23:00:00",
          "available": true
        },
        {
          "start_date": "2024-07-12 09:00:00",
          "end_date": "2024-07-12 12:00:00",
          "start_date_display": "09:00",
          "end_date_display": "12:00",
          "start_dateUTC": "2024-07-12 16:00:00",
          "end_dateUTC": "2024-07-12 19:00:00",
          "available": true
        },
        {
          "start_date": "2024-07-12 13:00:00",
          "end_date": "2024-07-12 16:00:00",
          "start_date_display": "13:00",
          "end_date_display": "16:00",
          "start_dateUTC": "2024-07-12 20:00:00",
          "end_dateUTC": "2024-07-12 23:00:00",
          "available": true
        },
        {
          "start_date": "2024-07-19 13:00:00",
          "end_date": "2024-07-19 16:00:00",
          "start_date_display": "13:00",
          "end_date_display": "16:00",
          "start_dateUTC": "2024-07-19 20:00:00",
          "end_dateUTC": "2024-07-19 23:00:00",
          "available": true
        }
      ],
      "hasMore": false,
      "noApptAvailable": false,
      "timeZone": "US/Arizona"
    }

    약속 오픈 - POST /api/sn_tmf_api/appointment/appointment

    작업 주문에 대한 약속을 예약할 수 있습니다.

    URL 형식

    /api/sn_tmf_api/약속/약속

    지원되는 요청 매개변수

    표 7. 경로 매개변수
    이름 설명
    없음
    표 8. 쿼리 매개변수
    이름 설명
    없음
    표 9. 요청 본문 매개변수
    이름 설명
    범주 필수 약속 예약 서비스 구성에 대해 구성된 기록 생성자의 Sys_id입니다.

    데이터 유형: 문자열

    테이블: 약속 예약 서비스 구성 [sn_apptmnt_booking_service_config] 테이블의 카탈로그 항목 필드

    relatedEntity 필수 약속과 연결할 영향을 받는 작업 주문의 목록입니다.

    데이터 유형: 객체 배열

    "relatedEntity": [
      {
        "@referredType": "String"
        "id": "String",
      }
    ]
    relatedEntity.@referredType 필수 항목 또는 서비스의 유형입니다.

    유효한 값만: WorkOrder

    데이터 유형: 문자열

    테이블: 작업 주문 [wm_order]

    relatedEntity.id 필수 관련 엔터티의 Sys_id입니다.

    데이터 유형: 문자열

    테이블: workOrder [wm_order]

    기본값: sys_id 제공되지 않은 경우 모두를 반환합니다.

    relatedEntity.role 필수 관련 엔터티에 대한 역할 설명입니다.

    유효한 값만: 작업 주문

    데이터 유형: 문자열

    테이블: 작업 주문 [wm_order]

    관련당사자 필수 약속의 연락처 목록입니다. 각 접촉 창구는 배열의 객체입니다. 요청에는 고객 계정 정보가 포함된 항목이 하나 이상 나열되어야 합니다.

    데이터 유형: 객체 배열

    "relatedParty": [ 
     {
      "@referredType": "String",
      "id": "String",
      "name": "String",
      "role": "String"
     }
    ]
    relatedParty.@referredType 고객의 유형입니다.

    유효한 값만: 개별

    데이터 유형: 문자열

    relatedParty.id 필수 작업 주문과 관련된 연락처의 Sys_id 또는 external_id입니다.

    데이터 유형: 문자열

    테이블: 연락처 [customer_contact]

    relatedParty.name 연락처의 이름입니다.

    데이터 유형: 문자열

    테이블: 연락처 [customer_contact]

    relatedParty.role 필수 접촉 창구의 역할입니다.
    가능한 값:
    • 고객: 접촉 창구에 고객 역할이 있습니다.
    • 기술자: 접촉 창구에 기술자 역할이 있습니다.

    데이터 유형: 문자열

    테이블: 연락처 [customer_contact]

    관련 장소 필수 약속과 관련된 위치의 목록입니다.

    데이터 유형: 객체 배열

    "relatedPlace": [
     {
      "@referredType": "String",
      "id": "String",
      "name": "String",
      "role": "String"
     }
    ]
    relatedPlace.@referredType 필수 위치 유형입니다. 예를 들면 구/군/시입니다.

    데이터 유형: 문자열

    테이블: 위치 [cmn_location]

    relatedPlace.id 필수 관련 위치의 Sys_id입니다.

    데이터 유형: 문자열

    테이블: 위치 [cmn_location]

    relatedPlace.name 접촉 창구와 관련된 위치의 이름입니다. 예: 251 Reddy St, Darwin, CA 93522.

    데이터 유형: 문자열

    테이블: 위치 [cmn_location]

    relatedPlace.role 필수 위치 역할에 대한 설명입니다. 예를 들어, 작업 주문입니다.

    데이터 유형: 문자열

    시간대 필수 지정된 약속 슬롯을 예약할 때 사용할 시간대입니다.

    날짜 유형: 문자열

    형식: 미국/동부와 같은 국가/도시 또는 지역 형식

    유효한대상 필수 약속이 유효한 날짜 범위입니다.

    데이터 유형: 객체

    "validFor": {
      "endDateTime": "String",
      "startDateTime": "String"
    }
    validFor.endDateTime 필수 시간 슬롯의 종료 날짜 및 시간입니다.

    데이터 유형: 문자열

    형식: YYYY-MM-DD 00:00:00. 예: 2025-01-31 09:35:43.

    validFor.startDateTime 필수 시간 슬롯의 시작 날짜 및 시간입니다.

    데이터 유형: 문자열

    형식: YYYY-MM-DD 00:00:00. 예: 2025-01-31 09:35:43.

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 10. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 11. 응답 헤더
    머리글 설명
    콘텐츠-형식 요청 본문의 데이터 형식입니다. application/json만 지원합니다.

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 12. 상태 코드
    상태 코드 설명
    200 성공입니다. 요청이 성공적으로 처리되었습니다.
    500 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다.

    응답 본문 매개변수

    이름 설명
    범주 약속 예약 서비스 구성에 대해 구성된 기록 생성자의 Sys_id입니다.

    데이터 유형: 문자열

    저장 위치: 약속 예약 서비스 구성[sn_apptmnt_booking_service_config] 테이블의 카탈로그 항목 필드

    creationDate 약속이 생성된 날짜 및 시간입니다.

    데이터 유형: 문자열

    형식: YYYY-MM-DD 00:00:00. 예: 2025-01-31 09:35:43.

    href 약속 기록에 대한 하이퍼링크입니다. 다른 약속 열기 API 요청에서 이 링크를 사용하여 약속을 재조정하거나 삭제합니다.

    데이터 유형: 문자열

    ID 약속의 Sys_id입니다.

    데이터 유형: 문자열

    저장 위치: 약속 예약 서비스 구성 [sn_apptmnt_booking_service_config] 테이블

    마지막 업데이트 약속이 마지막으로 업데이트된 날짜 및 시간입니다.

    데이터 유형: 문자열

    형식: YYYY-MM-DD 00:00:00. 예: 2025-01-31 09:35:43.

    relatedEntity 약속의 관련 엔터티에 대한 상세 정보입니다.

    데이터 유형: 객체 배열

    "relatedEntity": [
     {
      "@referredType": "String",
      "id": "String",
      "role": "String"
      }
    ]
    relatedEntity.@referredType 항목 또는 서비스의 유형입니다.

    데이터 유형: 문자열

    저장 위치: workOrder [wm_order] 테이블

    relatedEntity.id 관련 엔터티의 Sys_id입니다.

    데이터 유형: 문자열

    저장 위치: workOrder [wm_order] 테이블

    relatedEntity.role 관련 엔터티에 대한 역할 설명입니다.

    가능한 값: 작업 주문

    데이터 유형: 문자열

    저장 위치: workOrder [wm_order] 테이블

    관련당사자 약속의 연락처 목록입니다. 각 접촉 창구는 배열의 객체입니다.

    데이터 유형: 객체 배열

    "relatedParty": [
     {
      "@referredType": "String",
      "id": "String",
      "name": " String",
      "role": "String"
     }
    ]
    relatedParty.@referredType 고객의 유형입니다.

    데이터 유형: 문자열

    저장 위치: 연락처 [customer_contact] 테이블

    relatedParty.id 작업 주문과 연결된 고객 접촉 창구의 Sys_id입니다.

    데이터 유형: 문자열

    저장 위치: 연락처 [customer_contact] 테이블

    relatedParty.name 고객 접촉 창구의 이름입니다.

    데이터 유형: 문자열

    저장 위치: 연락처 [customer_contact] 테이블

    relatedParty.role 고객 접촉 창구의 역할입니다.
    가능한 값:
    • 고객: 접촉 창구에 고객 역할이 있습니다.
    • 기술자: 접촉 창구에 기술자 역할이 있습니다.

    데이터 유형: 문자열

    저장 위치: 연락처 [customer_contact] 테이블

    관련 장소 연결된 약속의 위치 상세 정보입니다.

    데이터 유형: 객체

    "relatedPlace": {
      "@referredType": "String",
      "id": "String",
      "name": "String",
      "role": "String"
    }
    relatedPlace.@referredType 약속의 지리적 주소입니다.

    가능한 값: GeographicLocation

    데이터 유형: 문자열

    저장 위치: 위치 [cmn_location] 테이블

    relatedPlace.id 위치의 Sys_id입니다.

    데이터 유형: 문자열

    저장 위치: 위치 [cmn_location] 테이블

    relatedPlace.name 접촉 창구와 관련된 위치의 이름입니다. 예를 들면 100 South Charles Street, Baltimore, MD입니다.

    데이터 유형: 문자열

    저장 위치: 위치 [cmn_location] 테이블

    relatedPlace.role 개입 주소로서의 약속 위치의 역할입니다.

    가능한 값: InterventionAddress

    데이터 유형: 문자열

    저장 위치: 위치 [cmn_location] 테이블

    성공 요청의 성공 여부를 나타내는 플래그입니다.
    가능한 값:
    • true: 요청 성공.
    • false: 요청에 실패했습니다.

    데이터 유형: 부울

    시간대 지정된 약속 슬롯을 예약하거나 업데이트할 때 사용되는 시간대입니다.

    날짜 유형: 문자열

    형식: 미국/동부와 같은 국가/도시 또는 지역 형식

    유효한대상 약속이 유효한 날짜 범위입니다.

    데이터 유형: 객체

    "validFor": {
     "endDateTime": "String"
     "startDateTime": "String"
    }
    validFor.endDateTime 약속의 종료 날짜 및 시간입니다.

    데이터 유형: 문자열

    형식: YYYY-MM-DD 00:00:00. 예: 2025-01-31 09:35:43.

    validFor.startDateTime 약속의 시작 날짜 및 시간입니다.

    데이터 유형: 문자열

    형식: YYYY-MM-DD 00:00:00. 예: 2025-01-31 09:35:43.

    cURL 요청

    다음 예시는 새 약속 예약을 생성하는 방법을 보여줍니다.

    curl "https://instance.servicenow.com/api/sn_tmf_api/appointment/appointment" \
    --request POST \
    --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --data "{
      \"validFor\": {
        \"startDateTime\": \"2024-08-19 09:00:00\",
        \"endDateTime\": \"2024-08-19 11:00:00\"
      },
      \"category\": \"e4c1116b3b810300ce8a4d72f3efc40f\",
      \"relatedParty\": [
        {
          \"id\": \"eaf68911c35420105252716b7d40ddde\",
          \"name\": \"Sally Thomas\",
          \"role\": \"customer\",
          \"@referredType\": \"Individual\"
        }
      ],
      \"relatedPlace\": {
        \"id\": \"25ab9c4d0a0a0bb300f7dabdc0ca7c1c\",
        \"name\": \"100 South Charles Street, Baltimore,MD\",
        \"role\": \"interventionAddress\",
        \"@referredType\": \"GeographicAddress\"
      },
      \"relatedEntity\": [
        {
          \"id\": \"48dbfbf9201f0250f877303e8a020dcd\",
          \"role\": \"work order\",
          \"@referredType\": \"WorkOrder\"
        }
      ],
      \"timeZone\": \"US/Arizona\"
    }" \
    --user 'username':'password'

    응답:

    {
      "validFor": {
        "startDateTime": "2024-07-19 09:00:00",
        "endDateTime": "2024-07-19 11:00:00"
      },
      "category": "e4c1116b3b810300ce8a4d72f3efc40f",
      "relatedParty": [
        {
          "id": "eaf68911c35420105252716b7d40ddde",
          "name": "Sally Thomas",
          "role": "customer",
          "@referredType": "Individual"
        }
      ],
      "relatedPlace": {
        "id": "25ab9c4d0a0a0bb300f7dabdc0ca7c1c",
        "name": "100 South Charles Street, Baltimore,MD",
        "role": "interventionAddress",
        "@referredType": "GeographicAddress"
      },
      "relatedEntity": [
        {
          "id": "48dbfbf9201f0250f877303e8a020dcd",
          "role": "work order",
          "@referredType": "WorkOrder"
        }
      ],
      "timeZone": "US/Arizona",
      "success": true,
      "id": "feacb7f9201f0250f877303e8a020d38",
      "href": "api/sn_tmf_api/appointment/appointment/feacb7f9201f0250f877303e8a020d38",
      "creationDate": "2024-07-10 22:45:01",
      "lastUpdate": "2024-07-10 22:45:01"
    }