Crear o actualizar petición

Este endpoint permite actualizar o crear una petición para un empleado.

PUT /api/v1/businesses/{businessId}/requests

A continuación, se desglosan los campos que conforman el cuerpo de la petición, siendo algunos de ellos obligatorios para que esta se realice de manera exitosa.

Los campos obligatorios están marcados con un asterisco (*).

Cuerpo de la petición

Análisis del JSON
{
  "employeeId": "string",
  "status": "string",
  "type": "string",
  "from": "string",
  "to": "string",
  "fromHour": "string",
  "toHour": "string",
  "comments": "string",
  "recover": "string"
}
Detalles
  • employeeId*: identificador externo del empleado.

  • status*: estado de la petición. Los valores admitidos son REQUESTED (solicitada), GRANTED (concedida) y DENIED (denegada).

  • type*: tipo de disponibilidad que se aplica a la petición. Los valores admitidos son: NON_WORKED (día libre), MAYBE (disponibilidad sin obligación de que sea en el intervalo indicado) y MANDATORY (disponibilidad para trabajar obligatoriamente en ese intervalo).

  • from*: fecha de inicio de la petición en formato yyyy-MM-dd.

  • to*: fecha de fin de la petición en formato yyyy-MM-dd.

  • fromHour: hora de inicio de la petición en formato HH:mm. Se considera la hora local, es decir, la zona horaria del servicio.

  • toHour: hora de fin de la petición en formato HH:mm. Se considera la hora local, es decir, la zona horaria del servicio.

  • comments: motivo o explicación de por qué se realiza la petición.

  • recover: tipo de recuperación que indica cómo se podría compensar la petición del empleado. Las opciones son FREE (día libre) o NONE (no se ofrece ninguna compensación por la petición).

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:

{
  "employeeId": "00001",
  "status": "REQUESTED",
  "type": "MAYBE",
  "from": "2024-07-25",
  "to": "2024-07-25",
  "fromHour": "10:00",
  "toHour": "12:00",
  "comments": "I could work at this time, depending on my other shifts.",
  "recover": "NONE"
}

Si todos los datos son correctos, se generará una petición con las siguientes características:

  • Estado: solicitada.

  • Día 25 julio de 2024.

  • Disponibilidad de 10:00 a 12:00.

  • ¿Trabajado? Quizás

Además, se añadirá la razón por la que se realiza la petición.

Consideraciones

Si ya existe una petición para el mismo empleado, día y concepto, la petición la sustituye en vez de dar un error de duplicado — de ahí que el endpoint sirva tanto para crear como para actualizar.

Códigos de error

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

Código Mensaje Descripción

406 Not Acceptable

Employee id is mandatory

Falta el campo employeeId.

Status is mandatory

Falta el campo status.

Type is mandatory

Falta el campo type.

From date cannot be null

Falta el campo from.

To date cannot be null

Falta el campo to.

Request time range is invalid

La fecha to es anterior a la fecha from.

Status must be one of REQUESTED, GRANTED or DENIED

El valor de status no es uno de los admitidos.

Type must be one of MAYBE, MANDATORY or NON_WORKED

El valor de type no es uno de los admitidos.

Non worked request cannot have fromHour or toHour

El tipo NON_WORKED no admite los campos fromHour ni toHour con valor (sí se admite null), al ser una petición de día libre completo.

400 Bad Request

-

El cuerpo de la petición no es un JSON válido o alguno de sus campos no tiene el formato esperado.

error.request_out_of_service_association

El periodo de la petición no coincide con ninguna asociación de servicio vigente del empleado.

error.request_out_of_period

La petición cae fuera del periodo editable para el usuario actual.

error.request_duplicated_concepts

Ya existe una petición con el mismo concepto en ese periodo.

error.request_overlapped_concepts

La petición solapa con otra de un concepto incompatible.

error.person_request_not_allowed_for_day_type

El tipo de día configurado no admite este tipo de petición.

error.person_request_weekly_limit_exceeded

Se ha superado el límite semanal de peticiones de este tipo.

Enlaces de interés

¿Qué es una petición?