Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ariellukezz/admision-web/llms.txt

Use this file to discover all available pages before exploring further.

An admission process (Proceso) is the top-level configuration unit in the Sistema de Admisión Web. Every pre-inscription, inscription, vacancy allocation, and result belongs to exactly one process. Processes are versioned by year, cycle, and convocatory number, which means you can run multiple processes concurrently — for example, a first-semester undergraduate process alongside a second-admission process — without any data overlap.

What a Proceso Contains

The Proceso Eloquent model (app/Models/Proceso.php) is stored in the procesos table with the following core fields:
FieldTypeDescription
nombrestringHuman-readable process name
slugstringURL-safe identifier used in public-facing routes
anioyearAcademic year
cicloint1 = first semester, 2 = second semester
ciclo_otistringZero-padded cycle for OTI integration (e.g. "01")
nro_convocatoriaintConvocatory call number
nivelint1 = undergraduate (pregrado), 2 = second admission (segundas)
estadoint1 = active, 0 = inactive
id_tipo_procesoFKReferences tipo_proceso
id_modalidad_procesoFKReferences modalidad_proceso
id_sede_filialFKReferences filial (campus/branch)
fecha_examendateScheduled exam date
fec_inicio / fec_findateRegistration window start and end
fec_1 / fec_2dateAdditional exam dates for multi-day exams
codigo_procesostringInternal process code
id_reglamentoFKLinks to the reglamento table for the applicable regulations document
urlstringOptional external URL (e.g. convocatory PDF)
observacionestextFree-text admin notes

Creating a New Process

1

Open the Processes Screen

Navigate to /admin/procesos. The Vue page (resources/js/Pages/Procesos/procesos.vue) loads the paginated list of processes.
2

Fill in the Required Fields

At minimum you must supply: nombre, slug, anio, ciclo, nivel, tipo (id_tipo_proceso), modalidad (id_modalidad_proceso), sede (id_sede_filial), and estado. Exam dates and the registration window are strongly recommended before activating the process.
3

Save

Submit the form. The front end calls POST /admin/save-proceso. The controller creates a new Proceso record and returns the persisted model in the response.
4

Activate the Process

Set estado = 1 to make the process discoverable on public-facing registration forms. Active processes appear in all select dropdowns site-wide.
# Create a new process
POST /admin/save-proceso
Content-Type: application/json

{
  "nombre": "ADMISIÓN 2025-I",
  "slug": "admision-2025-i",
  "anio": 2025,
  "ciclo": 1,
  "nivel": 1,
  "tipo": 1,
  "modalidad": 2,
  "sede": 1,
  "estado": 1,
  "fec_examen": "2025-03-15",
  "f_inicio": "2025-01-20",
  "f_fin": "2025-03-10",
  "convocatoria": 1,
  "cod_proceso": "2025-I",
  "observacion": "",
  "id_reglamento": null
}
Success response:
{
  "titulo": "REGISTRO NUEVO",
  "mensaje": "Proceso ADMISIÓN 2025-I creado con éxito",
  "estado": true,
  "datos": { "id": 14, "nombre": "ADMISIÓN 2025-I", "slug": "admision-2025-i" }
}

Listing and Filtering Processes

The process list supports full-text search across nombre, filial.nombre, modalidad_proceso.nombre, and anio. Results are paginated at 50 per page and ordered by id DESC. An optional nivel filter restricts results to undergraduate (1) or segunda admisión (2) processes.
# List processes (POST, supports term/nivel filters)
POST /admin/procesos/get-procesos
Content-Type: application/json

