Api de Consultar Consentimiento

POST /detail

Obtiene los detalles completos de un consentimiento existente, incluyendo historial de auditoría

Parámetros de Entrada

Soporta múltiples formatos de entrada:

Formato 1: Directo con consent_token

{
  "consent_token": "a9a628a1-b4ac-4ab2-b4d0-954f91239d60"
}

Formato 2: Directo con custom_id

{
  "custom_id": "CONSENT-2024-001"
}

CampoTipoRequeridoDescripción
consent_tokenstringSí*UUID del consentimiento (obtenido al crear el consentimiento)
custom_idstringSí*ID externo único (alternativa a consent_token)

* Se requiere consent_token O custom_id (no ambos).

Ejemplo de Solicitud

curl --location '{{HOST}}/cl/consent_manager/detail' --header 'Authorization: Bearer {{TOKEN}}' --data '{
  "consent_token": "a9a628a1-b4ac-4ab2-b4d0-954f91239d60"
}'

Respuesta Exitosa

{
  "code": "200",
  "msg": "OK",
  "caseid": "a9a628a1-b4ac-4ab2-b4d0-954f91239d60",
  "data": {
    "item_data": {
      "id": 123,
      "consent_token": "a9a628a1-b4ac-4ab2-b4d0-954f91239d60",
      "codigo_institucion": "001234567",
      "codigo_interno_consentimiento": "C2511201752588870878",
      "timestamp_otorgamiento_fecha": "20251120",
      "timestamp_otorgamiento_hora": "175258",
      "timestamp_expiracion_fecha": "20261120",
      "timestamp_expiracion_hora": "175258",
      "person_rut": "12345678-9",
      "medio": 1,
      "finalidad": 2,
      "objetivo": "02",
      "person_email": "[email protected]",
      "person_cellphone": null,
      "person_name": "Juan Pérez González",
      "rut_empresa": "76123456-7",
      "rut_ejecutivo": "11223344-5",
      "current_state": "ACTIVE",
      "timestamp_revocacion_fecha": null,
      "timestamp_revocacion_hora": null,
      "timestamp_carga": "2025-11-20 17:52:58",
      "uploaded_by": "API",
      "created_by": "API",
      "last_updated_at": "2025-11-20 17:52:58",
      "last_updated_by": "API",
      "id_externo": "CONSENT-2024-001",
      "ip": "172.19.0.7",
      "navegador": "Mozilla/5.0...",
      "meta_attachment": "https://storage.googleapis.com/bucket/path/to/file.pdf?...",
      "metadata_json": null,
      "fingerprint_hash": null
    }
  },
  "audit_log": [
    {
      "consent_token": "a9a628a1-b4ac-4ab2-b4d0-954f91239d60",
      "accion": "CREATED",
      "estado_anterior": null,
      "estado_nuevo": "ACTIVE",
      "modificado_por_tipo": "API",
      "modificado_por_id": "consent_api",
      "ip_origen": "172.19.0.7",
      "user_agent": "Mozilla/5.0...",
      "api_endpoint": "/api/consent.php",
      "metodo_http": "POST",
      "timestamp_cambio": "2025-11-20 17:52:58",
      "timestamp_servidor": "2025-11-20 17:52:58"
    }
  ]
}

Estructura de Respuesta

Objeto data.item_data

Contiene todos los campos del consentimiento almacenados en la base de datos.

Array audit_log

Historial completo de cambios del consentimiento, ordenado por fecha (más reciente primero).

CampoTipoDescripción
accionstringTipo de acción: CREATED, UPDATED, REVOKED
estado_anteriorstringEstado antes del cambio
estado_nuevostringEstado después del cambio
modificado_por_tipostringOrigen: API, WEB, ADMIN, SYSTEM
modificado_por_idstringID del usuario/sistema que realizó el cambio
ip_origenstringIP desde donde se realizó el cambio
timestamp_cambiostringFecha y hora del cambio (zona horaria del servidor)

Códigos de Error

Formato Estándar de Errores

Todos los errores siguen el formato estándar de la compañía:

