New applicants register through a five-step wizard that collects all the information required to create a complete applicant profile (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.
postulante) in the sistema. Each step is saved independently to the database before the wizard advances, meaning a partially completed registration can be resumed at any time. The PostulanteRegistroController drives the entire flow, mapping each Paso record to a numeric progress value stored in the avance_postulante table for the applicant’s currently active admission process (id_proceso).
The Five Registration Steps
Paso 1 — Personal Data
The applicant provides their national identity document number (DNI), full name, date of birth, sex, marital status, and place of birth (ubigeo). Entering a valid 8-digit DNI triggers an automatic RENIEC lookup that pre-fills the form fields. If the applicant is under 18, the system allows manual entry and flags
On save, the authenticated user’s
mayor_edad = false.Fields validated and saved to postulante:| Field | Rule |
|---|---|
nro_doc | Required, 8 chars for DNI (tipo_doc = 1), 8–12 chars for other document types |
tipo_doc | Optional integer (default 1 = DNI) |
primer_apellido | Required, max 100 chars |
segundo_apellido | Optional, max 100 chars |
nombres | Required, max 200 chars |
fec_nacimiento | Required date |
ubigeo_nacimiento | Required, 6-char ubigeo code |
sexo | Required, 1 char ('1' = Masculino, '2' = Femenino) |
estado_civil | Optional string, max 20 chars (mapped internally to integer: 1 Soltero, 2 Casado, 3 Viudo, 4 Divorciado, 5 Conviviente) |
mayor_edad | Required boolean |
dni field is updated so that subsequent steps can resolve getPostulante() via User.dni = Postulante.nro_doc.Paso 2 — Contact Information
Collects the applicant’s email address, mobile phone number (
celular), home address, and residence ubigeo (department → province → district). Both email and phone are validated for uniqueness across the postulante table and the users table before saving.Fields validated and saved:| Field | Rule |
|---|---|
id_postulante | Required, must exist in postulante table |
email | Required, valid email |
celular | Required, min 9 chars |
direccion | Required, max 255 chars |
ubigeo_residencia | Required, max 6-char ubigeo code |
Paso 3 — School Information
The applicant selects their secondary school (
colegio) and graduation year (anio_egreso). Schools are filtered by ubigeo — the applicant first selects a district via the ubigeo search and then picks from the schools located in that district. The selected school ID is stored as id_colegio on the postulante record.Fields validated and saved:| Field | Rule |
|---|---|
id_postulante | Required, must exist in postulante table |
id_colegio | Required, must exist in colegios table |
anio_egreso | Optional, max 4 chars |
Paso 4 — Guardian (Apoderado) Data
If the applicant has a legal guardian or parent, one or more
apoderado records are created. Each guardian entry requires a document number, paternal surname, maternal surname, given names, and a guardian type (tipo_apoderado: 1 = Parent, 2 = Legal guardian, 3 = Other). Records are upserted using updateOrCreate keyed on (id_postulante, tipo_apoderado).Fields validated per guardian:| Field | Rule |
|---|---|
id_postulante | Required, must exist in postulante table |
tiene_apoderado | Required boolean |
apoderados.*.nro_documento | Required when apoderados present, 8–12 chars |
apoderados.*.paterno | Required when apoderados present, max 100 chars |
apoderados.*.materno | Optional, max 100 chars |
apoderados.*.nombres | Required when apoderados present, max 200 chars |
apoderados.*.tipo_apoderado | Required when apoderados present, integer in [1, 2, 3] |
Paso 5 — Verification and Confirmation
The applicant reviews a read-only summary of all data entered across steps 1–4, including resolved labels for ubigeo codes and the school name. After confirming,
confirmarDatos is called which sets avance = 5 and records the step DATOS CONFIRMADOS POR POSTULANTE in the paso table at 100% progress. The applicant is then redirected to Postulante/Confirmacion.RENIEC Identity Validation
When a valid 8-digit DNI is entered in Paso 1, the front-end callsGET /postulante/api/reniec/{dni}. The controller queries the consultas_reniec table (which load-balances API tokens, rotating to the key with the lowest daily usage count) and calls the RENIEC API at https://service7.unap.edu.pe/api/v1/reniec/consulta/{dni}.
age < 18), the API returns "mayor_edad": false and the form remains editable for manual entry. Each token has a maximum daily query count (maximo) enforced by the consultas_reniec table; if the cap is reached the system returns null and the form falls back to manual input.
Unique Validation for Email and Phone
Before saving Paso 2, the controller checks uniqueness in both thepostulante table and the users table. You can also validate proactively via dedicated AJAX endpoints:
where('nro_doc', '!=', $request->dni)), so updating existing data does not incorrectly trigger a uniqueness error.
Google OAuth Registration Path
Applicants may sign up via Google OAuth. When they do, the system assigns them the Postulante role automatically. Because Google accounts do not initially have adni, the getPostulante() helper returns null and the wizard redirects to Paso 1. Once the applicant fills in their DNI in Paso 1 and saves, User.dni is populated and subsequent steps resolve the postulante relationship normally.
After Successful Registration
Once Paso 5 is confirmed, the applicant is redirected to:Postulante/Confirmacion and shows the applicant’s name, DNI, and registered school. From there, they are directed to the applicant Dashboard (/postulante/dashboard), which displays a five-step timeline showing their overall onboarding progress.
The dashboard timeline maps registration steps (avance 1–5) plus document submission (revision_solicitada = true) to a visual progress tracker with labels such as Completa tus datos, Sube tus documentos, Verificación de documentos, Verificación biométrica, and Inscríbete a un proceso.
Resuming an Incomplete Registration
ThemisDatos route checks the applicant’s current avance and automatically redirects to the first incomplete step when avance < 4. Once avance reaches 4 (all four data steps saved), the read-only MisDatos view is rendered regardless of whether step 5 (confirmation) has been completed:
Internal API Reference
GET /postulante/api/reniec/{dni}
Query RENIEC for applicant identity data. Returns full name, birth date, sex, marital status, and ubigeo.
POST /postulante/api/validar-correo
Check whether an email is already registered. Returns
{ existe: true|false }.POST /postulante/api/validar-celular
Check whether a mobile number is already registered. Returns
{ existe: true|false }.GET /postulante/api/colegios/{ubigeo}
Retrieve the list of schools (
value, label) for a given 6-digit ubigeo code.When the applicant’s registration is saved for the first time, the system reads
User.id_proceso to determine which admission process (id_proceso_actual) to associate with the new avance_postulante record. If the user has not yet selected a process, step progress is recorded but not linked until they choose a process via POST /postulante/seleccionar-proceso.