Primeros pasos
TimeTime te permite añadir un motor de reservas a tu aplicación o sitio web de forma sencilla.
En este tutorial vamos a cubrir el caso de uso básico de TimeTime: Crear un usuario y una página de reservas, consultar la disponibilidad y añadir una reserva.
Obtener una API KEY
El primer paso para interactuar con la API de TimeTime es obtener una clave de acceso a la API. Esta clave de acceso debe ser adjuntada en las peticiones HTTP y permite identificar al autor de las peticiones.
Para generar una clave de acceso a la API simplemente inicia sesión en TimeTime y accede a la sección de "Developers".
https://app.timetime.in/dashboard/profile/developers
Seleciona la opción para generar una nueva clave y guárdala para más tarde. No compartas esta clave con nadie. ¡Cualquier con acceso a esta clave podrá hacer cambios en la aplicación!
Crear un event-type
El event-type
es el concepto fundamental de TimeTime. Un event-type sirve para representar un servicio que puede ser reservado. Por ejemplo, una peluquería puede tener dos tipos de eventos: "Corte de pelo" y "Lavar y peinar".
Cada event-type
tendrá sus reglas de disponibilidad particulares, por ejemplo la duración de "corte de pelo" será de 20m mientras que lavar y peinar podría ser de 40m.
Para crear un event type es suficiente con hacer una petición HTTP a nuestra API pasándole todos los parámetros de configuración deseados.
fetch("https://api.timetime.in/v1/event-types/<my-custom-id>", {
method: "PUT",
headers: {
// Es importante especificar que nos comunicamos por JSON
"Content-Type": "application/json",
// Añadimos la clave de accesso a la api obtenida previamente
Authorization: "Bearer: <your-api-key>",
},
body: JSON.stringify({
// La duración de las reservas.
duration: "PT1H",
// El nombre del tipo de evento
name: "Corte de pelo",
// La frecuencia en la que se generan opciones de reserva
step: "PT1H",
// El identificador de la cuenta donde se va a crear el event-type
userId: "<your-user-id>",
// Estos campos son obligatorios pero pueden ignorarse de momento.
busyIntervas: [],
hosts: [],
questions: [],
thirdPartyCalendars: [],
}),
});
Una descripción detallada de todos los campos y opciones se puede leer en nuestras API SPECS:
https://docs.timetime.in/api/#operation/putEventType
Consultando la disponibilidad
Una vez tenemos generado un event-type
correctamente podemos consultar su disponibilidad. Esto es, en lenguaje coloquial "ver que huecos hay disponibles"
Para esto se puede utilizar el endpoint getEventTypeAvailability
de la API pasándole el identificador (ID) del event-type
del cual se quiere consultar la disponibilidad.
fetch("https://api.timetime.in/v1/event-types/{id}/availability", {
method: "GET",
headers: {
// Es importante especificar que nos comunicamos por JSON
"Content-Type": "application/json",
// Añadimos la clave de accesso a la api obtenida previamente
Authorization: "Bearer: <your-api-key>",
},
});
Esta petición devuelve entre otros campos uno llamado timeSlots
que contiene un array de huecos donde el event-type
podría estar disponible para ser reservado. El parámetro score tendrá un valor positivo si está disponible y un valor 0 si no está disponible.
{
"timeSlots": [
{
"start": "2019-08-24T14:00:00Z",
"end": "2019-08-24T14:30:00Z",
"score": 1
},
{
"start": "2019-08-24T14:30:00Z",
"end": "2019-08-24T15:00:00Z",
"score": 0
}
]
}
Es este caso, vemos un ejemplo en el que el servidor devuelve dos slots para el mismo día, el primero que dura desde las 14:00 hasta las 14:30 está disponible y el segundo, de 14:30 a 15:00 no lo esta.
Creando una reserva
Utilizando el método createBooking de la API Rest se puede crear una reserva en cierto hueco para un event-type
determinado.
Para crear la reserva es necesario indicar:
- El identificador del
event-type
- La hora de inicio de la reserva
- El email de la persona asociada a la reserva
fetch("https://api.timetime.in/v1/bookings", {
method: "POST",
headers: {
// Es importante especificar que nos comunicamos por JSON
"Content-Type": "application/json",
// Añadimos la clave de accesso a la api obtenida previamente
Authorization: "Bearer: <your-api-key>",
},
body: JSON.stringify({
// El identificador del event-type contra el que se realizará la resrva
eventTypeId: "f899218d-6f2c-4300-8a70-a6910536041b",
// La hora de inicio
start: "2019-08-24T14:00:00Z",
// El email del cliente de la reserva
bookerEmail: "string",
}),
});
El servidor contestará con el código 201 si la reserva se ha podido realizar correctamente.