Construir mi booking

Disponibilidad

La disponibilidad se calcula. Nunca se genera.

Nada de un botón "generar calendario" que alguien olvida pulsar, ni miles de filas creadas por si acaso. Cada fecha que ve un cliente se resuelve en el instante, a partir de reglas, así consultes mañana o dentro de diez años.

  • Al vuelo Cada fecha se calcula en el momento de la consulta, nunca se pre-genera
  • 3 Formas de vender el tiempo: hora fija, ventana de horas o día completo
  • Su propia zona horaria El corte de reserva se calcula donde ocurre la experiencia, no en el servidor

Tres formas de vender el tiempo. Dos formas de repetirlo.

Un mismo motor decide cuándo entra alguien y cuándo se repite eso, sin necesitar una configuración distinta para cada caso.

01

Hora fija

Salidas exactas del día, como un tour a las 10:00 y otro a las 15:00. El cliente elige un horario concreto, no un rango.

02

Ventana de horas

Varias franjas de llegada por día, como "8:00 a 11:00" o "13:00 a 18:00". El cliente elige la ventana, no un minuto exacto.

03

Todo el día

Sin franjas horarias: el producto está abierto el día completo, como una entrada general a un museo. El cliente reserva la fecha, no una hora.

04

Recurrente o fechas puntuales

Un horario semanal que se repite sin fin, o una lista corta de fechas exactas para algo puntual, como un concierto o una función única.

Así se decide si una fecha está abierta

Cinco pasos, en este orden exacto, cada vez que alguien consulta el calendario.

  1. 1

    Excepción de calendario

    ¿Hay una excepción configurada para este día exacto? Un cierre puntual o un horario especial siempre gana sobre cualquier regla recurrente.

  2. 2

    Regla recurrente más específica

    Si no hay excepción, se busca qué regla aplica ese día de la semana. Si dos reglas se solapan (una general y una de temporada), gana la más específica: la que tiene fecha de inicio y fin propias.

  3. 3

    Franjas horarias

    La regla o excepción devuelve sus horarios, interpretados según el modo de disponibilidad de la opción: hora fija, ventana o día completo.

  4. 4

    Corte de reserva

    Cada franja se compara contra el corte de reserva configurado, calculado en la zona horaria del producto, nunca en la del servidor. Si ese instante ya pasó, la franja deja de ofrecerse aunque falten horas para esa hora local.

  5. 5

    Horizonte máximo

    Si la opción tiene un horizonte de reserva (por ejemplo, 90 días), cualquier fecha más allá de ese límite ni siquiera se calcula.

Lo que ve el checkout es lo que ves aquí

La misma consulta que resuelve el calendario resuelve también el precio final, ya con impuestos, y el cupo restante de cada franja. No hay un "precio desde" sin confirmar aparte: esto es exactamente lo que usa el checkout para cobrar.

GET /api/v1/products/observation-deck/calendar
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
{
  "date": "2026-08-14",
  "is_open": true,
  "min_price_display": "€42.00",
  "slots": [
    {
      "start_time": "18:00",
      "end_time": null,
      "is_open": true,
      "remaining_capacity": 12,
      "min_price_display": "€42.00"
    },
    {
      "start_time": "20:30",
      "end_time": null,
      "is_open": true,
      "remaining_capacity": 4,
      "min_price_display": "€48.00"
    }
  ]
}
200 Disponibilidad resuelta

Un concierto no puede perder su propio día

Las fechas se comparan siempre como texto de calendario ("2026-08-14"), nunca como instantes absolutos. Comparadas como instantes, una opción de "fechas fijas" (un concierto, por ejemplo) podía dejar de resolver como reservable justo en su propio día, según de qué lado del huso horario UTC quedara el producto. Encontramos ese caso, lo documentamos y lo cerramos con una batería de tests dedicada. Un producto sin franja horaria (todo el día) tampoco se queda sin corte de reserva: su límite se ancla al final del día local, no a un instante arbitrario.

Preguntas frecuentes

Gana la más específica. Si hay una regla general para todos los martes y otra de temporada que también cubre ese martes con fecha de inicio y fin, se aplica la de temporada. Las reglas se ordenan por especificidad antes de resolver, así que no importa cuál se creó primero.

Contra la hora exacta del horario, en la zona horaria propia del producto. Un horario de las 8:00 con dos horas de antelación deja de mostrarse a las 6:01, calculado donde ocurre la experiencia, no donde está el servidor. Para un producto sin franja horaria, el corte se ancla al final del día local.

No. Nada se pre-genera ni se materializa. Cada consulta calcula las fechas y franjas en el momento, a partir de las reglas y excepciones vigentes, así que un horario configurado hoy sigue funcionando exactamente igual dentro de diez años, sin ningún proceso de mantenimiento.

Sí. La misma consulta resuelve el calendario, el precio final con impuestos y el cupo restante de cada franja, con el peor caso entre los tipos de entrada que compartan aforo. Es justo lo que usa el checkout para cobrar, no una estimación aparte.

Sí, con una excepción de calendario. Se puede cerrar una fecha puntual, como un feriado, o darle un horario distinto, como uno reducido en Nochevieja, sin modificar la regla recurrente que rige el resto del año.

Más reservas. Más canales. La misma calma.

Tiqory mantiene disponibilidad, precios, pagos y acceso trabajando juntos mientras tu operación crece. Cuéntanos hacia dónde vas; te mostramos cómo llegar sin volver a empezar.