Exportar Consentimientos

Exportar Consentimientos

POST /cl/consent_manager/export_consents

Exporta consentimientos del cliente autenticado a CSV o Excel, aplicando filtros opcionales. La respuesta es un JSON con el archivo en base64, no una descarga binaria directa.

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

⚠️

Cambio importante (v3.1, mayo 2026): este endpoint solía devolver el archivo binario con Content-Disposition: attachment. Ya no. El gateway interno reescribía esas respuestas como HTTP 400. Ahora devuelve un JSON envelope con el archivo en base64 — ver "Respuesta exitosa" más abajo.

Sandbox vs prod: por requisito regulatorio, este endpoint nunca incluye consentimientos sandbox en la exportación, incluso desde sandbox.floid.app.


Headers requeridos

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

Parámetros del body

CampoTipoRequeridoDescripción
formatstringNocsv (default) o excel
person_rutstringNoFiltrar por RUT
codigo_institucionstringNoFiltrar por código de 9 dígitos
rut_empresastringNoFiltrar por RUT de empresa (JURIDICA)
current_statestringNoACTIVE | REVOKED | EXPIRED
fecha_desdestringNoYYYY-MM-DD (filtra timestamp_otorgamiento)
fecha_hastastringNoYYYY-MM-DD

El parámetro de formato se llama format (en inglés). El módulo generate_report usa formato en español. Son endpoints distintos con convenciones distintas — no los mezcles.

id_cliente y caseId se inyectan por el gateway. Si los enviás, se ignoran/sobreescriben.


Ejemplo — CSV

curl --location 'https://api.floid.app/cl/consent_manager/export_consents' \
  --header 'Authorization: Bearer {{TOKEN}}' \
  --header 'Content-Type: application/json' \
  --data '{
    "format": "csv",
    "current_state": "ACTIVE",
    "fecha_desde": "2026-01-01",
    "fecha_hasta": "2026-12-31"
  }' \
  | jq -r '.data' | base64 -d > consents_export.csv

Ejemplo — Excel

curl --location 'https://api.floid.app/cl/consent_manager/export_consents' \
  --header 'Authorization: Bearer {{TOKEN}}' \
  --header 'Content-Type: application/json' \
  --data '{
    "format": "excel",
    "fecha_desde": "2026-01-01",
    "fecha_hasta": "2026-12-31"
  }' \
  | jq -r '.data' | base64 -d > consents_export.xlsx

Respuesta exitosa (200)

{
  "code": "200",
  "msg": "OK",
  "format": "csv",
  "filename": "consents_export_20260512_143022.csv",
  "mime": "text/csv; charset=utf-8",
  "rows": 137,
  "encoding": "base64",
  "data": "PHRhYmxlPjx0cj48dGg+aWQ8L3RoPi4uLg=="
}

Campos de la respuesta

CampoTipoDescripción
codestring"200" en éxito
formatstring"csv" o "excel"
filenamestringNombre sugerido para guardar el archivo, con timestamp
mimestringMIME type del archivo (CSV: text/csv; charset=utf-8; Excel: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)
rowsintegerCantidad de filas de datos en el archivo (no incluye header)
encodingstringSiempre "base64"
datastringContenido del archivo codificado en base64

Cómo procesar la respuesta

JavaScript / Node:

const buffer = Buffer.from(response.data.data, 'base64');
fs.writeFileSync(response.data.filename, buffer);

Python:

import base64
with open(response['filename'], 'wb') as f:
    f.write(base64.b64decode(response['data']))

Bash:

echo "$RESPONSE" | jq -r '.data' | base64 -d > "$(echo "$RESPONSE" | jq -r '.filename')"

Estructura del archivo exportado

CSV: separador coma, primera fila con headers, BOM UTF-8 al inicio (para abrir bien en Excel).
Excel: hoja única (formato HTML embebido — abre tanto en Excel como en LibreOffice/Google Sheets).

Columnas (orden):

ColumnaDescripción
idPrimary key del consentimiento
id_clienteTu id_cliente
consent_tokenUUID Floid
codigo_institucionCódigo de 9 dígitos de la institución
codigo_interno_consentimientoCódigo RDC30
id_externoEl custom_id que pasaste (puede ser vacío)
tipo_personaNATURAL o JURIDICA
person_rutRUT del titular
person_nameNombre del titular
person_emailEmail
person_cellphoneTeléfono
rut_empresaRUT empresa (JURIDICA)
medio1/2/3
finalidad1/2
objetivo"01"–"07"
rut_ejecutivoRUT del ejecutivo
current_stateACTIVE/REVOKED/EXPIRED
timestamp_otorgamiento_fechaYYYYMMDD
timestamp_otorgamiento_horaHHMMSS
timestamp_expiracion_fechaYYYYMMDD
timestamp_expiracion_horaHHMMSS
timestamp_revocacion_fechaYYYYMMDD (vacío si nunca se revocó)
timestamp_revocacion_horaHHMMSS (vacío si nunca se revocó)
evidence_urlURL del archivo de evidencia
evidence_hashSHA-256
evidence_file_formatPDF_A o MP3
evidence_storage_modeFLOID_STORAGE o EXTERNAL_URL_ONLY
evidence_statusPENDING / SUCCESS / FAILED / EXTERNAL
origenAPI / WEB / BATCH
ipIP del cliente al momento de creación

Posibles errores

error_codeHTTPdisplay_message típico
INTERNAL_ERROR500Error al generar el archivo o consultar la DB

Si no hay registros que cumplan los filtros, el archivo va igual con sólo el header. rows será 0. No es error.

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