Documentación
superleads.mx

Calendars

Referencia de la API · ☕ 44 min de lectura
Actualizado el 19 Jun 2026

Calendars API

Documentación de la API de Calendars

Servidor base: https://services.leadconnectorhq.com

Endpoints


GET /calendars/groups

Obtener Groups Get all calendar groups in a location.

Scopes requeridos: calendars/groups.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (query, string) (requerido) — Id de sede

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


POST /calendars/groups

Crear Calendar Group Scopes requeridos: calendars/groups.write

Parametros: - Versión (header, string) (requerido) — Versión de la API

Cuerpo de la peticion (application/json): - locationId (requerido) — string - name (requerido) — string - description (requerido) — string - slug (requerido) — string - isActive — boolean

Respuestas: - 201 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


POST /calendars/groups/validate-slug

Validar group slug Validate if group slug is available or not.

Scopes requeridos: calendars/groups.write

Parametros: - Versión (header, string) (requerido) — Versión de la API

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - slug (requerido) — string — Slug

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


DELETE /calendars/groups/{groupId}

Eliminar Group Scopes requeridos: calendars/groups.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - groupId (path, string) (requerido) — Id de Group

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


PUT /calendars/groups/{groupId}

Actualizar Group Update Group by group Id

Scopes requeridos: calendars/groups.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - groupId (path, string) (requerido) — Id de Group

Cuerpo de la peticion (application/json): - name (requerido) — string - description (requerido) — string - slug (requerido) — string

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


PUT /calendars/groups/{groupId}/status

Deshabilitar Group Scopes requeridos: calendars/groups.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - groupId (path, string) (requerido) — Id de Group

Cuerpo de la peticion (application/json): - isActive (requerido) — boolean — Is Active?

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


GET /calendars/services/bookings

Obtener Service Bookings Retrieve service bookings for a location within a given date range, with an optional service location filter.

Scopes requeridos: calendars/events.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (query, string) (requerido) — Id de sede - startTime (query, string) (requerido) — Start Time (timestamp in milliseconds as string) - endTime (query, string) (requerido) — End Time (timestamp in milliseconds as string) - timezone (query, string) — Timezone - serviceLocationId (query, string) — Id de Service Location

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — Usuario no autenticado


POST /calendars/services/bookings

Crear Service Booking Create a new service booking

Scopes requeridos: calendars/events.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - overrideAvailability (query, boolean) — If true the time slot validation would be avoided for any booking creation/update (even the skipSchedulingNotice) - skipSchedulingNotice (query, boolean) — If set to true, the minimum scheduling notice and date range would be ignored

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - contactId (requerido) — string — Contact Id - startTime (requerido) — string — Start Time - endTime (requerido) — string — End Time - timezone (requerido) — string — Timezone - services (requerido) — array — Services - id (requerido) — string — Service Id - staffId — string — Staff Id - position — number — Position - addOns — array — Add-ons - id (requerido) — string — Add-on Id - quantity — number — Add-on quantity - duration — number — Add-on duration (in minutes) - serviceLocationId — string — Service Location Id (If not provided, then the default service location will be used) - meetingLocation — string — Meeting Location (If service location is an ask the booker, then the meeting location is required) - title — string — Service Booking Title - status — string — Status. (If not provided, the status configured in Service Global Settings will be used.)

Respuestas: - 201 — Booking created successfully - 400 — Peticion invalida - 401 — Usuario no autenticado


GET /calendars/services/bookings/{bookingId}

Obtener Service Booking by Id Get a specific service booking by Id

Scopes requeridos: calendars/events.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - bookingId (path, string) (requerido) — Id de Unique Service Booking

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — Usuario no autenticado


PUT /calendars/services/bookings/{bookingId}

Actualizar Service Booking Update an existing service booking

Scopes requeridos: calendars/events.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - bookingId (path, string) (requerido) — Id de Unique Service Booking - overrideAvailability (query, boolean) — If true the time slot validation would be avoided for any booking creation/update (even the skipSchedulingNotice) - skipSchedulingNotice (query, boolean) — If set to true, the minimum scheduling notice and date range would be ignored

Cuerpo de la peticion (application/json): - serviceLocationId — string — Service Location Id - meetingLocation — string — Meeting Location (If service location is an ask the booker, then the meeting location is required) - title — string — Title - status — string — Status - startTime — string — Start Time - endTime — string — End Time - timezone — string — Timezone - services — array — If provided, services sent in the request will replace the existing services in the booking. - id (requerido) — string — Service Id - staffId — string — Staff Id - position — number — Position - addOns — array — Add-ons - id (requerido) — string — Add-on Id - quantity — number — Add-on quantity - duration — number — Add-on duration (in minutes)

Respuestas: - 200 — Booking updated successfully - 400 — Peticion invalida - 401 — Usuario no autenticado


DELETE /calendars/services/bookings/{bookingId}

Eliminar Service Booking Delete a service booking by Id

Scopes requeridos: calendars/events.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - bookingId (path, string) (requerido) — Id de Unique Service Booking

Respuestas: - 200 — Booking deleted successfully - 400 — Peticion invalida - 401 — Usuario no autenticado


GET /calendars/services/catalog

Obtener Services Get all services in a location.

Scopes requeridos: calendars.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (query, string) (requerido) — Id de sede - serviceCategoryId (query, string) — Id de Filter by service category - isPrivate (query, boolean) — Filter services: true = private only, false = public only, unset = all services

