Un mapa de campos solo renombra columnas. No parsea, calcula, transforma ni combina valores. Exactamente una columna de la fuente rellena cada campo canónico.
Qué es un mapa de campos
Un mapa de campos pertenece a una sola fuente dentro de un contexto. Un contexto concilia dos lados (una fuente
LEFT y una fuente RIGHT), y cada fuente tiene su propio mapa de campos. Matcher compara los campos canónicos que producen ambos mapas. Ambos lados deben resolverse al mismo vocabulario, incluso cuando sus archivos crudos no se parecen en nada.
El mapeo es un objeto JSON con la forma:
- La clave es un campo canónico. Las claves vienen de un vocabulario cerrado que distingue mayúsculas y minúsculas. Matcher rechaza cualquier clave fuera de él.
- El valor es el nombre de la columna en la fuente cruda que lleva ese campo. Los valores son texto libre (como sea que tu archivo llame a la columna) y deben ser cadenas no vacías.
Vocabulario canónico
Matcher usa un espacio de claves cerrado. Estas son las únicas claves que Matcher acepta.
Claves obligatorias
Cada mapa de campos debe declarar las cuatro:Claves opcionales
Declara estas solo cuando la fuente las lleva:fee_amount y fee_currency son el espacio de comisión opcional. Cuando están presentes, el valor de la columna mapeada se copia a los metadatos de la transacción que lee la verificación de comisiones. Por eso una columna con cualquier nombre, por ejemplo mdr_fee, puede llevar comisiones de punta a punta sin metadatos armados a mano. Omítelas y el comportamiento es idéntico al de un mapa sin espacio de comisión.Crear un mapa de campos
Creas un mapa de campos por fuente. Envía el objeto de mapeo al endpoint de mapa de campos de la fuente:
cURL
Actualizar un mapa de campos
Cada fuente tiene un mapa de campos. Para cambiar un mapeo, haz
PATCH por su propio ID (no el ID de la fuente). Envía el mapeo completo. Reemplaza el anterior e incrementa version.
cURL
Ejemplo: ambos lados de un contexto
Un contexto concilia un feed bancario contra una exportación de ledger interna. Los dos archivos usan nombres de columna distintos, así que cada fuente declara su propio mapa, pero ambos se resuelven a las mismas claves canónicas.
Fuente LEFT: extracto bancario (CSV)
Columnas crudas:Fuente RIGHT: exportación de ledger (CSV)
Columnas crudas:external_id, amount, currency y date en el vocabulario canónico. Las reglas de coincidencia pueden compararlas directamente, aunque un archivo llamó al monto Amount y el otro lo llamó value.
Errores comunes
Invertir la dirección
Invertir la dirección
La clave es el campo canónico y el valor es tu columna:
{"external_id": "BankRef"}, no {"BankRef": "external_id"}. Escribirlo al revés pone una clave desconocida (BankRef) a la izquierda, y Matcher rechaza el mapa.Usar claves fuera del vocabulario
Usar claves fuera del vocabulario
Matcher acepta solo
external_id, amount, currency, date, description, fee_amount y fee_currency. Matcher rechaza claves como transaction_id, reference, counterparty o type como claves desconocidas. El error nombra a cada infractor.Mayúsculas o minúsculas equivocadas
Mayúsculas o minúsculas equivocadas
Las claves son tokens en minúsculas que distinguen mayúsculas y minúsculas. Matcher trata
External_Id, Amount o CURRENCY como claves desconocidas.Falta una clave obligatoria
Falta una clave obligatoria
Todas las claves
external_id, amount, currency y date deben estar presentes. Un mapa al que le falte alguna falla la validación con un mensaje “missing required keys”.Valores vacíos o que no son cadenas
Valores vacíos o que no son cadenas
Cada valor debe ser una cadena no vacía que nombre una columna de la fuente. Matcher rechaza
null, números, objetos o "".Esperar transformaciones
Esperar transformaciones
Los mapas de campos no parsean fechas, no dividen montos, no concatenan columnas ni aplican condicionales. Entrega los valores ya con la forma esperada desde el archivo de origen, o normaliza upstream antes de subirlos.
Próximos pasos
Reglas de coincidencia
Define cómo Matcher compara y agrupa los campos canónicos.
Subir archivos
Importa transacciones usando tus mapas de campos.

