@lionchat/mcp-server 1.31.0 → 1.32.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/agenda-multiplas-unidades.md +18 -0
- package/dist/docs/resources/data-model.md +24 -1
- package/dist/docs/resources/flowbuilder-design-guide.md +38 -1
- package/dist/docs/resources/flowbuilder-patterns.md +33 -0
- package/dist/docs/resources/formularios-publicos.md +20 -2
- package/dist/docs/resources/kanban-deep-dive.md +75 -4
- package/dist/docs/resources/troubleshooting.md +20 -2
- package/dist/tools.js +21 -3
- package/dist/tools.js.map +1 -1
- package/endpoints.json +166 -34
- package/package.json +1 -1
|
@@ -432,6 +432,7 @@ Antes de escolher a ferramenta, cheque se a intenção bate com a coluna da dire
|
|
|
432
432
|
| 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) |
|
|
433
433
|
| 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 |
|
|
434
434
|
| Criar / preencher **campo personalizado da empresa** ("Segmento", "Data de fundacao") | `lionchat_custom_attributes_create` com `attribute_model: company_attribute` + `lionchat_companies_update` com `company.custom_attributes {chave: valor}` | So com o modulo Empresas ligado; tipo segredo recusado. Chave que nao existe como atributo de empresa = 422 e nada do pedido grava: crie a definicao ANTES. MESCLA; `null` limpa. Desde 2026-10-16 vira variavel `{{contact.company.custom_attribute.CHAVE}}`, condicao do fluxo (`attrSource: company`), condicao de automacao e filtro de contatos (`custom_attribute_type: company_attribute`) e a IA le — detalhe no resource data-model |
|
|
435
|
+
| **Importar muitas empresas** de uma vez (planilha, lista de clientes, cadastro de outro sistema) | `lionchat_companies_bulk_create` (ate 1000 por chamada; `check_only: true` CONFERE sem gravar) e depois `lionchat_companies_import_status` com o `import_id` | Mesma importacao do botao "Importar empresas" da tela. Mesma empresa = CNPJ; sem CNPJ, o site; sem os dois, o NOME — mais de uma empresa com aquele nome = a linha NAO entra (mande CNPJ ou site). Empresa existente e ATUALIZADA; campo vazio nunca apaga. Valor invalido fica em branco com aviso e o resto entra. Campos PLANOS (`address_city`, `social_instagram`), nunca objeto; `custom_attributes` so com chave que ja existe como atributo de EMPRESA. Exige modulo Empresas + administrador ou cargo "Exportar e importar contatos". So no conector remoto (Claude.ai/ChatGPT); no conector local (NPM) importe com `lionchat_companies_create` uma a uma |
|
|
435
436
|
| Organizar atributos em **categorias** (pastas que abrem e fecham: "Sobre a casa", "Financeiro") | `lionchat_custom_attribute_categories_create` (`name` + `attribute_model`) e depois `lionchat_custom_attribute_categories_assign` (`attribute_key` + `category_id`; `null` tira) | Categoria e OPCIONAL e de UMA aba so (`conversation_attribute`, `contact_attribute`, `company_attribute` ou `kanban_item_attribute` = Card). Criar categoria NAO aceita atributos junto. Card: `attribute_key` = NOME do campo exatamente como gravado. Excluir categoria nunca apaga atributo (voltam para "Sem categoria"). Ver resource data-model |
|
|
436
437
|
| 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` |
|
|
437
438
|
| 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` |
|
|
@@ -276,6 +276,24 @@ e se está atrasada.
|
|
|
276
276
|
um. Compromisso de agenda que o usuário não enxerga aparece na sessão como `oculta: true`.
|
|
277
277
|
- O relatório de Agendamentos tem o bloco `treatments` (vale o período escolhido: programas, sessões do período e quem parou no meio — ver `reports-guide`).
|
|
278
278
|
|
|
279
|
+
## 7.1. Tarefa automática do card — de que agenda ela é (20/10/2026)
|
|
280
|
+
|
|
281
|
+
A regra "Criar tarefa" do funil (`create_task`) e o item "Criar tarefa" do bloco Ações do fluxo (`create_account_task`)
|
|
282
|
+
criam uma tarefa COMUM da Agenda, presa ao card (`kanban_item_id`). Para a agenda:
|
|
283
|
+
|
|
284
|
+
- `agenda_id` da regra **nulo = a agenda padrão da conta**. A tarefa na agenda padrão é gravada com `agenda_id`
|
|
285
|
+
nulo (a mesma regra do resto deste guia: nulo = principal; ao filtrar a principal, inclua os nulos).
|
|
286
|
+
- O **fuso do prazo é o da agenda da tarefa** (o fuso resolvido da agenda; sem agenda padrão, o da conta).
|
|
287
|
+
- **Dia útil** (`due.business_days: true`, só com `unit: 'days'`) = segunda a sexta **sem feriado de DIA INTEIRO que
|
|
288
|
+
vale para aquela agenda**. Feriado de meio período não conta (o dia ainda tem expediente). Feriado "para todas as
|
|
289
|
+
agendas" (`all_agendas`) vale para qualquer agenda; o regional vale só para as agendas marcadas nele. Cadastre
|
|
290
|
+
com `lionchat_agenda_holidays_*`. **Só o prazo da tarefa automática lê feriado**: os horários livres do Booking
|
|
291
|
+
continuam sem saber de feriado, e feriado nunca impede alguém de marcar.
|
|
292
|
+
- A Agenda unificada (`unified_agenda`) precisa estar ligada na conta; desligada, a regra do funil registra "não
|
|
293
|
+
criou" no histórico do card e o item do fluxo fica com erro visível no passo.
|
|
294
|
+
- `occupies_agenda: false` (padrão da regra) cria a tarefa como lembrete que **não bloqueia o horário**; `true`
|
|
295
|
+
bloqueia como um compromisso.
|
|
296
|
+
|
|
279
297
|
---
|
|
280
298
|
|
|
281
299
|
## 8. Erros comuns
|
|
@@ -298,7 +298,9 @@ Funnel
|
|
|
298
298
|
├── account_id (FK)
|
|
299
299
|
├── name
|
|
300
300
|
├── stages (jsonb: hash com slug_etapa => { name, color, position, description, checklist_templates })
|
|
301
|
-
├── settings (jsonb: { agents: [], goals: [], automations: [{trigger_type, action, action_config, enabled}] }
|
|
301
|
+
├── settings (jsonb: { agents: [], goals: [], automations: [{trigger_type, action, action_config, enabled}] };
|
|
302
|
+
│ `automations[].action` inclui `create_task` (20/10/2026). `settings.removed_stages` = etapas já excluídas,
|
|
303
|
+
│ mantida só pelo servidor — enviada pela API é ignorada)
|
|
302
304
|
├── global_custom_attributes (jsonb array — NENHUMA tela lê este campo do funil; os campos da aba do card
|
|
303
305
|
│ são os do KanbanConfig acima)
|
|
304
306
|
├── meta_events_config (jsonb: won/lost/stages → Meta Pixel/CAPI events; cada bloco: enabled, name,
|
|
@@ -346,6 +348,14 @@ KanbanItemSnooze (kanban_item_snoozes — 11/10/2026: ate quando o card esta ADI
|
|
|
346
348
|
├── snoozed_by_id (quem adiou; nulo = automacao, macro ou fluxo)
|
|
347
349
|
└── created_at / updated_at
|
|
348
350
|
|
|
351
|
+
KanbanStageRemoval (kanban_stage_removals — 20/10/2026: a exclusão de etapa EM ANDAMENTO; sem chave estrangeira)
|
|
352
|
+
├── account_id, funnel_id (funil de ORIGEM), stage_key (a etapa excluída)
|
|
353
|
+
├── to_funnel_id, to_stage (destino dos cards; nulos quando a etapa estava vazia e saiu pelo Salvar do funil)
|
|
354
|
+
├── user_id (quem pediu), status (running | done), moved_count
|
|
355
|
+
├── started_at / last_seen_at / finished_at
|
|
356
|
+
└── Um só `running` por etapa: é ele que dá o 409 STAGE_REMOVAL_IN_PROGRESS a quem tenta excluir a mesma etapa
|
|
357
|
+
ao mesmo tempo. A IA NÃO lê nem grava esta tabela; ela só chama `lionchat_funnels_remove_stage` e repete
|
|
358
|
+
|
|
349
359
|
Item do checklist (elemento do array jsonb `checklist`)
|
|
350
360
|
├── id (uuid string)
|
|
351
361
|
├── text
|
|
@@ -504,8 +514,21 @@ AccountTask (agenda interna)
|
|
|
504
514
|
├── meeting_url (string, sala de reunião call/meeting)
|
|
505
515
|
├── guest_emails (jsonb array, convidados extras — máx 20)
|
|
506
516
|
├── conversation_id / contact_id / linked_kanban_item_id (FK opcionais)
|
|
517
|
+
├── kanban_item_id (FK opcional → KanbanItem, 20/10/2026) — a tarefa PRESA ao card (aparece na aba Tarefas do card).
|
|
518
|
+
│ NÃO confunda com `linked_kanban_item_id` (card apenas relacionado, não dono da tarefa). A API devolve também
|
|
519
|
+
│ `kanban_item_title` (só leitura). Agendamento (Booking), sessão de programa e evento do Google NÃO podem ser
|
|
520
|
+
│ presos a card (422). Apagar o card apaga só a tarefa SIMPLES presa a ele (sem conversa, contato, agendamento, sessão de programa,
|
|
521
|
+
│ anexo, que não veio do Google e não é somente leitura); as outras se soltam e ficam. A tarefa automática de card
|
|
522
|
+
│ COM conversa grava a conversa e por isso sobrevive à exclusão do card (fica na conversa)
|
|
523
|
+
├── occupies_agenda (boolean, padrão true, 20/10/2026) — se a tarefa bloqueia o horário na Agenda; false = lembrete
|
|
524
|
+
│ que não bloqueia (o padrão da regra "Criar tarefa" é false)
|
|
525
|
+
├── automation_event_key (string, só leitura, 20/10/2026) — chave de "uma tarefa por acontecimento" da tarefa
|
|
526
|
+
│ automática (`card:<id>:rule:...` no funil, `flow:<sessão>:<bloco>:<item>:<passagem>` no fluxo); índice único por
|
|
527
|
+
│ conta. Tarefa criada por gente fica com ela nula
|
|
507
528
|
├── booked_by (polimórfico User/Contact/Captain::Assistant) / booked_by_name / booking_source
|
|
508
529
|
│ (painel|link|ia|sistema|fluxo) — QUEM agendou e por onde (14/09)
|
|
530
|
+
│ Tarefa AUTOMÁTICA (20/10): pela automação do funil, `booked_by` = o Funil e `booking_source` = `sistema`;
|
|
531
|
+
│ pelo bloco "Criar tarefa" de um fluxo, `booked_by` = o Fluxo e `booking_source` = `fluxo`
|
|
509
532
|
├── attendance (enum attended=0 / no_show=1, NULO = nada registrado — CARIMBO, não muda status)
|
|
510
533
|
│ / attendance_by (polimórfico) / attendance_source — quem marcou Compareceu/Faltou (14/09)
|
|
511
534
|
├── selo (SÓ LEITURA, calculado — 17/09): o rótulo ÚNICO que a tela mostra ao lado da tarefa, juntando
|
|
@@ -570,13 +570,50 @@ o botão "Usar variável" ao lado do campo alterna lista fixa ↔ variável.
|
|
|
570
570
|
| `send_conversion` (novo 2026-09-01; `event_names` 2026-09-02; `messaging_event_names` 2026-09-10) | `{ destinations: ['meta'\|'ga4'\|'google_ads'], event_names: { meta?, google_ads?, ga4? }, messaging_event_names: { meta? }, event_name (reserva), value? }` | Manda o evento de conversão pro Meta (CAPI), Google Ads e/ou GA4 — o mesmo caminho do Funil, de dentro do fluxo. Aba Sistema (só flow `conversation`). Ver bloco próprio abaixo |
|
|
571
571
|
| `deactivate_flow` ou `disable_flow` | `{}` | Encerra fluxo atual |
|
|
572
572
|
| `set_booking_situation` (novo 2026-09-14) | `{ situation: 'cancelled' \| 'completed' \| 'attended' \| 'no_show' \| 'confirmed' }` | Muda a situação do agendamento **que disparou o fluxo** (gatilho de agendamento do bloco Início, ou fluxo ligado na configuração do tipo de agendamento). Aba **Agenda** (só flow `conversation`, só com a Agenda ligada na conta). Disparado por outra coisa: **não faz efeito e o passo fica com erro visível** (não há como adivinhar o agendamento). Já no estado pedido = passo PULADO, sem escrita (sem evento, sem laço). `cancelled` cancela o **agendamento** (desarma lembretes, invalida o link de gerenciar). Origem gravada = `fluxo`, ator = o próprio flow. Sem `rescheduled`/`snoozed`: o bloco não mexe em data |
|
|
573
|
+
| `create_account_task` (novo 2026-10-20) | `{ title, description?, task_type, agenda_id?, priority?, occupies_agenda?, due: {amount, unit: 'hours' \| 'days', at?, business_days?}, responsible: {mode: 'card_owner' \| 'fixed' \| 'funnel_rotation' \| 'team_rotation', user_id?, team_id?, fallback_user_id?}, card_source: 'funnel' \| 'trigger', funnel_id? }` | "Criar tarefa": cria uma tarefa COMUM da Agenda, presa ao card do fluxo (ou só à conversa, se não houver card). Os campos de `title` a `responsible` são os MESMOS da ação `create_task` da automação do funil (ver `kanban-deep-dive`). Aba **Agenda**; exige a Agenda unificada ligada na conta. **NÃO roda em fluxo `ai_tool` nem em fluxo de grupo** (o motor recusa com erro visível no passo; o save aceita, a tela esconde o item). Detalhes logo abaixo |
|
|
573
574
|
| `update_attribute` | `{ attr_source: 'contact'\|'conversation'\|'card', attr_key, attr_value }` | Seta custom_attribute (ver abaixo) |
|
|
574
575
|
| `assign_captain` (ou `assign_captain_assistant`) | `{ assistant_id }` | Atribui IA Captain |
|
|
575
576
|
| `deactivate_captain` | `{}` | Tira a IA da conversa |
|
|
576
577
|
|
|
577
578
|
**Handles que SAEM:** `success`. Não tem handle `error` — falhas viram warning silencioso e o flow continua.
|
|
578
579
|
|
|
579
|
-
**`card_source` (blocos de card) — opcional:** as ações de card aceitam `card_source`: `'funnel'` (default — procura o card pelo `funnel_id`) ou `'trigger'` (usa o card que DISPAROU o flow, em flows iniciados por `card_created`/`card_moved`/`card_won`/`card_lost`/`card_opened`/`card_snoozed`). Com `'trigger'`, `funnel_id` deixa de ser obrigatório — EXCETO em `move_kanban_stage`/`create_kanban_item`, cujo funil/etapa são o DESTINO. Sem card-gatilho disponível, a ação é pulada (não cai no fallback de funil). Aplica-se a `move_kanban_stage`, `set_won`/`set_lost`/`set_open`, `snooze_kanban_item` (esta, sem card-gatilho, dá ERRO em vez de pular), `assign_agent_card`, `add_card_note`, `add_card_checklist`, `add_card_offer`, `update_attribute` (com `attr_source: 'card'`) e às condições `card_attr_equals`/`card_attr_contains` (gravando `card_source` na própria regra).
|
|
580
|
+
**`card_source` (blocos de card) — opcional:** as ações de card aceitam `card_source`: `'funnel'` (default — procura o card pelo `funnel_id`) ou `'trigger'` (usa o card que DISPAROU o flow, em flows iniciados por `card_created`/`card_moved`/`card_won`/`card_lost`/`card_opened`/`card_snoozed`). Com `'trigger'`, `funnel_id` deixa de ser obrigatório — EXCETO em `move_kanban_stage`/`create_kanban_item`, cujo funil/etapa são o DESTINO. Sem card-gatilho disponível, a ação é pulada (não cai no fallback de funil). Aplica-se a `move_kanban_stage`, `set_won`/`set_lost`/`set_open`, `snooze_kanban_item` (esta, sem card-gatilho, dá ERRO em vez de pular), `assign_agent_card`, `add_card_note`, `add_card_checklist`, `add_card_offer`, `create_account_task` (aqui sem card-gatilho = ERRO; ver abaixo), `update_attribute` (com `attr_source: 'card'`) e às condições `card_attr_equals`/`card_attr_contains` (gravando `card_source` na própria regra).
|
|
581
|
+
|
|
582
|
+
**`create_account_task` — Criar tarefa (2026-10-20):**
|
|
583
|
+
|
|
584
|
+
```json
|
|
585
|
+
{ "key": "create_account_task", "config": {
|
|
586
|
+
"title": "Ligar para {{contact.name}}", "description": "", "task_type": "call", "agenda_id": null,
|
|
587
|
+
"priority": "none", "occupies_agenda": false,
|
|
588
|
+
"due": { "amount": 3, "unit": "days", "at": "09:00", "business_days": true },
|
|
589
|
+
"responsible": { "mode": "card_owner", "fallback_user_id": 12 },
|
|
590
|
+
"card_source": "trigger", "funnel_id": ""
|
|
591
|
+
} }
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
- **Os campos da regra** (`title`, `description`, `task_type`, `agenda_id`, `priority`, `due`, `responsible`,
|
|
595
|
+
`occupies_agenda`) têm o mesmo formato e os mesmos limites da ação `create_task` do funil: `title` obrigatório; `due`
|
|
596
|
+
em horas (1 a 720) ou dias (0 a 365, com `at` "HH:MM" e `business_days` só em dias); `responsible.mode` com a chave
|
|
597
|
+
obrigatória do modo (`fallback_user_id`, `user_id` ou `team_id`; `funnel_rotation` não pede nenhuma no save,
|
|
598
|
+
mas no fluxo SEM card o rodízio do funil não tem funil e cai na pessoa reserva `fallback_user_id` — sem reserva a
|
|
599
|
+
tarefa não nasce, com o motivo no histórico: mande `fallback_user_id` se o fluxo puder rodar sem card). Regra torta =
|
|
600
|
+
passo VERMELHO com a frase do campo a consertar, sem tarefa.
|
|
601
|
+
- **De onde vem o card (`card_source`)**: `'trigger'` = o card que INICIOU o fluxo (gatilhos `card_created`,
|
|
602
|
+
`card_moved`, `card_won`, `card_lost`, `card_opened`, `card_snoozed`); fluxo que não nasceu de card = ERRO
|
|
603
|
+
visível, nunca pulado. `'funnel'` (o padrão da tela) = o card DESSA conversa no funil `funnel_id` (**obrigatório**
|
|
604
|
+
neste modo; funil sem `funnel_id` ou que não existe mais = erro). Conversa sem card naquele funil não é erro: a
|
|
605
|
+
tarefa nasce SÓ na conversa e o passo diz "sem card". Variáveis `{{ }}` em `title` e `description` resolvem pelo
|
|
606
|
+
resolvedor do FLUXO.
|
|
607
|
+
- **Uma tarefa por passagem do bloco**: repetir o MESMO passo (nova tentativa do sistema) não duplica; uma nova
|
|
608
|
+
passagem pelo bloco (o fluxo rodando de novo) cria outra tarefa.
|
|
609
|
+
- **Ritmo**: há um freio de 1 tarefa por segundo por conta. Passo com vaga futura já fica verde ("nasce às
|
|
610
|
+
HH:MM:SS"); se depois a tarefa for reprovada (responsável que saiu da conta, dado inválido), o aviso vai para a
|
|
611
|
+
linha do card ("Fluxo X não criou a tarefa", só com card) e para o log — o passo não muda.
|
|
612
|
+
- **Histórico do card**: "Fluxo X criou uma tarefa (tipo) para Fulana" / "Fluxo X não criou a tarefa: motivo".
|
|
613
|
+
A tarefa grava o Fluxo como quem agendou (`booking_source` `fluxo`).
|
|
614
|
+
- O interruptor de emergência da automação do funil NÃO vale para o fluxo; a Agenda unificada desligada vale (erro
|
|
615
|
+
visível no passo).
|
|
616
|
+
- **Fluxo `ai_tool` e fluxo de grupo**: não use este item (recusado na execução, com erro visível no passo).
|
|
580
617
|
|
|
581
618
|
**`send_conversion` — Enviar conversão (2026-09-01):**
|
|
582
619
|
|
|
@@ -663,6 +663,39 @@ uma entrada por vez; quem entrar enquanto os balões da pessoa anterior saem nã
|
|
|
663
663
|
|
|
664
664
|
---
|
|
665
665
|
|
|
666
|
+
## 18. Tarefa de acompanhamento ao ganhar um card (`create_account_task`)
|
|
667
|
+
|
|
668
|
+
**Caso:** quando um card é marcado como GANHO, criar para o responsável do card uma tarefa "Ligar para <cliente>" daqui a
|
|
669
|
+
3 dias úteis, às 09:00 (pula sábado, domingo e feriado de dia inteiro da agenda). Usa o item "Criar tarefa" do bloco
|
|
670
|
+
Ações (aba Agenda). Pré-requisito: Agenda unificada ligada na conta. Não funciona em fluxo `ai_tool` nem de grupo.
|
|
671
|
+
|
|
672
|
+
```json
|
|
673
|
+
{
|
|
674
|
+
"nodes": [
|
|
675
|
+
{ "id": "n1", "type": "start", "position": { "x": 50, "y": 300 }, "data": { "label": "Início", "items": [{ "key": "card_won", "config": { "funnel_ids": ["1"] } }] } },
|
|
676
|
+
{ "id": "n2", "type": "action", "position": { "x": 370, "y": 300 }, "data": { "label": "Tarefa de pós-venda", "items": [
|
|
677
|
+
{ "key": "create_account_task", "config": {
|
|
678
|
+
"title": "Ligar para {{contact.name}} (pós-venda)", "description": "", "task_type": "call", "agenda_id": null,
|
|
679
|
+
"priority": "medium", "occupies_agenda": false,
|
|
680
|
+
"due": { "amount": 3, "unit": "days", "at": "09:00", "business_days": true },
|
|
681
|
+
"responsible": { "mode": "card_owner", "fallback_user_id": 12 },
|
|
682
|
+
"card_source": "trigger", "funnel_id": ""
|
|
683
|
+
} }
|
|
684
|
+
] } }
|
|
685
|
+
],
|
|
686
|
+
"edges": [
|
|
687
|
+
{ "id": "e1", "source": "n1", "target": "n2", "sourceHandle": "success", "type": "deletable", "animated": true }
|
|
688
|
+
]
|
|
689
|
+
}
|
|
690
|
+
```
|
|
691
|
+
|
|
692
|
+
Notas:
|
|
693
|
+
- `card_source: "trigger"` usa o card que ganhou; sem `funnel_id`. Para agir sobre o card da conversa em outro funil
|
|
694
|
+
(fluxo disparado por mensagem, por exemplo), use `card_source: "funnel"` com `funnel_id` preenchido.
|
|
695
|
+
- `fallback_user_id` (12 aqui) é a pessoa que recebe quando o card não tem responsável: troque por um id de
|
|
696
|
+
`agents_list`. `task_type` é um dos 7 de fábrica ou uma `key` de `account_task_types_list`.
|
|
697
|
+
- Para a tarefa aparecer SÓ no card (sem bloquear o horário da Agenda) deixe `occupies_agenda` em `false`.
|
|
698
|
+
|
|
666
699
|
## Como usar este catálogo
|
|
667
700
|
|
|
668
701
|
1. **Identifique o pattern mais próximo** do que o cliente pediu
|
|
@@ -451,7 +451,7 @@ em `responses_show.milestones`.
|
|
|
451
451
|
|
|
452
452
|
**`lionchat_lead_forms_responses_list`** aceita `status` (`in_progress`, `completed`,
|
|
453
453
|
`abandoned`), `days` e `page` (até 10.000). A lista nunca traz as respostas em si — só `{id, status,
|
|
454
|
-
contact, current_node_label, answered_count, created_at, completed_at}` e `meta: {current_page,
|
|
454
|
+
contact, current_node_label, answered_count, created_at, completed_at, filled_by}` e `meta: {current_page,
|
|
455
455
|
per_page: 25, total_count}`. **`contact` pode vir `{id: null, name, phone, pending: true}`** — é
|
|
456
456
|
quem ainda está preenchendo (o contato só nasce nos três momentos); nome e telefone saem do que a
|
|
457
457
|
pessoa já digitou. `answered_count` conta todas as chaves de `answers`, inclusive as sintéticas.
|
|
@@ -479,6 +479,24 @@ falha de transporte sem código), `timeout`, `ssrf_blocked`, `result_too_large`,
|
|
|
479
479
|
`no_ai_key`, `ai_error`. (Os motivos `busy` e `unresolved_variable`, citados antes, não existem no
|
|
480
480
|
código.)
|
|
481
481
|
|
|
482
|
+
### Preenchimento pela equipe, dentro da conversa — 20/10/2026 (entra com o próximo deploy do app)
|
|
483
|
+
|
|
484
|
+
No painel, a barra lateral da conversa ganhou o quadro **Formulários**: o atendente (SDR) abre qualquer formulário
|
|
485
|
+
publicado e ligado numa janela e preenche durante a ligação. Essa resposta é **da equipe**:
|
|
486
|
+
|
|
487
|
+
- `filled_by` (lista, show e Preenchimentos do contato): `null` = o próprio cliente pelo link; `{id, name}` = o
|
|
488
|
+
atendente que preencheu; `{id, removed: true}` = o atendente foi apagado (o selo continua).
|
|
489
|
+
- Contato e conversa ficam **fixos**: os da conversa. Telefone digitado nunca troca de contato nem cria ficha; se já
|
|
490
|
+
for de outra ficha (com ou sem o nono dígito) não é gravado.
|
|
491
|
+
- Todos os blocos rodam como no link (atributos, etiquetas, marco, API, IA, WhatsApp, contrato, agenda). A única
|
|
492
|
+
diferença: os fluxos **"Formulário concluído"** e **"Formulário abandonado"** NÃO disparam — o pulo fica registrado
|
|
493
|
+
com o motivo `filled_by_team`. "Marco do formulário" dispara.
|
|
494
|
+
- Fica **fora** de `lionchat_lead_forms_stats` (funil, conclusão) e dos contadores da lista (`responses_count`,
|
|
495
|
+
`completed_count`), e do relatório de formulários. Aparece em `responses_list`/`responses_show` com o selo.
|
|
496
|
+
- Não há ferramenta do MCP para começar esse preenchimento — ele só existe na janela do painel.
|
|
497
|
+
- Atributo gravado por QUALQUER formulário (link ou equipe) acorda o mesmo que a edição manual: automação "atributo
|
|
498
|
+
alterado", fluxos de atributo e webhook (desde 20/10/2026).
|
|
499
|
+
|
|
482
500
|
## Preenchimentos do contato (`lionchat_contacts_form_entries_list` / `_show`) — 21/08 (entra com o próximo deploy do app depois de 21/08/2026)
|
|
483
501
|
|
|
484
502
|
A aba "Preenchimentos" da ficha junta, numa lista só ordenada por data, tudo que a pessoa preencheu
|
|
@@ -488,7 +506,7 @@ FlowBuilder cria pro gatilho de um fluxo (`flow`, com o nome do fluxo). É a ún
|
|
|
488
506
|
"o que esta PESSOA preencheu" — as outras são por formulário/integração, e duas delas são só de
|
|
489
507
|
administrador; esta é liberada a qualquer agente.
|
|
490
508
|
|
|
491
|
-
- **Lista**: `{payload: [{source, id, title, status, at, count, conversation}], meta: {total,
|
|
509
|
+
- **Lista**: `{payload: [{source, id, title, status, at, count, conversation, filled_by}], meta: {total,
|
|
492
510
|
truncated}}`. `id` é o id do registro NA ORIGEM — só identifica junto com `source`. `status` é
|
|
493
511
|
`in_progress|completed|abandoned` no nosso formulário e `received` nas demais. `count` = respostas
|
|
494
512
|
(nosso) ou campos vinculados e gravados (de fora). `conversation` só existe em `lead_form`. Sem
|
|
@@ -16,7 +16,7 @@ Container de etapas. Conta pode ter vários funis (ex: "Vendas", "Pós-venda", "
|
|
|
16
16
|
| `archived` | Boolean — funis arquivados não aparecem na UI ativa |
|
|
17
17
|
| `active` | Boolean — controla se aceita movimentação |
|
|
18
18
|
| `settings` | jsonb — config customizada (ex: cores, automações) |
|
|
19
|
-
| `settings.agents` | agentes do funil. Grave `[{"id": <id do agente>}]` — cada item é um OBJETO, nunca número solto (ids de `lionchat_agents_list`); o sistema completa nome, e-mail, cargo e foto — é o que o editor do funil, o card e a conversa mostram. Agente de outra conta fica sem nome e sem acesso. `settings` é substituído INTEIRO no update: leia o funil antes e reenvie goals+agents+teams+automations. |
|
|
19
|
+
| `settings.agents` | agentes do funil. Grave `[{"id": <id do agente>}]` — cada item é um OBJETO, nunca número solto (ids de `lionchat_agents_list`); o sistema completa nome, e-mail, cargo e foto — é o que o editor do funil, o card e a conversa mostram. Agente de outra conta fica sem nome e sem acesso. `settings` é substituído INTEIRO no update: leia o funil antes e reenvie goals+agents+teams+automations. `settings.removed_stages` (lista das etapas já excluídas, usada para redirecionar cards) é do SERVIDOR: se você mandar essa chave ela é ignorada, sem erro, e o servidor a mantém sozinho. |
|
|
20
20
|
|
|
21
21
|
### Stages (Etapas) — dentro de `funnel.stages`
|
|
22
22
|
|
|
@@ -55,11 +55,55 @@ Stages NÃO são tabela separada. São armazenadas como jsonb dentro do Funnel:
|
|
|
55
55
|
da mesma posição, senão pra primeira. **Confira o `funnel_stage` da resposta**: pode ser diferente
|
|
56
56
|
do que você mandou. Leia `funnels_show` antes e use o slug exato.
|
|
57
57
|
- `funnels_update` que tira do `stages` uma etapa com card responde **422 `STAGE_HAS_ITEMS`** com
|
|
58
|
-
`stages: {"<slug>": <quantos cards>}`.
|
|
59
|
-
(`POST /funnels/{id}/
|
|
60
|
-
|
|
58
|
+
`stages: {"<slug>": <quantos cards>}`. **Para EXCLUIR uma etapa que tem cards, use
|
|
59
|
+
`lionchat_funnels_remove_stage`** (`POST /funnels/{id}/remove_stage`, ver "Excluir etapa" abaixo): ela move
|
|
60
|
+
os cards para o destino EM SILÊNCIO e apaga a etapa. **Não** use a receita antiga (mover com `migrate_stage` e depois reenviar
|
|
61
|
+
o funil sem aquela etapa) — o `migrate_stage` (`lionchat_funnels_create_2`) NÃO exclui a etapa: move os
|
|
62
|
+
cards DISPARANDO tudo o que está ligado ao destino (automações do funil, regras, fluxos, webhooks, conversões)
|
|
63
|
+
e a etapa de origem continua no funil, só vazia. Usar `migrate_stage` para "limpar antes de excluir" dispara
|
|
64
|
+
automação e aviso ao cliente por card movido.
|
|
61
65
|
- Funil apagado continua sendo erro (o card não é criado).
|
|
62
66
|
|
|
67
|
+
### Excluir etapa (20/10/2026) — `lionchat_funnels_remove_stage`
|
|
68
|
+
|
|
69
|
+
`POST /funnels/{id}/remove_stage` com `from_stage` (CHAVE da etapa a excluir), `to_funnel_id` (obrigatório; pode ser o
|
|
70
|
+
próprio funil) e `to_stage` (CHAVE do destino). Os cards **mudam de etapa e não são apagados**; nada dispara (nenhuma
|
|
71
|
+
automação do funil, regra, fluxo, webhook, conversão nem aviso ao cliente). Desde 20/10/2026 o card passa a contar o
|
|
72
|
+
tempo na etapa nova **a partir da exclusão** (`stage_entered_at` = o instante da exclusão; antes mantinha a data): é o
|
|
73
|
+
que mantém os relatórios de meses passados mostrando cada card onde ele estava ("etapa removida"). Exige
|
|
74
|
+
administrador ou a permissão "gerenciar funis" (sem ela: **401**; vale também para o `migrate_stage`).
|
|
75
|
+
|
|
76
|
+
**Como a IA deve usar:**
|
|
77
|
+
|
|
78
|
+
1. `lionchat_funnels_show` para pegar as chaves; conte os cards com `lionchat_funnels_stage_report` (id do funil + a
|
|
79
|
+
chave em `stage`, com `show_won`, `show_lost` e `show_snoozed` = `true` — sem isso o relatório conta só os abertos
|
|
80
|
+
não adiados e a etapa parece ter menos cards do que vai mover).
|
|
81
|
+
2. Diga ao usuário quantos cards vão para onde e que a etapa será excluída; **peça o OK uma vez**.
|
|
82
|
+
3. Chame com `confirm: true` — **toda** chamada leva `confirm: true`, inclusive a primeira. A ferramenta trabalha em
|
|
83
|
+
pedidos curtos (cerca de 8 segundos de cards por pedido, lotes de 125): **repita a chamada, sem perguntar de novo,
|
|
84
|
+
até vir `done: true`**.
|
|
85
|
+
|
|
86
|
+
**Respostas:**
|
|
87
|
+
|
|
88
|
+
| Resposta | Significa |
|
|
89
|
+
|---|---|
|
|
90
|
+
| `200 {done: true, moved, stage_removed: true, funnel}` | Terminou. `moved` é o TOTAL da exclusão inteira |
|
|
91
|
+
| `200 {done: true, moved: 0}` (sem `stage_removed`) | A etapa já estava excluída para o mesmo destino (fim normal, por exemplo repetição do pedido) |
|
|
92
|
+
| `200 {done: false, moved, remaining, reason}` | Ainda falta. `moved` é só deste pedido. `remaining` = cards que faltam; **nulo** = a contagem não coube no tempo (não é erro, repita); **100001** = "mais de 100 mil" |
|
|
93
|
+
|
|
94
|
+
`reason` quando `done: false`: `tempo` = repita agora; `travado` ou `faxina` = o banco estava ocupado, espere ~30 s e
|
|
95
|
+
repita; `destino_excluido` = a etapa de destino deixou de existir, pergunte ao usuário outro destino; `assumido` =
|
|
96
|
+
OUTRA pessoa assumiu a exclusão desta etapa (vêm `holder_name` e `to_stage_name`, que podem ser nulos): avise quem está
|
|
97
|
+
excluindo e para onde (sem nome, diga só "outra pessoa está excluindo esta etapa") e **pare, não repita**. Duas
|
|
98
|
+
respostas seguidas com `moved: 0` e `done: false` = algo está preso: **pare e avise**.
|
|
99
|
+
|
|
100
|
+
**Erros:** `422 {error, code}` com `code` = `DESTINATION_NOT_FOUND`, `SAME_STAGE`, `LAST_STAGE` (o funil precisa ficar
|
|
101
|
+
com pelo menos uma etapa), `ORIGIN_NOT_FOUND`, `STAGE_ALREADY_REMOVED_BY_OTHER`, `FINAL_SAVE_FAILED` (os cards já
|
|
102
|
+
foram movidos mas o funil não pôde ser salvo) e `FUNNEL_INVALID` — o texto de `error` já vem no idioma da conta,
|
|
103
|
+
mostre-o ao usuário. `409 STAGE_REMOVAL_IN_PROGRESS` = outra pessoa está excluindo esta etapa agora (`holder_name` e
|
|
104
|
+
`to_stage_name` podem ser nulos): avise e pare. **Qualquer Salvar do funil (com ou sem `stages`) também pode dar `409 FUNNEL_BUSY`**
|
|
105
|
+
(o funil está sendo alterado agora, por outra pessoa ou por uma exclusão de etapa): espere alguns instantes e repita.
|
|
106
|
+
|
|
63
107
|
### KanbanConfig (Configuração Global do Kanban) — CRÍTICO
|
|
64
108
|
|
|
65
109
|
**Tabela separada do Funnel.** 1:1 com a conta. Guarda configurações que valem pra TODOS os funis. Tem 5 campos jsonb importantes:
|
|
@@ -524,6 +568,7 @@ PUT /api/v1/accounts/43/funnels/43
|
|
|
524
568
|
| `send_webhook` | `{webhook_url}` | POST com payload completo do card (fire-and-forget) |
|
|
525
569
|
| `apply_checklist_template` | `{template_id}` | Template de `kanban_config.checklist_templates`; aditivo (appenda) — cada aplicação vira um grupo (carimba `group_id`/`group_name` nos itens) |
|
|
526
570
|
| `update_checklist` | `{checklist_updates: [{checklist_item_id, completed, text}]}` | Não aparece na UI — só via API |
|
|
571
|
+
| `create_task` (20/10/2026) | `{title, description?, task_type, agenda_id?, priority?, occupies_agenda?, due: {amount, unit: 'hours'\|'days', at?: 'HH:MM', business_days?: true}, responsible: {mode: 'card_owner'\|'fixed'\|'funnel_rotation'\|'team_rotation', fallback_user_id (card_owner), user_id (fixed), team_id (team_rotation)}}` | Cria uma tarefa COMUM da Agenda presa ao card (ver "Tarefa automática do card" abaixo). Exige a Agenda unificada ligada na conta |
|
|
527
572
|
|
|
528
573
|
**Regras críticas (gravar diferente disso = automação perdida ou morta):**
|
|
529
574
|
|
|
@@ -534,6 +579,32 @@ PUT /api/v1/accounts/43/funnels/43
|
|
|
534
579
|
|
|
535
580
|
Use para: "ao ganhar um card de Vendas → criar automaticamente em Pós-Venda na etapa Agendar Instalação" (`status_change`/`won` + `duplicate_item`).
|
|
536
581
|
|
|
582
|
+
#### Tarefa automática do card — ação `create_task` (20/10/2026)
|
|
583
|
+
|
|
584
|
+
- `title` é obrigatório (texto; aceita variáveis do card). `task_type`: um dos 7 de fábrica ou um tipo ativo da conta.
|
|
585
|
+
`agenda_id` nulo = a agenda padrão da conta. `priority`: `none|low|medium|high|urgent`.
|
|
586
|
+
- **Prazo (`due`)**: `unit: 'hours'` aceita `amount` de 1 a 720; `unit: 'days'` aceita 0 a 365, com `at` ("HH:MM") e
|
|
587
|
+
`business_days: true` (dias úteis) **só em dias**. Dia útil = segunda a sexta **sem feriado de dia inteiro** da agenda
|
|
588
|
+
da tarefa (feriado de meio período não conta). O fuso é o da agenda da tarefa. Prazo que já passou nasce atrasado,
|
|
589
|
+
nunca é empurrado.
|
|
590
|
+
- **Responsável (`responsible.mode`)**: `card_owner` (primeiro responsável do card; senão o da conversa; senão a reserva `fallback_user_id`,
|
|
591
|
+
obrigatória), `fixed` (exige `user_id`), `funnel_rotation` (rodízio de quem acessa o funil) e `team_rotation` (exige
|
|
592
|
+
`team_id`).
|
|
593
|
+
- **Formato conferido no Salvar**: regra `create_task` NOVA ou alterada é conferida uma a uma; regra torta recebe 422 que
|
|
594
|
+
diz a posição da regra e o campo a consertar, e as demais regras do funil não são afetadas.
|
|
595
|
+
- **Uma tarefa por acontecimento** (repetir o gatilho do mesmo acontecimento não duplica). Card importado por planilha
|
|
596
|
+
não cria; card importado e movido depois por uma pessoa cria.
|
|
597
|
+
- A tarefa nasce **presa ao card** (campo `kanban_item_id` da tarefa; `occupies_agenda` diz se ela bloqueia o horário).
|
|
598
|
+
Ao **excluir o card** (`lionchat_kanban_items_destroy`), só é apagada a tarefa presa a ESTE card que seja
|
|
599
|
+
SIMPLES: sem conversa, sem contato, sem agendamento, sem sessão de programa, sem anexo, que não veio do Google
|
|
600
|
+
Agenda e que não é somente leitura. Toda outra tarefa presa ao card apenas se SOLTA (continua na agenda, na
|
|
601
|
+
conversa e no contato), e a tarefa que só aponta para o card por `linked_kanban_item_id` também só se solta.
|
|
602
|
+
**A tarefa AUTOMÁTICA de um card que TEM conversa grava a conversa** (o servidor associa a conversa do card à
|
|
603
|
+
tarefa), portanto NÃO é "simples": ao excluir esse card ela sobrevive e fica na conversa. Só a tarefa automática
|
|
604
|
+
de card SEM conversa morre com o card. Conversa e contato nunca são apagados. Antes de excluir, avise o usuário
|
|
605
|
+
de que as tarefas simples presas ao card também somem.
|
|
606
|
+
- Excluir etapa com `remove_stage` **não** dispara esta ação (nem nenhuma outra); `migrate_stage` dispara.
|
|
607
|
+
|
|
537
608
|
### Sistema 2: AutomationRule global — eventos da conta
|
|
538
609
|
|
|
539
610
|
`AutomationRule` é o motor geral da conta (mensagens, contatos, conversas, e também eventos Kanban). Bem mais genérico, com sistema completo de condições/ações.
|
|
@@ -191,8 +191,26 @@ Feature flag específica (ex: `feature_kanban`, `feature_captain`) está OFF.
|
|
|
191
191
|
|
|
192
192
|
### KanbanItem
|
|
193
193
|
- `"STAGE_HAS_ITEMS"` (no `funnels_update`) — você tentou remover uma etapa que ainda tem card;
|
|
194
|
-
`stages` na resposta diz quantos.
|
|
195
|
-
|
|
194
|
+
`stages` na resposta diz quantos. **Para excluir a etapa, use `lionchat_funnels_remove_stage`** (move os cards
|
|
195
|
+
em silêncio e apaga a etapa; repita a chamada com `confirm: true` até `done: true`; ver "Excluir etapa" no
|
|
196
|
+
`kanban-deep-dive.md`). Não use `migrate_stage` para isso: ele só move os cards (disparando automações) e não
|
|
197
|
+
exclui a etapa. (Card criado em etapa inexistente NÃO dá erro: é redirecionado — confira o `funnel_stage`
|
|
198
|
+
devolvido.)
|
|
199
|
+
- **`401` em `lionchat_funnels_create_2` (`migrate_stage`) ou `lionchat_funnels_remove_stage`** — o usuário não é
|
|
200
|
+
administrador e não tem a permissão "gerenciar funis". Não repita nem tente outro caminho: diga ao usuário
|
|
201
|
+
que precisa dessa permissão (ou de um administrador) para mover etapa inteira ou excluir etapa.
|
|
202
|
+
- **`409 STAGE_REMOVAL_IN_PROGRESS`** (`remove_stage`) — outra pessoa está excluindo a mesma etapa agora. Avise
|
|
203
|
+
"outra pessoa está excluindo esta etapa" (com `holder_name`, se vier) e pare; não repita. O mesmo vale para
|
|
204
|
+
`200 {done: false, reason: "assumido"}` no meio da exclusão.
|
|
205
|
+
- **`409 FUNNEL_BUSY`** (`funnels_update`) — o funil está sendo alterado agora (outra pessoa ou
|
|
206
|
+
uma exclusão de etapa). Espere alguns instantes e repita o Salvar.
|
|
207
|
+
- **`remove_stage` devolve `done: false`** — leia `reason`: `tempo` repita agora; `travado`/`faxina` espere
|
|
208
|
+
~30 s e repita; `destino_excluido` pergunte outro destino ao usuário; `assumido` avise e pare. Duas respostas
|
|
209
|
+
seguidas com `moved: 0` e `done: false` = algo preso: pare e avise. `remaining` nulo não é erro;
|
|
210
|
+
100001 significa "mais de 100 mil".
|
|
211
|
+
- **422 em `lionchat_tasks_update` (ou `_create`) com `kanban_item_id`** — a tarefa é um agendamento, uma sessão
|
|
212
|
+
de programa ou um evento do Google, que não podem ser presos a um card; ou o card não existe, é de outra
|
|
213
|
+
conta ou a pessoa não o enxerga. Só tarefa comum se prende a card.
|
|
196
214
|
- `"conversation_display_id must exist"` — conversa não existe ou foi deletada
|
|
197
215
|
- `"position must be a positive integer"` — não pode ser negativo
|
|
198
216
|
|
package/dist/tools.js
CHANGED
|
@@ -359,7 +359,7 @@ function registerListCategoriesTool(server, allEndpoints) {
|
|
|
359
359
|
// Helps LLMs build correct flow_data without hitting trial-and-error on
|
|
360
360
|
// node types, action keys, source handles, etc.
|
|
361
361
|
function registerFlowsSchemaReferenceTool(server) {
|
|
362
|
-
const reference = `LIONCHAT FLOW BUILDER — SCHEMA REFERENCE (atualizado 2026-10-
|
|
362
|
+
const reference = `LIONCHAT FLOW BUILDER — SCHEMA REFERENCE (atualizado 2026-10-20)
|
|
363
363
|
|
|
364
364
|
flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
365
365
|
|
|
@@ -374,7 +374,7 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
374
374
|
com tool_name (snake_case, max 50) + tool_description (max 500). SEM inbox_ids. No 'end' OBRIGATORIO.
|
|
375
375
|
Nodes permitidos em ai_tool: start, end, api, condition, set_variable, ai, randomizer, action,
|
|
376
376
|
send_message, note (SEM wait, wait_response, update_group, ai_call). No action de ai_tool NAO use keys da
|
|
377
|
-
aba Sistema (send_webhook/start_flow/send_conversion). Vincular ao assistente: POST /flow_tools/{id}/assistants.
|
|
377
|
+
aba Sistema (send_webhook/start_flow/send_conversion) nem create_account_task. Vincular ao assistente: POST /flow_tools/{id}/assistants.
|
|
378
378
|
Testar: POST /flow_tools/{id}/run.
|
|
379
379
|
- action (Fluxo de Acoes, 17/09/2026): NAO pertence a caixa nenhuma e roda em QUALQUER conversa de
|
|
380
380
|
QUALQUER caixa — inclusive grupo. So executa acoes: NAO pode ter send_message, wait_response,
|
|
@@ -861,6 +861,24 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
861
861
|
evento, sem laco). 'cancelled' cancela o AGENDAMENTO (desarma lembrete, mata o link de gerenciar).
|
|
862
862
|
Origem gravada = 'fluxo', ator = o proprio flow. Sem 'remarcado'/'adiado'/'nao confirmado': o bloco NAO
|
|
863
863
|
mexe em data.
|
|
864
|
+
Tarefa (aba Agenda; exige a Agenda unificada ligada na conta; NAO roda em fluxo ai_tool nem em fluxo de grupo —
|
|
865
|
+
o save aceita, o motor recusa com ERRO visivel no passo e a tela esconde o item):
|
|
866
|
+
create_account_task({title, description?, task_type, agenda_id?, priority?, occupies_agenda?,
|
|
867
|
+
due:{amount, unit:'hours'|'days', at?:'HH:MM', business_days?:true},
|
|
868
|
+
responsible:{mode:'card_owner'|'fixed'|'funnel_rotation'|'team_rotation', user_id?, team_id?, fallback_user_id?},
|
|
869
|
+
card_source:'funnel'|'trigger', funnel_id?}) — NOVO 20/10/2026 ("Criar tarefa"): cria uma tarefa COMUM da
|
|
870
|
+
Agenda presa ao card do fluxo (ou so a conversa, se nao houver card). Os campos de title a occupies_agenda
|
|
871
|
+
sao os MESMOS da acao create_task do funil (settings.automations): title obrigatorio; due em horas (1 a 720)
|
|
872
|
+
ou dias (0 a 365; at e business_days SO em dias; dia util = segunda a sexta sem feriado de DIA INTEIRO da
|
|
873
|
+
agenda da tarefa); responsible.mode exige a chave do modo (card_owner -> fallback_user_id; fixed -> user_id;
|
|
874
|
+
team_rotation -> team_id; funnel_rotation nenhuma no save, mas SEM card cai em fallback_user_id,
|
|
875
|
+
e sem ele a tarefa nao nasce). card_source 'trigger' = o card que INICIOU o fluxo (fluxo
|
|
876
|
+
que nao veio de card = ERRO); 'funnel' (padrao da tela) = o card DESTA conversa no funil funnel_id
|
|
877
|
+
(OBRIGATORIO neste modo; funil ausente ou inexistente = erro; conversa sem card naquele funil = tarefa so na
|
|
878
|
+
conversa, passo verde "sem card"). Regra torta = passo VERMELHO com o campo a consertar. Uma tarefa por
|
|
879
|
+
PASSAGEM do bloco (repeticao do mesmo passo nao duplica). Freio de 1 tarefa por segundo por conta (passo com
|
|
880
|
+
vaga futura fica verde "nasce as HH:MM:SS"). Quem agendou = o Fluxo (booking_source 'fluxo'); o historico do
|
|
881
|
+
card diz "Fluxo X criou uma tarefa ..." / "Fluxo X nao criou a tarefa: motivo".
|
|
864
882
|
Sistema (SO flow conversation e flow action): send_webhook({url,headers?,body?}), start_flow({flow_id}
|
|
865
883
|
— flow_id tem que ser de OUTRO flow: apontar pro proprio flow e aceito no save mas IGNORADO
|
|
866
884
|
EM SILENCIO na execucao, e o fluxo para ali [2026-08-18].
|
|
@@ -904,7 +922,7 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
|
|
|
904
922
|
card_source (acoes de card): 'funnel' (default, acha o card pelo funnel_id) | 'trigger' (usa o card
|
|
905
923
|
que DISPAROU o flow em card_created/card_moved/card_won/card_lost/card_opened/card_snoozed). Com 'trigger' o funnel_id e
|
|
906
924
|
ignorado — EXCETO create_kanban_item/move_kanban_stage (funil = DESTINO). Vale pra move_kanban_stage,
|
|
907
|
-
set_won/set_lost/set_open, snooze_kanban_item (sem card-gatilho = ERRO, nao pula), assign_agent_card, add_card_note, add_card_checklist, add_card_offer e
|
|
925
|
+
set_won/set_lost/set_open, snooze_kanban_item (sem card-gatilho = ERRO, nao pula), create_account_task (idem: ERRO), assign_agent_card, add_card_note, add_card_checklist, add_card_offer e
|
|
908
926
|
update_attribute (attr_source:'card').
|
|
909
927
|
Handles: "success" (sem handle error — falha vira warning e o flow continua).
|
|
910
928
|
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/endpoints.json
CHANGED
|
@@ -2447,7 +2447,7 @@
|
|
|
2447
2447
|
"method": "POST",
|
|
2448
2448
|
"path": "/api/v1/accounts/{account_id}/funnels",
|
|
2449
2449
|
"title": "Criar Funil (Kanban)",
|
|
2450
|
-
"description": "FUNIL = KANBAN (pipeline/board) — no LionChat sao a mesma coisa; pra \"criar um kanban\" use ESTA ferramenta. Cria um funil novo JA COM AS ETAPAS via funnel.stages. Obrigatorios: funnel.name. Limite de 2 funis no plano free. Retorna o funil criado com ID atribuido.",
|
|
2450
|
+
"description": "FUNIL = KANBAN (pipeline/board) — no LionChat sao a mesma coisa; pra \"criar um kanban\" use ESTA ferramenta. Cria um funil novo JA COM AS ETAPAS via funnel.stages. Obrigatorios: funnel.name. Limite de 2 funis no plano free. Retorna o funil criado com ID atribuido. `settings.removed_stages` (a lista das etapas ja excluidas) e do SERVIDOR: se voce mandar essa chave dentro de funnel.settings ela e IGNORADA (nao da erro), e o servidor a mantem sozinho. Para excluir uma etapa que tem cards, NAO reenvie o funil sem a etapa nem use migrate_stage: use lionchat_funnels_remove_stage. Regras create_task em settings.automations seguem o formato descrito em lionchat_funnels_update.",
|
|
2451
2451
|
"category": "Funis",
|
|
2452
2452
|
"params": [
|
|
2453
2453
|
{
|
|
@@ -2483,7 +2483,7 @@
|
|
|
2483
2483
|
"type": "object",
|
|
2484
2484
|
"location": "body",
|
|
2485
2485
|
"required": false,
|
|
2486
|
-
"description": "Objeto de configuracoes do funil. Chaves: goals[], agents[] e automations[] (automacoes do funil). agents[] = [{id: <id do agente>}] — cada item e um OBJETO com id, nunca numero solto; use lionchat_agents_list para os IDs; o sistema completa sozinho nome, e-mail, cargo e foto de cada agente (e o que as telas mostram). Mande so agentes DESTA conta: id de outra conta fica sem nome e nao da acesso. Cada automacao: {id, enabled, trigger_type: 'card_created'|'stage_moved'|'status_change', trigger_value (id da etapa p/ stage_moved; 'won'|'lost'|'snoozed' p/ status_change ('snoozed' desde 11/10/2026: roda quando o card e ADIADO); vazio p/ card_created), action: 'move_to_stage'|'assign_agent'|'create_note'|'update_checklist'|'apply_checklist_template'|'notify_team'|'duplicate_item'|'send_webhook', action_config: {} (ex.: move_to_stage->{stage}; assign_agent->{agent_id}; create_note->{note_text}; apply_checklist_template->{template_id}; notify_team->{message}; send_webhook->{webhook_url}; duplicate_item->{funnel_id,stage})}. ATENCAO: gravar settings SUBSTITUI o objeto inteiro — leia o funil (show) e reenvie settings completo (goals+agents+automations). NOVO (2026-07-21): settings.teams[] = [{id: <team_id>}] — vincula TIMES ao funil: membros do time ganham acesso e entram no rodízio, resolvidos AO VIVO (mudou o time, mudou o funil). Lista efetiva = agents[] + membros dos teams[]; vazia = funil aberto a todos. IMPORTANTE: settings é substituído por inteiro — reenvie completo (goals+agents+teams+automations)."
|
|
2486
|
+
"description": "Objeto de configuracoes do funil. Chaves: goals[], agents[] e automations[] (automacoes do funil). agents[] = [{id: <id do agente>}] — cada item e um OBJETO com id, nunca numero solto; use lionchat_agents_list para os IDs; o sistema completa sozinho nome, e-mail, cargo e foto de cada agente (e o que as telas mostram). Mande so agentes DESTA conta: id de outra conta fica sem nome e nao da acesso. Cada automacao: {id, enabled, trigger_type: 'card_created'|'stage_moved'|'status_change', trigger_value (id da etapa p/ stage_moved; 'won'|'lost'|'snoozed' p/ status_change ('snoozed' desde 11/10/2026: roda quando o card e ADIADO); vazio p/ card_created), action: 'move_to_stage'|'assign_agent'|'create_note'|'update_checklist'|'apply_checklist_template'|'notify_team'|'duplicate_item'|'send_webhook', action_config: {} (ex.: move_to_stage->{stage}; assign_agent->{agent_id}; create_note->{note_text}; apply_checklist_template->{template_id}; notify_team->{message}; send_webhook->{webhook_url}; duplicate_item->{funnel_id,stage})}. ATENCAO: gravar settings SUBSTITUI o objeto inteiro — leia o funil (show) e reenvie settings completo (goals+agents+automations). NOVO (2026-07-21): settings.teams[] = [{id: <team_id>}] — vincula TIMES ao funil: membros do time ganham acesso e entram no rodízio, resolvidos AO VIVO (mudou o time, mudou o funil). Lista efetiva = agents[] + membros dos teams[]; vazia = funil aberto a todos. IMPORTANTE: settings é substituído por inteiro — reenvie completo (goals+agents+teams+automations). `settings.removed_stages` (a lista das etapas ja excluidas) e do SERVIDOR: se voce mandar essa chave dentro de funnel.settings ela e IGNORADA (nao da erro), e o servidor a mantem sozinho. Para excluir uma etapa que tem cards, NAO reenvie o funil sem a etapa nem use migrate_stage: use lionchat_funnels_remove_stage. "
|
|
2487
2487
|
},
|
|
2488
2488
|
{
|
|
2489
2489
|
"name": "funnel.global_custom_attributes",
|
|
@@ -2503,7 +2503,8 @@
|
|
|
2503
2503
|
],
|
|
2504
2504
|
"related_tools": [
|
|
2505
2505
|
"lionchat_funnels_create_1",
|
|
2506
|
-
"lionchat_funnels_create_2"
|
|
2506
|
+
"lionchat_funnels_create_2",
|
|
2507
|
+
"lionchat_funnels_remove_stage"
|
|
2507
2508
|
]
|
|
2508
2509
|
},
|
|
2509
2510
|
{
|
|
@@ -2682,7 +2683,7 @@
|
|
|
2682
2683
|
"method": "PATCH",
|
|
2683
2684
|
"path": "/api/v1/accounts/{account_id}/funnels/{id}",
|
|
2684
2685
|
"title": "Atualizar Funil (Kanban)",
|
|
2685
|
-
"description": "FUNIL = KANBAN (pipeline/board) — no LionChat sao a mesma coisa. Atualiza funil. Atualiza campos do funil existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: funnel.name, funnel.stages, funnel.settings.",
|
|
2686
|
+
"description": "FUNIL = KANBAN (pipeline/board) — no LionChat sao a mesma coisa. Atualiza funil. Atualiza campos do funil existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: funnel.name, funnel.stages, funnel.settings. Regra com action 'create_task' (cria uma tarefa presa ao card quando o gatilho acontece): action_config = {title (texto, obrigatorio), description, task_type, agenda_id, priority, occupies_agenda (true|false), due: {amount, unit: 'hours'|'days', at: 'HH:MM' (so em dias), business_days: true (so em dias)}, responsible: {mode: 'card_owner'|'fixed'|'funnel_rotation'|'team_rotation', fallback_user_id (card_owner), user_id (fixed), team_id (team_rotation)}}. Cada regra create_task NOVA ou alterada e conferida uma a uma: regra torta recebe 422 que diz a posicao da regra e o campo a consertar; as demais regras do funil nao sao afetadas. `settings.removed_stages` (a lista das etapas ja excluidas) e do SERVIDOR: se voce mandar essa chave dentro de funnel.settings ela e IGNORADA (nao da erro), e o servidor a mantem sozinho. Para excluir uma etapa que tem cards, NAO reenvie o funil sem a etapa nem use migrate_stage: use lionchat_funnels_remove_stage. Reenviar funnel.stages SEM uma etapa que tem cards e recusado com 422 STAGE_HAS_ITEMS: use lionchat_funnels_remove_stage. Se o funil estiver sendo alterado naquele instante por outra pessoa ou por uma exclusao de etapa em andamento, o Salvar responde 409 com code FUNNEL_BUSY (o funil esta sendo alterado agora): espere alguns instantes e repita.",
|
|
2686
2687
|
"category": "Funis",
|
|
2687
2688
|
"params": [
|
|
2688
2689
|
{
|
|
@@ -2704,14 +2705,14 @@
|
|
|
2704
2705
|
"type": "object",
|
|
2705
2706
|
"location": "body",
|
|
2706
2707
|
"required": false,
|
|
2707
|
-
"description": "Etapas do kanban. Objeto com uma chave (slug) por etapa, e CADA ETAPA E UM OBJETO com name TEXTO: {\"novo_lead\": {\"name\": \"Novo Lead\", \"color\": \"#3B82F6\", \"position\": 1, \"description\": \"opcional\"}}. position define a ordem das colunas. Etapa como texto, numero ou null derruba a lista de funis e o Kanban da conta. No update o objeto SUBSTITUI as etapas: etapa que nao vier e REMOVIDA
|
|
2708
|
+
"description": "Etapas do kanban. Objeto com uma chave (slug) por etapa, e CADA ETAPA E UM OBJETO com name TEXTO: {\"novo_lead\": {\"name\": \"Novo Lead\", \"color\": \"#3B82F6\", \"position\": 1, \"description\": \"opcional\"}}. position define a ordem das colunas. Etapa como texto, numero ou null derruba a lista de funis e o Kanban da conta. No update o objeto SUBSTITUI as etapas: etapa que nao vier e REMOVIDA, mas so se estiver VAZIA: com cards a resposta e 422 STAGE_HAS_ITEMS, e a exclusao correta e lionchat_funnels_remove_stage. Leia com lionchat_funnels_show e reenvie todas as etapas."
|
|
2708
2709
|
},
|
|
2709
2710
|
{
|
|
2710
2711
|
"name": "funnel.settings",
|
|
2711
2712
|
"type": "object",
|
|
2712
2713
|
"location": "body",
|
|
2713
2714
|
"required": false,
|
|
2714
|
-
"description": "Objeto de configuracoes do funil. Chaves: goals[], agents[] e automations[] (automacoes do funil). agents[] = [{id: <id do agente>}] — cada item e um OBJETO com id, nunca numero solto; use lionchat_agents_list para os IDs; o sistema completa sozinho nome, e-mail, cargo e foto de cada agente (e o que as telas mostram). Mande so agentes DESTA conta: id de outra conta fica sem nome e nao da acesso. Cada automacao: {id (formato 'automation_<timestamp_ms>'), enabled: true, trigger_type: 'card_created'|'stage_moved'|'status_change', trigger_value SEMPRE preenchido ('card_created' literal p/ card_created; chave da etapa de destino no hash funnel.stages p/ stage_moved; 'won'|'lost'|'snoozed' p/ status_change ('snoozed' desde 11/10/2026: roda quando o card e ADIADO)), action: 'move_to_stage'|'assign_agent'|'create_note'|'update_checklist'|'apply_checklist_template'|'notify_team'|'duplicate_item'|'send_webhook', action_config: {} (move_to_stage->{stage}; assign_agent->{agent_id}; create_note->{note_text}; update_checklist->{checklist_updates:[{checklist_item_id,completed,text}]}; apply_checklist_template->{template_id}; notify_team->{message}; send_webhook->{webhook_url}; duplicate_item->{funnel_id,stage})}. Regras: trigger_value vazio ou enabled=false fazem a UI descartar a automacao no proximo salvar do usuario; stage_moved + move_to_stage nunca executa (anti-loop); notify_team hoje so registra em log (nao notifica ninguem); update_checklist nao aparece na UI (so via API). ATENCAO: gravar settings SUBSTITUI o objeto inteiro — leia o funil (show) e reenvie settings completo (goals+agents+automations). NOVO (2026-07-21): settings.teams[] = [{id: <team_id>}] — vincula TIMES ao funil: membros do time ganham acesso e entram no rodízio, resolvidos AO VIVO (mudou o time, mudou o funil). Lista efetiva = agents[] + membros dos teams[]; vazia = funil aberto a todos. IMPORTANTE: settings é substituído por inteiro — reenvie completo (goals+agents+teams+automations)."
|
|
2715
|
+
"description": "Objeto de configuracoes do funil. Chaves: goals[], agents[] e automations[] (automacoes do funil). agents[] = [{id: <id do agente>}] — cada item e um OBJETO com id, nunca numero solto; use lionchat_agents_list para os IDs; o sistema completa sozinho nome, e-mail, cargo e foto de cada agente (e o que as telas mostram). Mande so agentes DESTA conta: id de outra conta fica sem nome e nao da acesso. Cada automacao: {id (formato 'automation_<timestamp_ms>'), enabled: true, trigger_type: 'card_created'|'stage_moved'|'status_change', trigger_value SEMPRE preenchido ('card_created' literal p/ card_created; chave da etapa de destino no hash funnel.stages p/ stage_moved; 'won'|'lost'|'snoozed' p/ status_change ('snoozed' desde 11/10/2026: roda quando o card e ADIADO)), action: 'move_to_stage'|'assign_agent'|'create_note'|'update_checklist'|'apply_checklist_template'|'notify_team'|'duplicate_item'|'send_webhook', action_config: {} (move_to_stage->{stage}; assign_agent->{agent_id}; create_note->{note_text}; update_checklist->{checklist_updates:[{checklist_item_id,completed,text}]}; apply_checklist_template->{template_id}; notify_team->{message}; send_webhook->{webhook_url}; duplicate_item->{funnel_id,stage})}. Regras: trigger_value vazio ou enabled=false fazem a UI descartar a automacao no proximo salvar do usuario; stage_moved + move_to_stage nunca executa (anti-loop); notify_team hoje so registra em log (nao notifica ninguem); update_checklist nao aparece na UI (so via API). ATENCAO: gravar settings SUBSTITUI o objeto inteiro — leia o funil (show) e reenvie settings completo (goals+agents+automations). NOVO (2026-07-21): settings.teams[] = [{id: <team_id>}] — vincula TIMES ao funil: membros do time ganham acesso e entram no rodízio, resolvidos AO VIVO (mudou o time, mudou o funil). Lista efetiva = agents[] + membros dos teams[]; vazia = funil aberto a todos. IMPORTANTE: settings é substituído por inteiro — reenvie completo (goals+agents+teams+automations). Regra com action 'create_task' (cria uma tarefa presa ao card quando o gatilho acontece): action_config = {title (texto, obrigatorio), description, task_type, agenda_id, priority, occupies_agenda (true|false), due: {amount, unit: 'hours'|'days', at: 'HH:MM' (so em dias), business_days: true (so em dias)}, responsible: {mode: 'card_owner'|'fixed'|'funnel_rotation'|'team_rotation', fallback_user_id (card_owner), user_id (fixed), team_id (team_rotation)}}. Cada regra create_task NOVA ou alterada e conferida uma a uma: regra torta recebe 422 que diz a posicao da regra e o campo a consertar; as demais regras do funil nao sao afetadas. `settings.removed_stages` (a lista das etapas ja excluidas) e do SERVIDOR: se voce mandar essa chave dentro de funnel.settings ela e IGNORADA (nao da erro), e o servidor a mantem sozinho. Para excluir uma etapa que tem cards, NAO reenvie o funil sem a etapa nem use migrate_stage: use lionchat_funnels_remove_stage. "
|
|
2715
2716
|
}
|
|
2716
2717
|
],
|
|
2717
2718
|
"returns": "funil atualizado Inclui resolved_agents: [{id, name, avatar_url, via: 'agent'|'team'}] — quem efetivamente participa do funil (2026-07-21).",
|
|
@@ -2720,7 +2721,10 @@
|
|
|
2720
2721
|
"Alteração de status/estado",
|
|
2721
2722
|
"Atualização em massa via automação"
|
|
2722
2723
|
],
|
|
2723
|
-
"related_tools": [
|
|
2724
|
+
"related_tools": [
|
|
2725
|
+
"lionchat_funnels_show",
|
|
2726
|
+
"lionchat_funnels_remove_stage"
|
|
2727
|
+
]
|
|
2724
2728
|
},
|
|
2725
2729
|
{
|
|
2726
2730
|
"id": "lionchat_funnels_destroy",
|
|
@@ -2861,7 +2865,7 @@
|
|
|
2861
2865
|
"method": "POST",
|
|
2862
2866
|
"path": "/api/v1/accounts/{account_id}/funnels/{id}/migrate_stage",
|
|
2863
2867
|
"title": "Transferir Cards Entre Etapas do Funil (Kanban)",
|
|
2864
|
-
"description": "Funil = kanban.
|
|
2868
|
+
"description": "Funil = kanban. Move os cards de uma etapa para outra DISPARANDO tudo o que esta ligado a etapa de destino (automacoes do funil, regras, fluxos, webhooks, eventos de conversao). não exclui a etapa: a etapa de origem continua no funil, so fica vazia. Exige o cargo de administrador ou a permissao de gerenciar funis (sem ela: 401). to_funnel_id e obrigatorio (use o proprio id do funil para mover dentro dele). Para EXCLUIR a etapa movendo os cards em silencio (sem disparar nada), use lionchat_funnels_remove_stage.",
|
|
2865
2869
|
"category": "Funis",
|
|
2866
2870
|
"params": [
|
|
2867
2871
|
{
|
|
@@ -2900,10 +2904,62 @@
|
|
|
2900
2904
|
"Importação manual via API"
|
|
2901
2905
|
],
|
|
2902
2906
|
"related_tools": [
|
|
2907
|
+
"lionchat_funnels_remove_stage",
|
|
2903
2908
|
"lionchat_funnels_create",
|
|
2904
2909
|
"lionchat_funnels_create_1"
|
|
2905
2910
|
]
|
|
2906
2911
|
},
|
|
2912
|
+
{
|
|
2913
|
+
"id": "lionchat_funnels_remove_stage",
|
|
2914
|
+
"method": "POST",
|
|
2915
|
+
"path": "/api/v1/accounts/{account_id}/funnels/{id}/remove_stage",
|
|
2916
|
+
"title": "Excluir Etapa do Funil com Cards (Kanban)",
|
|
2917
|
+
"description": "Funil = kanban. EXCLUI uma etapa do funil e move os cards dela, EM SILENCIO, para a etapa de destino: o card muda de lugar mas nada dispara (nenhuma automacao do funil, regra, fluxo, webhook, evento de conversao nem aviso ao cliente). A etapa de origem e APAGADA do funil; os cards NAO sao apagados, so mudam de etapa. Exige o cargo de administrador ou a permissao de gerenciar funis (sem ela: 401). Para mover cards DISPARANDO o que esta ligado a etapa de destino, sem excluir a etapa, use lionchat_funnels_create_2 (migrate_stage). COMO USAR: a ferramenta trabalha em pedidos curtos (cada pedido move ate cerca de 8 segundos de cards, em lotes de 125). Antes de tudo, diga ao usuario quantos cards vao para onde (leia a contagem com lionchat_funnels_stage_report, passando o id do funil e a chave da etapa em `stage`, com show_won, show_lost e show_snoozed = true: sem isso o relatorio conta so os abertos nao adiados e a etapa parece ter menos cards do que vai mover) e que a etapa sera excluida, e peça o OK UMA vez. TODA chamada desta ferramenta, inclusive a PRIMEIRA (logo depois do OK do usuario), leva `confirm: true`; sem ele o conector recusa. Se o conector recusar por falta de `confirm`, reenvie com `confirm: true` sem perguntar de novo ao usuario. Depois do primeiro OK, repita a chamada (sempre com confirm: true), SEM perguntar de novo ao usuario a cada lote, ate vir done: true. RESPOSTAS: (1) 200 {done: true, moved: <TOTAL movido na exclusao inteira>, stage_removed: true, funnel: {...}} = terminou, a etapa foi excluida. (2) 200 {done: true, moved: 0} (sem stage_removed) = a etapa ja estava excluida para o mesmo destino (fim normal; por exemplo uma repeticao do pedido). (3) 200 {done: false, moved: <so deste pedido>, remaining: <cards que faltam, ou nulo>, reason} = ainda nao terminou. `remaining` pode vir nulo (a contagem nao coube no tempo do pedido) e nao e erro: repita mesmo assim; pode vir 100001, que quer dizer \"mais de 100 mil\" (nao e a contagem exata). Por `reason`: 'tempo' = acabou o tempo deste pedido, repita agora; 'travado' ou 'faxina' = o banco estava ocupado, espere cerca de 30 segundos e repita; 'destino_excluido' = a etapa de destino deixou de existir, pergunte ao usuario outro destino; 'assumido' = OUTRA PESSOA assumiu a exclusao desta etapa (vem tambem holder_name e to_stage_name): avise o usuario quem esta excluindo e para onde, e PARE, nao repita (se `holder_name` ou `to_stage_name` vier nulo, diga so \"outra pessoa esta excluindo esta etapa\", sem nome). Se duas respostas seguidas vierem com moved: 0 e done: false, PARE e avise o usuario (algo esta preso), nao fique repetindo. ERROS: 422 {error, code} com code = DESTINATION_NOT_FOUND (destino nao encontrado nesta conta), SAME_STAGE (destino igual a origem), LAST_STAGE (o funil precisa ficar com pelo menos uma etapa), ORIGIN_NOT_FOUND (a etapa a excluir nao existe neste funil), STAGE_ALREADY_REMOVED_BY_OTHER (outra pessoa ja excluiu a etapa), FINAL_SAVE_FAILED (os cards ja foram movidos mas o funil nao pode ser salvo; o `error` diz o motivo), FUNNEL_INVALID (o funil nao pode ser salvo; o `error` diz o motivo); o texto de `error` ja vem no idioma da conta, mostre-o ao usuario. 409 STAGE_REMOVAL_IN_PROGRESS = outra pessoa esta excluindo esta etapa agora (vem holder_name e to_stage_name, os dois podem ser nulos): avise o usuario \"outra pessoa esta excluindo esta etapa\" (com o nome, se vier) e pare. 401 = sem a permissao de gerenciar funis. Use lionchat_funnels_show antes para pegar as chaves das etapas (from_stage e to_stage sao as CHAVES das etapas, nao os nomes).",
|
|
2918
|
+
"category": "Funis",
|
|
2919
|
+
"params": [
|
|
2920
|
+
{
|
|
2921
|
+
"name": "id",
|
|
2922
|
+
"type": "integer",
|
|
2923
|
+
"location": "path",
|
|
2924
|
+
"required": true,
|
|
2925
|
+
"description": "ID do funil de origem (o que tem a etapa a excluir)"
|
|
2926
|
+
},
|
|
2927
|
+
{
|
|
2928
|
+
"name": "from_stage",
|
|
2929
|
+
"type": "string",
|
|
2930
|
+
"location": "body",
|
|
2931
|
+
"required": true,
|
|
2932
|
+
"description": "CHAVE da etapa a excluir (a chave do objeto funnel.stages, nao o nome exibido)"
|
|
2933
|
+
},
|
|
2934
|
+
{
|
|
2935
|
+
"name": "to_funnel_id",
|
|
2936
|
+
"type": "integer",
|
|
2937
|
+
"location": "body",
|
|
2938
|
+
"required": true,
|
|
2939
|
+
"description": "ID do funil de destino dos cards (pode ser o mesmo funil)"
|
|
2940
|
+
},
|
|
2941
|
+
{
|
|
2942
|
+
"name": "to_stage",
|
|
2943
|
+
"type": "string",
|
|
2944
|
+
"location": "body",
|
|
2945
|
+
"required": true,
|
|
2946
|
+
"description": "CHAVE da etapa de destino dos cards, dentro do funil de destino"
|
|
2947
|
+
}
|
|
2948
|
+
],
|
|
2949
|
+
"returns": "{ done: true, moved: N, stage_removed: true, funnel: {...} } ao terminar; { done: true, moved: 0 } se a etapa ja estava excluida para o mesmo destino; { done: false, moved: N, remaining: N|null, reason: 'tempo'|'faxina'|'travado'|'destino_excluido'|'assumido', holder_name?, to_stage_name? } quando ainda falta (repita, salvo 'assumido'); 422 { error, code }; 409 { error, code: 'STAGE_REMOVAL_IN_PROGRESS', holder_name, to_stage_name }; 401 sem permissao.",
|
|
2950
|
+
"common_use_cases": [
|
|
2951
|
+
"Excluir uma etapa que ainda tem cards, mandando os cards para outra etapa sem disparar automacoes",
|
|
2952
|
+
"Juntar duas etapas do funil numa so",
|
|
2953
|
+
"Tirar uma etapa que nao e mais usada, repetindo a chamada ate done: true"
|
|
2954
|
+
],
|
|
2955
|
+
"related_tools": [
|
|
2956
|
+
"lionchat_funnels_show",
|
|
2957
|
+
"lionchat_funnels_stage_report",
|
|
2958
|
+
"lionchat_funnels_update",
|
|
2959
|
+
"lionchat_funnels_create_2"
|
|
2960
|
+
],
|
|
2961
|
+
"confirm_required": true
|
|
2962
|
+
},
|
|
2907
2963
|
{
|
|
2908
2964
|
"id": "lionchat_funnels_archive",
|
|
2909
2965
|
"method": "PATCH",
|
|
@@ -3409,7 +3465,7 @@
|
|
|
3409
3465
|
"method": "DELETE",
|
|
3410
3466
|
"path": "/api/v1/accounts/{account_id}/kanban_items/{id}",
|
|
3411
3467
|
"title": "Excluir Item",
|
|
3412
|
-
"description": "Exclui
|
|
3468
|
+
"description": "Exclui o card (item do Kanban) PERMANENTEMENTE, e nao tem como desfazer. O card e o que mora dentro dele somem. Quanto as TAREFAS presas a este card, so as tarefas SIMPLES sao apagadas (as que nao tem conversa, contato, agendamento, sessao de programa, anexo, nao vieram do Google Agenda e nao sao somente leitura). As demais tarefas presas ao card NAO sao apagadas: apenas se SOLTAM do card e continuam existindo na agenda, na conversa e no contato (tarefas que apenas apontam para o card por linked_kanban_item_id tambem so se soltam). A conversa e o contato do card NAO sao apagados. Quem pede a exclusao e uma pessoa (a regra vale para a exclusao pelo painel, em lote ou por esta ferramenta); expurgos de sistema nao apagam tarefa. Confirme com o usuario antes, dizendo que as tarefas simples presas ao card tambem somem.",
|
|
3413
3469
|
"category": "Itens",
|
|
3414
3470
|
"params": [
|
|
3415
3471
|
{
|
|
@@ -3420,16 +3476,16 @@
|
|
|
3420
3476
|
"description": "ID"
|
|
3421
3477
|
}
|
|
3422
3478
|
],
|
|
3423
|
-
"returns": "
|
|
3479
|
+
"returns": "200 sem corpo (head ok)",
|
|
3424
3480
|
"common_use_cases": [
|
|
3425
3481
|
"Limpeza de dados obsoletos",
|
|
3426
3482
|
"Deduplicação manual",
|
|
3427
3483
|
"Remoção após confirmação do cliente"
|
|
3428
3484
|
],
|
|
3429
3485
|
"related_tools": [
|
|
3430
|
-
"
|
|
3431
|
-
"
|
|
3432
|
-
"
|
|
3486
|
+
"lionchat_kanban_items_show",
|
|
3487
|
+
"lionchat_kanban_items_tasks_list",
|
|
3488
|
+
"lionchat_kanban_items_list"
|
|
3433
3489
|
]
|
|
3434
3490
|
},
|
|
3435
3491
|
{
|
|
@@ -4463,8 +4519,8 @@
|
|
|
4463
4519
|
"id": "lionchat_kanban_items_destroy_1",
|
|
4464
4520
|
"method": "DELETE",
|
|
4465
4521
|
"path": "/api/v1/accounts/{account_id}/kanban_items/{id}/unlink_conversation",
|
|
4466
|
-
"title": "Desvincular Conversa",
|
|
4467
|
-
"description": "
|
|
4522
|
+
"title": "Desvincular Conversa do Card",
|
|
4523
|
+
"description": "Desvincula UMA conversa do card (rota unlink_conversation). NAO exclui o card, NAO apaga a conversa, as mensagens nem as tarefas: so desfaz o vinculo entre este card e a conversa informada em conversation_display_id (o numero da conversa que aparece na tela). Se a conversa nao estava vinculada ao card, a resposta e 422. Para excluir o card use lionchat_kanban_items_destroy.",
|
|
4468
4524
|
"category": "Itens",
|
|
4469
4525
|
"params": [
|
|
4470
4526
|
{
|
|
@@ -4482,16 +4538,16 @@
|
|
|
4482
4538
|
"description": "Display ID"
|
|
4483
4539
|
}
|
|
4484
4540
|
],
|
|
4485
|
-
"returns": "
|
|
4541
|
+
"returns": "o card (objeto) sem a conversa vinculada; 400 se faltar conversation_display_id; 422 se nao foi possivel desvincular.",
|
|
4486
4542
|
"common_use_cases": [
|
|
4487
4543
|
"Limpeza de dados obsoletos",
|
|
4488
4544
|
"Deduplicação manual",
|
|
4489
4545
|
"Remoção após confirmação do cliente"
|
|
4490
4546
|
],
|
|
4491
4547
|
"related_tools": [
|
|
4548
|
+
"lionchat_kanban_items_show",
|
|
4492
4549
|
"lionchat_kanban_items_list",
|
|
4493
|
-
"
|
|
4494
|
-
"lionchat_kanban_items_show"
|
|
4550
|
+
"lionchat_kanban_items_destroy"
|
|
4495
4551
|
]
|
|
4496
4552
|
},
|
|
4497
4553
|
{
|
|
@@ -8801,7 +8857,7 @@
|
|
|
8801
8857
|
"description": "Recorta por AGENDA (unidade). SEM este parametro a listagem ja vem recortada pelas agendas que o usuario enxerga. Na agenda PRINCIPAL entram tambem os compromissos com agenda nula."
|
|
8802
8858
|
}
|
|
8803
8859
|
],
|
|
8804
|
-
"returns": "LISTA PURA (array no topo, SEM embrulho meta/payload) — a resposta JA E a lista de tarefas da agenda. Cada tarefa traz todos os campos da tarefa (id, title, description, task_type, status, scheduled_at, completed, recurrence_*), mais assignees [{id, name, agenda_color}], assignee_ids, conversation_display_id, conversation_contact_name, contact_name/contact_phone/contact_email, meeting_url, calendar_color, is_readonly, is_private, guest_emails, attendee_rsvp e booking_id; o compromisso que veio do Booking traz tambem booking_reschedule_url e booking_calendar_url (16/10: link \"salvar na minha agenda\" para mandar ao cliente; nulo quando o compromisso foi cancelado, concluido ou ja passou). Lista vazia = []. Com filtro de data (date_start/date_end) devolve TUDO do periodo sem paginar (teto de 10.000). Sem filtro de data, pagina por `page`/`per_page` — mas a resposta NAO traz numero de paginas nem total: pagina cheia sugere que ha mais.",
|
|
8860
|
+
"returns": "LISTA PURA (array no topo, SEM embrulho meta/payload) — a resposta JA E a lista de tarefas da agenda. Cada tarefa traz todos os campos da tarefa (id, title, description, task_type, status, scheduled_at, completed, recurrence_*), mais assignees [{id, name, agenda_color}], assignee_ids, conversation_display_id, conversation_contact_name, contact_name/contact_phone/contact_email, meeting_url, calendar_color, is_readonly, is_private, guest_emails, attendee_rsvp e booking_id; o compromisso que veio do Booking traz tambem booking_reschedule_url e booking_calendar_url (16/10: link \"salvar na minha agenda\" para mandar ao cliente; nulo quando o compromisso foi cancelado, concluido ou ja passou). Lista vazia = []. Com filtro de data (date_start/date_end) devolve TUDO do periodo sem paginar (teto de 10.000). Sem filtro de data, pagina por `page`/`per_page` — mas a resposta NAO traz numero de paginas nem total: pagina cheia sugere que ha mais. Toda tarefa traz tambem `kanban_item_id` (card a que esta presa, ou nulo), `kanban_item_title` (nome do card, ou nulo), `occupies_agenda` (true|false) e `automation_event_key` (preenchido so nas tarefas criadas por automacao do funil ou bloco do fluxo; identifica o acontecimento que a gerou, nunca e editavel).",
|
|
8805
8861
|
"common_use_cases": [
|
|
8806
8862
|
"Dashboard: contar/exibir tarefas/agenda",
|
|
8807
8863
|
"Buscar com filtros antes de outra operação",
|
|
@@ -8817,7 +8873,7 @@
|
|
|
8817
8873
|
"method": "POST",
|
|
8818
8874
|
"path": "/api/v1/accounts/{account_id}/account_tasks",
|
|
8819
8875
|
"title": "Criar Tarefa",
|
|
8820
|
-
"description": "Cria uma tarefa/compromisso. Obrigatorios: title, scheduled_at. Requer feature unified_agenda + LionLab PRO. Para task_type video_call ou meeting, o link do Google Meet é gerado automaticamente após ~5s (campo meeting_url). Reuniões com convidados NÃO suportam recorrência. **Tratamento em sessoes (15/09):** com tipo `sessions_enabled`, o agendamento pelo painel/API nasce como sessao do tratamento do contato (proxima a marcar; cheio = sessao extra ate 60; concluido = ciclo novo) e a tarefa devolve `tratamento` {id, sessao, total, titulo} (nulo em compromisso comum). `treatment.*` cria o plano; `agenda_treatment_id` + `treatment_session_number` marcam uma sessao pedida.",
|
|
8876
|
+
"description": "Cria uma tarefa/compromisso. Obrigatorios: title, scheduled_at. Requer feature unified_agenda + LionLab PRO. Para task_type video_call ou meeting, o link do Google Meet é gerado automaticamente após ~5s (campo meeting_url). Reuniões com convidados NÃO suportam recorrência. **Tratamento em sessoes (15/09):** com tipo `sessions_enabled`, o agendamento pelo painel/API nasce como sessao do tratamento do contato (proxima a marcar; cheio = sessao extra ate 60; concluido = ciclo novo) e a tarefa devolve `tratamento` {id, sessao, total, titulo} (nulo em compromisso comum). `treatment.*` cria o plano; `agenda_treatment_id` + `treatment_session_number` marcam uma sessao pedida. **Presa a card (20/10):** `kanban_item_id` prende a tarefa a um card do Kanban e `occupies_agenda` diz se ela bloqueia o horario. Tentar prender a card um agendamento, uma sessao de programa ou um evento do Google devolve 422 (errors.kanban_item_id); card inexistente, de outra conta ou que a pessoa nao ve tambem e 422.",
|
|
8821
8877
|
"category": "Agenda / Tarefas",
|
|
8822
8878
|
"params": [
|
|
8823
8879
|
{
|
|
@@ -8980,9 +9036,23 @@
|
|
|
8980
9036
|
"location": "body",
|
|
8981
9037
|
"required": false,
|
|
8982
9038
|
"description": "'Marcar proxima': numero da sessao pedida (1..N); sessao ja marcada = 422 'Essa sessao ja foi marcada'"
|
|
9039
|
+
},
|
|
9040
|
+
{
|
|
9041
|
+
"name": "kanban_item_id",
|
|
9042
|
+
"type": "integer",
|
|
9043
|
+
"location": "body",
|
|
9044
|
+
"required": false,
|
|
9045
|
+
"description": "ID do card do Kanban a que a tarefa fica PRESA (a tarefa aparece na aba Tarefas do card e some junto com ele se for simples; veja lionchat_kanban_items_destroy). A pessoa precisa ver o card; card de outra conta ou invisivel = 422. Agendamento (Booking), sessao de programa/tratamento e evento importado do Google NAO podem ser presos a card (422). Diferente de linked_kanban_item_id. (enviar null para soltar)"
|
|
9046
|
+
},
|
|
9047
|
+
{
|
|
9048
|
+
"name": "occupies_agenda",
|
|
9049
|
+
"type": "boolean",
|
|
9050
|
+
"location": "body",
|
|
9051
|
+
"required": false,
|
|
9052
|
+
"description": "Ocupa a agenda: true (padrao) = o horario da tarefa conta como ocupado na agenda e no Google Agenda; false = e so um lembrete, nao bloqueia o horario. Agendamento do Booking e evento importado do Google SEMPRE ocupam (o servidor forca true)."
|
|
8983
9053
|
}
|
|
8984
9054
|
],
|
|
8985
|
-
"returns": "tarefa/agenda criado (com novo ID)",
|
|
9055
|
+
"returns": "tarefa/agenda criado (com novo ID) Toda tarefa traz tambem `kanban_item_id` (card a que esta presa, ou nulo), `kanban_item_title` (nome do card, ou nulo), `occupies_agenda` (true|false) e `automation_event_key` (preenchido so nas tarefas criadas por automacao do funil ou bloco do fluxo; identifica o acontecimento que a gerou, nunca e editavel).",
|
|
8986
9056
|
"common_use_cases": [
|
|
8987
9057
|
"Cadastro inicial de tarefa/agenda",
|
|
8988
9058
|
"Automação a partir de evento externo",
|
|
@@ -9009,7 +9079,7 @@
|
|
|
9009
9079
|
"description": "ID da tarefa"
|
|
9010
9080
|
}
|
|
9011
9081
|
],
|
|
9012
|
-
"returns": "tarefa/agenda (objeto completo com associações; compromisso do Booking traz booking_reschedule_url e booking_calendar_url — link \"salvar na minha agenda\", nulo quando não dá mais para salvar)",
|
|
9082
|
+
"returns": "tarefa/agenda (objeto completo com associações; compromisso do Booking traz booking_reschedule_url e booking_calendar_url — link \"salvar na minha agenda\", nulo quando não dá mais para salvar) Toda tarefa traz tambem `kanban_item_id` (card a que esta presa, ou nulo), `kanban_item_title` (nome do card, ou nulo), `occupies_agenda` (true|false) e `automation_event_key` (preenchido so nas tarefas criadas por automacao do funil ou bloco do fluxo; identifica o acontecimento que a gerou, nunca e editavel).",
|
|
9013
9083
|
"common_use_cases": [
|
|
9014
9084
|
"Ver dados completos antes de editar",
|
|
9015
9085
|
"Verificar estado atual antes de uma ação",
|
|
@@ -9022,7 +9092,7 @@
|
|
|
9022
9092
|
"method": "PATCH",
|
|
9023
9093
|
"path": "/api/v1/accounts/{account_id}/account_tasks/{id}",
|
|
9024
9094
|
"title": "Atualizar Tarefa",
|
|
9025
|
-
"description": "Atualiza uma tarefa. Campos alterados em video_call/meeting disparam sync com Google Calendar. Atualiza campos do tarefa/agenda existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: title, description, task_type, priority, scheduled_at, duration_minutes. **Tratamento em sessoes (15/09):** com tipo `sessions_enabled`, o agendamento pelo painel/API nasce como sessao do tratamento do contato (proxima a marcar; cheio = sessao extra ate 60; concluido = ciclo novo) e a tarefa devolve `tratamento` {id, sessao, total, titulo} (nulo em compromisso comum). `treatment.*` cria o plano; `agenda_treatment_id` + `treatment_session_number` marcam uma sessao pedida. **Compromisso de Booking (17/09):** tarefa com `booking_id` tem responsavel FIXO (o profissional do tipo de evento) — `assignee_ids` e IGNORADO (200, o resto da edicao vale). Para mudar quem atende, edite o tipo de evento. **Presenca nao conclui:** mandar `attendance` NAO muda `status`; nao conclua a tarefa so porque a presenca foi marcada (concluir compromisso de Booking encerra lembretes/pos-atendimento e dispara o gatilho de fluxo 'agendamento concluido'). A resposta traz `selo` com o rotulo resultante.",
|
|
9095
|
+
"description": "Atualiza uma tarefa. Campos alterados em video_call/meeting disparam sync com Google Calendar. Atualiza campos do tarefa/agenda existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: title, description, task_type, priority, scheduled_at, duration_minutes. **Tratamento em sessoes (15/09):** com tipo `sessions_enabled`, o agendamento pelo painel/API nasce como sessao do tratamento do contato (proxima a marcar; cheio = sessao extra ate 60; concluido = ciclo novo) e a tarefa devolve `tratamento` {id, sessao, total, titulo} (nulo em compromisso comum). `treatment.*` cria o plano; `agenda_treatment_id` + `treatment_session_number` marcam uma sessao pedida. **Compromisso de Booking (17/09):** tarefa com `booking_id` tem responsavel FIXO (o profissional do tipo de evento) — `assignee_ids` e IGNORADO (200, o resto da edicao vale). Para mudar quem atende, edite o tipo de evento. **Presenca nao conclui:** mandar `attendance` NAO muda `status`; nao conclua a tarefa so porque a presenca foi marcada (concluir compromisso de Booking encerra lembretes/pos-atendimento e dispara o gatilho de fluxo 'agendamento concluido'). A resposta traz `selo` com o rotulo resultante. **Presa a card (20/10):** `kanban_item_id` prende a tarefa a um card do Kanban e `occupies_agenda` diz se ela bloqueia o horario. Tentar prender a card um agendamento, uma sessao de programa ou um evento do Google devolve 422 (errors.kanban_item_id); card inexistente, de outra conta ou que a pessoa nao ve tambem e 422.",
|
|
9026
9096
|
"category": "Agenda / Tarefas",
|
|
9027
9097
|
"params": [
|
|
9028
9098
|
{
|
|
@@ -9192,9 +9262,23 @@
|
|
|
9192
9262
|
"location": "body",
|
|
9193
9263
|
"required": false,
|
|
9194
9264
|
"description": "'Marcar proxima': numero da sessao pedida (1..N); sessao ja marcada = 422 'Essa sessao ja foi marcada'"
|
|
9265
|
+
},
|
|
9266
|
+
{
|
|
9267
|
+
"name": "kanban_item_id",
|
|
9268
|
+
"type": "integer",
|
|
9269
|
+
"location": "body",
|
|
9270
|
+
"required": false,
|
|
9271
|
+
"description": "ID do card do Kanban a que a tarefa fica PRESA (a tarefa aparece na aba Tarefas do card e some junto com ele se for simples; veja lionchat_kanban_items_destroy). A pessoa precisa ver o card; card de outra conta ou invisivel = 422. Agendamento (Booking), sessao de programa/tratamento e evento importado do Google NAO podem ser presos a card (422). Diferente de linked_kanban_item_id. (enviar null para soltar)"
|
|
9272
|
+
},
|
|
9273
|
+
{
|
|
9274
|
+
"name": "occupies_agenda",
|
|
9275
|
+
"type": "boolean",
|
|
9276
|
+
"location": "body",
|
|
9277
|
+
"required": false,
|
|
9278
|
+
"description": "Ocupa a agenda: true (padrao) = o horario da tarefa conta como ocupado na agenda e no Google Agenda; false = e so um lembrete, nao bloqueia o horario. Agendamento do Booking e evento importado do Google SEMPRE ocupam (o servidor forca true)."
|
|
9195
9279
|
}
|
|
9196
9280
|
],
|
|
9197
|
-
"returns": "tarefa/agenda atualizado",
|
|
9281
|
+
"returns": "tarefa/agenda atualizado Toda tarefa traz tambem `kanban_item_id` (card a que esta presa, ou nulo), `kanban_item_title` (nome do card, ou nulo), `occupies_agenda` (true|false) e `automation_event_key` (preenchido so nas tarefas criadas por automacao do funil ou bloco do fluxo; identifica o acontecimento que a gerou, nunca e editavel).",
|
|
9198
9282
|
"common_use_cases": [
|
|
9199
9283
|
"Edição parcial de tarefa/agenda",
|
|
9200
9284
|
"Alteração de status/estado",
|
|
@@ -9324,7 +9408,7 @@
|
|
|
9324
9408
|
"method": "PATCH",
|
|
9325
9409
|
"path": "/api/v1/accounts/{account_id}/account_tasks/{id}/update_future",
|
|
9326
9410
|
"title": "Atualizar Futuras",
|
|
9327
|
-
"description": "Atualiza esta e todas as futuras instâncias de tarefa recorrente. Atualiza campos do tarefa/agenda existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: title, scheduled_at. **Compromisso de Booking (17/09):** tarefa com `booking_id` tem responsavel FIXO (o profissional do tipo de evento) — `assignee_ids` e IGNORADO (200, o resto da edicao vale). Para mudar quem atende, edite o tipo de evento. **Presenca nao conclui:** mandar `attendance` NAO muda `status`; nao conclua a tarefa so porque a presenca foi marcada (concluir compromisso de Booking encerra lembretes/pos-atendimento e dispara o gatilho de fluxo 'agendamento concluido'). A resposta traz `selo` com o rotulo resultante.",
|
|
9411
|
+
"description": "Atualiza esta e todas as futuras instâncias de tarefa recorrente. Atualiza campos do tarefa/agenda existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: title, scheduled_at. **Compromisso de Booking (17/09):** tarefa com `booking_id` tem responsavel FIXO (o profissional do tipo de evento) — `assignee_ids` e IGNORADO (200, o resto da edicao vale). Para mudar quem atende, edite o tipo de evento. **Presenca nao conclui:** mandar `attendance` NAO muda `status`; nao conclua a tarefa so porque a presenca foi marcada (concluir compromisso de Booking encerra lembretes/pos-atendimento e dispara o gatilho de fluxo 'agendamento concluido'). A resposta traz `selo` com o rotulo resultante. **Presa a card (20/10):** `kanban_item_id` prende a tarefa a um card do Kanban e `occupies_agenda` diz se ela bloqueia o horario. Tentar prender a card um agendamento, uma sessao de programa ou um evento do Google devolve 422 (errors.kanban_item_id); card inexistente, de outra conta ou que a pessoa nao ve tambem e 422. Na serie, `kanban_item_id` e `occupies_agenda` valem para esta e todas as ocorrencias futuras.",
|
|
9328
9412
|
"category": "Agenda / Tarefas",
|
|
9329
9413
|
"params": [
|
|
9330
9414
|
{
|
|
@@ -9361,9 +9445,23 @@
|
|
|
9361
9445
|
"location": "body",
|
|
9362
9446
|
"required": false,
|
|
9363
9447
|
"description": "Presenca: attended (compareceu) ou no_show (faltou). E um CARIMBO, nao um status — nao substitui `status`, e marcar falta NAO devolve o horario para a agenda."
|
|
9448
|
+
},
|
|
9449
|
+
{
|
|
9450
|
+
"name": "kanban_item_id",
|
|
9451
|
+
"type": "integer",
|
|
9452
|
+
"location": "body",
|
|
9453
|
+
"required": false,
|
|
9454
|
+
"description": "ID do card do Kanban a que a tarefa fica PRESA (a tarefa aparece na aba Tarefas do card e some junto com ele se for simples; veja lionchat_kanban_items_destroy). A pessoa precisa ver o card; card de outra conta ou invisivel = 422. Agendamento (Booking), sessao de programa/tratamento e evento importado do Google NAO podem ser presos a card (422). Diferente de linked_kanban_item_id. (enviar null para soltar)"
|
|
9455
|
+
},
|
|
9456
|
+
{
|
|
9457
|
+
"name": "occupies_agenda",
|
|
9458
|
+
"type": "boolean",
|
|
9459
|
+
"location": "body",
|
|
9460
|
+
"required": false,
|
|
9461
|
+
"description": "Ocupa a agenda: true (padrao) = o horario da tarefa conta como ocupado na agenda e no Google Agenda; false = e so um lembrete, nao bloqueia o horario. Agendamento do Booking e evento importado do Google SEMPRE ocupam (o servidor forca true)."
|
|
9364
9462
|
}
|
|
9365
9463
|
],
|
|
9366
|
-
"returns": "tarefa/agenda atualizado",
|
|
9464
|
+
"returns": "tarefa/agenda atualizado Toda tarefa traz tambem `kanban_item_id` (card a que esta presa, ou nulo), `kanban_item_title` (nome do card, ou nulo), `occupies_agenda` (true|false) e `automation_event_key` (preenchido so nas tarefas criadas por automacao do funil ou bloco do fluxo; identifica o acontecimento que a gerou, nunca e editavel).",
|
|
9367
9465
|
"common_use_cases": [
|
|
9368
9466
|
"Edição parcial de tarefa/agenda",
|
|
9369
9467
|
"Alteração de status/estado",
|
|
@@ -9415,7 +9513,7 @@
|
|
|
9415
9513
|
"description": "Recorta por AGENDA (unidade). SEM este parametro a listagem ja vem recortada pelas agendas que o usuario enxerga. Na agenda PRINCIPAL entram tambem os compromissos com agenda nula."
|
|
9416
9514
|
}
|
|
9417
9515
|
],
|
|
9418
|
-
"returns": "Objeto com QUATRO listas separadas, sem meta e sem payload: { overdue: [...], today: [...], tomorrow: [...], next_7_days: [...] }. Traz APENAS tarefas em aberto (status pendente ou adiada — concluida/cancelada nao aparece) e nao ocultas, ja filtradas pela permissao de quem chama (administrador ve todas; agente ve so as que criou ou em que e responsavel). Agrupamento pela data agendada: overdue = antes de hoje 00:00 (ordenado da mais recente para a mais antiga), today = hoje, tomorrow = amanha, next_7_days = ate 7 dias a frente. Cada item e a tarefa completa (serializacao do modelo AccountTask, ja com assignees/assignee_ids, completed, dados de recorrencia, conversation_display_id, nome/telefone/email do contato, meeting_url e links de booking). Sem paginacao (teto de 10 mil por grupo).",
|
|
9516
|
+
"returns": "Objeto com QUATRO listas separadas, sem meta e sem payload: { overdue: [...], today: [...], tomorrow: [...], next_7_days: [...] }. Traz APENAS tarefas em aberto (status pendente ou adiada — concluida/cancelada nao aparece) e nao ocultas, ja filtradas pela permissao de quem chama (administrador ve todas; agente ve so as que criou ou em que e responsavel). Agrupamento pela data agendada: overdue = antes de hoje 00:00 (ordenado da mais recente para a mais antiga), today = hoje, tomorrow = amanha, next_7_days = ate 7 dias a frente. Cada item e a tarefa completa (serializacao do modelo AccountTask, ja com assignees/assignee_ids, completed, dados de recorrencia, conversation_display_id, nome/telefone/email do contato, meeting_url e links de booking). Sem paginacao (teto de 10 mil por grupo). Toda tarefa traz tambem `kanban_item_id` (card a que esta presa, ou nulo), `kanban_item_title` (nome do card, ou nulo), `occupies_agenda` (true|false) e `automation_event_key` (preenchido so nas tarefas criadas por automacao do funil ou bloco do fluxo; identifica o acontecimento que a gerou, nunca e editavel).",
|
|
9419
9517
|
"common_use_cases": [
|
|
9420
9518
|
"Dashboard: contar/exibir tarefas/agenda",
|
|
9421
9519
|
"Buscar com filtros antes de outra operação",
|
|
@@ -9458,7 +9556,7 @@
|
|
|
9458
9556
|
"method": "GET",
|
|
9459
9557
|
"path": "/api/v1/accounts/{account_id}/kanban_items/{id}/tasks",
|
|
9460
9558
|
"title": "Tarefas do Card",
|
|
9461
|
-
"description": "Lista
|
|
9559
|
+
"description": "Lista as TAREFAS DO CARD (aba Tarefas do card): as tarefas PRESAS a este card (kanban_item_id) MAIS as tarefas sem card das conversas dele (principal + vinculadas). Tarefa presa a OUTRO card nao aparece aqui, mesmo na mesma conversa. Respeita a visibilidade da Agenda de quem chama. Paginada (per_page padrao 10, maximo 100). Filtro opcional scope: active (pendentes+adiadas) ou done (concluidas+canceladas). Cada tarefa traz `selo` (17/09): o rotulo UNICO que o painel mostra ao lado dela, so de leitura — `cancelled` > `no_show` / `attended` > `completed` > `snoozed` > `rescheduled` > `pending`. Para dizer o que aconteceu com o compromisso, leia `selo`: `status: pending` sozinho NAO significa que nada aconteceu (a pessoa pode ter faltado).",
|
|
9462
9560
|
"category": "Agenda / Tarefas",
|
|
9463
9561
|
"params": [
|
|
9464
9562
|
{
|
|
@@ -9483,7 +9581,7 @@
|
|
|
9483
9581
|
"description": "Página"
|
|
9484
9582
|
}
|
|
9485
9583
|
],
|
|
9486
|
-
"returns": "Lista pura (array), sem embrulho: a resposta E o array de tarefas do card, juntando as tarefas
|
|
9584
|
+
"returns": "Lista pura (array), sem embrulho: a resposta E o array de tarefas do card, juntando as tarefas presas ao card com as sem card das conversas dele. Cada tarefa traz os campos do registro mais `assignees` (id, nome, cor na agenda), `assignee_ids`, `completed`, dados de recorrencia (recurrence_type/count/group_id), `conversation_display_id`, `conversation_contact_name` e dados do contato (contact_name, contact_phone, contact_email). Paginada: 10 por pagina por padrao (parametros `page` e `per_page`, teto 100) e o total NAO vem no corpo. Filtro opcional `scope`: active (pendentes+adiadas) ou done (concluidas+canceladas). Toda tarefa traz tambem `kanban_item_id` (card a que esta presa, ou nulo), `kanban_item_title` (nome do card, ou nulo), `occupies_agenda` (true|false) e `automation_event_key` (preenchido so nas tarefas criadas por automacao do funil ou bloco do fluxo; identifica o acontecimento que a gerou, nunca e editavel).",
|
|
9487
9585
|
"common_use_cases": [
|
|
9488
9586
|
"Dashboard: contar/exibir tarefas/agenda",
|
|
9489
9587
|
"Buscar com filtros antes de outra operação",
|
|
@@ -9500,7 +9598,7 @@
|
|
|
9500
9598
|
"method": "GET",
|
|
9501
9599
|
"path": "/api/v1/accounts/{account_id}/kanban_items/{id}/next_task",
|
|
9502
9600
|
"title": "Próxima Tarefa do Card",
|
|
9503
|
-
"description": "Retorna a PROXIMA tarefa pendente ou adiada do card (a de menor scheduled_at),
|
|
9601
|
+
"description": "Retorna a PROXIMA tarefa pendente ou adiada do card (a de menor scheduled_at), pela mesma regra da aba Tarefas do card: tarefas presas ao card (kanban_item_id) mais as sem card das conversas dele, inclusive card sem conversa. Devolve UM OBJETO de tarefa — nao ha meta/payload nem paginacao — e `{}` (objeto vazio) quando nao ha nenhuma. Nao procure um array: procurar array aqui faz voce responder \"esse card nao tem proxima tarefa\" quando tem. Segue a MESMA regua de privacidade do campo `next_task` que vem dentro do proprio card: administrador ve todas; atendente so ve tarefa de que e dono ou responsavel. `selo` (17/09): cada tarefa traz o rotulo UNICO que o painel mostra, so de leitura (`cancelled` > `no_show` / `attended` > `completed` > `snoozed` > `rescheduled` > `pending`); `status: pending` sozinho NAO significa que nada aconteceu.",
|
|
9504
9602
|
"category": "Agenda / Tarefas",
|
|
9505
9603
|
"params": [
|
|
9506
9604
|
{
|
|
@@ -9511,7 +9609,7 @@
|
|
|
9511
9609
|
"description": "ID do card Kanban"
|
|
9512
9610
|
}
|
|
9513
9611
|
],
|
|
9514
|
-
"returns": "A tarefa (objeto unico, mesmo formato de uma tarefa da agenda) ou `{}` quando nao ha nenhuma pendente/adiada. Sem meta, sem payload e sem paginacao.",
|
|
9612
|
+
"returns": "A tarefa (objeto unico, mesmo formato de uma tarefa da agenda) ou `{}` quando nao ha nenhuma pendente/adiada. Sem meta, sem payload e sem paginacao. Toda tarefa traz tambem `kanban_item_id` (card a que esta presa, ou nulo), `kanban_item_title` (nome do card, ou nulo), `occupies_agenda` (true|false) e `automation_event_key` (preenchido so nas tarefas criadas por automacao do funil ou bloco do fluxo; identifica o acontecimento que a gerou, nunca e editavel).",
|
|
9515
9613
|
"common_use_cases": [
|
|
9516
9614
|
"Dashboard: contar/exibir tarefas/agenda",
|
|
9517
9615
|
"Buscar com filtros antes de outra operação",
|
|
@@ -12505,6 +12603,40 @@
|
|
|
12505
12603
|
"lionchat_companies_update"
|
|
12506
12604
|
]
|
|
12507
12605
|
},
|
|
12606
|
+
{
|
|
12607
|
+
"id": "lionchat_companies_import_status",
|
|
12608
|
+
"method": "GET",
|
|
12609
|
+
"path": "/api/v1/accounts/{account_id}/companies/import_status/{import_id}",
|
|
12610
|
+
"title": "Andamento da Importacao de Empresas",
|
|
12611
|
+
"description": "Acompanha a importacao de empresas em massa que ja foi enviada (lionchat_companies_bulk_create ou o botao 'Importar empresas' da tela). O import_id e o codigo devolvido na hora de importar — a importacao roda em segundo plano, entao consulte de tempos em tempos ate o status virar 'completed' ou 'failed'. errors = linhas que NAO entraram (sem nome, mais de uma empresa com o mesmo nome sem CNPJ e sem site), com o numero da linha da planilha (o titulo e a linha 1, entao o item N da lista e a linha N+1). skipped = campos que ficaram em branco por valor invalido, com o motivo; a empresa entrou mesmo assim. O registro vive 24 horas: depois disso volta 404 mesmo que a importacao tenha dado certo, entao 404 nao significa fracasso. Exige o modulo Empresas ligado e administrador ou cargo com 'Exportar e importar contatos'. ENTERPRISE-only.",
|
|
12612
|
+
"category": "Empresas",
|
|
12613
|
+
"params": [
|
|
12614
|
+
{
|
|
12615
|
+
"name": "account_id",
|
|
12616
|
+
"type": "integer",
|
|
12617
|
+
"location": "path",
|
|
12618
|
+
"required": true,
|
|
12619
|
+
"description": "ID da conta"
|
|
12620
|
+
},
|
|
12621
|
+
{
|
|
12622
|
+
"name": "import_id",
|
|
12623
|
+
"type": "string",
|
|
12624
|
+
"location": "path",
|
|
12625
|
+
"required": true,
|
|
12626
|
+
"description": "Codigo da importacao (UUID) devolvido por lionchat_companies_bulk_create"
|
|
12627
|
+
}
|
|
12628
|
+
],
|
|
12629
|
+
"returns": "{ status: 'queued'|'processing'|'completed'|'failed', total, processed, created, updated, error_count, errors: [{row, message}], skipped_fields, skipped: [{row, field, message}], blank_rows, error_message? } — e { error } com 404 se o codigo nao existe ou ja passou de 24 horas",
|
|
12630
|
+
"common_use_cases": [
|
|
12631
|
+
"Avisar quando a lista de empresas terminou de entrar",
|
|
12632
|
+
"Descobrir quantas empresas foram criadas e quantas foram atualizadas",
|
|
12633
|
+
"Ver quais linhas nao entraram e por que"
|
|
12634
|
+
],
|
|
12635
|
+
"related_tools": [
|
|
12636
|
+
"lionchat_companies_list",
|
|
12637
|
+
"lionchat_companies_search"
|
|
12638
|
+
]
|
|
12639
|
+
},
|
|
12508
12640
|
{
|
|
12509
12641
|
"id": "lionchat_offers_list",
|
|
12510
12642
|
"method": "GET",
|
|
@@ -31506,7 +31638,7 @@
|
|
|
31506
31638
|
"method": "GET",
|
|
31507
31639
|
"path": "/api/v1/accounts/{account_id}/lead_forms/{lead_form_id}/responses",
|
|
31508
31640
|
"title": "Listar Respostas do Formulario",
|
|
31509
|
-
"description": "Lista as respostas (25 por pagina, colunas leves — as respostas em si NAO vem na lista, use o show). Filtra por status e janela de dias.",
|
|
31641
|
+
"description": "Lista as respostas (25 por pagina, colunas leves — as respostas em si NAO vem na lista, use o show). Filtra por status e janela de dias. Cada linha traz filled_by: null (o cliente pelo link) ou {id, name}/{id, removed: true} (a equipe preencheu pela conversa — essas respostas ficam fora do funil e dos contadores, desde 20/10/2026).",
|
|
31510
31642
|
"category": "Formularios",
|
|
31511
31643
|
"params": [
|
|
31512
31644
|
{
|
|
@@ -31571,7 +31703,7 @@
|
|
|
31571
31703
|
"description": "ID da resposta"
|
|
31572
31704
|
}
|
|
31573
31705
|
],
|
|
31574
|
-
"returns": "{id, status, contact ({id, name, phone} | {id: null, name, phone, pending: true} | null), current_node_label, started_at, completed_at, abandoned_at, created_at, answers: [{label, value_label, at, download_url?}] ordenado por at, milestones: [{node_id, name, at}], effects: [{node_id, label, state: pending|done|error, error, status (HTTP), url_short, at}], conversation: {id, display_id}|null, utm_params}. ATENÇÃO em answers: (1) o bloco de Ações grava entradas sintéticas com chave \"<node_id>::<n>\" e o fim degradado grava \"_walk_ended\" — nem toda chave é id de bloco; (2) no bloco de Agendamento value_label é o ID da reserva, não a data (use lionchat_contacts_form_entries_show, que mostra a data); (3) envio de WhatsApp pulado por falta de telefone aparece como entrada vazia do bloco de mensagem. Motivos possíveis em effects.error: invalid_method, invalid_url, http_<código> (http_0 = falha de transporte sem código), timeout, ssrf_blocked, result_too_large, stale, effect_failed, effect_runs_exceeded, budget_exceeded, no_ai_key, ai_error.",
|
|
31706
|
+
"returns": "{id, status, filled_by ({id, name} | {id, removed: true} | null — null = o cliente pelo link; preenchimento pela equipe na conversa desde 20/10/2026), contact ({id, name, phone} | {id: null, name, phone, pending: true} | null), current_node_label, started_at, completed_at, abandoned_at, created_at, answers: [{label, value_label, at, download_url?}] ordenado por at, milestones: [{node_id, name, at}], effects: [{node_id, label, state: pending|done|error, error, status (HTTP), url_short, at}], conversation: {id, display_id}|null, utm_params}. ATENÇÃO em answers: (1) o bloco de Ações grava entradas sintéticas com chave \"<node_id>::<n>\" e o fim degradado grava \"_walk_ended\" — nem toda chave é id de bloco; (2) no bloco de Agendamento value_label é o ID da reserva, não a data (use lionchat_contacts_form_entries_show, que mostra a data); (3) envio de WhatsApp pulado por falta de telefone aparece como entrada vazia do bloco de mensagem. Motivos possíveis em effects.error: invalid_method, invalid_url, http_<código> (http_0 = falha de transporte sem código), timeout, ssrf_blocked, result_too_large, stale, effect_failed, effect_runs_exceeded, budget_exceeded, no_ai_key, ai_error.",
|
|
31575
31707
|
"common_use_cases": [
|
|
31576
31708
|
"Ler o que o lead respondeu",
|
|
31577
31709
|
"Investigar por que a consulta externa/IA falhou (effects)",
|
|
@@ -32009,7 +32141,7 @@
|
|
|
32009
32141
|
"description": "ID do contato"
|
|
32010
32142
|
}
|
|
32011
32143
|
],
|
|
32012
|
-
"returns": "{payload: [{source: 'lead_form'|'meta_lead'|'custom_webhook'|'flow', id, title (nome do formulário/fluxo/integração), status ('received' nas origens de fora; status da resposta no formulário), at (ISO), count (nº de campos gravados), conversation: {id, display_id} | null}], meta: {total, truncated}}",
|
|
32144
|
+
"returns": "{payload: [{source: 'lead_form'|'meta_lead'|'custom_webhook'|'flow', id, title (nome do formulário/fluxo/integração), status ('received' nas origens de fora; status da resposta no formulário), at (ISO), count (nº de campos gravados), conversation: {id, display_id} | null, filled_by: {id, name} | {id, removed: true} | null (só 'lead_form'; preenchido pela equipe na conversa)}], meta: {total, truncated}}",
|
|
32013
32145
|
"common_use_cases": [
|
|
32014
32146
|
"Responder 'de onde veio este lead e o que ele preencheu?'",
|
|
32015
32147
|
"Achar a resposta do formulário pra abrir com lionchat_contacts_form_entries_show",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lionchat/mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.32.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",
|