@lionchat/mcp-server 1.31.0 → 1.33.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 +26 -4
- package/dist/docs/resources/agenda-multiplas-unidades.md +56 -0
- package/dist/docs/resources/api-conventions.md +27 -0
- package/dist/docs/resources/assinatura-eletronica.md +79 -9
- package/dist/docs/resources/best-practices.md +23 -5
- package/dist/docs/resources/data-model.md +25 -2
- package/dist/docs/resources/filtros-e-relatorios.md +19 -4
- package/dist/docs/resources/flowbuilder-design-guide.md +80 -9
- package/dist/docs/resources/flowbuilder-patterns.md +33 -0
- package/dist/docs/resources/formularios-publicos.md +21 -2
- package/dist/docs/resources/kanban-deep-dive.md +187 -9
- package/dist/docs/resources/reports-guide.md +37 -7
- package/dist/docs/resources/troubleshooting.md +22 -4
- package/dist/tools.js +57 -13
- package/dist/tools.js.map +1 -1
- package/endpoints.json +908 -114
- package/package.json +1 -1
package/endpoints.json
CHANGED
|
@@ -683,7 +683,7 @@
|
|
|
683
683
|
"type": "string",
|
|
684
684
|
"location": "query",
|
|
685
685
|
"required": false,
|
|
686
|
-
"description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
|
|
686
|
+
"description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422 assignee_id aceita 'current_user' (quem pergunta)."
|
|
687
687
|
},
|
|
688
688
|
{
|
|
689
689
|
"name": "contact_filters",
|
|
@@ -1443,12 +1443,46 @@
|
|
|
1443
1443
|
"lionchat_conversations_destroy_2"
|
|
1444
1444
|
]
|
|
1445
1445
|
},
|
|
1446
|
+
{
|
|
1447
|
+
"id": "lionchat_conversations_bulk_destroy",
|
|
1448
|
+
"method": "POST",
|
|
1449
|
+
"path": "/api/v1/accounts/{account_id}/conversations/bulk_destroy",
|
|
1450
|
+
"title": "Excluir Conversas em Lote",
|
|
1451
|
+
"description": "APAGA DE VEZ varias conversas (mensagens e anexos juntos), numa acao de fundo. Irreversivel: exige confirm:true depois de listar ao usuario QUAIS conversas vao sair. So administrador ou cargo com 'Excluir conversa' (conversation_delete); a permissao e conferida conversa a conversa e as que o usuario nao pode excluir sao puladas em silencio. Responde 200 na hora (o trabalho segue em segundo plano). Ate 300 ids por chamada (acima = 422 bulk_ids_limit_exceeded).",
|
|
1452
|
+
"category": "Conversas",
|
|
1453
|
+
"confirm_required": true,
|
|
1454
|
+
"params": [
|
|
1455
|
+
{
|
|
1456
|
+
"name": "ids",
|
|
1457
|
+
"type": "array",
|
|
1458
|
+
"location": "body",
|
|
1459
|
+
"required": true,
|
|
1460
|
+
"description": "display_id das conversas (o numero que aparece na tela), ate 300"
|
|
1461
|
+
},
|
|
1462
|
+
{
|
|
1463
|
+
"name": "batch_id",
|
|
1464
|
+
"type": "string",
|
|
1465
|
+
"location": "body",
|
|
1466
|
+
"required": false,
|
|
1467
|
+
"description": "Identificador do lote (opcional); volta no aviso de fim bulk_action.finished"
|
|
1468
|
+
}
|
|
1469
|
+
],
|
|
1470
|
+
"returns": "200 sem corpo; o fim chega pelo evento bulk_action.finished",
|
|
1471
|
+
"common_use_cases": [
|
|
1472
|
+
"Limpar conversas de teste ou de spam escolhidas pelo usuario"
|
|
1473
|
+
],
|
|
1474
|
+
"related_tools": [
|
|
1475
|
+
"lionchat_conversations_destroy",
|
|
1476
|
+
"lionchat_conversations_filter",
|
|
1477
|
+
"lionchat_conversations_list"
|
|
1478
|
+
]
|
|
1479
|
+
},
|
|
1446
1480
|
{
|
|
1447
1481
|
"id": "lionchat_conversations_filter",
|
|
1448
1482
|
"method": "POST",
|
|
1449
1483
|
"path": "/api/v1/accounts/{account_id}/conversations/filter",
|
|
1450
1484
|
"title": "Filtrar Conversas",
|
|
1451
|
-
"description": "Filtra conversas com condicoes avancadas (payload de condicoes, mesmas da tela). Ordenacao fixa last_activity_at DESC, 25/pagina.\n\nCHAVES FILTRAVEIS (attribute_key -> operadores): status, chat_type, priority (equal_to/not_equal_to); assignee_id, inbox_id, team_id, campaign_id, captain_assistant_id, labels (equal_to/not_equal_to/is_present/is_not_present); display_id (equal_to/not_equal_to/contains/does_not_contain); created_at, last_activity_at (is_greater_than/is_less_than/days_before — valor de data); browser_language, conversation_language, referer, mail_subject; card_funnel_stage (conversa POR CARD do Kanban — valor 'funnel:<id>' ou 'stage:<id>:<chave_etapa>'); QUALQUER outra chave = atributo personalizado (use custom_attribute_type na condicao: 'conversation_attribute' ou 'contact_attribute'). 'contact_attribute' le a FICHA DO CONTATO da conversa (funciona desde 24/09/2026 — antes era ignorado): e o jeito de achar lead de formulario da Meta por meta_lead_form_name/meta_lead_ad_name/origin_first_*, que so existem no contato. A chave precisa de atributo DE CONTATO cadastrado. 'company_attribute' (atributo de EMPRESA) NAO vale aqui: 422 (desde 2026-10-16) — filtre contatos com lionchat_contacts_filter.\n\nCada condicao: {attribute_key, filter_operator, values[], query_operator:'and'|'or', custom_attribute_type?}. Operador fora da lista da chave = 422 'Operador invalido' (ex: labels NAO aceita 'includes' — use equal_to). [2026-07-25] O operador contains em display_id agora funciona de verdade (busca por trecho do numero da conversa; antes dava erro de banco). NOTA 18/08: data FIXA com is_greater_than/is_less_than corta o dia no FUSO DA CONTA (padrao America/Sao_Paulo), nao mais em UTC — mesmo criterio das datas relativas.",
|
|
1485
|
+
"description": "Filtra conversas com condicoes avancadas (payload de condicoes, mesmas da tela). Ordenacao fixa last_activity_at DESC, 25/pagina.\n\nCHAVES FILTRAVEIS (attribute_key -> operadores): status, chat_type, priority (equal_to/not_equal_to); assignee_id, inbox_id, team_id, campaign_id, captain_assistant_id, labels (equal_to/not_equal_to/is_present/is_not_present); display_id (equal_to/not_equal_to/contains/does_not_contain); created_at, last_activity_at (is_greater_than/is_less_than/days_before — valor de data); browser_language, conversation_language, referer, mail_subject; card_funnel_stage (conversa POR CARD do Kanban — valor 'funnel:<id>' ou 'stage:<id>:<chave_etapa>'); origin_paid (25/10/2026, equal_to/not_equal_to — 'veio de anuncio pago?': valores paid, not_paid, unknown, unclassified; paid = clique no anuncio OU formulario do anuncio; not_equal_to paid inclui a conversa sem origem); QUALQUER outra chave = atributo personalizado (use custom_attribute_type na condicao: 'conversation_attribute' ou 'contact_attribute'). 'contact_attribute' le a FICHA DO CONTATO da conversa (funciona desde 24/09/2026 — antes era ignorado): e o jeito de achar lead de formulario da Meta por meta_lead_form_name/meta_lead_ad_name/origin_first_*, que so existem no contato. A chave precisa de atributo DE CONTATO cadastrado. 'company_attribute' (atributo de EMPRESA) NAO vale aqui: 422 (desde 2026-10-16) — filtre contatos com lionchat_contacts_filter.\n\nCada condicao: {attribute_key, filter_operator, values[], query_operator:'and'|'or', custom_attribute_type?}. Operador fora da lista da chave = 422 'Operador invalido' (ex: labels NAO aceita 'includes' — use equal_to). [2026-07-25] O operador contains em display_id agora funciona de verdade (busca por trecho do numero da conversa; antes dava erro de banco). NOTA 18/08: data FIXA com is_greater_than/is_less_than corta o dia no FUSO DA CONTA (padrao America/Sao_Paulo), nao mais em UTC — mesmo criterio das datas relativas. [27/10/2026] assignee_id aceita o valor 'current_user' (= quem esta perguntando); texto em assignee_id que nao seja numero nem 'current_user' = 422.",
|
|
1452
1486
|
"category": "Conversas",
|
|
1453
1487
|
"params": [
|
|
1454
1488
|
{
|
|
@@ -1501,7 +1535,7 @@
|
|
|
1501
1535
|
"type": "string",
|
|
1502
1536
|
"location": "query",
|
|
1503
1537
|
"required": false,
|
|
1504
|
-
"description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
|
|
1538
|
+
"description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422 assignee_id aceita 'current_user' (quem pergunta)."
|
|
1505
1539
|
},
|
|
1506
1540
|
{
|
|
1507
1541
|
"name": "contact_filters",
|
|
@@ -1953,7 +1987,7 @@
|
|
|
1953
1987
|
"method": "GET",
|
|
1954
1988
|
"path": "/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages",
|
|
1955
1989
|
"title": "Listar Mensagens",
|
|
1956
|
-
"description": "Lista mensagens de uma conversa (mais recentes primeiro). Lista mensagens paginados (per_page padrão 25, máximo 100). Filtros disponíveis: page, before_id. Retorna meta (contadores) + payload (array de mensagem).",
|
|
1990
|
+
"description": "Lista mensagens de uma conversa (mais recentes primeiro). Lista mensagens paginados (per_page padrão 25, máximo 100). Filtros disponíveis: page, before_id. Retorna meta (contadores) + payload (array de mensagem). Cada mensagem traz original_sent_at (20/10/2026): unix s da hora em que foi ENVIADA quando chegou atrasada mais de 2 min (WhatsApp oficial e QR Code, mensagens de 20/10/2026 em diante); null no resto. created_at continua sendo a hora de CHEGADA e a ordem da lista nao muda.",
|
|
1957
1991
|
"category": "Mensagens",
|
|
1958
1992
|
"params": [
|
|
1959
1993
|
{
|
|
@@ -2045,7 +2079,7 @@
|
|
|
2045
2079
|
"type": "array",
|
|
2046
2080
|
"location": "body",
|
|
2047
2081
|
"required": false,
|
|
2048
|
-
"description": "
|
|
2082
|
+
"description": "Lista de blob_id devolvidos por lionchat_upload_create (arquivo por link: foto, vídeo, áudio, PDF, documento). Funciona também na conversa de um grupo do WhatsApp (caixa QR Code)"
|
|
2049
2083
|
},
|
|
2050
2084
|
{
|
|
2051
2085
|
"name": "content_attributes",
|
|
@@ -2200,7 +2234,7 @@
|
|
|
2200
2234
|
"type": "string",
|
|
2201
2235
|
"location": "query",
|
|
2202
2236
|
"required": false,
|
|
2203
|
-
"description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
|
|
2237
|
+
"description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422 assignee_id aceita 'current_user' (quem pergunta)."
|
|
2204
2238
|
},
|
|
2205
2239
|
{
|
|
2206
2240
|
"name": "contact_filters",
|
|
@@ -2429,7 +2463,7 @@
|
|
|
2429
2463
|
"method": "GET",
|
|
2430
2464
|
"path": "/api/v1/accounts/{account_id}/funnels",
|
|
2431
2465
|
"title": "Listar Funis (Kanbans)",
|
|
2432
|
-
"description": "FUNIL = KANBAN (pipeline/board) — no LionChat sao a mesma coisa. Lista todos os funis com contagem de itens por etapa (
|
|
2466
|
+
"description": "FUNIL = KANBAN (pipeline/board) — no LionChat sao a mesma coisa. Lista todos os funis com contagem de itens por etapa (stage_items_count, contada na hora em todo pedido desde 2026-10-23; os dados dos funis ficam lembrados 5 min). NAO e paginado. ACESSO (2026-06): retorna SO os funis visiveis pro usuario do token (admin, permissao kanban, funil aberto ou participante). Funil nao-visivel da 404 no show.",
|
|
2433
2467
|
"category": "Funis",
|
|
2434
2468
|
"params": [],
|
|
2435
2469
|
"returns": "array de funis (cada um com stage_items_count); sem meta/paginacao Inclui resolved_agents: [{id, name, avatar_url, via: 'agent'|'team'}] — quem efetivamente participa do funil (2026-07-21).",
|
|
@@ -2447,7 +2481,7 @@
|
|
|
2447
2481
|
"method": "POST",
|
|
2448
2482
|
"path": "/api/v1/accounts/{account_id}/funnels",
|
|
2449
2483
|
"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.",
|
|
2484
|
+
"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
2485
|
"category": "Funis",
|
|
2452
2486
|
"params": [
|
|
2453
2487
|
{
|
|
@@ -2483,7 +2517,7 @@
|
|
|
2483
2517
|
"type": "object",
|
|
2484
2518
|
"location": "body",
|
|
2485
2519
|
"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)."
|
|
2520
|
+
"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. ORDEM E ACOES MORTAS (22/10/2026): a ordem de automations[] e a ordem de execucao — regras do mesmo acontecimento (ex.: duas em status_change 'won') rodam de cima para baixo; para reordenar, reenvie a lista inteira na ordem nova (a configuracao de cada regra nao muda). NAO grave assign_agent com status_change 'won'/'lost' (a regra roda com o card ja fechado e card fechado nao aceita responsavel: nao faz nada) nem notify_team (so escreve log, nao avisa ninguem). O servidor aceita os dois, mas a regra fica morta e o painel mostra um aviso amarelo nela. "
|
|
2487
2521
|
},
|
|
2488
2522
|
{
|
|
2489
2523
|
"name": "funnel.global_custom_attributes",
|
|
@@ -2503,7 +2537,8 @@
|
|
|
2503
2537
|
],
|
|
2504
2538
|
"related_tools": [
|
|
2505
2539
|
"lionchat_funnels_create_1",
|
|
2506
|
-
"lionchat_funnels_create_2"
|
|
2540
|
+
"lionchat_funnels_create_2",
|
|
2541
|
+
"lionchat_funnels_remove_stage"
|
|
2507
2542
|
]
|
|
2508
2543
|
},
|
|
2509
2544
|
{
|
|
@@ -2682,7 +2717,7 @@
|
|
|
2682
2717
|
"method": "PATCH",
|
|
2683
2718
|
"path": "/api/v1/accounts/{account_id}/funnels/{id}",
|
|
2684
2719
|
"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.",
|
|
2720
|
+
"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), duration_minutes (22/10/2026: minutos que a tarefa ocupa, inteiro de 1 a 1440; ausente ou null = o tempo do TIPO: Tarefa/Follow-up/Prazo 15, Ligacao/Personalizado 30, Reuniao/Call 60, tipo da conta 30), 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
2721
|
"category": "Funis",
|
|
2687
2722
|
"params": [
|
|
2688
2723
|
{
|
|
@@ -2704,14 +2739,14 @@
|
|
|
2704
2739
|
"type": "object",
|
|
2705
2740
|
"location": "body",
|
|
2706
2741
|
"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
|
|
2742
|
+
"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
2743
|
},
|
|
2709
2744
|
{
|
|
2710
2745
|
"name": "funnel.settings",
|
|
2711
2746
|
"type": "object",
|
|
2712
2747
|
"location": "body",
|
|
2713
2748
|
"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)."
|
|
2749
|
+
"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), duration_minutes (22/10/2026: minutos que a tarefa ocupa, inteiro de 1 a 1440; ausente ou null = o tempo do TIPO: Tarefa/Follow-up/Prazo 15, Ligacao/Personalizado 30, Reuniao/Call 60, tipo da conta 30), 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. ORDEM E ACOES MORTAS (22/10/2026): a ordem de automations[] e a ordem de execucao — regras do mesmo acontecimento (ex.: duas em status_change 'won') rodam de cima para baixo; para reordenar, reenvie a lista inteira na ordem nova (a configuracao de cada regra nao muda). NAO grave assign_agent com status_change 'won'/'lost' (a regra roda com o card ja fechado e card fechado nao aceita responsavel: nao faz nada) nem notify_team (so escreve log, nao avisa ninguem). O servidor aceita os dois, mas a regra fica morta e o painel mostra um aviso amarelo nela. "
|
|
2715
2750
|
}
|
|
2716
2751
|
],
|
|
2717
2752
|
"returns": "funil atualizado Inclui resolved_agents: [{id, name, avatar_url, via: 'agent'|'team'}] — quem efetivamente participa do funil (2026-07-21).",
|
|
@@ -2720,7 +2755,10 @@
|
|
|
2720
2755
|
"Alteração de status/estado",
|
|
2721
2756
|
"Atualização em massa via automação"
|
|
2722
2757
|
],
|
|
2723
|
-
"related_tools": [
|
|
2758
|
+
"related_tools": [
|
|
2759
|
+
"lionchat_funnels_show",
|
|
2760
|
+
"lionchat_funnels_remove_stage"
|
|
2761
|
+
]
|
|
2724
2762
|
},
|
|
2725
2763
|
{
|
|
2726
2764
|
"id": "lionchat_funnels_destroy",
|
|
@@ -2861,7 +2899,7 @@
|
|
|
2861
2899
|
"method": "POST",
|
|
2862
2900
|
"path": "/api/v1/accounts/{account_id}/funnels/{id}/migrate_stage",
|
|
2863
2901
|
"title": "Transferir Cards Entre Etapas do Funil (Kanban)",
|
|
2864
|
-
"description": "Funil = kanban.
|
|
2902
|
+
"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
2903
|
"category": "Funis",
|
|
2866
2904
|
"params": [
|
|
2867
2905
|
{
|
|
@@ -2900,10 +2938,62 @@
|
|
|
2900
2938
|
"Importação manual via API"
|
|
2901
2939
|
],
|
|
2902
2940
|
"related_tools": [
|
|
2941
|
+
"lionchat_funnels_remove_stage",
|
|
2903
2942
|
"lionchat_funnels_create",
|
|
2904
2943
|
"lionchat_funnels_create_1"
|
|
2905
2944
|
]
|
|
2906
2945
|
},
|
|
2946
|
+
{
|
|
2947
|
+
"id": "lionchat_funnels_remove_stage",
|
|
2948
|
+
"method": "POST",
|
|
2949
|
+
"path": "/api/v1/accounts/{account_id}/funnels/{id}/remove_stage",
|
|
2950
|
+
"title": "Excluir Etapa do Funil com Cards (Kanban)",
|
|
2951
|
+
"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).",
|
|
2952
|
+
"category": "Funis",
|
|
2953
|
+
"params": [
|
|
2954
|
+
{
|
|
2955
|
+
"name": "id",
|
|
2956
|
+
"type": "integer",
|
|
2957
|
+
"location": "path",
|
|
2958
|
+
"required": true,
|
|
2959
|
+
"description": "ID do funil de origem (o que tem a etapa a excluir)"
|
|
2960
|
+
},
|
|
2961
|
+
{
|
|
2962
|
+
"name": "from_stage",
|
|
2963
|
+
"type": "string",
|
|
2964
|
+
"location": "body",
|
|
2965
|
+
"required": true,
|
|
2966
|
+
"description": "CHAVE da etapa a excluir (a chave do objeto funnel.stages, nao o nome exibido)"
|
|
2967
|
+
},
|
|
2968
|
+
{
|
|
2969
|
+
"name": "to_funnel_id",
|
|
2970
|
+
"type": "integer",
|
|
2971
|
+
"location": "body",
|
|
2972
|
+
"required": true,
|
|
2973
|
+
"description": "ID do funil de destino dos cards (pode ser o mesmo funil)"
|
|
2974
|
+
},
|
|
2975
|
+
{
|
|
2976
|
+
"name": "to_stage",
|
|
2977
|
+
"type": "string",
|
|
2978
|
+
"location": "body",
|
|
2979
|
+
"required": true,
|
|
2980
|
+
"description": "CHAVE da etapa de destino dos cards, dentro do funil de destino"
|
|
2981
|
+
}
|
|
2982
|
+
],
|
|
2983
|
+
"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.",
|
|
2984
|
+
"common_use_cases": [
|
|
2985
|
+
"Excluir uma etapa que ainda tem cards, mandando os cards para outra etapa sem disparar automacoes",
|
|
2986
|
+
"Juntar duas etapas do funil numa so",
|
|
2987
|
+
"Tirar uma etapa que nao e mais usada, repetindo a chamada ate done: true"
|
|
2988
|
+
],
|
|
2989
|
+
"related_tools": [
|
|
2990
|
+
"lionchat_funnels_show",
|
|
2991
|
+
"lionchat_funnels_stage_report",
|
|
2992
|
+
"lionchat_funnels_update",
|
|
2993
|
+
"lionchat_funnels_create_2"
|
|
2994
|
+
],
|
|
2995
|
+
"confirm_required": true
|
|
2996
|
+
},
|
|
2907
2997
|
{
|
|
2908
2998
|
"id": "lionchat_funnels_archive",
|
|
2909
2999
|
"method": "PATCH",
|
|
@@ -3409,7 +3499,7 @@
|
|
|
3409
3499
|
"method": "DELETE",
|
|
3410
3500
|
"path": "/api/v1/accounts/{account_id}/kanban_items/{id}",
|
|
3411
3501
|
"title": "Excluir Item",
|
|
3412
|
-
"description": "Exclui
|
|
3502
|
+
"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
3503
|
"category": "Itens",
|
|
3414
3504
|
"params": [
|
|
3415
3505
|
{
|
|
@@ -3420,16 +3510,16 @@
|
|
|
3420
3510
|
"description": "ID"
|
|
3421
3511
|
}
|
|
3422
3512
|
],
|
|
3423
|
-
"returns": "
|
|
3513
|
+
"returns": "200 sem corpo (head ok)",
|
|
3424
3514
|
"common_use_cases": [
|
|
3425
3515
|
"Limpeza de dados obsoletos",
|
|
3426
3516
|
"Deduplicação manual",
|
|
3427
3517
|
"Remoção após confirmação do cliente"
|
|
3428
3518
|
],
|
|
3429
3519
|
"related_tools": [
|
|
3430
|
-
"
|
|
3431
|
-
"
|
|
3432
|
-
"
|
|
3520
|
+
"lionchat_kanban_items_show",
|
|
3521
|
+
"lionchat_kanban_items_tasks_list",
|
|
3522
|
+
"lionchat_kanban_items_list"
|
|
3433
3523
|
]
|
|
3434
3524
|
},
|
|
3435
3525
|
{
|
|
@@ -3788,7 +3878,7 @@
|
|
|
3788
3878
|
"type": "string",
|
|
3789
3879
|
"location": "query",
|
|
3790
3880
|
"required": false,
|
|
3791
|
-
"description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
|
|
3881
|
+
"description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422 assignee_id aceita 'current_user' (quem pergunta)."
|
|
3792
3882
|
},
|
|
3793
3883
|
{
|
|
3794
3884
|
"name": "contact_filters",
|
|
@@ -4128,7 +4218,7 @@
|
|
|
4128
4218
|
"method": "POST",
|
|
4129
4219
|
"path": "/api/v1/accounts/{account_id}/kanban_items/import_preview",
|
|
4130
4220
|
"title": "Preview Importação",
|
|
4131
|
-
"description": "Pre-visualiza um import de cards
|
|
4221
|
+
"description": "Pre-visualiza um import de cards: colunas, primeiras linhas, total, valores unicos por coluna (ate 50) e, desde 2026-10-23, attribute_fields = os campos personalizados que PODEM ser importados (card: campos do card da conta, sem nome protegido nem secreto; contact: atributos do contato sem os do sistema nem secretos — vem vazio para quem nao pode importar contatos). Use o key de cada item como destino no attribute_mappings do lionchat_kanban_items_import.",
|
|
4132
4222
|
"category": "Itens",
|
|
4133
4223
|
"params": [
|
|
4134
4224
|
{
|
|
@@ -4139,7 +4229,7 @@
|
|
|
4139
4229
|
"description": "Arquivo CSV"
|
|
4140
4230
|
}
|
|
4141
4231
|
],
|
|
4142
|
-
"returns": "{ columns,
|
|
4232
|
+
"returns": "{ columns, preview_rows, total_rows, unique_values: {coluna: [valores]}, attribute_fields: { card: [{key: 'card:<nome>', name, type, is_list, options}], contact: [{key: 'contact:<chave>', attribute_key, name, type, is_list, options}] } }",
|
|
4143
4233
|
"common_use_cases": [
|
|
4144
4234
|
"Cadastro inicial de item Kanban",
|
|
4145
4235
|
"Automação a partir de evento externo",
|
|
@@ -4156,7 +4246,7 @@
|
|
|
4156
4246
|
"method": "POST",
|
|
4157
4247
|
"path": "/api/v1/accounts/{account_id}/kanban_items/import",
|
|
4158
4248
|
"title": "Importar Items",
|
|
4159
|
-
"description": "Importa cards em massa (job async). REGRA DO DDI (18/08): telefone sem codigo do pais e considerado invalido e o card e criado SEM contato e SEM conversa, EM SILENCIO (diferente do import de contatos, que da erro na linha). Oriente a planilha a vir com DDI. PARAMETROS CONFERIDOS (18/09/2026): o servidor le `mappings` (plural) e exige `inbox_id` — o antigo `mapping` era ignorado. Opcionais da API (fora deste conector): default_stage_id, stage_mappings (texto JSON {\"<valor da planilha>\": \"<id da etapa>\"}), auto_create_stages ('true'), agent_mode ('mapping' | 'round_robin'), agent_mappings (texto JSON {\"<valor da planilha>\": <id do agente>}). VIA MCP NAO RODA: exige upload do arquivo — oriente o usuario a importar pela tela do Kanban.",
|
|
4249
|
+
"description": "Importa cards em massa (job async). REGRA DO DDI (18/08): telefone sem codigo do pais e considerado invalido e o card e criado SEM contato e SEM conversa, EM SILENCIO (diferente do import de contatos, que da erro na linha). Oriente a planilha a vir com DDI. PARAMETROS CONFERIDOS (18/09/2026): o servidor le `mappings` (plural) e exige `inbox_id` — o antigo `mapping` era ignorado. Opcionais da API (fora deste conector): default_stage_id, stage_mappings (texto JSON {\"<valor da planilha>\": \"<id da etapa>\"}), auto_create_stages ('true'), agent_mode ('mapping' | 'round_robin'), agent_mappings (texto JSON {\"<valor da planilha>\": <id do agente>}). CAMPOS PERSONALIZADOS (2026-10-23, tambem fora deste conector): attribute_mappings (texto JSON {\"card:<nome do campo do card>\": \"<coluna>\", \"contact:<chave do atributo do contato>\": \"<coluna>\"} — destino -> coluna, a mesma coluna pode ir para o card e para o contato) e value_mappings (texto JSON {\"<destino>\": {\"<valor da planilha>\": \"<opcao da lista>\" | \"\"}}, o de-para de campo de lista; \"\" = nao gravar). Os destinos validos sao os que lionchat_kanban_items_create_3 (previa) devolve em attribute_fields. Formato errado, campo que nao existe/protegido/secreto ou coluna que a planilha nao tem = 422 com a lista; contact: sem a permissao de importar contatos = 403. Card: data DD/MM/AAAA vira AAAA-MM-DD, numero vira texto ('1.500' = 1500), lista aceita varias opcoes por ';'. Contato: vai so para o contato principal do card; contato que ja existe tem o valor SUBSTITUIDO (dispara fluxo 'Atributo do contato muda' e webhook contact_updated); celula vazia nunca apaga. Valor que nao entra aparece em skipped no lionchat_kanban_items_import_status. VIA MCP NAO RODA: exige upload do arquivo — oriente o usuario a importar pela tela do Kanban.",
|
|
4160
4250
|
"category": "Itens",
|
|
4161
4251
|
"params": [
|
|
4162
4252
|
{
|
|
@@ -4463,8 +4553,8 @@
|
|
|
4463
4553
|
"id": "lionchat_kanban_items_destroy_1",
|
|
4464
4554
|
"method": "DELETE",
|
|
4465
4555
|
"path": "/api/v1/accounts/{account_id}/kanban_items/{id}/unlink_conversation",
|
|
4466
|
-
"title": "Desvincular Conversa",
|
|
4467
|
-
"description": "
|
|
4556
|
+
"title": "Desvincular Conversa do Card",
|
|
4557
|
+
"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
4558
|
"category": "Itens",
|
|
4469
4559
|
"params": [
|
|
4470
4560
|
{
|
|
@@ -4482,16 +4572,16 @@
|
|
|
4482
4572
|
"description": "Display ID"
|
|
4483
4573
|
}
|
|
4484
4574
|
],
|
|
4485
|
-
"returns": "
|
|
4575
|
+
"returns": "o card (objeto) sem a conversa vinculada; 400 se faltar conversation_display_id; 422 se nao foi possivel desvincular.",
|
|
4486
4576
|
"common_use_cases": [
|
|
4487
4577
|
"Limpeza de dados obsoletos",
|
|
4488
4578
|
"Deduplicação manual",
|
|
4489
4579
|
"Remoção após confirmação do cliente"
|
|
4490
4580
|
],
|
|
4491
4581
|
"related_tools": [
|
|
4582
|
+
"lionchat_kanban_items_show",
|
|
4492
4583
|
"lionchat_kanban_items_list",
|
|
4493
|
-
"
|
|
4494
|
-
"lionchat_kanban_items_show"
|
|
4584
|
+
"lionchat_kanban_items_destroy"
|
|
4495
4585
|
]
|
|
4496
4586
|
},
|
|
4497
4587
|
{
|
|
@@ -8490,7 +8580,7 @@
|
|
|
8490
8580
|
"type": "string",
|
|
8491
8581
|
"location": "query",
|
|
8492
8582
|
"required": false,
|
|
8493
|
-
"description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
|
|
8583
|
+
"description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422 assignee_id aceita 'current_user' (quem pergunta)."
|
|
8494
8584
|
},
|
|
8495
8585
|
{
|
|
8496
8586
|
"name": "contact_filters",
|
|
@@ -8577,7 +8667,7 @@
|
|
|
8577
8667
|
"type": "string",
|
|
8578
8668
|
"location": "query",
|
|
8579
8669
|
"required": false,
|
|
8580
|
-
"description": "Filtros estruturados (mesmo formato de conversations_filter). JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
|
|
8670
|
+
"description": "Filtros estruturados (mesmo formato de conversations_filter). JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422 assignee_id aceita 'current_user' (quem pergunta)."
|
|
8581
8671
|
},
|
|
8582
8672
|
{
|
|
8583
8673
|
"name": "date_basis",
|
|
@@ -8758,6 +8848,13 @@
|
|
|
8758
8848
|
"required": false,
|
|
8759
8849
|
"description": "Status"
|
|
8760
8850
|
},
|
|
8851
|
+
{
|
|
8852
|
+
"name": "priority",
|
|
8853
|
+
"type": "string",
|
|
8854
|
+
"location": "query",
|
|
8855
|
+
"required": false,
|
|
8856
|
+
"description": "Prioridade (22/10): urgent | high | medium | low | none. Antes de 22/10 este filtro era ignorado pelo servidor."
|
|
8857
|
+
},
|
|
8761
8858
|
{
|
|
8762
8859
|
"name": "user_id",
|
|
8763
8860
|
"type": "integer",
|
|
@@ -8777,7 +8874,7 @@
|
|
|
8777
8874
|
"type": "string",
|
|
8778
8875
|
"location": "query",
|
|
8779
8876
|
"required": false,
|
|
8780
|
-
"description": "Busca"
|
|
8877
|
+
"description": "Busca (22/10): titulo, descricao e nome do responsavel; com 3 letras ou mais, tambem o CLIENTE da tarefa (nome, telefone, e-mail ou identificador, pela ficha da tarefa ou pela conversa dela). Termo que casa mais de 1.000 clientes procura so nos campos da tarefa. Desde 23/10/2026 tambem acha pelo NOME DO CARD da tarefa e, com 3 letras ou mais, por QUEM FEZ (quem criou, o dono antigo da tarefa e o 'Agendado por')."
|
|
8781
8878
|
},
|
|
8782
8879
|
{
|
|
8783
8880
|
"name": "date_start",
|
|
@@ -8801,7 +8898,7 @@
|
|
|
8801
8898
|
"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
8899
|
}
|
|
8803
8900
|
],
|
|
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.",
|
|
8901
|
+
"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). Datas de desfecho (23/10/2026): toda tarefa traz `completed_at` (quando foi concluida), `cancelled_at` (quando foi cancelada) e `attendance_marked_at` (quando marcaram Compareceu/Faltou), gravadas pelo servidor na hora da mudanca (nunca aceitas do cliente) e APAGADAS ao reabrir, adiar ou limpar a presenca; tarefa anterior a 23/10 vem com nulo. E `concluida_no_prazo` (true/false/nulo): so no tipo Tarefa, true = concluida ate o horario marcado (scheduled_at).",
|
|
8805
8902
|
"common_use_cases": [
|
|
8806
8903
|
"Dashboard: contar/exibir tarefas/agenda",
|
|
8807
8904
|
"Buscar com filtros antes de outra operação",
|
|
@@ -8809,7 +8906,8 @@
|
|
|
8809
8906
|
],
|
|
8810
8907
|
"related_tools": [
|
|
8811
8908
|
"lionchat_tasks_list_1",
|
|
8812
|
-
"lionchat_tasks_list_2"
|
|
8909
|
+
"lionchat_tasks_list_2",
|
|
8910
|
+
"lionchat_tasks_task_list"
|
|
8813
8911
|
]
|
|
8814
8912
|
},
|
|
8815
8913
|
{
|
|
@@ -8817,7 +8915,7 @@
|
|
|
8817
8915
|
"method": "POST",
|
|
8818
8916
|
"path": "/api/v1/accounts/{account_id}/account_tasks",
|
|
8819
8917
|
"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.",
|
|
8918
|
+
"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
8919
|
"category": "Agenda / Tarefas",
|
|
8822
8920
|
"params": [
|
|
8823
8921
|
{
|
|
@@ -8980,9 +9078,23 @@
|
|
|
8980
9078
|
"location": "body",
|
|
8981
9079
|
"required": false,
|
|
8982
9080
|
"description": "'Marcar proxima': numero da sessao pedida (1..N); sessao ja marcada = 422 'Essa sessao ja foi marcada'"
|
|
9081
|
+
},
|
|
9082
|
+
{
|
|
9083
|
+
"name": "kanban_item_id",
|
|
9084
|
+
"type": "integer",
|
|
9085
|
+
"location": "body",
|
|
9086
|
+
"required": false,
|
|
9087
|
+
"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)"
|
|
9088
|
+
},
|
|
9089
|
+
{
|
|
9090
|
+
"name": "occupies_agenda",
|
|
9091
|
+
"type": "boolean",
|
|
9092
|
+
"location": "body",
|
|
9093
|
+
"required": false,
|
|
9094
|
+
"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
9095
|
}
|
|
8984
9096
|
],
|
|
8985
|
-
"returns": "tarefa/agenda criado (com novo ID)",
|
|
9097
|
+
"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
9098
|
"common_use_cases": [
|
|
8987
9099
|
"Cadastro inicial de tarefa/agenda",
|
|
8988
9100
|
"Automação a partir de evento externo",
|
|
@@ -9009,7 +9121,7 @@
|
|
|
9009
9121
|
"description": "ID da tarefa"
|
|
9010
9122
|
}
|
|
9011
9123
|
],
|
|
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)",
|
|
9124
|
+
"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). Datas de desfecho (23/10/2026): toda tarefa traz `completed_at` (quando foi concluida), `cancelled_at` (quando foi cancelada) e `attendance_marked_at` (quando marcaram Compareceu/Faltou), gravadas pelo servidor na hora da mudanca (nunca aceitas do cliente) e APAGADAS ao reabrir, adiar ou limpar a presenca; tarefa anterior a 23/10 vem com nulo. E `concluida_no_prazo` (true/false/nulo): so no tipo Tarefa, true = concluida ate o horario marcado (scheduled_at).",
|
|
9013
9125
|
"common_use_cases": [
|
|
9014
9126
|
"Ver dados completos antes de editar",
|
|
9015
9127
|
"Verificar estado atual antes de uma ação",
|
|
@@ -9022,7 +9134,7 @@
|
|
|
9022
9134
|
"method": "PATCH",
|
|
9023
9135
|
"path": "/api/v1/accounts/{account_id}/account_tasks/{id}",
|
|
9024
9136
|
"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.",
|
|
9137
|
+
"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
9138
|
"category": "Agenda / Tarefas",
|
|
9027
9139
|
"params": [
|
|
9028
9140
|
{
|
|
@@ -9192,9 +9304,23 @@
|
|
|
9192
9304
|
"location": "body",
|
|
9193
9305
|
"required": false,
|
|
9194
9306
|
"description": "'Marcar proxima': numero da sessao pedida (1..N); sessao ja marcada = 422 'Essa sessao ja foi marcada'"
|
|
9307
|
+
},
|
|
9308
|
+
{
|
|
9309
|
+
"name": "kanban_item_id",
|
|
9310
|
+
"type": "integer",
|
|
9311
|
+
"location": "body",
|
|
9312
|
+
"required": false,
|
|
9313
|
+
"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)"
|
|
9314
|
+
},
|
|
9315
|
+
{
|
|
9316
|
+
"name": "occupies_agenda",
|
|
9317
|
+
"type": "boolean",
|
|
9318
|
+
"location": "body",
|
|
9319
|
+
"required": false,
|
|
9320
|
+
"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
9321
|
}
|
|
9196
9322
|
],
|
|
9197
|
-
"returns": "tarefa/agenda atualizado",
|
|
9323
|
+
"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
9324
|
"common_use_cases": [
|
|
9199
9325
|
"Edição parcial de tarefa/agenda",
|
|
9200
9326
|
"Alteração de status/estado",
|
|
@@ -9324,7 +9450,7 @@
|
|
|
9324
9450
|
"method": "PATCH",
|
|
9325
9451
|
"path": "/api/v1/accounts/{account_id}/account_tasks/{id}/update_future",
|
|
9326
9452
|
"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.",
|
|
9453
|
+
"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
9454
|
"category": "Agenda / Tarefas",
|
|
9329
9455
|
"params": [
|
|
9330
9456
|
{
|
|
@@ -9361,9 +9487,23 @@
|
|
|
9361
9487
|
"location": "body",
|
|
9362
9488
|
"required": false,
|
|
9363
9489
|
"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."
|
|
9490
|
+
},
|
|
9491
|
+
{
|
|
9492
|
+
"name": "kanban_item_id",
|
|
9493
|
+
"type": "integer",
|
|
9494
|
+
"location": "body",
|
|
9495
|
+
"required": false,
|
|
9496
|
+
"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)"
|
|
9497
|
+
},
|
|
9498
|
+
{
|
|
9499
|
+
"name": "occupies_agenda",
|
|
9500
|
+
"type": "boolean",
|
|
9501
|
+
"location": "body",
|
|
9502
|
+
"required": false,
|
|
9503
|
+
"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
9504
|
}
|
|
9365
9505
|
],
|
|
9366
|
-
"returns": "tarefa/agenda atualizado",
|
|
9506
|
+
"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
9507
|
"common_use_cases": [
|
|
9368
9508
|
"Edição parcial de tarefa/agenda",
|
|
9369
9509
|
"Alteração de status/estado",
|
|
@@ -9415,7 +9555,7 @@
|
|
|
9415
9555
|
"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
9556
|
}
|
|
9417
9557
|
],
|
|
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).",
|
|
9558
|
+
"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). Datas de desfecho (23/10/2026): toda tarefa traz `completed_at` (quando foi concluida), `cancelled_at` (quando foi cancelada) e `attendance_marked_at` (quando marcaram Compareceu/Faltou), gravadas pelo servidor na hora da mudanca (nunca aceitas do cliente) e APAGADAS ao reabrir, adiar ou limpar a presenca; tarefa anterior a 23/10 vem com nulo. E `concluida_no_prazo` (true/false/nulo): so no tipo Tarefa, true = concluida ate o horario marcado (scheduled_at).",
|
|
9419
9559
|
"common_use_cases": [
|
|
9420
9560
|
"Dashboard: contar/exibir tarefas/agenda",
|
|
9421
9561
|
"Buscar com filtros antes de outra operação",
|
|
@@ -9423,7 +9563,93 @@
|
|
|
9423
9563
|
],
|
|
9424
9564
|
"related_tools": [
|
|
9425
9565
|
"lionchat_tasks_list",
|
|
9426
|
-
"lionchat_tasks_list_2"
|
|
9566
|
+
"lionchat_tasks_list_2",
|
|
9567
|
+
"lionchat_tasks_task_list"
|
|
9568
|
+
]
|
|
9569
|
+
},
|
|
9570
|
+
{
|
|
9571
|
+
"id": "lionchat_tasks_task_list",
|
|
9572
|
+
"method": "GET",
|
|
9573
|
+
"path": "/api/v1/accounts/{account_id}/account_tasks/task_list",
|
|
9574
|
+
"title": "Lista de tarefas abertas (aba Tarefas da Agenda)",
|
|
9575
|
+
"description": "Tarefas ABERTAS (pendentes e adiadas, sem 'Compareceu'/'Faltou') em grupos por periodo, no DIA DA CONTA: overdue (antes de hoje, da mais recente para a mais antiga), today, tomorrow, next_7_days e later (depois disso). E a mesma lista da aba 'Tarefas' da Agenda (22/10): a melhor ferramenta para 'o que esta atrasado?' ou 'o que falta fazer?'. Usa a MESMA regra de quem ve o que e os MESMOS filtros do calendario (lionchat_tasks_list). Pagina de 50 por grupo: sem `group` vem a 1a pagina dos cinco; com `group` + `page`, so aquele grupo naquela pagina. Diferente de lionchat_tasks_list_1 (Meu Dia), que nao tem filtros, nao pagina e nao tem o grupo 'later'. Cargo com a Agenda oculta recebe 401. **`selo`:** cada tarefa traz o rotulo que o painel mostra (pending, snoozed, rescheduled). SUBABA 'CONCLUIDAS' (23/10/2026): `group=completed` devolve o que ja teve desfecho — concluida OU marcada 'Compareceu'/'Faltou' (cancelada fica de fora). Nao vem junto dos cinco grupos: so quando pedida. Ordem: a concluida mais recentemente primeiro; as concluidas antes de 23/10 (sem data) vao para o fim. Use-a para 'o que foi feito ontem?' ou 'a fulana concluiu no prazo?'.",
|
|
9576
|
+
"category": "Agenda / Tarefas",
|
|
9577
|
+
"params": [
|
|
9578
|
+
{
|
|
9579
|
+
"name": "group",
|
|
9580
|
+
"type": "string",
|
|
9581
|
+
"location": "query",
|
|
9582
|
+
"required": false,
|
|
9583
|
+
"description": "Pede SO um grupo: overdue | today | tomorrow | next_7_days | later | completed (23/10/2026: a subaba 'Concluidas', concluidas + Compareceu/Faltou, na ordem da conclusao). Ausente ou desconhecido = os cinco grupos das abertas, pagina 1 (completed NUNCA vem junto)."
|
|
9584
|
+
},
|
|
9585
|
+
{
|
|
9586
|
+
"name": "page",
|
|
9587
|
+
"type": "integer",
|
|
9588
|
+
"location": "query",
|
|
9589
|
+
"required": false,
|
|
9590
|
+
"description": "Pagina do grupo pedido em `group` (50 por pagina). So vale junto de `group`; invalida vira 1."
|
|
9591
|
+
},
|
|
9592
|
+
{
|
|
9593
|
+
"name": "q",
|
|
9594
|
+
"type": "string",
|
|
9595
|
+
"location": "query",
|
|
9596
|
+
"required": false,
|
|
9597
|
+
"description": "Busca (22/10): titulo, descricao e nome do responsavel; com 3 letras ou mais, tambem o CLIENTE da tarefa (nome, telefone, e-mail ou identificador, pela ficha da tarefa ou pela conversa dela). Termo que casa mais de 1.000 clientes procura so nos campos da tarefa. Desde 23/10/2026 tambem acha pelo NOME DO CARD da tarefa e, com 3 letras ou mais, por QUEM FEZ (quem criou, o dono antigo da tarefa e o 'Agendado por')."
|
|
9598
|
+
},
|
|
9599
|
+
{
|
|
9600
|
+
"name": "task_type",
|
|
9601
|
+
"type": "string",
|
|
9602
|
+
"location": "query",
|
|
9603
|
+
"required": false,
|
|
9604
|
+
"description": "Tipo da tarefa"
|
|
9605
|
+
},
|
|
9606
|
+
{
|
|
9607
|
+
"name": "status",
|
|
9608
|
+
"type": "string",
|
|
9609
|
+
"location": "query",
|
|
9610
|
+
"required": false,
|
|
9611
|
+
"description": "Situacao dentro das abertas: 0 = pendente, 3 = adiada. Concluida (1) e cancelada (2) nunca aparecem aqui (devolvem grupos vazios). Para ver concluidas, use group=completed."
|
|
9612
|
+
},
|
|
9613
|
+
{
|
|
9614
|
+
"name": "priority",
|
|
9615
|
+
"type": "string",
|
|
9616
|
+
"location": "query",
|
|
9617
|
+
"required": false,
|
|
9618
|
+
"description": "Prioridade (22/10): urgent | high | medium | low | none. Antes de 22/10 este filtro era ignorado pelo servidor."
|
|
9619
|
+
},
|
|
9620
|
+
{
|
|
9621
|
+
"name": "assignee_id",
|
|
9622
|
+
"type": "integer",
|
|
9623
|
+
"location": "query",
|
|
9624
|
+
"required": false,
|
|
9625
|
+
"description": "Tarefas de UMA pessoa. So muda alguma coisa para quem pode ver a agenda da equipe (administrador ou cargo com 'Gerenciar agenda da equipe'); os demais veem sempre as proprias."
|
|
9626
|
+
},
|
|
9627
|
+
{
|
|
9628
|
+
"name": "user_id",
|
|
9629
|
+
"type": "integer",
|
|
9630
|
+
"location": "query",
|
|
9631
|
+
"required": false,
|
|
9632
|
+
"description": "ID de quem criou a tarefa"
|
|
9633
|
+
},
|
|
9634
|
+
{
|
|
9635
|
+
"name": "agenda_id",
|
|
9636
|
+
"type": "integer",
|
|
9637
|
+
"location": "query",
|
|
9638
|
+
"required": false,
|
|
9639
|
+
"description": "Recorta por AGENDA (unidade). SEM este parametro a lista ja vem recortada pelas agendas que o usuario enxerga. Na agenda PRINCIPAL entram tambem os compromissos com agenda nula."
|
|
9640
|
+
}
|
|
9641
|
+
],
|
|
9642
|
+
"returns": "Objeto: { overdue: [...], today: [...], tomorrow: [...], next_7_days: [...], later: [...], totals: { overdue: N, ... }, page: N, per_page: 50 }. Com `group`, so aquele grupo + totals dele. `totals` e a contagem REAL do grupo (use-a para 'quantas atrasadas?'; a lista traz no maximo 50). Cada tarefa vem no mesmo formato de lionchat_tasks_list (assignees, contact_name, conversation_contact_name, kanban_item_title, selo, tratamento...). Com `group=completed`: { completed: [...], totals: { completed: N }, page, per_page }. Datas de desfecho (23/10/2026): toda tarefa traz `completed_at` (quando foi concluida), `cancelled_at` (quando foi cancelada) e `attendance_marked_at` (quando marcaram Compareceu/Faltou), gravadas pelo servidor na hora da mudanca (nunca aceitas do cliente) e APAGADAS ao reabrir, adiar ou limpar a presenca; tarefa anterior a 23/10 vem com nulo. E `concluida_no_prazo` (true/false/nulo): so no tipo Tarefa, true = concluida ate o horario marcado (scheduled_at).",
|
|
9643
|
+
"common_use_cases": [
|
|
9644
|
+
"Quantas e quais tarefas estao atrasadas (de toda a equipe ou de uma pessoa)",
|
|
9645
|
+
"Lista do que falta fazer hoje, amanha e na semana",
|
|
9646
|
+
"Achar a tarefa de um cliente pelo nome ou telefone"
|
|
9647
|
+
],
|
|
9648
|
+
"related_tools": [
|
|
9649
|
+
"lionchat_tasks_list",
|
|
9650
|
+
"lionchat_tasks_list_1",
|
|
9651
|
+
"lionchat_tasks_show",
|
|
9652
|
+
"lionchat_tasks_toggle"
|
|
9427
9653
|
]
|
|
9428
9654
|
},
|
|
9429
9655
|
{
|
|
@@ -9458,7 +9684,7 @@
|
|
|
9458
9684
|
"method": "GET",
|
|
9459
9685
|
"path": "/api/v1/accounts/{account_id}/kanban_items/{id}/tasks",
|
|
9460
9686
|
"title": "Tarefas do Card",
|
|
9461
|
-
"description": "Lista
|
|
9687
|
+
"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
9688
|
"category": "Agenda / Tarefas",
|
|
9463
9689
|
"params": [
|
|
9464
9690
|
{
|
|
@@ -9483,7 +9709,7 @@
|
|
|
9483
9709
|
"description": "Página"
|
|
9484
9710
|
}
|
|
9485
9711
|
],
|
|
9486
|
-
"returns": "Lista pura (array), sem embrulho: a resposta E o array de tarefas do card, juntando as tarefas
|
|
9712
|
+
"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
9713
|
"common_use_cases": [
|
|
9488
9714
|
"Dashboard: contar/exibir tarefas/agenda",
|
|
9489
9715
|
"Buscar com filtros antes de outra operação",
|
|
@@ -9500,7 +9726,7 @@
|
|
|
9500
9726
|
"method": "GET",
|
|
9501
9727
|
"path": "/api/v1/accounts/{account_id}/kanban_items/{id}/next_task",
|
|
9502
9728
|
"title": "Próxima Tarefa do Card",
|
|
9503
|
-
"description": "Retorna a PROXIMA tarefa pendente ou adiada do card (a de menor scheduled_at),
|
|
9729
|
+
"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
9730
|
"category": "Agenda / Tarefas",
|
|
9505
9731
|
"params": [
|
|
9506
9732
|
{
|
|
@@ -9511,7 +9737,7 @@
|
|
|
9511
9737
|
"description": "ID do card Kanban"
|
|
9512
9738
|
}
|
|
9513
9739
|
],
|
|
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.",
|
|
9740
|
+
"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
9741
|
"common_use_cases": [
|
|
9516
9742
|
"Dashboard: contar/exibir tarefas/agenda",
|
|
9517
9743
|
"Buscar com filtros antes de outra operação",
|
|
@@ -11056,7 +11282,7 @@
|
|
|
11056
11282
|
"method": "POST",
|
|
11057
11283
|
"path": "/api/v1/accounts/{account_id}/automation_rules",
|
|
11058
11284
|
"title": "Criar Regra de Automacao",
|
|
11059
|
-
"description": "Cria uma regra de automacao. event_name validos: conversation_created, conversation_updated, conversation_resolved, message_created, conversation_opened, webhook, kanban_item_created, kanban_item_stage_changed. conditions: [{attribute_key, filter_operator, query_operator, values[]}]. actions: [{action_name, action_params[]}]. Aceita active, inbox_id. As actions DEVEM ser um array de objetos {action_name, action_params} — item malformado (ex.: texto solto) retorna 422 (novo 22/07; antes estourava 500).",
|
|
11285
|
+
"description": "Cria uma regra de automacao. event_name validos: conversation_created, conversation_updated, conversation_resolved, message_created, conversation_opened, webhook, kanban_item_created, kanban_item_stage_changed. conditions: [{attribute_key, filter_operator, query_operator, values[]}]. actions: [{action_name, action_params[]}]. Aceita active, inbox_id. As actions DEVEM ser um array de objetos {action_name, action_params} — item malformado (ex.: texto solto) retorna 422 (novo 22/07; antes estourava 500). [27/10/2026] conditions NAO aceitam 'current_user' em assignee_id (422): automacao nao tem \"quem esta vendo\" — use o id do agente.",
|
|
11060
11286
|
"category": "Regras de Automacao",
|
|
11061
11287
|
"params": [
|
|
11062
11288
|
{
|
|
@@ -11085,7 +11311,7 @@
|
|
|
11085
11311
|
"type": "array",
|
|
11086
11312
|
"location": "body",
|
|
11087
11313
|
"required": true,
|
|
11088
|
-
"description": "[{attribute_key, filter_operator, query_operator, values[]}] REGRA DO CONECTOR (query_operator) — LEIA ANTES DE GRAVAR: o conector liga a condicao com a SEGUINTE, logo a ULTIMA condicao TEM que ter query_operator: null (condicao UNICA tambem = null). Nas demais: 'AND' ou 'OR'. A API valida o VALOR do conector mas NAO a POSICAO — conector na ultima condicao SALVA COM SUCESSO, aparece certo na tela e a regra NUNCA dispara. Incidente real: 8 regras criadas pelo conector de IA entre 26 e 30/07/2026 em 3 contas, todas com conector na ultima condicao, todas nasceram mortas (732 erros/hora medidos em producao 03/08; a conta 62 ficou com as 6 regras de etiquetagem automatica paradas). attribute_key precisa ser campo padrao OU atributo personalizado que EXISTA na conta (senao a regra inteira falha na validacao: 'Automation conditions <chave> not supported') — conferir antes com lionchat_custom_attributes_list; atributo personalizado exige tambem custom_attribute_type ('conversation_attribute' ou 'contact_attribute'). EMPRESA (2026-10-16): custom_attribute_type 'company_attribute' = campo PERSONALIZADO da empresa do contato (chave definida em lionchat_custom_attributes_list attribute_model=company_attribute; pode ser igual a de contato, o tipo decide). Operadores pelo tipo: todos equal_to/not_equal_to/is_present/is_not_present; texto + contains/does_not_contain; numero/data/hora + is_greater_than/is_less_than. attribute_changed recusado. Negativo inclui contato sem empresa. Modulo Empresas desligado = a condicao nunca casa. filter_operator: equal_to, not_equal_to, contains, does_not_contain, is_present, is_not_present, is_greater_than, is_less_than, starts_with, days_before, days_ago, last_days, today, yesterday — cada campo aceita so um subconjunto. Na duvida, leia uma regra que ja funciona com lionchat_automation_rules_show e copie o formato. Detalhe no resource 'conversation-flows'."
|
|
11314
|
+
"description": "[{attribute_key, filter_operator, query_operator, values[]}] REGRA DO CONECTOR (query_operator) — LEIA ANTES DE GRAVAR: o conector liga a condicao com a SEGUINTE, logo a ULTIMA condicao TEM que ter query_operator: null (condicao UNICA tambem = null). Nas demais: 'AND' ou 'OR'. A API valida o VALOR do conector mas NAO a POSICAO — conector na ultima condicao SALVA COM SUCESSO, aparece certo na tela e a regra NUNCA dispara. Incidente real: 8 regras criadas pelo conector de IA entre 26 e 30/07/2026 em 3 contas, todas com conector na ultima condicao, todas nasceram mortas (732 erros/hora medidos em producao 03/08; a conta 62 ficou com as 6 regras de etiquetagem automatica paradas). attribute_key precisa ser campo padrao OU atributo personalizado que EXISTA na conta (senao a regra inteira falha na validacao: 'Automation conditions <chave> not supported') — conferir antes com lionchat_custom_attributes_list; atributo personalizado exige tambem custom_attribute_type ('conversation_attribute' ou 'contact_attribute'). EMPRESA (2026-10-16): custom_attribute_type 'company_attribute' = campo PERSONALIZADO da empresa do contato (chave definida em lionchat_custom_attributes_list attribute_model=company_attribute; pode ser igual a de contato, o tipo decide). Operadores pelo tipo: todos equal_to/not_equal_to/is_present/is_not_present; texto + contains/does_not_contain; numero/data/hora + is_greater_than/is_less_than. attribute_changed recusado. Negativo inclui contato sem empresa. Modulo Empresas desligado = a condicao nunca casa. filter_operator: equal_to, not_equal_to, contains, does_not_contain, is_present, is_not_present, is_greater_than, is_less_than, starts_with, days_before, days_ago, last_days, today, yesterday — cada campo aceita so um subconjunto. Na duvida, leia uma regra que ja funciona com lionchat_automation_rules_show e copie o formato. Detalhe no resource 'conversation-flows'. CONDICAO 'VEIO DE ANUNCIO PAGO' (25/10/2026): attribute_key 'origin_paid', filter_operator equal_to/not_equal_to, values ['paid'] (ou not_paid/unknown/unclassified). Junta clique no anuncio e formulario do anuncio — para 'so lead de anuncio' use esta, nao origin_kind = paid_ad (que esquece o formulario). Vale nos eventos de conversa e mensagem."
|
|
11089
11315
|
},
|
|
11090
11316
|
{
|
|
11091
11317
|
"name": "actions",
|
|
@@ -11154,7 +11380,7 @@
|
|
|
11154
11380
|
"method": "PUT",
|
|
11155
11381
|
"path": "/api/v1/accounts/{account_id}/automation_rules/{id}",
|
|
11156
11382
|
"title": "Atualizar Regra",
|
|
11157
|
-
"description": "Atualiza uma regra de automacao (PUT, substituicao completa). Campos: name, event_name, conditions, actions, active, inbox_id. As actions DEVEM ser um array de objetos {action_name, action_params} — item malformado (ex.: texto solto) retorna 422 (novo 22/07; antes estourava 500).",
|
|
11383
|
+
"description": "Atualiza uma regra de automacao (PUT, substituicao completa). Campos: name, event_name, conditions, actions, active, inbox_id. As actions DEVEM ser um array de objetos {action_name, action_params} — item malformado (ex.: texto solto) retorna 422 (novo 22/07; antes estourava 500). [27/10/2026] conditions NAO aceitam 'current_user' em assignee_id (422 quando as conditions mudam): automacao nao tem \"quem esta vendo\" — use o id do agente.",
|
|
11158
11384
|
"category": "Regras de Automacao",
|
|
11159
11385
|
"params": [
|
|
11160
11386
|
{
|
|
@@ -11183,7 +11409,7 @@
|
|
|
11183
11409
|
"type": "array",
|
|
11184
11410
|
"location": "body",
|
|
11185
11411
|
"required": false,
|
|
11186
|
-
"description": "Condicoes REGRA DO CONECTOR (query_operator) — LEIA ANTES DE GRAVAR: o conector liga a condicao com a SEGUINTE, logo a ULTIMA condicao TEM que ter query_operator: null (condicao UNICA tambem = null). Nas demais: 'AND' ou 'OR'. A API valida o VALOR do conector mas NAO a POSICAO — conector na ultima condicao SALVA COM SUCESSO, aparece certo na tela e a regra NUNCA dispara. Incidente real: 8 regras criadas pelo conector de IA entre 26 e 30/07/2026 em 3 contas, todas com conector na ultima condicao, todas nasceram mortas (732 erros/hora medidos em producao 03/08; a conta 62 ficou com as 6 regras de etiquetagem automatica paradas). attribute_key precisa ser campo padrao OU atributo personalizado que EXISTA na conta (senao a regra inteira falha na validacao: 'Automation conditions <chave> not supported') — conferir antes com lionchat_custom_attributes_list; atributo personalizado exige tambem custom_attribute_type ('conversation_attribute' ou 'contact_attribute'). EMPRESA (2026-10-16): custom_attribute_type 'company_attribute' = campo PERSONALIZADO da empresa do contato (chave definida em lionchat_custom_attributes_list attribute_model=company_attribute; pode ser igual a de contato, o tipo decide). Operadores pelo tipo: todos equal_to/not_equal_to/is_present/is_not_present; texto + contains/does_not_contain; numero/data/hora + is_greater_than/is_less_than. attribute_changed recusado. Negativo inclui contato sem empresa. Modulo Empresas desligado = a condicao nunca casa. filter_operator: equal_to, not_equal_to, contains, does_not_contain, is_present, is_not_present, is_greater_than, is_less_than, starts_with, days_before, days_ago, last_days, today, yesterday — cada campo aceita so um subconjunto. Na duvida, leia uma regra que ja funciona com lionchat_automation_rules_show e copie o formato. Detalhe no resource 'conversation-flows'."
|
|
11412
|
+
"description": "Condicoes REGRA DO CONECTOR (query_operator) — LEIA ANTES DE GRAVAR: o conector liga a condicao com a SEGUINTE, logo a ULTIMA condicao TEM que ter query_operator: null (condicao UNICA tambem = null). Nas demais: 'AND' ou 'OR'. A API valida o VALOR do conector mas NAO a POSICAO — conector na ultima condicao SALVA COM SUCESSO, aparece certo na tela e a regra NUNCA dispara. Incidente real: 8 regras criadas pelo conector de IA entre 26 e 30/07/2026 em 3 contas, todas com conector na ultima condicao, todas nasceram mortas (732 erros/hora medidos em producao 03/08; a conta 62 ficou com as 6 regras de etiquetagem automatica paradas). attribute_key precisa ser campo padrao OU atributo personalizado que EXISTA na conta (senao a regra inteira falha na validacao: 'Automation conditions <chave> not supported') — conferir antes com lionchat_custom_attributes_list; atributo personalizado exige tambem custom_attribute_type ('conversation_attribute' ou 'contact_attribute'). EMPRESA (2026-10-16): custom_attribute_type 'company_attribute' = campo PERSONALIZADO da empresa do contato (chave definida em lionchat_custom_attributes_list attribute_model=company_attribute; pode ser igual a de contato, o tipo decide). Operadores pelo tipo: todos equal_to/not_equal_to/is_present/is_not_present; texto + contains/does_not_contain; numero/data/hora + is_greater_than/is_less_than. attribute_changed recusado. Negativo inclui contato sem empresa. Modulo Empresas desligado = a condicao nunca casa. filter_operator: equal_to, not_equal_to, contains, does_not_contain, is_present, is_not_present, is_greater_than, is_less_than, starts_with, days_before, days_ago, last_days, today, yesterday — cada campo aceita so um subconjunto. Na duvida, leia uma regra que ja funciona com lionchat_automation_rules_show e copie o formato. Detalhe no resource 'conversation-flows'. CONDICAO 'VEIO DE ANUNCIO PAGO' (25/10/2026): attribute_key 'origin_paid', filter_operator equal_to/not_equal_to, values ['paid'] (ou not_paid/unknown/unclassified). Junta clique no anuncio e formulario do anuncio — para 'so lead de anuncio' use esta, nao origin_kind = paid_ad (que esquece o formulario). Vale nos eventos de conversa e mensagem."
|
|
11187
11413
|
},
|
|
11188
11414
|
{
|
|
11189
11415
|
"name": "actions",
|
|
@@ -11665,7 +11891,7 @@
|
|
|
11665
11891
|
"method": "GET",
|
|
11666
11892
|
"path": "/api/v1/accounts/{account_id}/custom_filters",
|
|
11667
11893
|
"title": "Listar Filtros",
|
|
11668
|
-
"description": "Lista os filtros salvos do usuario atual (
|
|
11894
|
+
"description": "Lista os filtros salvos por filter_type (padrao conversation). Desde 22/10/2026: filter_type contact (segmentos) lista os segmentos da CONTA inteira (precisa do menu Contatos no cargo), ordenados por nome; conversation (pastas) traz as do usuario atual MAIS as compartilhadas da conta (campo shared, desde 27/10/2026); report continua so os do usuario atual. Em pasta compartilhada criada por OUTRA pessoa, user_id e user_name vem nulos. Cada item traz user_id/user_name (\"criado por\", pode vir nulo) e can_manage (se quem pergunta pode editar/apagar).",
|
|
11669
11895
|
"category": "Filtros Personalizados",
|
|
11670
11896
|
"params": [
|
|
11671
11897
|
{
|
|
@@ -11673,7 +11899,7 @@
|
|
|
11673
11899
|
"type": "string",
|
|
11674
11900
|
"location": "query",
|
|
11675
11901
|
"required": false,
|
|
11676
|
-
"description": "conversation ou
|
|
11902
|
+
"description": "conversation (pastas: as suas + as compartilhadas da conta), contact (segmentos, da CONTA) ou report"
|
|
11677
11903
|
}
|
|
11678
11904
|
],
|
|
11679
11905
|
"returns": "array de filtros (sem meta/payload)",
|
|
@@ -11693,15 +11919,36 @@
|
|
|
11693
11919
|
"method": "POST",
|
|
11694
11920
|
"path": "/api/v1/accounts/{account_id}/custom_filters",
|
|
11695
11921
|
"title": "Criar Filtro",
|
|
11696
|
-
"description": "Cria um filtro personalizado. Cria novo filtro personalizado. Obrigatórios: name, filter_type, query. Valida unicidade quando aplicável. Retorna o filtro personalizado criado com ID atribuído.",
|
|
11922
|
+
"description": "Cria um filtro personalizado. Cria novo filtro personalizado. Obrigatórios: name, filter_type, query. Valida unicidade quando aplicável. Retorna o filtro personalizado criado com ID atribuído. Desde 22/10/2026 o segmento (filter_type contact) e da CONTA: criar exige administrador ou cargo com contact_manage, campaign_manage ou automation_manage (sem isso, 401). filter_type aceita o nome ou o numero. Regra vazia ou incompleta = 422. Teto de 1.000 segmentos por conta. PASTA COMPARTILHADA (27/10/2026): pasta de conversa (filter_type conversation) com shared true aparece para TODA a conta; so administrador cria, edita, compartilha ou apaga (sem isso, 401). Cada pessoa ve dentro dela so as conversas que ja pode ver. shared nulo = 422; compartilhada sem nenhuma condicao = 422; segmento e relatorio nao podem ser compartilhados (422). Para mostrar a cada pessoa as conversas DELA use assignee_id com o valor 'current_user' (\"Quem esta vendo\").",
|
|
11697
11923
|
"category": "Filtros Personalizados",
|
|
11698
11924
|
"params": [
|
|
11699
11925
|
{
|
|
11700
|
-
"name": "
|
|
11926
|
+
"name": "name",
|
|
11927
|
+
"type": "string",
|
|
11928
|
+
"location": "body",
|
|
11929
|
+
"required": true,
|
|
11930
|
+
"description": "Nome da pasta/segmento"
|
|
11931
|
+
},
|
|
11932
|
+
{
|
|
11933
|
+
"name": "filter_type",
|
|
11934
|
+
"type": "string",
|
|
11935
|
+
"location": "body",
|
|
11936
|
+
"required": true,
|
|
11937
|
+
"description": "'conversation' (pasta de conversas), 'contact' (segmento de contatos) ou 'report' — aceita o nome ou o numero"
|
|
11938
|
+
},
|
|
11939
|
+
{
|
|
11940
|
+
"name": "query",
|
|
11701
11941
|
"type": "object",
|
|
11702
11942
|
"location": "body",
|
|
11703
11943
|
"required": true,
|
|
11704
|
-
"description": "
|
|
11944
|
+
"description": "query = {\"payload\": [{\"attribute_key\": \"status\", \"filter_operator\": \"equal_to\", \"values\": [\"open\"], \"query_operator\": \"and\"}, {\"attribute_key\": \"assignee_id\", \"filter_operator\": \"equal_to\", \"values\": [5], \"query_operator\": null}], \"sort_by\": \"...\"} — payload e LISTA de condicoes (mesmo formato de lionchat_conversations_filter / lionchat_contacts_filter); values e SEMPRE lista; query_operator liga a condicao com a SEGUINTE e a ULTIMA vai null. sort_by e opcional (so pasta de conversa)."
|
|
11945
|
+
},
|
|
11946
|
+
{
|
|
11947
|
+
"name": "shared",
|
|
11948
|
+
"type": "boolean",
|
|
11949
|
+
"location": "body",
|
|
11950
|
+
"required": false,
|
|
11951
|
+
"description": "So pasta de conversa e so administrador: true = a pasta aparece para toda a conta. Omitido = pasta pessoal."
|
|
11705
11952
|
}
|
|
11706
11953
|
],
|
|
11707
11954
|
"returns": "filtro personalizado criado (com novo ID)",
|
|
@@ -11722,7 +11969,7 @@
|
|
|
11722
11969
|
"method": "GET",
|
|
11723
11970
|
"path": "/api/v1/accounts/{account_id}/custom_filters/{id}",
|
|
11724
11971
|
"title": "Detalhe do Filtro",
|
|
11725
|
-
"description": "Retorna detalhes. Retorna detalhes completos de UM filtro personalizado específico pelo ID. Inclui campos relacionais quando aplicável.",
|
|
11972
|
+
"description": "Retorna detalhes. Retorna detalhes completos de UM filtro personalizado específico pelo ID. Inclui campos relacionais quando aplicável. Pasta compartilhada (shared true) pode ser lida por qualquer membro da conta.",
|
|
11726
11973
|
"category": "Filtros Personalizados",
|
|
11727
11974
|
"params": [
|
|
11728
11975
|
{
|
|
@@ -11750,7 +11997,7 @@
|
|
|
11750
11997
|
"method": "PATCH",
|
|
11751
11998
|
"path": "/api/v1/accounts/{account_id}/custom_filters/{id}",
|
|
11752
11999
|
"title": "Atualizar Filtro",
|
|
11753
|
-
"description": "Atualiza filtro. Atualiza campos do filtro personalizado existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: name, query.",
|
|
12000
|
+
"description": "Atualiza filtro. Atualiza campos do filtro personalizado existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: name, query, shared. filter_type e IGNORADO no update (nao da para trocar o tipo). Segmento (contact) so pode ser editado por administrador ou cargo com contact_manage, campaign_manage ou automation_manage — sem isso, 401 (veja can_manage no list/show). PASTA COMPARTILHADA (27/10/2026): so administrador edita (401). So mande shared para MUDAR o compartilhamento: shared false numa compartilhada a transforma em pasta pessoal DE QUEM MANDOU (some para os outros). Em compartilhada, query.sort_by muda a ordem padrao de TODOS. shared nulo = 422; compartilhada sem condicao = 422. Dois administradores editando juntos: vale a ultima gravacao.",
|
|
11754
12001
|
"category": "Filtros Personalizados",
|
|
11755
12002
|
"params": [
|
|
11756
12003
|
{
|
|
@@ -11761,11 +12008,25 @@
|
|
|
11761
12008
|
"description": "ID do filtro"
|
|
11762
12009
|
},
|
|
11763
12010
|
{
|
|
11764
|
-
"name": "
|
|
12011
|
+
"name": "name",
|
|
12012
|
+
"type": "string",
|
|
12013
|
+
"location": "body",
|
|
12014
|
+
"required": false,
|
|
12015
|
+
"description": "Novo nome"
|
|
12016
|
+
},
|
|
12017
|
+
{
|
|
12018
|
+
"name": "query",
|
|
11765
12019
|
"type": "object",
|
|
11766
12020
|
"location": "body",
|
|
11767
|
-
"required":
|
|
11768
|
-
"description": "
|
|
12021
|
+
"required": false,
|
|
12022
|
+
"description": "query = {\"payload\": [{\"attribute_key\": \"status\", \"filter_operator\": \"equal_to\", \"values\": [\"open\"], \"query_operator\": \"and\"}, {\"attribute_key\": \"assignee_id\", \"filter_operator\": \"equal_to\", \"values\": [5], \"query_operator\": null}], \"sort_by\": \"...\"} — payload e LISTA de condicoes (mesmo formato de lionchat_conversations_filter / lionchat_contacts_filter); values e SEMPRE lista; query_operator liga a condicao com a SEGUINTE e a ULTIMA vai null. sort_by e opcional (so pasta de conversa). No update, query SUBSTITUI inteira: mande as condicoes E o sort_by (leia antes com lionchat_custom_filters_show)."
|
|
12023
|
+
},
|
|
12024
|
+
{
|
|
12025
|
+
"name": "shared",
|
|
12026
|
+
"type": "boolean",
|
|
12027
|
+
"location": "body",
|
|
12028
|
+
"required": false,
|
|
12029
|
+
"description": "So administrador e so pasta de conversa: true compartilha com a conta; false volta a ser pasta pessoal de quem mandou."
|
|
11769
12030
|
}
|
|
11770
12031
|
],
|
|
11771
12032
|
"returns": "filtro personalizado atualizado",
|
|
@@ -11786,7 +12047,7 @@
|
|
|
11786
12047
|
"method": "DELETE",
|
|
11787
12048
|
"path": "/api/v1/accounts/{account_id}/custom_filters/{id}",
|
|
11788
12049
|
"title": "Deletar Filtro",
|
|
11789
|
-
"description": "Remove filtro. Remove filtro personalizado permanentemente. CUIDADO: ação irreversível em muitos casos. Verifique dependências antes.",
|
|
12050
|
+
"description": "Remove filtro. Remove filtro personalizado permanentemente. CUIDADO: ação irreversível em muitos casos. Verifique dependências antes. Segmento (contact) so pode ser apagado por administrador ou cargo com contact_manage, campaign_manage ou automation_manage (401). Segmento usado por campanha programada (no publico ou no 'Nao enviar para') NAO e apagado: 422 com message citando a campanha. Pasta compartilhada: so administrador apaga, e ela some para TODA a conta.",
|
|
11790
12051
|
"category": "Filtros Personalizados",
|
|
11791
12052
|
"params": [
|
|
11792
12053
|
{
|
|
@@ -12296,7 +12557,7 @@
|
|
|
12296
12557
|
"type": "string",
|
|
12297
12558
|
"location": "query",
|
|
12298
12559
|
"required": false,
|
|
12299
|
-
"description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
|
|
12560
|
+
"description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422 assignee_id aceita 'current_user' (quem pergunta)."
|
|
12300
12561
|
},
|
|
12301
12562
|
{
|
|
12302
12563
|
"name": "contact_filters",
|
|
@@ -12505,6 +12766,40 @@
|
|
|
12505
12766
|
"lionchat_companies_update"
|
|
12506
12767
|
]
|
|
12507
12768
|
},
|
|
12769
|
+
{
|
|
12770
|
+
"id": "lionchat_companies_import_status",
|
|
12771
|
+
"method": "GET",
|
|
12772
|
+
"path": "/api/v1/accounts/{account_id}/companies/import_status/{import_id}",
|
|
12773
|
+
"title": "Andamento da Importacao de Empresas",
|
|
12774
|
+
"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.",
|
|
12775
|
+
"category": "Empresas",
|
|
12776
|
+
"params": [
|
|
12777
|
+
{
|
|
12778
|
+
"name": "account_id",
|
|
12779
|
+
"type": "integer",
|
|
12780
|
+
"location": "path",
|
|
12781
|
+
"required": true,
|
|
12782
|
+
"description": "ID da conta"
|
|
12783
|
+
},
|
|
12784
|
+
{
|
|
12785
|
+
"name": "import_id",
|
|
12786
|
+
"type": "string",
|
|
12787
|
+
"location": "path",
|
|
12788
|
+
"required": true,
|
|
12789
|
+
"description": "Codigo da importacao (UUID) devolvido por lionchat_companies_bulk_create"
|
|
12790
|
+
}
|
|
12791
|
+
],
|
|
12792
|
+
"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",
|
|
12793
|
+
"common_use_cases": [
|
|
12794
|
+
"Avisar quando a lista de empresas terminou de entrar",
|
|
12795
|
+
"Descobrir quantas empresas foram criadas e quantas foram atualizadas",
|
|
12796
|
+
"Ver quais linhas nao entraram e por que"
|
|
12797
|
+
],
|
|
12798
|
+
"related_tools": [
|
|
12799
|
+
"lionchat_companies_list",
|
|
12800
|
+
"lionchat_companies_search"
|
|
12801
|
+
]
|
|
12802
|
+
},
|
|
12508
12803
|
{
|
|
12509
12804
|
"id": "lionchat_offers_list",
|
|
12510
12805
|
"method": "GET",
|
|
@@ -12744,7 +13039,7 @@
|
|
|
12744
13039
|
"type": "string",
|
|
12745
13040
|
"location": "query",
|
|
12746
13041
|
"required": false,
|
|
12747
|
-
"description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
|
|
13042
|
+
"description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422 assignee_id aceita 'current_user' (quem pergunta)."
|
|
12748
13043
|
},
|
|
12749
13044
|
{
|
|
12750
13045
|
"name": "contact_filters",
|
|
@@ -12773,8 +13068,8 @@
|
|
|
12773
13068
|
"id": "lionchat_upload_create",
|
|
12774
13069
|
"method": "POST",
|
|
12775
13070
|
"path": "/api/v1/accounts/{account_id}/upload",
|
|
12776
|
-
"title": "
|
|
12777
|
-
"description": "
|
|
13071
|
+
"title": "Subir Arquivo por Link",
|
|
13072
|
+
"description": "Sobe um arquivo POR LINK (external_url) e devolve file_url e blob_id. Pelo conector o arquivo SEMPRE vai por link — não há envio direto do computador. Aceita foto, vídeo, áudio e documentos (PDF, Word, Excel, CSV, ZIP...); até 23/10/2026 o link só aceitava foto e vídeo. Link que abre uma PÁGINA é recusado ('O link abre uma página, não o arquivo') — ex.: Google Drive .../file/d/<ID>/view; use o download direto https://drive.google.com/uc?export=download&id=<ID> (arquivo com acesso 'qualquer pessoa com o link'). Áudio e documento acima do teto do tipo (lionchat_upload_limits_show) são recusados. Use o blob_id no array attachments de lionchat_conversations_messages_create — funciona também na conversa de um GRUPO do WhatsApp (caixa QR Code). Na dúvida, confira o link antes com lionchat_upload_validate.",
|
|
12778
13073
|
"category": "Upload",
|
|
12779
13074
|
"params": [
|
|
12780
13075
|
{
|
|
@@ -12789,16 +13084,20 @@
|
|
|
12789
13084
|
"type": "string",
|
|
12790
13085
|
"location": "body",
|
|
12791
13086
|
"required": false,
|
|
12792
|
-
"description": "
|
|
13087
|
+
"description": "Link PÚBLICO de download do arquivo (http/https). Link de página de visualização é recusado"
|
|
12793
13088
|
}
|
|
12794
13089
|
],
|
|
12795
|
-
"returns": "
|
|
13090
|
+
"returns": "{file_url, blob_id}",
|
|
12796
13091
|
"common_use_cases": [
|
|
12797
|
-
"
|
|
12798
|
-
"
|
|
12799
|
-
"
|
|
13092
|
+
"Mandar PDF, áudio ou documento numa conversa ou grupo do WhatsApp (blob_id em attachments)",
|
|
13093
|
+
"Anexar foto ou vídeo por link numa mensagem",
|
|
13094
|
+
"Enviar todo dia um relatório em PDF num grupo"
|
|
12800
13095
|
],
|
|
12801
|
-
"related_tools": [
|
|
13096
|
+
"related_tools": [
|
|
13097
|
+
"lionchat_conversations_messages_create",
|
|
13098
|
+
"lionchat_upload_validate",
|
|
13099
|
+
"lionchat_upload_limits_show"
|
|
13100
|
+
]
|
|
12802
13101
|
},
|
|
12803
13102
|
{
|
|
12804
13103
|
"id": "lionchat_inboxes_public_contacts_create",
|
|
@@ -14619,7 +14918,7 @@
|
|
|
14619
14918
|
"type": "array",
|
|
14620
14919
|
"location": "body",
|
|
14621
14920
|
"required": true,
|
|
14622
|
-
"description": "Array de permissoes (array de strings). Valores aceitos (
|
|
14921
|
+
"description": "Array de permissoes (array de strings). Valores aceitos (25): conversation_manage, conversation_delete, conversation_unassigned_manage, conversation_participating_manage, conversation_team_manage, conversation_assigned_manage (Ver conversas dos colegas: so as que JA TEM responsavel, nas caixas de que a pessoa e membro; nunca a fila sem dono — 02/10/2026), contact_manage, contact_export_import, report_manage, knowledge_base_manage, kanban_manage, kanban_view, kanban_delete, kanban_export_import, offer_manage, funnel_manage, kanban_ai_analyze (Analisar funil com IA: o botao \"Analisar com IA\" do Kanban; tambem precisa do recurso de plano kanban_ai_analysis, 28/10/2026), campaign_manage, automation_manage, marketing_integrations_manage, captain_manage, flowbuilder_manage, lead_form_manage (Formularios publicos, 05/09), signature_manage (Assinatura eletronica, 05/09), agenda_manage (Gerenciar a Agenda). Fora da lista = recusado. Administrador tem tudo sem cargo; agente sem cargo nao tem lead_form_manage nem signature_manage (nao ve Formularios nem Assinaturas no menu). O editor da tela marca junto as que uma inclui: conversation_manage inclui as 4 outras de conversa; conversation_team_manage inclui conversation_participating_manage; kanban_manage inclui kanban_view. Mande a lista ja completa."
|
|
14623
14922
|
},
|
|
14624
14923
|
{
|
|
14625
14924
|
"name": "hidden_menus",
|
|
@@ -14704,7 +15003,7 @@
|
|
|
14704
15003
|
"type": "array",
|
|
14705
15004
|
"location": "body",
|
|
14706
15005
|
"required": false,
|
|
14707
|
-
"description": "Permissoes (array de strings). Valores aceitos (
|
|
15006
|
+
"description": "Permissoes (array de strings). Valores aceitos (25): conversation_manage, conversation_delete, conversation_unassigned_manage, conversation_participating_manage, conversation_team_manage, conversation_assigned_manage (Ver conversas dos colegas: so as que JA TEM responsavel, nas caixas de que a pessoa e membro; nunca a fila sem dono — 02/10/2026), contact_manage, contact_export_import, report_manage, knowledge_base_manage, kanban_manage, kanban_view, kanban_delete, kanban_export_import, offer_manage, funnel_manage, kanban_ai_analyze (Analisar funil com IA: o botao \"Analisar com IA\" do Kanban; tambem precisa do recurso de plano kanban_ai_analysis, 28/10/2026), campaign_manage, automation_manage, marketing_integrations_manage, captain_manage, flowbuilder_manage, lead_form_manage (Formularios publicos, 05/09), signature_manage (Assinatura eletronica, 05/09), agenda_manage (Gerenciar a Agenda). Fora da lista = recusado. Administrador tem tudo sem cargo; agente sem cargo nao tem lead_form_manage nem signature_manage (nao ve Formularios nem Assinaturas no menu). O editor da tela marca junto as que uma inclui: conversation_manage inclui as 4 outras de conversa; conversation_team_manage inclui conversation_participating_manage; kanban_manage inclui kanban_view. Mande a lista ja completa."
|
|
14708
15007
|
},
|
|
14709
15008
|
{
|
|
14710
15009
|
"name": "hidden_menus",
|
|
@@ -15583,7 +15882,7 @@
|
|
|
15583
15882
|
"method": "POST",
|
|
15584
15883
|
"path": "/api/v1/accounts/{account_id}/dashboard_apps",
|
|
15585
15884
|
"title": "Criar Dashboard App",
|
|
15586
|
-
"description": "Cria um dashboard app. Body exige wrapper dashboard_app.",
|
|
15885
|
+
"description": "Cria um dashboard app. Body exige wrapper dashboard_app. So administrador (desde 27/10; os outros recebem 401).",
|
|
15587
15886
|
"category": "Dashboard Apps",
|
|
15588
15887
|
"params": [
|
|
15589
15888
|
{
|
|
@@ -15661,7 +15960,7 @@
|
|
|
15661
15960
|
"method": "PUT",
|
|
15662
15961
|
"path": "/api/v1/accounts/{account_id}/dashboard_apps/{id}",
|
|
15663
15962
|
"title": "Atualizar Dashboard App",
|
|
15664
|
-
"description": "Atualiza um app do dashboard. Atualiza campos do dashboard app existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: title, content.",
|
|
15963
|
+
"description": "Atualiza um app do dashboard. Atualiza campos do dashboard app existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: title, content. So administrador (desde 27/10; os outros recebem 401).",
|
|
15665
15964
|
"category": "Dashboard Apps",
|
|
15666
15965
|
"params": [
|
|
15667
15966
|
{
|
|
@@ -15718,7 +16017,7 @@
|
|
|
15718
16017
|
"method": "DELETE",
|
|
15719
16018
|
"path": "/api/v1/accounts/{account_id}/dashboard_apps/{id}",
|
|
15720
16019
|
"title": "Excluir Dashboard App",
|
|
15721
|
-
"description": "Remove um app do dashboard. Remove dashboard app permanentemente. CUIDADO: ação irreversível em muitos casos. Verifique dependências antes.",
|
|
16020
|
+
"description": "Remove um app do dashboard. Remove dashboard app permanentemente. CUIDADO: ação irreversível em muitos casos. Verifique dependências antes. So administrador (desde 27/10; os outros recebem 401).",
|
|
15722
16021
|
"category": "Dashboard Apps",
|
|
15723
16022
|
"params": [
|
|
15724
16023
|
{
|
|
@@ -18642,7 +18941,7 @@
|
|
|
18642
18941
|
"type": "string",
|
|
18643
18942
|
"location": "body",
|
|
18644
18943
|
"required": false,
|
|
18645
|
-
"description": "Token de validacao Hotmart (hottok) (dentro de hotmart_webhook)"
|
|
18944
|
+
"description": "Token de validacao Hotmart (hottok) (dentro de hotmart_webhook) (27/10) Mandar o valor escondido (•••••••• ou [REDACTED]) mantem a chave gravada — so mande quando for trocar de verdade."
|
|
18646
18945
|
},
|
|
18647
18946
|
{
|
|
18648
18947
|
"name": "inbox_id",
|
|
@@ -18949,7 +19248,7 @@
|
|
|
18949
19248
|
"type": "string",
|
|
18950
19249
|
"location": "body",
|
|
18951
19250
|
"required": false,
|
|
18952
|
-
"description": "Token de validacao Kiwify (dentro de kiwify_webhook)"
|
|
19251
|
+
"description": "Token de validacao Kiwify (dentro de kiwify_webhook) (27/10) Mandar o valor escondido (•••••••• ou [REDACTED]) mantem a chave gravada — so mande quando for trocar de verdade."
|
|
18953
19252
|
},
|
|
18954
19253
|
{
|
|
18955
19254
|
"name": "inbox_id",
|
|
@@ -19256,7 +19555,7 @@
|
|
|
19256
19555
|
"type": "string",
|
|
19257
19556
|
"location": "body",
|
|
19258
19557
|
"required": false,
|
|
19259
|
-
"description": "Token de validacao Ticto (dentro de ticto_webhook)"
|
|
19558
|
+
"description": "Token de validacao Ticto (dentro de ticto_webhook) (27/10) Mandar o valor escondido (•••••••• ou [REDACTED]) mantem a chave gravada — so mande quando for trocar de verdade."
|
|
19260
19559
|
},
|
|
19261
19560
|
{
|
|
19262
19561
|
"name": "inbox_id",
|
|
@@ -19563,7 +19862,7 @@
|
|
|
19563
19862
|
"type": "string",
|
|
19564
19863
|
"location": "body",
|
|
19565
19864
|
"required": false,
|
|
19566
|
-
"description": "Segredo de validacao Eduzz (dentro de eduzz_webhook)"
|
|
19865
|
+
"description": "Segredo de validacao Eduzz (dentro de eduzz_webhook) (27/10) Mandar o valor escondido (•••••••• ou [REDACTED]) mantem a chave gravada — so mande quando for trocar de verdade."
|
|
19567
19866
|
},
|
|
19568
19867
|
{
|
|
19569
19868
|
"name": "inbox_id",
|
|
@@ -19870,7 +20169,7 @@
|
|
|
19870
20169
|
"type": "string",
|
|
19871
20170
|
"location": "body",
|
|
19872
20171
|
"required": false,
|
|
19873
|
-
"description": "Chave de validacao Monetizze (dentro de monetizze_webhook)"
|
|
20172
|
+
"description": "Chave de validacao Monetizze (dentro de monetizze_webhook) (27/10) Mandar o valor escondido (•••••••• ou [REDACTED]) mantem a chave gravada — so mande quando for trocar de verdade."
|
|
19874
20173
|
},
|
|
19875
20174
|
{
|
|
19876
20175
|
"name": "inbox_id",
|
|
@@ -22965,7 +23264,7 @@
|
|
|
22965
23264
|
"type": "array",
|
|
22966
23265
|
"location": "body",
|
|
22967
23266
|
"required": false,
|
|
22968
|
-
"description": "LISTA de objetos — cada secao e um OBJETO com type: [{\"type\": \"Label\", \"id\": 12}, {\"type\": \"ContactAttribute\", \"key\": \"plano\", \"operator\": \"eq\", \"value\": \"Premium\"}]; uma secao unica mandada como objeto vira lista de um; texto ou numero no lugar da lista e RECUSADO (422). Lista de secoes do publico-alvo (uniao/intersecao conforme audience_mode). Sao
|
|
23267
|
+
"description": "LISTA de objetos — cada secao e um OBJETO com type: [{\"type\": \"Label\", \"id\": 12}, {\"type\": \"ContactAttribute\", \"key\": \"plano\", \"operator\": \"eq\", \"value\": \"Premium\"}]; uma secao unica mandada como objeto vira lista de um; texto ou numero no lugar da lista e RECUSADO (422). Lista de secoes do publico-alvo (uniao/intersecao conforme audience_mode). Sao 8 tipos: 'Label' {id} (etiqueta de CONVERSA); 'Funnel' {id, stages: ['slug_da_etapa'], include_won: bool, include_lost: bool} (SO 1 funil por campanha); 'ConversationAttribute' {key, value, operator}; 'ContactLabel' {id} (etiqueta de CONTATO); 'ContactAttribute' {key, value, operator}; 'CardAttribute' {key, value, operator} (atributo do card Kanban); 'AgentTeam' {assignee_ids: [], team_ids: [], assignee_mode?, team_mode?} (responsavel atual OU time da conversa; assignee_mode 'none' = conversa SEM responsavel ('Sem atendente'), 'any' = com qualquer responsavel; team_mode 'none'|'any' igual para time; ausente/'specific' = usa os ids. Vale qualquer conversa do contato. Atendente e time SEMPRE somam, mesmo em blocos AgentTeam separados); 'Segment' {id} (22/10/2026: segmento de contatos da CONTA — id de lionchat_custom_filters_list com filter_type contact; vale WhatsApp oficial, QR Code e Campanha de Fluxo; SMS recusa com 422; a regra do segmento e lida na HORA do disparo e, se o segmento sumiu ou a regra quebrou, a campanha NAO envia nada e o motivo fica em trigger_rules.audience_error). OPERADOR (28/07/2026): as tres secoes de atributo (ConversationAttribute, ContactAttribute, CardAttribute) aceitam `operator` com 7 valores: eq (padrao), neq, contains, not_contains, starts_with, present, blank. Em `present`/`blank` NAO se manda `value`; nos outros cinco, secao SEM `value` e DESCARTADA em silencio e o publico muda sem aviso nenhum. Vocabulario PROPRIO da campanha: `equal_to`/`is_present` (dos filtros de conversa) NAO existem aqui e caem em igualdade exata, tambem sem erro. `neq` e `not_contains` INCLUEM de proposito quem nao tem o atributo preenchido. Nos operadores de TEXTO (`contains`, `not_contains`, `starts_with`) maiuscula/minuscula NAO importam; ja `eq`/`neq` comparam EXATO — \"Ativo\" NAO casa com \"ativo\". Nos tres de texto, `%`/`_` digitados valem como texto normal, nunca como curinga. OBRIGATORIO em campanha one-off. Use exatamente as MESMAS secoes que voce passou em lionchat_campaigns_estimate_audience — estimar com um tipo e criar com outro entrega um publico diferente do numero que voce mostrou."
|
|
22969
23268
|
},
|
|
22970
23269
|
{
|
|
22971
23270
|
"name": "audience_mode",
|
|
@@ -23014,7 +23313,7 @@
|
|
|
23014
23313
|
"type": "object",
|
|
23015
23314
|
"location": "body",
|
|
23016
23315
|
"required": false,
|
|
23017
|
-
"description": "Regras da campanha (hash aberto). Carrega: 'audience_mode' ('sum'|'all', combinacao das secoes de publico) e 'exclusion' (array no MESMO formato do audience — publico a negativar/excluir do disparo). Ex.: {\"audience_mode\":\"sum\",\"exclusion\":[{\"type\":\"ContactLabel\",\"id\":12}]}. audience_mode top-level so vale no estimate_audience; ao criar/editar ele PRECISA ir aqui dentro. A `exclusion` usa o MESMO formato e os MESMOS
|
|
23316
|
+
"description": "Regras da campanha (hash aberto). Carrega: 'audience_mode' ('sum'|'all', combinacao das secoes de publico) e 'exclusion' (array no MESMO formato do audience — publico a negativar/excluir do disparo). Ex.: {\"audience_mode\":\"sum\",\"exclusion\":[{\"type\":\"ContactLabel\",\"id\":12}]}. audience_mode top-level so vale no estimate_audience; ao criar/editar ele PRECISA ir aqui dentro. A `exclusion` usa o MESMO formato e os MESMOS 8 tipos do audience (inclusive 'Segment' {id}), inclusive o `operator` nas secoes de atributo. A exclusion e LISTA de objetos (objeto unico vira lista de um; texto e recusado com 422)."
|
|
23018
23317
|
},
|
|
23019
23318
|
{
|
|
23020
23319
|
"name": "template_params",
|
|
@@ -23100,7 +23399,7 @@
|
|
|
23100
23399
|
"type": "array",
|
|
23101
23400
|
"location": "body",
|
|
23102
23401
|
"required": false,
|
|
23103
|
-
"description": "LISTA de objetos — cada secao e um OBJETO com type: [{\"type\": \"Label\", \"id\": 12}, {\"type\": \"ContactAttribute\", \"key\": \"plano\", \"operator\": \"eq\", \"value\": \"Premium\"}]; uma secao unica mandada como objeto vira lista de um; texto ou numero no lugar da lista e RECUSADO (422). Lista de secoes do publico-alvo (uniao/intersecao conforme audience_mode). Sao
|
|
23402
|
+
"description": "LISTA de objetos — cada secao e um OBJETO com type: [{\"type\": \"Label\", \"id\": 12}, {\"type\": \"ContactAttribute\", \"key\": \"plano\", \"operator\": \"eq\", \"value\": \"Premium\"}]; uma secao unica mandada como objeto vira lista de um; texto ou numero no lugar da lista e RECUSADO (422). Lista de secoes do publico-alvo (uniao/intersecao conforme audience_mode). Sao 8 tipos: 'Label' {id} (etiqueta de CONVERSA); 'Funnel' {id, stages: ['slug_da_etapa'], include_won: bool, include_lost: bool} (SO 1 funil por campanha); 'ConversationAttribute' {key, value, operator}; 'ContactLabel' {id} (etiqueta de CONTATO); 'ContactAttribute' {key, value, operator}; 'CardAttribute' {key, value, operator} (atributo do card Kanban); 'AgentTeam' {assignee_ids: [], team_ids: [], assignee_mode?, team_mode?} (responsavel atual OU time da conversa; assignee_mode 'none' = conversa SEM responsavel ('Sem atendente'), 'any' = com qualquer responsavel; team_mode 'none'|'any' igual para time; ausente/'specific' = usa os ids. Vale qualquer conversa do contato. Atendente e time SEMPRE somam, mesmo em blocos AgentTeam separados); 'Segment' {id} (22/10/2026: segmento de contatos da CONTA — id de lionchat_custom_filters_list com filter_type contact; vale WhatsApp oficial, QR Code e Campanha de Fluxo; SMS recusa com 422; a regra do segmento e lida na HORA do disparo e, se o segmento sumiu ou a regra quebrou, a campanha NAO envia nada e o motivo fica em trigger_rules.audience_error). OPERADOR (28/07/2026): as tres secoes de atributo (ConversationAttribute, ContactAttribute, CardAttribute) aceitam `operator` com 7 valores: eq (padrao), neq, contains, not_contains, starts_with, present, blank. Em `present`/`blank` NAO se manda `value`; nos outros cinco, secao SEM `value` e DESCARTADA em silencio e o publico muda sem aviso nenhum. Vocabulario PROPRIO da campanha: `equal_to`/`is_present` (dos filtros de conversa) NAO existem aqui e caem em igualdade exata, tambem sem erro. `neq` e `not_contains` INCLUEM de proposito quem nao tem o atributo preenchido. Nos operadores de TEXTO (`contains`, `not_contains`, `starts_with`) maiuscula/minuscula NAO importam; ja `eq`/`neq` comparam EXATO — \"Ativo\" NAO casa com \"ativo\". Nos tres de texto, `%`/`_` digitados valem como texto normal, nunca como curinga. OBRIGATORIO em campanha one-off. Use exatamente as MESMAS secoes que voce passou em lionchat_campaigns_estimate_audience — estimar com um tipo e criar com outro entrega um publico diferente do numero que voce mostrou. No update a lista SUBSTITUI o publico anterior: mande todas as secoes."
|
|
23104
23403
|
},
|
|
23105
23404
|
{
|
|
23106
23405
|
"name": "audience_mode",
|
|
@@ -23190,7 +23489,7 @@
|
|
|
23190
23489
|
"method": "POST",
|
|
23191
23490
|
"path": "/api/v1/accounts/{account_id}/campaigns/estimate_audience",
|
|
23192
23491
|
"title": "Estimar Audiência da Campanha",
|
|
23193
|
-
"description": "Conta quantos contatos COM TELEFONE atendem aos critérios ANTES de criar a campanha. Usa o MESMO motor do disparo (estimativa = lista real). SEMPRE chame antes de campaigns_create e mostre o número ao usuário. [2026-07-25] audience e exclusion aceitam tanto lista quanto texto JSON de uma lista; qualquer outro formato responde 422 com a mensagem do erro (antes dava erro 500).",
|
|
23492
|
+
"description": "Conta quantos contatos COM TELEFONE atendem aos critérios ANTES de criar a campanha. Usa o MESMO motor do disparo (estimativa = lista real). SEMPRE chame antes de campaigns_create e mostre o número ao usuário. [2026-07-25] audience e exclusion aceitam tanto lista quanto texto JSON de uma lista; qualquer outro formato responde 422 com a mensagem do erro (antes dava erro 500). [2026-10-22] Segmento com problema (apagado, de outra conta, regra vazia ou quebrada) no audience OU na exclusion: responde 200 com estimated_count null e segment_unavailable {segment_id, reason} — avise o usuario e NAO crie a campanha assim (ela nao enviaria nada).",
|
|
23194
23493
|
"category": "Campanhas",
|
|
23195
23494
|
"params": [
|
|
23196
23495
|
{
|
|
@@ -23198,7 +23497,7 @@
|
|
|
23198
23497
|
"type": "array",
|
|
23199
23498
|
"location": "body",
|
|
23200
23499
|
"required": true,
|
|
23201
|
-
"description": "LISTA de objetos — cada secao e um OBJETO com type: [{\"type\": \"Label\", \"id\": 12}, {\"type\": \"ContactAttribute\", \"key\": \"plano\", \"operator\": \"eq\", \"value\": \"Premium\"}]; nunca numero solto nem objeto unico (objeto no lugar da lista nao e lido como publico). Lista de secoes do publico-alvo (uniao/intersecao conforme audience_mode). Sao
|
|
23500
|
+
"description": "LISTA de objetos — cada secao e um OBJETO com type: [{\"type\": \"Label\", \"id\": 12}, {\"type\": \"ContactAttribute\", \"key\": \"plano\", \"operator\": \"eq\", \"value\": \"Premium\"}]; nunca numero solto nem objeto unico (objeto no lugar da lista nao e lido como publico). Lista de secoes do publico-alvo (uniao/intersecao conforme audience_mode). Sao 8 tipos: 'Label' {id} (etiqueta de CONVERSA); 'Funnel' {id, stages: ['slug_da_etapa'], include_won: bool, include_lost: bool} (SO 1 funil por campanha); 'ConversationAttribute' {key, value, operator}; 'ContactLabel' {id} (etiqueta de CONTATO); 'ContactAttribute' {key, value, operator}; 'CardAttribute' {key, value, operator} (atributo do card Kanban); 'AgentTeam' {assignee_ids: [], team_ids: [], assignee_mode?, team_mode?} (responsavel atual OU time da conversa; assignee_mode 'none' = conversa SEM responsavel ('Sem atendente'), 'any' = com qualquer responsavel; team_mode 'none'|'any' igual para time; ausente/'specific' = usa os ids. Vale qualquer conversa do contato. Atendente e time SEMPRE somam, mesmo em blocos AgentTeam separados); 'Segment' {id} (22/10/2026: segmento de contatos da CONTA — id de lionchat_custom_filters_list com filter_type contact; vale WhatsApp oficial, QR Code e Campanha de Fluxo; SMS recusa com 422; a regra do segmento e lida na HORA do disparo e, se o segmento sumiu ou a regra quebrou, a campanha NAO envia nada e o motivo fica em trigger_rules.audience_error). OPERADOR (28/07/2026): as tres secoes de atributo (ConversationAttribute, ContactAttribute, CardAttribute) aceitam `operator` com 7 valores: eq (padrao), neq, contains, not_contains, starts_with, present, blank. Em `present`/`blank` NAO se manda `value`; nos outros cinco, secao SEM `value` e DESCARTADA em silencio e o publico muda sem aviso nenhum. Vocabulario PROPRIO da campanha: `equal_to`/`is_present` (dos filtros de conversa) NAO existem aqui e caem em igualdade exata, tambem sem erro. `neq` e `not_contains` INCLUEM de proposito quem nao tem o atributo preenchido. Nos operadores de TEXTO (`contains`, `not_contains`, `starts_with`) maiuscula/minuscula NAO importam; ja `eq`/`neq` comparam EXATO — \"Ativo\" NAO casa com \"ativo\". Nos tres de texto, `%`/`_` digitados valem como texto normal, nunca como curinga."
|
|
23202
23501
|
},
|
|
23203
23502
|
{
|
|
23204
23503
|
"name": "audience_mode",
|
|
@@ -23219,7 +23518,7 @@
|
|
|
23219
23518
|
"type": "array",
|
|
23220
23519
|
"location": "body",
|
|
23221
23520
|
"required": false,
|
|
23222
|
-
"description": "LISTA de objetos (mesmo formato do audience, ex.: [{\"type\": \"ContactLabel\", \"id\": 12}]). Publico a EXCLUIR/negativar antes de estimar (mesmo formato do 'audience': lista de secoes por tipo). O contador desconta quem cair na exclusao. Tipos aceitos iguais aos do audience (Label, Funnel, ConversationAttribute, ContactLabel, ContactAttribute, CardAttribute, AgentTeam). As secoes de atributo aceitam o mesmo `operator` do audience (eq, neq, contains, not_contains, starts_with, present, blank). AgentTeam aceita os mesmos assignee_mode/team_mode ('none'|'any') do audience."
|
|
23521
|
+
"description": "LISTA de objetos (mesmo formato do audience, ex.: [{\"type\": \"ContactLabel\", \"id\": 12}]). Publico a EXCLUIR/negativar antes de estimar (mesmo formato do 'audience': lista de secoes por tipo). O contador desconta quem cair na exclusao. Tipos aceitos iguais aos do audience (Label, Funnel, ConversationAttribute, ContactLabel, ContactAttribute, CardAttribute, AgentTeam, Segment). As secoes de atributo aceitam o mesmo `operator` do audience (eq, neq, contains, not_contains, starts_with, present, blank). AgentTeam aceita os mesmos assignee_mode/team_mode ('none'|'any') do audience."
|
|
23223
23522
|
}
|
|
23224
23523
|
],
|
|
23225
23524
|
"returns": "{ estimated_count: <int>, limit_info: { tier, cap, used_24h, remaining, will_send_now, batches_preview: [{date, count}] } } — NAO existe o campo `count`. `limit_info` so vem preenchido quando se manda `inbox_id` de caixa WhatsApp OFICIAL (Cloud): `cap` = teto de contatos NOVOS por dia que a Meta libera, `used_24h` = quanto ja foi usado nas ultimas 24h, `remaining` = o que sobra hoje, `will_send_now` = quanto sai agora e `batches_preview` = o cronograma dia a dia do restante. Em caixa QR Code/SMS, ou sem inbox_id, `tier`/`cap`/`used_24h`/`remaining` vem NULOS, `batches_preview` vem VAZIO e `will_send_now` e a lista inteira — nulo NAO significa \"sem limite\". Sempre mostre o teto do dia junto com o numero, senao voce promete 5.000 disparos num numero que so fala com 2.000.",
|
|
@@ -23441,7 +23740,7 @@
|
|
|
23441
23740
|
"type": "array",
|
|
23442
23741
|
"location": "body",
|
|
23443
23742
|
"required": false,
|
|
23444
|
-
"description": "Seções Label/Funnel (mesmo formato das campanhas) — resolve pros telefones dos contatos"
|
|
23743
|
+
"description": "Seções Label/Funnel (mesmo formato das campanhas) — resolve pros telefones dos contatos Segmento de contatos ({type: 'Segment', id}) e RECUSADO (422), no audience e no exclusion."
|
|
23445
23744
|
},
|
|
23446
23745
|
{
|
|
23447
23746
|
"name": "audio_id",
|
|
@@ -27284,7 +27583,7 @@
|
|
|
27284
27583
|
"method": "GET",
|
|
27285
27584
|
"path": "/api/v2/accounts/{account_id}/lead_origin_reports",
|
|
27286
27585
|
"title": "Relatório de Origem dos Leads",
|
|
27287
|
-
"description": "SÓ LEITURA. Agregado de origem dos leads/conversas: de qual plataforma, tipo, campanha, conjunto de anúncios e criativo vieram, com totais e taxa de conversão. Janela padrão: últimos 30 dias. Cruza os atributos origin_* das conversas + leads órfãos (contatos sem conversa); 'won' = cards em estágios de ganho do Kanban; leads únicos deduplicados por telefone. Permite drill-down por níveis (plataforma → tipo → campanha → conjunto → criativo). Filtra por caixa (inbox_id) e por responsável (assignee_id) — em conta com mais de uma loja, SEM inbox_id o relatório soma todas as caixas. campaign/adset aceitam o valor especial \"__none__\" = TODO lead sem nome de campanha/conjunto (diretos, orgânicos e também os de anúncio cujo nome a Meta não deixou ler); para isolar só os de anúncio sem nome, combine com kind=paid_ad.",
|
|
27586
|
+
"description": "SÓ LEITURA. Agregado de origem dos leads/conversas: de qual plataforma, tipo, campanha, conjunto de anúncios e criativo vieram, com totais e taxa de conversão. Janela padrão: últimos 30 dias. Cruza os atributos origin_* das conversas + leads órfãos (contatos sem conversa); 'won' = cards em estágios de ganho do Kanban; leads únicos deduplicados por telefone. Permite drill-down por níveis (plataforma → tipo → campanha → conjunto → criativo). Filtra por caixa (inbox_id) e por responsável (assignee_id) — em conta com mais de uma loja, SEM inbox_id o relatório soma todas as caixas. campaign/adset aceitam o valor especial \"__none__\" = TODO lead sem nome de campanha/conjunto (diretos, orgânicos e também os de anúncio cujo nome a Meta não deixou ler); para isolar só os de anúncio sem nome, combine com kind=paid_ad. 'VEIO DE ANUNCIO PAGO?' (25/10/2026): o filtro `paid` e a quebra `by_paid` juntam o clique no anuncio (kind paid_ad) e o formulario do anuncio (kind lead_form). Para 'quantos leads vieram de anuncio?' use by_paid ou paid=paid — somar so kind=paid_ad esquece os de formulario.",
|
|
27288
27587
|
"category": "Relatorios",
|
|
27289
27588
|
"params": [
|
|
27290
27589
|
{
|
|
@@ -27320,7 +27619,14 @@
|
|
|
27320
27619
|
"type": "string",
|
|
27321
27620
|
"location": "query",
|
|
27322
27621
|
"required": false,
|
|
27323
|
-
"description": "Filtra por tipo de origem"
|
|
27622
|
+
"description": "Filtra por tipo de origem Valores: paid_ad (no painel 'Anuncio (clique)'), lead_form ('Anuncio (formulario)'), organic, direct, referral, agendamento, formulario, manual. Para 'veio de anuncio' (clique + formulario) use `paid`."
|
|
27623
|
+
},
|
|
27624
|
+
{
|
|
27625
|
+
"name": "paid",
|
|
27626
|
+
"type": "string",
|
|
27627
|
+
"location": "query",
|
|
27628
|
+
"required": false,
|
|
27629
|
+
"description": "Veio de anuncio pago? (25/10/2026). paid = clique no anuncio OU formulario do anuncio; not_paid = organico, direto, indicacao, pagina de agendamento, formulario do site; unknown = origem cadastrada a mao ou tipo desconhecido (nunca tratado como pago); unclassified = sem origem. Valor fora da lista e ignorado."
|
|
27324
27630
|
},
|
|
27325
27631
|
{
|
|
27326
27632
|
"name": "campaign",
|
|
@@ -27358,7 +27664,7 @@
|
|
|
27358
27664
|
"description": "Agrupamento do resultado: platform, kind, campaign, adset ou creative"
|
|
27359
27665
|
}
|
|
27360
27666
|
],
|
|
27361
|
-
"returns": "{ period, totals: { conversations, classified, unclassified, orphan_leads, unique_leads, won_leads, conversion_rate }, by_platform, by_kind, by_campaign, by_adset, by_creative }",
|
|
27667
|
+
"returns": "{ period, totals: { conversations, classified, unclassified, orphan_leads, unique_leads, won_leads, conversion_rate }, by_platform, by_kind, by_campaign, by_adset, by_creative, by_paid } `by_paid` (25/10/2026): sempre as quatro linhas paid/not_paid/unknown/unclassified, cada uma {value, conversations, won, conversion_rate}, somando o mesmo total do topo.",
|
|
27362
27668
|
"common_use_cases": [
|
|
27363
27669
|
"Ver de onde vêm os leads (campanha, anúncio, plataforma)",
|
|
27364
27670
|
"Medir taxa de conversão por origem",
|
|
@@ -28749,7 +29055,7 @@
|
|
|
28749
29055
|
"method": "GET",
|
|
28750
29056
|
"path": "/api/v1/accounts/{account_id}/kanban_items/import_status/{import_id}",
|
|
28751
29057
|
"title": "Andamento da Importacao",
|
|
28752
|
-
"description": "Acompanha a importacao de cards em massa que ja foi enviada. O import_id e o codigo devolvido pela chamada de importacao (lionchat_kanban_items_import) — a importacao roda em segundo plano, entao consulte aqui de tempos em tempos ate o status virar 'completed' ou 'failed'. O registro vive 1 hora: depois disso volta 404 mesmo que a importacao tenha dado certo, entao 404 nao significa fracasso.",
|
|
29058
|
+
"description": "Acompanha a importacao de cards em massa que ja foi enviada. O import_id e o codigo devolvido pela chamada de importacao (lionchat_kanban_items_import) — a importacao roda em segundo plano, entao consulte aqui de tempos em tempos ate o status virar 'completed' ou 'failed'. O registro vive 1 hora: depois disso volta 404 mesmo que a importacao tenha dado certo, entao 404 nao significa fracasso. Quando a importacao ligou campos personalizados (2026-10-23): attributes_applied: true confirma que o servidor aplicou os campos (ausente = servidor antigo, os cards nasceram sem eles), e skipped lista ate 50 valores que NAO entraram ({row, field, message}, motivo no idioma da conta) com o total em skipped_count — o card nasce do mesmo jeito, so aquele valor fica de fora. row e a linha da PLANILHA (cabecalho = 1), tambem em errors.",
|
|
28753
29059
|
"category": "Itens",
|
|
28754
29060
|
"params": [
|
|
28755
29061
|
{
|
|
@@ -28767,7 +29073,7 @@
|
|
|
28767
29073
|
"description": "Codigo da importacao (UUID) devolvido pela chamada de importacao de cards"
|
|
28768
29074
|
}
|
|
28769
29075
|
],
|
|
28770
|
-
"returns": "{ status: 'queued'|'processing'|'completed'|'failed', total, processed, created, contacts_created, contacts_pending_validation, error_count, errors: [
|
|
29076
|
+
"returns": "{ status: 'queued'|'processing'|'completed'|'failed', total, processed, created, contacts_created, contacts_pending_validation, error_count, errors: [{row, error}], attributes_applied?, skipped_count?, skipped?: [{row, field, message}] } — e { error } com 404 se o codigo nao existe ou ja passou de 1 hora",
|
|
28771
29077
|
"common_use_cases": [
|
|
28772
29078
|
"Avisar quando a planilha de cards terminou de subir",
|
|
28773
29079
|
"Descobrir quantas linhas deram erro e por que",
|
|
@@ -28922,6 +29228,310 @@
|
|
|
28922
29228
|
"lionchat_kanban_sales_reconciliation_preview"
|
|
28923
29229
|
]
|
|
28924
29230
|
},
|
|
29231
|
+
{
|
|
29232
|
+
"id": "lionchat_kanban_ai_analyses_setup",
|
|
29233
|
+
"method": "GET",
|
|
29234
|
+
"path": "/api/v1/accounts/{account_id}/kanban_ai_analyses/setup",
|
|
29235
|
+
"title": "Preparar análise do funil com IA",
|
|
29236
|
+
"description": "Mostra o que a janela \"Analisar com IA\" do Kanban mostra, SEM criar nada: as etapas do funil com quantos cards abertos e adiados cada uma tem (e se a etapa tem descrição), `selection` (quantos cards entram com as etapas, o filtro e a quantidade pedidos: `limit` = quantos a IA vai ler, padrão 200, até `max_limit` 1.000; `over_limit`; `already_read` = quantos vão ser PULADOS por a IA ter lido nos últimos `read_days` (7) dias sem fala nova do cliente, 1001 = mais de 1.000; `estimated_cost_usd` e `estimated_minutes`), os dias de \"parados\" aceitos (7, 14, 30), os funis de destino que a pessoa vê (com as etapas), as etiquetas com descrição, quantos motivos de ganho/perda a conta tem, `has_openai_key` e `latest_run` (a análise viva do funil: analisando, ou lista pronta/aplicando dentro das 24 h). Chame ANTES de `lionchat_kanban_ai_analyses_create` e mostre ao usuário as etapas, o total de cards, o custo e o tempo estimados e, se `already_read` > 0, que esses cards vão ser pulados (`filters_include_read: true` lê de novo). `total` 0 com `already_read` > 0 = todos já foram lidos. Quem pode: administrador ou cargo com a permissão `kanban_ai_analyze` (\"Analisar funil com IA\"), com o recurso de plano `kanban_ai_analysis` ligado na conta e o menu do Kanban visível. Funil que a pessoa não vê = 404 `funnel_not_visible`.",
|
|
29237
|
+
"category": "Itens",
|
|
29238
|
+
"params": [
|
|
29239
|
+
{
|
|
29240
|
+
"name": "account_id",
|
|
29241
|
+
"type": "integer",
|
|
29242
|
+
"location": "path",
|
|
29243
|
+
"required": true,
|
|
29244
|
+
"description": "ID da conta"
|
|
29245
|
+
},
|
|
29246
|
+
{
|
|
29247
|
+
"name": "funnel_id",
|
|
29248
|
+
"type": "integer",
|
|
29249
|
+
"location": "query",
|
|
29250
|
+
"required": true,
|
|
29251
|
+
"description": "ID do funil"
|
|
29252
|
+
},
|
|
29253
|
+
{
|
|
29254
|
+
"name": "stages",
|
|
29255
|
+
"type": "array",
|
|
29256
|
+
"location": "query",
|
|
29257
|
+
"required": false,
|
|
29258
|
+
"query_name": "stages[]",
|
|
29259
|
+
"description": "Chaves (slugs) das etapas, para calcular o total de cards e o custo. Ex.: [\"novo\", \"proposta\"]"
|
|
29260
|
+
},
|
|
29261
|
+
{
|
|
29262
|
+
"name": "filters_stale_days",
|
|
29263
|
+
"type": "integer",
|
|
29264
|
+
"location": "query",
|
|
29265
|
+
"required": false,
|
|
29266
|
+
"query_name": "filters[stale_days]",
|
|
29267
|
+
"description": "Só os cards parados na etapa há N dias: 7, 14 ou 30"
|
|
29268
|
+
},
|
|
29269
|
+
{
|
|
29270
|
+
"name": "filters_no_reply_days",
|
|
29271
|
+
"type": "integer",
|
|
29272
|
+
"location": "query",
|
|
29273
|
+
"required": false,
|
|
29274
|
+
"query_name": "filters[no_reply_days]",
|
|
29275
|
+
"description": "Só os cards sem resposta do cliente há N dias (1 a 365)"
|
|
29276
|
+
},
|
|
29277
|
+
{
|
|
29278
|
+
"name": "filters_limit",
|
|
29279
|
+
"type": "integer",
|
|
29280
|
+
"location": "query",
|
|
29281
|
+
"required": false,
|
|
29282
|
+
"query_name": "filters[limit]",
|
|
29283
|
+
"description": "Quantos cards a IA vai ler, de 1 a 1.000 (padrão 200); fora disso vale o mais perto. Os parados há mais tempo primeiro"
|
|
29284
|
+
},
|
|
29285
|
+
{
|
|
29286
|
+
"name": "filters_include_read",
|
|
29287
|
+
"type": "boolean",
|
|
29288
|
+
"location": "query",
|
|
29289
|
+
"required": false,
|
|
29290
|
+
"query_name": "filters[include_read]",
|
|
29291
|
+
"description": "true = ler de novo os cards que a IA já leu nos últimos 7 dias (gasta crédito de novo). Sem isso eles são PULADOS, a não ser que o cliente tenha escrito depois da leitura"
|
|
29292
|
+
}
|
|
29293
|
+
],
|
|
29294
|
+
"returns": "{ funnel: { id, name, description_present }, stages: [{ key, name, description_present, count }], selection: { stages, filters, total, limit, max_limit, over_limit, analyzed, already_read, read_days, exact_total, estimated_cost_usd, estimated_minutes }, stale_days_options, target_funnels: [{ id, name, stages: [{ key, name }] }], labels: [{ id, title, description, description_present }], reasons: { won, lost }, has_openai_key, latest_run }",
|
|
29295
|
+
"common_use_cases": [
|
|
29296
|
+
"Saber quantos cards abertos cada etapa tem antes de analisar",
|
|
29297
|
+
"Mostrar ao usuário o custo estimado da análise",
|
|
29298
|
+
"Descobrir se o funil já tem uma análise rodando ou uma lista pronta",
|
|
29299
|
+
"Saber quantos cards vão ser pulados por já terem sido lidos pela IA"
|
|
29300
|
+
],
|
|
29301
|
+
"related_tools": [
|
|
29302
|
+
"lionchat_kanban_ai_analyses_create",
|
|
29303
|
+
"lionchat_kanban_ai_analyses_show",
|
|
29304
|
+
"lionchat_kanban_ai_analyses_items",
|
|
29305
|
+
"lionchat_kanban_ai_analyses_apply",
|
|
29306
|
+
"lionchat_kanban_ai_analyses_reanalyze"
|
|
29307
|
+
]
|
|
29308
|
+
},
|
|
29309
|
+
{
|
|
29310
|
+
"id": "lionchat_kanban_ai_analyses_create",
|
|
29311
|
+
"method": "POST",
|
|
29312
|
+
"path": "/api/v1/accounts/{account_id}/kanban_ai_analyses",
|
|
29313
|
+
"title": "Analisar funil com IA",
|
|
29314
|
+
"description": "Cria a análise do \"Analisar com IA\": a IA (modelo de decisões da OpenAI, com a chave DA CONTA) lê os cards ABERTOS e ADIADOS das etapas escolhidas, com as conversas, e sugere mudar de etapa (também para trás), levar para outro funil, pôr/tirar etiqueta e marcar ganho/perdido. NÃO muda nenhum card: só monta a lista de sugestões. Até `filters.limit` cards somando as etapas (1 a 1.000, padrão 200; os parados há mais tempo primeiro), escolhidos NESTA chamada, PULANDO os que a IA leu nos últimos 7 dias sem fala nova do cliente (`filters.include_read: true` lê de novo e gasta crédito de novo). Roda em segundo plano: depois chame `lionchat_kanban_ai_analyses_show` a cada 5 a 10 segundos até `status = ready`. Uma análise por vez por funil (409 `funnel_busy`) e no máximo duas por conta (`account_busy`); criar uma nova SUBSTITUI a lista anterior do mesmo funil que tiver etapa em comum. Antes de criar, mostre ao usuário o total e o custo estimado do `lionchat_kanban_ai_analyses_setup`. Outras recusas: `no_openai_key`, `no_cards` (também quando todos os cards já foram lidos: mande `include_read: true` para ler de novo), `invalid_stage`, `invalid_options`, `feature_disabled`. Quem pode: administrador ou cargo com a permissão `kanban_ai_analyze` (\"Analisar funil com IA\"), com o recurso de plano `kanban_ai_analysis` ligado na conta e o menu do Kanban visível. Funil que a pessoa não vê = 404 `funnel_not_visible`.",
|
|
29315
|
+
"category": "Itens",
|
|
29316
|
+
"params": [
|
|
29317
|
+
{
|
|
29318
|
+
"name": "account_id",
|
|
29319
|
+
"type": "integer",
|
|
29320
|
+
"location": "path",
|
|
29321
|
+
"required": true,
|
|
29322
|
+
"description": "ID da conta"
|
|
29323
|
+
},
|
|
29324
|
+
{
|
|
29325
|
+
"name": "funnel_id",
|
|
29326
|
+
"type": "integer",
|
|
29327
|
+
"location": "body",
|
|
29328
|
+
"required": true,
|
|
29329
|
+
"description": "ID do funil"
|
|
29330
|
+
},
|
|
29331
|
+
{
|
|
29332
|
+
"name": "stages",
|
|
29333
|
+
"type": "array",
|
|
29334
|
+
"location": "body",
|
|
29335
|
+
"required": true,
|
|
29336
|
+
"description": "Chaves (slugs) das etapas a analisar (uma ou mais). Ex.: [\"novo\", \"proposta\"]"
|
|
29337
|
+
},
|
|
29338
|
+
{
|
|
29339
|
+
"name": "filters",
|
|
29340
|
+
"type": "object",
|
|
29341
|
+
"location": "body",
|
|
29342
|
+
"required": false,
|
|
29343
|
+
"description": "Quais cards: omitir = todos os abertos e adiados; { \"stale_days\": 7 } (7, 14 ou 30) = só os parados na etapa há N dias; { \"no_reply_days\": 10 } (1 a 365) = só os sem resposta do cliente há N dias; { \"limit\": 500 } = quantos cards ler (1 a 1.000, padrão 200); { \"include_read\": true } = ler de novo os já lidos nos últimos 7 dias. `limit` e `include_read` se combinam com os outros"
|
|
29344
|
+
},
|
|
29345
|
+
{
|
|
29346
|
+
"name": "options",
|
|
29347
|
+
"type": "object",
|
|
29348
|
+
"location": "body",
|
|
29349
|
+
"required": true,
|
|
29350
|
+
"description": "O que a IA pode sugerir (pelo menos um): { \"move_stage\": true (mudar de etapa neste funil), \"outcome\": true (ganho/perdido), \"move_funnel\": true + \"target_funnels\": { \"<id do funil>\": \"<chave da etapa de chegada>\" } (só funis ativos que a pessoa vê), \"labels_add\": [títulos das etiquetas que pode PÔR], \"labels_remove\": [títulos das que pode TIRAR] }"
|
|
29351
|
+
}
|
|
29352
|
+
],
|
|
29353
|
+
"returns": "{ id, funnel_id, stages, status (analyzing|ready|applying|finished|expired|superseded|failed), user_id, options, filters, selected_count, analyzed_count, suggested_count, skipped_count, failed_count, processed_count, input_tokens, llm_calls, cost_usd, error_code, expires_at, created_at, finished_at, apply: { requested, done, pending, returned } } — nasce com status analyzing",
|
|
29354
|
+
"common_use_cases": [
|
|
29355
|
+
"Revisar de uma vez os cards parados de uma ou mais etapas",
|
|
29356
|
+
"Achar leads que já deviam estar em outra etapa ou já são perdidos",
|
|
29357
|
+
"Sugerir etiquetas pela conversa de cada card"
|
|
29358
|
+
],
|
|
29359
|
+
"related_tools": [
|
|
29360
|
+
"lionchat_kanban_ai_analyses_setup",
|
|
29361
|
+
"lionchat_kanban_ai_analyses_show",
|
|
29362
|
+
"lionchat_kanban_ai_analyses_items",
|
|
29363
|
+
"lionchat_kanban_ai_analyses_apply",
|
|
29364
|
+
"lionchat_kanban_ai_analyses_reanalyze"
|
|
29365
|
+
]
|
|
29366
|
+
},
|
|
29367
|
+
{
|
|
29368
|
+
"id": "lionchat_kanban_ai_analyses_show",
|
|
29369
|
+
"method": "GET",
|
|
29370
|
+
"path": "/api/v1/accounts/{account_id}/kanban_ai_analyses/{id}",
|
|
29371
|
+
"title": "Andamento da análise com IA",
|
|
29372
|
+
"description": "Andamento de uma análise do \"Analisar com IA\": `status`, quantos cards já foram analisados, quantos têm sugestão, tokens e custo (`cost_usd`) e, depois de aplicar, o progresso em `apply`. Chame a cada 5 a 10 segundos: depois do create até `ready` (ou `failed`), e depois do apply até `finished`. `error_code` de análise que não terminou: `no_openai_key`, `openai_rejected` (a OpenAI recusou a chave da conta), `nothing_analyzed`, `interrupted` (parou no meio; crie outra). A lista vale 24 h (`expires_at`): depois vira `expired`; uma análise nova do funil com etapa em comum a deixa `superseded`. Quem pode: administrador ou cargo com a permissão `kanban_ai_analyze` (\"Analisar funil com IA\"), com o recurso de plano `kanban_ai_analysis` ligado na conta e o menu do Kanban visível. Funil que a pessoa não vê = 404 `funnel_not_visible`.",
|
|
29373
|
+
"category": "Itens",
|
|
29374
|
+
"params": [
|
|
29375
|
+
{
|
|
29376
|
+
"name": "account_id",
|
|
29377
|
+
"type": "integer",
|
|
29378
|
+
"location": "path",
|
|
29379
|
+
"required": true,
|
|
29380
|
+
"description": "ID da conta"
|
|
29381
|
+
},
|
|
29382
|
+
{
|
|
29383
|
+
"name": "id",
|
|
29384
|
+
"type": "integer",
|
|
29385
|
+
"location": "path",
|
|
29386
|
+
"required": true,
|
|
29387
|
+
"description": "ID da análise (o `id` devolvido pelo create)"
|
|
29388
|
+
}
|
|
29389
|
+
],
|
|
29390
|
+
"returns": "{ id, funnel_id, stages, status (analyzing|ready|applying|finished|expired|superseded|failed), user_id, options, filters, selected_count, analyzed_count, suggested_count, skipped_count, failed_count, processed_count, input_tokens, llm_calls, cost_usd, error_code, expires_at, created_at, finished_at, apply: { requested, done, pending, returned } }",
|
|
29391
|
+
"common_use_cases": [
|
|
29392
|
+
"Esperar a análise ficar pronta",
|
|
29393
|
+
"Acompanhar a aplicação até terminar",
|
|
29394
|
+
"Ver quanto a análise custou"
|
|
29395
|
+
],
|
|
29396
|
+
"related_tools": [
|
|
29397
|
+
"lionchat_kanban_ai_analyses_setup",
|
|
29398
|
+
"lionchat_kanban_ai_analyses_create",
|
|
29399
|
+
"lionchat_kanban_ai_analyses_items",
|
|
29400
|
+
"lionchat_kanban_ai_analyses_apply",
|
|
29401
|
+
"lionchat_kanban_ai_analyses_reanalyze"
|
|
29402
|
+
]
|
|
29403
|
+
},
|
|
29404
|
+
{
|
|
29405
|
+
"id": "lionchat_kanban_ai_analyses_items",
|
|
29406
|
+
"method": "GET",
|
|
29407
|
+
"path": "/api/v1/accounts/{account_id}/kanban_ai_analyses/{id}/items",
|
|
29408
|
+
"title": "Sugestões da análise com IA",
|
|
29409
|
+
"description": "A lista de sugestões de uma análise pronta (422 `list_analyzing` antes). Vem uma linha por card QUE TEM sugestão (ou que voltou ou foi aplicado); o resto é contado em `counts` (`no_change` = lidos sem motivo para mudar). Cada sugestão traz `id` (o que vai no apply: `stage`, `funnel`, `outcome`, `label_add:...`, `label_remove:...`), `kind`, `value`, `label`, `force` (`high` = Alta, confiança >= 70%; `medium` = Média, 50 a 70%), `checked` (vem marcada: Alta de etapa, funil e perdido; ganho, Média e etiqueta vêm desmarcadas, com o motivo em `unchecked_reason`) e o que a ação dispara (`hints`: conversão, regras do funil, fluxos). Linha com `locked` (`client_wrote` = o cliente escreveu depois da análise; `card_changed` = o card mudou) NÃO deve ser aplicada: use `lionchat_kanban_ai_analyses_reanalyze`. `return_code` = voltou para a lista: `interrupted`, `card_busy` e `apply_failed` podem ser aplicadas de novo; `agent_no_access` = o responsável não acessa o funil de destino. Mostre as sugestões ao usuário agrupadas por etapa, com a força e o motivo. Com `no_change: true` vem também `no_change_items`: os cards lidos e deixados como estão, cada um com `lines` (`kind` stage, funnel, outcome ou label + `state`: `same` = confirmou o que já está, `doubt` = as duas ordens discordaram, `weak` = abaixo de 50%, `other_funnel`, `not_chosen`, `no_answer`; na etiqueta `add_no` e `remove_keeps`; `confidence` e `probability` em %). `lines: null` = análise antiga, sem detalhes. Use para responder \"por que a IA não mudou nada?\". Quem pode: administrador ou cargo com a permissão `kanban_ai_analyze` (\"Analisar funil com IA\"), com o recurso de plano `kanban_ai_analysis` ligado na conta e o menu do Kanban visível. Funil que a pessoa não vê = 404 `funnel_not_visible`.",
|
|
29410
|
+
"category": "Itens",
|
|
29411
|
+
"params": [
|
|
29412
|
+
{
|
|
29413
|
+
"name": "account_id",
|
|
29414
|
+
"type": "integer",
|
|
29415
|
+
"location": "path",
|
|
29416
|
+
"required": true,
|
|
29417
|
+
"description": "ID da conta"
|
|
29418
|
+
},
|
|
29419
|
+
{
|
|
29420
|
+
"name": "id",
|
|
29421
|
+
"type": "integer",
|
|
29422
|
+
"location": "path",
|
|
29423
|
+
"required": true,
|
|
29424
|
+
"description": "ID da análise (o `id` devolvido pelo create)"
|
|
29425
|
+
},
|
|
29426
|
+
{
|
|
29427
|
+
"name": "no_change",
|
|
29428
|
+
"type": "boolean",
|
|
29429
|
+
"location": "query",
|
|
29430
|
+
"required": false,
|
|
29431
|
+
"description": "true = traz também `no_change_items`: os cards que a IA leu e deixou como estão, com o porquê (a lista \"Ficaram como estão\" da tela). Peça só quando for mostrar essa lista"
|
|
29432
|
+
}
|
|
29433
|
+
],
|
|
29434
|
+
"returns": "{ id, funnel_id, stages, status (analyzing|ready|applying|finished|expired|superseded|failed), user_id, options, filters, selected_count, analyzed_count, suggested_count, skipped_count, failed_count, processed_count, input_tokens, llm_calls, cost_usd, error_code, expires_at, created_at, finished_at, apply: { requested, done, pending, returned } } + items: [{ id (item_id do apply), kanban_item_id, stage, card: { title, value, current_stage, status, contact_name, conversation_display_id, linked_display_ids, whatsapp_qr }, days_without_reply, suggestions: [...], locked, return_code, requested, requested_actions, done, apply_code, applied_actions }], counts: { analyzed, no_change, with_suggestion, by_analysis_code, ... } + no_change_items (só com no_change=true): [{ id, kanban_item_id, position, title, stage, stage_label, lines: [{ kind, state, value, confidence, other_value, other_confidence, funnel, label, probability, conversation_index, total }] | null }]",
|
|
29435
|
+
"common_use_cases": [
|
|
29436
|
+
"Mostrar ao usuário o que a IA sugeriu",
|
|
29437
|
+
"Saber quais cards voltaram ou travaram",
|
|
29438
|
+
"Conferir o que foi aplicado",
|
|
29439
|
+
"Explicar por que a IA deixou um card como está"
|
|
29440
|
+
],
|
|
29441
|
+
"related_tools": [
|
|
29442
|
+
"lionchat_kanban_ai_analyses_setup",
|
|
29443
|
+
"lionchat_kanban_ai_analyses_create",
|
|
29444
|
+
"lionchat_kanban_ai_analyses_show",
|
|
29445
|
+
"lionchat_kanban_ai_analyses_apply",
|
|
29446
|
+
"lionchat_kanban_ai_analyses_reanalyze"
|
|
29447
|
+
]
|
|
29448
|
+
},
|
|
29449
|
+
{
|
|
29450
|
+
"id": "lionchat_kanban_ai_analyses_apply",
|
|
29451
|
+
"method": "POST",
|
|
29452
|
+
"path": "/api/v1/accounts/{account_id}/kanban_ai_analyses/{id}/apply",
|
|
29453
|
+
"title": "Aplicar sugestões da análise com IA",
|
|
29454
|
+
"description": "Aplica as sugestões ESCOLHIDAS pelo usuário de uma lista pronta. NÃO TEM COMO DESFAZER: fica como se uma pessoa tivesse feito à mão, e as automações, os fluxos e as conversões do funil disparam normalmente. ANTES de chamar, confirme com o usuário quais cards e quais ações, quantas mudanças em quantos cards, e diga que não volta; só então reenvie com `confirm: true`. Mande em `items` o `id` de cada linha (de `lionchat_kanban_ai_analyses_items`) com os `id` das sugestões escolhidas daquela linha. Ação que não foi sugerida para o item, linha travada ou já pedida volta em `ignored` com o motivo (`not_found`, `already_requested`, `locked`, `invalid_actions`). Roda em segundo plano: depois chame `lionchat_kanban_ai_analyses_show` até `finished` e `lionchat_kanban_ai_analyses_items` para ver `done`/`apply_code`/`return_code` de cada card. Lista vencida, substituída ou terminada é recusada (`list_expired`, `list_superseded`, `list_finished`). Quem pode: administrador ou cargo com a permissão `kanban_ai_analyze` (\"Analisar funil com IA\"), com o recurso de plano `kanban_ai_analysis` ligado na conta e o menu do Kanban visível. Funil que a pessoa não vê = 404 `funnel_not_visible`.",
|
|
29455
|
+
"category": "Itens",
|
|
29456
|
+
"confirm_required": true,
|
|
29457
|
+
"params": [
|
|
29458
|
+
{
|
|
29459
|
+
"name": "account_id",
|
|
29460
|
+
"type": "integer",
|
|
29461
|
+
"location": "path",
|
|
29462
|
+
"required": true,
|
|
29463
|
+
"description": "ID da conta"
|
|
29464
|
+
},
|
|
29465
|
+
{
|
|
29466
|
+
"name": "id",
|
|
29467
|
+
"type": "integer",
|
|
29468
|
+
"location": "path",
|
|
29469
|
+
"required": true,
|
|
29470
|
+
"description": "ID da análise (o `id` devolvido pelo create)"
|
|
29471
|
+
},
|
|
29472
|
+
{
|
|
29473
|
+
"name": "items",
|
|
29474
|
+
"type": "array",
|
|
29475
|
+
"location": "body",
|
|
29476
|
+
"required": true,
|
|
29477
|
+
"description": "Lista de { \"item_id\": <id da linha>, \"actions\": [\"stage\", \"outcome\", ...] } — os `id` das sugestões daquela linha que o usuário escolheu"
|
|
29478
|
+
}
|
|
29479
|
+
],
|
|
29480
|
+
"returns": "{ accepted: [item_id, ...], ignored: [{ item_id, reason }], run: { id, funnel_id, stages, status (analyzing|ready|applying|finished|expired|superseded|failed), user_id, options, filters, selected_count, analyzed_count, suggested_count, skipped_count, failed_count, processed_count, input_tokens, llm_calls, cost_usd, error_code, expires_at, created_at, finished_at, apply: { requested, done, pending, returned } } }",
|
|
29481
|
+
"common_use_cases": [
|
|
29482
|
+
"Aplicar as sugestões que o usuário aprovou",
|
|
29483
|
+
"Aplicar só um card da lista"
|
|
29484
|
+
],
|
|
29485
|
+
"related_tools": [
|
|
29486
|
+
"lionchat_kanban_ai_analyses_setup",
|
|
29487
|
+
"lionchat_kanban_ai_analyses_create",
|
|
29488
|
+
"lionchat_kanban_ai_analyses_show",
|
|
29489
|
+
"lionchat_kanban_ai_analyses_items",
|
|
29490
|
+
"lionchat_kanban_ai_analyses_reanalyze"
|
|
29491
|
+
]
|
|
29492
|
+
},
|
|
29493
|
+
{
|
|
29494
|
+
"id": "lionchat_kanban_ai_analyses_reanalyze",
|
|
29495
|
+
"method": "POST",
|
|
29496
|
+
"path": "/api/v1/accounts/{account_id}/kanban_ai_analyses/{id}/reanalyze",
|
|
29497
|
+
"title": "Reanalisar um card da análise com IA",
|
|
29498
|
+
"description": "Analisa de novo UM card de uma lista ainda válida — use quando a linha veio travada (`locked`: o cliente escreveu ou o card mudou depois da análise). Custa uma chamada à IA. Um card por vez por lista: com outro sendo reanalisado volta 409 `reanalyze_wait` (espere e tente de novo). Card já pedido ou aplicado = 422 `reanalyze_not_allowed`; 503 `reanalyze_unavailable` = tente em instantes. Responde `{ item_id, status: \"queued\" }`: depois de alguns segundos chame `lionchat_kanban_ai_analyses_items` de novo para ver a sugestão nova. Quem pode: administrador ou cargo com a permissão `kanban_ai_analyze` (\"Analisar funil com IA\"), com o recurso de plano `kanban_ai_analysis` ligado na conta e o menu do Kanban visível. Funil que a pessoa não vê = 404 `funnel_not_visible`.",
|
|
29499
|
+
"category": "Itens",
|
|
29500
|
+
"params": [
|
|
29501
|
+
{
|
|
29502
|
+
"name": "account_id",
|
|
29503
|
+
"type": "integer",
|
|
29504
|
+
"location": "path",
|
|
29505
|
+
"required": true,
|
|
29506
|
+
"description": "ID da conta"
|
|
29507
|
+
},
|
|
29508
|
+
{
|
|
29509
|
+
"name": "id",
|
|
29510
|
+
"type": "integer",
|
|
29511
|
+
"location": "path",
|
|
29512
|
+
"required": true,
|
|
29513
|
+
"description": "ID da análise (o `id` devolvido pelo create)"
|
|
29514
|
+
},
|
|
29515
|
+
{
|
|
29516
|
+
"name": "item_id",
|
|
29517
|
+
"type": "integer",
|
|
29518
|
+
"location": "body",
|
|
29519
|
+
"required": true,
|
|
29520
|
+
"description": "O `id` da linha (de `lionchat_kanban_ai_analyses_items`), não o id do card"
|
|
29521
|
+
}
|
|
29522
|
+
],
|
|
29523
|
+
"returns": "{ item_id, status: \"queued\" }",
|
|
29524
|
+
"common_use_cases": [
|
|
29525
|
+
"Atualizar a sugestão de um card em que o cliente escreveu depois da análise"
|
|
29526
|
+
],
|
|
29527
|
+
"related_tools": [
|
|
29528
|
+
"lionchat_kanban_ai_analyses_setup",
|
|
29529
|
+
"lionchat_kanban_ai_analyses_create",
|
|
29530
|
+
"lionchat_kanban_ai_analyses_show",
|
|
29531
|
+
"lionchat_kanban_ai_analyses_items",
|
|
29532
|
+
"lionchat_kanban_ai_analyses_apply"
|
|
29533
|
+
]
|
|
29534
|
+
},
|
|
28925
29535
|
{
|
|
28926
29536
|
"id": "lionchat_search_kanban_items",
|
|
28927
29537
|
"method": "GET",
|
|
@@ -31506,7 +32116,7 @@
|
|
|
31506
32116
|
"method": "GET",
|
|
31507
32117
|
"path": "/api/v1/accounts/{account_id}/lead_forms/{lead_form_id}/responses",
|
|
31508
32118
|
"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.",
|
|
32119
|
+
"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
32120
|
"category": "Formularios",
|
|
31511
32121
|
"params": [
|
|
31512
32122
|
{
|
|
@@ -31571,7 +32181,7 @@
|
|
|
31571
32181
|
"description": "ID da resposta"
|
|
31572
32182
|
}
|
|
31573
32183
|
],
|
|
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.",
|
|
32184
|
+
"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
32185
|
"common_use_cases": [
|
|
31576
32186
|
"Ler o que o lead respondeu",
|
|
31577
32187
|
"Investigar por que a consulta externa/IA falhou (effects)",
|
|
@@ -32009,7 +32619,7 @@
|
|
|
32009
32619
|
"description": "ID do contato"
|
|
32010
32620
|
}
|
|
32011
32621
|
],
|
|
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}}",
|
|
32622
|
+
"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
32623
|
"common_use_cases": [
|
|
32014
32624
|
"Responder 'de onde veio este lead e o que ele preencheu?'",
|
|
32015
32625
|
"Achar a resposta do formulário pra abrir com lionchat_contacts_form_entries_show",
|
|
@@ -32315,7 +32925,7 @@
|
|
|
32315
32925
|
"method": "GET",
|
|
32316
32926
|
"path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/whatsapp_templates/media_library",
|
|
32317
32927
|
"title": "Biblioteca de Mídia dos Modelos (caixa oficial)",
|
|
32318
|
-
"description": "SÓ LEITURA. Lista os arquivos de mídia de modelo JÁ anexados nesta caixa WhatsApp Cloud (tudo que já subiu por upload_media/upload_header_media), pra reaproveitar como mídia padrão de cabeçalho sem subir de novo — o
|
|
32928
|
+
"description": "SÓ LEITURA. Lista os arquivos de mídia de modelo JÁ anexados nesta caixa WhatsApp Cloud (tudo que já subiu por upload_media/upload_header_media), pra reaproveitar como mídia padrão de cabeçalho sem subir de novo — o conector não sobe arquivo direto do computador, então esta é a ÚNICA forma de obter uma url NOSSA aceita por lionchat_inboxes_whatsapp_templates_header_media. Até 60 itens, mais novos primeiro, sem repetir o mesmo arquivo (dedup por checksum). kind filtra ANTES do teto.",
|
|
32319
32929
|
"category": "Templates WhatsApp",
|
|
32320
32930
|
"params": [
|
|
32321
32931
|
{
|
|
@@ -33846,7 +34456,7 @@
|
|
|
33846
34456
|
"type": "string",
|
|
33847
34457
|
"location": "body",
|
|
33848
34458
|
"required": false,
|
|
33849
|
-
"description": "Token do webhook da Greenn (valida a assinatura do que chega)"
|
|
34459
|
+
"description": "Token do webhook da Greenn (valida a assinatura do que chega) (27/10) Mandar o valor escondido (•••••••• ou [REDACTED]) mantem a chave gravada — so mande quando for trocar de verdade."
|
|
33850
34460
|
},
|
|
33851
34461
|
{
|
|
33852
34462
|
"name": "active",
|
|
@@ -34695,7 +35305,7 @@
|
|
|
34695
35305
|
"method": "POST",
|
|
34696
35306
|
"path": "/api/v1/accounts/{account_id}/upload/validate",
|
|
34697
35307
|
"title": "Testar uma URL de mídia (sem gravar nada)",
|
|
34698
|
-
"description": "SÓ LEITURA na prática: baixa a URL pra validar tipo, tamanho e segurança (SSRF) com a MESMA lista de aceite que o FlowBuilder usa ao enviar mídia por URL — e descarta. Não cria arquivo. Como o
|
|
35308
|
+
"description": "SÓ LEITURA na prática: baixa a URL pra validar tipo, tamanho e segurança (SSRF) com a MESMA lista de aceite que o FlowBuilder usa ao enviar mídia por URL — e descarta. Não cria arquivo. Como pelo conector o arquivo só sobe POR LINK (lionchat_upload_create com external_url, mesma lista de aceite), é o jeito de conferir se um link de foto/vídeo/áudio/documento vai funcionar num fluxo, campanha ou mensagem ANTES de usar. Sempre 200: valid=true com media_kind/content_type/size_mb/limit_mb, ou valid=false com error_key: 'web_page' (o link é uma página, não o arquivo), 'too_large' (com size_mb/limit_mb), 'unsupported', 'fetch_failed', 'invalid', 'unexpected'.",
|
|
34699
35309
|
"category": "Upload",
|
|
34700
35310
|
"params": [
|
|
34701
35311
|
{
|
|
@@ -35500,7 +36110,7 @@
|
|
|
35500
36110
|
"description": "ID do modelo"
|
|
35501
36111
|
}
|
|
35502
36112
|
],
|
|
35503
|
-
"returns": "modelo + envelopes: [{id, title, status, contact_id, contact_name, sent_at, completed_at, expires_at, participants[]}]",
|
|
36113
|
+
"returns": "modelo (roles_layout com required_proofs e public_link {enabled, inbox_id, path}) + envelopes: [{id, title, status, contact_id, contact_name, sent_at, completed_at, expires_at, participants[]}]",
|
|
35504
36114
|
"common_use_cases": [
|
|
35505
36115
|
"Ver o texto e as variaveis do modelo antes de editar",
|
|
35506
36116
|
"Conferir quem ja recebeu este contrato"
|
|
@@ -35552,7 +36162,7 @@
|
|
|
35552
36162
|
"type": "object",
|
|
35553
36163
|
"location": "body",
|
|
35554
36164
|
"required": false,
|
|
35555
|
-
"description": "Configuracao do modelo (objeto, MESCLADO no update — mande so o que muda): signers (quantos titulares assinam, 1..), witnesses (testemunhas, 0..), sender_signs (bool: quem envia tambem assina, NO PAINEL), require_id_photo (bool: exige foto do documento na assinatura), validity_days (validade em dias contada do ENVIO; padrao 7; 1..365 — vira {{document.deadline}} no texto). O LEMBRETE NAO E MAIS CAMPO DO MODELO (2026-09-14): o reminder_days e a tarefa diaria das 10h foram REMOVIDOS. Quem lembra e um fluxo do cliente, com o texto e a caixa dele — gatilho signature_delivered (dispara por PESSOA), bloco Esperar em dias e condicao signature_status (person_not_signed + pending, logic and). NUNCA sugerir reminder_days. FORMATO: signers, witnesses e validity_days sao NUMEROS inteiros puros (ex.: {\"signers\": 2, \"witnesses\": 1, \"validity_days\": 7}) — lista ou objeto nesses campos derruba a lista de modelos de contrato da conta; sender_signs e require_id_photo sao true/false."
|
|
36165
|
+
"description": "Configuracao do modelo (objeto, MESCLADO no update — mande so o que muda): signers (quantos titulares assinam, 1..), witnesses (testemunhas, 0..), sender_signs (bool: quem envia tambem assina, NO PAINEL), require_id_photo (bool: exige foto do documento na assinatura), validity_days (validade em dias contada do ENVIO; padrao 7; 1..365 — vira {{document.deadline}} no texto). O LEMBRETE NAO E MAIS CAMPO DO MODELO (2026-09-14): o reminder_days e a tarefa diaria das 10h foram REMOVIDOS. Quem lembra e um fluxo do cliente, com o texto e a caixa dele — gatilho signature_delivered (dispara por PESSOA), bloco Esperar em dias e condicao signature_status (person_not_signed + pending, logic and). NUNCA sugerir reminder_days. FORMATO: signers, witnesses e validity_days sao NUMEROS inteiros puros (ex.: {\"signers\": 2, \"witnesses\": 1, \"validity_days\": 7}) — lista ou objeto nesses campos derruba a lista de modelos de contrato da conta; sender_signs e require_id_photo sao true/false. field_prompts (27/10): como o formulario (jeito collection=form) pergunta cada dado — objeto {variavel: {label, description, placeholder}} (ex.: {\"contact.cpf\": {\"label\": \"Qual e o seu CPF?\", \"description\": \"Igual ao documento\", \"placeholder\": \"000.000.000-00\"}}); texto ate 200 caracteres; pergunta de variavel que o modelo nao usa e descartada; sem pergunta o formulario mostra o nome do campo. required_proofs (28/10): documentos que a pessoa manda antes de assinar — lista com id_document (documento com foto; ela escolhe RG, CNH ou CPF), selfie_with_document e address_proof (comprovante, foto ou PDF); [] = nenhum; outro valor = 422. Com algum, o contrato so fecha depois de a equipe aprovar (status awaiting_approval). public_link (28/10): link do contrato para divulgar — {enabled: true, inbox_id: <caixa de WhatsApp da conta>} (regenerate: true troca o endereco; o antigo para de funcionar). So para modelo com 1 assinante principal e sem sender_signs (422 com 'public_link' no texto). A leitura devolve {enabled, inbox_id, path} — o endereco e o dominio da instalacao + path (/contrato/<codigo>); salvar sem regenerate mantem o mesmo endereco."
|
|
35556
36166
|
}
|
|
35557
36167
|
],
|
|
35558
36168
|
"returns": "o modelo criado (id, name, kind, body, variables, roles_layout, progress)",
|
|
@@ -35614,7 +36224,7 @@
|
|
|
35614
36224
|
"type": "object",
|
|
35615
36225
|
"location": "body",
|
|
35616
36226
|
"required": false,
|
|
35617
|
-
"description": "Configuracao do modelo (objeto, MESCLADO no update — mande so o que muda): signers (quantos titulares assinam, 1..), witnesses (testemunhas, 0..), sender_signs (bool: quem envia tambem assina, NO PAINEL), require_id_photo (bool: exige foto do documento na assinatura), validity_days (validade em dias contada do ENVIO; padrao 7; 1..365 — vira {{document.deadline}} no texto). O LEMBRETE NAO E MAIS CAMPO DO MODELO (2026-09-14): o reminder_days e a tarefa diaria das 10h foram REMOVIDOS. Quem lembra e um fluxo do cliente, com o texto e a caixa dele — gatilho signature_delivered (dispara por PESSOA), bloco Esperar em dias e condicao signature_status (person_not_signed + pending, logic and). NUNCA sugerir reminder_days. FORMATO: signers, witnesses e validity_days sao NUMEROS inteiros puros (ex.: {\"signers\": 2, \"witnesses\": 1, \"validity_days\": 7}) — lista ou objeto nesses campos derruba a lista de modelos de contrato da conta; sender_signs e require_id_photo sao true/false."
|
|
36227
|
+
"description": "Configuracao do modelo (objeto, MESCLADO no update — mande so o que muda): signers (quantos titulares assinam, 1..), witnesses (testemunhas, 0..), sender_signs (bool: quem envia tambem assina, NO PAINEL), require_id_photo (bool: exige foto do documento na assinatura), validity_days (validade em dias contada do ENVIO; padrao 7; 1..365 — vira {{document.deadline}} no texto). O LEMBRETE NAO E MAIS CAMPO DO MODELO (2026-09-14): o reminder_days e a tarefa diaria das 10h foram REMOVIDOS. Quem lembra e um fluxo do cliente, com o texto e a caixa dele — gatilho signature_delivered (dispara por PESSOA), bloco Esperar em dias e condicao signature_status (person_not_signed + pending, logic and). NUNCA sugerir reminder_days. FORMATO: signers, witnesses e validity_days sao NUMEROS inteiros puros (ex.: {\"signers\": 2, \"witnesses\": 1, \"validity_days\": 7}) — lista ou objeto nesses campos derruba a lista de modelos de contrato da conta; sender_signs e require_id_photo sao true/false. field_prompts (27/10): como o formulario (jeito collection=form) pergunta cada dado — objeto {variavel: {label, description, placeholder}} (ex.: {\"contact.cpf\": {\"label\": \"Qual e o seu CPF?\", \"description\": \"Igual ao documento\", \"placeholder\": \"000.000.000-00\"}}); texto ate 200 caracteres; pergunta de variavel que o modelo nao usa e descartada; sem pergunta o formulario mostra o nome do campo. required_proofs (28/10): documentos que a pessoa manda antes de assinar — lista com id_document (documento com foto; ela escolhe RG, CNH ou CPF), selfie_with_document e address_proof (comprovante, foto ou PDF); [] = nenhum; outro valor = 422. Com algum, o contrato so fecha depois de a equipe aprovar (status awaiting_approval). public_link (28/10): link do contrato para divulgar — {enabled: true, inbox_id: <caixa de WhatsApp da conta>} (regenerate: true troca o endereco; o antigo para de funcionar). So para modelo com 1 assinante principal e sem sender_signs (422 com 'public_link' no texto). A leitura devolve {enabled, inbox_id, path} — o endereco e o dominio da instalacao + path (/contrato/<codigo>); salvar sem regenerate mantem o mesmo endereco."
|
|
35618
36228
|
}
|
|
35619
36229
|
],
|
|
35620
36230
|
"returns": "o modelo atualizado",
|
|
@@ -35668,12 +36278,46 @@
|
|
|
35668
36278
|
"lionchat_signature_documents_create"
|
|
35669
36279
|
]
|
|
35670
36280
|
},
|
|
36281
|
+
{
|
|
36282
|
+
"id": "lionchat_signature_documents_fill_fields",
|
|
36283
|
+
"method": "GET",
|
|
36284
|
+
"path": "/api/v1/accounts/{account_id}/signature_documents/{id}/fill_fields",
|
|
36285
|
+
"title": "O que o Contrato Pede e a Ficha Tem",
|
|
36286
|
+
"description": "Antes de enviar: cada campo do modelo que se preenche pela ficha (dados cadastrais, endereco, e-mail, atributo personalizado de contato) com o valor que a ficha do contato JA tem e missing=true no que falta. Use para completar no envio com contact_data (jeito ready) ou decidir mandar o formulario (collection=form). blocked = o que falta e NAO se preenche por aqui (ex.: telefone, dados da conta) — com isso o envio pronto volta variaveis_sem_valor; blocked_in_form = o mesmo no jeito formulario (no formulario o nome tambem e perguntado). Sem contact_id ou contato de outra conta = 422 sem_contato.",
|
|
36287
|
+
"category": "Assinatura eletronica",
|
|
36288
|
+
"params": [
|
|
36289
|
+
{
|
|
36290
|
+
"name": "id",
|
|
36291
|
+
"type": "integer",
|
|
36292
|
+
"location": "path",
|
|
36293
|
+
"required": true,
|
|
36294
|
+
"description": "ID do modelo"
|
|
36295
|
+
},
|
|
36296
|
+
{
|
|
36297
|
+
"name": "contact_id",
|
|
36298
|
+
"type": "integer",
|
|
36299
|
+
"location": "query",
|
|
36300
|
+
"required": true,
|
|
36301
|
+
"description": "Ficha do titular"
|
|
36302
|
+
}
|
|
36303
|
+
],
|
|
36304
|
+
"returns": "{fields: [{variable, label, description, placeholder, type, options[{id,label}], value, missing}], blocked: [nomes], blocked_in_form: [nomes]}",
|
|
36305
|
+
"common_use_cases": [
|
|
36306
|
+
"Saber o que falta na ficha antes de mandar o contrato",
|
|
36307
|
+
"Completar os dados que faltam no proprio envio (contact_data)"
|
|
36308
|
+
],
|
|
36309
|
+
"related_tools": [
|
|
36310
|
+
"lionchat_signature_envelopes_create",
|
|
36311
|
+
"lionchat_signature_documents_show",
|
|
36312
|
+
"lionchat_contacts_update_cadastral"
|
|
36313
|
+
]
|
|
36314
|
+
},
|
|
35671
36315
|
{
|
|
35672
36316
|
"id": "lionchat_signature_envelopes_list",
|
|
35673
36317
|
"method": "GET",
|
|
35674
36318
|
"path": "/api/v1/accounts/{account_id}/signature_envelopes",
|
|
35675
36319
|
"title": "Listar Contratos Enviados",
|
|
35676
|
-
"description": "Lista os CONTRATOS (cada envio a uma pessoa e um contrato, com PDF proprio e linha do tempo), paginada (25 por pagina) com filtro e busca no servidor. Recortes: por modelo (signature_document_id), por contato (contact_id — o que aparece na aba Contratos da ficha) ou por conversa (conversation_id). status aceita os baldes aguardando (draft/sent), visualizado (viewed/partially_signed), assinado (signed_pending_seal/signed), encerrado (refused/cancelled/expired) ou falta_eu (contratos em que o usuario do token e o remetente e ainda nao assinou). Resposta traz meta.counts com a contagem por balde. Por empresa: company_id (contratos de todos os contatos dela).",
|
|
36320
|
+
"description": "Lista os CONTRATOS (cada envio a uma pessoa e um contrato, com PDF proprio e linha do tempo), paginada (25 por pagina) com filtro e busca no servidor. Recortes: por modelo (signature_document_id), por contato (contact_id — o que aparece na aba Contratos da ficha) ou por conversa (conversation_id). status aceita os baldes aguardando (draft/sent/awaiting_data/awaiting_approval — awaiting_data = esperando a pessoa preencher o formulario; awaiting_approval = todos assinaram e a equipe ainda nao aprovou os documentos pedidos), visualizado (viewed/partially_signed), assinado (signed_pending_seal/signed), encerrado (refused/cancelled/expired) ou falta_eu (contratos em que o usuario do token e o remetente e ainda nao assinou). Resposta traz meta.counts com a contagem por balde. Por empresa: company_id (contratos de todos os contatos dela).",
|
|
35677
36321
|
"category": "Assinatura eletronica",
|
|
35678
36322
|
"params": [
|
|
35679
36323
|
{
|
|
@@ -35726,7 +36370,7 @@
|
|
|
35726
36370
|
"description": "Recorta pelos contatos de uma EMPRESA (aba Contratos da pagina da empresa). Empresa de outra conta = 404."
|
|
35727
36371
|
}
|
|
35728
36372
|
],
|
|
35729
|
-
"returns": "payload: [{id, title, status, signature_document_id, document_name, contact_id, contact_name, conversation_id, sent_at, completed_at, expires_at, participants[{id, name, role, status, delivery_channel, phone, email, signed_at, viewed_at, public_url, signs_in_panel}], delivery: {failed[{participant_id, reason}], delivered_participant_ids[], copies[{participant_id, status: sent|failed, reason}]}, has_signed_document, pending_for_me}], meta: {page, per_page, has_more, counts}",
|
|
36373
|
+
"returns": "payload: [{id, title, status, signature_document_id, document_name, contact_id, contact_name, conversation_id, sent_at, completed_at, expires_at, participants[{id, name, role, status, delivery_channel, phone, email, signed_at, viewed_at, public_url, signs_in_panel}], delivery: {failed[{participant_id, reason}], delivered_participant_ids[], copies[{participant_id, status: sent|failed, reason}]}, has_signed_document, pending_for_me, required_proofs[]}], meta: {page, per_page, has_more, counts}",
|
|
35730
36374
|
"common_use_cases": [
|
|
35731
36375
|
"Ver o status dos contratos de um cliente (assinou? abriu? expirou?)",
|
|
35732
36376
|
"Relatorio de um modelo: quantos aguardando/assinados, quem falta",
|
|
@@ -35743,7 +36387,7 @@
|
|
|
35743
36387
|
"method": "GET",
|
|
35744
36388
|
"path": "/api/v1/accounts/{account_id}/signature_envelopes/{id}",
|
|
35745
36389
|
"title": "Detalhes do Contrato (linha do tempo)",
|
|
35746
|
-
"description": "Um contrato com quem assina e a LINHA DO TEMPO completa (events): created, delivered, sent, opened, code_requested, code_verified, signed (com ip, device, location
|
|
36390
|
+
"description": "Um contrato com quem assina e a LINHA DO TEMPO completa (events): created, delivered, sent, opened, code_requested, code_verified, signed (com ip, device, location, panel=true quando foi assinado no painel e, desde 28/10, signature_method drawn|typed + typed_name), data_filled (a pessoa preencheu o formulario e o contrato foi gerado), all_signed, sealed (documento final gerado, com hash), refused, expired, cancelled, delivery_failed, reminded, resent; (28/10) proof_sent (a pessoa mandou um documento pedido), awaiting_approval, proofs_approved / proofs_rejected (com o motivo); code_requested/code_verified com method=whatsapp = confirmou mandando a frase pelo WhatsApp em vez do codigo. E o relatorio de evidencias em dados; os PDFs (original, assinado, evidencias) so saem pela tela/API de download.",
|
|
35747
36391
|
"category": "Assinatura eletronica",
|
|
35748
36392
|
"params": [
|
|
35749
36393
|
{
|
|
@@ -35754,7 +36398,7 @@
|
|
|
35754
36398
|
"description": "ID do contrato"
|
|
35755
36399
|
}
|
|
35756
36400
|
],
|
|
35757
|
-
"returns": "contrato (com delivery: {failed[{participant_id, reason}], delivered_participant_ids[], copies[{participant_id, status: sent|failed, reason}]}, copies = a via assinada de cada pessoa) + events: [{kind, occurred_at, ip, device, location, participant_id, panel}] + original_sha256/sealed_sha256",
|
|
36401
|
+
"returns": "contrato (com delivery: {failed[{participant_id, reason}], delivered_participant_ids[], copies[{participant_id, status: sent|failed, reason}]}, copies = a via assinada de cada pessoa) + events: [{kind, occurred_at, ip, device, location, participant_id, panel, signature_method, typed_name, method}] + required_proofs[] + original_sha256/sealed_sha256",
|
|
35758
36402
|
"common_use_cases": [
|
|
35759
36403
|
"Conferir quando e de onde a pessoa abriu e assinou",
|
|
35760
36404
|
"Ver por que um contrato nao foi entregue (delivery.failed) ou foi recusado"
|
|
@@ -35762,7 +36406,8 @@
|
|
|
35762
36406
|
"related_tools": [
|
|
35763
36407
|
"lionchat_signature_envelopes_list",
|
|
35764
36408
|
"lionchat_signature_envelopes_resend",
|
|
35765
|
-
"lionchat_signature_envelopes_cancel"
|
|
36409
|
+
"lionchat_signature_envelopes_cancel",
|
|
36410
|
+
"lionchat_signature_envelopes_proofs"
|
|
35766
36411
|
]
|
|
35767
36412
|
},
|
|
35768
36413
|
{
|
|
@@ -35770,7 +36415,7 @@
|
|
|
35770
36415
|
"method": "POST",
|
|
35771
36416
|
"path": "/api/v1/accounts/{account_id}/signature_envelopes",
|
|
35772
36417
|
"title": "Enviar Contrato para Assinar",
|
|
35773
|
-
"description": "Cria o contrato DAQUELA pessoa a partir de um modelo e ENTREGA o link (na conversa de WhatsApp da pessoa — uma conversa POR assinante — ou por e-mail). O PDF e gerado com os dados da ficha; variavel do modelo sem valor na ficha = 422 variaveis_sem_valor com a lista do que falta (preencha a ficha e tente de novo). Sem inbox_id e com o contato conversando em MAIS de uma caixa de WhatsApp = 422 escolher_caixa com inboxes[] — repita mandando inbox_id. Ninguem recebeu = 422 entrega_falhou (o contrato fica como rascunho; use resend). Recebeu parcialmente = 201 com delivery_failures[]. Consome 1 vaga do limite mensal (veja signature_envelopes_limits). Modelo com sender_signs cria sozinho o participante do remetente (o usuario do token), que assina NO PAINEL (nao ha ferramenta pra assinar por ele).",
|
|
36418
|
+
"description": "Cria o contrato DAQUELA pessoa a partir de um modelo e ENTREGA o link (na conversa de WhatsApp da pessoa — uma conversa POR assinante — ou por e-mail). O PDF e gerado com os dados da ficha; variavel do modelo sem valor na ficha = 422 variaveis_sem_valor com a lista do que falta (preencha a ficha e tente de novo). Sem inbox_id e com o contato conversando em MAIS de uma caixa de WhatsApp = 422 escolher_caixa com inboxes[] — repita mandando inbox_id. Ninguem recebeu = 422 entrega_falhou (o contrato fica como rascunho; use resend). Recebeu parcialmente = 201 com delivery_failures[]. Consome 1 vaga do limite mensal (veja signature_envelopes_limits). Modelo com sender_signs cria sozinho o participante do remetente (o usuario do token), que assina NO PAINEL (nao ha ferramenta pra assinar por ele). DOIS JEITOS (27/10): collection='ready' (padrao) = o contrato sai agora com a ficha; o que faltar pode ir em contact_data (grava na ficha E no contrato; erro de um campo = 422 dados_invalidos com field_errors). Para saber antes o que a ficha tem e o que falta: lionchat_signature_documents_fill_fields. collection='form' (exige contact_id) = o titular recebe um formulario em branco, preenche os dados dele (atualiza a ficha) e o contrato nasce com o que ele digitou; o contrato fica awaiting_data ate la e o link e o participants[].public_url do titular. message (ate 1.000 caracteres) vai junto do link nos dois jeitos. Modelo de Word com campo sem escolha no mapeamento = 422 campos_sem_escolha (missing = os rotulos do Word): ajuste o modelo pela tela.",
|
|
35774
36419
|
"category": "Assinatura eletronica",
|
|
35775
36420
|
"params": [
|
|
35776
36421
|
{
|
|
@@ -35807,19 +36452,42 @@
|
|
|
35807
36452
|
"location": "body",
|
|
35808
36453
|
"required": true,
|
|
35809
36454
|
"description": "Quem assina (array). Cada item: {name (obrigatorio), role: signer|witness (titular|testemunha; NAO mande sender — o remetente e criado sozinho quando o modelo tem sender_signs), phone (+55DDDNUMERO, quando delivery_channel=whatsapp), email (quando delivery_channel=email), delivery_channel: whatsapp|email (padrao whatsapp), cpf (opcional; invalido = 422 cpf_invalido), contact_id (ficha da pessoa; recomendado no titular)}. Cada pessoa recebe o proprio link e assina com codigo de uso unico."
|
|
36455
|
+
},
|
|
36456
|
+
{
|
|
36457
|
+
"name": "collection",
|
|
36458
|
+
"type": "string",
|
|
36459
|
+
"location": "body",
|
|
36460
|
+
"required": false,
|
|
36461
|
+
"description": "Jeito de coletar os dados: ready (padrao, contrato pronto com a ficha) | form (a pessoa preenche pelo link; exige contact_id). Outro valor = 422 coleta_invalida"
|
|
36462
|
+
},
|
|
36463
|
+
{
|
|
36464
|
+
"name": "message",
|
|
36465
|
+
"type": "string",
|
|
36466
|
+
"location": "body",
|
|
36467
|
+
"required": false,
|
|
36468
|
+
"description": "Texto proprio que vai junto do link (ate 1.000 caracteres; acima = 422 mensagem_longa)"
|
|
36469
|
+
},
|
|
36470
|
+
{
|
|
36471
|
+
"name": "contact_data",
|
|
36472
|
+
"type": "object",
|
|
36473
|
+
"location": "body",
|
|
36474
|
+
"required": false,
|
|
36475
|
+
"description": "So no jeito ready: o que voce completa da ficha antes de gerar, {variavel: valor} com as variaveis do modelo (ex.: {\"contact.cpf\": \"52998224725\", \"contact.marital_status\": \"casado\"}). Grava na ficha e no contrato; tudo valido ou nada gravado. Telefone nao se preenche por aqui. Formato torto (nao objeto de textos, mais de 50 chaves, valor acima de 4 KB) = 422 contact_data_invalido"
|
|
35810
36476
|
}
|
|
35811
36477
|
],
|
|
35812
|
-
"returns": "201: o contrato (status sent) com participants[] (public_url de cada um), events[] e delivery_failures[]; 422: {error, detail, missing, inboxes, envelope}",
|
|
36478
|
+
"returns": "201: o contrato (status sent) com participants[] (public_url de cada um), events[] e delivery_failures[]; 422: {error, detail, missing, inboxes, envelope}; 422 dados_invalidos traz field_errors {variavel: motivo} (invalid_cpf, invalid_option, email_em_uso, campo_desconhecido...); variaveis_sem_valor e campos_sem_escolha trazem missing (chaves) e missing_labels (nomes de gente)",
|
|
35813
36479
|
"common_use_cases": [
|
|
35814
36480
|
"Mandar o contrato padrao pra um cliente assinar pelo WhatsApp",
|
|
35815
36481
|
"Mandar com testemunha (participants com role witness e o telefone dela)",
|
|
35816
|
-
"Reenviar um contrato que ficou como rascunho por falha de entrega (use resend)"
|
|
36482
|
+
"Reenviar um contrato que ficou como rascunho por falha de entrega (use resend)",
|
|
36483
|
+
"Mandar um formulario para a pessoa preencher os proprios dados (collection=form) e o contrato sair com eles"
|
|
35817
36484
|
],
|
|
35818
36485
|
"related_tools": [
|
|
35819
36486
|
"lionchat_signature_documents_list",
|
|
35820
36487
|
"lionchat_signature_envelopes_limits",
|
|
35821
36488
|
"lionchat_signature_envelopes_show",
|
|
35822
|
-
"lionchat_signature_envelopes_resend"
|
|
36489
|
+
"lionchat_signature_envelopes_resend",
|
|
36490
|
+
"lionchat_signature_documents_fill_fields"
|
|
35823
36491
|
]
|
|
35824
36492
|
},
|
|
35825
36493
|
{
|
|
@@ -35852,7 +36520,7 @@
|
|
|
35852
36520
|
"method": "POST",
|
|
35853
36521
|
"path": "/api/v1/accounts/{account_id}/signature_envelopes/{id}/sign_as_sender",
|
|
35854
36522
|
"title": "Remetente Assina o Contrato pelo Painel",
|
|
35855
|
-
"description": "A assinatura do REMETENTE (a pessoa do token), quando o modelo tem 'eu tambem assino' (roles_layout.sender_signs). Nao serve pra assinar no lugar do cliente: titular e testemunha assinam pelo link publico deles. Manda o desenho da assinatura como PNG em base64 com o prefixo data:image/png;base64,... (o mesmo rabisco da tela; remember_drawing guarda pra proxima vez). Recusas 422: nao_e_sua (o usuario do token nao e o remetente deste contrato), ja_assinado, sem_desenho. Quando era a ultima assinatura que faltava, o contrato fecha e o PDF final e gerado em seguida (status signed_pending_seal -> signed). Ache os contratos que esperam a sua assinatura com status=falta_eu em lionchat_signature_envelopes_list.",
|
|
36523
|
+
"description": "A assinatura do REMETENTE (a pessoa do token), quando o modelo tem 'eu tambem assino' (roles_layout.sender_signs). Nao serve pra assinar no lugar do cliente: titular e testemunha assinam pelo link publico deles. Manda o desenho da assinatura como PNG em base64 com o prefixo data:image/png;base64,... (o mesmo rabisco da tela; remember_drawing guarda pra proxima vez). Recusas 422: nao_e_sua (o usuario do token nao e o remetente deste contrato), ja_assinado, sem_desenho. Quando era a ultima assinatura que faltava, o contrato fecha e o PDF final e gerado em seguida (status signed_pending_seal -> signed). Ache os contratos que esperam a sua assinatura com status=falta_eu em lionchat_signature_envelopes_list. JEITO (28/10): signature_method drawn (desenhada) ou typed (o nome digitado numa letra de assinatura) + typed_name — a folha de assinaturas e o relatorio de evidencias dizem 'Assinatura desenhada a mao' ou 'Assinatura digitada: <nome>'. Sem o campo, nao dizem nada. A imagem e sempre o PNG.",
|
|
35856
36524
|
"category": "Assinatura eletronica",
|
|
35857
36525
|
"params": [
|
|
35858
36526
|
{
|
|
@@ -35882,6 +36550,20 @@
|
|
|
35882
36550
|
"location": "body",
|
|
35883
36551
|
"required": false,
|
|
35884
36552
|
"description": "true = guarda o desenho nas preferencias do usuario pra reaproveitar no proximo contrato"
|
|
36553
|
+
},
|
|
36554
|
+
{
|
|
36555
|
+
"name": "signature_method",
|
|
36556
|
+
"type": "string",
|
|
36557
|
+
"location": "body",
|
|
36558
|
+
"required": false,
|
|
36559
|
+
"description": "drawn (desenhada) | typed (nome digitado numa letra de assinatura). Outro valor = nada gravado"
|
|
36560
|
+
},
|
|
36561
|
+
{
|
|
36562
|
+
"name": "typed_name",
|
|
36563
|
+
"type": "string",
|
|
36564
|
+
"location": "body",
|
|
36565
|
+
"required": false,
|
|
36566
|
+
"description": "So com signature_method=typed: o nome escrito (ate 120 caracteres) que aparece na folha de assinaturas"
|
|
35885
36567
|
}
|
|
35886
36568
|
],
|
|
35887
36569
|
"returns": "o contrato atualizado com participants[] e events[] (o seu participante vira signed); 422: {error: nao_e_sua | ja_assinado | sem_desenho}",
|
|
@@ -35925,7 +36607,7 @@
|
|
|
35925
36607
|
"method": "GET",
|
|
35926
36608
|
"path": "/api/v1/accounts/{account_id}/signature_envelopes/limits",
|
|
35927
36609
|
"title": "Limite Mensal de Contratos",
|
|
35928
|
-
"description": "Quantos contratos a conta ja mandou no mes e o teto do plano ({used, limit, unlimited}). Contrato cancelado/expirado NAO devolve a vaga.",
|
|
36610
|
+
"description": "Quantos contratos a conta ja mandou no mes e o teto do plano ({used, limit, unlimited}). Contrato cancelado/expirado NAO devolve a vaga. (28/10) O contrato que nasce do link do modelo (roles_layout.public_link) so conta depois que a pessoa confirma que e ela; quem abre o link e some nao gasta vaga.",
|
|
35929
36611
|
"category": "Assinatura eletronica",
|
|
35930
36612
|
"params": [],
|
|
35931
36613
|
"returns": "{used, limit, unlimited}",
|
|
@@ -35936,6 +36618,118 @@
|
|
|
35936
36618
|
"lionchat_signature_envelopes_create"
|
|
35937
36619
|
]
|
|
35938
36620
|
},
|
|
36621
|
+
{
|
|
36622
|
+
"id": "lionchat_signature_envelopes_proofs",
|
|
36623
|
+
"method": "GET",
|
|
36624
|
+
"path": "/api/v1/accounts/{account_id}/signature_envelopes/{id}/proofs",
|
|
36625
|
+
"title": "Documentos de Quem Assina (Contrato)",
|
|
36626
|
+
"description": "Os documentos que o modelo pede (required_proofs) e, por pessoa que assina pelo link, o que ela mandou (kind id_document/selfie_with_document/address_proof, formato, document_type rg/cnh/cpf, quando) e a revisao da equipe (pending/approved/rejected, motivo, quem, quando). NUNCA devolve o arquivo: documento de identidade e selfie so se olham na tela (botao amarelo \"Ver documentos\" no contrato ou na aba Contratos da ficha). last_proof_event_id = o ultimo documento mandado (use como seen_event_id ao aprovar/reprovar). Administrador ou signature_manage.",
|
|
36627
|
+
"category": "Assinatura eletronica",
|
|
36628
|
+
"params": [
|
|
36629
|
+
{
|
|
36630
|
+
"name": "id",
|
|
36631
|
+
"type": "integer",
|
|
36632
|
+
"location": "path",
|
|
36633
|
+
"required": true,
|
|
36634
|
+
"description": "ID do contrato"
|
|
36635
|
+
}
|
|
36636
|
+
],
|
|
36637
|
+
"returns": "{required[], awaiting_approval, people: [{participant_id, name, role, signed, proofs: [{kind, content_type, document_type, sent_at}], review: {status, decision, reason, by, at}, last_proof_event_id}]}",
|
|
36638
|
+
"common_use_cases": [
|
|
36639
|
+
"Saber se o contrato esta esperando a aprovacao dos documentos e de quem",
|
|
36640
|
+
"Ver o motivo de uma reprovacao e se a pessoa ja mandou de novo"
|
|
36641
|
+
],
|
|
36642
|
+
"related_tools": [
|
|
36643
|
+
"lionchat_signature_envelopes_approve_proofs",
|
|
36644
|
+
"lionchat_signature_envelopes_reject_proofs",
|
|
36645
|
+
"lionchat_signature_envelopes_show"
|
|
36646
|
+
]
|
|
36647
|
+
},
|
|
36648
|
+
{
|
|
36649
|
+
"id": "lionchat_signature_envelopes_approve_proofs",
|
|
36650
|
+
"method": "POST",
|
|
36651
|
+
"path": "/api/v1/accounts/{account_id}/signature_envelopes/{id}/approve_proofs",
|
|
36652
|
+
"title": "Aprovar Documentos de Quem Assina",
|
|
36653
|
+
"description": "Aprova os documentos de UMA pessoa num contrato que esta awaiting_approval. Com todos aprovados o contrato fecha, o documento final e gerado e cada pessoa recebe a via (MANDA mensagem ao cliente) — confirme com o usuario antes e pergunte se ele ja conferiu os arquivos na tela (eles nao saem por ferramenta). 422: fora_do_momento (contrato nao esta esperando aprovacao), sem_documentos, documentos_mudaram (a pessoa mandou outro depois do que foi visto — leia _proofs de novo). Administrador ou signature_manage.",
|
|
36654
|
+
"category": "Assinatura eletronica",
|
|
36655
|
+
"params": [
|
|
36656
|
+
{
|
|
36657
|
+
"name": "id",
|
|
36658
|
+
"type": "integer",
|
|
36659
|
+
"location": "path",
|
|
36660
|
+
"required": true,
|
|
36661
|
+
"description": "ID do contrato"
|
|
36662
|
+
},
|
|
36663
|
+
{
|
|
36664
|
+
"name": "participant_id",
|
|
36665
|
+
"type": "integer",
|
|
36666
|
+
"location": "body",
|
|
36667
|
+
"required": true,
|
|
36668
|
+
"description": "participant_id da pessoa (de _proofs)"
|
|
36669
|
+
},
|
|
36670
|
+
{
|
|
36671
|
+
"name": "seen_event_id",
|
|
36672
|
+
"type": "integer",
|
|
36673
|
+
"location": "body",
|
|
36674
|
+
"required": false,
|
|
36675
|
+
"description": "last_proof_event_id que foi conferido; se a pessoa mandou outro depois, volta 422 documentos_mudaram"
|
|
36676
|
+
}
|
|
36677
|
+
],
|
|
36678
|
+
"returns": "o mesmo de _proofs + status do contrato",
|
|
36679
|
+
"common_use_cases": [
|
|
36680
|
+
"A equipe conferiu os documentos na tela e pediu para aprovar"
|
|
36681
|
+
],
|
|
36682
|
+
"related_tools": [
|
|
36683
|
+
"lionchat_signature_envelopes_proofs",
|
|
36684
|
+
"lionchat_signature_envelopes_reject_proofs"
|
|
36685
|
+
]
|
|
36686
|
+
},
|
|
36687
|
+
{
|
|
36688
|
+
"id": "lionchat_signature_envelopes_reject_proofs",
|
|
36689
|
+
"method": "POST",
|
|
36690
|
+
"path": "/api/v1/accounts/{account_id}/signature_envelopes/{id}/reject_proofs",
|
|
36691
|
+
"title": "Reprovar Documentos de Quem Assina",
|
|
36692
|
+
"description": "Reprova os documentos de UMA pessoa com o motivo: ela recebe no canal dela (WhatsApp ou e-mail) o pedido de documento novo com o motivo escrito (MANDA mensagem ao cliente — confirme o texto com o usuario antes). Ela troca o que for preciso, toca Enviar e a equipe e avisada de novo. 422: motivo_obrigatorio, fora_do_momento, sem_documentos, documentos_mudaram. Administrador ou signature_manage.",
|
|
36693
|
+
"category": "Assinatura eletronica",
|
|
36694
|
+
"params": [
|
|
36695
|
+
{
|
|
36696
|
+
"name": "id",
|
|
36697
|
+
"type": "integer",
|
|
36698
|
+
"location": "path",
|
|
36699
|
+
"required": true,
|
|
36700
|
+
"description": "ID do contrato"
|
|
36701
|
+
},
|
|
36702
|
+
{
|
|
36703
|
+
"name": "participant_id",
|
|
36704
|
+
"type": "integer",
|
|
36705
|
+
"location": "body",
|
|
36706
|
+
"required": true,
|
|
36707
|
+
"description": "participant_id da pessoa (de _proofs)"
|
|
36708
|
+
},
|
|
36709
|
+
{
|
|
36710
|
+
"name": "reason",
|
|
36711
|
+
"type": "string",
|
|
36712
|
+
"location": "body",
|
|
36713
|
+
"required": true,
|
|
36714
|
+
"description": "Motivo que a pessoa vai ler (ex.: \"a foto da CNH ficou desfocada, mande de novo\")"
|
|
36715
|
+
},
|
|
36716
|
+
{
|
|
36717
|
+
"name": "seen_event_id",
|
|
36718
|
+
"type": "integer",
|
|
36719
|
+
"location": "body",
|
|
36720
|
+
"required": false,
|
|
36721
|
+
"description": "last_proof_event_id que foi conferido"
|
|
36722
|
+
}
|
|
36723
|
+
],
|
|
36724
|
+
"returns": "o mesmo de _proofs + status do contrato",
|
|
36725
|
+
"common_use_cases": [
|
|
36726
|
+
"Documento ilegivel ou do tipo errado: pedir outro a pessoa"
|
|
36727
|
+
],
|
|
36728
|
+
"related_tools": [
|
|
36729
|
+
"lionchat_signature_envelopes_proofs",
|
|
36730
|
+
"lionchat_signature_envelopes_approve_proofs"
|
|
36731
|
+
]
|
|
36732
|
+
},
|
|
35939
36733
|
{
|
|
35940
36734
|
"id": "lionchat_agendas_list",
|
|
35941
36735
|
"method": "GET",
|