Respuestas: - 200 — Respuesta exitosa - 400 — Parametros de la solicitud invalidos - 401 — Usuario no autenticado


POST /calendars/services/catalog

Crear Service Create new service in a location.

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - name (requerido) — string — Service name - slug (requerido) — string — Unique URL-friendly identifier - staff (requerido) — array — Assigned staff members (at least one required) - id (requerido) — string — Staff Id - description — string — Service description - eventColor — string — Service event color (hex) - coverImage — string — Service cover image URL - serviceCategoryId — string — Service category Id (uses default category if not provided) - payment — — Payment details (default amount is 0, currency configured in Service Global Settings is used.) - serviceDuration — number — This controls the duration of the appointment - serviceDurationUnit — string — Duration unit - preBuffer — number — Pre-Buffer is additional time that can be added before an appointment, allowing for extra time to get ready - preBufferUnit — string — Pre-buffer unit - postBuffer — number — Post-buffer: Additional time that can be added after an appointment, allowing for extra time to wrap up - postBufferUnit — string — Post-buffer unit - isPrivate — boolean — Whether service is private (not shown publicly) - formId — string — Custom form Id (will be used to display the custom form on the booking page, if only one service is selected) - variations — array — Service variations (pass empty array for no variations) - serviceDuration — number — This controls the duration of the appointment - serviceDurationUnit — string — Duration unit - preBuffer — number — Pre-Buffer is additional time that can be added before an appointment, allowing for extra time to get ready - preBufferUnit — string — Pre-buffer unit - postBuffer — number — Post-buffer: Additional time that can be added after an appointment, allowing for extra time to wrap up - postBufferUnit — string — Post-buffer unit - payment — — Payment details - name (requerido) — string — Variation name

Respuestas: - 201 — Service created successfully - 400 — Parametros de la solicitud invalidos - 401 — Usuario no autenticado


GET /calendars/services/catalog/{serviceId}

Obtener Service by Id Get service by Id.

Scopes requeridos: calendars.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - serviceId (path, string) (requerido) — Id de Service

Respuestas: - 200 — Respuesta exitosa - 400 — Parametros de la solicitud invalidos - 401 — Usuario no autenticado


PUT /calendars/services/catalog/{serviceId}

Actualizar Service Update service by Id.

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - serviceId (path, string) (requerido) — Id de Service

Cuerpo de la peticion (application/json): - name — string — Service name - description — string — Service description - slug — string — Unique URL-friendly identifier - eventColor — string — Service event color (hex) - coverImage — string — Service cover image URL - serviceCategoryId — string — Service category Id - payment — — Payment details (currency configured in Service Global Settings is used.) - serviceDuration — number — This controls the duration of the appointment - serviceDurationUnit — string — Duration unit - preBuffer — number — Pre-Buffer is additional time that can be added before an appointment, allowing for extra time to get ready - preBufferUnit — string — Pre-buffer unit - postBuffer — number — Post-buffer: Additional time that can be added after an appointment, allowing for extra time to wrap up - postBufferUnit — string — Post-buffer unit - isPrivate — boolean — Whether service is private (not shown publicly) - formId — string — Custom form Id (will be used to display the custom form on the booking page, if only one service is selected) - staff — array — Assigned staff members - id (requerido) — string — Staff Id - variations — array — Service variations (an empty array removes all variations). Include an id to update an existing variation; omit the id to create a new one. - serviceDuration — number — This controls the duration of the appointment - serviceDurationUnit — string — Duration unit - preBuffer — number — Pre-Buffer is additional time that can be added before an appointment, allowing for extra time to get ready - preBufferUnit — string — Pre-buffer unit - postBuffer — number — Post-buffer: Additional time that can be added after an appointment, allowing for extra time to wrap up - postBufferUnit — string — Post-buffer unit - payment — — Payment details - id — string — Variation Id - name — string — Variation name

Respuestas: - 200 — Service updated successfully - 400 — Parametros de la solicitud invalidos - 401 — Usuario no autenticado


DELETE /calendars/services/catalog/{serviceId}

Eliminar Service Delete service by Id.

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - serviceId (path, string) (requerido) — Id de Service

Respuestas: - 200 — Service deleted successfully - 400 — Parametros de la solicitud invalidos - 401 — Usuario no autenticado


GET /calendars/services/locations

Obtener Service Locations Get all service locations

Scopes requeridos: calendars.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (query, string) (requerido) — Id de sede

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — Usuario no autenticado


POST /calendars/services/locations

Crear Service Location Create a new service location

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API

Cuerpo de la peticion (application/json): - locationId (requerido) — string — Location Id - name (requerido) — string — Location name - slug (requerido) — string — URL-friendly slug identifier - phone — string — Phone number - address — string — Use a full street address when locationType is offline. Use a user-facing label when locationType is ask_booker. - coverImage — string — URL of the cover image for this service location - locationType — string — Location type

Respuestas: - 201 — Service location created successfully - 400 — Peticion invalida - 401 — Usuario no autenticado


GET /calendars/services/locations/{serviceLocationId}

Obtener Service Location by Id Get service location by Id

Scopes requeridos: calendars.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - serviceLocationId (path, string) (requerido) — Id de Unique Service Location

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — Usuario no autenticado


PUT /calendars/services/locations/{serviceLocationId}

Actualizar Service Location Update an existing service location

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - serviceLocationId (path, string) (requerido) — Id de Unique Service Location

