Añadir contratos de un empleado con restricciones
Este endpoint permite añadir contratos con restricciones para un empleado, admitiendo la naturaleza (nature) de cada restricción.
PUT /api/v2/businesses/{businessId}/people/{employeeId}/contracts-with-constraints
A continuación, se expone una explicación detallada de cada uno de los campos que pueden conformar el cuerpo de la petición.
|
Los campos obligatorios están marcados con (*). Los valores admitidos para los campos de tipo |
Cuerpo de la petición
| Análisis del JSON |
|---|
Detalles
|
Ejemplo de la petición
Una vez realizado el análisis de los distintos campos, se muestra un ejemplo del cuerpo de la petición:
{
"business": "CST",
"ignoreWithoutOuterId": false,
"contracts": [
{
"from": "2026-06-16",
"regularMinutes": 380,
"weeklyContract": false,
"dailyContract": true,
"countingDays": "WEEKENDS_AND_HOLIDAYS",
"additionalMinutes": 150,
"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",
"constraints": [
{
"id": "constraint.shift_duration_alternatives",
"parameters": {},
"blocks": {
"1": {
"shiftDuration": 630
},
"2": {
"shiftDuration": 1230
}
},
"blocking": false,
"nature": "PERSONAL"
},
{
"id": "constraint.presence_min_total_minutes",
"parameters": {
"min": "240"
},
"blocking": false
}
]
}
]
}
Si todos los datos son correctos, se crearán los contratos para el empleado con las características y restricciones indicadas en la petición.
Consideraciones
Este endpoint admite el campo nature en cada restricción, permitiendo indicar explícitamente si se ha informado manualmente (PERSONAL) o si proviene de un tipo de contrato o de una importación (CONTRACT_TYPE).
Si no se envían los campos canceled o blocking de cada restricción, ambos toman por defecto el valor false. Por tanto, se recomienda indicar explícitamente estos campos en cada importación cuando sea necesario establecer un valor distinto.
Comportamiento del campo lag
El campo lag actúa exclusivamente como una ventana de seguridad frente al borrado de contratos existentes que no se incluyen en la petición: un contrato ya finalizado no incluido en la petición se elimina si su vigencia entra dentro del periodo del lag; si su vigencia es anterior, se excluye del borrado y permanece sin cambios en el sistema.
Todos los contratos incluidos en contracts se crean o actualizan siempre, con independencia de si sus fechas caen o no dentro del periodo indicado por lag.
|
Si |
Códigos de error
Además de los errores comunes, este endpoint puede devolver los siguientes códigos:
| Código | Mensaje | Descripción |
|---|---|---|
|
Constraint '<id>' not found in business catalog |
El identificador de restricción ( |
Contract '<id>': constraints are required |
El campo |
|
Constraint '<id>': invalid nature '<nature>'. Allowed values are PERSONAL and CONTRACT_TYPE |
El valor del campo |
|
Business mismatch: employee belongs to '<business>' but request specifies '<business>' |
El negocio indicado en la petición no coincide con el negocio real del empleado. |
|
PersonCategory '<id>' not found in business '<business>' |
El identificador de categoría de empleado ( |
|
DayType '<id>' not found in business |
El tipo de día enviado en |
|
Contract '<id>': block orderValue keys […] must be positive integers |
Las claves de orden ( |
|
Se recomienda revisar el cuerpo de la respuesta en caso de error, ya que incluye información relevante para su diagnóstico y depuración, como el campo inválido o el valor no reconocido. |
Enlaces de interés
¿Qué es un contrato? ¿Y un tipo de contrato?
¿Qué es una restricción?