Для успешного отображения ваших слотов в процессе бронирования необходимо предоставить точную и актуальную карту вашего инвентаря. Количество свободных мест может значительно меняться после одного бронирования из-за особенностей заведения, возможности объединения столиков или размера группы. Примеры в этом документе помогут вам правильно отслеживать и отображать доступный инвентарь.
 Ниже приведены параметры, указанные в Availability definition :
-  party_size: количество участников, которое компания может принять в данный временной интервал. На диаграммах в этой статье показаны различные способы настройки количества участников.
-  spots_open: количество столов, доступных в данный момент для определенного слота доступности и размера группы.
-  spots_total: общее количество столов, имеющихся у продавца для этой конфигурации, включая недоступные столы.
 Эти три параметра совместно создают цифровое представление плана этажа. party_size — это количество человек, которое может вместить каждый стол. Для каждого размера, который может вместить стол, существует отдельная запись. spots_open и spots_total — это количество столов, которые могут вместить этот party_size .
Пример плана пустого этажа
Представьте себе ресторан со следующей планировкой и без активных бронирований:

Рисунок 1. План этажа без активных бронирований.
 Ниже приведены значения party_size , spots_open и spots_total :
| party_size | spot_open | spot_total | 
|---|---|---|
| 4 | 3 | 3 | 
| 5 | 3 | 3 | 
| 6 | 4 | 4 | 
| 7 | 1 | 1 | 
| 8 | 1 | 1 | 
Лента доступности для одного временного интервала у этого продавца выглядит следующим образом:
{
  "availability": [
        {
          "spots_total": 3,
          "spots_open": 3,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 4
          }
        },
        {
          "spots_total": 3,
          "spots_open": 3,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 5
          }
        },
        {
          "spots_total": 4,
          "spots_open": 4,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 6
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 7
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 8
          }
        }
      ]
}
Пример плана этажа с бронированием
Ресторан, в котором один из круглых столиков был забронирован заранее, выглядит следующим образом:

Рисунок 2. План этажа с одним активным бронированием.
 Ниже приведены значения party_size , spots_open и spots_total :
| party_size | spot_open | spot_total | 
|---|---|---|
| 4 | 2 | 3 | 
| 5 | 2 | 3 | 
| 6 | 3 | 4 | 
| 7 | 1 | 1 | 
| 8 | 1 | 1 | 
Лента доступности для одного временного интервала у этого продавца выглядит следующим образом:
{
  "availability": [
        {
          "spots_total": 3,
          "spots_open": 2,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 4
          }
        },
        {
          "spots_total": 3,
          "spots_open": 2,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 5
          }
        },
        {
          "spots_total": 4,
          "spots_open": 3,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 6
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 7
          }
        },
        {
          "spots_total": 1,
          "spots_open": 1,
          "duration_sec": 3600,
          "service_id": "1000",
          "start_sec": 1535806800,
          "merchant_id": "merch1",
          "resources": {
            "party_size": 8
          }
        }
      ]
}
Уточните наличие столиков в столовой с поддержкой комбинированных столиков
 Существует множество способов, которыми ресторан может объединить столики для размещения больших групп. Необходимо указать параметры spots_open и spots_total таким образом, чтобы они точно отражали возможность размещения групп заданного размера.
 Ниже приведён пример того, как можно указать объединение таблиц. Ваши фиды могут отличаться в зависимости от используемого метода расчёта. Допустимо указывать spots_open и spots_total способом, соответствующим вашей бизнес-логике.
 Если ресторан позволяет объединять столики для формирования большой компании, вы можете обновить значения spots_open и spots_total , чтобы отразить это.
Например, ресторан, в котором можно объединить два небольших стола и разместить группу из 7–10 человек:

Рисунок 3. План этажа без активных бронирований.
 В случае отсутствия активных бронирований значения party_size , spots_open и spots_total приведены ниже:
| party_size | spot_open | spot_total | 
|---|---|---|
| 4 | 3 | 3 | 
| 5 | 3 | 3 | 
| 6 | 4 | 4 | 
| 7 | 1 | 1 | 
| 8 | 1 | 1 | 
| 9 | 1 | 1 | 
| 10 | 1 | 1 | 
Теперь, при той же планировке зала, можно забронировать столик для вечеринки из десяти человек, объединив его за двумя небольшими столиками.

Рисунок 4. План этажа с одним активным бронированием на два стола.
 Тогда значения party_size , spots_open и spots_total будут следующими:
| party_size | spot_open | spot_total | 
|---|---|---|
| 4 | 1 | 3 | 
| 5 | 1 | 3 | 
| 6 | 2 | 4 | 
| 7 | 1 | 1 | 
| 8 | 1 | 1 | 
| 9 | 0 | 1 | 
| 10 | 0 | 1 |