Ir al contenido

Referencia de API

Calendario y reservas

Endpoints de páginas de reserva (agendas tipo Calendly), sus reuniones agendadas y el grid combinado del calendario. Incluye además la API pública de booking (sin autenticación), que es la que usa la página de reserva que ve el invitado.

Cuelgan de /workspaces/:workspaceId/calendar/schedulers.

MétodoRutaDescripción
GET/calendar/schedulersListar páginas de reserva
POST/calendar/schedulersCrear una página
GET/calendar/schedulers/:idObtener el detalle completo
PATCH/calendar/schedulers/:idActualizar (parcial)
DELETE/calendar/schedulers/:idEliminar
POST/calendar/schedulers/:id/duplicateDuplicar (nace en PAUSED, sin reservas ni vistas)
POST/calendar/schedulers/:id/defaultMarcarla como predeterminada del workspace
PATCH/calendar/schedulers/:id/statusCambiar de estado
POST/calendar/schedulers/bulk-deleteEliminar varias ({ ids: string[] })
POST/calendar/schedulers/bulk-statusActivar/pausar varias ({ ids: string[], status: 'ACTIVE' | 'PAUSED' })
POST /workspaces/:workspaceId/calendar/schedulers
CampoTipoRequeridoDescripción
titlestringTítulo de la agenda (máx. 200).
durationMinutesnumberDuración de la cita en minutos.
hostsarrayAnfitriones: { userId, role?, priority? }. userId debe ser miembro del workspace.
availabilityRulesarrayTramos horarios: { weekday (0-6), startMinute, endMinute, hostUserId? }.
typestringNoINDIVIDUAL (def.) · GROUP · COLLECTIVE · ROUND_ROBIN.
statusstringNoDRAFT (def.) · ACTIVE · PAUSED · ARCHIVED.
slugstringNoURL de la página pública; se genera del título si se omite.
descriptionstringNoDescripción visible en la página pública.
colorstringNoColor de la agenda (hex).
timezonestringNoZona IANA; cae a la del workspace si se omite.
slotIntervalMinutesnumberNoCada cuánto se ofrece un horario dentro del tramo.
locationTypestringNoGOOGLE_MEET (def.) · IN_PERSON · PHONE · CUSTOM · NONE.
locationDetailstringNoDirección, número o instrucciones según locationType.
bookingWindowTypestringNoROLLING (def., antelación en días) · RANGE (fechas fijas).
maxAdvanceDaysnumberSolo en ROLLINGHasta cuántos días a futuro se ofrece disponibilidad.
rangeStart / rangeEndstringSolo en RANGEFechas civiles YYYY-MM-DD del rango fijo.
minAdvanceHoursnumberNoAntelación mínima para reservar (def. 4).
bufferBeforeMinutes / bufferAfterMinutesnumberNoColchón antes/después de cada reunión.
maxBookingsPerDaynumberNoTope de reservas por día (def. 100).
recurrenceIntervalWeeksnumberNoCada cuántas semanas se repite la disponibilidad (def. 1 = todas).
availabilityModestringNoSHARED (def., un horario para toda la agenda) · PER_HOST.
guestReminderMinutes / hostReminderMinutesnumber[]NoAntelaciones de recordatorio, entre 5 min y 30 días, máx. 5 cada una.
allowGuestInvitees / maxGuestInviteesboolean / numberNoSi el invitado puede sumar acompañantes por correo.
maxInviteesPerSlotnumberSolo GROUPInvitados por horario (mínimo 2).
showRemainingSpotsbooleanSolo GROUPMuestra al invitado cuántas plazas quedan.
roundRobinStrategystringSolo ROUND_ROBINMAX_AVAILABILITY · EQUAL_DISTRIBUTION (def.).
imbalanceThresholdnumberSolo ROUND_ROBIN con EQUAL_DISTRIBUTIONReuniones de ventaja toleradas entre anfitriones.
formFieldsarrayNoCampos del formulario: { label, type?, required?, position?, options? }.
calendarInvitationbooleanNoEnvía invitación de calendario en la confirmación (def. true).
GET /workspaces/:workspaceId/calendar/schedulers
ParámetroTipoDescripción
page / pageSizenumberPaginación (pageSize máx. 100).
searchstringBúsqueda por título.
hostUserIdsstringUno o varios userId de anfitrión.
typesstringUno o varios tipos (INDIVIDUAL, GROUP, COLLECTIVE, ROUND_ROBIN).
locationTypesstringUno o varios locationType.
sortBystringcreatedAt (def.), updatedAt, title, durationMinutes, views.
sortOrderstringasc (def.) o desc.