Cuerpo de la peticion (application/json): - name — string — Location name - slug — string — Updated URL-friendly slug identifier - phone — string — Updated contact phone number - address — string — Use a full street address when locationType is offline. Use a user-facing label when locationType is ask_booker. - coverImage — string — Updated URL of the cover image - locationType — string — Location type

Respuestas: - 200 — Service location updated successfully - 400 — Peticion invalida - 401 — Usuario no autenticado


DELETE /calendars/services/locations/{serviceLocationId}

Eliminar Service Location Delete a service location by Id

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - serviceLocationId (path, string) (requerido) — Id de Unique Service Location

Respuestas: - 200 — Service location deleted successfully - 400 — Peticion invalida - 401 — Usuario no autenticado


POST /calendars/events/appointments

Crear cita Scopes requeridos: calendars/events.write

Parametros: - Versión (header, string) (requerido) — Versión de la API

Cuerpo de la peticion (application/json): - title — string — Title - meetingLocationType — string — Meeting location type. - If address is provided in the request body, the meetingLocationType defaults to custom. - meetingLocationId — string — The unique identifier for the meeting location. - This value can be found in calendar.locationConfigurationsor calendar.teamMembers[].locationConfigurations - overrideLocationConfig — boolean — Flag to override location config - false - If only meetingLocationId is provided - true - If only meetingLocationType is provided - appointmentStatus — string - assignedUserId — string — Assigned User Id - description — string — Appointment Description - address — string — Appointment Address - ignoreDateRange — boolean — If set to true, the minimum scheduling notice and date range would be ignored - toNotify — boolean — If set to false, the automations will not run. Defaults to true - ignoreFreeSlotValidation — boolean — If true the time slot validation would be avoided for any appointment creation (even the ignoreDateRange) - rrule — string — RRULE as per the iCalendar (RFC 5545) specification for recurring events. DTSTART is not required, instance ids are calculated on the basis of startTime of the event. The rrule only be applied if ignoreFreeSlotValidation is true. - calendarId (requerido) — string — Calendar Id - locationId (requerido) — string — Location Id - contactId (requerido) — string — Contact Id - startTime (requerido) — string — Start Time - endTime — string — End Time

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


PUT /calendars/events/appointments/{eventId}

Actualizar cita Update appointment

Scopes requeridos: calendars/events.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - eventId (path, string) (requerido) — Event Id or Instance id. For recurring appointments send masterEventId to modify original series.

Cuerpo de la peticion (application/json): - title — string — Title - meetingLocationType — string — Meeting location type. - If address is provided in the request body, the meetingLocationType defaults to custom. - meetingLocationId — string — The unique identifier for the meeting location. - This value can be found in calendar.locationConfigurationsor calendar.teamMembers[].locationConfigurations - overrideLocationConfig — boolean — Flag to override location config - false - If only meetingLocationId is provided - true - If only meetingLocationType is provided - appointmentStatus — string - assignedUserId — string — Assigned User Id - description — string — Appointment Description - address — string — Appointment Address - ignoreDateRange — boolean — If set to true, the minimum scheduling notice and date range would be ignored - toNotify — boolean — If set to false, the automations will not run. Defaults to true - ignoreFreeSlotValidation — boolean — If true the time slot validation would be avoided for any appointment creation (even the ignoreDateRange) - rrule — string — RRULE as per the iCalendar (RFC 5545) specification for recurring events. DTSTART is not required, instance ids are calculated on the basis of startTime of the event. The rrule only be applied if ignoreFreeSlotValidation is true. - calendarId — string — Calendar Id - startTime — string — Start Time - endTime — string — End Time

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


GET /calendars/events/appointments/{eventId}

Obtener cita Get appointment by Id

Scopes requeridos: calendars/events.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - eventId (path, string) (requerido) — Event Id or Instance id. For recurring appointments send masterEventId to modify original series.

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


GET /calendars/events

Obtener Calendar Events Scopes requeridos: calendars/events.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (query, string) (requerido) — Id de sede - userId (query, string) — User Id - Owner of an appointment. Either of userId, groupId or calendarId is required - calendarId (query, string) — Either of calendarId, userId or groupId is required - groupId (query, string) — Either of groupId, calendarId or userId is required - startTime (query, string) (requerido) — Start Time (in millis) - endTime (query, string) (requerido) — End Time (in millis)

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


GET /calendars/blocked-slots

Obtener Blocked Slots Scopes requeridos: calendars/events.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (query, string) (requerido) — Id de sede - userId (query, string) — User Id - Owner of an appointment. Either of userId, groupId or calendarId is required - calendarId (query, string) — Either of calendarId, userId or groupId is required - groupId (query, string) — Either of groupId, calendarId or userId is required - startTime (query, string) (requerido) — Start Time (in millis) - endTime (query, string) (requerido) — End Time (in millis)

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


POST /calendars/events/block-slots

Crear Block Slot Create block slot

Scopes requeridos: calendars/events.write

Parametros: - Versión (header, string) (requerido) — Versión de la API

Cuerpo de la peticion (application/json): - title — string — Title - calendarId (requerido) — string — Either calendarId or assignedUserId can be set, not both. - assignedUserId — string — Either calendarId or assignedUserId can be set, not both. - locationId (requerido) — string — Location Id - startTime — string — Start Time - endTime — string — End Time

Respuestas: - 201 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


PUT /calendars/events/block-slots/{eventId}

