Pular para o conteúdo principal

Field Mappings

Gerencie mapeamentos de campos que transformam e normalizam os dados extraídos.

Visão Geral

Field Mappings permitem:

  • Mapear campos extraídos para campos do seu sistema
  • Aplicar transformações automáticas (datas, moedas, etc.)
  • Definir valores padrão para campos ausentes
  • Priorizar mapeamentos conflitantes

Endpoints

MétodoEndpointDescrição
POST/api/v1/data-extraction/templates/:templateId/mappingsCriar mapeamento
GET/api/v1/data-extraction/templates/:templateId/mappingsListar mapeamentos
GET/api/v1/data-extraction/templates/:templateId/mappings/:idObter mapeamento
PATCH/api/v1/data-extraction/templates/:templateId/mappings/:idAtualizar mapeamento
DELETE/api/v1/data-extraction/templates/:templateId/mappings/:idExcluir mapeamento

Criar Mapeamento

POST https://data-extraction.stg.catalisa.app/api/v1/data-extraction/templates/:templateId/mappings
Authorization: Bearer {token}
Content-Type: application/json

Request Body

{
"data": {
"type": "field-mapping",
"attributes": {
"sourceField": "dataNascimento",
"targetField": "birthDate",
"transformType": "DATE_FORMAT",
"transformConfig": {
"from": "DD/MM/YYYY",
"to": "YYYY-MM-DD"
},
"isRequired": true,
"priority": 1
}
}
}

Atributos

CampoTipoObrigatórioDescrição
sourceFieldstringSimNome do campo extraído
targetFieldstringSimNome do campo de destino
transformTypeenumNãoTipo de transformação (default: NONE)
transformConfigobjectNãoConfiguração da transformação
isRequiredbooleanNãoSe o campo é obrigatório (default: false)
defaultValuestringNãoValor padrão se ausente
priorityintegerNãoPrioridade (menor = maior prioridade)

Response (201 Created)

{
"data": {
"type": "field-mapping",
"id": "550e8400-e29b-41d4-a716-446655440000",
"links": {
"self": "/api/v1/data-extraction/templates/.../mappings/550e8400-e29b-41d4-a716-446655440000"
},
"attributes": {
"sourceField": "dataNascimento",
"targetField": "birthDate",
"transformType": "DATE_FORMAT",
"transformConfig": {
"from": "DD/MM/YYYY",
"to": "YYYY-MM-DD"
},
"isRequired": true,
"defaultValue": null,
"priority": 1,
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-15T10:30:00Z"
}
}
}

Tipos de Transformação

NONE

Sem transformação. O valor é copiado diretamente.

{
"transformType": "NONE"
}

DATE_FORMAT

Converte formatos de data.

{
"transformType": "DATE_FORMAT",
"transformConfig": {
"from": "DD/MM/YYYY",
"to": "YYYY-MM-DD",
"locale": "pt-BR"
}
}
ParâmetroDescrição
fromFormato de entrada
toFormato de saída
localeLocale para parsing (opcional)

Tokens de formato:

  • DD - Dia (01-31)
  • MM - Mês (01-12)
  • YYYY - Ano (4 dígitos)
  • YY - Ano (2 dígitos)

Exemplos:

  • 15/01/2024 (DD/MM/YYYY) → 2024-01-15 (YYYY-MM-DD)
  • 01-15-2024 (MM-DD-YYYY) → 2024-01-15 (YYYY-MM-DD)

CURRENCY_NORMALIZE

Normaliza valores monetários para formato numérico.

{
"transformType": "CURRENCY_NORMALIZE",
"transformConfig": {
"locale": "pt-BR"
}
}
ParâmetroDescrição
localeLocale para parsing (determina separadores)

Exemplos:

  • R$ 1.234,561234.56
  • R$1234,561234.56
  • 1.234,561234.56

NUMBER_PARSE

Converte string numérica para número.

{
"transformType": "NUMBER_PARSE",
"transformConfig": {
"locale": "pt-BR"
}
}

Exemplos:

  • 1.234,561234.56
  • 1,234.56 (en-US) → 1234.56

STRING_TRIM

Remove espaços em branco.

{
"transformType": "STRING_TRIM"
}

Exemplos:

  • " João Silva ""João Silva"

REGEX_EXTRACT

Extrai parte do valor usando expressão regular.

{
"transformType": "REGEX_EXTRACT",
"transformConfig": {
"pattern": "\\d{3}\\.\\d{3}\\.\\d{3}-\\d{2}",
"group": 0
}
}
ParâmetroDescrição
patternExpressão regular
groupGrupo de captura (0 = match completo)

Exemplos:

  • Pattern: (\d{2})/(\d{2})/(\d{4}), Group: 3 → Extrai apenas o ano

Exemplo Completo

Configurando mapeamentos para um template de RG:

const templateId = 'template-uuid';
const baseUrl = 'https://data-extraction.stg.catalisa.app';

// Mapeamento de data de nascimento
await fetch(`${baseUrl}/api/v1/data-extraction/templates/${templateId}/mappings`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
data: {
type: 'field-mapping',
attributes: {
sourceField: 'dataNascimento',
targetField: 'birthDate',
transformType: 'DATE_FORMAT',
transformConfig: { from: 'DD/MM/YYYY', to: 'YYYY-MM-DD' },
isRequired: true,
priority: 1
}
}
})
});

// Mapeamento de CPF (extrai apenas números)
await fetch(`${baseUrl}/api/v1/data-extraction/templates/${templateId}/mappings`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
data: {
type: 'field-mapping',
attributes: {
sourceField: 'cpf',
targetField: 'documentNumber',
transformType: 'REGEX_EXTRACT',
transformConfig: { pattern: '\\d+', group: 0 },
isRequired: false,
priority: 2
}
}
})
});

// Mapeamento de nome (trim)
await fetch(`${baseUrl}/api/v1/data-extraction/templates/${templateId}/mappings`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
data: {
type: 'field-mapping',
attributes: {
sourceField: 'nome',
targetField: 'fullName',
transformType: 'STRING_TRIM',
isRequired: true,
priority: 1
}
}
})
});

Resultado do Mapeamento

Após a extração, os dados mapeados ficam disponíveis no campo mappedData:

{
"rawData": {
"nome": " JOÃO DA SILVA ",
"dataNascimento": "15/01/1990",
"cpf": "123.456.789-00"
},
"mappedData": {
"fullName": "JOÃO DA SILVA",
"birthDate": "1990-01-15",
"documentNumber": "12345678900"
}
}

Listar Mapeamentos

GET https://data-extraction.stg.catalisa.app/api/v1/data-extraction/templates/:templateId/mappings
Authorization: Bearer {token}

Response (200 OK)

{
"data": [
{
"type": "field-mapping",
"id": "550e8400-e29b-41d4-a716-446655440000",
"attributes": {
"sourceField": "dataNascimento",
"targetField": "birthDate",
"transformType": "DATE_FORMAT",
"priority": 1
}
}
]
}

Erros Comuns

CódigoErroDescrição
400VALIDATION_ERRORConfiguração de transformação inválida
404NOT_FOUNDTemplate ou mapeamento não encontrado
409CONFLICTMapeamento duplicado para o mesmo sourceField