@lionchat/mcp-server 1.24.0 → 1.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/instructions.md +1 -0
- package/dist/docs/resources/best-practices.md +1 -1
- package/dist/docs/resources/data-model.md +32 -2
- package/dist/docs/resources/filtros-e-relatorios.md +2 -1
- package/dist/docs/resources/flowbuilder-design-guide.md +2 -0
- package/dist/docs/resources/kanban-deep-dive.md +31 -0
- package/endpoints.json +419 -14
- package/package.json +1 -1
|
@@ -403,6 +403,7 @@ Antes de escolher a ferramenta, cheque se a intenção bate com a coluna da dire
|
|
|
403
403
|
| Intenção do usuário | Tool certa | Cuidado |
|
|
404
404
|
|---|---|---|
|
|
405
405
|
| Listar / ver não lidas | `lionchat_conversations_list` (`conversation_type: 'unread'`) ou `lionchat_conversations_meta` | NÃO use `lionchat_conversations_unread` — é AÇÃO DE ESCRITA (marca como não-lida) |
|
|
406
|
+
| Ver **uma empresa** (quem trabalha la, anotacoes, conversas) e ligar/tirar contatos | `lionchat_companies_show` + `lionchat_companies_contacts_list` / `_create` / `_destroy`, `lionchat_companies_notes_list`, `lionchat_companies_conversations_list` | Ligar pela ficha: `lionchat_contacts_update` com `company_id` (null tira). Cargo da pessoa = `additional_attributes.job_title`. Escolher a empresa troca o texto `company_name` pelo nome dela |
|
|
406
407
|
| Achar a conversa **de uma pessoa/empresa** (nome, telefone, e-mail, CPF/CNPJ, nº da conversa) | `lionchat_search_list` (`/search/conversations`) ou `lionchat_contacts_search` | RÁPIDO. **NÃO use `lionchat_conversations_search`**: apesar do nome, ele é o legado que procura dentro das mensagens e leva **15 a 22 s** (medido em produção 11/08). O sufixo `_list` aqui é histórico — `lionchat_search_list*` **são buscas**, não listagens; a regra "não baixe tudo com `*_list`" vale para `lionchat_<recurso>_list` |
|
|
407
408
|
| Achar **onde foi dito** algo (palavra dentro da conversa) | `lionchat_search_list_2` (`/search/messages`) | RÁPIDO: índice trigram próprio e teto de tempo em duas fases (2 s / 2 s desde 04/09 — antes a 2ª fase herdava 14 s e o pior caso da seção era 16 s). Estourou as duas, o payload volta com `message_search_interrupted: true` e a lista VAZIA — isso NÃO quer dizer que não existe, quer dizer que não deu tempo: tente de novo. É a substituta certa do `lionchat_conversations_search` |
|
|
408
409
|
| Não sei se o termo é nome de alguém ou algo dito no papo | `lionchat_search_search` (`/search`) | Cobre os dois numa chamada. Opção mais segura quando a intenção é ambígua |
|
|
@@ -385,7 +385,7 @@ Como a coleta de dados/cenários funciona hoje (importante pra diagnosticar "IA
|
|
|
385
385
|
|
|
386
386
|
As instruções aceitam variáveis Liquid `{{ }}` que chegam JÁ PREENCHIDAS com os dados reais do contato/conversa do atendimento — vale pra instrução base do assistente (`config.instructions`) e pra instrução de cada cenário (`scenario.instruction`). O texto é gravado como está (sem sanitização); cap de 20.000 chars na base.
|
|
387
387
|
|
|
388
|
-
- Contato: `{{contact.name}}`, `{{contact.first_name}}`, `{{contact.last_name}}`, `{{contact.email}}`, `{{contact.phone}}`, `{{contact.cpf}}`, `{{contact.cnpj}}`, `{{contact.rg}}`, `{{contact.date_of_birth}}`, `{{contact.profession}}`, `{{contact.address.city}}` (e `.cep`/`.street`/`.number`/`.neighborhood`/`.state`...), `{{contact.custom_attribute.<chave>}}`.
|
|
388
|
+
- Contato: `{{contact.name}}`, `{{contact.first_name}}`, `{{contact.last_name}}`, `{{contact.email}}`, `{{contact.phone}}`, `{{contact.cpf}}`, `{{contact.cnpj}}`, `{{contact.rg}}`, `{{contact.date_of_birth}}`, `{{contact.profession}}`, `{{contact.company_name}}` (Empresa), `{{contact.job_title}}` (Cargo), `{{contact.address.city}}` (e `.cep`/`.street`/`.number`/`.neighborhood`/`.state`...), `{{contact.custom_attribute.<chave>}}`.
|
|
389
389
|
- Conversa: `{{conversation.display_id}}`, `{{conversation.custom_attribute.<chave>}}`.
|
|
390
390
|
- Variável sem valor sai vazia (não quebra). Texto SEM `{{` sai idêntico (preserva o cache do prompt) — só use variável quando agregar. Erro de digitação (filtro inválido, `{{` sem fechar) degrada suave: o pedaço com erro sai vazio e o resto das variáveis continua resolvendo (exceção: bloco `{% %}` sem fechar ainda cai pra texto cru).
|
|
391
391
|
- Conta (2026-07): `{{account.custom_attribute.<chave>}}` (slogan, endereço...) AGORA resolve nas instruções e cenários — MAS só os atributos de conta que você DEFINIU (via `account_variables_create`); campos internos de faturamento e secrets NUNCA aparecem no autocomplete nem resolvem. O editor de Instruções/Cenários já sugere essas variáveis de conta ao digitar `{{`.
|
|
@@ -149,7 +149,12 @@ Company
|
|
|
149
149
|
├── id (PK)
|
|
150
150
|
├── account_id (FK)
|
|
151
151
|
├── name
|
|
152
|
-
|
|
152
|
+
├── domain
|
|
153
|
+
├── description
|
|
154
|
+
├── contacts_count
|
|
155
|
+
├── avatar (foto)
|
|
156
|
+
├── additional_attributes (jsonb: legal_name, cnpj, phone, email, address{...}, social_profiles{...}; 2026-09-25)
|
|
157
|
+
└── last_activity_at (ultima vez que um contato da empresa teve atividade; 2026-09-25)
|
|
153
158
|
|
|
154
159
|
AttributeChange (histórico de alterações de atributo — 2026-09-11)
|
|
155
160
|
├── id (PK)
|
|
@@ -173,9 +178,34 @@ não gera; chaves protegidas (rastreio `utm_*`/`gclid`, `waha_*`, `eclinica_*`,
|
|
|
173
178
|
nascimento e documentos vêm mascarados (`masked: true`) para quem não é administrador. Retenção 180 dias.
|
|
174
179
|
|
|
175
180
|
**`additional_attributes` vs `custom_attributes` no Contato:**
|
|
176
|
-
- `additional_attributes` (jsonb): campos do sistema porém **EDITÁVEIS via API** (`permitted_params` permite `additional_attributes: {}`). Guarda chaves padrão como `city`, `
|
|
181
|
+
- `additional_attributes` (jsonb): campos do sistema porém **EDITÁVEIS via API** (`permitted_params` permite `additional_attributes: {}`). Guarda chaves padrão como `city`, `company_name` (o campo "Empresa" da ficha), `job_title` (o "Cargo", 2026-09-25) e `country_code`. NÃO é não-editável.
|
|
177
182
|
- `custom_attributes` (jsonb): dado de negócio livre, definido pelo cliente via Atributos Customizados.
|
|
178
183
|
|
|
184
|
+
**Empresas (2026-09-25):** o contato pode estar ligado a UMA empresa (`company_id`). Ligar/tirar:
|
|
185
|
+
`lionchat_contacts_update` com `company_id` (empresa da mesma conta; vazio/null tira; se a chave nao for
|
|
186
|
+
enviada nada muda) ou `lionchat_companies_contacts_create` / `_destroy`. Regra do texto
|
|
187
|
+
`additional_attributes.company_name`: escolher a empresa faz ele virar o nome da empresa; tirar so apaga se
|
|
188
|
+
ele ainda era o nome dela; renomear a empresa so troca nos contatos que ainda tinham o nome antigo. **Empresa e
|
|
189
|
+
vinculo sao SEMPRE manuais** (25/09): o sistema NAO cria empresa nem vincula contato pelo dominio do e-mail.
|
|
190
|
+
**Teto: 100 contatos por empresa** — o 101o e recusado (422, "Esta empresa ja tem 100 contatos...") por qualquer
|
|
191
|
+
caminho (ficha, `lionchat_companies_contacts_create`, `lionchat_contacts_update`/`_create` com `company_id`);
|
|
192
|
+
tire alguem antes de colocar outro. O cargo da
|
|
193
|
+
pessoa na empresa e `additional_attributes.job_title`. A pagina da empresa junta os contatos
|
|
194
|
+
(`lionchat_companies_contacts_list`), as anotacoes (`lionchat_companies_notes_list`: as da PROPRIA empresa,
|
|
195
|
+
`kind: company`, + as dos contatos, `kind: contact`), as conversas (`lionchat_companies_conversations_list`,
|
|
196
|
+
filtradas pelo que o usuario pode ver), os documentos de todos os contatos (`lionchat_companies_documents_list`,
|
|
197
|
+
so leitura, cada item com `contacts[]` — o mesmo arquivo mandado a varios contatos vem UMA vez) e os compromissos
|
|
198
|
+
(`lionchat_companies_tasks_list`) e os cards do Kanban dos contatos (`lionchat_companies_kanban_items_list`, cada
|
|
199
|
+
card com `contacts[{id,name}]`, so os que o usuario ve no quadro). No card do quadro,
|
|
200
|
+
`conversation.contact.company_id`/`company_name` dizem a empresa do contato do card. Contratos dos contatos: `lionchat_signature_envelopes_list` com `company_id`.
|
|
201
|
+
Anotacao da empresa: `lionchat_companies_notes_create` / `_update` / `_destroy` (`{note:{content}}`; qualquer
|
|
202
|
+
atendente). Cadastro da empresa (25/09): `lionchat_companies_create`/`_update` aceitam
|
|
203
|
+
`additional_attributes` com `legal_name`, `cnpj` (validado; grava so digitos), `phone`, `email`,
|
|
204
|
+
`address{cep,street,number,complement,neighborhood,city,state,country}` e
|
|
205
|
+
`social_profiles{linkedin,facebook,instagram,telegram,tiktok,twitter,github}`. MESCLA: mande so o que muda;
|
|
206
|
+
valor vazio apaga aquela chave. Excluir empresa: so administrador; os contatos ficam, so deixam de estar na empresa (as anotacoes da
|
|
207
|
+
empresa vao junto).
|
|
208
|
+
|
|
179
209
|
**Dados cadastrais (`additional_attributes.cadastral`):** CPF, CNPJ, RG, passaporte, nascimento,
|
|
180
210
|
gênero, estado civil, profissão e endereço completo moram em `additional_attributes->cadastral`.
|
|
181
211
|
São **IMUTÁVEIS por padrão** (primeira escrita vale) — alterar exige `force_update: true`, que SÓ
|
|
@@ -86,7 +86,8 @@ Mesmo shape de condição. 15/página.
|
|
|
86
86
|
| attribute_key | Operadores |
|
|
87
87
|
|---|---|
|
|
88
88
|
| `id` (id interno do contato) | equal_to, not_equal_to |
|
|
89
|
-
| `name`, `email`, `identifier`, `city`, `
|
|
89
|
+
| `name`, `email`, `identifier`, `city`, `company_name` (Empresa), `job_title` (Cargo), `profession` | equal_to, not_equal_to, contains, does_not_contain |
|
|
90
|
+
| `company` | **campo ANTIGO — nada grava nele, nunca casa. Use `company_name`** (2026-09-25). Continua aceito só para não quebrar regras antigas |
|
|
90
91
|
| `phone_number` | + starts_with (busca por DDD/prefixo) — **corrigido na atualização de 26/07/2026**; em instalação anterior devolve SEMPRE lista vazia (virava igualdade exata). Vazio com prefixo que existe = instalação antiga. **`equal_to`/`not_equal_to` casam as DUAS formas do celular BR (com e sem o 9º dígito) desde 05/09/2026** — mande `+5541999887766` ou `+554199887766`, os dois acham a mesma ficha; `not_equal_to` exclui as duas. Termo que não é celular BR completo (fixo, estrangeiro, trecho) segue exato |
|
|
91
92
|
| `cpf`, `cnpj`, `rg` (cadastral) | equal_to, not_equal_to, contains, does_not_contain, is_present, is_not_present |
|
|
92
93
|
| `country_code` | equal_to, not_equal_to |
|
|
@@ -606,6 +606,8 @@ o botão "Usar variável" ao lado do campo alterna lista fixa ↔ variável.
|
|
|
606
606
|
|
|
607
607
|
**Coerção por TIPO (2026-07-29):** em `attr_source: 'contact'|'conversation'`, o `attr_value` de atributo personalizado é coagido pelo tipo da definição antes de gravar: número/moeda/porcentagem viram numérico ("1.234,56" → 1234.56; inteiro fica inteiro), checkbox aceita sim/não/true/false e grava BOOLEANO, lista casa caixa-insensível e grava a opção canônica, data aceita DD/MM/AAAA ou ISO, hora aceita "14:30"/"14h30". Valor irreconhecível grava como veio e o passo mostra nota âmbar no histórico. Card NÃO coage (atributo de card não tem definição tipada no backend).
|
|
608
608
|
|
|
609
|
+
**Empresa e Cargo (2026-09-25):** `contact.company_name` e `contact.job_title` valem em CONDIÇÃO (`attr_source: 'contact'`, `attr_key` igual ao path), em filtro de regras e como variável (`{{contact.company_name}}`, `{{contact.job_title}}`). São SÓ LEITURA: a ação "Alterar atributo do contato" NÃO grava esses dois (o texto Empresa anda junto com a empresa vinculada — para ligar a empresa use `lionchat_contacts_update` com `company_id`).
|
|
610
|
+
|
|
609
611
|
**Campos NATIVOS do contato (2026-07-29):** com `attr_source: 'contact'`, `attr_key` também aceita os paths canônicos `contact.name`, `contact.email`, `contact.cpf`, `contact.cnpj`, `contact.rg`, `contact.passport`, `contact.date_of_birth`, `contact.gender`, `contact.marital_status`, `contact.profession` e `contact.address.{cep,street,number,complement,neighborhood,city,state,country}` — gravam na ficha nativa do contato (não em custom_attributes). Regras: telefone/identifier/etiquetas NÃO são aceitos (mapa fechado — chave fora dele vira atributo personalizado comum); documentos, nascimento, gênero e **e-mail** só preenchem campo VAZIO; nome/profissão/estado civil/endereço sobrescrevem; valor em branco nunca grava; gênero aceita `m|f|o|na` e estado civil `solteiro|casado|uniao_estavel|divorciado|separado|viuvo`; data de nascimento em `dd/mm/aaaa` ou `aaaa-mm-dd`. Recusas aparecem no histórico de execução (passo 'skipped'/'error' com mensagem).
|
|
610
612
|
|
|
611
613
|
**Campos NATIVOS do contato em CONDIÇÃO (2026-08-13):** o bloco de Condições e o filtro do gatilho de data passaram a LER os mesmos paths nativos (`contact.name`, `contact.cpf`, `contact.marital_status`, `contact.address.city`, ...) na fonte `contact` — antes só liam atributo personalizado e o campo da ficha voltava vazio, jogando tudo na saída padrão em silêncio. Use com `is_empty`/`is_not_empty` para montar "o CPF está preenchido?". Aceita a forma curta (`contact.cpf`) e a longa (`contact.cadastral.cpf`). **`contact.label` NÃO é aceito** em condição (consulta cara em caminho reativo). **Gênero e estado civil são listas fechadas**: compare com o valor canônico (`m|f|o|na`, `solteiro|casado|uniao_estavel|divorciado|separado|viuvo`) — comparar com "Masculino" nunca casa.
|
|
@@ -716,3 +716,34 @@ arquivo, aponta as colunas e ainda oferece uma planilha de exemplo pra baixar.
|
|
|
716
716
|
Olhe `item_details.status_changed_at` do card: ele é comparado como **texto** contra a janela do
|
|
717
717
|
relatório, e tem que terminar em `Z`. `2026-08-01T03:00:00Z` é 1º de agosto em Brasília; gravar
|
|
718
718
|
`2026-08-01T00:00:00Z` joga a venda pra julho.
|
|
719
|
+
|
|
720
|
+
---
|
|
721
|
+
|
|
722
|
+
## Lançamento retroativo — marcar ganho/perda com data passada (2026-09-25)
|
|
723
|
+
|
|
724
|
+
Serve para o caso do dia a dia: o negócio fechou semanas atrás e só agora alguém registra. Sem isso, o
|
|
725
|
+
relatório contaria a venda no mês em que o registro foi feito, não no mês em que ela aconteceu.
|
|
726
|
+
|
|
727
|
+
Na tela: ao marcar **Ganho** ou **Perdido** aparece a chavinha **"Lançamento retroativo"**; ligando, abre
|
|
728
|
+
um campo de data. Pela API/MCP é a chave `retroativo_em` dentro de `item_details`, no
|
|
729
|
+
`lionchat_kanban_items_update`:
|
|
730
|
+
|
|
731
|
+
```json
|
|
732
|
+
{ "item_details": { "status": "won", "win_reason": "indicacao", "retroativo_em": "2026-08-05" } }
|
|
733
|
+
```
|
|
734
|
+
|
|
735
|
+
| Regra | Detalhe |
|
|
736
|
+
|---|---|
|
|
737
|
+
| Quando vale | SÓ junto de um `status` `won`/`lost` que **muda** o status. Card que já está ganho ignora a data. |
|
|
738
|
+
| O que ela faz | Decide o carimbo `item_details.status_changed_at` — o que TODOS os relatórios contam. |
|
|
739
|
+
| O que ela NÃO faz | **Não é gravada no card.** Não muda conversão para Meta/GA4/Google Ads: essas continuam saindo com a data de hoje. |
|
|
740
|
+
| Data futura ou ilegível | Recusada com **422** (a regra vive no servidor, não na tela — API e MCP passam por ela). |
|
|
741
|
+
| Data anterior à criação do card | Permitida. |
|
|
742
|
+
| Só no atualizar | No `lionchat_kanban_items_create` a chave é **descartada**. Para importar venda antiga já fechada, use a Conciliação de vendas (seção acima), que foi feita para isso. |
|
|
743
|
+
|
|
744
|
+
**Corrigir uma data lançada errado:** marcar `won` de novo por cima **não muda nada** (o carimbo só é
|
|
745
|
+
escrito quando o status muda). Mande `status: "open"` — isso apaga o carimbo — e depois `won`/`lost`
|
|
746
|
+
com o `retroativo_em` certo.
|
|
747
|
+
|
|
748
|
+
A hora é montada em **UTC**, com o horário atual no dia escolhido. É o mesmo motivo do diagnóstico
|
|
749
|
+
acima: o relatório compara o carimbo como texto, então a data escolhida tem que ser a data contada.
|
package/endpoints.json
CHANGED
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
"method": "POST",
|
|
174
174
|
"path": "/api/v1/accounts/{account_id}/contacts",
|
|
175
175
|
"title": "Criar Contato",
|
|
176
|
-
"description": "Cria um contato. Nenhum campo e estritamente obrigatorio (recomendado phone_number ou email). Aceita name, email, phone_number, identifier, additional_attributes, custom_attributes, blocked. TELEFONE UNICO POR CONTA (trava no BANCO desde 01/09/2026, como e-mail e identifier): phone_number ja cadastrado em outro contato da conta = 422 'phone_number has already been taken' — inclusive em chamadas paralelas. Procure antes com contacts_search (acha com e sem o 9o digito) e use contacts_update no que existe.\n\nSE VOLTAR 422 com attributes:['phone_number']: o contato JA EXISTE — na forma exata OU na outra forma do nono digito. Nao tente criar de novo trocando a forma do numero (a recusa protege contra ficha em dobro): busque com lionchat_contacts_search e use contacts_update. Case os 'attributes' da resposta, nunca o texto da mensagem (ela sai no idioma padrao da instalacao, em ingles).",
|
|
176
|
+
"description": "Cria um contato. Nenhum campo e estritamente obrigatorio (recomendado phone_number ou email). Aceita name, email, phone_number, identifier, additional_attributes, custom_attributes, blocked. TELEFONE UNICO POR CONTA (trava no BANCO desde 01/09/2026, como e-mail e identifier): phone_number ja cadastrado em outro contato da conta = 422 'phone_number has already been taken' — inclusive em chamadas paralelas. Procure antes com contacts_search (acha com e sem o 9o digito) e use contacts_update no que existe.\n\nSE VOLTAR 422 com attributes:['phone_number']: o contato JA EXISTE — na forma exata OU na outra forma do nono digito. Nao tente criar de novo trocando a forma do numero (a recusa protege contra ficha em dobro): busque com lionchat_contacts_search e use contacts_update. Case os 'attributes' da resposta, nunca o texto da mensagem (ela sai no idioma padrao da instalacao, em ingles). EMPRESA (2026-09-25): aceita company_id (ver param); o contato devolve company_id. Cargo da pessoa = additional_attributes.job_title.",
|
|
177
177
|
"category": "Contatos",
|
|
178
178
|
"params": [
|
|
179
179
|
{
|
|
@@ -231,6 +231,13 @@
|
|
|
231
231
|
"location": "body",
|
|
232
232
|
"required": false,
|
|
233
233
|
"description": "ID da sessão"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"name": "company_id",
|
|
237
|
+
"type": "integer",
|
|
238
|
+
"location": "body",
|
|
239
|
+
"required": false,
|
|
240
|
+
"description": "Empresa da mesma conta a ligar ao contato (null/vazio tira da empresa; sem a chave nada muda). Escolher a empresa faz additional_attributes.company_name virar o nome dela. Empresa de outra conta = 404. Empresa com 100 contatos = 422 (teto)."
|
|
234
241
|
}
|
|
235
242
|
],
|
|
236
243
|
"returns": "contato criado (com novo ID)",
|
|
@@ -283,7 +290,7 @@
|
|
|
283
290
|
"method": "PATCH",
|
|
284
291
|
"path": "/api/v1/accounts/{account_id}/contacts/{id}",
|
|
285
292
|
"title": "Atualizar Contato",
|
|
286
|
-
"description": "Atualiza um contato. Aceita name, email, phone_number, identifier, custom_attributes, additional_attributes, blocked, avatar/avatar_url. NUNCA sobrescreva phone_number/email ja preenchido sem confirmacao. TELEFONE UNICO POR CONTA (trava no banco desde 01/09/2026): trocar phone_number para um numero que ja e de outro contato da conta = 422 'phone_number has already been taken'.",
|
|
293
|
+
"description": "Atualiza um contato. Aceita name, email, phone_number, identifier, custom_attributes, additional_attributes, blocked, avatar/avatar_url. NUNCA sobrescreva phone_number/email ja preenchido sem confirmacao. TELEFONE UNICO POR CONTA (trava no banco desde 01/09/2026): trocar phone_number para um numero que ja e de outro contato da conta = 422 'phone_number has already been taken'. EMPRESA (2026-09-25): aceita company_id (ver param); o contato devolve company_id. Cargo da pessoa = additional_attributes.job_title.",
|
|
287
294
|
"category": "Contatos",
|
|
288
295
|
"params": [
|
|
289
296
|
{
|
|
@@ -348,6 +355,13 @@
|
|
|
348
355
|
"location": "body",
|
|
349
356
|
"required": false,
|
|
350
357
|
"description": "Bloquear contato"
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"name": "company_id",
|
|
361
|
+
"type": "integer",
|
|
362
|
+
"location": "body",
|
|
363
|
+
"required": false,
|
|
364
|
+
"description": "Empresa da mesma conta a ligar ao contato (null/vazio tira da empresa; sem a chave nada muda). Escolher a empresa faz additional_attributes.company_name virar o nome dela. Empresa de outra conta = 404. Empresa com 100 contatos = 422 (teto)."
|
|
351
365
|
}
|
|
352
366
|
],
|
|
353
367
|
"returns": "contato atualizado",
|
|
@@ -698,7 +712,7 @@
|
|
|
698
712
|
"method": "POST",
|
|
699
713
|
"path": "/api/v1/accounts/{account_id}/contacts/filter",
|
|
700
714
|
"title": "Filtrar Contatos",
|
|
701
|
-
"description": "Filtra contatos com condicoes avancadas (payload de condicoes). 15/pagina.\n\nCHAVES FILTRAVEIS: name, email, identifier (equal_to/not_equal_to/contains/does_not_contain — match parcial case-insensitive); phone_number (+starts_with); country_code, city, company; cpf, cnpj, rg, profession (cadastral; cpf/cnpj/rg aceitam is_present/is_not_present); labels; created_at, last_activity_at (is_greater_than/is_less_than/days_before); blocked (equal_to true/false); QUALQUER outra chave = atributo personalizado do contato.\n\nREGISTROS VINCULADOS (acha o contato pelo que aconteceu com ele): attribute_key 'conversation_search' (conversa vinculada: conversation_status/conversation_labels/conversation_inbox_id), condicoes com custom_attribute_type 'conversation_attribute' (atributo da conversa vinculada) e attribute_key 'kanban_card' (card vinculado: card_funnel_id/card_stage/card_priority/card_status). Combinaveis com E/OU.\n\nCada condicao: {attribute_key, filter_operator, values[], query_operator:'and'|'or', custom_attribute_type?}. Operador fora da lista da chave = 422. [2026-07-25] Nova chave id (id interno do contato, equal_to/not_equal_to) — serve pra exportar/checar UM contato especifico. NOTA 18/08: data FIXA com is_greater_than/is_less_than corta o dia no FUSO DA CONTA (padrao America/Sao_Paulo), nao mais em UTC — mesmo criterio das datas relativas.\n\nTELEFONE COM E SEM O 9 (desde 05/09/2026): phone_number com equal_to/not_equal_to casa as DUAS formas do celular brasileiro (mande +5541999887766 ou +554199887766 — acham a mesma ficha; not_equal_to exclui as duas). Valor formatado ('(41) 99988-7766') tambem casa. Telefone fixo, estrangeiro ou trecho segue exato. ATENCAO: 'Selecionar todos' + excluir sobre um filtro de telefone apaga as 2 fichas da mesma pessoa (decisao do dono, 05/09).",
|
|
715
|
+
"description": "Filtra contatos com condicoes avancadas (payload de condicoes). 15/pagina.\n\nCHAVES FILTRAVEIS: name, email, identifier (equal_to/not_equal_to/contains/does_not_contain — match parcial case-insensitive); phone_number (+starts_with); country_code, city, company_name (Empresa), job_title (Cargo) [company = campo antigo, nunca casa]; cpf, cnpj, rg, profession (cadastral; cpf/cnpj/rg aceitam is_present/is_not_present); labels; created_at, last_activity_at (is_greater_than/is_less_than/days_before); blocked (equal_to true/false); QUALQUER outra chave = atributo personalizado do contato.\n\nREGISTROS VINCULADOS (acha o contato pelo que aconteceu com ele): attribute_key 'conversation_search' (conversa vinculada: conversation_status/conversation_labels/conversation_inbox_id), condicoes com custom_attribute_type 'conversation_attribute' (atributo da conversa vinculada) e attribute_key 'kanban_card' (card vinculado: card_funnel_id/card_stage/card_priority/card_status). Combinaveis com E/OU.\n\nCada condicao: {attribute_key, filter_operator, values[], query_operator:'and'|'or', custom_attribute_type?}. Operador fora da lista da chave = 422. [2026-07-25] Nova chave id (id interno do contato, equal_to/not_equal_to) — serve pra exportar/checar UM contato especifico. NOTA 18/08: data FIXA com is_greater_than/is_less_than corta o dia no FUSO DA CONTA (padrao America/Sao_Paulo), nao mais em UTC — mesmo criterio das datas relativas.\n\nTELEFONE COM E SEM O 9 (desde 05/09/2026): phone_number com equal_to/not_equal_to casa as DUAS formas do celular brasileiro (mande +5541999887766 ou +554199887766 — acham a mesma ficha; not_equal_to exclui as duas). Valor formatado ('(41) 99988-7766') tambem casa. Telefone fixo, estrangeiro ou trecho segue exato. ATENCAO: 'Selecionar todos' + excluir sobre um filtro de telefone apaga as 2 fichas da mesma pessoa (decisao do dono, 05/09).",
|
|
702
716
|
"category": "Contatos",
|
|
703
717
|
"params": [
|
|
704
718
|
{
|
|
@@ -3274,7 +3288,7 @@
|
|
|
3274
3288
|
"type": "object",
|
|
3275
3289
|
"location": "body",
|
|
3276
3290
|
"required": false,
|
|
3277
|
-
"description": "Objeto com os detalhes do card. MESCLA SO NO 1o NIVEL: cada chave enviada troca a chave inteira no card; as nao enviadas ficam. Lista FECHADA (outras chaves sao descartadas em silencio): title, description, status, reason, win_reason, loss_reason, attributed_to, duplicated_from_id, priority, value (NUMERO; texto de numero como \"1500.5\" e convertido, \"R$ 1.500,00\" e recusado com 422), currency, custom_attributes, offers, closed_offers, closed_offer, deadline_at, scheduling_type, scheduled_at, conversation_id, automations, notes. custom_attributes = campos da aba Campos do card: LISTA [{name, type, value}] onde name+type batem EXATAMENTE com a definicao da CONTA (lionchat_kanban_config_list -> global_custom_attributes). Ex.: [{\"name\": \"Origem do Lead\", \"type\": \"string\", \"value\": \"Google\"}]. A lista e TROCADA inteira: leia o card com lionchat_kanban_items_show e reenvie TODOS os campos. Objeto {chave: valor} no lugar da lista APAGA todos os campos do card. notes e offers tambem sao listas trocadas inteiras. Motivo de ganho/perda: status \"won\"/\"lost\" + win_reason/loss_reason = o id (TEXTO) de um motivo de kanban_config.win_reasons/loss_reasons + reason = o titulo dele. Motivo livre (fora da lista): win_reason/loss_reason nulo e o texto em reason. Ex.: {\"status\": \"lost\", \"loss_reason\": \"perda-preco\", \"reason\": \"Preco alto\"}."
|
|
3291
|
+
"description": "Objeto com os detalhes do card. MESCLA SO NO 1o NIVEL: cada chave enviada troca a chave inteira no card; as nao enviadas ficam. Lista FECHADA (outras chaves sao descartadas em silencio): title, description, status, reason, win_reason, loss_reason, attributed_to, duplicated_from_id, priority, value (NUMERO; texto de numero como \"1500.5\" e convertido, \"R$ 1.500,00\" e recusado com 422), currency, custom_attributes, offers, closed_offers, closed_offer, deadline_at, scheduling_type, scheduled_at, conversation_id, automations, notes, retroativo_em. custom_attributes = campos da aba Campos do card: LISTA [{name, type, value}] onde name+type batem EXATAMENTE com a definicao da CONTA (lionchat_kanban_config_list -> global_custom_attributes). Ex.: [{\"name\": \"Origem do Lead\", \"type\": \"string\", \"value\": \"Google\"}]. A lista e TROCADA inteira: leia o card com lionchat_kanban_items_show e reenvie TODOS os campos. Objeto {chave: valor} no lugar da lista APAGA todos os campos do card. notes e offers tambem sao listas trocadas inteiras. Motivo de ganho/perda: status \"won\"/\"lost\" + win_reason/loss_reason = o id (TEXTO) de um motivo de kanban_config.win_reasons/loss_reasons + reason = o titulo dele. Motivo livre (fora da lista): win_reason/loss_reason nulo e o texto em reason. Ex.: {\"status\": \"lost\", \"loss_reason\": \"perda-preco\", \"reason\": \"Preco alto\"}. Lancamento retroativo (marcar o fechamento com data PASSADA): retroativo_em = \"AAAA-MM-DD\" faz o ganho/perda contar no MES ESCOLHIDO em todos os relatorios, em vez do dia de hoje. So funciona JUNTO com um status \"won\"/\"lost\" que MUDA o status do card — card que ja esta ganho ignora a data (pra corrigir uma data lancada errado: mande status \"open\", que apaga o carimbo, e depois \"won\"/\"lost\" com o retroativo_em certo). A chave NAO fica gravada no card: ela so decide o carimbo item_details.status_changed_at, que e o que os relatorios contam. Data FUTURA ou ilegivel = 422. Data anterior a criacao do card e permitida. Vale SO nesta ferramenta — no criar card a chave e descartada. Ex.: {\"status\": \"won\", \"win_reason\": \"indicacao\", \"retroativo_em\": \"2026-08-05\"}."
|
|
3278
3292
|
},
|
|
3279
3293
|
{
|
|
3280
3294
|
"name": "kanban_item.assigned_agents",
|
|
@@ -3316,7 +3330,8 @@
|
|
|
3316
3330
|
"common_use_cases": [
|
|
3317
3331
|
"Edição parcial de item Kanban",
|
|
3318
3332
|
"Alteração de status/estado",
|
|
3319
|
-
"Atualização em massa via automação"
|
|
3333
|
+
"Atualização em massa via automação",
|
|
3334
|
+
"Registrar uma venda fechada no mes passado: status \"won\" + retroativo_em \"AAAA-MM-DD\" (o relatorio conta no mes escolhido)"
|
|
3320
3335
|
],
|
|
3321
3336
|
"related_tools": [
|
|
3322
3337
|
"lionchat_kanban_items_list",
|
|
@@ -11668,7 +11683,7 @@
|
|
|
11668
11683
|
"method": "GET",
|
|
11669
11684
|
"path": "/api/v1/accounts/{account_id}/companies",
|
|
11670
11685
|
"title": "Listar Empresas",
|
|
11671
|
-
"description": "Lista as empresas da conta. meta usa total_count/page.",
|
|
11686
|
+
"description": "Lista as empresas da conta. meta usa total_count/page. Cada empresa traz last_activity_at (ultima atividade dos contatos dela; null = nunca). Excluir empresa (lionchat_companies_destroy) e so para administrador e NAO apaga os contatos.",
|
|
11672
11687
|
"category": "Empresas",
|
|
11673
11688
|
"params": [
|
|
11674
11689
|
{
|
|
@@ -11683,7 +11698,7 @@
|
|
|
11683
11698
|
"type": "string",
|
|
11684
11699
|
"location": "query",
|
|
11685
11700
|
"required": false,
|
|
11686
|
-
"description": "
|
|
11701
|
+
"description": "Ordenacao: name, domain, created_at, contacts_count, last_activity_at (prefixo - = decrescente, ex. -last_activity_at)"
|
|
11687
11702
|
}
|
|
11688
11703
|
],
|
|
11689
11704
|
"returns": "meta (contadores globais) + payload (array de empresas)",
|
|
@@ -11699,7 +11714,7 @@
|
|
|
11699
11714
|
"method": "POST",
|
|
11700
11715
|
"path": "/api/v1/accounts/{account_id}/companies",
|
|
11701
11716
|
"title": "Criar Empresa",
|
|
11702
|
-
"description": "Cria uma empresa. Body exige wrapper company. Aceita name, domain, description, avatar. NAO aceita custom_attributes. ENTERPRISE-only.",
|
|
11717
|
+
"description": "Cria uma empresa. Body exige wrapper company. Aceita name, domain, description, avatar e additional_attributes (cadastro). NAO aceita custom_attributes. ENTERPRISE-only. Empresa so nasce assim (manual): o sistema nao cria empresa pelo dominio do e-mail dos contatos. Cadastro da empresa em additional_attributes: { legal_name (razao social), cnpj (validado; grava so digitos), phone, email, address: {cep, street, number, complement, neighborhood, city, state, country}, social_profiles: {linkedin, facebook, instagram, telegram, tiktok, twitter, github} }. A gravacao MESCLA: mande so o que muda; valor vazio (\"\") apaga aquela chave; chave ausente nao mexe. CNPJ ou e-mail invalido = 422. additional_attributes, address e social_profiles precisam ser OBJETOS (texto ou lista = 422, nada e apagado).",
|
|
11703
11718
|
"category": "Empresas",
|
|
11704
11719
|
"params": [
|
|
11705
11720
|
{
|
|
@@ -11707,7 +11722,7 @@
|
|
|
11707
11722
|
"type": "object",
|
|
11708
11723
|
"location": "body",
|
|
11709
11724
|
"required": true,
|
|
11710
|
-
"description": "Wrapper com { name, domain, description, avatar }"
|
|
11725
|
+
"description": "Wrapper com { name, domain, description, avatar, additional_attributes: { legal_name, cnpj, phone, email, address: {...}, social_profiles: {...} } }"
|
|
11711
11726
|
}
|
|
11712
11727
|
],
|
|
11713
11728
|
"returns": "empresa criado (com novo ID)",
|
|
@@ -11741,14 +11756,18 @@
|
|
|
11741
11756
|
"Verificar estado atual antes de uma ação",
|
|
11742
11757
|
"Mostrar perfil ou ficha de empresa"
|
|
11743
11758
|
],
|
|
11744
|
-
"related_tools": [
|
|
11759
|
+
"related_tools": [
|
|
11760
|
+
"lionchat_companies_contacts_list",
|
|
11761
|
+
"lionchat_companies_conversations_list",
|
|
11762
|
+
"lionchat_companies_notes_list"
|
|
11763
|
+
]
|
|
11745
11764
|
},
|
|
11746
11765
|
{
|
|
11747
11766
|
"id": "lionchat_companies_update",
|
|
11748
11767
|
"method": "PATCH",
|
|
11749
11768
|
"path": "/api/v1/accounts/{account_id}/companies/{id}",
|
|
11750
11769
|
"title": "Atualizar Empresa",
|
|
11751
|
-
"description": "Atualiza dados da empresa.
|
|
11770
|
+
"description": "Atualiza dados da empresa. Suporta atualizacao parcial (PATCH) — so campos enviados sao alterados. Campos suportados: name, domain, description, avatar e additional_attributes (cadastro). Cadastro da empresa em additional_attributes: { legal_name (razao social), cnpj (validado; grava so digitos), phone, email, address: {cep, street, number, complement, neighborhood, city, state, country}, social_profiles: {linkedin, facebook, instagram, telegram, tiktok, twitter, github} }. A gravacao MESCLA: mande so o que muda; valor vazio (\"\") apaga aquela chave; chave ausente nao mexe. CNPJ ou e-mail invalido = 422. additional_attributes, address e social_profiles precisam ser OBJETOS (texto ou lista = 422, nada e apagado).",
|
|
11752
11771
|
"category": "Empresas",
|
|
11753
11772
|
"params": [
|
|
11754
11773
|
{
|
|
@@ -11763,7 +11782,7 @@
|
|
|
11763
11782
|
"type": "object",
|
|
11764
11783
|
"location": "body",
|
|
11765
11784
|
"required": true,
|
|
11766
|
-
"description": "Wrapper com { name, domain, description, avatar }"
|
|
11785
|
+
"description": "Wrapper com { name, domain, description, avatar, additional_attributes: { legal_name, cnpj, phone, email, address: {...}, social_profiles: {...} } }"
|
|
11767
11786
|
}
|
|
11768
11787
|
],
|
|
11769
11788
|
"returns": "empresa atualizado",
|
|
@@ -11851,6 +11870,183 @@
|
|
|
11851
11870
|
],
|
|
11852
11871
|
"related_tools": []
|
|
11853
11872
|
},
|
|
11873
|
+
{
|
|
11874
|
+
"id": "lionchat_companies_contacts_list",
|
|
11875
|
+
"method": "GET",
|
|
11876
|
+
"path": "/api/v1/accounts/{account_id}/companies/{company_id}/contacts",
|
|
11877
|
+
"title": "Contatos da Empresa",
|
|
11878
|
+
"description": "Lista os contatos ligados a UMA empresa, 25 por pagina, ordenados por nome. meta usa count/current_page. Cada contato traz company_id e additional_attributes (company_name = texto 'Empresa', job_title = cargo).",
|
|
11879
|
+
"category": "Empresas",
|
|
11880
|
+
"params": [
|
|
11881
|
+
{
|
|
11882
|
+
"name": "company_id",
|
|
11883
|
+
"type": "integer",
|
|
11884
|
+
"location": "path",
|
|
11885
|
+
"required": true,
|
|
11886
|
+
"description": "ID da empresa"
|
|
11887
|
+
},
|
|
11888
|
+
{
|
|
11889
|
+
"name": "page",
|
|
11890
|
+
"type": "integer",
|
|
11891
|
+
"location": "query",
|
|
11892
|
+
"required": false,
|
|
11893
|
+
"description": "Pagina (padrao: 1)"
|
|
11894
|
+
}
|
|
11895
|
+
],
|
|
11896
|
+
"returns": "meta {count, current_page} + payload (array de contatos)",
|
|
11897
|
+
"common_use_cases": [
|
|
11898
|
+
"Ver quem trabalha numa empresa",
|
|
11899
|
+
"Conferir cargo das pessoas de um cliente"
|
|
11900
|
+
],
|
|
11901
|
+
"related_tools": [
|
|
11902
|
+
"lionchat_companies_show",
|
|
11903
|
+
"lionchat_companies_contacts_create",
|
|
11904
|
+
"lionchat_companies_contacts_destroy"
|
|
11905
|
+
]
|
|
11906
|
+
},
|
|
11907
|
+
{
|
|
11908
|
+
"id": "lionchat_companies_contacts_create",
|
|
11909
|
+
"method": "POST",
|
|
11910
|
+
"path": "/api/v1/accounts/{account_id}/companies/{company_id}/contacts",
|
|
11911
|
+
"title": "Colocar Contato na Empresa",
|
|
11912
|
+
"description": "Liga um contato da conta a esta empresa (se ele estava em outra, MOVE). O texto additional_attributes.company_name do contato passa a ser o nome da empresa. Para achar o contato use lionchat_contacts_search. Contato de outra conta = 404. TETO: 100 contatos por empresa (25/09) — o 101o e recusado com 422 'Esta empresa ja tem 100 contatos, o maximo permitido...'; tire alguem (lionchat_companies_contacts_destroy) antes de colocar outro. Empresa e vinculo sao SEMPRE manuais: o sistema NAO cria empresa nem vincula contato pelo dominio do e-mail.",
|
|
11913
|
+
"category": "Empresas",
|
|
11914
|
+
"params": [
|
|
11915
|
+
{
|
|
11916
|
+
"name": "company_id",
|
|
11917
|
+
"type": "integer",
|
|
11918
|
+
"location": "path",
|
|
11919
|
+
"required": true,
|
|
11920
|
+
"description": "ID da empresa"
|
|
11921
|
+
},
|
|
11922
|
+
{
|
|
11923
|
+
"name": "contact_id",
|
|
11924
|
+
"type": "integer",
|
|
11925
|
+
"location": "body",
|
|
11926
|
+
"required": true,
|
|
11927
|
+
"description": "ID do contato a colocar na empresa"
|
|
11928
|
+
}
|
|
11929
|
+
],
|
|
11930
|
+
"returns": "payload (contato atualizado)",
|
|
11931
|
+
"common_use_cases": [
|
|
11932
|
+
"Organizar contatos por cliente",
|
|
11933
|
+
"Corrigir a empresa de um contato"
|
|
11934
|
+
],
|
|
11935
|
+
"related_tools": [
|
|
11936
|
+
"lionchat_contacts_search",
|
|
11937
|
+
"lionchat_companies_contacts_list",
|
|
11938
|
+
"lionchat_contacts_update"
|
|
11939
|
+
]
|
|
11940
|
+
},
|
|
11941
|
+
{
|
|
11942
|
+
"id": "lionchat_companies_contacts_destroy",
|
|
11943
|
+
"method": "DELETE",
|
|
11944
|
+
"path": "/api/v1/accounts/{account_id}/companies/{company_id}/contacts/{contact_id}",
|
|
11945
|
+
"title": "Tirar Contato da Empresa",
|
|
11946
|
+
"description": "Tira o contato da empresa (o contato NAO e excluido). O texto company_name so e apagado se ainda era exatamente o nome da empresa.",
|
|
11947
|
+
"category": "Empresas",
|
|
11948
|
+
"params": [
|
|
11949
|
+
{
|
|
11950
|
+
"name": "company_id",
|
|
11951
|
+
"type": "integer",
|
|
11952
|
+
"location": "path",
|
|
11953
|
+
"required": true,
|
|
11954
|
+
"description": "ID da empresa"
|
|
11955
|
+
},
|
|
11956
|
+
{
|
|
11957
|
+
"name": "contact_id",
|
|
11958
|
+
"type": "integer",
|
|
11959
|
+
"location": "path",
|
|
11960
|
+
"required": true,
|
|
11961
|
+
"description": "ID do contato"
|
|
11962
|
+
}
|
|
11963
|
+
],
|
|
11964
|
+
"returns": "200 OK",
|
|
11965
|
+
"common_use_cases": [
|
|
11966
|
+
"Pessoa saiu da empresa",
|
|
11967
|
+
"Contato ligado errado pelo dominio do e-mail"
|
|
11968
|
+
],
|
|
11969
|
+
"related_tools": [
|
|
11970
|
+
"lionchat_companies_contacts_list"
|
|
11971
|
+
]
|
|
11972
|
+
},
|
|
11973
|
+
{
|
|
11974
|
+
"id": "lionchat_companies_notes_list",
|
|
11975
|
+
"method": "GET",
|
|
11976
|
+
"path": "/api/v1/accounts/{account_id}/companies/{company_id}/notes",
|
|
11977
|
+
"title": "Anotacoes da Empresa",
|
|
11978
|
+
"description": "Anotacoes da empresa, mais nova primeiro: as da PROPRIA empresa (kind 'company', criadas com lionchat_companies_notes_create) + as ultimas 50 feitas nos contatos dela (kind 'contact', com contact {id, name, thumbnail}). Cada item traz id, kind, content, user, created_at.",
|
|
11979
|
+
"category": "Empresas",
|
|
11980
|
+
"params": [
|
|
11981
|
+
{
|
|
11982
|
+
"name": "company_id",
|
|
11983
|
+
"type": "integer",
|
|
11984
|
+
"location": "path",
|
|
11985
|
+
"required": true,
|
|
11986
|
+
"description": "ID da empresa"
|
|
11987
|
+
}
|
|
11988
|
+
],
|
|
11989
|
+
"returns": "payload (array de anotacoes; kind = company ou contact)",
|
|
11990
|
+
"common_use_cases": [
|
|
11991
|
+
"Resumo do relacionamento com um cliente",
|
|
11992
|
+
"Preparar reuniao com a empresa"
|
|
11993
|
+
],
|
|
11994
|
+
"related_tools": [
|
|
11995
|
+
"lionchat_companies_notes_create",
|
|
11996
|
+
"lionchat_contacts_notes_show",
|
|
11997
|
+
"lionchat_companies_conversations_list"
|
|
11998
|
+
]
|
|
11999
|
+
},
|
|
12000
|
+
{
|
|
12001
|
+
"id": "lionchat_companies_conversations_list",
|
|
12002
|
+
"method": "GET",
|
|
12003
|
+
"path": "/api/v1/accounts/{account_id}/companies/{company_id}/conversations",
|
|
12004
|
+
"title": "Conversas da Empresa",
|
|
12005
|
+
"description": "Ultimas 20 conversas dos contatos da empresa, da mais recente para a mais antiga, filtradas pelo que o usuario do token pode ver (mesma regra da lista de conversas).",
|
|
12006
|
+
"category": "Empresas",
|
|
12007
|
+
"params": [
|
|
12008
|
+
{
|
|
12009
|
+
"name": "company_id",
|
|
12010
|
+
"type": "integer",
|
|
12011
|
+
"location": "path",
|
|
12012
|
+
"required": true,
|
|
12013
|
+
"description": "ID da empresa"
|
|
12014
|
+
}
|
|
12015
|
+
],
|
|
12016
|
+
"returns": "payload (array de conversas)",
|
|
12017
|
+
"common_use_cases": [
|
|
12018
|
+
"Historico de atendimento de um cliente",
|
|
12019
|
+
"Ver se alguem da empresa falou recentemente"
|
|
12020
|
+
],
|
|
12021
|
+
"related_tools": [
|
|
12022
|
+
"lionchat_companies_notes_list",
|
|
12023
|
+
"lionchat_conversations_show"
|
|
12024
|
+
]
|
|
12025
|
+
},
|
|
12026
|
+
{
|
|
12027
|
+
"id": "lionchat_companies_avatar_destroy",
|
|
12028
|
+
"method": "DELETE",
|
|
12029
|
+
"path": "/api/v1/accounts/{account_id}/companies/{id}/avatar",
|
|
12030
|
+
"title": "Tirar Foto da Empresa",
|
|
12031
|
+
"description": "Remove a foto da empresa. Para trocar a foto, envie avatar (arquivo) no lionchat_companies_update.",
|
|
12032
|
+
"category": "Empresas",
|
|
12033
|
+
"params": [
|
|
12034
|
+
{
|
|
12035
|
+
"name": "id",
|
|
12036
|
+
"type": "integer",
|
|
12037
|
+
"location": "path",
|
|
12038
|
+
"required": true,
|
|
12039
|
+
"description": "ID da empresa"
|
|
12040
|
+
}
|
|
12041
|
+
],
|
|
12042
|
+
"returns": "payload (empresa)",
|
|
12043
|
+
"common_use_cases": [
|
|
12044
|
+
"Foto errada puxada do site da empresa"
|
|
12045
|
+
],
|
|
12046
|
+
"related_tools": [
|
|
12047
|
+
"lionchat_companies_update"
|
|
12048
|
+
]
|
|
12049
|
+
},
|
|
11854
12050
|
{
|
|
11855
12051
|
"id": "lionchat_offers_list",
|
|
11856
12052
|
"method": "GET",
|
|
@@ -25845,7 +26041,7 @@
|
|
|
25845
26041
|
"method": "GET",
|
|
25846
26042
|
"path": "/api/v1/accounts/{account_id}/contacts/{contact_id}/documents",
|
|
25847
26043
|
"title": "Documentos do Contato",
|
|
25848
|
-
"description": "Central de arquivos do contato: uploads diretos + espelho dos anexos dos cards Kanban + das conversas (só imagem/documento). Dedup por arquivo.",
|
|
26044
|
+
"description": "Central de arquivos do contato: uploads diretos + espelho dos anexos dos cards Kanban + das conversas (só imagem/documento). Dedup por arquivo. (25/09) O mesmo arquivo em varias origens vem UMA vez (representado pelo upload da ficha, se houver); cada item traz contacts [{id,name}]. Contrato assinado so aparece para quem pode ver contratos; arquivo de compromisso particular de outra pessoa nao aparece. mirror aceita tambem anexo de compromisso e de contrato.",
|
|
25849
26045
|
"category": "Documentos do Contato",
|
|
25850
26046
|
"params": [
|
|
25851
26047
|
{
|
|
@@ -33982,7 +34178,7 @@
|
|
|
33982
34178
|
"method": "GET",
|
|
33983
34179
|
"path": "/api/v1/accounts/{account_id}/signature_envelopes",
|
|
33984
34180
|
"title": "Listar Contratos Enviados",
|
|
33985
|
-
"description": "Lista os CONTRATOS (cada envio a uma pessoa e um contrato, com PDF proprio e linha do tempo), paginada (25 por pagina) com filtro e busca no servidor. Recortes: por modelo (signature_document_id), por contato (contact_id — o que aparece na aba Contratos da ficha) ou por conversa (conversation_id). status aceita os baldes aguardando (draft/sent), visualizado (viewed/partially_signed), assinado (signed_pending_seal/signed), encerrado (refused/cancelled/expired) ou falta_eu (contratos em que o usuario do token e o remetente e ainda nao assinou). Resposta traz meta.counts com a contagem por balde.",
|
|
34181
|
+
"description": "Lista os CONTRATOS (cada envio a uma pessoa e um contrato, com PDF proprio e linha do tempo), paginada (25 por pagina) com filtro e busca no servidor. Recortes: por modelo (signature_document_id), por contato (contact_id — o que aparece na aba Contratos da ficha) ou por conversa (conversation_id). status aceita os baldes aguardando (draft/sent), visualizado (viewed/partially_signed), assinado (signed_pending_seal/signed), encerrado (refused/cancelled/expired) ou falta_eu (contratos em que o usuario do token e o remetente e ainda nao assinou). Resposta traz meta.counts com a contagem por balde. Por empresa: company_id (contratos de todos os contatos dela).",
|
|
33986
34182
|
"category": "Assinatura eletronica",
|
|
33987
34183
|
"params": [
|
|
33988
34184
|
{
|
|
@@ -34026,6 +34222,13 @@
|
|
|
34026
34222
|
"location": "query",
|
|
34027
34223
|
"required": false,
|
|
34028
34224
|
"description": "Pagina (padrao 1, 25 por pagina)"
|
|
34225
|
+
},
|
|
34226
|
+
{
|
|
34227
|
+
"name": "company_id",
|
|
34228
|
+
"type": "integer",
|
|
34229
|
+
"location": "query",
|
|
34230
|
+
"required": false,
|
|
34231
|
+
"description": "Recorta pelos contatos de uma EMPRESA (aba Contratos da pagina da empresa). Empresa de outra conta = 404."
|
|
34029
34232
|
}
|
|
34030
34233
|
],
|
|
34031
34234
|
"returns": "payload: [{id, title, status, signature_document_id, document_name, contact_id, contact_name, conversation_id, sent_at, completed_at, expires_at, participants[{id, name, role, status, delivery_channel, phone, email, signed_at, viewed_at, public_url, signs_in_panel}], delivery: {failed[], delivered_participant_ids[]}, has_signed_document, pending_for_me}], meta: {page, per_page, has_more, counts}",
|
|
@@ -34882,5 +35085,207 @@
|
|
|
34882
35085
|
"description": "Uma linha por AGENDA com o estado do Google de cada uma: `connected`, `state`, `calendar_id`, `connected_by`. A conexao Google e UMA POR AGENDA — cada unidade liga a conta Google dela, inclusive a mesma pessoa com contas diferentes. SO ADMINISTRADOR. Conta sem agendas devolve uma linha com agenda_id nulo (a principal).",
|
|
34883
35086
|
"category": "Integracoes / Google Calendar",
|
|
34884
35087
|
"params": []
|
|
35088
|
+
},
|
|
35089
|
+
{
|
|
35090
|
+
"id": "lionchat_companies_notes_create",
|
|
35091
|
+
"method": "POST",
|
|
35092
|
+
"path": "/api/v1/accounts/{account_id}/companies/{company_id}/notes",
|
|
35093
|
+
"title": "Criar Anotacao da Empresa",
|
|
35094
|
+
"description": "Escreve uma anotacao da PROPRIA empresa (nao de um contato). Qualquer atendente da conta pode. Aparece na aba Anotacoes da pagina da empresa com o selo 'Empresa'.",
|
|
35095
|
+
"category": "Empresas",
|
|
35096
|
+
"params": [
|
|
35097
|
+
{
|
|
35098
|
+
"name": "company_id",
|
|
35099
|
+
"type": "integer",
|
|
35100
|
+
"location": "path",
|
|
35101
|
+
"required": true,
|
|
35102
|
+
"description": "ID da empresa"
|
|
35103
|
+
},
|
|
35104
|
+
{
|
|
35105
|
+
"name": "note",
|
|
35106
|
+
"type": "object",
|
|
35107
|
+
"location": "body",
|
|
35108
|
+
"required": true,
|
|
35109
|
+
"description": "{ content: texto da anotacao }"
|
|
35110
|
+
}
|
|
35111
|
+
],
|
|
35112
|
+
"returns": "{payload: anotacao} com kind 'company'",
|
|
35113
|
+
"common_use_cases": [
|
|
35114
|
+
"Registrar historico comercial da empresa",
|
|
35115
|
+
"Anotar combinados com a empresa"
|
|
35116
|
+
],
|
|
35117
|
+
"related_tools": [
|
|
35118
|
+
"lionchat_companies_notes_list",
|
|
35119
|
+
"lionchat_companies_notes_update"
|
|
35120
|
+
]
|
|
35121
|
+
},
|
|
35122
|
+
{
|
|
35123
|
+
"id": "lionchat_companies_notes_update",
|
|
35124
|
+
"method": "PATCH",
|
|
35125
|
+
"path": "/api/v1/accounts/{account_id}/companies/{company_id}/notes/{id}",
|
|
35126
|
+
"title": "Editar Anotacao da Empresa",
|
|
35127
|
+
"description": "Edita uma anotacao da PROPRIA empresa (kind 'company'). A autoria passa para quem editou, como na anotacao do contato. Anotacao de contato (kind 'contact') NAO se edita aqui.",
|
|
35128
|
+
"category": "Empresas",
|
|
35129
|
+
"params": [
|
|
35130
|
+
{
|
|
35131
|
+
"name": "company_id",
|
|
35132
|
+
"type": "integer",
|
|
35133
|
+
"location": "path",
|
|
35134
|
+
"required": true,
|
|
35135
|
+
"description": "ID da empresa"
|
|
35136
|
+
},
|
|
35137
|
+
{
|
|
35138
|
+
"name": "id",
|
|
35139
|
+
"type": "integer",
|
|
35140
|
+
"location": "path",
|
|
35141
|
+
"required": true,
|
|
35142
|
+
"description": "ID da anotacao da empresa (kind 'company')"
|
|
35143
|
+
},
|
|
35144
|
+
{
|
|
35145
|
+
"name": "note",
|
|
35146
|
+
"type": "object",
|
|
35147
|
+
"location": "body",
|
|
35148
|
+
"required": true,
|
|
35149
|
+
"description": "{ content: texto da anotacao }"
|
|
35150
|
+
}
|
|
35151
|
+
],
|
|
35152
|
+
"returns": "{payload: anotacao}",
|
|
35153
|
+
"common_use_cases": [
|
|
35154
|
+
"Corrigir uma anotacao da empresa"
|
|
35155
|
+
],
|
|
35156
|
+
"related_tools": [
|
|
35157
|
+
"lionchat_companies_notes_list"
|
|
35158
|
+
]
|
|
35159
|
+
},
|
|
35160
|
+
{
|
|
35161
|
+
"id": "lionchat_companies_notes_destroy",
|
|
35162
|
+
"method": "DELETE",
|
|
35163
|
+
"path": "/api/v1/accounts/{account_id}/companies/{company_id}/notes/{id}",
|
|
35164
|
+
"title": "Apagar Anotacao da Empresa",
|
|
35165
|
+
"description": "Apaga uma anotacao da PROPRIA empresa (kind 'company'). Nao tem volta.",
|
|
35166
|
+
"category": "Empresas",
|
|
35167
|
+
"params": [
|
|
35168
|
+
{
|
|
35169
|
+
"name": "company_id",
|
|
35170
|
+
"type": "integer",
|
|
35171
|
+
"location": "path",
|
|
35172
|
+
"required": true,
|
|
35173
|
+
"description": "ID da empresa"
|
|
35174
|
+
},
|
|
35175
|
+
{
|
|
35176
|
+
"name": "id",
|
|
35177
|
+
"type": "integer",
|
|
35178
|
+
"location": "path",
|
|
35179
|
+
"required": true,
|
|
35180
|
+
"description": "ID da anotacao da empresa (kind 'company')"
|
|
35181
|
+
}
|
|
35182
|
+
],
|
|
35183
|
+
"returns": "200 sem corpo",
|
|
35184
|
+
"common_use_cases": [
|
|
35185
|
+
"Remover anotacao errada"
|
|
35186
|
+
],
|
|
35187
|
+
"related_tools": [
|
|
35188
|
+
"lionchat_companies_notes_list"
|
|
35189
|
+
]
|
|
35190
|
+
},
|
|
35191
|
+
{
|
|
35192
|
+
"id": "lionchat_companies_documents_list",
|
|
35193
|
+
"method": "GET",
|
|
35194
|
+
"path": "/api/v1/accounts/{account_id}/companies/{company_id}/documents",
|
|
35195
|
+
"title": "Documentos da Empresa",
|
|
35196
|
+
"description": "Documentos de TODOS os contatos da empresa juntos (mesmas origens e regras da aba Documentos do contato: ficha, card, conversa, compromisso, formulario e contrato assinado). Cada item traz contacts [{id, name}] (de quem e). O mesmo arquivo mandado a varios contatos vem UMA vez, com todos os nomes. SO LEITURA: favoritar/renomear/enviar/apagar e pela ficha do contato (lionchat_contacts_documents_*). Lista inteira, teto de 1000 (meta.truncated avisa).",
|
|
35197
|
+
"category": "Empresas",
|
|
35198
|
+
"params": [
|
|
35199
|
+
{
|
|
35200
|
+
"name": "company_id",
|
|
35201
|
+
"type": "integer",
|
|
35202
|
+
"location": "path",
|
|
35203
|
+
"required": true,
|
|
35204
|
+
"description": "ID da empresa"
|
|
35205
|
+
}
|
|
35206
|
+
],
|
|
35207
|
+
"returns": "{payload: [...], meta: {total, truncated}}",
|
|
35208
|
+
"common_use_cases": [
|
|
35209
|
+
"Achar um arquivo de qualquer pessoa da empresa",
|
|
35210
|
+
"Conferir documentos enviados para a empresa"
|
|
35211
|
+
],
|
|
35212
|
+
"related_tools": [
|
|
35213
|
+
"lionchat_contacts_documents_list",
|
|
35214
|
+
"lionchat_companies_contacts_list"
|
|
35215
|
+
]
|
|
35216
|
+
},
|
|
35217
|
+
{
|
|
35218
|
+
"id": "lionchat_companies_tasks_list",
|
|
35219
|
+
"method": "GET",
|
|
35220
|
+
"path": "/api/v1/accounts/{account_id}/companies/{company_id}/tasks",
|
|
35221
|
+
"title": "Compromissos da Empresa",
|
|
35222
|
+
"description": "Compromissos de TODOS os contatos da empresa, mais novo primeiro, pela mesma regra da ficha do contato (sem o compromisso particular de outra pessoa, so as agendas que o usuario ve). Cada item traz contact_name / conversation_contact_name. Precisa da Agenda ligada (senao 404). Editar/concluir: lionchat_tasks_update / lionchat_tasks_toggle.",
|
|
35223
|
+
"category": "Empresas",
|
|
35224
|
+
"params": [
|
|
35225
|
+
{
|
|
35226
|
+
"name": "company_id",
|
|
35227
|
+
"type": "integer",
|
|
35228
|
+
"location": "path",
|
|
35229
|
+
"required": true,
|
|
35230
|
+
"description": "ID da empresa"
|
|
35231
|
+
}
|
|
35232
|
+
],
|
|
35233
|
+
"returns": "array de compromissos (mesmo formato de lionchat_tasks_list)",
|
|
35234
|
+
"common_use_cases": [
|
|
35235
|
+
"Ver a agenda de uma empresa inteira",
|
|
35236
|
+
"Conferir proximas reunioes com a empresa"
|
|
35237
|
+
],
|
|
35238
|
+
"related_tools": [
|
|
35239
|
+
"lionchat_tasks_list",
|
|
35240
|
+
"lionchat_tasks_update"
|
|
35241
|
+
]
|
|
35242
|
+
},
|
|
35243
|
+
{
|
|
35244
|
+
"id": "lionchat_companies_kanban_items_list",
|
|
35245
|
+
"method": "GET",
|
|
35246
|
+
"path": "/api/v1/accounts/{account_id}/companies/{id}/kanban_items",
|
|
35247
|
+
"title": "Cards do Kanban da Empresa",
|
|
35248
|
+
"description": "Lista os cards do Kanban de TODOS os contatos da empresa (aba Cards da pagina da empresa). Mesma lista da aba Kanban da ficha do contato: card ligado a qualquer conversa dos contatos (principal ou vinculada), so os cards que o usuario ve no quadro (funil restrito e caixa respeitados), 25 por pagina, mais recentes primeiro. Cada card traz contacts[{id,name}] = de quem e (card ligado a 2 contatos da empresa traz os dois). ENTERPRISE; exige a funcao Empresas.",
|
|
35249
|
+
"category": "Empresas",
|
|
35250
|
+
"params": [
|
|
35251
|
+
{
|
|
35252
|
+
"name": "id",
|
|
35253
|
+
"type": "integer",
|
|
35254
|
+
"location": "path",
|
|
35255
|
+
"required": true,
|
|
35256
|
+
"description": "ID da empresa"
|
|
35257
|
+
},
|
|
35258
|
+
{
|
|
35259
|
+
"name": "status",
|
|
35260
|
+
"type": "string",
|
|
35261
|
+
"location": "query",
|
|
35262
|
+
"required": false,
|
|
35263
|
+
"description": "open (padrao na tela), won, lost; omitir = todos"
|
|
35264
|
+
},
|
|
35265
|
+
{
|
|
35266
|
+
"name": "funnel_id",
|
|
35267
|
+
"type": "integer",
|
|
35268
|
+
"location": "query",
|
|
35269
|
+
"required": false,
|
|
35270
|
+
"description": "Filtra por funil"
|
|
35271
|
+
},
|
|
35272
|
+
{
|
|
35273
|
+
"name": "page",
|
|
35274
|
+
"type": "integer",
|
|
35275
|
+
"location": "query",
|
|
35276
|
+
"required": false,
|
|
35277
|
+
"description": "Pagina (25 por pagina)"
|
|
35278
|
+
}
|
|
35279
|
+
],
|
|
35280
|
+
"returns": "{ meta: {total_count, page, per_page}, payload: [card com funnel, labels, next_task, permissions e contacts[{id,name}]] }",
|
|
35281
|
+
"common_use_cases": [
|
|
35282
|
+
"Ver os negocios de uma empresa",
|
|
35283
|
+
"Somar oportunidades abertas de um cliente B2B"
|
|
35284
|
+
],
|
|
35285
|
+
"related_tools": [
|
|
35286
|
+
"lionchat_contacts_kanban_items_list",
|
|
35287
|
+
"lionchat_companies_contacts_list",
|
|
35288
|
+
"lionchat_kanban_items_show"
|
|
35289
|
+
]
|
|
34885
35290
|
}
|
|
34886
35291
|
]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lionchat/mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.25.0",
|
|
4
4
|
"description": "MCP server for LionChat API — 547 tools + 10 resources + 9 prompts. Audit-log aware, completion API, progress notifications.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|