Actualizar Block Slot Update block slot by Id

Scopes requeridos: calendars/events.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - eventId (path, string) (requerido) — Event Id or Instance id. For recurring appointments send masterEventId to modify original series.

Cuerpo de la peticion (application/json): - title — string — Title - calendarId (requerido) — string — Either calendarId or assignedUserId can be set, not both. - assignedUserId — string — Either calendarId or assignedUserId can be set, not both. - locationId (requerido) — string — Location Id - startTime — string — Start Time - endTime — string — End Time

Respuestas: - 201 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


GET /calendars/{calendarId}/free-slots

Obtener Free Slots Get free slots for a calendar between a date range. Optionally a consumer can also request free slots in a particular timezone and also for a particular user.

Scopes requeridos: calendars.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - calendarId (path, string) (requerido) — Id de calendario - startDate (query, number) (requerido) — Start Date (⚠️ Important: Date range cannot be more than 31 days) - endDate (query, number) (requerido) — End Date (⚠️ Important: Date range cannot be more than 31 days) - timezone (query, string) — The timezone in which the free slots are returned - userId (query, string) — The user for whom the free slots are returned - userIds (query, array) — The users for whom the free slots are returned

Respuestas: - 200 — Availability map keyed by date (YYYY-MM-DD) - 400 — Peticion invalida - 401 — No autorizado


PUT /calendars/{calendarId}

Actualizar calendario Update calendar by Id.

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - calendarId (path, string) (requerido) — Id de calendario

Cuerpo de la peticion (application/json): - notifications — array — 🚨 Deprecated! Please use 'Calendar Notifications APIs' instead. - type — string — Calendar Notification - shouldSendToContact (requerido) — boolean - shouldSendToGuest (requerido) — boolean - shouldSendToUser (requerido) — boolean - shouldSendToSelectedUsers (requerido) — boolean - selectedUsers (requerido) — string — Comma separated emails - groupId — string — Group Id - teamMembers — array — Team members are required for calendars of type: Round Robin, Collective, Class, Service. Personal calendar must have exactly one team member. - userId (requerido) — string - priority — number - meetingLocationType — string — 🚨 Deprecated! Use locationConfigurations.kind instead. - meetingLocation — string — 🚨 Deprecated! Use locationConfigurations.location instead. - isPrimary — boolean — Marks a user as primary. This property is required in case of collective booking calendars. Only one user can be primary. - locationConfigurations — array — Meeting location configuration for event calendar. - Multiple locations are allowed only when one team member is selected. - For Class booking and Collective calendars, only one location configuration is allowed for each team member. - kind (requerido) — string — Type of meeting location. zoom_conference/google_conference/ms_teams_conference is not supported in event calendar type - location — string — Address for meeting location. Not applicable on "zoom_conference", "google_conference" and "ms_teams_conference" kind - eventType — string - name — string - description — string - slug — string - widgetSlug — string - widgetType — string — Calendar widget type. Choose "default" for "neo" and "classic" for "classic" layout. - eventTitle — string - eventColor — string - locationConfigurations — array — Meeting location configuration for event calendar - kind (requerido) — string — Type of meeting location. zoom_conference/google_conference/ms_teams_conference is not supported in event calendar type - location — string — Address for meeting location. Not applicable on "zoom_conference", "google_conference" and "ms_teams_conference" kind - meetingLocation — string — 🚨 Deprecated! Use locationConfigurations.location or teamMembers[].locationConfigurations.location instead. - slotDuration — number — This controls the duration of the meeting - slotDurationUnit — string — Unit for slot duration. - preBufferUnit — string — Unit for pre-buffer. - slotInterval — number — Slot interval reflects the amount of time the between booking slots that will be shown in the calendar. - slotIntervalUnit — string — Unit for slot interval. - slotBuffer — number — Slot-Buffer is additional time that can be added after an appointment, allowing for extra time to wrap up - preBuffer — number — Pre-Buffer is additional time that can be added before an appointment, allowing for extra time to get ready - appoinmentPerSlot — number - appoinmentPerDay — number — Number of appointments that can be booked for a given day - allowBookingAfter — number — Minimum scheduling notice for events - allowBookingAfterUnit — string — Unit for minimum scheduling notice - allowBookingFor — number — Minimum number of days/weeks/months for which to allow booking events - allowBookingForUnit — string — Unit for controlling the duration for which booking would be allowed for - openHours — array — While we will support this property for backward compatibility, it is recommended to use 'Availability' APIs instead. - daysOfTheWeek (requerido) — array - hours (requerido) — array - openHour (requerido) — number - openMinute (requerido) — number - closeHour (requerido) — number - closeMinute (requerido) — number - enableRecurring — boolean — Enable recurring appointments for the calendars. Please note that only one member should be added in the calendar to enable this - recurring — - freq — string - count — number — Number of recurrences - bookingOption — string — This setting contols what to do incase a recurring slot is unavailable - bookingOverlapDefaultStatus — string — This setting contols what to do incase a recurring slot is unavailable - formId — string - stickyContact — boolean - isLivePaymentMode — boolean - autoConfirm — boolean - shouldSendAlertEmailsToAssignedMember — boolean - alertEmail — string - googleInvitationEmails — boolean - allowReschedule — boolean - allowCancellation — boolean - shouldAssignContactToTeamMember — boolean - shouldSkipAssigningContactForExisting — boolean - notes — string - pixelId — string - formSubmitType — string - formSubmitRedirectURL — string - formSubmitThanksMessage — string - availabilityType — number — While we will support this property for backward compatibility, it is not required anymore. - availabilities — array — While we will support this property for backward compatibility, it is recommended to use 'Availability' APIs instead. - date (requerido) — string — Formulate the date string in the format of <YYYY-MM-DD in local timezone>T00:00:00.000Z. - hours (requerido) — array - openHour (requerido) — number - openMinute (requerido) — number - closeHour (requerido) — number - closeMinute (requerido) — number - deleted — boolean - id — string — The Id of the custom availability object. It is required while updating or deleting the existing custom date availability - guestType — string - consentLabel — string - calendarCoverImage — string - lookBusyConfig — — Look Busy Configuration - isActive — boolean

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


