Obtener contratos de un empleado con restricciones

Este endpoint permite consultar los contratos de un empleado dentro de un rango de fechas, incluyendo las restricciones aplicadas a cada contrato.

GET /api/v2/businesses/{businessId}/people/{personId}/contracts-with-constraints?from={yyyy-MM-dd}&to={yyyy-MM-dd}

Si los datos incluidos en la petición son correctos —businessId, personId, from y to—, la respuesta contendrá el listado de contratos del empleado que solapan con el rango de fechas indicado, junto con las restricciones propias de cada contrato.

Ejemplo de respuesta

[
    {
        "from": "2026-01-15",
        "regularMinutes": 360,
        "weeklyContract": false,
        "dailyContract": true,
        "countingDays": "WEEKENDS_AND_HOLIDAYS",
        "additionalMinutes": 120,
        "regularControlPeriod": "MONTHLY",
        "regularPeriodMultiplier": 1,
        "regularPeriodStartDate": "2026-01-15",
        "additionalControlPeriod": "MONTHLY",
        "additionalPeriodMultiplier": 1,
        "additionalPeriodStartDate": "2026-01-15",
        "calendarDaysOff": true,
        "numberOfHolidays": 10,
        "numberOfPublicHolidays": 10,
        "weeklyDaysInvolved": "LABOR_DAYS",
        "costPerHour": 200.34,
        "personCategory": "AV",
        "employeeId": "XXXX01",
        "completed": false,
        "constraints": [
            {
                "id": "constraint.shift_alternatives",
                "parameters": {},
                "blocks": {
                    "1": {
                        "timeSlots": "10:00,20:00",
                        "weekDays": 2
                    },
                    "2": {
                        "timeSlots": "09:00,10:00",
                        "weekDays": 4
                    }
                },
                "blocking": false,
                "from": "2026-01-15",
                "canceled": false,
                "constraintGroup": "Contract",
                "nature": "PERSONAL"
            },
            {
                "id": "constraint.weekly_rotative_rest",
                "parameters": {
                    "rotation": 4.0,
                    "rest": 4.0,
                    "mandatory": "true"
                },
                "blocking": false,
                "from": "2026-01-15",
                "canceled": false,
                "constraintGroup": "Contract",
                "nature": "CONTRACT_TYPE"
            },
            {
                "id": "constraint.presence_total_minutes",
                "parameters": {
                    "max": 360,
                    "min": 240
                },
                "blocking": false,
                "from": "2026-01-15",
                "canceled": false,
                "constraintGroup": "Contract",
                "nature": "CONTRACT_TYPE"
            }
        ]
    }
]
Detalles
  • from: fecha de inicio del contrato en formato yyyy-MM-dd.

  • to: fecha de fin del contrato en formato yyyy-MM-dd. Este campo no aparece en la respuesta si el contrato está abierto en el momento de la consulta.

  • regularMinutes: horas ordinarias (en minutos) establecidas en el contrato. El valor se interpreta en función de la base horaria definida: anual, semanal o diaria.

  • weeklyContract: determina si el contrato se define de manera semanal (true) o anual (false).

  • dailyContract: determina si el contrato se define de manera diaria. Si el contrato no es diario ni semanal, se asume que es anual.

  • countingDays: en un contrato diario, indica qué días computan como trabajados. Su valor puede ser MONDAY_SUNDAY, MONDAY_SATURDAY, LABOR_DAYS, LABOR_MONDAY_SATURDAY o WEEKENDS_AND_HOLIDAYS.

  • additionalMinutes: horas complementarias (en minutos) establecidas en el contrato. El valor se interpreta en función de la base horaria definida: anual, semanal o diaria.

  • regularControlPeriod: periodo de control para las horas regulares establecidas en el contrato. Puede ser WEEKLY, MONTHLY, YEARLY o PERIODS.

  • regularPeriodMultiplier: índice multiplicador para regularControlPeriod. Por ejemplo, si se establece 2 con regularControlPeriod semanal, determinaría que se trata de una quincena.

  • regularPeriodStartDate: fecha de inicio de regularControlPeriod en formato yyyy-MM-dd. Esta fecha se tiene en cuenta para un valor de regularPeriodMultiplier mayor que 1; si el valor del multiplicador es igual a 1, la fecha se ignora.

  • additionalControlPeriod: periodo de control para las horas complementarias. Puede ser WEEKLY, MONTHLY, YEARLY o PERIODS.

  • additionalPeriodMultiplier: índice multiplicador para additionalControlPeriod. Por ejemplo, si se establece 2 con additionalControlPeriod semanal, determinaría que se trata de una quincena.

  • additionalPeriodStartDate: fecha de inicio de additionalControlPeriod en formato yyyy-MM-dd. Esta fecha se tiene en cuenta para un valor de additionalPeriodMultiplier mayor que 1; si el valor del multiplicador es igual a 1, la fecha se ignora.

  • calendarDaysOff: determina si las vacaciones serán procesadas en días naturales (true) o laborables (false).

  • numberOfHolidays: número de días de vacaciones que tiene el empleado en su contrato.

  • numberOfPublicHolidays: número de días festivos que tiene el empleado en su contrato.

  • weeklyDaysInvolved: días de la semana que serán computables. Su valor puede ser MONDAY_SUNDAY, MONDAY_SATURDAY, LABOR_DAYS, LABOR_MONDAY_SATURDAY o WEEKENDS_AND_HOLIDAYS.

  • metadata: cualquier dato adicional relativo al contrato que se haya configurado previamente. La estructura de estos metadatos dependerá de la configuración de negocio.

  • costPerHour: coste del empleado por hora trabajada.

  • personCategory: identificador externo de la categoría del empleado.

  • employeeId: identificador externo del empleado.

  • id: identificador externo del contrato.

  • contractTypeName: nombre del tipo de contrato que se aplica.

  • completed: determina si el contrato está liquidado o no.

  • constraints: lista de restricciones aplicadas al contrato.

    • id: identificador único de la restricción en el sistema.

    • parameters: objeto que agrupa los valores configurables específicos de cada restricción. El conjunto de claves, sus tipos de datos y las reglas de validación están definidos de forma independiente para cada tipo de restricción.

    • blocks: objeto opcional que agrupa los bloques de configuración de la restricción, indexados por un identificador numérico. Solo está presente en los tipos de restricción que admiten esta estructura. El conjunto de claves, sus tipos de datos y los valores posibles de cada bloque están definidos de forma independiente para cada tipo de restricción.

    • blocking: indica si la restricción es bloqueante (true) o no (false).

    • from: fecha a partir de la cual la restricción está activa, en formato yyyy-MM-dd.

    • canceled: indica si la restricción ha sido cancelada (true) o sigue activa (false).

    • constraintGroup: procedencia de la restricción. Al tratarse de las restricciones propias del contrato, en este endpoint su valor será siempre Contract.

    • nature: naturaleza de la restricción que define cómo se ha informado. Los posibles valores son PERSONAL (manualmente) y CONTRACT_TYPE (aplicación de un tipo de contrato o importación).

El campo nature solo aplica a las restricciones de contrato, que son las que devuelve este endpoint.

La respuesta contendrá los datos que se hayan definido para cada contrato. Por ejemplo, si no se ha aplicado un tipo de contrato, contractTypeName no aparecerá en la respuesta. Del mismo modo, si un contrato no tiene restricciones asociadas, el array constraints aparecerá vacío [].

Aspectos que tener en cuenta

Si el empleado especificado en la URL no existe en el negocio, la petición devolverá un error 404 Not Found indicando Employee not found.

Si el empleado no tiene contratos que solapen con el rango de fechas indicado, la petición devolverá un array vacío [].

Los parámetros from y to son obligatorios. Se devuelven todos los contratos que solapan con dicho intervalo, no únicamente los que se inician dentro de él.

Enlaces de interés