Obtener disponibilidad efectiva por servicio

Este endpoint permite consultar la disponibilidad efectiva de los empleados de un servicio en un periodo de tiempo no superior a 32 días.

GET /api/v1/businesses/{businessId}/services/{serviceId}/effectiveDisponibilities?from={yyyy-MM-dd}&to={yyyy-MM-dd}

Si los datos incluidos en la petición son correctos —tanto el businessId como el serviceId—, la respuesta será un 200 OK con la disponibilidad de todos los empleados del servicio.

Ejemplo de respuesta

{
    "serviceId": "SERVICEID",
    "from": "2025-05-01",
    "to": "2025-05-03",
    "disponibilityIntervals": [
        {
            "day": "2025-05-01",
            "type": "DAY_TYPE",
            "personId": "XX1",
            "free": false,
            "intervals": [
                {
                    "from": "2025-05-01T08:00:00.000Z",
                    "to": "2025-05-01T13:00:00.000Z"
                }
            ]
        },
        {
            "day": "2025-05-02",
            "type": "DAY_TYPE",
            "personId": "XX1",
            "free": false,
            "intervals": [
                {
                    "from": "2025-05-02T08:00:00.000Z",
                    "to": "2025-05-02T13:00:00.000Z"
                }
            ]
        },
        {
            "day": "2025-05-03",
            "type": "DAY_TYPE",
            "personId": "XX1",
            "free": false,
            "intervals": [
                {
                    "from": "2025-05-03T08:00:00.000Z",
                    "to": "2025-05-03T13:00:00.000Z"
                }
            ]
        },
        {
            "day": "2025-05-01",
            "type": "CALENDAR",
            "personId": "XX2",
            "free": false,
            "intervals": [
                {
                    "from": "2025-05-01T07:00:00.000Z",
                    "to": "2025-05-01T08:00:00.000Z"
                },
                {
                    "from": "2025-05-01T13:00:00.000Z",
                    "to": "2025-05-01T18:00:00.000Z"
                }
            ]
        },
        {
            "day": "2025-05-02",
            "type": "CALENDAR",
            "personId": "XX2",
            "free": false,
            "intervals": [
                {
                    "from": "2025-05-02T07:00:00.000Z",
                    "to": "2025-05-02T08:00:00.000Z"
                },
                {
                    "from": "2025-05-02T13:00:00.000Z",
                    "to": "2025-05-02T18:00:00.000Z"
                }
            ]
        },
        {
            "day": "2025-05-03",
            "type": "CALENDAR",
            "personId": "XX2",
            "free": true,
            "intervals": []
        },
        {
            "day": "2025-05-01",
            "type": "AVAILABILITY_PATTERN",
            "personId": "XX3",
            "free": false,
            "intervals": [
                {
                    "from": "2025-05-01T16:00:00.000Z",
                    "to": "2025-05-01T22:00:00.000Z"
                }
            ]
        },
        {
            "day": "2025-05-02",
            "type": "AVAILABILITY_PATTERN",
            "personId": "XX3",
            "free": false,
            "intervals": [
                {
                    "from": "2025-05-02T16:00:00.000Z",
                    "to": "2025-05-02T22:00:00.000Z"
                }
            ]
        },
        {
            "day": "2025-05-03",
            "type": "AVAILABILITY_PATTERN",
            "personId": "XX3",
            "free": false,
            "intervals": [
                {
                    "from": "2025-05-03T16:00:00.000Z",
                    "to": "2025-05-03T22:00:00.000Z"
                }
            ]
        }
    ]
}
Detalles
  • serviceId: identificador externo del servicio.

  • from: fecha de inicio del periodo para el que se realiza la petición.

  • to: fecha de fin del periodo para el que se realiza la petición.

  • disponibilityIntervals: conjunto de intervalos de disponibilidad definidos dentro del periodo de tiempo consultado.

    • day: día de la disponibilidad.

    • type: tipo de disponibilidad definido para este día. Los posibles valores son DAY_TYPE (tipo de día), SHIFT_PATTERN (patrones de turnos), AVAILABILITY_PATTERN (patrón de disponibilidad) y CALENDAR (calendario de asignaciones).

    • personId: identificador externo del empleado al que corresponde la disponibilidad.

    • free: si se trata de un día libre (true) o no (false).

    • intervals: intervalos de la disponibilidad.

      • from: fecha y hora de inicio de la disponibilidad.

      • to: fecha y hora de fin de la disponibilidad.

Tal y como se aprecia en el ejemplo, la petición devolverá la disponibilidad de cada uno de los empleados del servicio para cada día del periodo indicado en la URL.

Consideraciones

Si un empleado tiene varios intervalos de disponibilidad definidos para el rango especificado en la URL, la petición devolverá las especificaciones de cada uno de ellos.

Si no hay intervalos de disponibilidad definidos para el servicio o para el rango de fechas de la petición, el campo disponibilityIntervals contendrá un array vacío [].

Códigos de error

Además de los errores comunes, este endpoint puede devolver los siguientes códigos:

Código Mensaje Descripción

400 Bad Request

From-date must be before to-date

La fecha indicada en to es anterior a la indicada en from. Se recomienda revisar el orden de las dos fechas de la URL. Este texto viaja en el campo cause; el campo message lo repite seguido de la lista de parámetros del error.

Enlaces de interés