フィード内での在庫状況の構成

可用性フォーマットの選択

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

次のガイドを参考に、より適切な在庫状況の形式を判断してください。

  • システムでは、空き情報を明示的なスロットとして保存していますか(例: 午前 8 時~午前 8 時 30 分など)。
  • システムでは、在庫状況を繰り返し形式で保存していますか。つまり、販売者が一定の頻度で、わずかな偏差でサービスを提供しているか。たとえば、時間枠は 15 分ごとに午前 9 時から午後 5 時まで繰り返されますが、15 分ごとに 1 席しか利用できません。
  • 販売者のサービスに関して、一度に複数の空きスペースを確保できるか。例: クラスで空きスペースが 30 個ある場合
  • 上記のいずれにも該当しない場合
    • Spots Open を使用する
    • 注: 繰り返しを使用すると効率が良く、フィードのサイズを小さくすることができますが、データモデルが繰り返しをネイティブにサポートしていない場合はおすすめしません。リアルタイム更新のたびに 1 日分の繰り返しスロットを再計算する必要があるためです。

    Spots Open

    パラメータの定義:

    • points_open: この空室状況エントリで現在利用可能なスポットの数。
    • points_total: 販売者がこの設定で保持しているスポットの合計数(利用できないスポットを含む)。

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

    予約が行われると、リアルタイムの更新によって storage_open の数が 1 減ります(spot_total の数は変わりません)。points_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 つを予約します。予約が行われると、空き情報を更新するためのリアルタイム更新が発行されます。この予約は、次回の毎日の空き状況フィードに反映されます。この場合、2018 年 9 月 1 日午後 4 時 00 分 00 秒の GMT スロットに対して、これらの販売者の予約状況フィードで locations_open が 1 減少します。2018 年 9 月 1 日午後 8 時 00 分 00 秒の 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 時などに繰り返されます。
      • 注: points_open と sites_total を指定する必要はありません。schedule_exception がない限り、どちらも 1 とみなされます

    この繰り返しメソッドは、定期的に発生するサービス(毎日午前 9 時から午後 5 時まで 30 分ごとに発生するサービスなど)の毎日の可用性を示します。繰り返しを使用する場合は、スロットの長さ、スロットが最初に行われる日時、そのスロットを繰り返す頻度、同じ日の繰り返しを停止するタイミングを指定します。注: 新しい定期的なスロットのセットは、日ごとに個別に指定する必要があります。時間枠がすでに予約されている場合は、スケジュールの例外を指定します。たとえば、午前 11 時から午前 11 時 30 分を除き、午前 9 時から午後 9 時までの 30 分ごとに繰り返します。サービスごとに、繰り返しとスケジュールの例外があります。

    サービスの例

    ある美容室では次のような間取り図があり、有効な予約はありません

    図 3: 有効な予約がない構内図。サービスごとに 1 つのスポットのみを空席している場合を想定しています(たとえば、Sally さんは 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 つのスポットのみを空席している場合を想定しています(たとえば、Sally さんは 30 分ごとにヘアカット サービスを提供するが、一度に 1 人のお客様にしか参加できません)。

    ここで、あるユーザーが午後 12 時 30 分にサリーの散髪を予約したとします。予約が行われると、空き情報を更新するためのリアルタイム更新が発行されます。この予約は、次回の毎日の空き状況フィードに反映されます。このような販売者の空き状況フィードでは、運行時間が 30 分で、午後 0 時 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
                      }
                    }
                  ],
                }
              ]
        }