Cuelgan de /workspaces/:workspaceId/calendar/meetings. Son las reservas creadas por invitados (por la API pública de booking) o directamente por el equipo.

MétodoRutaDescripción
GET/calendar/meetingsListar reuniones
GET/calendar/meetings/:idObtener el detalle
GET/calendar/meetings/:id/reschedule-availabilityHorarios disponibles para reprogramar esta reunión (from, to en query)
PATCH/calendar/meetings/:id/rescheduleReprogramar ({ start: string }, ISO)
PATCH/calendar/meetings/:id/cancelCancelar ({ reason?: string })
POST/calendar/meetings/bulk-cancelCancelar varias ({ ids: string[] })
POST/calendar/meetings/bulk-deleteEliminar del historial varias — solo CANCELLED o COMPLETED ({ ids: string[] })
GET /workspaces/:workspaceId/calendar/meetings
ParámetroTipoDescripción
page / pageSizenumberPaginación (pageSize máx. 100).
skip / takenumberAlternativa a page/pageSize para “cargar más” (tienen prioridad si vienen).
searchstringBusca por nombre/correo del invitado o título de la agenda.
statusstringUno o varios: CONFIRMED, RESCHEDULED, CANCELLED, NO_SHOW, COMPLETED.
locationstringUno o varios locationType.
typesstringTipo de la agenda de origen (INDIVIDUAL, GROUP, ROUND_ROBIN).
hostUserIdsstringUno o varios userId de anfitrión.
timeframestringupcoming (vigentes/futuras, más próxima primero) o past (terminadas, más reciente primero).
sortBystringstart (def.), duration, guestName, schedulerTitle, createdAt, updatedAt. Se ignora si envías timeframe.
sortOrderstringasc o desc (def.).
PATCH /workspaces/:workspaceId/calendar/meetings/:id/cancel
CampoTipoRequeridoDescripción
reasonstringNoMotivo de la cancelación (se incluye en el correo al invitado).

Vista unificada de reuniones ya agendadas y bloques de disponibilidad libre en un rango, la que alimenta el calendario del dashboard.

GET /workspaces/:workspaceId/calendar/grid
ParámetroTipoRequeridoDescripción
fromstringInicio del rango (ISO 8601).
tostringFin del rango (ISO 8601). Máximo 92 días entre ambos.

Sin autenticación — la usa la página pública que ve el invitado externo (/agendar/:pageId en el dashboard). No lleva Authorization, así que llevan rate limiting propio: 60 solicitudes/minuto en las de lectura, 10 solicitudes/hora en las de escritura (reservar/cancelar).

MétodoRutaDescripción
GET/booking/:pageIdConfiguración pública de la agenda
GET/booking/:pageId/availabilityHorarios disponibles en un rango
POST/booking/:pageIdReservar un horario
GET/booking/cancel/:tokenObtener una reserva por su token de cancelación
POST/booking/cancel/:tokenCancelar una reserva por su token
GET /booking/:pageId
ParámetroTipoDescripción
pageIdstringId de la página de reserva.
GET /booking/:pageId/availability
ParámetroTipoRequeridoDescripción
fromstringFecha inicial (ISO 8601).
tostringFecha final (ISO 8601).
POST /booking/:pageId
CampoTipoRequeridoDescripción
guestNamestringNombre del invitado (máx. 200).
startstringHorario elegido, tal cual lo devolvió availability (ISO).
guestEmailstringSolo si la agenda lo exige (requireGuestEmail)Correo del invitado.
guestPhonestringNoTeléfono.
guestNotesstringNoNotas para el anfitrión (máx. 2000).
guestTimezonestringNoZona IANA del invitado, para sus correos/recordatorios.
guestInviteeEmailsstring[]NoAcompañantes por correo (requiere allowGuestInvitees, máx. maxGuestInvitees).
answersarrayNoRespuestas al formulario: { fieldId, value }. Obligatorio para los campos marcados required.
POST /booking/cancel/:token
ParámetroTipoDescripción
tokenstringEl cancelToken recibido al reservar.
CampoTipoRequeridoDescripción
reasonstringNoMotivo de la cancelación.