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

Recurso: Disponibilidad

Es un espacio disponible del servicio que brinda el comercio, el cual indica la hora y la cantidad de cupos.

Representación 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)
  },
  "requireCreditCard": enum (RequireCreditCard),
  "ticketTypeId": [
    string
  ],
  "durationRequirement": enum (DurationRequirement),
  "schedulingRuleOverrides": {
    object (SchedulingRuleOverrides)
  },
  "confirmationMode": enum (ConfirmationMode)
}
Campos
startTime

string (Timestamp format)

Hora de inicio del espacio disponible.

Una marca de tiempo en formato RFC3339 UTC “Zulú”, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

duration

string (Duration format)

Es la duración del espacio disponible.

Una duración en segundos con hasta nueve dígitos decimales, que terminan en “s”. Ejemplo: "3.5s".

spotsTotal

string (int64 format)

Es la cantidad de cupos totales y disponibles para este espacio. Ejemplos:

  • Una clase de yoga con 10 cupos y 3 reservados: availability {spotsTotal: 10, spotsOpen: 7 ...}
  • Una sesión de masajes en silla que ya está reservada: availability {spotsTotal: 1, spotsOpen: 0 ...}

Nota: Si envías solicitudes con el formato de compresión de disponibilidad que se define a continuación, se inferirán estos dos campos.

  • El uso de Recurrence implica spotsTotal=1 y spotsOpen=1.
  • El uso de ScheduleException implica spotsTotal=1 y spotsOpen=0.
spotsOpen

string (int64 format)

La cantidad de cupos disponibles

availabilityTag

string

Es una string opaca opcional para identificar este espacio disponible. Si se configura, se incluirá en las solicitudes de reservar, actualizar o cancelar citas.

resources

object (Resources)

Son los recursos opcionales que se utilizan para distinguir este espacio disponible de otros cuando hay diferentes miembros del personal o salas como parte del mismo servicio.

P. ej., la misma clase de yoga con 2 instructores:

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

string

Es una lista de ID que hacen referencia a las opciones de pago que se pueden utilizar para adquirir este espacio disponible. Las opciones de pago reales se definen a nivel del comercio y también se pueden compartir entre varios.

Este campo anula cualquier valor de payment_option_ids especificado en el mensaje del servicio. De manera similar, los valores de payment_option_ids especificados aquí NO tienen que estar presentes en el mensaje del servicio, aunque deben definirse a nivel del comercio.

recurrence

object (Recurrence)

Indica la información de recurrencia para la disponibilidad, que representa más de una hora de inicio. Una recurrencia debe contener citas para un día hábil.

scheduleException[]

object (ScheduleException)

Son los espacios en los que no se puede programar este servicio. Para limitar la cantidad de mensajes de scheduleException, considera unir las excepciones adyacentes.

deposit

object (Deposit)

Representa el depósito opcional para este espacio disponible. Anula el depósito de servicio si se especificó uno.

noShowFee

object (NoShowFee)

Indica la tarifa opcional por no presentarse para este espacio disponible. Anula la tarifa por no presentarse del servicio si se especificó una.

requireCreditCard

enum (RequireCreditCard)

Indica si el usuario debe proporcionar una tarjeta de crédito para reservar este espacio disponible. Si no estableces este valor, se heredará del nivel del servicio si lo especificaste allí. (Opcional).

ticketTypeId[]

string

Indica una lista de los tipos de entradas admitidos para este espacio disponible. Si no se establece, todos los tipos de entradas del servicio de jerarquía superior estarán disponibles para este espacio. Ten en cuenta que los valores de este campo deben definirse en ese servicio superior. Ejemplos:

  • Servicio con cuatro tipos de entradas: TicketType {ticketTypeId: "adult_1" shortDescription: "Adult weekdays"} TicketType {ticketTypeId: "adult_2" shortDescription: "Adult weekends"} TicketType {ticketTypeId: "youth_1" shortDescription: "Youth weekdays"} TicketType {ticketTypeId: "youth_2" shortDescription: "Youth weekends"}

Para representar el inventario durante los días de semana, se puede utilizar lo siguiente: availability {ticketTypeId: "adult_1" ticketTypeId: "youth_1"...}. Para representar el inventario durante las festividades, se puede utilizar lo siguiente: availability {ticketTypeId: "adult_2" ticketTypeId: "youth_2"...}

  • Servicio con tres tipos de entrada: TicketType {ticketTypeId: "adult" shortDescription: "Adult"} TicketType {ticketTypeId: "youth" shortDescription: "Youth"} TicketType {ticketTypeId: "senior" shortDescription: "Senior"}

