Skip to main content
GET
/
api
/
solicitudes
/
admin
/
calendario
Admin Calendar View
curl --request GET \
  --url https://api.example.com/api/solicitudes/admin/calendario
{
  "status": "fail",
  "message": "Los parámetros fecha_inicio y fecha_fin son obligatorios (YYYY-MM-DD)."
}

Endpoint

GET /api/solicitudes/admin/calendario
This endpoint returns approved requests formatted as calendar events, designed for integration with calendar components like FullCalendar.

Authentication

Admin Access Required

This endpoint requires Admin or Super Admin role. Regular employees cannot access the calendar view.

Query Parameters

fecha_inicio
string
required
Start date for the calendar range (YYYY-MM-DD)Example: "2026-03-01"
fecha_fin
string
required
End date for the calendar range (YYYY-MM-DD)Example: "2026-03-31"
id_tipo_solicitud
number
Optional filter by request type:
  • 1: Vacation
  • 2: Permission
  • 3: Absence
  • 4: Remote Work
If omitted, returns all approved request types

Response

status
number
HTTP status code (200 for success)
results
number
Number of events returned
data
object

Code Examples

const token = 'admin_jwt_token';

const params = new URLSearchParams({
  fecha_inicio: '2026-03-01',
  fecha_fin: '2026-03-31',
  id_tipo_solicitud: 1 // Optional: filter for vacations only
});

const response = await fetch(`/api/solicitudes/admin/calendario?${params}`, {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json'
  }
});

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

Response Example

200 OK
{
  "status": 200,
  "results": 3,
  "data": {
    "eventos": [
      {
        "id": 123,
        "title": "John Doe - Vacaciones",
        "start": "2026-03-10T00:00:00.000Z",
        "end": "2026-03-15T00:00:00.000Z",
        "allDay": true,
        "backgroundColor": "#3788d8",
        "borderColor": "#3788d8",
        "extendedProps": {
          "id_empleado": 45,
          "id_tipo_solicitud": 1,
          "descripcion": "Spring vacation",
          "dias_solicitados": 5
        }
      },
      {
        "id": 124,
        "title": "Jane Smith - Permiso",
        "start": "2026-03-20T00:00:00.000Z",
        "end": "2026-03-20T00:00:00.000Z",
        "allDay": true,
        "backgroundColor": "#f59e0b",
        "borderColor": "#f59e0b",
        "extendedProps": {
          "id_empleado": 67,
          "id_tipo_solicitud": 2,
          "descripcion": "Medical appointment",
          "dias_solicitados": 1
        }
      }
    ]
  }
}

Error Responses

{
  "status": "fail",
  "message": "Los parámetros fecha_inicio y fecha_fin son obligatorios (YYYY-MM-DD)."
}

FullCalendar Integration

This endpoint is designed to work seamlessly with FullCalendar:
import FullCalendar from '@fullcalendar/react';
import dayGridPlugin from '@fullcalendar/daygrid';

function AdminCalendar() {
  const [events, setEvents] = useState([]);

  const fetchEvents = async (fetchInfo) => {
    const params = new URLSearchParams({
      fecha_inicio: fetchInfo.startStr.split('T')[0],
      fecha_fin: fetchInfo.endStr.split('T')[0]
    });

    const response = await fetch(
      `/api/solicitudes/admin/calendario?${params}`,
      {
        headers: {
          'Authorization': `Bearer ${token}`
        }
      }
    );

    const data = await response.json();
    setEvents(data.data.eventos);
  };

  return (
    <FullCalendar
      plugins={[dayGridPlugin]}
      initialView="dayGridMonth"
      events={events}
      datesSet={fetchEvents}
    />
  );
}

Event Color Coding

Events are color-coded by request type for easy visual identification:

Vacation

Color: Blue (#3788d8)Represents approved vacation requests

Permission

Color: Amber (#f59e0b)Represents approved permission requests

Absence

Color: Red (#ef4444)Represents approved absence requests

Remote Work

Color: Green (#10b981)Represents approved remote work requests

Use Cases

Team Planning

View all employee absences and vacations to plan team capacity

Conflict Detection

Identify potential scheduling conflicts before approving new requests

Vacation Tracking

Monitor vacation patterns and ensure adequate coverage

Reporting

Generate reports on employee time off patterns

Filtering Examples

// Get all approved requests for March 2026
GET /api/solicitudes/admin/calendario?fecha_inicio=2026-03-01&fecha_fin=2026-03-31

// Get only vacation requests for Q2 2026
GET /api/solicitudes/admin/calendario?fecha_inicio=2026-04-01&fecha_fin=2026-06-30&id_tipo_solicitud=1

// Get all requests for the current week
const today = new Date();
const weekStart = new Date(today.setDate(today.getDate() - today.getDay()));
const weekEnd = new Date(today.setDate(today.getDate() - today.getDay() + 6));

GET /api/solicitudes/admin/calendario?fecha_inicio=${weekStart}&fecha_fin=${weekEnd}

Build docs developers (and LLMs) love