可用性フォーマットの選択
空き情報データを指定するには、(1)オープンスポットと(2)リカレンスの 2 つの方法があります。すべての販売者とサービスで、使用する方法を 1 つだけ選択してください。方法を選択した後は、統合全体(フィード、予約サーバー、リアルタイム更新)でそのまま使用する必要があります。
次のガイドを参考に、より適切な在庫状況の形式を判断してください。
- システムでは、空き情報を明示的なスロットとして保存していますか(例: 午前 8 時~午前 8 時 30 分など)。
- Spots Open を使用する
- システムでは、在庫状況を繰り返し形式で保存していますか。つまり、販売者が一定の頻度で、わずかな偏差でサービスを提供しているか。たとえば、時間枠は 15 分ごとに午前 9 時から午後 5 時まで繰り返されますが、15 分ごとに 1 席しか利用できません。
- 繰り返しを使用します。
- 販売者のサービスに関して、一度に複数の空きスペースを確保できるか。例: クラスで空きスペースが 30 個ある場合
- Spots Open を使用する
- 上記のいずれにも該当しない場合
- Spots Open を使用する
- 注: 繰り返しを使用すると効率が良く、フィードのサイズを小さくすることができますが、データモデルが繰り返しをネイティブにサポートしていない場合はおすすめしません。リアルタイム更新のたびに 1 日分の繰り返しスロットを再計算する必要があるためです。
Spots Open
パラメータの定義:
- points_open: この空室状況エントリで現在利用可能なスポットの数。
- points_total: 販売者がこの設定で保持しているスポットの合計数(利用できないスポットを含む)。
Spots Open メソッドは、すべてのスロットの空き状況を明示的に示し、同じサービスに対して複数のスポットを持つモデルをサポートします。これら 2 つのパラメータが連携して、サービス容量のデジタル表現を構成します。
予約が行われると、リアルタイムの更新によって storage_open の数が 1 減ります(spot_total の数は変わりません)。points_open = 0 にすると、スロットは表示されなくなります。
サービスの例
ヨガのクラスや美容室で次のような間取り図があり、有効な予約がない
この販売者の 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", } ] }
予約のあるサービスの例
ユーザーはそのうちの 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 分ごとに繰り返します。サービスごとに、繰り返しとスケジュールの例外があります。
サービスの例
ある美容室では次のような間取り図があり、有効な予約はありません
これらの販売者の 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 } } ] }
予約のあるサービスの例
ここで、あるユーザーが午後 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 } } ], } ] }