Saltearse al contenido

02 - Inventario de Rutas

Cómo Leer este Inventario

Este inventario distingue tres capas por cada ruta:

  1. Registrada — presente en la tabla de enrutamiento (routes/web.php, routes/api.php, routes/auth.php, routes/settings.php, routes/ally/web.php, routes/ally/auth.php).
  2. Alcanzable — efectivamente acepta una petición dado su stack de middleware y el cableado del controlador.
  3. Segura — cuenta con una capa de autenticación y/o autorización apropiada para lo que hace.

Desajustes notables entre estas capas:

  • POST /lineas, PUT /lineas/{linea}, DELETE /lineas/{linea} están registradas por Route::apiResource('lineas', ...) en routes/web.php pero el controlador (app/Http/Controllers/Market/LineaController.php) solamente implementa index y show. Las tres rutas de escritura se resuelven a métodos inexistentes y fallarán en tiempo de ejecución — registradas pero no funcionales.
  • GET /carrito, POST /carrito, PUT /carrito/{carrito}, DELETE /carrito/{carrito}, DELETE /carrito/clear, y las tres rutas de lista-deseos están registradas como públicas (sin middleware auth), pero los métodos del controlador leen auth()->user() y fallan para llamadores no autenticados. Están registradas pero no son alcanzables para invitados.
  • POST /marcas, PUT /marcas/{marca}, DELETE /marcas/{marca} en routes/web.php ejecutan crear/actualizar/eliminar contra el catálogo sin ningún tipo de autenticación. Esta es una superficie real y explotable de escritura sin autenticación, no una teórica.
  • GET /up lo provee el chequeo de salud del framework de Laravel (declarado vía health: '/up' en bootstrap/app.php), además del GET /health definido en routes/web.php.

Conteo de rutas: 139 rutas registradas en total. Restando GET /up, GET /health, el redirect desde /settings, y el fallback quedan 135 endpoints de aplicación.

Rutas Públicas (Sin Autenticación)

MétodoURIController@methodMiddlewareNombre
GET/healthclosure (response('ok',200))
GET/DashboardController@indexconsultar_cupo_clientehome
GET/productosProductoController@indexproductos.index
GET/productos/{producto}ProductoController@showproductos.show
GET/marcasMarcaController@indexmarcas.index
GET/marcas/{marca}MarcaController@showmarcas.show
POST/marcasMarcaController@storemarcas.store
PUT/marcas/{marca}MarcaController@updatemarcas.update
DELETE/marcas/{marca}MarcaController@destroymarcas.destroy
GET/lineasLineaController@indexlineas.index
GET/lineas/{linea}LineaController@showlineas.show
POST/lineasLineaController@storelineas.store
PUT/lineas/{linea}LineaController@updatelineas.update
DELETE/lineas/{linea}LineaController@destroylineas.destroy
GET/lista-deseosListaDeseoController@indexlista-deseos.index
POST/lista-deseosListaDeseoController@storelista-deseos.store
DELETE/lista-deseos/{lista_deseo}ListaDeseoController@destroylista-deseos.destroy
DELETE/carrito/clearCarritoController@clearcarrito.clear
GET/carritoCarritoController@indexcarrito.index
POST/carritoCarritoController@storecarrito.store
PUT/carrito/{carrito}CarritoController@updatecarrito.update
DELETE/carrito/{carrito}CarritoController@destroycarrito.destroy
GET/resultadosProductoController@searchproductos.search
GET/consultar-cupoconsultar-cupo.view
POST/consultar-cupoConsultarCupoController@storeconsultar-cupo.store
POST/contactoContactoController@storecontacto.store
GET/simulador-cuotas— (Inertia)simulador.view

Nota: /simulador-cuotas está definida dentro del grupo de middleware auth pero usa ->withoutMiddleware('auth'), por lo que no es verdaderamente pública pero es funcionalmente accesible sin autenticación.

Rutas de Auth de Cliente (Guard: web, middleware guest)

MétodoURIController@methodMiddlewareNombre
GET/registroRegisteredUserController@createguestregister
POST/registerRegisteredUserController@storeguestregister.store
POST/loginAuthenticatedSessionController@storeguestlogin.store
POST/forgot-passwordPasswordResetLinkController@storeguestpassword.email
GET/reset-password/{token}NewPasswordController@createguestpassword.reset
POST/reset-passwordNewPasswordController@storeguestpassword.store

Rutas de Auth de Cliente (Guard: web, middleware auth)

