Skip to main content
POST
/
api
/
solicitudes
/
crearSolicitudVacaciones
Create Vacation Request
curl --request POST \
  --url https://api.example.com/api/solicitudes/crearSolicitudVacaciones \
  --header 'Content-Type: application/json' \
  --data '
{
  "fecha_inicio": "<string>",
  "fecha_fin": "<string>",
  "descripcion_solicitud": "<string>",
  "documento_url": "<string>"
}
'
{
  "message": "No tienes suficientes días de vacaciones disponibles. Solicitas 10 días, pero solo tienes 5 días disponibles.",
  "dias_solicitados": 10
}

Endpoint

POST /api/solicitudes/crearSolicitudVacaciones
This endpoint creates vacation requests with automatic validation of available vacation days. The system checks the employee’s balance before creating the request.

Request Body

fecha_inicio
string
required
Vacation start date in ISO format or YYYY-MM-DDExample: "2026-05-01" or "2026-05-01T00:00:00"
fecha_fin
string
required
Vacation end date in ISO format or YYYY-MM-DDMust be equal to or after fecha_inicio
descripcion_solicitud
string
Optional description for the vacation requestExample: "Summer vacation"
documento_url
string
Optional URL to supporting document

Response

message
string
Success message: “Solicitud de vacaciones creada exitosamente”
solicitud
object

Validation Rules

Date Validation

  • Start date must be before or equal to end date
  • Dates cannot be in the past
  • Date format must be valid

Balance Validation

  • System checks employee’s available vacation days
  • Request is rejected if insufficient days available
  • Balance is only deducted after approval

Code Examples

const token = 'your_jwt_token';

const vacationData = {
  fecha_inicio: '2026-07-01',
  fecha_fin: '2026-07-14',
  descripcion_solicitud: 'Summer vacation'
};

const response = await fetch('/api/solicitudes/crearSolicitudVacaciones', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(vacationData)
});

const data = await response.json();
console.log(data);

Response Example

201 Created
{
  "message": "Solicitud de vacaciones creada exitosamente",
  "solicitud": {
    "id_solicitud": 789,
    "id_empleado": 45,
    "id_tipo_solicitud": 1,
    "id_estado_solicitud": 1,
    "fecha_inicio": "2026-07-01 00:00:00",
    "fecha_fin": "2026-07-14 00:00:00",
    "dias_solicitados": 10,
    "descripcion_solicitud": "Summer vacation"
  }
}

Error Responses

{
  "message": "No tienes suficientes días de vacaciones disponibles. Solicitas 10 días, pero solo tienes 5 días disponibles.",
  "dias_solicitados": 10
}

Business Logic Flow

1

Retrieve Employee Balance

System loads the authenticated employee’s vacation balance from the database
2

Validate Dates

Checks that dates are valid and in correct order using validarFechasSolicitud()
3

Calculate Days

Computes the number of vacation days using calcularDiasSolicitados() (excludes weekends)
4

Check Balance

Compares requested days against available balance
5

Create Request

If validation passes, creates the request in pending state
6

Balance Deduction

Days are only deducted from balance when the request is approved (not at creation time)

Cancel Vacation

PUT /api/solicitudes/:id/cancelarEmployees can cancel their own pending vacation requests

Approve Vacation

PUT /api/solicitudes/:id/aprobarAdmins approve vacation requests, which triggers balance deduction

Build docs developers (and LLMs) love