Como escolher um formato de disponibilidade
Há duas maneiras de especificar dados de disponibilidade: (1) Spots Open ou (2) Recurrence. Escolha apenas um método para usar em todos os seus comerciantes e serviços. Depois de selecionar um método, é preciso mantê-lo durante toda a integração (feeds, servidor de agendamento e atualizações em tempo real).
Use o guia a seguir para ajudar a determinar qual formato de disponibilidade é mais adequado:
- No seu sistema, você armazena a disponibilidade como horários explícitos, por exemplo,
das 8h às 8h30?
- Use a opção Horários disponíveis
- No seu sistema, você armazena a disponibilidade em um formato recorrente, o que significa que os comerciantes têm serviços que ocorrem com frequência consistente e poucos desvios? Por exemplo, os horários se repetem a cada 15 minutos das 9h às 17h, e apenas um assento está disponível em cada incremento de 15 minutos.
- Use a recorrência
- Para os serviços dos seus comerciantes, pode haver mais de um espaço aberto por
vez? Por exemplo, 30 vagas abertas para uma turma.
- Use a opção Horários disponíveis
- Nenhuma das opções acima se aplica?
- Use a opção Horários disponíveis
- Observação: embora o uso de recorrência seja mais eficiente e possa resultar em tamanhos de feed menores, caso seu modelo de dados não tenha suporte nativo, não é recomendável usá-la, porque será necessário recalcular todo o dia de slots recorrentes para cada atualização em tempo real.
Horários disponíveis
Definições dos parâmetros:
- spot_open: o número de vagas disponíveis no momento para esta entrada de disponibilidade.
- spot_total: o número total de pontos que o comerciante tem para esta configuração, incluindo aqueles que não estão disponíveis.
O método "Spots Open" indica explicitamente cada disponibilidade de slot e é compatível com o modelo de ter vários locais para o mesmo serviço. Esses dois parâmetros trabalham juntos para criar uma representação digital da capacidade de serviço.
Quando há uma reserva, o número de spot_open precisa ser reduzido em 1 com uma atualização em tempo real. O número de spot_total precisa permanecer o mesmo. Depois que spot_open = 0, o slot não deverá mais aparecer.
Exemplos de serviços
Uma aula de ioga ou um salão de beleza tem as seguintes plantas baixas e não há reservas ativas
O feed de disponibilidade para dois horários nesses comerciantes seria assim:
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", } ] }
Exemplos de serviços com um agendamento
Agora, um usuário reserva um dos pontos. Quando uma reserva acontece, uma atualização em tempo real é emitida para atualizar a disponibilidade. No próximo feed de disponibilidade diária, essa reserva deve aparecer. O feed de disponibilidade desses comerciantes teria uma diminuição de 1% no campo spot_open em 1o de setembro de 2018, às 16h (GMT). O horário de 1o de setembro de 2018, às 20h (GMT), permanece inalterado.
Snippet do feed com uma reserva
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", } ] }
Recorrência
Definições de parâmetros
- recorrência: a representação de horários de disponibilidade que se repetem de forma consistente.
- remember_until_sec: o carimbo de data/hora UTC do horário de término do último horário em que a disponibilidade se repete.
- repetido_cada_sec: o número de segundos entre os slots de disponibilidade
sucessivos. Por exemplo, se repeat_every_sec = 1800 (30 minutos) e start_sec começa às 9h, os slots são repetidos a cada 30 minutos às 9h, 9h30, 10h etc.
- Observação: não é necessário especificar spot_open e spot_total. Ambos são considerados 1, a menos que haja uma schedule_exception
O método de recorrência indica a disponibilidade diária para serviços que ocorrem em intervalos regulares. Por exemplo, um serviço que acontece a cada 30 minutos das 9h às 17h todos os dias. Com a recorrência, você especifica a duração do slot, a primeira vez do dia em que ele ocorre, a frequência com que ele será repetido e em que momento no mesmo dia ele terá que parar de se repetir. Observação: um novo conjunto de horários recorrentes precisa ser especificado para cada dia separadamente. Se um horário já estiver reservado dentro do período, você especificará uma exceção de programação. Por exemplo, repita a cada meia hora das 9h às 21h, exceto das 11h às 11h30. Cada serviço individual terá as próprias exceções de recorrência e programação.
Exemplos de serviços
Um salão de beleza tem a seguinte planta baixa e não tem reservas ativas
O feed de disponibilidade de 1 espaço desses comerciantes teria esta aparência:
Snippet do feed:
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 } } ] }
Exemplos de serviços com um agendamento
Agora imagine que um usuário agenda um corte de cabelo com Sally às 12h30. Quando acontece um agendamento, uma atualização em tempo real é emitida para atualizar a disponibilidade. Essa reserva deve aparecer no próximo feed de disponibilidade diária. O feed de disponibilidade desses comerciantes teria uma exceção de programação das 12h30 às 13h para um serviço com duração de 30 minutos.
Snippet do feed com uma reserva:
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 } } ], } ] }