GET /calendars/{calendarId}

Obtener calendario Get calendar by Id

Scopes requeridos: calendars.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - calendarId (path, string) (requerido) — Id de calendario

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


DELETE /calendars/{calendarId}

Eliminar calendario Delete calendar by Id

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - calendarId (path, string) (requerido) — Id de calendario

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


DELETE /calendars/events/{eventId}

Eliminar evento Delete event by Id

Scopes requeridos: calendars/events.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - eventId (path, string) (requerido) — Event Id or Instance id. For recurring appointments send masterEventId to modify original series.

Cuerpo de la peticion (application/json): - (ver esquema en la fuente original)

Respuestas: - 201 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


GET /calendars/appointments/{appointmentId}/notes

Obtener notas Get Appointment Notes

Scopes requeridos: calendars/events.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - limit (query, number) (requerido) — Limit of notes to fetch - offset (query, number) (requerido) — Offset of notes to fetch - appointmentId (path, string) (requerido) — Id de cita

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


POST /calendars/appointments/{appointmentId}/notes

Crear nota Scopes requeridos: calendars/events.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - appointmentId (path, string) (requerido) — Id de cita

Cuerpo de la peticion (application/json): - userId — string - body (requerido) — string — Note body

Respuestas: - 201 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


PUT /calendars/appointments/{appointmentId}/notes/{noteId}

Actualizar nota Scopes requeridos: calendars/events.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - appointmentId (path, string) (requerido) — Id de cita

Cuerpo de la peticion (application/json): - userId — string - body (requerido) — string — Note body

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


DELETE /calendars/appointments/{appointmentId}/notes/{noteId}

Eliminar nota Scopes requeridos: calendars/events.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - appointmentId (path, string) (requerido) — Id de cita

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


GET /calendars/resources/{resourceType}/{id}

Obtener Calendar Resource Get calendar resource by Id (Services V1)

Scopes requeridos: calendars/resources.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - resourceType (path, string) (requerido) — Calendar Resource Type - id (path, string) (requerido) — Id de Calendar Resource

Respuestas: - 200 — Calendar resource fetched - 400 — Peticion invalida - 401 — No autorizado


PUT /calendars/resources/{resourceType}/{id}

Actualizar Calendar Resource Update calendar resource by Id (Services V1)

Scopes requeridos: calendars/resources.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - resourceType (path, string) (requerido) — Calendar Resource Type - id (path, string) (requerido) — Id de Calendar Resource

Cuerpo de la peticion (application/json): - locationId — string - name — string - description — string - quantity — number — Quantity of the equipment. - outOfService — number — Quantity of the out of service equipment. - capacity — number — Capacity of the room. - calendarIds — array — Service calendar IDs to be mapped with the resource.

One equipment can only be mapped with one service calendar.

One room can be mapped with multiple service calendars. - isActive — boolean

Respuestas: - 200 — Calendar resource updated - 400 — Peticion invalida - 401 — No autorizado


DELETE /calendars/resources/{resourceType}/{id}

Eliminar Calendar Resource Delete calendar resource by Id (Services V1)

Scopes requeridos: calendars/resources.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - resourceType (path, string) (requerido) — Calendar Resource Type - id (path, string) (requerido) — Id de Calendar Resource

Respuestas: - 200 — Calendar resource deleted - 400 — Peticion invalida - 401 — No autorizado


GET /calendars/resources/{resourceType}

Listar Calendar Resources List calendar resources by resource type and location Id (Services V1)

Scopes requeridos: calendars/resources.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - resourceType (path, string) (requerido) — Calendar Resource Type - locationId (query, string) (requerido) — - limit (query, number) (requerido) — - skip (query, number) (requerido) —

Respuestas: - 200 — Calendar resources listed - 400 — Peticion invalida - 401 — No autorizado


POST /calendars/resources/{resourceType}

Crear Calendar Resource Create calendar resource by resource type (Services V1)

Scopes requeridos: calendars/resources.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - resourceType (path, string) (requerido) — Calendar Resource Type

Cuerpo de la peticion (application/json): - locationId (requerido) — string - name (requerido) — string - description (requerido) — string - quantity (requerido) — number — Quantity of the equipment. - outOfService (requerido) — number — Quantity of the out of service equipment. - capacity (requerido) — number — Capacity of the room. - calendarIds (requerido) — array — Service calendar IDs to be mapped with the resource.

One equipment can only be mapped with one service calendar.

One room can be mapped with multiple service calendars.

Respuestas: - 201 — Calendar resource created - 400 — Peticion invalida - 401 — No autorizado


GET /calendars/{calendarId}/notifications

Obtener notifications Get calendar notifications based on query

