予約オープン API

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:21分
  • Appointment Open API は、予約アプリケーションを操作できるようにする電気通信 API です。この API を使用して、予約を行い、利用可能な時間帯を検索します。

    Appointment Open API は、Open API TMForum TMF646 Appointment REST API 仕様のServiceNow®実装であり、TM Forum の適合認定を受けています。この実装は、 TMF646 Appointment API REST Specification R16.0.1 に基づいています。

    TMF 適合ロゴ
    この API には、 ServiceNow Store で利用可能な次のプラグインが必要です。
    • 予約 (com.snc.appointment_booking)
    • Field Service Management (フィールドサービス管理 (FSM)) (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 内部サーバーエラー。要求の処理中に予期しないエラーが発生しました。応答に、エラーに関する追加情報が含まれます。

    応答本文のパラメーター

    名前 説明
    availableTimeSlot 要求された指定された時間ブロック内の予約スロットのリスト。

    データタイプ:オブジェクトのアレイ

    '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 を参照してください。
    可能な値:
    • true:より多くの予約スロットをフェッチできます。
    • false:利用可能な予約スロットがありません。

    データタイプ:ブーリアン

    noApptAvailable 指定された日時に利用可能な予約スロットが他にもあるかどうかを示すフラグ。
    有効な値:
    • true:指定された日時に、より多くの予約スロットが利用可能です。
    • false:指定された日時に利用できる予約スロットがなくなります。

    データタイプ:ブーリアン

    検索結果 指定された検索タイムスロット内での予約の空き状況の結果。
    可能な値:
    • 正常終了
    • 失敗

    データタイプ:文字列

    ステータス 利用可能なタイムスロット検索の完了ステータス。たとえば、done です。

    データタイプ:文字列

    タイムゾーン 指定された予約スロットを予約または更新するときに使用されるタイムゾーン。

    日付タイプ:文字列

    形式:米国/東部などの国/都市または地域の形式

    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'

    Result (結果):

    {
      "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/appointment/appointment

    サポートされている要求パラメーター

    表 : 7. パスパラメーター
    名前 説明
    なし
    表 : 8. クエリパラメータ
    名前 説明
    なし
    表 : 9. 要求本文パラメーター
    名前 説明
    category 必須。予約サービス構成用に構成されたレコードプロデューサーの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 必須。予約の連絡先のリスト。各連絡先はアレイ内のオブジェクトです。要求には、顧客アカウント情報を含むアイテムが少なくとも 1 つリストされている必要があります。

    データタイプ:オブジェクトのアレイ

    "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 必須。予約が有効な日付範囲。

    データタイプ: オブジェクト

    "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. 応答ヘッダー
    ヘッダー 説明
    Content-Type 要求本文のデータ形式。application/json のみをサポートします。

    ステータスコード

    この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。

    表 : 12. ステータスコード
    ステータスコード 説明
    200 成功。要求が正常に処理されました。
    500 内部サーバーエラー。要求の処理中に予期しないエラーが発生しました。応答に、エラーに関する追加情報が含まれます。

    応答本文のパラメーター

    名前 説明
    category 予約サービス構成用に構成されたレコードプロデューサーの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] テーブル

    lastUpdate 予約が最後に更新された日時。

    データタイプ:文字列

    形式: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 予約の連絡先のリスト。各連絡先はアレイ内のオブジェクトです。

    データタイプ:オブジェクトのアレイ

    "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 予約が有効な日付範囲。

    データタイプ: オブジェクト

    "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"
    }