REST Resource: inventory.partners.merchants.services.availability

Ресурс: Доступность

Указание на доступный временной интервал в услугах продавца, включая время и количество мест.

JSON-представление
{
  "startTime": string,
  "duration": string,
  "spotsTotal": string,
  "spotsOpen": string,
  "availabilityTag": string,
  "resources": {
    object (Resources)
  },
  "paymentOptionId": [
    string
  ],
  "recurrence": {
    object (Recurrence)
  },
  "scheduleException": [
    {
      object (ScheduleException)
    }
  ],
  "deposit": {
    object (Deposit)
  },
  "noShowFee": {
    object (NoShowFee)
  },
  "prepayment": {
    object (Prepayment)
  },
  "requireCreditCard": enum (RequireCreditCard),
  "ticketTypeId": [
    string
  ],
  "durationRequirement": enum (DurationRequirement),
  "schedulingRuleOverrides": {
    object (SchedulingRuleOverrides)
  },
  "confirmationMode": enum (ConfirmationMode),
  "linkoutRequiredReason": enum (LinkoutRequiredReason)
}
Поля
startTime

string ( Timestamp format)

Время начала назначенного приема.

Используется RFC 3339, согласно которому сгенерированный вывод всегда будет Z-нормализован и будет содержать 0, 3, 6 или 9 дробных знаков. Допускаются также смещения, отличные от "Z". Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

duration

string ( Duration format)

Продолжительность сеанса приема

Длительность в секундах, содержащая до девяти знаков после запятой, заканчивающаяся на « s ». Пример: "3.5s" .

spotsTotal

string ( int64 format)

Общее количество мест и количество свободных мест в рамках данной вакансии. Примеры:

  • Занятие по йоге на 10 мест, 3 забронированы: availability {spotsTotal: 10, spotsOpen: 7 ...}
  • Сеанс массажа на стуле, который уже полностью забронирован: availability {spotsTotal: 1, spotsOpen: 0 ...}

Примечание: При отправке запросов с использованием формата сжатия доступности, определенного ниже, эти два поля будут определены автоматически.

  • Повторение подразумевает spotsTotal=1 и spotsOpen=1 .
  • Ошибка ScheduleException означает, что spotsTotal=1 и spotsOpen=0 .
spotsOpen

string ( int64 format)

Количество свободных мест.

availabilityTag

string

Необязательная непрозрачная строка для идентификации этого временного интервала доступности. Если она задана, то будет включена в запросы на бронирование/обновление/отмену записей на прием.

resources

object ( Resources )

Дополнительные ресурсы используются для различения данного временного интервала доступности от других, когда в рамках обслуживания задействованы разные сотрудники или помещения.

Например, один и тот же урок йоги с двумя инструкторами:

availability { resources { staffId: "1" staffName: "Amy" }
               spotsTotal: 10 spotsOpen: 7 }
availability { resources { staffId: "2" staffName: "John" }
               spotsTotal: 5 spotsOpen: 2 }
paymentOptionId[]

string

Список идентификаторов, указывающих на способы оплаты, которые можно использовать для данного слота. Фактические способы оплаты определяются на уровне продавца и могут быть общими для нескольких продавцов.

Это поле переопределяет любые payment_option_ids, указанные в сообщении сервиса. Аналогично, payment_option_ids, указанные здесь, НЕ обязательно должны присутствовать в сообщении сервиса, хотя их необходимо определить на уровне продавца.

recurrence

object ( Recurrence )

Информация о периодичности доступности, включающая несколько времен начала. Периодичность должна содержать записи на один рабочий день.

scheduleException[]

object ( ScheduleException )

Времена, когда эту услугу невозможно запланировать. Чтобы ограничить количество сообщений scheduleException, рассмотрите возможность объединения смежных исключений.

deposit

object ( Deposit )

Внесение необязательного депозита за данную услугу. Заменяет собой депозит за услугу, если он был указан.

noShowFee

object ( NoShowFee )

Дополнительная плата за неявку, если таковая была указана, предоставляется по желанию. Отменяет плату за неявку, если таковая была предусмотрена.

prepayment

object ( Prepayment )

Необязательно. Информация о предоплате за этот вариант размещения необязательна.

