SelectwinDOCS

Metadata

A funcionalidade de Metadata da Selectwin API permite anexar informações adicionais personalizadas aos principais recursos da plataforma. Esta característica oferece flexibilidade para armazenar dados

Visão Geral

A funcionalidade de Metadata da Selectwin API permite anexar informações adicionais personalizadas aos principais recursos da plataforma. Esta característica oferece flexibilidade para armazenar dados específicos do seu negócio junto aos objetos do sistema, facilitando integrações, rastreamento e personalização dos processos de pagamento.

O que é Metadata?

Metadata são pares de chave-valor que você pode associar a objetos como transações, clientes, cartões, saques e outros recursos da API. Estas informações adicionais não afetam o comportamento padrão dos objetos, mas permitem:

  1. Personalização de Dados: Armazenar informações específicas do seu negócio
  2. Integração Simplificada: Facilitar o mapeamento entre os sistemas
  3. Rastreamento Avançado: Adicionar identificadores para análise e reconciliação
  4. Segmentação e Categorização: Organizar recursos com base em critérios personalizados
  5. Contexto Adicional: Fornecer dados auxiliares para futuras referências

Estrutura e Limitações

O objeto de metadata é sempre incluído como um atributo chamado metadata nos recursos que o suportam:

{
  // ... outros atributos do objeto ...
  "metadata": {
    "order_id": "PED-12345",
    "customer_reference": "CLI-ABC-789",
    "campaign_source": "email_july",
    "internal_department": "sales_northeast"
  }
}

Limitações:

AspectoLimite
Tamanho totalMáximo de 20KB por objeto
ChavesAté 40 chaves por objeto
Formato de chavesApenas alfanuméricos, sublinhados e hífens
Tamanho da chaveMáximo de 40 caracteres
Tamanho do valorMáximo de 500 caracteres
Tipo de valoresApenas strings (sem objetos aninhados ou arrays)

Como Utilizar Metadata

Adicionando Metadata na Criação

Você pode incluir metadata ao criar qualquer recurso que o suporte:

// Exemplo: Criando uma transação com metadata
const axios = require('axios');

async function createTransactionWithMetadata() {
  const response = await axios({
    method: 'post',
    url: 'https://api.selectwin.io/v1/transactions',
    headers: {
      'SelectKey': 'sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ',
      'Content-Type': 'application/json'
    },
    data: {
      ...
      metadata: {
        order_id: 'ORDER-123456',
        customer_reference: 'CUST-789',
        product_ids: '10,14,15',
        shipping_address_id: 'ADR-456',
        promo_code: 'SUMMER10'
      }
    }
  });
  
  return response.data;
}

Casos de Uso

1. Integração com E-commerce

Use metadata para rastrear informações do pedido:

metadata: {
  order_number: "PO-28471",
  cart_id: "CART-17283",
  store_id: "STORE-05",
  shipping_method: "express",
  items_count: "3",
  source: "mobile_app"
}

2. Reconciliação Financeira

Facilite a reconciliação adicionando identificadores do seu sistema financeiro:

metadata: {
  invoice_id: "INV-20230915-001",
  cost_center: "CC-MARKETING",
  project_code: "PROJ-2023-Q3",
  department: "sales",
  account_code: "AC-4172"
}

3. Segmentação de Clientes

Adicione informações para segmentação e análise:

metadata: {
  customer_segment: "premium",
  acquisition_channel: "referral",
  lifetime_value: "15240",
  preferred_category: "electronics",
  language_preference: "pt-BR",
  subscription_tier: "pro"
}

4. Campanhas de Marketing

Rastreie a origem e desempenho das campanhas:

metadata: {
  campaign_id: "SUMMER2023",
  utm_source: "facebook",
  utm_medium: "cpc",
  utm_campaign: "back_to_school",
  discount_code: "SUMMER10",
  affiliate_id: "AFF123"
}

5. Logística e Entrega

Acompanhe informações de entrega nos pagamentos:

metadata: {
  tracking_number: "JB437291082",
  carrier: "fedex",
  estimated_delivery: "2023-09-20",
  package_weight: "1.5kg",
  delivery_instructions: "leave_at_door",
  warehouse_id: "WH-SOUTH"
}

