sheetfacultatif | string | |
headerRowfacultatif | integer | ≥ 1, ≤ 30 |
delimiterfacultatif | , | ; | | | | |
encodingfacultatif | string | |
mappingfacultatif | object[] | |
mapping[].columnobligatoire | integer | O `index` da coluna, como veio na análise. |
mapping[].targetobligatoire | ignore | email | firstName | lastName | phone | jobTitle | tagline | tags | groups | groupsExpireAt | consent | smsConsent | whatsappConsent | field | newField | badges | points | Destino da coluna. `smsConsent` é o consentimento de SMS de serviço da linha: só conta com `smsConsentAttestation: true` (a responsabilidade pela declaração é da comunidade) e vale também para quem já é membro (2026-10-28), exceto quem saiu do canal ou retirou o consentimento (aviso `CONSENT_WITHDRAWN`); "não", vazio ou sem a coluna, nada é gravado. O telefone da linha, com a atestação, já pode receber SMS e WhatsApp enquanto for o telefone do perfil (2026-10-28), mas fica não verificado: códigos de acesso só vão para número confirmado pela própria pessoa. `whatsappConsent` (2026-10-27) é o mesmo para o WhatsApp, com `whatsappConsentValues` e `whatsappConsentAttestation` próprios. Em quem já é membro, o `phone` da linha substitui o do perfil (não verificado), exceto um número verificado diferente (aviso `PHONE_KEPT_VERIFIED`) ou o perfil de owner numa importação de admin. `jobTitle` é o Cargo do perfil (até 100 caracteres) e `tagline` a Biografia (até 200); o que passar é cortado e a linha entra com o aviso `TOO_LONG`. Em quem já é membro, os dois só preenchem o que está vazio. `groupsExpireAt` (uma coluna por importação) é o "Válido até" dos grupos que a linha dá à pessoa (os da coluna Grupos e os da importação), inclusive os que ela já tinha: data `dd/mm/aaaa` (`mm/dd/aaaa` em en-US) ou `aaaa-mm-dd`, válida o dia inteiro no fuso da comunidade. Data inválida ou que já passou: a linha entra com o aviso `INVALID_VALUE` e os grupos ficam permanentes. `badges` (uma coluna) concede os badges do catálogo da comunidade, nomes separados por `;` (sem diferenciar maiúsculas e acentos), com a origem `import`: quem já tem o badge fica como está; nome que não está no catálogo aparece em `summary.badges.unknown` e precisa ser criado no catálogo (`POST /api/badges`) ou ignorado em `ignoreNames` antes do start (senão 400 `badgesUnknown`). `points` (uma coluna) são os pontos iniciais, inteiro de 1 a 100.000 (`1.500` e `250.0` também valem): vazio ou 0 não faz nada, outro valor entra com o aviso `INVALID_POINTS` e sem pontos; viram um ajuste com o motivo "Importação" só com a gamificação ligada e nunca duas vezes para a mesma pessoa (aviso `POINTS_ALREADY_IMPORTED`). Badges e pontos da importação não mandam e-mail nem sino e não disparam "Recebeu badge", "Subiu de nível" nem "Atingiu N pontos"; o webhook `badge.awarded` sai com `source: import`. |
mapping[].ignoreNamesfacultatif | string[] | Com `badges`: nomes da coluna que não estão no catálogo e devem ser ignorados. |
mapping[].fieldKeyfacultatif | string | Com `field`: a `key` de um campo customizado existente. Num campo `MULTI_SELECT`, a célula lista as opções separadas por `;` ou `,` ("Linux; Cloud"), pelo rótulo ou pelo `value`, sem diferenciar maiúsculas nem acentos. |
mapping[].newFieldfacultatif | object | Com `newField`: o campo criado na hora, sempre opcional. `SELECT` ganha como opções os valores distintos da coluna; `MULTI_SELECT`, os itens distintos das células (de 2 a 50; fora disso o campo nasce `TEXT`). |
mapping[].newField.labelfacultatif | string | max 120 |
mapping[].newField.typefacultatif | TEXT | NUMBER | DATE | SELECT | BOOLEAN | MULTI_SELECT | |
optionsfacultatif | object | |
options.rolefacultatif | member | moderator | |
options.groupIdsfacultatif | string (uuid)[] | |
options.tagsfacultatif | string[] | |
options.originfacultatif | string | De onde veio a lista. Obrigatória no start; texto simples, sem link; vai no e-mail. · max 150 |
options.consentValuesfacultatif | string[] | Com uma coluna `consent`: os valores que contam como sim. |
options.consentDeclarationfacultatif | boolean | Sem coluna `consent`: a declaração aceita (obrigatória no start). |
options.smsConsentValuesfacultatif | string[] | Com uma coluna `smsConsent`: os valores que contam como sim. Padrão: sim, s, yes, y, true, 1, x, si, sí, ja. |
options.smsConsentAttestationfacultatif | boolean | A comunidade atesta que coletou o consentimento de SMS de quem tem sim na coluna. A data do start fica gravada (`smsConsentAttestedAt` da importação) em cada consentimento, com origem `import`. Sem a atestação, nenhum sim conta. |
options.whatsappConsentValuesfacultatif | string[] | Com uma coluna `whatsappConsent`: os valores que contam como sim (mesmo padrão do SMS). |
options.whatsappConsentAttestationfacultatif | boolean | A comunidade atesta que coletou o consentimento de WhatsApp de quem tem sim na coluna (`whatsappConsentAttestedAt` da importação, origem `import`). Só para quem a importação cria. |