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
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
format | string | No | csv (default) o excel |
person_rut | string | No | Filtrar por RUT |
codigo_institucion | string | No | Filtrar por código de 9 dígitos |
rut_empresa | string | No | Filtrar por RUT de empresa (JURIDICA) |
current_state | string | No | ACTIVE | REVOKED | EXPIRED |
fecha_desde | string | No | YYYY-MM-DD (filtra timestamp_otorgamiento) |
fecha_hasta | string | No | YYYY-MM-DD |
El parámetro de formato se llama
format(en inglés). El módulogenerate_reportusaformatoen español. Son endpoints distintos con convenciones distintas — no los mezcles.
id_clienteycaseIdse 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
| Campo | Tipo | Descripción |
|---|---|---|
code | string | "200" en éxito |
format | string | "csv" o "excel" |
filename | string | Nombre sugerido para guardar el archivo, con timestamp |
mime | string | MIME type del archivo (CSV: text/csv; charset=utf-8; Excel: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) |
rows | integer | Cantidad de filas de datos en el archivo (no incluye header) |
encoding | string | Siempre "base64" |
data | string | Contenido 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):
| Columna | Descripción |
|---|---|
id | Primary key del consentimiento |
id_cliente | Tu id_cliente |
consent_token | UUID Floid |
codigo_institucion | Código de 9 dígitos de la institución |
codigo_interno_consentimiento | Código RDC30 |
id_externo | El custom_id que pasaste (puede ser vacío) |
tipo_persona | NATURAL o JURIDICA |
person_rut | RUT del titular |
person_name | Nombre del titular |
person_email | |
person_cellphone | Teléfono |
rut_empresa | RUT empresa (JURIDICA) |
medio | 1/2/3 |
finalidad | 1/2 |
objetivo | "01"–"07" |
rut_ejecutivo | RUT del ejecutivo |
current_state | ACTIVE/REVOKED/EXPIRED |
timestamp_otorgamiento_fecha | YYYYMMDD |
timestamp_otorgamiento_hora | HHMMSS |
timestamp_expiracion_fecha | YYYYMMDD |
timestamp_expiracion_hora | HHMMSS |
timestamp_revocacion_fecha | YYYYMMDD (vacío si nunca se revocó) |
timestamp_revocacion_hora | HHMMSS (vacío si nunca se revocó) |
evidence_url | URL del archivo de evidencia |
evidence_hash | SHA-256 |
evidence_file_format | PDF_A o MP3 |
evidence_storage_mode | FLOID_STORAGE o EXTERNAL_URL_ONLY |
evidence_status | PENDING / SUCCESS / FAILED / EXTERNAL |
origen | API / WEB / BATCH |
ip | IP del cliente al momento de creación |
Posibles errores
error_code | HTTP | display_message típico |
|---|---|---|
INTERNAL_ERROR | 500 | Error 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.
rowsserá0. No es error.
Última actualización: 12 de mayo de 2026.