Melhores Práticas

1. Nomenclatura Consistente

Estabeleça um padrão de nomenclatura para suas chaves de metadata:

  • Use snake_case ou camelCase consistentemente
  • Evite abreviações obscuras
  • Seja descritivo mas conciso
  • Agrupe campos relacionados com prefixos comuns (ex: shipping_*, invoice_*)

2. Dados Estruturados vs. Não Estruturados

Como metadata só aceita strings simples (não objetos JSON aninhados), há duas abordagens para dados complexos:

  1. Achatamento: Use prefixos para representar estrutura

    "customer_address_street": "Av. Paulista",
    "customer_address_number": "1000",
    "customer_address_city": "São Paulo"
  2. Serialização: Para estruturas mais complexas, serialize como JSON

    "customer_address": "{\"street\":\"Av. Paulista\",\"number\":\"1000\",\"city\":\"São Paulo\"}"

3. Padronização de Valores

Para campos que representam categorias ou estados:

  • Use enumerações consistentes (ex: status: ["active", "inactive", "pending"])
  • Defina um conjunto fechado de valores possíveis
  • Documente internamente o significado de cada valor

4. O que Não Armazenar em Metadata

Evite armazenar:

  • Dados sensíveis: Informações de cartão de crédito, senhas, tokens
  • Informações pessoais sensíveis: Evite dados que aumentem exigências de conformidade
  • Dados muito volumosos: Respeite os limites de tamanho (20KB)
  • Informações temporárias: A metadata deve ser relevante por toda a vida do objeto
  • Dados críticos para processamento: Não confie na metadata para lógica principal

5. Backup de Metadata

Não dependa apenas da metadata na Selectwin como fonte primária:

  • Mantenha uma cópia das informações críticas em seu sistema
  • Considere implementar recuperação de informações em caso de problemas
  • Faça download periódico dos dados para análise local

Webhooks e Metadata

Quando recursos são atualizados, incluindo suas informações de metadata, webhooks são disparados. Você pode utilizar estes eventos para manter seus sistemas sincronizados:

// Exemplo de payload de webhook com metadata
{
  "id": "evt_123456789",
  "type": "transaction.updated",
  "created": "2023-09-15T16:43:21Z",
  "data": {
    "object": {
      "id": "txn_987654321", 
      "amount": 10000,
      "status": "paid",
      "metadata": {
        "order_id": "ORDER-123456",
        "shipping_status": "dispatched", 
        "tracking_code": "BR123456789"
      }
    },
    "previous_attributes": {
      "metadata": {
        "order_id": "ORDER-123456",
        "shipping_status": "pending"
      }
    }
  }
}

Perguntas Frequentes

A metadata é visível para os clientes finais?

Não. A metadata é visível apenas para sua empresa através das APIs e do Dashboard administrativo. Os clientes finais não têm acesso a essas informações.

Posso atualizar apenas um campo de metadata sem afetar os outros?

Não diretamente. A API substitui todo o objeto de metadata ao invés de mesclar. Para atualizar campos individuais, você deve primeiro obter o objeto atual, modificar o campo específico e enviar o objeto completo atualizado.

É possível remover um campo específico de metadata?

Sim, basta enviar uma atualização com todo o objeto de metadata, omitindo o campo que deseja remover. Alternativamente, você pode definir o valor do campo específico como uma string vazia.

A metadata afeta as operações de processamento de pagamento?

Não. A metadata é puramente informativa e não afeta o comportamento funcional do processamento de pagamentos, autorizações, capturas ou outros processos principais.

Posso usar metadata para identificar transações duplicadas?

Sim, essa é uma prática comum. Ao fornecer identificadores consistentes em seu sistema dentro da metadata (como IDs de pedido), você pode consultar a API para verificar se uma transação já foi processada antes de tentar criá-la novamente.

A metadata é incluída em relatórios e exportações?

Sim. Todos os relatórios e exportações de dados da plataforma incluem os campos de metadata associados aos recursos, facilitando a análise e reconciliação.

On this page