フィードでの空き情報の構造化

可用性形式の選択

空き状況データを指定する方法は 2 つあります。スポットの空き状況繰り返しです。すべての販売者とサービスで使用する方法は 1 つだけ選択してください。方法を選択したら、統合全体(フィード、予約サーバー、リアルタイム更新)でその方法に従う必要があります。

次のガイドを使用して、どの可用性形式が適しているかを判断してください。

  • お客様のシステムでは、空き時間を明示的なスロット(午前 8 時~午前 8 時 30 分など)として保存していますか?
  • 貴社のシステムでは、空き状況を定期的な形式で保存していますか?つまり、販売者のサービスが一定の頻度で提供され、それほど変動しないということですか?たとえば、スロットは午前 9 時から午後 5 時まで 15 分ごとに繰り返され、15 分ごとに 1 席のみ利用できます。
  • 販売者のサービスの空き時間は、一度に複数指定できますか?たとえば、クラスの空き枠が 30 個の場合
  • 上記のいずれも該当しない場合は、次の手順に沿って対応してください。
    • Spots Open を使用する
    • 注: 繰り返しを使用すると効率が向上し、フィードサイズを小さくできますが、データモデルが繰り返しをネイティブにサポートしていない場合は、リアルタイム更新ごとに 1 日分の繰り返しスロットを再計算する必要があるため、繰り返しの使用はおすすめしません。

    Spots Open

    パラメータの定義:

    • spots_open: この空き状況エントリで現在利用可能なスポット数。
    • spots_total: この構成で販売者が利用できるスポットの合計数(利用できないスポットを含む)。

    Spots Open メソッドは、すべてのスロットの空き状況を明示的に示し、同じサービスに複数のスロットがあるモデルをサポートします。これらの 2 つのパラメータが連携して、サービス容量のデジタル表現を構築します。

    予約が行われると、リアルタイム更新によって spots_open の数が 1 減ります(spots_total の値は変わりません)。spots_open = 0 になると、スロットは表示されなくなります。

    サービスの例

    ヨガ教室や美容院に次の間取りがあり、有効な予約がない

    図 1: 有効な予約がないフロアプラン

    これらの販売者の 2 つのスロットの空き状況フィードは次のようになります。

    JSON
        {
          "availability": [
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535817600, # Sept 1, 2018 4:00:00 PM GMT
                  "merchant_id": "1001"
                },
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535832000, # Sept 1, 2018 8:00:00 PM GMT
                  "merchant_id": "1001",
                }
              ]
        }
        

    予約を含むサービスの例

    図 2: 1 件の有効な予約がある間取り

    ユーザーがスポットの 1 つを予約します。予約が行われると、リアルタイムで更新が行われ、空き状況が更新されます。この予約は、次の 1 日分の空室状況フィードに反映されます。これらの販売者の在庫フィードでは、2018 年 9 月 1 日午後 4 時(GMT)の枠の空き席数が 1 減ります。2018 年 9 月 1 日午後 8 時(GMT)のスロットは変更されません。

    予約を含むフィード スニペット

    JSON
        {
          "availability": [
                {
                  "spots_total": 6,
                  "spots_open": 5,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535817600, # Sept 1, 2018 4:00:00 PM GMT
                  "merchant_id": "1001"
                },
                {
                  "spots_total": 6,
                  "spots_open": 6,
                  "duration_sec": 3600,
                  "service_id": "1001",
                  "start_sec": 1535832000, # Sept 1, 2018 8:00:00 PM GMT
                  "merchant_id": "1001",
                }
              ]
    }
        

    繰り返し

    パラメータの定義

    • recurrence: 空き状況スロットが一貫性を持って繰り返す場合の表現。
    • repeat_until_sec: 空き状況が繰り返される最終スロットの終了時間の UTC タイムスタンプ。
    • repeat_every_sec: 連続する空き状況スロット間の秒数。たとえば、repeat_every_sec = 1800(30 分)、start_sec が午前 9 時の場合、スロットは 30 分ごとに午前 9 時、午前 9 時 30 分、午前 10 時などに繰り返されます。
      • 注: spots_open と spots_total を指定する必要はありません。schedule_exception がない限り、両方とも 1 と見なされます。

    繰り返し方法は、毎日 30 分ごとに午前 9 時から午後 5 時まで行われるサービスなど、定期的に発生するサービスの毎日の空き状況を示します。繰り返しでは、スロットの所要時間、1 日のうちにスロットが最初に発生する時刻、スロットを繰り返す頻度、同じ日にスロットの繰り返しを停止する時刻を指定します。注: 新しい一連の繰り返しスロットを日ごとに個別に指定する必要があります。期間内にスロットがすでに予約されている場合は、スケジュール例外を指定します。たとえば、午前 9 時から午後 9 時まで 30 分ごとに繰り返す(午前 11 時から午前 11 時 30 分は除く)。各サービスには、独自の繰り返しとスケジュール例外があります。

    サービスの例

    美容院のフロアプランは次のとおりで、有効な予約はありません。

    図 3: 有効な予約がないフロアプラン。1 つのサービスにつき 1 つの空きスロットのみがあることを前提としています(例: サリーは 30 分ごとにヘアカットのサービスを提供していますが、一度に 1 人の顧客しか対応できません)。

    これらの販売者の 1 つのスロットの空き状況フィードは次のようになります。

    フィード スニペット:

    JSON
        {
        "availability": [
              {
                "merchant_id": "1001",
                "service_id": "1001",  # haircut
                "start_sec": 1493888400, # May 4, 2017 9:00:00 AM GMT
                "duration_sec": 1800,
                "recurrence": {
                  "repeat_every_sec": 1800,
                  "repeat_until_sec": 1493915400 # May 4, 2017 4:30:00 PM GMT
                }
              }
            ]
        }
        

    予約を含むサービスの例

    図 4: 有効な予約が 1 件ある間取り。1 つのサービスにつき 1 つの空きスロットのみがあることを前提としています(例: サリーは 30 分ごとにヘアカットのサービスを提供していますが、一度に 1 人のお客様しか対応できません)。

    ユーザーが午後 12 時 30 分にサリーにヘアカットを予約したとします。予約が行われると、リアルタイムで更新が行われ、空き状況が更新されます。次の 1 日分の空室状況フィードに、この予約が反映されます。このような販売者の空き状況フィードには、30 分間のサービスについて、午後 12 時 30 分から午後 1 時までのスケジュール設定例外が含まれます。

    予約を含むフィード スニペット:

    JSON
        {
          "availability": [
                {
                  "merchant_id": "1001",
                  "service_id": "1001",
                  "start_sec": 1493888400, # May 4, 2017 9:00:00 AM GMT
                  "duration_sec": 1800,
                  "recurrence": {
                    "repeat_every_sec": 1800,
                    "repeat_until_sec": 1493915400 # May 4, 2017 4:30:00 PM GMT
                  },
                  "schedule_exception": [
                    {
                      "time_range": {
                        "begin_sec": 1493901000, # May 4, 2017 12:30:00 PM GMT
                        "end_sec": 1493902800 # May 4, 2017 1:00:00 PM GMT
                      }
                    }
                  ],
                }
              ]
        }