Scopes requeridos: calendars/events.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - calendarId (path, string) (requerido) — - isActive (query, boolean) — - deleted (query, boolean) — - limit (query, number) — Number of records to return - skip (query, number) — Número de registros a omitir

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


POST /calendars/{calendarId}/notifications

Crear notification Create Calendar notifications, either one or multiple. All notification settings must be for single calendar only

Scopes requeridos: calendars/events.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - calendarId (path, string) (requerido) —

Cuerpo de la peticion (application/json): - receiverType (requerido) — string — notification recipient type - channel (requerido) — string — Notification channel - notificationType (requerido) — string — Notification type - isActive — boolean — Is the notification active - templateId — string — Template Id for email notification. Not necessary for in-App notification - body — string — Body for email notification. Not necessary for in-App notification - subject — string — Subject for email notification. Not necessary for in-App notification - afterTime — array — Specifies the time after which the follow-up notification should be sent. This is not required for other notification types. - timeOffset — number - unit — string - beforeTime — array — Specifies the time before which the reminder notification should be sent. This is not required for other notification types. - timeOffset — number - unit — string - additionalEmailIds — array — Additional email addresses to receive notifications. - additionalPhoneNumbers — array — Additional phone numbers to receive notifications. - selectedUsers — array — Selected users for in-App and business email notifications. Supports user IDs and special keyword "sub_account_admin" - fromAddress — string — from address for email notification - fromName — string — from name for email/sms notification - fromNumber — string — from number for sms notification

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


GET /calendars/{calendarId}/notifications/{notificationId}

Obtener notification Find Event notification by notificationId

Scopes requeridos: calendars/events.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - calendarId (path, string) (requerido) — - notificationId (path, string) (requerido) —

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


PUT /calendars/{calendarId}/notifications/{notificationId}

Actualizar notification Update Event notification by id

Scopes requeridos: calendars/events.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - calendarId (path, string) (requerido) — - notificationId (path, string) (requerido) —

Cuerpo de la peticion (application/json): - receiverType — string — Notification recipient type - additionalEmailIds — array — Additional email addresses to receive notifications. - additionalPhoneNumbers — array — Additional phone numbers to receive notifications. - selectedUsers — array — Selected users for in-App and business email notifications. Supports user IDs and special keyword "sub_account_admin" - channel — string — Notification channel - notificationType — string — Notification type - isActive — boolean — Is the notification active - deleted — boolean — Marks the notification as deleted (soft delete) - templateId — string — Template Id for email notification - body — string — Body for email notification. Not necessary for in-App notification - subject — string — Subject for email notification. Not necessary for in-App notification - afterTime — array — Specifies the time after which the follow-up notification should be sent. This is not required for other notification types. - timeOffset — number - unit — string - beforeTime — array — Specifies the time before which the reminder notification should be sent. This is not required for other notification types. - timeOffset — number - unit — string - fromAddress — string — From address for email notification - fromNumber — string — from number for sms notification - fromName — string — From name for email/sms notification

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


DELETE /calendars/{calendarId}/notifications/{notificationId}

Eliminar Notification Delete notification

Scopes requeridos: calendars/events.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - calendarId (path, string) (requerido) — - notificationId (path, string) (requerido) —

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


GET /calendars/schedules/search

Listar user availability schedule Retrieve user availability schedules based on various filters including location, calendar, and user. Supports pagination.

Scopes requeridos: calendars.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (query, string) (requerido) — Location Id to filter schedules by - userId (query, string) (requerido) — User Id to filter schedules by specific user - calendarId (query, string) — Calendar Id for filtering schedules by specific calendar - skip (query, number) — Number of items to skip for pagination - limit (query, number) — Maximum number of items to return (max 500)

Respuestas: - 200 — Schedules retrieved successfully - 400 — Parametros de la solicitud invalidos - 401 — Usuario no autenticado


GET /calendars/schedules/{id}

Obtener user availability schedule Retrieve a specific schedule by its unique identifier. Returns detailed information including rules, timezone, and associated calendars/users.

Scopes requeridos: calendars.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - id (path, string) (requerido) — Unique identifier of the schedule

Respuestas: - 200 — Schedule found and retrieved successfully - 400 — Parametros de la solicitud invalidos - 401 — Usuario no autenticado - 404 — Schedule with the specified Id was not found


PUT /calendars/schedules/{id}

Actualizar user availability schedule Modify an existing schedule by updating its rules, timezone, and name All fields are optional - only provided fields will be updated.

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - id (path, string) (requerido) — Unique identifier of the schedule to update

Cuerpo de la peticion (application/json): - name — string — Human-readable name for the schedule - rules — array — Updated schedule rules defining when the schedule is active - type (requerido) — string — Type of schedule rule - weekday (recurring) or date (specific date) - intervals (requerido) — array — Time intervals for the rule (e.g., 9 AM to 5 PM) - from (requerido) — string — Start time in HH:MM format (24-hour format) - to (requerido) — string — End time in HH:MM format (24-hour format) - date — string — Specific date in YYYY-MM-DD format (only for date-type rules) - day — string — Day of week (only for weekday-type rules) - timezone — string — Updated timezone for the schedule (IANA timezone identifier)

Respuestas: - 200 — Schedule updated successfully - 400 — Parametros de la solicitud invalidos - 401 — Usuario no autenticado - 404 — Schedule with the specified Id was not found - 422 — Validation errors in schedule rules or conflicting data


DELETE /calendars/schedules/{id}