A fin de indicar que los tres tipos de recibo están disponibles para este espacio, utiliza availability {ticketTypeId: "adult" ticketTypeId: "youth" ticketTypeId: "senior" ...} o "availability {...}" (no establezcas el campo ticketTypeId para este espacio disponible).

(opcional)

durationRequirement

enum (DurationRequirement)

El requisito para mostrar la duración de los horarios disponibles o la hora de finalización. Se ignorará este campo si el horario disponible no está disponible. No se usa en la vertical de Cosas que hacer. (opcional)

schedulingRuleOverrides

object (SchedulingRuleOverrides)

Se trata de las reglas de programación de la disponibilidad. Si se propagan los campos, anularán cualquier regla de programación correspondiente en las SchedulingRules a nivel del servicio.

confirmationMode

enum (ConfirmationMode)

Indica el modo de confirmación que se usará cuando se reserve este espacio disponible. Los intentos de crear reservas de horarios disponibles con el modo de confirmación CONFIRMATION_MODE_SYNCHRONOUS se deben aceptar o rechazar de inmediato. Los intentos de crear reservas para espacios disponibles con el modo de confirmación CONFIRMATION_MODE_ASYNCHRONOUS deben denegarse de inmediato o crearse con el estado PENDING.

Resources

Los recursos se utilizan para distinguir los espacios disponibles entre sí cuando hay diferentes miembros del personal o salas como parte del mismo servicio. Pueden coexistir varios espacios disponibles y diversos intervalos de tiempo para el mismo servicio cuando tienen recursos diferentes.

Representación JSON
{
  "staffId": string,
  "staffName": string,
  "roomId": string,
  "roomName": string,
  "partySize": integer
}
Campos
staffId

string

Es el ID opcional para un miembro del personal que proporciona el servicio. Este campo identifica a este miembro en todos los comercios, servicios y registros de disponibilidad. También debe ser estable en el tiempo para que se lo pueda correlacionar con las reservas anteriores. Si staffName está presente, este campo también debe estarlo.

staffName

string

Este es el nombre opcional de un miembro del personal que proporciona el servicio. Este campo se mostrará a los usuarios que realizan una reserva y debe estar expresado en lenguaje natural. Es decir, no debe ser un identificador opaco. Si staffId está presente, este campo también debe estarlo.

roomId

string

Se trata de un ID opcional para la sala en la que se encuentra el servicio. Este campo identifica la sala en todos los comercios, servicios y registros de disponibilidad. También debe ser estable en el tiempo para que se lo pueda correlacionar con las reservas anteriores. Si roomName está presente, este campo también debe estarlo.

roomName

string

Es un nombre opcional para la sala en la que se encuentra el servicio. Este campo se mostrará a los usuarios que realizan una reserva y debe estar expresado en lenguaje natural. Es decir, no debe ser un identificador opaco. (Opcional, pero obligatorio si el ID de la habitación está presente) En el comedor, el nombre de una sala solo debe usarse para las áreas de descanso, como el bar o el patio, y no para menús con precios fijos, actividades especiales ni ningún otro valor que no sea de habitación (como reservas o cenas). Se recomienda que el área de descanso predeterminada no tenga una sala de reuniones asociada.

partySize

integer

Este campo solo es aplicable a restaurantes: indica el tamaño de la fiesta que se puede incluir durante este espacio de tiempo disponible. Un restaurante se puede asociar con varios espacios de tiempo disponibles al mismo tiempo. En cada uno, se puede especificar un tamaño de fiesta diferente si, por ejemplo, pueden sentarse 2, 3 o 4 personas con una reserva.

Recurrence

Los mensajes de recurrencia son opcionales, pero permiten una representación más compacta de los espacios disponibles que se repiten de forma sistemática. Suelen representar el cronograma laboral de un día. Los mensajes del tipo ScheduleException se utilizan posteriormente para representar períodos reservados o no disponibles dentro del día laboral.

Requisitos:

  1. La expansión de los espacios disponibles o de las recurrencias NO debe crear espacios disponibles idénticos. Si los ID, el campo startTime, la duración y los recursos coinciden, los espacios disponibles se considerarán idénticos.
  2. NO mezcles el formato de disponibilidad estándar y la recurrencia en los espacios disponibles de un mismo servicio. La recurrencia beneficia a los comercios o servicios que ofrecen citas. El formato estándar se orienta a los comercios o servicios que tienen clases programadas con regularidad.
  3. Las recurrencias no deben durar más de 24 horas.
Representación JSON
{
  "repeatUntil": string,
  "repeatEvery": string
}
Campos
repeatUntil

string (Timestamp format)