{
  "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 del error]",
  "caseid": ""
}

Errores Comunes

Código HTTPError CodeError TypeCausa
400INVALID_REQUESTAPI_ERRORFalta un campo obligatorio
400RUT_NO_VALIDOINVALID_IDRUT no tiene formato válido
400INVALID_REQUESTAPI_ERRORCódigo debe ser exactamente 9 dígitos
400INVALID_REQUESTAPI_ERRORFinalidad debe ser 1 o 2
400INVALID_REQUESTAPI_ERRORMedio debe ser 1, 2 o 3
400INVALID_REQUESTAPI_ERRORObjetivo debe estar entre 01 y 07
400INVALID_REQUESTAPI_ERROREl custom_id ya existe en el sistema
400INVALID_REQUESTAPI_ERROREmail no tiene formato válido
400INVALID_REQUESTAPI_ERRORArchivo supera 8MB
400INVALID_REQUESTAPI_ERRORTipo de archivo no permitido para el medio
404NOT_FOUNDNOT_FOUND_ERRORNo existe consentimiento con ese token/ID
400INVALID_REQUESTAPI_ERRORSe intentó usar GET u otro método no permitido
401UnauthorizedAUTH_ERRORToken de autenticación inválido o expirado
400INTERNAL_ERRORINTERNAL_ERRORError de conexión a base de datos

Consideraciones de Implementación

Seguridad

  • Autenticación obligatoria: Todas las requests requieren token Bearer válido.
  • Auditoría completa: Cada operación se registra con IP, User-Agent y timestamp.
  • URLs firmadas: Los archivos se almacenan en GCS con URLs firmadas (válidas 10 años).
  • Validación estricta: Todos los campos se validan según normativa RDC30.

Duración de Consentimientos

  • Vigencia por defecto: 1 año desde la fecha de otorgamiento
  • Extensión: Configurable según requerimientos de la institución
  • Expiración automática: El sistema marca como EXPIRED al vencer el plazo

Fingerprinting del Navegador

Para consentimientos otorgados vía web, el sistema puede procesar y almacenar el fingerprint del navegador:

  • Captura: Canvas, WebGL, fuentes, plugins, resolución, timezone
  • Hash único: SHA-256 del fingerprint procesado
  • Uso: Verificación de identidad y detección de fraude

Límites y Restricciones

  • Tamaño máximo de archivo: 8MB
  • Formatos soportados: Ver tabla según medio
  • Tiempo máximo de respuesta: 30 segundos
  • Rate limiting: Configurado por institución

Casos de Uso

Caso 1: Consulta de Consentimiento Existente

{
  "custom_id": "LOAN-REQUEST-2024-12345"
}

Flujo de Integración

Paso 1: Autenticación

Obtener token Bearer

Paso 2: Crear Consentimiento

Enviar los datos vía /consent.

Paso 3: Almacenar Tokens

Guardar consent_token y/o custom_id.

Paso 4: Verificar Consentimiento

Consultar /detail antes de usarlo.

Paso 5: Usar Consentimiento

Pasar consent_token como evidencia al consultar datos crediticios.


Recomendaciones de Integración

  • Validar localmente: RUT, email, teléfono.
  • Usar custom_id: Facilita correlación interna.
  • Verificar vigencia: Antes de cada uso.
  • Retry: Backoff exponencial para errores 500.
  • Capturar fingerprint: Útil para web.

Soporte Técnico

Para soporte, proporcionar:

  • consent_token o custom_id
  • Timestamp
  • Request completo (sin credenciales sensibles)
  • Response recibida
  • Logs de la aplicación cliente

Changelog

v1.0 (Noviembre 2025)

  • Versión inicial del sistema
  • Implementación completa de normativa
  • Endpoints /consent y /detail
  • Auditoría completa
  • Soporte de archivos
  • Generación UUID automática
  • Validaciones estrictas

Documentación actualizada: Noviembre 2025
Versión API: 1.0
Sistema: Gestión de Consentimientos RDC30
Normativa: CMF RDC30 - Chile