GET /contacts-schema
Retorna os metadados configuráveis da sua organização: campos personalizados de contato, tags e atendentes elegíveis pra serem donos de carteira.
Útil pra que integrações descubram o que podem mandar em `POST /contacts` sem precisar abrir a UI.
| Campo | Valor |
|---|---|
| URL | https://api.wevi.chat/functions/v1/contacts-schema |
| Método | GET |
| Auth | Authorization: Bearer wevi_SUA_CHAVE |
| Rate limit | 60 req/min por token |
Exemplo
curl https://api.wevi.chat/functions/v1/contacts-schema \
-H "Authorization: Bearer wevi_SUA_CHAVE"
const res = await fetch("https://api.wevi.chat/functions/v1/contacts-schema", {
headers: { "Authorization": "Bearer wevi_SUA_CHAVE" },
});
const meta = await res.json();
Resposta
Sucesso (200)
{
"org": {
"id": "org-uuid",
"name": "Empresa Acme",
"slug": "acme"
},
"custom_fields": [
{
"key": "cpf",
"label": "CPF",
"type": "cpf",
"options": null,
"placeholder": "000.000.000-00"
},
{
"key": "plano_atual",
"label": "Plano atual",
"type": "select",
"options": ["Básico", "Pro", "Ultra"],
"placeholder": null
}
],
"tags": [
{ "id": "uuid-1", "name": "VIP", "color": "#22D650" },
{ "id": "uuid-2", "name": "Trial expirando","color": "#F59E0B" }
],
"assignable_users": [
{ "email": "maria@empresa.com", "name": "Maria Silva", "role": "atendente" },
{ "email": "joao@empresa.com", "name": "João Santos", "role": "admin" }
],
"whatsapp_connections": [
{ "id": "conn-uuid", "display_name": "Vendas Acme", "phone_number_id": "1234567890" }
]
}
Campos da resposta
org — info básica da sua organização (id, name, slug). Útil pra integrações multi-tenant que querem confirmar contra qual org o token resolve.
custom_fields — chaves que você pode mandar em fields no /contacts.
| Subcampo | Descrição |
|---|---|
key |
Identificador da chave (use exatamente assim no fields). |
label |
Nome humano mostrado na UI. |
type |
text, number, select, email, phone, date, cpf, cnpj, boolean, multiselect, rich_text. |
options |
Pra select e multiselect: lista de opções aceitas. null pros outros tipos. |
placeholder |
Hint mostrado na UI. Pode ser null. |
tags — tags existentes na org. Não é obrigatório consultar antes de enviar tags no /contacts (lá novas tags são criadas automaticamente), mas útil pra:
- Mostrar dropdown de tags no seu CRM/automação.
- Conferir se a tag já existe antes de criar variações de nome (ex: "Vip" vs "VIP" são tratadas como a mesma).
assignable_users — atendentes elegíveis a serem dono de carteira. Use o email no campo assigned_user_email do /contacts.
Inclui apenas membros com role admin, editor ou atendente. Membros com role financeiro ficam fora.
whatsapp_connections — conexões WhatsApp Business configuradas na org. Use o id como connection_id em `/send-template` e `/send-message`, sem precisar abrir a UI pra pegar o UUID.
Erros
| Status | error |
|---|---|
| 401 | Missing Authorization header ou Invalid API key |
| 405 | Method not allowed (use GET, não POST) |
| 429 | Too many requests (60 req/min) |
Padrão de uso
Cachear no seu lado
A lista de campos e tags muda raramente. Faça 1 GET no início do seu processo e cache em memória pelo menos por alguns minutos. Não precisa chamar a cada requisição de /contacts.
Construir UI dinâmica de mapeamento
Se você tá fazendo uma integração tipo Zapier/Make, use este endpoint pra montar a tela de "mapear campos do meu CRM nos campos da Wevi". Mostra ao usuário a lista de custom_fields da org dele.