Es la marca de tiempo UTC máxima inclusiva hasta la cual se repite la disponibilidad.

Una marca de tiempo en formato RFC3339 UTC “Zulú”, con una resolución de nanosegundos y hasta nueve dígitos fraccionarios. Ejemplos: "2014-10-02T15:01:23Z" y "2014-10-02T15:01:23.045123456Z".

repeatEvery

string (Duration format)

Define el tiempo que se debe dejar entre espacios disponibles sucesivos.

Ejemplo: Un espacio disponible con el campo duration establecido en 20 min, repeatEvery en 30 min, startTime en 9:00 a.m. y repeatUntil en 11:00 a.m. generará los siguientes espacios disponibles: de 9 a 9:20 a.m., de 9:30 a 9:50 a.m., de 10 a 10:20 a.m., de 10:30 a 10:50 a.m. y de 11 a 11:20 a.m. (obligatorio)

Una duración en segundos con hasta nueve dígitos decimales, que terminan en “s”. Ejemplo: "3.5s".

ScheduleException

Los mensajes de ScheduleException representan períodos reservados o no disponibles dentro de la jornada laboral, que son excepciones a la recurrencia descrita anteriormente. A medida que se reservan los espacios disponibles, se debe actualizar la lista de excepciones para reflejar los períodos que dejan de estar disponibles. La recurrencia en sí no se debe modificar.

Representación JSON
{
  "timeRange": {
    object (TimeRange)
  }
}
Campos
timeRange

object (TimeRange)

Es el período que dura la excepción. Los espacios disponibles descritos en la recurrencia que se superpongan con este período de cierre-apertura se considerarán no disponibles.

Ejemplo: Si el mensaje Recurrence tuviera el campo duration establecido en 20 min, repeatEvery en 30 min, startTime en 9:00 a.m. y repeatUntil en 11:00 a.m. y utilizaras un mensaje ScheduleException con el campo timeRange configurado con el período de 9:45 a.m. a 11:00 a.m., los siguientes espacios se marcarían como no disponibles: de 9:30 a 9:50 a.m., de 10 a 10:20 a.m. y de 10:30 a 10:50 a.m.

Ten presente que, como el período abarca desde el cierre hasta la apertura, el espacio disponible que comienza a las 11 a.m. no se verá afectado.

DurationRequirement

Esta enumeración indica qué requisitos existen para que el usuario confirme o vea la duración y la hora de finalización de los horarios solicitados.

Enumeraciones
DURATION_REQUIREMENT_UNSPECIFIED No se especifica la hora de finalización. Esta es la opción predeterminada.
DO_NOT_SHOW_DURATION La hora de finalización no se muestra al usuario.
MUST_SHOW_DURATION Se debe mostrar al usuario la hora de finalización para poder programar una cita.

SchedulingRuleOverrides

Son las reglas de programación a nivel de la disponibilidad.

Representación JSON
{
  "lastBookableSec": string,
  "firstBookableSec": string,
  "lastOnlineCancellableSec": string
}
Campos
lastBookableSec

string (int64 format)

Indica la última hora (en segundos) en que se puede reservar este espacio disponible. Esta marca de tiempo debe ser anterior al campo startSec del espacio disponible que debe respetarse (si los usuarios deben poder reservar después de la hora de inicio, usa SchedulingRules.min_booking_before_end_time a nivel del servicio). Si está presente, anulará todo lo que se especifique en el campo min_booking_buffer del objeto SchedulingRules del servicio correspondiente.

firstBookableSec

string (int64 format)

Indica la primera hora (en segundos) en que se puede reservar este espacio. Esta marca de tiempo debe ser anterior al campo startSec del espacio disponible o al campo lastBookableSec si está especificado.

lastOnlineCancellableSec

string (int64 format)

Si se establece, indica la última hora (en segundos desde el tiempo Unix) en que se puede cancelar este horario disponible específico a través de Reserva con Google. Este campo anulará cualquier regla de cancelación a nivel del servicio. (opcional)

ConfirmationMode

Son los modos de confirmación que se utilizan al reservar espacios disponibles.

Enumeradores
CONFIRMATION_MODE_UNSPECIFIED No se especificó el modo de confirmación. Se supondrá que rige la confirmación síncrona.
CONFIRMATION_MODE_SYNCHRONOUS Las reservas de este espacio disponible se confirmarán de forma síncrona.
CONFIRMATION_MODE_ASYNCHRONOUS Las reservas de este espacio disponible se confirmarán de forma asíncrona.

Métodos

replace

Reemplaza la disponibilidad (Availability) de un servicio (Service) existente de un comercio que administra el agregador especificado y la muestra.