Conectores de dados agora suportam mapeamento de respostas API em JSON e XML. Se sua API retornar XML, o Intercom o converterá automaticamente para JSON antes de mapear objetos e arrays. Todas as regras e limitações de mapeamento descritas abaixo se aplicam à estrutura JSON convertida.
Objetos e arrays que você pode mapear
Nota: Para mapear dados de data para um atributo Datetime em um Objeto Personalizado, suportamos apenas o mapeamento de strings no formato ISO 8601, por exemplo, 2008-01-10T11:00:00-05:00
Objeto JSON simples
Você pode mapear objetos raiz da API para Pessoas, Conversas e Objetos Personalizados. Todos os atributos da API são acessíveis.
{
"type": "admin",
"id": "493881",
"name": "Hoban Washburne",
"email": "wash@serenity.io",
"away_mode_enabled": false,
"away_mode_reassign": false
}
Objetos JSON aninhados
Você pode mapear 3 objetos API (raiz, order, client_details) para Pessoas, Conversas e Objetos Personalizados. Todos os atributos da API são acessíveis.
{
"order": {
"id": 450789469,
"admin_graphql_api_id": "gid://shopify/Order/450789469",
"app_id": null,
"browser_ip": "0.0.0.0",
"buyer_accepts_marketing": false,
"cancel_reason": null,
"cancelled_at": null,
"cart_token": "68778783ad298f1c80c3bafcddeea02f",
"checkout_id": 901414060,
"checkout_token": "bd5a8aa1ecd019dd3520ff791ee3a24c",
"client_details": {
"accept_language": null,
"browser_height": null,
"browser_ip": "0.0.0.0",
"browser_width": null,
"session_hash": null,
"user_agent": null
}
}
}
Arrays de nível superior
Objeto raiz é array
Você pode mapear o array raiz para um tipo de Objeto Personalizado. Todos os atributos da API de um elemento são acessíveis (o primeiro elemento é tomado como representante).
[
{
"type": "admin",
"id": "493881",
"name": "Hoban Washburne",
"email": "wash@serenity.io",
"away_mode_enabled": false,
"away_mode_reassign": false
},
{
"type": "admin",
"email": "mal@serenity.io",
"id": "646303",
"name": "Malcolm Reynolds ",
"away_mode_enabled": true,
"away_mode_reassign": false
}
]
Arrays aninhados
Você pode mapear arrays aninhados dentro de objetos (não outros arrays). Você pode mapear esses arrays para Objetos Personalizados.
{
"order": {
"id": 450789469,
"discount_codes": [
{
"code": "TENOFF",
"amount": "10.00",
"type": "fixed_amount"
}
],
"note_attributes": [
{
"name": "custom engraving",
"value": "Happy Birthday"
},
{
"name": "colour",
"value": "green"
}
]
}
}
Arrays que você não pode mapear
Arrays aninhados dentro de outros arrays
Você não pode acessar arrays que estão aninhados dentro de elementos de outros arrays. Isso porque não sabemos qual elemento do array de nível superior escolher. Então, no exemplo abaixo, você pode mapear o array order para um Objeto Personalizado. Mas não os arrays discount_codes, pois estão aninhados dentro do array orders.
{
"orders": [
{
"id": 1,
"discount_codes": [
{
"code": "TENOFF",
"amount": "10.00",
"type": "fixed_amount"
}
],
"note_attributes": [
{
"name": "custom engraving",
"value": "Happy Birthday"
},
{
"name": "colour",
"value": "green"
}
]
},
{
"id": 2,
"discount_codes": [
{
"code": "TENOFF",
"amount": "10.00",
"type": "fixed_amount"
}
],
"note_attributes": [
{
"name": "custom engraving",
"value": "Happy Birthday"
},
{
"name": "colour",
"value": "green"
}
]
}
]
}
Enviando objetos aninhados em requisições
Conectores de dados atualmente suportam apenas o envio de parâmetros planos (chave/valor) em corpos de requisição. Parâmetros de objetos e arrays aninhados não são suportados.
Isso significa que, se uma API de terceiros exigir um objeto aninhado como parte da requisição — por exemplo, os endpoints de cancelamento e reembolso de pedidos do Shopify exigem um objeto buyer_identity — a ação não pode ser concluída com sucesso via conector de dados.
O suporte para parâmetros de objetos e arrays aninhados em corpos de requisição está em nosso roadmap. Atualizaremos este artigo quando estiver disponível.
