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, institution_code, purpose). Útil antes de hacer una consulta crediticia para confirmar que el titular otorgó consentimiento.

  • URL de producción: https://api.floid.app/cl/consent_manager/validate_consent
  • URL de sandbox: https://sandbox.floid.app/cl/consent_manager/validate_consent

Contrato en inglés. Los nombres de los campos del request y de la respuesta van en inglés. Los errores usan el envelope legacy con un error_code granular.


Headers requeridos

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

Parámetros del body

CampoTipoRequeridoDescripción
person_rutstringRUT chileno del titular.
institution_codestringCódigo de institución de 9 dígitos.
purposeinteger1 (riesgo comercial) o 2 (riesgo crediticio).

El client_id se deriva del Bearer token. Si lo envías, se ignora. Cuando más de un consentimiento cumple, se devuelve el más reciente.


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",
    "institution_code": "123456789",
    "purpose": 2
  }'

Respuesta — consentimiento válido (200)

{
  "code": 200,
  "msg": "OK",
  "caseid": "550e8400-e29b-41d4-a716-446655440000",
  "data": {
    "valid": true,
    "consent": {
      "id": 12345,
      "consent_token": "550e8400-e29b-41d4-a716-446655440000",
      "client_id": 42,
      "framework": "REDEC",
      "person_type": "NATURAL",
      "person_rut": "12345678-9",
      "institution_code": "123456789",
      "internal_code": "BCH-NAT-001",
      "purpose": 2,
      "objective": "02",
      "medium": 1,
      "state": "ACTIVE",
      "granted_date": "20260512",
      "expiration_date": "20260602",
      "expiration_time": "235959",
      "caseid": "550e8400-e29b-41d4-a716-446655440000"
    },
    "validation_date": "2026-05-12 18:30:00",
    "checked_criteria": {
      "person_rut": "12345678-9",
      "institution_code": "123456789",
      "purpose": 2,
      "state": "ACTIVE",
      "not_expired": true
    }
  }
}

Respuesta — sin consentimiento válido (200)

{
  "code": 200,
  "msg": "OK",
  "caseid": "550e8400-e29b-41d4-a716-446655440000",
  "data": {
    "valid": false,
    "consent": null,
    "validation_date": "2026-05-12 18:30:00",
    "checked_criteria": {
      "person_rut": "12345678-9",
      "institution_code": "123456789",
      "purpose": 2,
      "state": "ACTIVE",
      "not_expired": true
    }
  }
}

El HTTP es 200 y code es 200 incluso cuando valid es false. La inexistencia de consentimiento no es un error — es un resultado de la validación. Parsea data.valid.

Este endpoint nunca valida datos de sandbox: siempre verifica contra el ambiente que implica el host.


Errores

error_codeerror_typeHTTPCuándo
VALIDATION_CRITERIA_REQUIREDVALIDATION400Faltan person_rut, institution_code o purpose.
INVALID_RUTVALIDATION400person_rut con formato o dígito verificador inválido.
INTERNAL_ERRORINTERNAL500Error de base de datos.