{ "term": "2025", "nivel": 1 }
The response wraps a Laravel paginator under datos:
{
  "estado": true,
  "datos": {
    "data": [
      {
        "id": 14,
        "nombre": "ADMISIÓN 2025-I",
        "slug": "admision-2025-i",
        "anio": 2025,
        "ciclo": 1,
        "estado": 1,
        "nivel": 1,
        "id_sede": 1,
        "sede": "SEDE CENTRAL",
        "id_tipo": 2,
        "tipo": "ORDINARIO",
        "id_modalidad": 1,
        "modalidad": "PRESENCIAL",
        "fec_inicio": "2025-01-20",
        "fec_fin": "2025-03-10",
        "fec_examen": "2025-03-15",
        "convocatoria": 1
      }
    ],
    "total": 1,
    "per_page": 50
  }
}
To populate a lightweight select dropdown — for example, when switching the active process — use the dedicated endpoint that returns only active processes (estado = 1):
GET /admin/get-select-procesos
Response:
{
  "estado": true,
  "datos": [
    { "value": 14, "label": "ADMISIÓN 2025-I" },
    { "value": 13, "label": "ADMISIÓN 2024-II" }
  ]
}
There is a separate API endpoint GET /api/get-select-procesos (Sanctum-authenticated) that maps to ProcesoController::getSelectProcesoHuellas() and is used by the biometric device integration. It returns additional fields (anio, ciclo) and is not for use within the admin web UI.

Editing and Deleting a Process

Send the same POST /admin/save-proceso payload with the id field populated to update an existing record. The controller uses Proceso::findOrFail($request->id) and applies all submitted fields before calling save(). To delete a process:
GET /admin/eliminar-proceso/{id}
Deleting a process is irreversible at the route level — there is no soft-delete on Proceso. Make sure no active inscriptions, vacancies, or results reference the process before removing it.

Assigning Programs to a Process

Programs are linked to a process via the vacantes pivot, which records which academic programs are available under each modality for a given process. The ProgramaProcesoController provides a pivoted matrix view:
GET /admin/get-programas-proceso
This returns a cross-tab where each row is a program and columns represent modality IDs, showing "SI" where the program has vacancies configured or "-" where it does not.

Configuring Modalities per Process

Modalities define the admission tracks an applicant can choose (ordinary exam, transfer, special quota, etc.). The available modalities for a process are determined by which vacantes rows exist. To get the modalities that have at least one vacancy configured for a given process, use the global helper route (outside the /admin prefix):
GET /get-select-modalidad-proceso/{id}
Process-level modality type (id_modalidad_proceso) is set on the Proceso record itself and represents the overall modality classification. To retrieve all available modality types:
GET /admin/procesos/get-modalidades
To retrieve all process types (tipo_proceso):
GET /admin/procesos/get-tipos

Setting Tariffs

Tariff (Tarifa) records store the registration fee per modality. They are configured separately at /admin/tarifas and referenced during the payment verification step in the inscription flow.

Defining Document Requirements

Document requirements are defined per process using ProcesoRequisito records. To retrieve or save requirements for a process:
# Fetch requirements linked to a process
POST /admin/requisitos/get-by-proceso
{ "id_proceso": 14 }

# Save requirement configuration for a process
POST /admin/requisitos/save-proceso-requisitos
{ "id_proceso": 14, "requisitos": [...] }

Public-Facing Process Routes

Active processes are exposed publicly via their slug. The ProcesoController::getFormulario() method reads the slug and renders the correct pre-inscription form:
  • nivel = 1Publico/preinscripcion-pregrado
  • nivel = 2Segundas/Publico/preinscripcion
The public route pattern is:
GET /{slug}/preinscripcion
Results are also published publicly:
GET /{slug}/resultados
This renders Publico/Resultados/index and passes an admin flag (1 or 0) to control whether admin-only controls are visible.

Process Configuration Summary

# Get process types for select dropdown
GET /admin/procesos/get-tipos

# Get process-level modalities for select dropdown
GET /admin/procesos/get-modalidades

# Get modalities with vacancies for a specific process (global route)
GET /get-select-modalidad-proceso/{id}

# Get programs with active vacancies for a modality + process (global route)
POST /get-select-programas-proceso
{ "id_modalidad": 1, "id_proceso": 14 }

# Get programs filtered by modality, process, and academic area (global route)
POST /get-select-programas-proceso-area
{ "id_modalidad": 1, "id_proceso": 14, "area": "INGENIERÍAS" }

# Get programs for the active process (admin dropdown)
GET /admin/get-select-programas-proceso-admin

# Switch the authenticated admin's active process
POST /admin/cambiar_proceso
{ "id_proceso": 14 }

Build docs developers (and LLMs) love