Importar entidades (CSV)
Referencia API
Importar entidades (CSV)
Sube un CSV y encola import bulk de entidades — formato plataforma sin mappingId o columnas custom con mappingId. Default manual; automático explícito.
POST
Importar entidades (CSV)
Endpoint
Descripción
Content-Type:multipart/form-data.
Encola el mismo job bulk que el hub Importaciones masivas. Requiere entities:bulk_import y la flag org de importación masiva automática. Respuesta 202 con jobId e importMode efectivo.
Autenticación
Modos de importación (entityImportMode)
Los valores legacy
manual_no_enrichment y automatic_enriched siguen aceptándose en el request y se normalizan a manual / automatic. La respuesta usa los nombres canónicos.Default si mandás solo el CSV
importMode: manual — entidad mínima, sin enrichments salvo que los agregues explícitamente.
Manual con enrichments elegidos
Misma semántica que el modo Manual del hub:monitoring JSON (solo entidad principal en manual).
Modo automático (explícito)
autoExecuteIntegrations en automático → todos los enrichments activos de la org.
Con depth > 0 podés enviar autoExecuteIntegrationsShareholders (JSON) para accionistas.
Manual sin reglas post-creación
entityImportMode — ya es manual por default.)
CSV formato plataforma (sin mappingId)
Cabeceras mínimas: tax_id, type. Recomendado: suggested_name (obligatorio en manual). Ver País (ISO2) para country_code.
País (ISO2) — siempre obligatorio
Cada fila necesita un país para crear la entidad (manual y automático). Podés indicarlo en uno o ambos lugares:
Prioridad:
country_code en la fila → country del lote.
Si ninguno está definido en una fila, el import falla con missing country antes de encolar el job.
Ejemplos:
- CSV simple, todo AR → cabeceras
tax_id,type+ formcountry=AR. - CSV avanzado, países mixtos →
country_codeen cada fila (countrydel lote opcional como respaldo). - CSV avanzado, un solo país → todas las filas con
country_code=ARo formcountry=ARsin la columna.
- bulk-entities-template-automatic.csv — con
entityImportMode=automatic. Filas demo AR/BR/CL,depth, enrichments. - bulk-entities-template-manual.csv — con
entityImportMode=manual(default). Filas demo AR/MX/BR,suggested_nameobligatorio, sindepth.
apps/web/src/lib/bulk-automatic-entity-import-parse.ts.
Referencia de columnas (CSV plataforma)
Cabeceras sin distinguir mayúsculas; espacios →_. Alias entre paréntesis.
Misma entidad, varios vínculos (CSV): el CSV plataforma admite una relación por fila. Si la misma persona/empresa aparece en varias filas con distinto
related_*, Gu1 no recrea la entidad (skip por tax_id duplicado) pero sí aplica el vínculo de esa fila. Si el edge (source → target + tipo) ya existe, se omite ese vínculo (idempotente). Alternativa en API/JSON: un solo create con hasta 10 ítems en relationships[].Eliminado (2026-06-04): las columnas CSV
execute_all_active_checks y checks ya no forman parte del contrato de importación. Usá enrichments, enrichment_group_refs y execute_all_active_enrichments. Ver Changelog.. generan objetos anidados. Enriquecimientos pueden sobrescribir entityData; los valores del CSV se re-aplican al final (el CSV gana en conflictos).
Qué va a attributes: columnas attributes.*, metadata.* (legacy) o sin prefijo. El form attributes (JSON) del lote se fusiona con los de fila (gana la fila en conflicto de clave).
CSV simple (solo tax_id + type): enviá country (ISO2) en el form del lote — obligatorio. No hace falta columna country_code.
CSV custom: requiere mappingId (mapeo guardado en el dashboard).
- Columnas de enrichment por fila aplican en ambos modos;
depth/ accionistas solo enautomatic.
Enrichments en relacionados por fila (CSV plataforma)
Opcional — solo modoautomatic. Prefijo relationship_ (alias plural relationships_).
Paytime / lotes con
childEnrichmentPolicy custom: omití relationship_execute_all_active_enrichments del CSV si querés que aplique la política del formulario paso 2. Usá relationship_omit_enrichments por fila solo para excepciones puntuales.
Ejemplo omit en accionistas (all active del lote, menos sanciones globales en hijos):
CSV custom
Columnas distintas al formato plataforma →mappingId obligatorio.
Campos del formulario
Enrichments en hijos y monitoreo
ConentityImportMode=automatic y depth > 0 se crean accionistas (raíz empresa) o entidades relacionadas (raíz persona). Dos campos del lote controlan enrichments y watchlist en esos hijos:
monitoringApplyToRelationships: con false, el JSON monitoring aplica solo a la entidad principal (monitoring.main). Recomendado false con by_root_type cuando la raíz entra a monitoreo de sanciones pero los hijos no.
Ejemplo (CSV mixto, depth 1):
autoExecuteIntegrationsShareholders por fila en bulk JSON o columnas relationship_* en CSV sigue pisando la política del lote para ese ítem.
Manual vs automático
Límites
Default si omitís modo
Hub vs API
Ver también: Importaciones masivas.