Eliminar user availability schedule Permanently remove a schedule and all its associated rules. This action cannot be undone.

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - id (path, string) (requerido) — Unique identifier of the schedule to delete

Respuestas: - 200 — Schedule deleted successfully - 400 — Parametros de la solicitud invalidos - 401 — Usuario no autenticado - 404 — Schedule with the specified Id was not found


POST /calendars/schedules

Crear user availability schedule Create new schedule with specified rules, timezone, location, user and calendar associations.

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API

Cuerpo de la peticion (application/json): - rules — array — Schedule rules defining when the schedule is active - type (requerido) — string — Type of schedule rule - weekday (recurring) or date (specific date) - intervals (requerido) — array — Time intervals for the rule (e.g., 9 AM to 5 PM) - from (requerido) — string — Start time in HH:MM format (24-hour format) - to (requerido) — string — End time in HH:MM format (24-hour format) - date — string — Specific date in YYYY-MM-DD format (only for date-type rules) - day — string — Day of week (only for weekday-type rules) - timezone (requerido) — string — Timezone for the schedule (IANA timezone identifier) - locationId (requerido) — string — Location Id where this schedule applies - name (requerido) — string — Human-readable name for the schedule - userId (requerido) — string — User Id associated with the schedule - calendarIds — array — Calendar IDs associated with the schedule

Respuestas: - 201 — Schedule created successfully - 400 — Parametros de la solicitud invalidos - 401 — Usuario no autenticado - 422 — Validation errors in schedule rules or conflicting data


PUT /calendars/schedules/{id}/associations/{calendarId}

Apply user availability schedule to a calendar Associates a calendar with the given schedule by adding the calendarId to a schedule

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - id (path, string) (requerido) — Unique identifier of the schedule - calendarId (path, string) (requerido) — Unique identifier of the team calendar to add to the schedule

Respuestas: - 200 — Calendar successfully added to schedule - 400 — Schedule and calendar must belong to the same location - 401 — Usuario no autenticado - 404 — Schedule or calendar not found


DELETE /calendars/schedules/{id}/associations/{calendarId}

Quitar user availability schedule from a calendar Removes the association between a team calendar and the given schedule by removing the calendarId from the schedule

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - id (path, string) (requerido) — Unique identifier of the schedule - calendarId (path, string) (requerido) — Unique identifier of the calendar to remove from the schedule

Respuestas: - 200 — Calendar successfully removed from schedule - 400 — Schedule and calendar must belong to the same location - 401 — Usuario no autenticado - 404 — Schedule or calendar not found


POST /calendars/schedules/event-calendar/{calendarId}

Crear event calendar availability schedule Create a new availability schedule specifically for an event calendar. The calendar Id is provided in the path, and schedule rules and timezone are provided in the request body.

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - calendarId (path, string) (requerido) — Unique identifier of the event calendar

Cuerpo de la peticion (application/json): - rules (requerido) — array — Schedule rules defining when the schedule is active - type (requerido) — string — Type of schedule rule - weekday (recurring) or date (specific date) - intervals (requerido) — array — Time intervals for the rule (e.g., 9 AM to 5 PM) - from (requerido) — string — Start time in HH:MM format (24-hour format) - to (requerido) — string — End time in HH:MM format (24-hour format) - date — string — Specific date in YYYY-MM-DD format (only for date-type rules) - day — string — Day of week (only for weekday-type rules) - timezone (requerido) — string — Timezone for the schedule (IANA timezone identifier)

Respuestas: - 201 — Schedule created successfully for the event calendar - 400 — Parametros de la solicitud invalidos - 401 — Usuario no autenticado - 404 — Event calendar with the specified Id was not found - 422 — Validation errors in schedule rules or conflicting data


GET /calendars/schedules/event-calendar/{calendarId}

Obtener event calendar availability schedule Retrieve the availability schedule for a specific event calendar. Returns the schedule associated with the calendar Id provided in the path.

Scopes requeridos: calendars.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - calendarId (path, string) (requerido) — Unique identifier of the event calendar

Respuestas: - 200 — Schedule retrieved successfully for the event calendar - 400 — Parametros de la solicitud invalidos - 401 — Usuario no autenticado - 404 — Event calendar or schedule with the specified Id was not found


PUT /calendars/schedules/event-calendar/{calendarId}

Actualizar event calendar availability schedule Update the availability schedule for a specific event calendar. Only provided fields will be updated. The calendar Id is provided in the path.

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API - calendarId (path, string) (requerido) — Unique identifier of the event calendar

Cuerpo de la peticion (application/json): - rules — array — Updated schedule rules defining when the schedule is active - type (requerido) — string — Type of schedule rule - weekday (recurring) or date (specific date) - intervals (requerido) — array — Time intervals for the rule (e.g., 9 AM to 5 PM) - from (requerido) — string — Start time in HH:MM format (24-hour format) - to (requerido) — string — End time in HH:MM format (24-hour format) - date — string — Specific date in YYYY-MM-DD format (only for date-type rules) - day — string — Day of week (only for weekday-type rules) - timezone — string — Updated timezone for the schedule (IANA timezone identifier)

Respuestas: - 200 — Schedule updated successfully for the event calendar - 400 — Parametros de la solicitud invalidos - 401 — Usuario no autenticado - 404 — Event calendar or schedule with the specified Id was not found - 422 — Validation errors in schedule rules or conflicting data


GET /calendars/

