Skip to main content
POST
/
api
/
solicitudes
Create Request
curl --request POST \
  --url https://api.example.com/api/solicitudes \
  --header 'Content-Type: application/json' \
  --data '
{
  "id_tipo_solicitud": 123,
  "fecha_inicio": "<string>",
  "fecha_fin": "<string>",
  "descripcion_solicitud": "<string>",
  "documento_url": "<string>"
}
'
{
  "message": "Tipo de solicitud ID 99 inválido."
}

Endpoint

POST /api/solicitudes
This endpoint handles creation of general requests. For vacation requests, use the dedicated vacation endpoint.

Supported Request Types

Absence

Type ID: 3Report justified absences

Permission

Type ID: 2Request special permissions

Remote Work

Type ID: 4Request to work externally

Request Body

id_tipo_solicitud
number
required
Type of request:
  • 2: Permission
  • 3: Absence
  • 4: Remote Work
Note: Use 1 for vacation via /api/solicitudes/crearSolicitudVacaciones
fecha_inicio
string
required
Start date in ISO format or YYYY-MM-DDExample: "2026-04-01" or "2026-04-01T08:00:00"
fecha_fin
string
required
End date in ISO format or YYYY-MM-DDMust be equal to or after fecha_inicio
descripcion_solicitud
string
required
Description or reason for the requestExample: "Medical appointment"
documento_url
string
Optional URL to supporting document (e.g., medical certificate)

Response

message
string
Success message indicating the request was created
solicitud
object

Code Examples

const token = 'your_jwt_token';

const requestData = {
  id_tipo_solicitud: 3,
  fecha_inicio: '2026-04-10',
  fecha_fin: '2026-04-10',
  descripcion_solicitud: 'Medical appointment',
  documento_url: 'https://example.com/docs/certificate.pdf'
};

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

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

Response Example

201 Created
{
  "message": "Solicitud de 3 creada exitosamente.",
  "solicitud": {
    "id_solicitud": 456,
    "id_empleado": 78,
    "id_tipo_solicitud": 3,
    "id_estado_solicitud": 1,
    "fecha_inicio": "2026-04-10 00:00:00",
    "fecha_fin": "2026-04-10 00:00:00",
    "dias_solicitados": 1,
    "descripcion_solicitud": "Medical appointment",
    "documento_url": "https://example.com/docs/certificate.pdf"
  }
}

Error Responses

{
  "message": "Tipo de solicitud ID 99 inválido."
}

Notifications

When a request is created, the system automatically sends notifications to all HR administrators (users with Admin role). The notification includes:
  • Title: “Nueva Solicitud de Permiso”
  • Message: Employee name and request type
  • Type: SOLICITUD_NUEVA
  • Reference: The created request ID

Business Logic

Day Calculation

The system automatically calculates dias_solicitados based on the date range, excluding weekends and considering business days.

Date Formatting

All dates are stored in MySQL datetime format (YYYY-MM-DD HH:mm:ss) using dayjs library.

Build docs developers (and LLMs) love