Generar Reportes

POST /cl/consent_manager/generate_report

Genera reportes personalizados de cumplimiento normativo RDC30, estadísticas y análisis.

URL Completa: https://api.floid.app/cl/consent_manager/generate_report

Headers Requeridos

Authorization: Bearer {{TOKEN}}
Content-Type: application/json

Parámetros Body (JSON)

CampoTipoRequeridoDescripción
caseIdstringID único del caso para trazabilidad
tipo_reportestringTipo: RDC30, PERSONAS, INSTITUCIONES, ESTADISTICAS, COMPLIANCE
formatostringNoFormato: json, csv, excel (default: json)
fecha_desdestringFecha inicio del reporte (YYYY-MM-DD)
fecha_hastastringFecha fin del reporte (YYYY-MM-DD)
codigo_institucionstringNoFiltrar por institución específica
incluir_detallebooleanNoIncluir detalles granulares (default: false)

Tipos de Reportes Disponibles

1. Reporte RDC30

Cumplimiento normativo para CMF según RDC30.

2. Reporte de Personas

Análisis por persona natural (RUT).

3. Reporte de Instituciones

Análisis por institución financiera.

4. Reporte de Estadísticas

Métricas y KPIs del sistema.

5. Reporte de Compliance

Auditoría de cumplimiento normativo.

Ejemplo de Solicitud - Reporte RDC30

curl --location 'https://api.floid.app/cl/consent_manager/generate_report' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{TOKEN}}' \
--data '{
  "caseId": "CASE-001",
  "tipo_reporte": "RDC30",
  "formato": "json",
  "fecha_desde": "2026-01-01",
  "fecha_hasta": "2026-01-31",
  "codigo_institucion": "001234567",
  "incluir_detalle": true
}'

Respuesta Exitosa - Reporte RDC30 (200)

{
  "code": "200",
  "msg": "Report generated successfully",
  "caseid": "CASE-001",
  "data": {
    "reporte": {
      "tipo": "RDC30",
      "formato": "json",
      "periodo": {
        "fecha_desde": "2026-01-01",
        "fecha_hasta": "2026-01-31"
      },
      "institucion": {
        "codigo": "001234567",
        "nombre": "Banco Ejemplo"
      },
      "resumen": {
        "total_consentimientos": 145,
        "activos": 132,
        "revocados": 10,
        "expirados": 3,
        "finalidad_comercial": 58,
        "finalidad_crediticia": 87,
        "medio_electronico": 120,
        "medio_verbal": 15,
        "medio_escrito": 10
      },
      "cumplimiento": {
        "consentimientos_con_archivo": 145,
        "porcentaje_con_archivo": 100.0,
        "consentimientos_con_fingerprint": 120,
        "porcentaje_con_fingerprint": 82.8,
        "tiempo_promedio_respuesta_ms": 234,
        "sin_anomalias": true
      },
      "por_objetivo": [
        {
          "objetivo": "01",
          "descripcion": "Evaluación crediticia inicial",
          "cantidad": 45,
          "porcentaje": 31.0
        },
        {
          "objetivo": "02",
          "descripcion": "Seguimiento de obligaciones vigentes",
          "cantidad": 42,
          "porcentaje": 29.0
        }
      ],
      "timeline_mensual": [
        {
          "periodo": "2026-01",
          "creados": 145,
          "revocados": 10,
          "tasa_revocacion": 6.9
        }
      ],
      "detalle": [
        {
          "consent_token": "a9a628a1-b4ac-4ab2-b4d0-954f91239d60",
          "person_rut": "12345678-9",
          "finalidad": 2,
          "objetivo": "01",
          "medio": 1,
          "estado": "ACTIVE",
          "fecha_otorgamiento": "2026-01-12",
          "fecha_expiracion": "2027-01-12",
          "archivo_adjunto": true,
          "accesos_realizados": 5
        }
      ]
    },
    "metadata": {
      "generado_en": "2026-01-12 19:00:00",
      "generado_por": "API_USER",
      "tiempo_procesamiento_ms": 567,
      "registros_procesados": 145
    }
  }
}

Ejemplo de Solicitud - Reporte de Estadísticas

curl --location 'https://api.floid.app/cl/consent_manager/generate_report' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{TOKEN}}' \
--data '{
  "caseId": "CASE-001",
  "tipo_reporte": "ESTADISTICAS",
  "formato": "excel",
  "fecha_desde": "2026-01-01",
  "fecha_hasta": "2026-01-31"
}'

Respuesta Exitosa - Formato Excel (200)

Headers de respuesta:

Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Disposition: attachment; filename="reporte_estadisticas_20260112_190000.xlsx"

El archivo Excel descargado contiene múltiples hojas:

  1. Resumen Ejecutivo: KPIs principales
  2. Por Institución: Desglose por entidad financiera
  3. Por Finalidad: Comercial vs Crediticio
  4. Por Medio: Electrónico, Verbal, Escrito
  5. Timeline: Serie temporal de consentimientos

Posibles Errores

Error CodeHTTPDescripción
INVALID_REQUEST400Tipo de reporte no válido
INVALID_REQUEST400Formato no soportado
INVALID_REQUEST400Rango de fechas inválido
INVALID_REQUEST400Rango de fechas excede 1 año
NOT_FOUND404No hay datos para generar reporte
INTERNAL_ERROR400Error al generar reporte

Códigos de Error

Formato Estándar de Errores

Todos los endpoints devuelven errores en el siguiente formato:

{
  "code": 400,
  "error_type": "API_ERROR",
  "error_code": "INVALID_REQUEST",
  "error_message": "The request is not valid. Check the body and headers and try again.",
  "display_message": "La request no es válida. Revisa el body y headers e intenta nuevamente. [detalles específicos]",
  "caseid": "CASE-001"
}

Tabla de Códigos de Error Comunes

HTTPError TypeError CodeCausa
400API_ERRORINVALID_REQUESTFalta un campo obligatorio
400API_ERRORINVALID_REQUESTFormato de parámetro inválido
400API_ERRORINVALID_REQUESTMétodo HTTP no permitido
400INVALID_IDRUT_NO_VALIDORUT no tiene formato válido chileno
400VALIDATION_ERRORDUPLICATE_IDCustom ID ya existe en el sistema
400VALIDATION_ERRORINVALID_DATE_RANGERango de fechas inválido
400FILE_ERRORFILE_TOO_LARGEArchivo supera 8MB
400FILE_ERRORINVALID_FILE_TYPETipo de archivo no permitido
401AUTH_ERRORUNAUTHORIZEDToken de autenticación inválido o expirado
403AUTH_ERRORFORBIDDENSin permisos para realizar la operación
404NOT_FOUNDCONSENT_NOT_FOUNDConsentimiento no existe
404NOT_FOUNDNO_RECORDSNo hay registros para los filtros aplicados
429RATE_LIMITTOO_MANY_REQUESTSExceso de requests en ventana de tiempo
400INTERNAL_ERRORINTERNAL_ERRORError interno del servidor
400INTERNAL_ERRORDATABASE_ERRORError de conexión a base de datos
400API_ERRORINVALID_REPORT_TYPETipo de reporte no existe
400API_ERRORINVALID_FORMATFormato no soportado
400API_ERRORDATE_RANGE_TOO_LARGERango de fechas excede 1 año
400API_ERRORNO_DATANo hay datos para generar reporte