Plataforma robusta y segura para gestionar peticiones, quejas, reclamos, felicitaciones y sugerencias de clientes. Construida con Slim 4 PHP y arquitectura modular.
CRUD completo, radicado único, expiración dÃas hábiles, token público, emails.
Notas internas y externas con notificación automática a usuarios.
CRUD completo con roles (Admin, User, Client, Super) y autenticación JWT.
EnvÃo automático vÃa Microsoft Graph OAuth2 con plantillas HTML.
Notificaciones internas, notificador diario de vencimiento, SSE tiempo real.
CRUD etiquetas para categorizar PQRSF.
CRUD roles con permisos por tabla.
Audit trail automatizado de todas las acciones.
Clasificación automática, emails personalizados y tracking con OpenAI.
Cumplimiento completo: respuesta motivada, réplica, prórroga, defensor del pueblo.
Endpoint público Art. 39 para que los ciudadanos conozcan la gestión.
AuditorÃa inmutable SHA-256, evidencia de cada acción sobre PQRSF.
Todas las rutas requieren autenticación Bearer token excepto las marcadas.
| Método | Ruta | Descripción | Auth |
|---|---|---|---|
| POST | /pqr | Crear PQRSF | No |
| POST | /pqrtracking | Agregar seguimiento | No |
| POST | /contacto | Enviar contacto | No |
| POST | /login | Autenticar usuario | No |
| POST | /forgot-password | Solicitar restablecimiento | No |
| POST | /reset-password | Restablecer con token | No |
| GET | /consultar?token= | Consulta pública por token | No |
| GET | /consultar/{token}/seguimientos | Seguimientos de una PQR | No |
| GET | /uploads/pqr/{file} | Descargar archivo | No |
| POST | /consultar/{token}/replica | Presentar réplica (Art. 28) | No |
| GET | /consultar/{token}/replica-info | Info para réplica | No |
| GET | /consultar/{token}/info-request | Solicitud de información | No |
| POST | /consultar/{token}/provide-info | Proporcionar información (Art. 16) | No |
| GET | /consultar/{token}/expired | Estado de vencimiento | No |
| GET | /estadisticas | EstadÃsticas públicas (Art. 39) | No |
| Autenticados (requieren Bearer token) | |||
| GET | /pqr | Listar PQRSF | SÃ |
| GET | /pqr/{id} | Obtener PQRSF | SÃ |
| PUT | /pqr/{id} | Actualizar PQRSF | SÃ |
| DELETE | /pqr/{id} | Eliminar PQRSF | SÃ |
| GET | /pqr/export | Exportar PQRSF a CSV | SÃ |
| POST | /pqr/{id}/upload-response | Subir archivo de respuesta | SÃ |
| POST | /pqr/{id}/request-info | Solicitar información (Art. 16) | Sà |
| POST | /pqr/{id}/extend | Prorrogar plazo (Art. 18) | SÃ |
| POST | /pqr/check-expired | Detectar vencidas (Art. 14) | SÃ |
| GET | /pqr/expired | Listar vencidas | SÃ |
| GET | /pqr/{id}/evidence | Cadena de custodia | SÃ |
| GET | /pqr/{id}/emails | Emails enviados | SÃ |
| GET | /pqrtracking | Listar seguimientos | SÃ |
| GET | /pqrtracking/{pqr_id} | Seguimientos de PQR | SÃ |
| GET | /pqrtracking/client/{pqr_id} | Seguimientos para cliente | SÃ |
| PUT | /pqrtracking/{id} | Actualizar seguimiento | SÃ |
| DELETE | /pqrtracking/{id} | Eliminar seguimiento | SÃ |
| GET | /usuario | Listar usuarios | SÃ |
| GET | /usuario/{id} | Obtener usuario | SÃ |
| GET | /usuario/username/{username} | Obtener por username | SÃ |
| PUT | /usuario/{id} | Actualizar usuario | SÃ |
| DELETE | /usuario/{id} | Eliminar usuario | SÃ |
| PUT | /usuario/password/{id} | Restablecer contraseña | Sà |
| GET | /perfil | Obtener perfil propio | SÃ |
| PUT | /perfil | Actualizar perfil propio | SÃ |
| POST | /usuario/change-password | Cambiar contraseña propia | Sà |
| POST | /usuario/avatar | Subir foto de perfil | SÃ |
| GET | /uploads/avatar/{file} | Servir archivo de avatar | No |
| GET | /notificacion | Listar notificaciones | SÃ |
| POST | /notificacion/read | Marcar como leÃdas | SÃ |
| POST | /notificacion/notify-expiring | Notificador diario | SÃ |
| GET | /notificacion/stream | SSE notificaciones | SÃ |
| GET | /logs | Listar logs | SÃ |
| POST | /etiqueta | Crear etiqueta | SÃ |
| GET | /etiqueta | Listar etiquetas | SÃ |
| GET | /etiqueta/{id} | Obtener etiqueta | SÃ |
| PUT | /etiqueta/{id} | Actualizar etiqueta | SÃ |
| DELETE | /etiqueta/{id} | Eliminar etiqueta | SÃ |
| POST | /roles | Crear rol | SÃ |
| GET | /roles | Listar roles | SÃ |
| PUT | /roles/{id} | Actualizar rol | SÃ |
| DELETE | /roles/{id} | Eliminar rol | SÃ |
| GET | /dashboard/stats | Indicadores de gestión | Sà |
| GET | /dashboard/export | Exportar Excel/PDF | SÃ |
| POST | /dashboard/monthly-report | Enviar reporte mensual | SÃ |
| POST | /centro-costo | Crear centro de costo | SÃ |
| GET | /centro-costo | Listar centros de costo | SÃ |
| GET | /centro-costo/tree | Listar jerarquÃa | SÃ |
| GET | /centro-costo/{id} | Obtener centro de costo | SÃ |
| PUT | /centro-costo/{id} | Actualizar centro de costo | SÃ |
| DELETE | /centro-costo/{id} | Eliminar centro de costo | SÃ |
| POST | /ai/classify/{id} | Forzar clasificación IA | Sà |
| GET | /ai/classification/{id} | Obtener clasificación IA | Sà |
| POST | /ai/classify-batch | Clasificar múltiples PQRSF | Sà |
| POST | /ai/apply-suggestion/{id} | Aplicar sugerencia IA | SÃ |
| POST | /ai/generate-motivation | Generar fundamentación (Art. 17) | Sà |
| POST | /ai/suggest-complementary-data | Sugerir info faltante | SÃ |