requireCreditCard

enum ( RequireCreditCard )

Указывает, необходимо ли пользователю предоставить данные кредитной карты для бронирования данного временного интервала. Если значение не задано, оно наследуется из уровня обслуживания, если он там указан. (необязательно)

ticketTypeId[]

string

Указывает список поддерживаемых типов заявок для данного временного интервала. Если поле не задано, для данного интервала доступны все типы заявок в родительской службе. Обратите внимание, что значения этого поля должны быть определены в родительской службе. Примеры:

  • Услуга предоставляется с четырьмя типами билетов: TicketType {ticketTypeId: "adult_1" shortDescription: "Взрослые в будние дни"} TicketType {ticketTypeId: "adult_2" shortDescription: "Взрослые в выходные дни"} TicketType {ticketTypeId: "youth_1" shortDescription: "Молодежные в будние дни"} TicketType {ticketTypeId: "youth_2" shortDescription: "Молодежные в выходные дни"}

Для отображения наличия билетов в будние дни: availability {ticketTypeId: "adult_1" ticketTypeId: "youth_1"...} . Для отображения наличия билетов в праздничные дни: availability {ticketTypeId: "adult_2" ticketTypeId: "youth_2"...} .

  • Услуга с тремя типами билетов: TicketType {ticketTypeId: "adult" shortDescription: "Adult"} TicketType {ticketTypeId: "youth" shortDescription: "Youth"} TicketType {ticketTypeId: "senior" shortDescription: "Senior"}