Obtener calendarios Get all calendars in a location.

Scopes requeridos: calendars.readonly

Parametros: - Versión (header, string) (requerido) — Versión de la API - locationId (query, string) (requerido) — Id de sede - groupId (query, string) — Id de Group - showDrafted (query, boolean) — Show drafted

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado


POST /calendars/

Crear calendario Create calendar in a location.

Scopes requeridos: calendars.write

Parametros: - Versión (header, string) (requerido) — Versión de la API

Cuerpo de la peticion (application/json): - isActive — boolean — Should the created calendar be active or draft - notifications — array — 🚨 Deprecated! Please use 'Calendar Notifications APIs' instead. - type — string — Calendar Notification - shouldSendToContact (requerido) — boolean - shouldSendToGuest (requerido) — boolean - shouldSendToUser (requerido) — boolean - shouldSendToSelectedUsers (requerido) — boolean - selectedUsers (requerido) — string — Comma separated emails - locationId (requerido) — string - groupId — string — Group Id - teamMembers — array — Team members are required for calendars of type: Round Robin, Collective, Class, Service. Personal calendar must have exactly one team member. - userId (requerido) — string - priority — number - meetingLocationType — string — 🚨 Deprecated! Use locationConfigurations.kind instead. - meetingLocation — string — 🚨 Deprecated! Use locationConfigurations.location instead. - isPrimary — boolean — Marks a user as primary. This property is required in case of collective booking calendars. Only one user can be primary. - locationConfigurations — array — Meeting location configuration for event calendar. - Multiple locations are allowed only when one team member is selected. - For Class booking and Collective calendars, only one location configuration is allowed for each team member. - kind (requerido) — string — Type of meeting location. zoom_conference/google_conference/ms_teams_conference is not supported in event calendar type - location — string — Address for meeting location. Not applicable on "zoom_conference", "google_conference" and "ms_teams_conference" kind - eventType — string - name (requerido) — string - description — string - slug — string - widgetSlug — string - calendarType — string - widgetType — string — Calendar widget type. Choose "default" for "neo" and "classic" for "classic" layout. - eventTitle — string - eventColor — string - meetingLocation — string — 🚨 Deprecated! Use locationConfigurations.location or teamMembers[].locationConfigurations.location instead. - locationConfigurations — array — Meeting location configuration for event calendar - kind (requerido) — string — Type of meeting location. zoom_conference/google_conference/ms_teams_conference is not supported in event calendar type - location — string — Address for meeting location. Not applicable on "zoom_conference", "google_conference" and "ms_teams_conference" kind - slotDuration — number — This controls the duration of the meeting - slotDurationUnit — string — Unit for slot duration. - slotInterval — number — Slot interval reflects the amount of time the between booking slots that will be shown in the calendar. - slotIntervalUnit — string — Unit for slot interval. - slotBuffer — number — Slot-Buffer is additional time that can be added after an appointment, allowing for extra time to wrap up - slotBufferUnit — string — Unit for slot buffer. - preBuffer — number — Pre-Buffer is additional time that can be added before an appointment, allowing for extra time to get ready - preBufferUnit — string — Unit for pre-buffer. - appoinmentPerSlot — number — Maximum bookings per slot (per user). Maximum seats per slot in case of Class Booking Calendar. - appoinmentPerDay — number — Number of appointments that can be booked for a given day - allowBookingAfter — number — Minimum scheduling notice for events - allowBookingAfterUnit — string — Unit for minimum scheduling notice - allowBookingFor — number — Minimum number of days/weeks/months for which to allow booking events - allowBookingForUnit — string — Unit for controlling the duration for which booking would be allowed for - openHours — array — While we will support this property for backward compatibility, it is recommended to use 'Availability' APIs instead. - daysOfTheWeek (requerido) — array - hours (requerido) — array - openHour (requerido) — number - openMinute (requerido) — number - closeHour (requerido) — number - closeMinute (requerido) — number - enableRecurring — boolean — Enable recurring appointments for the calendars. Please note that only one member should be added in the calendar to enable this - recurring — - freq — string - count — number — Number of recurrences - bookingOption — string — This setting contols what to do incase a recurring slot is unavailable - bookingOverlapDefaultStatus — string — This setting contols what to do incase a recurring slot is unavailable - formId — string - stickyContact — boolean - isLivePaymentMode — boolean - autoConfirm — boolean - shouldSendAlertEmailsToAssignedMember — boolean - alertEmail — string - googleInvitationEmails — boolean - allowReschedule — boolean - allowCancellation — boolean - shouldAssignContactToTeamMember — boolean - shouldSkipAssigningContactForExisting — boolean - notes — string - pixelId — string - formSubmitType — string - formSubmitRedirectURL — string - formSubmitThanksMessage — string - availabilityType — number — While we will support this property for backward compatibility, it is not required anymore. - availabilities — array — While we will support this property for backward compatibility, it is recommended to use 'Availability' APIs instead. - date (requerido) — string — Formulate the date string in the format of <YYYY-MM-DD in local timezone>T00:00:00.000Z. - hours (requerido) — array - openHour (requerido) — number - openMinute (requerido) — number - closeHour (requerido) — number - closeMinute (requerido) — number - deleted — boolean - guestType — string - consentLabel — string - calendarCoverImage — string - lookBusyConfig — — Look Busy Configuration

Respuestas: - 200 — Respuesta exitosa - 400 — Peticion invalida - 401 — No autorizado