Agenda
Referencia de 20 endpoints generados desde mosend-wb-backend/src/modules/agenda/agenda.controller.ts.
/organizations/:orgId/agenda·20 endpoints·Source: mosend-wb-backend/src/modules/agenda/agenda.controller.ts/organizations/:orgId/agenda/settingsConfiguración de la agenda de la organización.
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/settings' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/settingsActualiza la configuración de la agenda (habilitar requiere la feature de plan `agenda`).
Path params
orgIdstringrequerido
Body (JSON)
enabledbooleanminNoticeMinnumbermaxAdvanceDaysnumberreminderTemplateNamestringPlantilla aprobada para el recordatorio. Convención de variables: {{1}} = nombre del contacto, {{2}} = fecha y hora local de la cita.
reminderTemplateLangstringreminderHoursBeforenumberHoras antes de la cita (0 = sin recordatorio, máx 72).
reminderPhoneNumberIdstring · uuidbookingFlowIdstring · uuidWhatsAppFlow (local) publicado para reserva con date-picker nativo.
Respuestas
- 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/settings' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"enabled": true,"minNoticeMin": 0,"maxAdvanceDays": 0,"reminderTemplateName": "<reminderTemplateName>","reminderTemplateLang": "<reminderTemplateLang>","reminderHoursBefore": 0,"reminderPhoneNumberId": "00000000-0000-0000-0000-000000000000","bookingFlowId": "00000000-0000-0000-0000-000000000000"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/icsEstado del feed ICS público (URL de suscripción o deshabilitado).
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/ics' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/ics/rotateGenera o rota el token del feed ICS (rotar revoca las suscripciones previas).
Path params
orgIdstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/ics/rotate' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/icsDesactiva el feed ICS (borra el token).
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X DELETE 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/ics' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/typesLista los tipos de cita (servicios reservables).
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/types' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/typesCrea un tipo de cita (duración + colchón).
Path params
orgIdstringrequerido
Body (JSON)
namestringrequeridodescriptionstringdurationMinnumberrequeridobufferMinnumber
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/types' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"name": "<name>","description": "<description>","durationMin": 0,"bufferMin": 0}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/types/:idActualiza (o desactiva) un tipo de cita.
Path params
orgIdstringrequeridoidstringrequerido
Body (JSON)
namestringdescriptionstringdurationMinnumberbufferMinnumberactiveboolean
Respuestas
- 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/types/00000000-0000-0000-0000-000000000000' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"name": "<name>","description": "<description>","durationMin": 0,"bufferMin": 0,"active": true}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/staffProfesionales de la org (para agenda por profesional) + si ya tienen disponibilidad.
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/staff' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/availabilityReglas semanales de disponibilidad (weekday + minutos locales de la org). `staffUserId` para agenda por profesional.
Path params
orgIdstringrequerido
Query params
staffUserIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/availability' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/availabilityReemplaza el set completo de reglas semanales.
Path params
orgIdstringrequerido
Query params
staffUserIdstringrequerido
Body (JSON)
rulesAvailabilityRuleDto[]requeridoReemplaza TODAS las reglas de la agenda general (staffUserId null).
Respuestas
- 200
curl -X PUT 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/availability' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"rules": []}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/exceptionsDías bloqueados (festivos, vacaciones).
Path params
orgIdstringrequerido
Query params
staffUserIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/exceptions' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/exceptionsBloquea un día completo (YYYY-MM-DD local).
Path params
orgIdstringrequerido
Query params
staffUserIdstringrequerido
Body (JSON)
datestringrequeridoDía local de la org, formato YYYY-MM-DD.
reasonstring
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/exceptions' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"date": "<date>","reason": "<reason>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/exceptions/:idDesbloquea un día.
Path params
orgIdstringrequeridoidstringrequerido
Respuestas
- 204
curl -X DELETE 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/exceptions/00000000-0000-0000-0000-000000000000' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/slotsSlots disponibles para un tipo de cita (TZ de la org; respeta antelación, excepciones y citas existentes).
Path params
orgIdstringrequerido
Query params
typeIdstringrequeridofromstringFecha/hora ISO desde la que buscar (default: ahora).
daysnumberCuántos días explorar (default 7, tope maxAdvanceDays del settings).
staffUserIdstringProfesional cuya disponibilidad consultar. Vacío = agenda general.
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/slots' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/appointmentsLista citas con filtros (rango, estado, contacto).
Path params
orgIdstringrequerido
Query params
fromstringtostringstatusstringcontactIdstringstaffUserIdstringFiltra por profesional. `general` = agenda general (staffUserId null).
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/appointments' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/appointmentsReserva un slot exacto (de GET slots) para un contacto. 409 si el horario ya no está disponible.
Path params
orgIdstringrequerido
Body (JSON)
typeIdstring · uuidrequeridocontactIdstring · uuidrequeridostartAtstringrequeridoInicio exacto de un slot devuelto por GET slots (ISO).
conversationIdstring · uuidphoneNumberIdstring · uuidnotesstringstaffUserIdstring · uuidProfesional con el que se reserva. Vacío = agenda general.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/appointments' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"typeId": "00000000-0000-0000-0000-000000000000","contactId": "00000000-0000-0000-0000-000000000000","startAt": "<startAt>","conversationId": "00000000-0000-0000-0000-000000000000","phoneNumberId": "00000000-0000-0000-0000-000000000000","notes": "<notes>","staffUserId": "00000000-0000-0000-0000-000000000000"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/appointments/:id/cancelCancela una cita confirmada.
Path params
orgIdstringrequeridoidstringrequerido
Body (JSON)
reasonstring
Respuestas
- 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/appointments/00000000-0000-0000-0000-000000000000/cancel' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"reason": "<reason>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/appointments/:id/rescheduleReprograma una cita confirmada a un nuevo horario disponible.
Path params
orgIdstringrequeridoidstringrequerido
Body (JSON)
startAtstringrequeridoNuevo inicio (ISO); debe ser un slot disponible del mismo tipo de cita.
Respuestas
- 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/appointments/00000000-0000-0000-0000-000000000000/reschedule' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"startAt": "<startAt>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/agenda/appointments/:id/statusMarca una cita como COMPLETED o NO_SHOW.
Path params
orgIdstringrequeridoidstringrequerido
Body (JSON)
statusstringrequeridoNO_SHOWCOMPLETED
Respuestas
- 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/agenda/appointments/00000000-0000-0000-0000-000000000000/status' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"status": "NO_SHOW"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}