Чтобы указать, что все три типа билетов доступны в этот временной интервал, используйте либо availability {ticketTypeId: "adult" ticketTypeId: "youth" ticketTypeId: "senior" ...} , либо `availability {...}' (не указывайте ticketTypeId в этом интервале).

(необязательный)

durationRequirement

enum ( DurationRequirement )

Необходимо указать продолжительность и/или время окончания слота. Это поле будет проигнорировано, если слот недоступен. Не используется в разделе «Чем заняться». (необязательно)

schedulingRuleOverrides

object ( SchedulingRuleOverrides )

Правила планирования доступности. Если поля заполнены, они переопределят любые соответствующие правила планирования на уровне сервиса в разделе SchedulingRules.

confirmationMode

enum ( ConfirmationMode )

Режим подтверждения, который будет использоваться при бронировании данного варианта размещения. Попытки создания бронирований для вариантов размещения с режимом подтверждения CONFIRMATION_MODE_SYNCHRONOUS должны быть немедленно подтверждены или отклонены. Попытки создания бронирований для вариантов размещения с режимом подтверждения CONFIRMATION_MODE_ASYNCHRONOUS должны быть либо немедленно отклонены, либо созданы со статусом PENDING (ожидание).

linkoutRequiredReason

enum ( LinkoutRequiredReason )

Необязательно. Причина, по которой для этого слота требуется ссылка. Если задано, ресурс продавца для этого слота должен иметь действительный шаблон ссылки (LinkoutTemplate). (необязательно)

Ресурсы

Ресурс используется для различения доступных временных интервалов, когда в оказании услуги участвуют разные сотрудники или используются разные помещения. Несколько временных интервалов для одной и той же услуги и временного промежутка могут сосуществовать, если для них используются разные ресурсы.

JSON-представление
{
  "staffId": string,
  "staffName": string,
  "roomId": string,
  "roomName": string,
  "partySize": integer,
  "roomDescription": {
    object (Text)
  }
}
Поля
staffId

string

Необязательный идентификатор сотрудника, предоставляющего услугу. Это поле идентифицирует сотрудника во всех записях о продавцах, услугах и доступности. Оно также должно оставаться стабильным с течением времени, чтобы обеспечить корреляцию с предыдущими бронированиями. Это поле должно присутствовать, если присутствует поле staffName.

staffName

string

Необязательное имя сотрудника, предоставляющего услугу. Это поле будет отображаться пользователям при бронировании и должно быть удобочитаемым, а не представлять собой непрозрачный идентификатор. Это поле должно присутствовать, если указан staffId.

roomId

string

Необязательный идентификатор помещения, в котором находится услуга. Это поле идентифицирует помещение во всех записях о продавцах, услугах и доступности. Оно также должно оставаться стабильным с течением времени, чтобы обеспечить корреляцию с предыдущими бронированиями. Это поле должно присутствовать, если присутствует имя помещения (roomName).

roomName

string

Необязательное название помещения, в котором находится услуга. Это поле будет отображаться пользователям при бронировании и должно быть удобочитаемым, а не представлять собой непрозрачный идентификатор. (необязательно, но обязательно, если присутствует roomId) В ресторанах название помещения следует использовать только для зон отдыха, таких как бар или терраса, и не следует использовать для меню с фиксированной ценой, специальных мероприятий или любых других значений, не связанных с номером (например, бронирование или ужин). Настоятельно рекомендуется, чтобы зона отдыха по умолчанию не была связана с конкретным помещением.

partySize

integer

Применимо только для заказа еды: количество человек, которое может быть размещено в течение этого временного интервала. Ресторан может быть связан с несколькими временными интервалами на одно и то же время, каждый из которых указывает разное количество человек, например, 2, 3 или 4 человека, которые могут быть размещены по бронированию.

roomDescription

object ( Text )

Необязательно. Локализованное описание номера. Если задано, необходимо указать значение по умолчанию. Желательно также указать распространенные языки для региона продавца. (необязательно)

Рецидив

Сообщения о повторении являются необязательными, но позволяют более компактно представить постоянно повторяющиеся временные интервалы доступности. Обычно они отражают рабочее расписание на день. Сообщения ScheduleException затем используются для обозначения забронированных/недоступных временных диапазонов в течение рабочего дня.

Требования:

  1. Расширение доступных временных интервалов или периодов повторения НЕ должно приводить к созданию идентичных интервалов. Если идентификаторы, время начала, продолжительность и ресурсы совпадают, интервалы считаются идентичными.
  2. Не следует смешивать стандартный формат доступности и формат с регулярным посещением в рамках одной услуги. Формат с регулярным посещением выгоден продавцам/сервисам, предлагающим запись на прием. Стандартный формат ориентирован на продавцов/сервисы, предлагающие регулярные занятия.
  3. Продолжительность рецидивов не должна превышать 24 часов.
JSON-представление
{
  "repeatUntil": string,
  "repeatEvery": string
}
Поля
repeatUntil

string ( Timestamp format)

Максимальное время доступности, включая временную метку UTC, будет повторяться до тех пор, пока...

Используется RFC 3339, согласно которому сгенерированный вывод всегда будет Z-нормализован и будет содержать 0, 3, 6 или 9 дробных знаков. Допускаются также смещения, отличные от "Z". Примеры: "2014-10-02T15:01:23Z" , "2014-10-02T15:01:23.045123456Z" или "2014-10-02T15:01:23+05:30" .

repeatEvery

string ( Duration format)

Определяет интервал времени между последовательными временными интервалами доступности.

Пример: Если задать доступное время продолжительностью 20 минут, период повтора 30 минут, время начала 9:00 и период повтора до 11:00, то будут доступны временные интервалы с 9:00 до 9:20, с 9:30 до 9:50, с 10:00 до 10:20, с 10:30 до 10:50, с 11:00 до 11:20. (обязательно)

Длительность в секундах, содержащая до девяти знаков после запятой, заканчивающаяся на « s ». Пример: "3.5s" .

ScheduleException

Сообщения ScheduleException представляют собой забронированные/недоступные временные интервалы в течение рабочего дня, которые являются исключениями из описанного выше правила повторения. По мере бронирования временных интервалов список исключений следует обновлять, чтобы отразить вновь появившиеся недоступные временные интервалы. Само правило повторения изменять не следует.

JSON-представление
{
  "timeRange": {
    object (TimeRange)
  }
}
Поля
timeRange

object ( TimeRange )

Временной диапазон исключения. Любые временные интервалы, описываемые повторяющимся событием, которые перекрывают этот закрытый-открытый временной диапазон, будут считаться недоступными.

Пример: Если в задании на повторение указана продолжительность 20 мин, параметр repeatEvery 30 мин, startTime 9:00 и repeatUntil 11:00, то исключение ScheduleException с timeRange 9:45-11:00 сделает недоступными временные интервалы 9:30-9:50, 10:00-10:20 и 10:30-10:50.

Обратите внимание, что поскольку временной диапазон является закрытым/открытым, это не повлияет на временной интервал, начинающийся в 11:00.

Предоплата

С пользователя может взиматься плата в рамках бронирования.

JSON-представление
{
  "priceInfo": {
    object (PriceInfo)
  }
}
Поля
priceInfo

object ( PriceInfo )

Контейнер для указания цены.

Информация о ценах

Контейнер для указания цены.

JSON-представление
{
  "priceType": enum (PriceType),

  // Union field price_options can be only one of the following:
  "price": {
    object (Price)
  },
  "priceRange": {
    object (PriceRange)
  }
  // End of list of possible types for union field price_options.
}
Поля
priceType

enum ( PriceType )

Определяет способ применения цены или ценового диапазона (на человека или фиксированная цена).

Поле объединения price_options . Параметры цены позволяют указать либо точную цену, либо диапазон. price_options может принимать только одно из следующих значений:
price

object ( Price )

Цена услуги или плата.

priceRange

object ( PriceRange )

Верхний и/или нижний предел стоимости услуги или платы.

Ценовой диапазон

Оболочка для диапазона денежных сумм, рассматриваемых как неограниченные, если не заданы оба значения. Требуется как минимум одно из значений minAmount или maxAmount.

JSON-представление
{
  "minPrice": {
    object (Price)
  },
  "maxPrice": {
    object (Price)
  }
}
Поля
minPrice

object ( Price )

Минимальная сумма.

maxPrice

object ( Price )

Максимальная сумма. Всегда должна быть больше минимальной цены.

Требования к продолжительности

Этот перечень указывает, какие требования предъявляются к пользователю для подтверждения или просмотра запрошенной продолжительности/времени окончания временных интервалов.

Перечисления
DURATION_REQUIREMENT_UNSPECIFIED Обработка времени окончания не указана. Это значение по умолчанию.
DO_NOT_SHOW_DURATION Время окончания не отображается пользователю.
MUST_SHOW_DURATION Перед тем как записаться на прием, пользователю необходимо показать время окончания.

SchedulingRuleOverrides

Правила планирования на основе уровня доступности.

JSON-представление
{
  "lastBookableSec": string,
  "firstBookableSec": string,
  "lastOnlineCancellableSec": string
}
Поля
lastBookableSec

string ( int64 format)

Последнее время (в секундах), когда этот слот можно было забронировать. Эта метка времени должна быть до startSec слота, чтобы ее учитывать (если пользователи должны иметь возможность бронировать после времени начала, используйте SchedulingRules.min_booking_before_end_time уровня сервиса). Если присутствует, переопределит все, что указано в min_booking_buffer правил SchedulingRules соответствующего сервиса.

firstBookableSec

string ( int64 format)

Первое время (в секундах), когда этот слот можно забронировать. Эта временная метка должна быть раньше startSec слота или lastBookableSec, если указано.

lastOnlineCancellableSec

string ( int64 format)

Если задано, указывается последнее время (в секундах с начала эпохи Unix), когда этот конкретный слот для записи можно отменить через функцию «Зарезервировать с помощью Google». Это поле переопределяет любые правила отмены на уровне сервиса. (необязательно)

Режим подтверждения

Способы подтверждения, используемые при бронировании доступности.

Перечисления
CONFIRMATION_MODE_UNSPECIFIED Режим подтверждения не указан. Будет предполагаться синхронное подтверждение.
CONFIRMATION_MODE_SYNCHRONOUS Бронирование на этот период будет подтверждено синхронно.
CONFIRMATION_MODE_ASYNCHRONOUS Бронирование на этот период будет подтверждаться в асинхронном режиме.

LinkoutRequiredReason

Причина, по которой в слоте присутствует эффект "связного взаимодействия".

Перечисления
LINKOUT_REQUIRED_REASON_UNSPECIFIED Значение по умолчанию: Не использовать, соответствует неизвестному значению.
PAYMENT_REQUIRED Для бронирования слота необходима оплата на партнерской платформе.

Методы

replace

Заменяет Availability существующей Service продавца, управляемой указанным агрегатором, и возвращает её.