Validar Consentimiento

Validar Consentimiento

POST /cl/consent_manager/validate_consent

Verifica si existe un consentimiento ACTIVE y no expirado para una combinación de (person_rut, codigo_institucion, finalidad). Útil antes de hacer una consulta crediticia para confirmar que el titular dio consentimiento.

  • URL completa (prod): https://api.floid.app/cl/consent_manager/validate_consent
  • URL sandbox: https://sandbox.floid.app/cl/consent_manager/validate_consent

Importante: este endpoint nunca valida consentimientos sandbox, incluso desde sandbox.floid.app. Es un control regulatorio: no se permite "validar" con data de testing.


Headers requeridos

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

Parámetros del body

CampoTipoRequeridoDescripción
person_rutstringRUT chileno del titular
codigo_institucionstringCódigo de 9 dígitos de la institución
finalidadinteger1 (riesgo comercial) o 2 (riesgo crediticio)

id_cliente se deriva del Bearer token. Si lo enviás, se ignora.


Ejemplo

curl --location 'https://api.floid.app/cl/consent_manager/validate_consent' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer {{TOKEN}}' \
  --data '{
    "person_rut": "12345678-9",
    "codigo_institucion": "123456789",
    "finalidad": 2
  }'

Respuesta — consentimiento válido (200)

{
  "code": "200",
  "msg": "OK",
  "caseid": "",
  "data": {
    "valid": true,
    "consent": {
      "id": 12345,
      "consent_token": "550e8400-e29b-41d4-a716-446655440000",
      "codigo_institucion": "123456789",
      "codigo_interno_consentimiento": "BCH-NAT-001",
      "person_rut": "12345678-9",
      "tipo_persona": "NATURAL",
      "finalidad": 2,
      "objetivo": "02",
      "current_state": "ACTIVE",
      "timestamp_otorgamiento_fecha": "20260512",
      "timestamp_otorgamiento_hora": "143022",
      "timestamp_expiracion_fecha": "20270512",
      "timestamp_expiracion_hora": "143022"
    },
    "validation_date": "2026-05-12 18:30:00",
    "checked_criteria": {
      "person_rut": "12345678-9",
      "codigo_institucion": "123456789",
      "finalidad": 2,
      "state": "ACTIVE",
      "not_expired": true
    }
  }
}

Si hay más de un consentimiento que cumpla, devuelve el más reciente (mayor timestamp_otorgamiento).


Respuesta — sin consentimiento válido (200)

{
  "code": "200",
  "msg": "OK",
  "caseid": "",
  "data": {
    "valid": false,
    "consent": null,
    "validation_date": "2026-05-12 18:30:00",
    "checked_criteria": {
      "person_rut": "12345678-9",
      "codigo_institucion": "123456789",
      "finalidad": 2,
      "state": "ACTIVE",
      "not_expired": true
    }
  }
}

Importante: el HTTP es 200 y el code es "200" incluso cuando valid es false. La inexistencia de consentimiento no es un error — es un resultado de la validación. Parsé data.valid.


Posibles errores

error_codeHTTPdisplay_message típico
INVALID_REQUEST400"Missing required fields: person_rut, codigo_institucion, finalidad"
RUT_NO_VALIDO400RUT con formato o checksum inválido
INTERNAL_ERROR500Error de DB

Última actualización: 12 de mayo de 2026.