MétodoURIController@methodMiddlewareNombre
GET/verificar-correoEmailVerificationPromptControllerauth:webverification.notice
GET/verify-email/{id}/{hash}VerifyEmailControllerauth:web, signed, throttle:6,1verification.verify
POST/email/verification-notificationEmailVerificationNotificationController@storeauth:web, throttle:6,1verification.send
GET/confirm-passwordConfirmablePasswordController@showauth:webpassword.confirm
POST/confirm-passwordConfirmablePasswordController@storeauth:web
POST/logoutAuthenticatedSessionController@destroyauth:weblogout

Rutas Autenticadas de Cliente (Guard: web)

Perfil de Usuario y Registro

MétodoURIController@methodMiddlewareNombre
GET/usuario/perfilUserController@renderClienteauth, verifieduser.perfil
GET/usuario/completar-registroCompletarRegistroController@renderauth, verifieduser.completar-registro.render
POST/usuario/completar-registroCompletarRegistroController@storeauthuser.completar-registro.store
PUT/usuario/telefonoUserController@updatePhoneauthuser.phone.update
PUT/usuario/passwordUserController@updatePasswordauthuser.password.update

Flujo de Aprobación de Crédito (/usuario/cupo/*)

MétodoURIController@methodMiddlewareNombre
GET/usuario/cupo/verificar-limite-intentosVerificarLimiteIntentosController@indexauthuser.aprobar-cupo.verificar-limite-intentos
GET/usuario/cupo/legal-checkAprobarCupoController@legalCheckauth, check_intentos_limite_diariosuser.aprobar-cupo.legal-check
GET/usuario/cupo/identity-validationAprobarCupoController@identityValidationauth, check_intentos_limite_diariosuser.aprobar-cupo.identity-validation
GET/usuario/cupo/identity-validation-generate-otpAprobarCupoController@identityValidationGenerateOTPCodeauth, check_intentos_limite_diariosuser.aprobar-cupo.identity-validation-generate-otp
POST/usuario/cupo/identity-validation-verify-otpAprobarCupoController@identityValidationVerifyOTPCodeauth, check_intentos_limite_diariosuser.aprobar-cupo.identity-validation-verify-otp
GET/usuario/cupo/identity-validation-generate-questionsAprobarCupoController@identityValidationGenerateQuestionsauth, check_intentos_limite_diariosuser.aprobar-cupo.identity-validation-generate-questions
POST/usuario/cupo/identity-validation-verify-questionsAprobarCupoController@identityValidationVerifyQuestionsauth, check_intentos_limite_diariosuser.aprobar-cupo.identity-validation-verify-questions
GET/usuario/cupo/hdc-validationAprobarCupoController@hdcValidationauth, check_intentos_limite_diariosuser.aprobar-cupo.hdc-validation
GET/usuario/cupo/aprobarAprobarCupoController@aprobarCupoauthuser.aprobar-cupo.obtener-cupo

Compras y Adquisiciones

MétodoURIController@methodMiddlewareNombre
GET/lista-deseos/vista— (Inertia)authlista-deseos.view
GET/checkout— (Inertia)auth, cliente_registro_completo, verificar_cliente_presenta_moracheckout.view
GET/mis-comprasOrdenCompraController@indexauthcliente.compras.index
GET/mis-compras/{id}OrdenCompraController@showauthcliente.compras.show
POST/mis-comprasMarketVentaController@storeauthcliente.compras.store
POST/mis-compras/procesar-carritoMarketVentaController@procesarCarritoauthcliente.compras.procesar-carrito
GET/mis-compras/{ventaId}/detallesMarketVentaController@detallesauthcliente.compras.detalles

Configuración

MétodoURIController@methodMiddlewareNombre
REDIRECT/settings/settings/profileauth:web
GET/settings/profileProfileController@editauth:webprofile.edit
PATCH/settings/profileProfileController@updateauth:webprofile.update
DELETE/settings/profileProfileController@destroyauth:webprofile.destroy
GET/settings/passwordPasswordController@editauth:webpassword.edit
PUT/settings/passwordPasswordController@updateauth:webpassword.update
GET/settings/appearance— (Inertia)auth:webappearance

Rutas de Aliado/Partner (Guard: app)

Ally Auth (guest:app)

MétodoURIController@methodMiddlewareNombre
GET/aliados/ingresarAuthenticatedSessionController@loginFormguest:applogin
POST/aliados/loginAuthenticatedSessionController@loginguest:appaliado.login
GET/aliados/postulacion/PostulacionController@createguest:appaliado-postulacion.create
POST/aliados/postulacion/PostulacionController@storeguest:appaliado-postulacion.store
GET/aliados/forgot-passwordPasswordResetLinkController@createguest:appaliado.password.request
POST/aliados/forgot-passwordPasswordResetLinkController@storeguest:appaliado.password.email
GET/aliados/reset-password/{token}NewPasswordController@createguest:appaliado.password.reset
POST/aliados/reset-passwordNewPasswordController@storeguest:appaliado.password.store

Ally Autenticado (auth:app)

MétodoURIController@methodMiddlewareNombre
POST/aliados/logoutAuthenticatedSessionController@logoutauth:appaliado.logout
GET/aliados/postulacion/{postulacion}/registroRegisteredUserController@indexauth:app, signedaliado-postulacion.register
POST/aliados/postulacion/registroRegisteredUserController@storeauth:appaliado-postulacion.register.store

Dashboard del Aliado

MétodoURIController@methodMiddlewareNombre
GET/aliados/DashboardController@indexauth:appaliado.dashboard
GET/aliados/dashboard/resumenDashboardController@resumenauth:appaliado.dashboard.resumen
GET/aliados/dashboard/rendimientoDashboardController@rendimientoauth:appaliado.dashboard.rendimiento

Descargas del Aliado

MétodoURIController@methodMiddlewareNombre
GET/aliados/productos/download-mockDownloadProductoMockController@indexauth:appaliado.productos.download
GET/aliados/marcas/downloadDownloadMarcaController@indexauth:appaliado.marcas.download
GET/aliados/lineas/downloadDownloadLineaController@indexauth:appaliado.lineas.download

Gestión de Postulaciones del Aliado

MétodoURIController@methodMiddlewareNombre
GET/aliados/postulacion/revisionPostulacionController@revisionauth:appaliado.postulacion.revision
GET/aliados/postulacion/listPostulacionController@listauth:appaliado.postulacion.index
PUT/aliados/postulacion/{postulacion}PostulacionController@updateauth:appaliado.postulacion.update
POST/aliados/postulacion/{postulacion}/action/{action}PostulacionController@actionauth:appaliado.postulacion.action

Gestión de Productos del Aliado

MétodoURIController@methodMiddlewareNombre
GET/aliados/productos/ProductoController@renderauth:appaliado.productos.render
GET/aliados/productos/revisionProductoController@revisionauth:appaliado.productos.revision
GET/aliados/productos/{producto}/previewProductoController@previewauth:appaliado.productos.show
POST/aliados/productosProductoController@storeauth:appaliado.productos.store
PUT/aliados/productos/{producto}ProductoController@updateauth:appaliado.productos.update
DELETE/aliados/productos/{producto}ProductoController@destroyauth:appaliado.productos.destroy
POST/aliados/productos/masivosProductoController@massiveStoreauth:appaliado.productos.carga-masiva

Gestión de Marcas del Aliado

MétodoURIController@methodMiddlewareNombre
GET/aliados/marcas/listadoMarcaController@renderauth:appaliado.marcas.render
POST/aliados/marcasMarcaController@storeauth:appaliado.marcas.store
PUT/aliados/marcas/{marca}MarcaController@updateauth:appaliado.marcas.update
DELETE/aliados/marcas/{marca}MarcaController@destroyauth:appaliado.marcas.destroy

Gestión de Empresas del Aliado

MétodoURIController@methodMiddlewareNombre
GET/aliados/empresasEmpresaController@indexauth:appaliado.empresas.index
GET/aliados/empresas/listadoEmpresaController@renderauth:appaliado.empresas.render
PUT/aliados/empresas/{empresa}EmpresaController@updateauth:appaliado.empresas.update
DELETE/aliados/empresas/{empresa}EmpresaController@destroyauth:appaliado.empresas.destroy

Gestión de Sucursales del Aliado

MétodoURIController@methodMiddlewareNombre
GET/aliados/sucursalesSucursalController@indexauth:appaliado.sucursales.index
GET/aliados/sucursales/listadoSucursalController@renderauth:appaliado.sucursales.render
POST/aliados/sucursalesSucursalController@storeauth:appaliado.sucursales.store
PUT/aliados/sucursales/{sucursal}SucursalController@updateauth:appaliado.sucursales.update
DELETE/aliados/sucursales/{sucursal}SucursalController@destroyauth:appaliado.sucursales.destroy

Nota de bug: La ruta DELETE /aliados/sucursales/{sucursal} existe debido a un bug de código: la definición del resource usa except('show', 'delete') pero 'delete' no es un nombre de método válido para resource — debería ser except('show', 'destroy'). Como resultado, la ruta destroy no se excluye y queda registrada.

Gestión de Empleados del Aliado

MétodoURIController@methodMiddlewareNombre
GET/aliados/empleadosEmpleadoController@indexauth:appaliado.empleados.index
GET/aliados/empleados/listadoEmpleadoController@renderauth:appaliado.empleados.render
POST/aliados/empleadosEmpleadoController@storeauth:appaliado.empleados.store
PUT/aliados/empleados/{empleado}EmpleadoController@updateauth:appaliado.empleados.update
DELETE/aliados/empleados/{empleado}EmpleadoController@destroyauth:appaliado.empleados.destroy

Gestión de Usuarios del Aliado

MétodoURIController@methodMiddlewareNombre
GET/aliados/usuariosUserController@indexauth:appaliado.usuarios.index
GET/aliados/usuarios/listadoUserController@renderauth:appaliado.usuarios.render
GET/aliados/usuarios/{usuario}UserController@showauth:appaliado.usuarios.show
POST/aliados/usuarios/admin/crearRegisteredUserController@storeAdminauth:appaliado.usuarios.admin.store
POST/aliados/usuarios/{id}/resend-verificationUserController@resendVerificationauth:appaliado.usuarios.resend-verification
PUT/aliados/usuarios/{usuario}UserController@updateauth:appaliado.usuarios.update
DELETE/aliados/usuarios/{usuario}UserController@destroyauth:appaliado.usuarios.destroy

Ventas del Aliado

MétodoURIController@methodMiddlewareNombre
GET/aliados/ventas/crearVentaController@createauth:appaliado.ventas.create
GET/aliados/ventas/listadoVentaController@renderauth:appaliado.ventas.render
GET/aliados/ventas/usuario/{userId}VentaController@ventasPorUsuarioauth:appaliado.ventas.por-usuario
GET/aliados/ventas/{ventaId}/detallesVentaController@detallesauth:appaliado.ventas.detalles
GET/aliados/ventas/estadisticasVentaController@statsauth:appaliado.ventas.estadisticas
GET/aliados/ventas/reporte-comercialVentaReporteComercialController@indexauth:appaliado.ventas.reporte-comercial
GET/aliados/ventasVentaController@indexauth:appaliado.ventas.index
POST/aliados/ventasVentaController@storeauth:appaliado.ventas.store
GET/aliados/ventas/{venta}VentaController@showauth:appaliado.ventas.show
PUT/aliados/ventas/{venta}VentaController@updateauth:appaliado.ventas.update
DELETE/aliados/ventas/{venta}VentaController@destroyauth:appaliado.ventas.destroy

Pedidos del Aliado

MétodoURIController@methodMiddlewareNombre
GET/aliados/pedidos/listadoVentaController@pedidosauth:appaliado.pedidos.render

Búsqueda de Clientes del Aliado

MétodoURIController@methodMiddlewareNombre
GET/aliados/clientes/searchClienteController@searchauth:appaliado.clientes.search
GET/aliados/clientes/{clienteId}/presenta-moraClienteController@presentaMoraauth:appaliado.clientes.presenta-mora

Rutas API (Prefijo: /api)

MétodoURIController@methodMiddlewareNombre
POST/api/error-logsErrorLogController@storeapiapi.error-logs.store
GET/api/v1/datacredito/historialDataCreditoController@consultarHistorialapiapi.datacredito.historial
POST/api/v1/webhooks/certicamaraCerticamaraControllerapiapi.webhooks.certicamara

Otras Rutas (Health Check, Fallback)

MétodoURIController@methodMiddlewareNombre
GET/up— (Laravel built-in, bootstrap/app.php)
ANY{fallbackPlaceholder}— (redirige a /)

Comandos de Consola Programados

ProgramaciónJob/ComandoDescripción
Cada 15 minutosProcesarOrdenesAbandonadasProcesa órdenes de compra abandonadas

Estadísticas de Rutas

CategoríaCantidad
Web público (sin auth) — incluye /health y /simulador-cuotas (grupo auth con withoutMiddleware)27
API (prefijo /api, sin auth)3
Auth de cliente (middleware guest, routes/auth.php)6
Auth de cliente (auth:webroutes/auth.php + routes/settings.php + grupo auth de routes/web.php)34
Auth de aliado (middleware guest:app, routes/ally/auth.php)8
Auth de aliado (middleware auth:app, routes/ally/web.php + routes/ally/auth.php)59
Solo framework: /up (health integrado), redirección fallback2
Rutas registradas139
Endpoints de aplicación (registradas − /up, /health, fallback, redirect /settings)135