@lionchat/mcp-server 1.22.0 → 1.24.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 +21 -2
- package/dist/docs/resources/agenda-multiplas-unidades.md +69 -1
- package/dist/docs/resources/api-conventions.md +56 -2
- package/dist/docs/resources/best-practices.md +71 -2
- package/dist/docs/resources/data-model.md +34 -7
- package/dist/docs/resources/filtros-e-relatorios.md +15 -0
- package/dist/docs/resources/flowbuilder-design-guide.md +62 -13
- package/dist/docs/resources/glossary.md +4 -2
- package/dist/docs/resources/kanban-deep-dive.md +133 -24
- package/dist/docs/resources/troubleshooting.md +78 -0
- package/dist/tools.js +37 -6
- package/dist/tools.js.map +1 -1
- package/endpoints.json +880 -125
- package/package.json +1 -1
package/endpoints.json
CHANGED
|
@@ -209,7 +209,7 @@
|
|
|
209
209
|
"type": "object",
|
|
210
210
|
"location": "body",
|
|
211
211
|
"required": false,
|
|
212
|
-
"description": "
|
|
212
|
+
"description": "Objeto {chave: valor} (chave = attribute_key de lionchat_custom_attributes_list, modelo contato). Por tipo: texto; numero como numero; data 'AAAA-MM-DD' (data-hora ISO com fuso; hora 'HH:MM'); lista = EXATAMENTE uma das opcoes cadastradas (outro valor aparece como 'Fora da lista'); sim/nao = true/false. NUNCA grave waha_whatsapp_lid, waha_whatsapp_jid nem waha_whatsapp_chat_id (endereco interno de envio do WhatsApp — escrever quebra a entrega). Ex.: {\"cpf\": \"123.456.789-00\", \"data_nascimento\": \"1990-05-17\", \"plano\": \"Premium\"}."
|
|
213
213
|
},
|
|
214
214
|
{
|
|
215
215
|
"name": "avatar_url",
|
|
@@ -326,7 +326,7 @@
|
|
|
326
326
|
"type": "object",
|
|
327
327
|
"location": "body",
|
|
328
328
|
"required": false,
|
|
329
|
-
"description": "
|
|
329
|
+
"description": "Objeto {chave: valor} (chave = attribute_key de lionchat_custom_attributes_list, modelo contato). Por tipo: texto; numero como numero; data 'AAAA-MM-DD' (data-hora ISO com fuso; hora 'HH:MM'); lista = EXATAMENTE uma das opcoes cadastradas (outro valor aparece como 'Fora da lista'); sim/nao = true/false. NUNCA grave waha_whatsapp_lid, waha_whatsapp_jid nem waha_whatsapp_chat_id (endereco interno de envio do WhatsApp — escrever quebra a entrega). Ex.: {\"cpf\": \"123.456.789-00\", \"data_nascimento\": \"1990-05-17\", \"plano\": \"Premium\"}. O update SOMA: so as chaves enviadas mudam, as demais ficam."
|
|
330
330
|
},
|
|
331
331
|
{
|
|
332
332
|
"name": "avatar",
|
|
@@ -1433,7 +1433,7 @@
|
|
|
1433
1433
|
"method": "POST",
|
|
1434
1434
|
"path": "/api/v1/accounts/{account_id}/conversations/filter",
|
|
1435
1435
|
"title": "Filtrar Conversas",
|
|
1436
|
-
"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').\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.",
|
|
1436
|
+
"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.\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.",
|
|
1437
1437
|
"category": "Conversas",
|
|
1438
1438
|
"params": [
|
|
1439
1439
|
{
|
|
@@ -1593,7 +1593,7 @@
|
|
|
1593
1593
|
"method": "POST",
|
|
1594
1594
|
"path": "/api/v1/accounts/{account_id}/conversations/{id}/custom_attributes",
|
|
1595
1595
|
"title": "Custom Attributes",
|
|
1596
|
-
"description": "Atualiza atributos customizados da conversa. Obrigatorios: id, custom_attributes.",
|
|
1596
|
+
"description": "Atualiza atributos customizados da conversa. Obrigatorios: id, custom_attributes. O custom_attributes enviado SUBSTITUI o conjunto da conversa (menos captain_*): leia antes com lionchat_conversations_show e reenvie tudo — mandar so a chave nova apaga clique do anuncio, gclid e origem.",
|
|
1597
1597
|
"category": "Conversas",
|
|
1598
1598
|
"params": [
|
|
1599
1599
|
{
|
|
@@ -1608,7 +1608,7 @@
|
|
|
1608
1608
|
"type": "object",
|
|
1609
1609
|
"location": "body",
|
|
1610
1610
|
"required": true,
|
|
1611
|
-
"description": "Objeto com
|
|
1611
|
+
"description": "Objeto {chave: valor} dos atributos da CONVERSA. ATENCAO: SUBSTITUI o conjunto inteiro — so os campos internos da IA (captain_*) sobrevivem; tudo que nao vier no envio e APAGADO, inclusive a origem do lead (utm_*, gclid, ctwa_*, origin_*). Leia antes com lionchat_conversations_show e reenvie TODOS os campos com o alterado. Ex.: {\"utm_source\": \"google\", \"motivo_contato\": \"orcamento\"}. Por tipo: data 'AAAA-MM-DD', numero como numero, lista = uma das opcoes cadastradas, sim/nao true/false."
|
|
1612
1612
|
}
|
|
1613
1613
|
],
|
|
1614
1614
|
"returns": "conversa atualizada",
|
|
@@ -2461,21 +2461,21 @@
|
|
|
2461
2461
|
"type": "object",
|
|
2462
2462
|
"location": "body",
|
|
2463
2463
|
"required": false,
|
|
2464
|
-
"description": "Etapas do kanban. Objeto com uma chave (slug) por etapa: {\"novo_lead\": {\"name\": \"Novo Lead\", \"color\": \"#3B82F6\", \"position\": 1, \"description\": \"opcional\"}}. position define a ordem das colunas."
|
|
2464
|
+
"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."
|
|
2465
2465
|
},
|
|
2466
2466
|
{
|
|
2467
2467
|
"name": "funnel.settings",
|
|
2468
2468
|
"type": "object",
|
|
2469
2469
|
"location": "body",
|
|
2470
2470
|
"required": false,
|
|
2471
|
-
"description": "Objeto de configuracoes do funil. Chaves: goals[], agents[] e automations[] (automacoes do funil). Cada automacao: {id, enabled, trigger_type: 'card_created'|'stage_moved'|'status_change', trigger_value (id da etapa p/ stage_moved; status p/ status_change; 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)."
|
|
2471
|
+
"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; status p/ status_change; 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)."
|
|
2472
2472
|
},
|
|
2473
2473
|
{
|
|
2474
2474
|
"name": "funnel.global_custom_attributes",
|
|
2475
2475
|
"type": "array",
|
|
2476
2476
|
"location": "body",
|
|
2477
2477
|
"required": false,
|
|
2478
|
-
"description": "
|
|
2478
|
+
"description": "LISTA de objetos [{name, type, is_list, list_values:[]}]. Ex.: [{\"name\": \"Origem\", \"type\": \"string\", \"is_list\": true, \"list_values\": [\"Google\", \"Meta\"]}]. ATENCAO: este campo do FUNIL nao aparece em tela nenhuma. Os campos da aba Campos do card sao os da CONTA: grave-os com lionchat_kanban_config_update (kanban_config.global_custom_attributes)."
|
|
2479
2479
|
}
|
|
2480
2480
|
],
|
|
2481
2481
|
"returns": "funil criado (com novo ID)",
|
|
@@ -2653,14 +2653,14 @@
|
|
|
2653
2653
|
"type": "object",
|
|
2654
2654
|
"location": "body",
|
|
2655
2655
|
"required": false,
|
|
2656
|
-
"description": "Etapas do kanban. Objeto com uma chave (slug) por etapa: {\"novo_lead\": {\"name\": \"Novo Lead\", \"color\": \"#3B82F6\", \"position\": 1, \"description\": \"opcional\"}}. position define a ordem das colunas."
|
|
2656
|
+
"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 (recusado com 422 STAGE_HAS_ITEMS se tiver cards) — leia com lionchat_funnels_show e reenvie todas."
|
|
2657
2657
|
},
|
|
2658
2658
|
{
|
|
2659
2659
|
"name": "funnel.settings",
|
|
2660
2660
|
"type": "object",
|
|
2661
2661
|
"location": "body",
|
|
2662
2662
|
"required": false,
|
|
2663
|
-
"description": "Objeto de configuracoes do funil. Chaves: goals[], agents[] e automations[] (automacoes do funil). 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' p/ status_change), 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)."
|
|
2663
|
+
"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' p/ status_change), 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)."
|
|
2664
2664
|
}
|
|
2665
2665
|
],
|
|
2666
2666
|
"returns": "funil atualizado Inclui resolved_agents: [{id, name, avatar_url, via: 'agent'|'team'}] — quem efetivamente participa do funil (2026-07-21).",
|
|
@@ -3176,14 +3176,14 @@
|
|
|
3176
3176
|
"type": "array",
|
|
3177
3177
|
"location": "body",
|
|
3178
3178
|
"required": false,
|
|
3179
|
-
"description": "
|
|
3179
|
+
"description": "LISTA de NUMEROS (ids de lionchat_agents_list). Ex.: [5, 12]. O sistema completa nome, e-mail e foto. Objetos {id, ...} sao IGNORADOS em silencio (a lista nao muda)."
|
|
3180
3180
|
},
|
|
3181
3181
|
{
|
|
3182
3182
|
"name": "kanban_item.custom_attributes",
|
|
3183
3183
|
"type": "object",
|
|
3184
3184
|
"location": "body",
|
|
3185
3185
|
"required": false,
|
|
3186
|
-
"description": "
|
|
3186
|
+
"description": "Coluna propria do card, objeto {chave: valor}. NAO aparece na aba Campos, no filtro do quadro nem na busca — para campo visivel use kanban_item.item_details.custom_attributes (LISTA [{name, type, value}], ver lionchat_kanban_items_update). Enviada, SUBSTITUI o objeto inteiro."
|
|
3187
3187
|
},
|
|
3188
3188
|
{
|
|
3189
3189
|
"name": "kanban_item.timer_started_at",
|
|
@@ -3274,21 +3274,21 @@
|
|
|
3274
3274
|
"type": "object",
|
|
3275
3275
|
"location": "body",
|
|
3276
3276
|
"required": false,
|
|
3277
|
-
"description": "
|
|
3277
|
+
"description": "Objeto com os detalhes do card. MESCLA SO NO 1o NIVEL: cada chave enviada troca a chave inteira no card; as nao enviadas ficam. Lista FECHADA (outras chaves sao descartadas em silencio): title, description, status, reason, win_reason, loss_reason, attributed_to, duplicated_from_id, priority, value (NUMERO; texto de numero como \"1500.5\" e convertido, \"R$ 1.500,00\" e recusado com 422), currency, custom_attributes, offers, closed_offers, closed_offer, deadline_at, scheduling_type, scheduled_at, conversation_id, automations, notes. custom_attributes = campos da aba Campos do card: LISTA [{name, type, value}] onde name+type batem EXATAMENTE com a definicao da CONTA (lionchat_kanban_config_list -> global_custom_attributes). Ex.: [{\"name\": \"Origem do Lead\", \"type\": \"string\", \"value\": \"Google\"}]. A lista e TROCADA inteira: leia o card com lionchat_kanban_items_show e reenvie TODOS os campos. Objeto {chave: valor} no lugar da lista APAGA todos os campos do card. notes e offers tambem sao listas trocadas inteiras. Motivo de ganho/perda: status \"won\"/\"lost\" + win_reason/loss_reason = o id (TEXTO) de um motivo de kanban_config.win_reasons/loss_reasons + reason = o titulo dele. Motivo livre (fora da lista): win_reason/loss_reason nulo e o texto em reason. Ex.: {\"status\": \"lost\", \"loss_reason\": \"perda-preco\", \"reason\": \"Preco alto\"}."
|
|
3278
3278
|
},
|
|
3279
3279
|
{
|
|
3280
3280
|
"name": "kanban_item.assigned_agents",
|
|
3281
3281
|
"type": "array",
|
|
3282
3282
|
"location": "body",
|
|
3283
3283
|
"required": false,
|
|
3284
|
-
"description": "
|
|
3284
|
+
"description": "LISTA de NUMEROS (ids de lionchat_agents_list). Ex.: [5, 12]. O sistema completa nome, e-mail e foto. Objetos {id, ...} sao IGNORADOS em silencio (a lista nao muda). SUBSTITUI a lista inteira de responsaveis: mande todos que devem ficar."
|
|
3285
3285
|
},
|
|
3286
3286
|
{
|
|
3287
3287
|
"name": "kanban_item.custom_attributes",
|
|
3288
3288
|
"type": "object",
|
|
3289
3289
|
"location": "body",
|
|
3290
3290
|
"required": false,
|
|
3291
|
-
"description": "
|
|
3291
|
+
"description": "Coluna propria do card, objeto {chave: valor}. NAO aparece na aba Campos, no filtro do quadro nem na busca — para campo visivel use kanban_item.item_details.custom_attributes (LISTA [{name, type, value}], ver lionchat_kanban_items_update). Enviada, SUBSTITUI o objeto inteiro."
|
|
3292
3292
|
},
|
|
3293
3293
|
{
|
|
3294
3294
|
"name": "kanban_item.timer_started_at",
|
|
@@ -3984,7 +3984,7 @@
|
|
|
3984
3984
|
"method": "POST",
|
|
3985
3985
|
"path": "/api/v1/accounts/{account_id}/kanban_items/import",
|
|
3986
3986
|
"title": "Importar Items",
|
|
3987
|
-
"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.",
|
|
3987
|
+
"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.",
|
|
3988
3988
|
"category": "Itens",
|
|
3989
3989
|
"params": [
|
|
3990
3990
|
{
|
|
@@ -4002,11 +4002,18 @@
|
|
|
4002
4002
|
"description": "ID do funil"
|
|
4003
4003
|
},
|
|
4004
4004
|
{
|
|
4005
|
-
"name": "
|
|
4006
|
-
"type": "
|
|
4005
|
+
"name": "inbox_id",
|
|
4006
|
+
"type": "integer",
|
|
4007
4007
|
"location": "body",
|
|
4008
4008
|
"required": true,
|
|
4009
|
-
"description": "
|
|
4009
|
+
"description": "OBRIGATORIO — caixa de entrada (desta conta) onde nascem o contato e a conversa de cada card. Sem ela: 400."
|
|
4010
|
+
},
|
|
4011
|
+
{
|
|
4012
|
+
"name": "mappings",
|
|
4013
|
+
"type": "string",
|
|
4014
|
+
"location": "body",
|
|
4015
|
+
"required": true,
|
|
4016
|
+
"description": "TEXTO JSON (o envio e multipart por causa do arquivo; objeto solto nao e lido) no formato {\"<coluna da planilha>\": \"<destino>\"}. Destinos aceitos: item_details.title, item_details.description, item_details.customer_name, item_details.customer_email, item_details.customer_phone, funnel_stage (nome ou id da etapa) e assigned_agents (so vale junto com agent_mode 'mapping' + agent_mappings). Ex.: '{\"Nome\":\"item_details.title\",\"Telefone\":\"item_details.customer_phone\",\"Etapa\":\"funnel_stage\"}'. Coluna com destino fora da lista e ignorada em silencio."
|
|
4010
4017
|
}
|
|
4011
4018
|
],
|
|
4012
4019
|
"returns": "status do import (assincrono)",
|
|
@@ -4333,14 +4340,14 @@
|
|
|
4333
4340
|
"type": "array",
|
|
4334
4341
|
"location": "body",
|
|
4335
4342
|
"required": false,
|
|
4336
|
-
"description": "
|
|
4343
|
+
"description": "LISTA de TEXTOS — cada item uma frase: [\"Responda em ate 3 frases\", \"Chame o cliente pelo primeiro nome\"]. Objeto ou lista de objetos NAO serve (o texto chega errado ao prompt)."
|
|
4337
4344
|
},
|
|
4338
4345
|
{
|
|
4339
4346
|
"name": "guardrails",
|
|
4340
4347
|
"type": "array",
|
|
4341
4348
|
"location": "body",
|
|
4342
4349
|
"required": false,
|
|
4343
|
-
"description": "
|
|
4350
|
+
"description": "LISTA de TEXTOS (proibicoes) — cada item uma frase: [\"Nunca informe precos\", \"Nao prometa prazo de entrega\"]. Objeto ou lista de objetos NAO serve (o texto chega errado ao prompt)."
|
|
4344
4351
|
},
|
|
4345
4352
|
{
|
|
4346
4353
|
"name": "config.model",
|
|
@@ -4558,14 +4565,14 @@
|
|
|
4558
4565
|
"type": "array",
|
|
4559
4566
|
"location": "body",
|
|
4560
4567
|
"required": false,
|
|
4561
|
-
"description": "
|
|
4568
|
+
"description": "LISTA de TEXTOS — cada item uma frase: [\"Responda em ate 3 frases\", \"Chame o cliente pelo primeiro nome\"]. Objeto ou lista de objetos NAO serve (o texto chega errado ao prompt). No update SUBSTITUI a lista inteira: leia com lionchat_captain_assistants_show e reenvie todas."
|
|
4562
4569
|
},
|
|
4563
4570
|
{
|
|
4564
4571
|
"name": "guardrails",
|
|
4565
4572
|
"type": "array",
|
|
4566
4573
|
"location": "body",
|
|
4567
4574
|
"required": false,
|
|
4568
|
-
"description": "
|
|
4575
|
+
"description": "LISTA de TEXTOS (proibicoes) — cada item uma frase: [\"Nunca informe precos\", \"Nao prometa prazo de entrega\"]. Objeto ou lista de objetos NAO serve (o texto chega errado ao prompt). No update SUBSTITUI a lista inteira: leia com lionchat_captain_assistants_show e reenvie todas."
|
|
4569
4576
|
},
|
|
4570
4577
|
{
|
|
4571
4578
|
"name": "config.model",
|
|
@@ -4706,6 +4713,20 @@
|
|
|
4706
4713
|
"location": "body",
|
|
4707
4714
|
"required": false,
|
|
4708
4715
|
"description": "Condicoes para a IA NAO fazer follow-up (ate 3). Array de objetos, ex.: {type, operator, attribute, value, labels:[]}."
|
|
4716
|
+
},
|
|
4717
|
+
{
|
|
4718
|
+
"name": "config.voice_provider",
|
|
4719
|
+
"type": "string",
|
|
4720
|
+
"location": "body",
|
|
4721
|
+
"required": false,
|
|
4722
|
+
"description": "Fornecedor da voz do AUDIO que a IA manda no WhatsApp: 'openai' ou 'elevenlabs'. A ligacao por IA NAO usa mais esta chave — ela mora no agente de ligacao (lionchat_captain_call_agents_update)."
|
|
4723
|
+
},
|
|
4724
|
+
{
|
|
4725
|
+
"name": "config.voice_id",
|
|
4726
|
+
"type": "string",
|
|
4727
|
+
"location": "body",
|
|
4728
|
+
"required": false,
|
|
4729
|
+
"description": "Voz do AUDIO que a IA manda no WhatsApp (catalogo em lionchat_captain_voices_list, sem engine). A voz da LIGACAO mora no agente de ligacao."
|
|
4709
4730
|
}
|
|
4710
4731
|
],
|
|
4711
4732
|
"returns": "assistente AI atualizado",
|
|
@@ -6800,7 +6821,7 @@
|
|
|
6800
6821
|
"type": "string",
|
|
6801
6822
|
"location": "body",
|
|
6802
6823
|
"required": false,
|
|
6803
|
-
"description": "
|
|
6824
|
+
"description": "none | bearer | basic | api_key (formato de auth_config em cada um: ver auth_config)"
|
|
6804
6825
|
},
|
|
6805
6826
|
{
|
|
6806
6827
|
"name": "enabled",
|
|
@@ -6814,14 +6835,14 @@
|
|
|
6814
6835
|
"type": "object",
|
|
6815
6836
|
"location": "body",
|
|
6816
6837
|
"required": false,
|
|
6817
|
-
"description": "
|
|
6838
|
+
"description": "Credenciais conforme auth_type, objeto: bearer {\"token\": \"...\"}; basic {\"username\": \"...\", \"password\": \"...\"}; api_key {\"name\": \"X-Api-Key\", \"key\": \"...\", \"location\": \"header\"} — location PRECISA ser 'header' (sem ele, ou com outro valor, a chave NAO e enviada); none = {}. token/password/key aceitam variavel {{ account.custom_attribute.CHAVE }}."
|
|
6818
6839
|
},
|
|
6819
6840
|
{
|
|
6820
6841
|
"name": "param_schema",
|
|
6821
6842
|
"type": "array",
|
|
6822
6843
|
"location": "body",
|
|
6823
6844
|
"required": false,
|
|
6824
|
-
"description": "
|
|
6845
|
+
"description": "LISTA de objetos, cada item {name, type, description, required}: type = string | integer | number | boolean (outro = 422); description OBRIGATORIA (sem ela = 422 — e o que a IA le para preencher o parametro); required true/false. Ex.: [{\"name\": \"cpf\", \"type\": \"string\", \"description\": \"CPF do cliente, so numeros\", \"required\": true}]."
|
|
6825
6846
|
}
|
|
6826
6847
|
],
|
|
6827
6848
|
"returns": "assistente AI criado (com novo ID)",
|
|
@@ -6927,7 +6948,7 @@
|
|
|
6927
6948
|
"type": "string",
|
|
6928
6949
|
"location": "body",
|
|
6929
6950
|
"required": false,
|
|
6930
|
-
"description": "
|
|
6951
|
+
"description": "none | bearer | basic | api_key (formato de auth_config em cada um: ver auth_config)"
|
|
6931
6952
|
},
|
|
6932
6953
|
{
|
|
6933
6954
|
"name": "enabled",
|
|
@@ -6941,14 +6962,14 @@
|
|
|
6941
6962
|
"type": "object",
|
|
6942
6963
|
"location": "body",
|
|
6943
6964
|
"required": false,
|
|
6944
|
-
"description": "
|
|
6965
|
+
"description": "Credenciais conforme auth_type, objeto: bearer {\"token\": \"...\"}; basic {\"username\": \"...\", \"password\": \"...\"}; api_key {\"name\": \"X-Api-Key\", \"key\": \"...\", \"location\": \"header\"} — location PRECISA ser 'header' (sem ele, ou com outro valor, a chave NAO e enviada); none = {}. token/password/key aceitam variavel {{ account.custom_attribute.CHAVE }}. SUBSTITUI o objeto inteiro: mande tudo de novo."
|
|
6945
6966
|
},
|
|
6946
6967
|
{
|
|
6947
6968
|
"name": "param_schema",
|
|
6948
6969
|
"type": "array",
|
|
6949
6970
|
"location": "body",
|
|
6950
6971
|
"required": false,
|
|
6951
|
-
"description": "
|
|
6972
|
+
"description": "LISTA de objetos, cada item {name, type, description, required}: type = string | integer | number | boolean (outro = 422); description OBRIGATORIA (sem ela = 422 — e o que a IA le para preencher o parametro); required true/false. Ex.: [{\"name\": \"cpf\", \"type\": \"string\", \"description\": \"CPF do cliente, so numeros\", \"required\": true}]. SUBSTITUI a lista inteira."
|
|
6952
6973
|
}
|
|
6953
6974
|
],
|
|
6954
6975
|
"returns": "assistente AI atualizado",
|
|
@@ -7862,7 +7883,7 @@
|
|
|
7862
7883
|
"method": "POST",
|
|
7863
7884
|
"path": "/api/v1/accounts/{account_id}/macros",
|
|
7864
7885
|
"title": "Criar Macro",
|
|
7865
|
-
"description": "Cria uma nova macro com ações. Obrigatórios: name, actions (visibility: personal ou global). As actions DEVEM ser um array de objetos {action_name, action_params} — item malformado (ex.: texto solto) retorna 422. CARDÁPIO (
|
|
7886
|
+
"description": "Cria uma nova macro com ações. Obrigatórios: name, actions (visibility: personal ou global). As actions DEVEM ser um array de objetos {action_name, action_params} — item malformado (ex.: texto solto) retorna 422. CARDÁPIO (17/09/2026, 41 ações — os action_params seguem os MESMOS formatos das automações, ver conversation-flows.md 'Acoes de automacao'): send_message, add_private_note, send_canned_response ([id] — na MACRO a mensagem sai assinada pelo EXECUTOR; na automação sai como robô), send_attachment, send_email_transcript, send_email_to_team, send_webhook_event, add_label/remove_label (etiqueta da CONVERSA), add_contact_label/remove_contact_label ([titulos] — etiqueta do CONTATO), assign_agent, assign_team, remove_assigned_team, distribute_agents ([agent_ids] — rodízio de verdade, nunca sorteio), change_status, change_priority, open_conversation/pending_conversation/resolve_conversation, snooze_conversation ([] = até a próxima resposta, ou ['until_tomorrow'] etc.), mute_conversation, mark_unread ([]), add_sla ([sla_policy_id]), assign_captain_assistant ([id] ou [{assistant_id, proactive}]), deactivate_captain ([]), send_signature_document, update_contact_attribute/update_conversation_attribute ([{attribute_key, value}] — chave PROTEGIDA é recusada na execução e fica só no log: prefixos waha_whatsapp_/whatsapp_/origin_/ctwa_/meta_lead_/lt_ e atributos de sistema como utm_*/gclid), update_card_attribute ([{funnel_id, attribute_key, value}]), add_card_checklist ([{funnel_id, checklist_template_ids}]), add_card_offer ([{funnel_id, offer_ids}]), e as 7 de Kanban: create_kanban_item, move_kanban_item_to_stage, assign_agent_to_kanban_item, add_note_to_kanban_item, start_kanban_item_timer, stop_kanban_item_timer, set_kanban_item_status (todas exigem card já existente no funil informado, exceto create). send_conversion ([{destinations, event_names, value}] — Meta CAPI/GA4/Google Ads com trigger_type 'macro') só pode ser SALVO por administrador ou cargo com marketing_integrations_manage: para os demais, 422 com o motivo; EXECUTAR segue liberado; teto de 50 conversões por execução (o excedente é pulado com log e as outras ações rodam). Fora do cardápio: send_whatsapp_template. start_flow ([flow_id] — dispara um FLOW DE ACOES (flow_type 'action') na conversa; 17/09/2026). SO flow de acoes entra aqui: a macro roda em qualquer conversa e nao filtra caixa, entao um flow de MENSAGEM apontado aqui rodaria numa caixa que nao e dele. Flow inexistente, desligado ou de outro tipo e ignorado em silencio.",
|
|
7866
7887
|
"category": "Macros",
|
|
7867
7888
|
"params": [
|
|
7868
7889
|
{
|
|
@@ -7884,7 +7905,7 @@
|
|
|
7884
7905
|
"type": "array",
|
|
7885
7906
|
"location": "body",
|
|
7886
7907
|
"required": true,
|
|
7887
|
-
"description": "
|
|
7908
|
+
"description": "LISTA de objetos {action_name, action_params} — 41 nomes aceitos, listados na descricao da tool; formatos iguais aos das automacoes. MAIS USADOS (action_params e SEMPRE lista): send_message [\"texto\"]; add_private_note [\"texto\"]; add_label/remove_label [\"nome-da-etiqueta\"]; assign_agent [70] ([\"nil\"] desatribui); assign_team [3]; change_status [\"resolved\"|\"open\"|\"pending\"|\"snoozed\"]; change_priority [\"high\"]; send_canned_response [12]; update_conversation_attribute [{\"attribute_key\": \"chave\", \"value\": \"texto\"}]; create_kanban_item [{\"funnel_id\": 31, \"funnel_stage\": \"prospeccao\"}]; move_kanban_item_to_stage [{\"funnel_id\": 31, \"funnel_stage\": \"qualificacao\"}]. Tabela completa no resource conversation-flows ('Acoes de automacao')."
|
|
7888
7909
|
}
|
|
7889
7910
|
],
|
|
7890
7911
|
"returns": "macro criado (com novo ID)",
|
|
@@ -7924,7 +7945,7 @@
|
|
|
7924
7945
|
"method": "PATCH",
|
|
7925
7946
|
"path": "/api/v1/accounts/{account_id}/macros/{id}",
|
|
7926
7947
|
"title": "Atualizar Macro",
|
|
7927
|
-
"description": "Atualiza macro. PATCH parcial: só campos enviados são alterados (name, actions, visibility). As actions DEVEM ser um array de objetos {action_name, action_params} — item malformado retorna 422. CARDÁPIO (
|
|
7948
|
+
"description": "Atualiza macro. PATCH parcial: só campos enviados são alterados (name, actions, visibility). As actions DEVEM ser um array de objetos {action_name, action_params} — item malformado retorna 422. CARDÁPIO (17/09/2026, 41 ações — os action_params seguem os MESMOS formatos das automações, ver conversation-flows.md 'Acoes de automacao'): send_message, add_private_note, send_canned_response ([id] — na MACRO a mensagem sai assinada pelo EXECUTOR; na automação sai como robô), send_attachment, send_email_transcript, send_email_to_team, send_webhook_event, add_label/remove_label (etiqueta da CONVERSA), add_contact_label/remove_contact_label ([titulos] — etiqueta do CONTATO), assign_agent, assign_team, remove_assigned_team, distribute_agents ([agent_ids] — rodízio de verdade, nunca sorteio), change_status, change_priority, open_conversation/pending_conversation/resolve_conversation, snooze_conversation ([] = até a próxima resposta, ou ['until_tomorrow'] etc.), mute_conversation, mark_unread ([]), add_sla ([sla_policy_id]), assign_captain_assistant ([id] ou [{assistant_id, proactive}]), deactivate_captain ([]), send_signature_document, update_contact_attribute/update_conversation_attribute ([{attribute_key, value}] — chave PROTEGIDA é recusada na execução e fica só no log: prefixos waha_whatsapp_/whatsapp_/origin_/ctwa_/meta_lead_/lt_ e atributos de sistema como utm_*/gclid), update_card_attribute ([{funnel_id, attribute_key, value}]), add_card_checklist ([{funnel_id, checklist_template_ids}]), add_card_offer ([{funnel_id, offer_ids}]), e as 7 de Kanban: create_kanban_item, move_kanban_item_to_stage, assign_agent_to_kanban_item, add_note_to_kanban_item, start_kanban_item_timer, stop_kanban_item_timer, set_kanban_item_status (todas exigem card já existente no funil informado, exceto create). send_conversion ([{destinations, event_names, value}] — Meta CAPI/GA4/Google Ads com trigger_type 'macro') só pode ser SALVO por administrador ou cargo com marketing_integrations_manage: para os demais, 422 com o motivo; EXECUTAR segue liberado; teto de 50 conversões por execução (o excedente é pulado com log e as outras ações rodam). Fora do cardápio: send_whatsapp_template. start_flow ([flow_id] — dispara um FLOW DE ACOES (flow_type 'action') na conversa; 17/09/2026). SO flow de acoes entra aqui: a macro roda em qualquer conversa e nao filtra caixa, entao um flow de MENSAGEM apontado aqui rodaria numa caixa que nao e dele. Flow inexistente, desligado ou de outro tipo e ignorado em silencio.",
|
|
7928
7949
|
"category": "Macros",
|
|
7929
7950
|
"params": [
|
|
7930
7951
|
{
|
|
@@ -7946,7 +7967,7 @@
|
|
|
7946
7967
|
"type": "array",
|
|
7947
7968
|
"location": "body",
|
|
7948
7969
|
"required": false,
|
|
7949
|
-
"description": "
|
|
7970
|
+
"description": "LISTA de objetos {action_name, action_params} — 41 nomes aceitos, listados na descricao da tool; formatos iguais aos das automacoes. MAIS USADOS (action_params e SEMPRE lista): send_message [\"texto\"]; add_private_note [\"texto\"]; add_label/remove_label [\"nome-da-etiqueta\"]; assign_agent [70] ([\"nil\"] desatribui); assign_team [3]; change_status [\"resolved\"|\"open\"|\"pending\"|\"snoozed\"]; change_priority [\"high\"]; send_canned_response [12]; update_conversation_attribute [{\"attribute_key\": \"chave\", \"value\": \"texto\"}]; create_kanban_item [{\"funnel_id\": 31, \"funnel_stage\": \"prospeccao\"}]; move_kanban_item_to_stage [{\"funnel_id\": 31, \"funnel_stage\": \"qualificacao\"}]. Tabela completa no resource conversation-flows ('Acoes de automacao'). No update a lista SUBSTITUI a anterior: mande TODAS as acoes."
|
|
7950
7971
|
},
|
|
7951
7972
|
{
|
|
7952
7973
|
"name": "visibility",
|
|
@@ -8289,7 +8310,7 @@
|
|
|
8289
8310
|
"method": "GET",
|
|
8290
8311
|
"path": "/api/v1/accounts/{account_id}/account_tasks",
|
|
8291
8312
|
"title": "Listar Tarefas",
|
|
8292
|
-
"description": "Lista tarefas com filtros avançados. Lista tarefas/agenda paginados (per_page padrão 25, máximo 100). Filtros disponíveis: page, per_page, task_type, status, user_id. Retorna meta (contadores) + payload (array de tarefa/agenda). Cada tarefa traz `tratamento` {id, sessao, total, titulo} quando e sessao de um tratamento em sessoes (15/09); nulo em compromisso comum.",
|
|
8313
|
+
"description": "Lista tarefas com filtros avançados. Lista tarefas/agenda paginados (per_page padrão 25, máximo 100). Filtros disponíveis: page, per_page, task_type, status, user_id. Retorna meta (contadores) + payload (array de tarefa/agenda). Cada tarefa traz `tratamento` {id, sessao, total, titulo} quando e sessao de um tratamento em sessoes (15/09); nulo em compromisso comum. **`selo` (17/09):** cada tarefa traz o rotulo UNICO que o painel mostra ao lado dela, so de leitura — `cancelled` > `no_show` / `attended` > `completed` > `snoozed` > `rescheduled` > `pending`. Junta `status`, `attendance` e remarcacao (pelo painel ou pelo cliente no link). Para dizer o que aconteceu com o compromisso, leia `selo`: `status: pending` sozinho NAO significa que nada aconteceu (a pessoa pode ter faltado).",
|
|
8293
8314
|
"category": "Agenda / Tarefas",
|
|
8294
8315
|
"params": [
|
|
8295
8316
|
{
|
|
@@ -8560,7 +8581,7 @@
|
|
|
8560
8581
|
"method": "GET",
|
|
8561
8582
|
"path": "/api/v1/accounts/{account_id}/account_tasks/{id}",
|
|
8562
8583
|
"title": "Detalhe da Tarefa",
|
|
8563
|
-
"description": "Retorna detalhes de uma tarefa. Retorna detalhes completos de UM tarefa/agenda específico pelo ID. Inclui campos relacionais quando aplicável. Cada tarefa traz `tratamento` {id, sessao, total, titulo} quando e sessao de um tratamento em sessoes (15/09); nulo em compromisso comum.",
|
|
8584
|
+
"description": "Retorna detalhes de uma tarefa. Retorna detalhes completos de UM tarefa/agenda específico pelo ID. Inclui campos relacionais quando aplicável. Cada tarefa traz `tratamento` {id, sessao, total, titulo} quando e sessao de um tratamento em sessoes (15/09); nulo em compromisso comum. **`selo` (17/09):** cada tarefa traz o rotulo UNICO que o painel mostra ao lado dela, so de leitura — `cancelled` > `no_show` / `attended` > `completed` > `snoozed` > `rescheduled` > `pending`. Junta `status`, `attendance` e remarcacao (pelo painel ou pelo cliente no link). Para dizer o que aconteceu com o compromisso, leia `selo`: `status: pending` sozinho NAO significa que nada aconteceu (a pessoa pode ter faltado).",
|
|
8564
8585
|
"category": "Agenda / Tarefas",
|
|
8565
8586
|
"params": [
|
|
8566
8587
|
{
|
|
@@ -8584,7 +8605,7 @@
|
|
|
8584
8605
|
"method": "PATCH",
|
|
8585
8606
|
"path": "/api/v1/accounts/{account_id}/account_tasks/{id}",
|
|
8586
8607
|
"title": "Atualizar Tarefa",
|
|
8587
|
-
"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.",
|
|
8608
|
+
"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.",
|
|
8588
8609
|
"category": "Agenda / Tarefas",
|
|
8589
8610
|
"params": [
|
|
8590
8611
|
{
|
|
@@ -8690,7 +8711,7 @@
|
|
|
8690
8711
|
"type": "array",
|
|
8691
8712
|
"location": "body",
|
|
8692
8713
|
"required": false,
|
|
8693
|
-
"description": "IDs dos responsáveis"
|
|
8714
|
+
"description": "IDs dos responsáveis. IGNORADO em compromisso nascido de Booking (`booking_id` presente): o responsavel e o profissional do tipo de evento"
|
|
8694
8715
|
},
|
|
8695
8716
|
{
|
|
8696
8717
|
"name": "guest_emails",
|
|
@@ -8886,7 +8907,7 @@
|
|
|
8886
8907
|
"method": "PATCH",
|
|
8887
8908
|
"path": "/api/v1/accounts/{account_id}/account_tasks/{id}/update_future",
|
|
8888
8909
|
"title": "Atualizar Futuras",
|
|
8889
|
-
"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.",
|
|
8910
|
+
"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.",
|
|
8890
8911
|
"category": "Agenda / Tarefas",
|
|
8891
8912
|
"params": [
|
|
8892
8913
|
{
|
|
@@ -8966,7 +8987,7 @@
|
|
|
8966
8987
|
"method": "GET",
|
|
8967
8988
|
"path": "/api/v1/accounts/{account_id}/account_tasks/my_day",
|
|
8968
8989
|
"title": "Meu Dia",
|
|
8969
|
-
"description": "Retorna tarefas agrupadas: atrasadas, hoje, amanhã, próximos 7 dias. Lista tarefas/agenda paginados (per_page padrão 25, máximo 100). Retorna meta (contadores) + payload (array de tarefa/agenda).",
|
|
8990
|
+
"description": "Retorna tarefas agrupadas: atrasadas, hoje, amanhã, próximos 7 dias. Lista tarefas/agenda paginados (per_page padrão 25, máximo 100). Retorna meta (contadores) + payload (array de tarefa/agenda). **`selo` (17/09):** cada tarefa traz o rotulo UNICO que o painel mostra ao lado dela, so de leitura — `cancelled` > `no_show` / `attended` > `completed` > `snoozed` > `rescheduled` > `pending`. Junta `status`, `attendance` e remarcacao (pelo painel ou pelo cliente no link). Para dizer o que aconteceu com o compromisso, leia `selo`: `status: pending` sozinho NAO significa que nada aconteceu (a pessoa pode ter faltado).",
|
|
8970
8991
|
"category": "Agenda / Tarefas",
|
|
8971
8992
|
"params": [
|
|
8972
8993
|
{
|
|
@@ -9020,7 +9041,7 @@
|
|
|
9020
9041
|
"method": "GET",
|
|
9021
9042
|
"path": "/api/v1/accounts/{account_id}/kanban_items/{id}/tasks",
|
|
9022
9043
|
"title": "Tarefas do Card",
|
|
9023
|
-
"description": "Lista tarefas de todas as conversas vinculadas ao card (primária + linked). Lista tarefas/agenda paginados (per_page padrão 25, máximo 100). Filtros disponíveis: scope, page. Retorna meta (contadores) + payload (array de tarefa/agenda).",
|
|
9044
|
+
"description": "Lista tarefas de todas as conversas vinculadas ao card (primária + linked). Lista tarefas/agenda paginados (per_page padrão 25, máximo 100). Filtros disponíveis: scope, page. Retorna meta (contadores) + payload (array de tarefa/agenda). **`selo` (17/09):** cada tarefa traz o rotulo UNICO que o painel mostra ao lado dela, so de leitura — `cancelled` > `no_show` / `attended` > `completed` > `snoozed` > `rescheduled` > `pending`. Junta `status`, `attendance` e remarcacao (pelo painel ou pelo cliente no link). Para dizer o que aconteceu com o compromisso, leia `selo`: `status: pending` sozinho NAO significa que nada aconteceu (a pessoa pode ter faltado).",
|
|
9024
9045
|
"category": "Agenda / Tarefas",
|
|
9025
9046
|
"params": [
|
|
9026
9047
|
{
|
|
@@ -9062,7 +9083,7 @@
|
|
|
9062
9083
|
"method": "GET",
|
|
9063
9084
|
"path": "/api/v1/accounts/{account_id}/kanban_items/{id}/next_task",
|
|
9064
9085
|
"title": "Próxima Tarefa do Card",
|
|
9065
|
-
"description": "Retorna a PROXIMA tarefa pendente ou adiada do card (a de menor scheduled_at), considerando a conversa principal e as vinculadas. 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. ATENCAO: esta rota NAO filtra por privacidade de tarefa — pode devolver tarefa de OUTRO atendente, ao contrario do campo `next_task` que vem dentro do proprio card (esse so mostra tarefa de quem esta consultando).",
|
|
9086
|
+
"description": "Retorna a PROXIMA tarefa pendente ou adiada do card (a de menor scheduled_at), considerando a conversa principal e as vinculadas. 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. ATENCAO: esta rota NAO filtra por privacidade de tarefa — pode devolver tarefa de OUTRO atendente, ao contrario do campo `next_task` que vem dentro do proprio card (esse so mostra tarefa de quem esta consultando). **`selo` (17/09):** cada tarefa traz o rotulo UNICO que o painel mostra ao lado dela, so de leitura — `cancelled` > `no_show` / `attended` > `completed` > `snoozed` > `rescheduled` > `pending`. Junta `status`, `attendance` e remarcacao (pelo painel ou pelo cliente no link). Para dizer o que aconteceu com o compromisso, leia `selo`: `status: pending` sozinho NAO significa que nada aconteceu (a pessoa pode ter faltado).",
|
|
9066
9087
|
"category": "Agenda / Tarefas",
|
|
9067
9088
|
"params": [
|
|
9068
9089
|
{
|
|
@@ -9730,7 +9751,7 @@
|
|
|
9730
9751
|
"method": "POST",
|
|
9731
9752
|
"path": "/api/v1/accounts/{account_id}/flows",
|
|
9732
9753
|
"title": "Criar Flow",
|
|
9733
|
-
"description": "Cria um flow (FlowBuilder) na conta. Requer Admin. flow_data segue formato Vue Flow {nodes:[], edges:[]}. NODE SCHEMA — start: {label}. send_message: {label, messageItems:[{id, type:'text', content}]} handles: success/no_response/error. wait_response: {label, waitTime, waitUnit:'minutes'|'seconds', validation:'any'|'options'|'regex', acceptedOptions:['1','2'] (se options), regexPattern (se regex), invalidMessage, maxRetries:3, saveTo:'variable'|'contact_name'|'contact_email'|'contact_phone'|'contact_attr'|'conversation_attr'|'', saveVariable, saveAttrKey} — quando validation='options' os handles ficam 'option_{val}' + 'timeout'; senão 'success' + 'timeout' — NUNCA precisa de condition node depois. condition: {label, conditions:[{id, label, field, operator, value}]} handles = 'cond_0','cond_1',... (INDICE no array, NAO o id) + 'default'. action: {label, items:[{key, config:{...}}]} keys comuns assign_team({team_id}), assign_agent({agent_id}), add_label({labels:['slug',...]}), remove_label({labels}), change_status({status}), change_priority({priority}), mute_conversation({}), add_private_note({content}), create_kanban_item({funnel_id, funnel_stage,...}), move_kanban_stage({funnel_id, funnel_stage}), deactivate_flow({}), assign_captain({assistant_id}). api: {label, method, url, headers:[{key,value}], body, apiResponseVar}. set_variable: {label, variables:[{name, value}]}. wait: {label, waitTime, waitUnit}. EDGE SCHEMA: {id, source, target, sourceHandle (opcional, OBRIGATORIO casar com handle exposto pelo node source), type:'deletable', animated:true}. ERROS COMUNS QUE DEVEM SER EVITADOS: (1) action usa items[].config NAO items[].params; (2) send_message usa messageItems NAO items; (3) wait_response com validation='options' NAO precisa de condition node — use sourceHandle='option_X' diretamente; (4) sourceHandle inventado tipo 'c1','c2' nao funciona — sempre usar o handle real; (5) inbox_ids precisa vir aninhado em {flow:{inbox_ids:[]}} no PUT bruto, mas no MCP basta inbox_ids no nivel raiz. Cria novo flow. Obrigatórios: name, channel_type. Valida unicidade quando aplicável. Retorna o flow criado com ID atribuído. POSITIONING (CRITICO): cada node DEVE ter position:{x,y}. Sem isso, todos empilham no canvas no (0,0). Regra basica de layout: start em {x:50,y:300}, espaco horizontal +320 entre nodes sequenciais, ramificacoes em +/-150 vertical. ANTES DE GERAR JSON consulte o resource lionchat://docs/flowbuilder-design-guide (schema completo de cada tipo de node, handles expostos, erros comuns, checklist) e lionchat://docs/flowbuilder-patterns (10 templates prontos pra adaptar). BRAINSTORMING: se faltou info critica (canal, gatilho, conteudo), use o prompt create_flow_brainstorm como banco de perguntas sugeridas — pergunte SO o que falta, sem checklist forcado. APOS GERAR: rode o checklist da secao 6 do design guide antes de submeter (1 node start, todo node com id unico + position + data, todo edge com sourceHandle valido). NUNCA invente sourceHandle (no condition use cond_0/cond_1/default, no wait_response options use option_X, no AI intent use intent_<opcao>). IMPORTANTE: chame lionchat_flows_schema_reference antes pra ver o schema COMPLETO e atualizado (nodes end/ai/note, etiqueta conversa vs contato, webhook embutido, timeout, anti-loop). Pra ferramentas da IA (ai_tool) use lionchat_flow_tools_create. conversation_mode: 'individual' (default) | 'group'. Sticky note (type 'note'): data usa title+body+color(yellow|teal|blue|violet|pink|orange|slate)+width+height — NUNCA 'content'. ORGANIZAÇÃO: preencha tags ao criar (reutilizando as tags já existentes nos flows da conta — veja flows_list) pra manter a lista organizada. STICKY NOTE: o texto da nota (type note) vai em data.title + data.body — content/label/text deixam a nota EM BRANCO na tela; nunca crie nota sem body. LAYOUT: espace os nodes (colunas a >=320px no x, ramos a >=180px no y; notas AO LADO/ACIMA do trecho, nunca sobre nodes ou linhas). REGRAS 18/08: acao start_flow com flow_id do PROPRIO flow e aceita no save mas IGNORADA EM SILENCIO na execucao (o fluxo para ali) — aponte sempre pra OUTRO flow. Condicoes: preencha operator E field juntos (tabela dos pares no resource flowbuilder-patterns), senao a regra roda certa e aparece errada na tela do cliente. NOVIDADES 01/09/2026 no schema (lionchat_flows_schema_reference): acao send_conversion (Meta/Google Ads/GA4 de dentro do fluxo) e condicao por origem/campanha (attr_config de conversa com origin_kind=paid_ad etc.). NOVIDADES 02/09/2026: (1) send_conversion ganhou event_names — UM evento por destino ({meta, google_ads, ga4}); event_name virou reserva (grave os dois); Google Ads so aceita nome do conversion_action_map. (2) preset 'Origem do lead' (attrScope 'lead_origin', attr_key origin_platform; valores: plataforma ou 'custom:<slug>'). (3) REGRA DE VALOR na condicao de atributo: equal/not_equal/contains/not_contains gravam em values:[...] (LISTA) com value:'' — value solo abre VAZIO na tela do cliente. Ver lionchat_flows_schema_reference.",
|
|
9754
|
+
"description": "Cria um flow (FlowBuilder) na conta. Requer Admin. flow_data segue formato Vue Flow {nodes:[], edges:[]}. NODE SCHEMA — start: {label, items:[...]} — os GATILHOS moram em data.items (NUNCA data.triggers), cada item um OBJETO {key, config}. Ex.: {key:'message_received', config:{keywords:['oi','orcamento'], match_type:'contains'}}. config.keywords e LISTA de textos (texto solto quebra o despacho de TODA mensagem da caixa); listas de id vao como LISTA DE TEXTOS — team_ids:['3'], agent_ids:['70'], funnel_ids:['31'] (numero puro [3] nunca casa); label_names:['vip']. nodes e edges sao LISTAS de objetos; exit_conditions (irmao de nodes, no flow_data) e LISTA de {type, value}. send_message: {label, messageItems:[{id, type:'text', content}]} handles: success/no_response/error. wait_response: {label, waitTime, waitUnit:'minutes'|'seconds', validation:'any'|'options'|'regex', acceptedOptions:['1','2'] (se options), regexPattern (se regex), invalidMessage, maxRetries:3, saveTo:'variable'|'contact_name'|'contact_email'|'contact_phone'|'contact_attr'|'conversation_attr'|'', saveVariable, saveAttrKey} — quando validation='options' os handles ficam 'option_{val}' + 'timeout'; senão 'success' + 'timeout' — NUNCA precisa de condition node depois. condition: {label, conditions:[{id, label, field, operator, value}]} handles = 'cond_0','cond_1',... (INDICE no array, NAO o id) + 'default'. action: {label, items:[{key, config:{...}}]} keys comuns assign_team({team_id}), assign_agent({agent_id}), add_label({labels:['slug',...]}), remove_label({labels}), change_status({status}), change_priority({priority}), mute_conversation({}), add_private_note({content}), create_kanban_item({funnel_id, funnel_stage,...}), move_kanban_stage({funnel_id, funnel_stage}), deactivate_flow({}), assign_captain({assistant_id}). api: {label, method, url, headers:[{key,value}], body, apiResponseVar}. set_variable: {label, variables:[{name, value}]}. wait: {label, waitTime, waitUnit}. EDGE SCHEMA: {id, source, target, sourceHandle (opcional, OBRIGATORIO casar com handle exposto pelo node source), type:'deletable', animated:true}. ERROS COMUNS QUE DEVEM SER EVITADOS: (1) action usa items[].config NAO items[].params; (2) send_message usa messageItems NAO items; (3) wait_response com validation='options' NAO precisa de condition node — use sourceHandle='option_X' diretamente; (4) sourceHandle inventado tipo 'c1','c2' nao funciona — sempre usar o handle real; (5) inbox_ids precisa vir aninhado em {flow:{inbox_ids:[]}} no PUT bruto, mas no MCP basta inbox_ids no nivel raiz. Cria novo flow. Obrigatórios: name, channel_type. Valida unicidade quando aplicável. Retorna o flow criado com ID atribuído. POSITIONING (CRITICO): cada node DEVE ter position:{x,y}. Sem isso, todos empilham no canvas no (0,0). Regra basica de layout: start em {x:50,y:300}, espaco horizontal +320 entre nodes sequenciais, ramificacoes em +/-150 vertical. ANTES DE GERAR JSON consulte o resource lionchat://docs/flowbuilder-design-guide (schema completo de cada tipo de node, handles expostos, erros comuns, checklist) e lionchat://docs/flowbuilder-patterns (10 templates prontos pra adaptar). BRAINSTORMING: se faltou info critica (canal, gatilho, conteudo), use o prompt create_flow_brainstorm como banco de perguntas sugeridas — pergunte SO o que falta, sem checklist forcado. APOS GERAR: rode o checklist da secao 6 do design guide antes de submeter (1 node start, todo node com id unico + position + data, todo edge com sourceHandle valido). NUNCA invente sourceHandle (no condition use cond_0/cond_1/default, no wait_response options use option_X, no AI intent use intent_<opcao>). IMPORTANTE: chame lionchat_flows_schema_reference antes pra ver o schema COMPLETO e atualizado (nodes end/ai/note, etiqueta conversa vs contato, webhook embutido, timeout, anti-loop). Pra ferramentas da IA (ai_tool) use lionchat_flow_tools_create. conversation_mode: 'individual' (default) | 'group'. Sticky note (type 'note'): data usa title+body+color(yellow|teal|blue|violet|pink|orange|slate)+width+height — NUNCA 'content'. ORGANIZAÇÃO: preencha tags ao criar (reutilizando as tags já existentes nos flows da conta — veja flows_list) pra manter a lista organizada. STICKY NOTE: o texto da nota (type note) vai em data.title + data.body — content/label/text deixam a nota EM BRANCO na tela; nunca crie nota sem body. LAYOUT: espace os nodes (colunas a >=320px no x, ramos a >=180px no y; notas AO LADO/ACIMA do trecho, nunca sobre nodes ou linhas). REGRAS 18/08: acao start_flow com flow_id do PROPRIO flow e aceita no save mas IGNORADA EM SILENCIO na execucao (o fluxo para ali) — aponte sempre pra OUTRO flow. Condicoes: preencha operator E field juntos (tabela dos pares no resource flowbuilder-patterns), senao a regra roda certa e aparece errada na tela do cliente. NOVIDADES 01/09/2026 no schema (lionchat_flows_schema_reference): acao send_conversion (Meta/Google Ads/GA4 de dentro do fluxo) e condicao por origem/campanha (attr_config de conversa com origin_kind=paid_ad etc.). NOVIDADES 02/09/2026: (1) send_conversion ganhou event_names — UM evento por destino ({meta, google_ads, ga4}); event_name virou reserva (grave os dois); Google Ads so aceita nome do conversion_action_map. (2) preset 'Origem do lead' (attrScope 'lead_origin', attr_key origin_platform; valores: plataforma ou 'custom:<slug>'). (3) REGRA DE VALOR na condicao de atributo: equal/not_equal/contains/not_contains gravam em values:[...] (LISTA) com value:'' — value solo abre VAZIO na tela do cliente. Ver lionchat_flows_schema_reference. TIPO DE FLUXO (17/09/2026): o parametro flow_type aceita 'conversation' (padrao) ou 'action' (Fluxo de Acoes). O de ACOES nao fica ligado a caixa nenhuma, roda em QUALQUER conversa de QUALQUER caixa e SO executa acoes — NAO pode ter os blocos send_message, wait_response nem update_group (a validacao recusa o save inteiro), nao aceita inbox_ids e ignora conversation_mode. Use pra regra que vale na empresa toda e nao depende da caixa (ex.: etiqueta 'urgente' -> atribui equipe de suporte). Se precisa FALAR com a pessoa, o tipo e 'conversation'. Pra ferramenta da IA continue usando lionchat_flow_tools_create.",
|
|
9734
9755
|
"category": "Flows",
|
|
9735
9756
|
"params": [
|
|
9736
9757
|
{
|
|
@@ -9751,8 +9772,8 @@
|
|
|
9751
9772
|
"name": "channel_type",
|
|
9752
9773
|
"type": "string",
|
|
9753
9774
|
"location": "body",
|
|
9754
|
-
"required":
|
|
9755
|
-
"description": "Tipo de canal (ex: Channel::Waha, Channel::WebWidget, Channel::Whatsapp)"
|
|
9775
|
+
"required": false,
|
|
9776
|
+
"description": "Tipo de canal (ex: Channel::Waha, Channel::WebWidget, Channel::Whatsapp). Obrigatorio no fluxo de conversa; NAO se aplica ao flow_type 'action', que roda em todas as caixas."
|
|
9756
9777
|
},
|
|
9757
9778
|
{
|
|
9758
9779
|
"name": "conversation_mode",
|
|
@@ -9766,14 +9787,14 @@
|
|
|
9766
9787
|
"type": "array",
|
|
9767
9788
|
"location": "body",
|
|
9768
9789
|
"required": false,
|
|
9769
|
-
"description": "IDs das caixas de entrada a vincular"
|
|
9790
|
+
"description": "IDs das caixas de entrada a vincular. NAO use com flow_type 'action' — a validacao recusa caixa nesse tipo (ele roda em todas)."
|
|
9770
9791
|
},
|
|
9771
9792
|
{
|
|
9772
9793
|
"name": "flow_data",
|
|
9773
9794
|
"type": "object",
|
|
9774
9795
|
"location": "body",
|
|
9775
9796
|
"required": false,
|
|
9776
|
-
"description": "
|
|
9797
|
+
"description": "Objeto {nodes:[...], edges:[...], exit_conditions:[...]} em formato Vue Flow — nodes e edges sao LISTAS de objetos. Bloco Inicio: data.items = [{key, config}] (ex.: {\"key\": \"message_received\", \"config\": {\"keywords\": [\"oi\"], \"match_type\": \"contains\"}}); keywords e team_ids/agent_ids/funnel_ids sao LISTAS (ids como texto: [\"3\"]). exit_conditions = LISTA de {type, value}. Cada node tem 'data' com formato proprio (ver descricao da ferramenta e lionchat_flows_schema_reference). Edges precisam de sourceHandle real (ex: 'option_1', 'success', 'timeout', 'no_response')."
|
|
9777
9798
|
},
|
|
9778
9799
|
{
|
|
9779
9800
|
"name": "tags",
|
|
@@ -9781,6 +9802,13 @@
|
|
|
9781
9802
|
"location": "body",
|
|
9782
9803
|
"required": false,
|
|
9783
9804
|
"description": "Tags livres do flow para organização (array de strings; máx 20 tags, cada uma até 50 caracteres; duplicadas por maiúscula/minúscula são unificadas). A lista de flows na tela filtra por Status/Tipo/Caixa/Tags no navegador — não há filtro por query param no index."
|
|
9805
|
+
},
|
|
9806
|
+
{
|
|
9807
|
+
"name": "flow_type",
|
|
9808
|
+
"type": "string",
|
|
9809
|
+
"location": "body",
|
|
9810
|
+
"required": false,
|
|
9811
|
+
"description": "'conversation' (padrao) ou 'action' (Fluxo de Acoes). IMUTAVEL apos criar. No 'action' NAO mande inbox_ids nem channel_type (ele roda em todas as caixas) e nem conversation_mode (o backend fixa 'individual'); e o flow_data NAO pode conter send_message, wait_response, update_group ou end. Ferramenta da IA ('ai_tool') tem tool propria: lionchat_flow_tools_create."
|
|
9784
9812
|
}
|
|
9785
9813
|
],
|
|
9786
9814
|
"returns": "flow criado (com novo ID)",
|
|
@@ -9825,7 +9853,7 @@
|
|
|
9825
9853
|
"method": "PUT",
|
|
9826
9854
|
"path": "/api/v1/accounts/{account_id}/flows/{id}",
|
|
9827
9855
|
"title": "Atualizar Flow",
|
|
9828
|
-
"description": "Atualiza nome, descricao, caixas de entrada ou dados dos blocos. Mesmo schema de flow_data do tool lionchat_flows_create — consulte a descricao daquele tool para o schema completo dos nodes (start, send_message, wait_response, condition, action, api, set_variable) e dos edges. RECAP RAPIDO: action items[].config (nao params); send_message messageItems (nao items); wait_response validation='options' gera handles 'option_X' (dispensa condition node); edges sourceHandle DEVE casar com handle real do node source. Atualiza campos do flow existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: name, description, inbox_ids, flow_data. IMPORTANTE: chame lionchat_flows_schema_reference antes pra ver o schema COMPLETO e atualizado (nodes end/ai/note, etiqueta conversa vs contato, webhook embutido, timeout, anti-loop). Pra ferramentas da IA (ai_tool) use lionchat_flow_tools_create. STICKY NOTE: o texto da nota (type note) vai em data.title + data.body — content/label/text deixam a nota EM BRANCO na tela; nunca crie nota sem body. LAYOUT: espace os nodes (colunas a >=320px no x, ramos a >=180px no y; notas AO LADO/ACIMA do trecho, nunca sobre nodes ou linhas). REGRAS 18/08: acao start_flow com flow_id do PROPRIO flow e aceita no save mas IGNORADA EM SILENCIO na execucao (o fluxo para ali) — aponte sempre pra OUTRO flow. Condicoes: preencha operator E field juntos (tabela dos pares no resource flowbuilder-patterns), senao a regra roda certa e aparece errada na tela do cliente. NOVIDADES 01/09/2026 no schema (lionchat_flows_schema_reference): acao send_conversion (Meta/Google Ads/GA4 de dentro do fluxo) e condicao por origem/campanha (attr_config de conversa com origin_kind=paid_ad etc.). NOVIDADES 02/09/2026: (1) send_conversion ganhou event_names — UM evento por destino ({meta, google_ads, ga4}); event_name virou reserva (grave os dois); Google Ads so aceita nome do conversion_action_map. (2) preset 'Origem do lead' (attrScope 'lead_origin', attr_key origin_platform; valores: plataforma ou 'custom:<slug>'). (3) REGRA DE VALOR na condicao de atributo: equal/not_equal/contains/not_contains gravam em values:[...] (LISTA) com value:'' — value solo abre VAZIO na tela do cliente. Ver lionchat_flows_schema_reference.",
|
|
9856
|
+
"description": "Atualiza nome, descricao, caixas de entrada ou dados dos blocos. Mesmo schema de flow_data do tool lionchat_flows_create — consulte a descricao daquele tool para o schema completo dos nodes (start, send_message, wait_response, condition, action, api, set_variable) e dos edges. RECAP RAPIDO: start: {label, items:[...]} — os GATILHOS moram em data.items (NUNCA data.triggers), cada item um OBJETO {key, config}. Ex.: {key:'message_received', config:{keywords:['oi','orcamento'], match_type:'contains'}}. config.keywords e LISTA de textos (texto solto quebra o despacho de TODA mensagem da caixa); listas de id vao como LISTA DE TEXTOS — team_ids:['3'], agent_ids:['70'], funnel_ids:['31'] (numero puro [3] nunca casa); label_names:['vip']. nodes e edges sao LISTAS de objetos; exit_conditions (irmao de nodes, no flow_data) e LISTA de {type, value}. flow_data enviado SUBSTITUI o desenho inteiro (nodes + edges + exit_conditions): leia com lionchat_flows_show e reenvie COMPLETO. action items[].config (nao params); send_message messageItems (nao items); wait_response validation='options' gera handles 'option_X' (dispensa condition node); edges sourceHandle DEVE casar com handle real do node source. Atualiza campos do flow existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: name, description, inbox_ids, flow_data. IMPORTANTE: chame lionchat_flows_schema_reference antes pra ver o schema COMPLETO e atualizado (nodes end/ai/note, etiqueta conversa vs contato, webhook embutido, timeout, anti-loop). Pra ferramentas da IA (ai_tool) use lionchat_flow_tools_create. STICKY NOTE: o texto da nota (type note) vai em data.title + data.body — content/label/text deixam a nota EM BRANCO na tela; nunca crie nota sem body. LAYOUT: espace os nodes (colunas a >=320px no x, ramos a >=180px no y; notas AO LADO/ACIMA do trecho, nunca sobre nodes ou linhas). REGRAS 18/08: acao start_flow com flow_id do PROPRIO flow e aceita no save mas IGNORADA EM SILENCIO na execucao (o fluxo para ali) — aponte sempre pra OUTRO flow. Condicoes: preencha operator E field juntos (tabela dos pares no resource flowbuilder-patterns), senao a regra roda certa e aparece errada na tela do cliente. NOVIDADES 01/09/2026 no schema (lionchat_flows_schema_reference): acao send_conversion (Meta/Google Ads/GA4 de dentro do fluxo) e condicao por origem/campanha (attr_config de conversa com origin_kind=paid_ad etc.). NOVIDADES 02/09/2026: (1) send_conversion ganhou event_names — UM evento por destino ({meta, google_ads, ga4}); event_name virou reserva (grave os dois); Google Ads so aceita nome do conversion_action_map. (2) preset 'Origem do lead' (attrScope 'lead_origin', attr_key origin_platform; valores: plataforma ou 'custom:<slug>'). (3) REGRA DE VALOR na condicao de atributo: equal/not_equal/contains/not_contains gravam em values:[...] (LISTA) com value:'' — value solo abre VAZIO na tela do cliente. Ver lionchat_flows_schema_reference.",
|
|
9829
9857
|
"category": "Flows",
|
|
9830
9858
|
"params": [
|
|
9831
9859
|
{
|
|
@@ -9861,7 +9889,7 @@
|
|
|
9861
9889
|
"type": "object",
|
|
9862
9890
|
"location": "body",
|
|
9863
9891
|
"required": false,
|
|
9864
|
-
"description": "
|
|
9892
|
+
"description": "Objeto {nodes:[...], edges:[...], exit_conditions:[...]} em formato Vue Flow — nodes e edges sao LISTAS de objetos. Bloco Inicio: data.items = [{key, config}] (ex.: {\"key\": \"message_received\", \"config\": {\"keywords\": [\"oi\"], \"match_type\": \"contains\"}}); keywords e team_ids/agent_ids/funnel_ids sao LISTAS (ids como texto: [\"3\"]). exit_conditions = LISTA de {type, value}. Cada node tem 'data' com formato proprio (ver descricao da ferramenta e lionchat_flows_schema_reference). Edges precisam de sourceHandle real (ex: 'option_1', 'success', 'timeout', 'no_response'). SUBSTITUI o desenho inteiro: leia com lionchat_flows_show e reenvie nodes + edges + exit_conditions completos."
|
|
9865
9893
|
},
|
|
9866
9894
|
{
|
|
9867
9895
|
"name": "tags",
|
|
@@ -10039,7 +10067,7 @@
|
|
|
10039
10067
|
"type": "array",
|
|
10040
10068
|
"location": "body",
|
|
10041
10069
|
"required": false,
|
|
10042
|
-
"description": "
|
|
10070
|
+
"description": "LISTA de janelas, cada item um OBJETO {day_of_week, start_time, end_time}: day_of_week inteiro 0..6 (0 = domingo, 1 = segunda ... 6 = sabado); start_time/end_time 'HH:MM' 24h, inicio multiplo de 5 min e antes do fim; varios blocos no mesmo dia pode, sem sobrepor. Ex.: [{\"day_of_week\": 1, \"start_time\": \"09:00\", \"end_time\": \"12:00\"}, {\"day_of_week\": 1, \"start_time\": \"14:00\", \"end_time\": \"18:00\"}]. Para EDITAR ou REMOVER uma janela existente mande o id dela (e _destroy: true para remover) — item sem id CRIA outra."
|
|
10043
10071
|
},
|
|
10044
10072
|
{
|
|
10045
10073
|
"name": "slug",
|
|
@@ -10591,7 +10619,7 @@
|
|
|
10591
10619
|
"type": "array",
|
|
10592
10620
|
"location": "body",
|
|
10593
10621
|
"required": true,
|
|
10594
|
-
"description": "CADA item de actions DEVE ser um OBJETO {action_name (string), action_params (array)} — NUNCA um texto/string solto. Ex.: [{\"action_name\":\"send_message\",\"action_params\":[\"Oi\"]}]. [{action_name, action_params[]}] Actions novas (2026-07-21): 'update_contact_attribute' e 'update_conversation_attribute' — action_params: [{attribute_key, value}], value aceita texto fixo OU variável Liquid (ex. {{contact.phone_number}}); grava atributo personalizado com MERGE (não apaga os demais) e passa pelo porteiro de data. 'pending_conversation' (2026-07-20, sem params) — deixa a conversa PENDENTE (handoff; mensagem nova do cliente NÃO reabre). ATENCAO — 'send_whatsapp_template': action_params: [{name, id, language, category, processed_params}]. 'name' e OBRIGATORIO e e o nome EXATO do modelo aprovado na Meta (o envio acontece por ele); 'language' precisa bater com o idioma aprovado (padrao pt_BR); processed_params: {\"body\": {\"1\": \"{{contact.first_name}}\"}}. NUNCA use template_name/template_id/template_category/template_language — esse e o formato dos nos do FlowBuilder e aqui e IGNORADO: a regra salva com sucesso, aparece na tela e NAO ENVIA NADA, sem erro nem log (incidente real conta 39 em 02/08/2026: 14h sem enviar, 9 leads perdidos). Confira o modelo antes com lionchat_inboxes_whatsapp_templates_list. So funciona em caixa WhatsApp API Oficial (Cloud). REGRA GERAL: action_params e SEMPRE um array (o backend le params[0]) e seu CONTEUDO nao e validado pela API. Se nao souber o formato de uma acao, leia uma regra existente com lionchat_automation_rules_show e copie — nunca invente nome de chave. Formato de TODAS as acoes no resource 'conversation-flows'."
|
|
10622
|
+
"description": "CADA item de actions DEVE ser um OBJETO {action_name (string), action_params (array)} — NUNCA um texto/string solto. Ex.: [{\"action_name\":\"send_message\",\"action_params\":[\"Oi\"]}]. [{action_name, action_params[]}] Actions novas (2026-07-21): 'update_contact_attribute' e 'update_conversation_attribute' — action_params: [{attribute_key, value}], value aceita texto fixo OU variável Liquid (ex. {{contact.phone_number}}); grava atributo personalizado com MERGE (não apaga os demais) e passa pelo porteiro de data. 'pending_conversation' (2026-07-20, sem params) — deixa a conversa PENDENTE (handoff; mensagem nova do cliente NÃO reabre). ATENCAO — 'send_whatsapp_template': action_params: [{name, id, language, category, processed_params}]. 'name' e OBRIGATORIO e e o nome EXATO do modelo aprovado na Meta (o envio acontece por ele); 'language' precisa bater com o idioma aprovado (padrao pt_BR); processed_params: {\"body\": {\"1\": \"{{contact.first_name}}\"}}. NUNCA use template_name/template_id/template_category/template_language — esse e o formato dos nos do FlowBuilder e aqui e IGNORADO: a regra salva com sucesso, aparece na tela e NAO ENVIA NADA, sem erro nem log (incidente real conta 39 em 02/08/2026: 14h sem enviar, 9 leads perdidos). Confira o modelo antes com lionchat_inboxes_whatsapp_templates_list. So funciona em caixa WhatsApp API Oficial (Cloud). REGRA GERAL: action_params e SEMPRE um array (o backend le params[0]) e seu CONTEUDO nao e validado pela API. Se nao souber o formato de uma acao, leia uma regra existente com lionchat_automation_rules_show e copie — nunca invente nome de chave. Formato de TODAS as acoes no resource 'conversation-flows'. MAIS USADOS (action_params e SEMPRE lista): send_message [\"texto\"]; add_private_note [\"texto\"]; add_label/remove_label [\"nome-da-etiqueta\"]; assign_agent [70] ([\"nil\"] desatribui); assign_team [3]; change_status [\"resolved\"|\"open\"|\"pending\"|\"snoozed\"]; change_priority [\"high\"]; send_canned_response [12]; update_conversation_attribute [{\"attribute_key\": \"chave\", \"value\": \"texto\"}]; create_kanban_item [{\"funnel_id\": 31, \"funnel_stage\": \"prospeccao\"}]; move_kanban_item_to_stage [{\"funnel_id\": 31, \"funnel_stage\": \"qualificacao\"}]. Tabela completa no resource conversation-flows ('Acoes de automacao')."
|
|
10595
10623
|
},
|
|
10596
10624
|
{
|
|
10597
10625
|
"name": "active",
|
|
@@ -10689,7 +10717,7 @@
|
|
|
10689
10717
|
"type": "array",
|
|
10690
10718
|
"location": "body",
|
|
10691
10719
|
"required": false,
|
|
10692
|
-
"description": "CADA item de actions DEVE ser um OBJETO {action_name (string), action_params (array)} — NUNCA um texto/string solto. Ex.: [{\"action_name\":\"send_message\",\"action_params\":[\"Oi\"]}]. Acoes Actions novas (2026-07-21): 'update_contact_attribute' e 'update_conversation_attribute' — action_params: [{attribute_key, value}], value aceita texto fixo OU variável Liquid (ex. {{contact.phone_number}}); grava atributo personalizado com MERGE (não apaga os demais) e passa pelo porteiro de data. 'pending_conversation' (2026-07-20, sem params) — deixa a conversa PENDENTE (handoff; mensagem nova do cliente NÃO reabre). ATENCAO — 'send_whatsapp_template': action_params: [{name, id, language, category, processed_params}]. 'name' e OBRIGATORIO e e o nome EXATO do modelo aprovado na Meta (o envio acontece por ele); 'language' precisa bater com o idioma aprovado (padrao pt_BR); processed_params: {\"body\": {\"1\": \"{{contact.first_name}}\"}}. NUNCA use template_name/template_id/template_category/template_language — esse e o formato dos nos do FlowBuilder e aqui e IGNORADO: a regra salva com sucesso, aparece na tela e NAO ENVIA NADA, sem erro nem log (incidente real conta 39 em 02/08/2026: 14h sem enviar, 9 leads perdidos). Confira o modelo antes com lionchat_inboxes_whatsapp_templates_list. So funciona em caixa WhatsApp API Oficial (Cloud). REGRA GERAL: action_params e SEMPRE um array (o backend le params[0]) e seu CONTEUDO nao e validado pela API. Se nao souber o formato de uma acao, leia uma regra existente com lionchat_automation_rules_show e copie — nunca invente nome de chave. Formato de TODAS as acoes no resource 'conversation-flows'."
|
|
10720
|
+
"description": "CADA item de actions DEVE ser um OBJETO {action_name (string), action_params (array)} — NUNCA um texto/string solto. Ex.: [{\"action_name\":\"send_message\",\"action_params\":[\"Oi\"]}]. Acoes Actions novas (2026-07-21): 'update_contact_attribute' e 'update_conversation_attribute' — action_params: [{attribute_key, value}], value aceita texto fixo OU variável Liquid (ex. {{contact.phone_number}}); grava atributo personalizado com MERGE (não apaga os demais) e passa pelo porteiro de data. 'pending_conversation' (2026-07-20, sem params) — deixa a conversa PENDENTE (handoff; mensagem nova do cliente NÃO reabre). ATENCAO — 'send_whatsapp_template': action_params: [{name, id, language, category, processed_params}]. 'name' e OBRIGATORIO e e o nome EXATO do modelo aprovado na Meta (o envio acontece por ele); 'language' precisa bater com o idioma aprovado (padrao pt_BR); processed_params: {\"body\": {\"1\": \"{{contact.first_name}}\"}}. NUNCA use template_name/template_id/template_category/template_language — esse e o formato dos nos do FlowBuilder e aqui e IGNORADO: a regra salva com sucesso, aparece na tela e NAO ENVIA NADA, sem erro nem log (incidente real conta 39 em 02/08/2026: 14h sem enviar, 9 leads perdidos). Confira o modelo antes com lionchat_inboxes_whatsapp_templates_list. So funciona em caixa WhatsApp API Oficial (Cloud). REGRA GERAL: action_params e SEMPRE um array (o backend le params[0]) e seu CONTEUDO nao e validado pela API. Se nao souber o formato de uma acao, leia uma regra existente com lionchat_automation_rules_show e copie — nunca invente nome de chave. Formato de TODAS as acoes no resource 'conversation-flows'. MAIS USADOS (action_params e SEMPRE lista): send_message [\"texto\"]; add_private_note [\"texto\"]; add_label/remove_label [\"nome-da-etiqueta\"]; assign_agent [70] ([\"nil\"] desatribui); assign_team [3]; change_status [\"resolved\"|\"open\"|\"pending\"|\"snoozed\"]; change_priority [\"high\"]; send_canned_response [12]; update_conversation_attribute [{\"attribute_key\": \"chave\", \"value\": \"texto\"}]; create_kanban_item [{\"funnel_id\": 31, \"funnel_stage\": \"prospeccao\"}]; move_kanban_item_to_stage [{\"funnel_id\": 31, \"funnel_stage\": \"qualificacao\"}]. Tabela completa no resource conversation-flows ('Acoes de automacao')."
|
|
10693
10721
|
}
|
|
10694
10722
|
],
|
|
10695
10723
|
"returns": "regra de automação atualizado",
|
|
@@ -11200,7 +11228,7 @@
|
|
|
11200
11228
|
"type": "object",
|
|
11201
11229
|
"location": "body",
|
|
11202
11230
|
"required": true,
|
|
11203
|
-
"description": "Wrapper
|
|
11231
|
+
"description": "Wrapper {name, filter_type, query}. filter_type: 'conversation' ou 'contact'. 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)."
|
|
11204
11232
|
}
|
|
11205
11233
|
],
|
|
11206
11234
|
"returns": "filtro personalizado criado (com novo ID)",
|
|
@@ -11264,7 +11292,7 @@
|
|
|
11264
11292
|
"type": "object",
|
|
11265
11293
|
"location": "body",
|
|
11266
11294
|
"required": true,
|
|
11267
|
-
"description": "Wrapper
|
|
11295
|
+
"description": "Wrapper {name, filter_type, query}. filter_type: 'conversation' ou 'contact'. 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)."
|
|
11268
11296
|
}
|
|
11269
11297
|
],
|
|
11270
11298
|
"returns": "filtro personalizado atualizado",
|
|
@@ -12166,7 +12194,7 @@
|
|
|
12166
12194
|
"type": "object",
|
|
12167
12195
|
"location": "body",
|
|
12168
12196
|
"required": false,
|
|
12169
|
-
"description": "
|
|
12197
|
+
"description": "Objeto {chave: valor} (chave = attribute_key de lionchat_custom_attributes_list, modelo contato). Por tipo: texto; numero como numero; data 'AAAA-MM-DD' (data-hora ISO com fuso; hora 'HH:MM'); lista = EXATAMENTE uma das opcoes cadastradas (outro valor aparece como 'Fora da lista'); sim/nao = true/false. NUNCA grave waha_whatsapp_lid, waha_whatsapp_jid nem waha_whatsapp_chat_id (endereco interno de envio do WhatsApp — escrever quebra a entrega). Ex.: {\"cpf\": \"123.456.789-00\", \"data_nascimento\": \"1990-05-17\", \"plano\": \"Premium\"}. So vale se o contato for NOVO: se ja existir contato com o mesmo identifier/e-mail/telefone, os atributos NAO sao gravados."
|
|
12170
12198
|
}
|
|
12171
12199
|
],
|
|
12172
12200
|
"returns": "contato criado (com novo ID)",
|
|
@@ -15591,6 +15619,75 @@
|
|
|
15591
15619
|
"lionchat_inboxes_waha_groups_update"
|
|
15592
15620
|
]
|
|
15593
15621
|
},
|
|
15622
|
+
{
|
|
15623
|
+
"id": "lionchat_inboxes_waha_groups_list_3",
|
|
15624
|
+
"method": "GET",
|
|
15625
|
+
"path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/waha_groups/join_info",
|
|
15626
|
+
"title": "Ver Grupo de um Convite (antes de entrar)",
|
|
15627
|
+
"description": "SO LEITURA: pergunta ao WhatsApp que grupo e um codigo de convite, sem entrar. Use SEMPRE antes de lionchat_inboxes_waha_groups_create_6 para confirmar com a pessoa em qual grupo ela vai entrar. Aceita o codigo cru, o link inteiro (https://chat.whatsapp.com/CODIGO) ou o link no meio de um texto. So funciona em caixa de WhatsApp QR Code (Channel::Waha).",
|
|
15628
|
+
"category": "Grupos WhatsApp",
|
|
15629
|
+
"params": [
|
|
15630
|
+
{
|
|
15631
|
+
"name": "inbox_id",
|
|
15632
|
+
"type": "integer",
|
|
15633
|
+
"location": "path",
|
|
15634
|
+
"required": true,
|
|
15635
|
+
"description": "ID da inbox (precisa ser WhatsApp QR Code)"
|
|
15636
|
+
},
|
|
15637
|
+
{
|
|
15638
|
+
"name": "code",
|
|
15639
|
+
"type": "string",
|
|
15640
|
+
"location": "query",
|
|
15641
|
+
"required": true,
|
|
15642
|
+
"description": "Codigo do convite, o link completo, ou um texto que contenha o link"
|
|
15643
|
+
}
|
|
15644
|
+
],
|
|
15645
|
+
"returns": "{ data: { JID, Name, ParticipantCount, OwnerPN, IsJoinApprovalRequired, Suspended, GroupCreated } } — formato cru do motor, em PascalCase. 422 quando o link nao e de convite de grupo.",
|
|
15646
|
+
"common_use_cases": [
|
|
15647
|
+
"Confirmar o nome e o tamanho do grupo antes de entrar",
|
|
15648
|
+
"Saber se a entrada no grupo precisa de aprovacao de administrador",
|
|
15649
|
+
"Validar um link de convite recebido numa conversa"
|
|
15650
|
+
],
|
|
15651
|
+
"related_tools": [
|
|
15652
|
+
"lionchat_inboxes_waha_groups_list",
|
|
15653
|
+
"lionchat_inboxes_waha_groups_show",
|
|
15654
|
+
"lionchat_inboxes_waha_groups_create_5"
|
|
15655
|
+
]
|
|
15656
|
+
},
|
|
15657
|
+
{
|
|
15658
|
+
"id": "lionchat_inboxes_waha_groups_create_6",
|
|
15659
|
+
"method": "POST",
|
|
15660
|
+
"path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/waha_groups/join",
|
|
15661
|
+
"title": "Entrar no Grupo por Convite",
|
|
15662
|
+
"description": "Faz o numero conectado ENTRAR num grupo WhatsApp usando um codigo de convite, como participante comum. Acao que muda o WhatsApp do cliente: confirme antes com lionchat_inboxes_waha_groups_list_3. Recusa com 422 e reason 'groups_disabled' quando a caixa esta com 'Aceitar grupos' desligado — sem essa chave as mensagens do grupo nunca chegariam ao painel. So funciona em caixa de WhatsApp QR Code (Channel::Waha).",
|
|
15663
|
+
"category": "Grupos WhatsApp",
|
|
15664
|
+
"params": [
|
|
15665
|
+
{
|
|
15666
|
+
"name": "inbox_id",
|
|
15667
|
+
"type": "integer",
|
|
15668
|
+
"location": "path",
|
|
15669
|
+
"required": true,
|
|
15670
|
+
"description": "ID da inbox (precisa ser WhatsApp QR Code)"
|
|
15671
|
+
},
|
|
15672
|
+
{
|
|
15673
|
+
"name": "code",
|
|
15674
|
+
"type": "string",
|
|
15675
|
+
"location": "body",
|
|
15676
|
+
"required": true,
|
|
15677
|
+
"description": "Codigo do convite, o link completo, ou um texto que contenha o link"
|
|
15678
|
+
}
|
|
15679
|
+
],
|
|
15680
|
+
"returns": "{ success: true, data: { id: '...@g.us' } }. 422 com reason 'groups_disabled' se a caixa nao aceita grupos; 422 se o link nao e de convite.",
|
|
15681
|
+
"common_use_cases": [
|
|
15682
|
+
"Entrar num grupo a partir de um convite recebido na conversa",
|
|
15683
|
+
"Entrar num grupo usando um link colado pelo cliente"
|
|
15684
|
+
],
|
|
15685
|
+
"related_tools": [
|
|
15686
|
+
"lionchat_inboxes_waha_groups_list_3",
|
|
15687
|
+
"lionchat_inboxes_waha_groups_list",
|
|
15688
|
+
"lionchat_inboxes_waha_groups_show"
|
|
15689
|
+
]
|
|
15690
|
+
},
|
|
15594
15691
|
{
|
|
15595
15692
|
"id": "lionchat_inboxes_whatsapp_templates_list",
|
|
15596
15693
|
"method": "GET",
|
|
@@ -15688,7 +15785,7 @@
|
|
|
15688
15785
|
"type": "array",
|
|
15689
15786
|
"location": "body",
|
|
15690
15787
|
"required": true,
|
|
15691
|
-
"description": "
|
|
15788
|
+
"description": "LISTA de componentes no formato da Meta, cada item um OBJETO com type: HEADER {type, format: TEXT|IMAGE|VIDEO|DOCUMENT, text, example}; BODY {type, text, example: {body_text: [[...]]}} (obrigatorio); FOOTER {type, text}; BUTTONS {type, buttons: [{type: QUICK_REPLY|URL|PHONE_NUMBER, text, url, phone_number, example}]}. Ex.: [{\"type\": \"BODY\", \"text\": \"Ola {{1}}, seu pedido saiu.\", \"example\": {\"body_text\": [[\"Maria\"]]}}]. Variavel {{N}} no corpo exige example. Exemplos completos no resource best-practices (templates)."
|
|
15692
15789
|
},
|
|
15693
15790
|
{
|
|
15694
15791
|
"name": "variable_mapping",
|
|
@@ -15792,7 +15889,7 @@
|
|
|
15792
15889
|
"method": "POST",
|
|
15793
15890
|
"path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/whatsapp_templates/{id}",
|
|
15794
15891
|
"title": "Atualizar Template WhatsApp",
|
|
15795
|
-
"description": "Atualiza um template de WhatsApp. SOMENTE Channel::Whatsapp Cloud.",
|
|
15892
|
+
"description": "Atualiza um template de WhatsApp. SOMENTE Channel::Whatsapp Cloud. REENVIA o modelo a Meta (status volta para revisao). Para mudar SO o variable_mapping de um modelo aprovado, use lionchat_inboxes_whatsapp_templates_update.",
|
|
15796
15893
|
"category": "Templates WhatsApp",
|
|
15797
15894
|
"params": [
|
|
15798
15895
|
{
|
|
@@ -15814,7 +15911,7 @@
|
|
|
15814
15911
|
"type": "array",
|
|
15815
15912
|
"location": "body",
|
|
15816
15913
|
"required": false,
|
|
15817
|
-
"description": "
|
|
15914
|
+
"description": "LISTA de componentes no formato da Meta, cada item um OBJETO com type: HEADER {type, format: TEXT|IMAGE|VIDEO|DOCUMENT, text, example}; BODY {type, text, example: {body_text: [[...]]}} (obrigatorio); FOOTER {type, text}; BUTTONS {type, buttons: [{type: QUICK_REPLY|URL|PHONE_NUMBER, text, url, phone_number, example}]}. Ex.: [{\"type\": \"BODY\", \"text\": \"Ola {{1}}, seu pedido saiu.\", \"example\": {\"body_text\": [[\"Maria\"]]}}]. Variavel {{N}} no corpo exige example. Exemplos completos no resource best-practices (templates). ATENCAO: esta ferramenta REENVIA o modelo a Meta — o status volta para revisao. Para mudar SO o apontamento das variaveis use lionchat_inboxes_whatsapp_templates_update (nao passa pela Meta)."
|
|
15818
15915
|
},
|
|
15819
15916
|
{
|
|
15820
15917
|
"name": "variable_mapping",
|
|
@@ -16988,14 +17085,14 @@
|
|
|
16988
17085
|
"type": "object",
|
|
16989
17086
|
"location": "body",
|
|
16990
17087
|
"required": false,
|
|
16991
|
-
"description": "Mapeamento de campos do payload para campos internos (dentro de custom_webhook_integration). Suporta caminhos com indice de array (messages.0.content) — mapeamento POSICIONAL; limites: profundidade 5, 10 itens/array, 500 chaves"
|
|
17088
|
+
"description": "Mapeamento de campos do payload para campos internos (dentro de custom_webhook_integration). Suporta caminhos com indice de array (messages.0.content) — mapeamento POSICIONAL; limites: profundidade 5, 10 itens/array, 500 chaves FORMATO: {\"<caminho no payload>\": \"<destino>\"} — caminho com ponto (cliente.telefone, messages.0.content); destino SEMPRE texto: contact_name, contact_email, contact_phone, contact_company, contact_city, contact_attr_<chave>, conversation_attr_<chave>, cadastral_<campo> (ex.: cadastral_cpf), social_<rede>. Dois caminhos pro mesmo destino sao concatenados; destino fora da lista e ignorado. Ex.: {\"cliente.nome\": \"contact_name\", \"cliente.telefone\": \"contact_phone\"}."
|
|
16992
17089
|
},
|
|
16993
17090
|
{
|
|
16994
17091
|
"name": "event_automation_mapping",
|
|
16995
17092
|
"type": "object",
|
|
16996
17093
|
"location": "body",
|
|
16997
17094
|
"required": false,
|
|
16998
|
-
"description": "Mapeamento de evento para automacao a disparar (dentro de custom_webhook_integration). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal."
|
|
17095
|
+
"description": "Mapeamento de evento para automacao a disparar (dentro de custom_webhook_integration). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal. FORMATO: {\"<valor do campo de evento (event_field) no payload>\": {\"automation_id\": 12, \"flow_id\": null}}, ou {\"__all__\": {...}} para qualquer evento (o __all__ vence os demais). Cada valor e um OBJETO."
|
|
16999
17096
|
},
|
|
17000
17097
|
{
|
|
17001
17098
|
"name": "sample_payload",
|
|
@@ -17100,14 +17197,14 @@
|
|
|
17100
17197
|
"type": "object",
|
|
17101
17198
|
"location": "body",
|
|
17102
17199
|
"required": false,
|
|
17103
|
-
"description": "Mapeamento de campos do payload para campos internos (dentro de custom_webhook_integration)"
|
|
17200
|
+
"description": "Mapeamento de campos do payload para campos internos (dentro de custom_webhook_integration) FORMATO: {\"<caminho no payload>\": \"<destino>\"} — caminho com ponto (cliente.telefone, messages.0.content); destino SEMPRE texto: contact_name, contact_email, contact_phone, contact_company, contact_city, contact_attr_<chave>, conversation_attr_<chave>, cadastral_<campo> (ex.: cadastral_cpf), social_<rede>. Dois caminhos pro mesmo destino sao concatenados; destino fora da lista e ignorado. Ex.: {\"cliente.nome\": \"contact_name\", \"cliente.telefone\": \"contact_phone\"}. SUBSTITUI o mapa inteiro."
|
|
17104
17201
|
},
|
|
17105
17202
|
{
|
|
17106
17203
|
"name": "event_automation_mapping",
|
|
17107
17204
|
"type": "object",
|
|
17108
17205
|
"location": "body",
|
|
17109
17206
|
"required": false,
|
|
17110
|
-
"description": "Mapeamento de evento para automacao a disparar (dentro de custom_webhook_integration). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal."
|
|
17207
|
+
"description": "Mapeamento de evento para automacao a disparar (dentro de custom_webhook_integration). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal. FORMATO: {\"<valor do campo de evento (event_field) no payload>\": {\"automation_id\": 12, \"flow_id\": null}}, ou {\"__all__\": {...}} para qualquer evento (o __all__ vence os demais). Cada valor e um OBJETO. SUBSTITUI o mapa inteiro: leia com a ferramenta show e reenvie tudo."
|
|
17111
17208
|
},
|
|
17112
17209
|
{
|
|
17113
17210
|
"name": "sample_payload",
|
|
@@ -17302,7 +17399,7 @@
|
|
|
17302
17399
|
"type": "object",
|
|
17303
17400
|
"location": "body",
|
|
17304
17401
|
"required": false,
|
|
17305
|
-
"description": "Mapeamento de evento para automacao (dentro de guru_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal."
|
|
17402
|
+
"description": "Mapeamento de evento para automacao (dentro de guru_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal. FORMATO: {\"<evento>\": {automation_id, flow_id, first_purchase_only}} — cada valor e um OBJETO; first_purchase_only e booleano de verdade (true/false, texto 'true' nao vale) e pula renovacoes. Ex.: {\"approved\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": true}}. Eventos do Guru (maiuscula/minuscula tanto faz): transacao: approved, waiting_payment, abandoned, refused, canceled, expired, refunded, chargeback, pix_generated, boleto_printed, in_analysis, recovery, trial; assinatura: active, trial, past_due, unpaid, canceled, expired; ingresso: invited, confirmed, checked_in, canceled. Ids de automacao/fluxo de outra conta = 400."
|
|
17306
17403
|
}
|
|
17307
17404
|
],
|
|
17308
17405
|
"returns": "webhook criado (com novo ID)",
|
|
@@ -17407,7 +17504,7 @@
|
|
|
17407
17504
|
"type": "object",
|
|
17408
17505
|
"location": "body",
|
|
17409
17506
|
"required": false,
|
|
17410
|
-
"description": "Mapeamento de evento para automacao (dentro de guru_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal."
|
|
17507
|
+
"description": "Mapeamento de evento para automacao (dentro de guru_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal. FORMATO: {\"<evento>\": {automation_id, flow_id, first_purchase_only}} — cada valor e um OBJETO; first_purchase_only e booleano de verdade (true/false, texto 'true' nao vale) e pula renovacoes. Ex.: {\"approved\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": true}}. Eventos do Guru (maiuscula/minuscula tanto faz): transacao: approved, waiting_payment, abandoned, refused, canceled, expired, refunded, chargeback, pix_generated, boleto_printed, in_analysis, recovery, trial; assinatura: active, trial, past_due, unpaid, canceled, expired; ingresso: invited, confirmed, checked_in, canceled. Ids de automacao/fluxo de outra conta = 400. SUBSTITUI o mapa inteiro: leia com a ferramenta show e reenvie todos os eventos."
|
|
17411
17508
|
}
|
|
17412
17509
|
],
|
|
17413
17510
|
"returns": "webhook atualizado",
|
|
@@ -17616,7 +17713,7 @@
|
|
|
17616
17713
|
"type": "object",
|
|
17617
17714
|
"location": "body",
|
|
17618
17715
|
"required": false,
|
|
17619
|
-
"description": "Mapeamento de evento para automacao (dentro de hotmart_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal."
|
|
17716
|
+
"description": "Mapeamento de evento para automacao (dentro de hotmart_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal. FORMATO: {\"<evento>\": {automation_id, flow_id, first_purchase_only}} — cada valor e um OBJETO; first_purchase_only e booleano de verdade (true/false, texto 'true' nao vale) e pula renovacoes. Ex.: {\"PURCHASE_APPROVED\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": true}}. Eventos do Hotmart (maiuscula/minuscula tanto faz): PURCHASE_APPROVED, PURCHASE_COMPLETE, PURCHASE_BILLET_PRINTED, PURCHASE_CANCELED, PURCHASE_REFUNDED, PURCHASE_CHARGEBACK, PURCHASE_EXPIRED, PURCHASE_DELAYED, PURCHASE_PROTEST, SUBSCRIPTION_CANCELLATION, SWITCH_PLAN, UPDATE_SUBSCRIPTION_CHARGE_DATE, CLUB_FIRST_ACCESS, CLUB_MODULE_COMPLETED, PURCHASE_OUT_OF_SHOPPING_CART. Ids de automacao/fluxo de outra conta = 400."
|
|
17620
17717
|
}
|
|
17621
17718
|
],
|
|
17622
17719
|
"returns": "webhook criado (com novo ID)",
|
|
@@ -17714,7 +17811,7 @@
|
|
|
17714
17811
|
"type": "object",
|
|
17715
17812
|
"location": "body",
|
|
17716
17813
|
"required": false,
|
|
17717
|
-
"description": "Mapeamento de evento para automacao (dentro de hotmart_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal."
|
|
17814
|
+
"description": "Mapeamento de evento para automacao (dentro de hotmart_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal. FORMATO: {\"<evento>\": {automation_id, flow_id, first_purchase_only}} — cada valor e um OBJETO; first_purchase_only e booleano de verdade (true/false, texto 'true' nao vale) e pula renovacoes. Ex.: {\"PURCHASE_APPROVED\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": true}}. Eventos do Hotmart (maiuscula/minuscula tanto faz): PURCHASE_APPROVED, PURCHASE_COMPLETE, PURCHASE_BILLET_PRINTED, PURCHASE_CANCELED, PURCHASE_REFUNDED, PURCHASE_CHARGEBACK, PURCHASE_EXPIRED, PURCHASE_DELAYED, PURCHASE_PROTEST, SUBSCRIPTION_CANCELLATION, SWITCH_PLAN, UPDATE_SUBSCRIPTION_CHARGE_DATE, CLUB_FIRST_ACCESS, CLUB_MODULE_COMPLETED, PURCHASE_OUT_OF_SHOPPING_CART. Ids de automacao/fluxo de outra conta = 400. SUBSTITUI o mapa inteiro: leia com a ferramenta show e reenvie todos os eventos."
|
|
17718
17815
|
}
|
|
17719
17816
|
],
|
|
17720
17817
|
"returns": "webhook atualizado",
|
|
@@ -17923,7 +18020,7 @@
|
|
|
17923
18020
|
"type": "object",
|
|
17924
18021
|
"location": "body",
|
|
17925
18022
|
"required": false,
|
|
17926
|
-
"description": "Mapeamento de evento para automacao (dentro de kiwify_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal."
|
|
18023
|
+
"description": "Mapeamento de evento para automacao (dentro de kiwify_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal. FORMATO: {\"<evento>\": {automation_id, flow_id, first_purchase_only}} — cada valor e um OBJETO; first_purchase_only e booleano de verdade (true/false, texto 'true' nao vale) e pula renovacoes. Ex.: {\"compra_aprovada\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": true}}. Eventos do Kiwify (maiuscula/minuscula tanto faz): compra_aprovada, compra_recusada, compra_reembolsada, chargeback, boleto_gerado, pix_gerado, carrinho_abandonado, subscription_renewed, subscription_canceled, subscription_late. Ids de automacao/fluxo de outra conta = 400."
|
|
17927
18024
|
}
|
|
17928
18025
|
],
|
|
17929
18026
|
"returns": "webhook criado (com novo ID)",
|
|
@@ -18021,7 +18118,7 @@
|
|
|
18021
18118
|
"type": "object",
|
|
18022
18119
|
"location": "body",
|
|
18023
18120
|
"required": false,
|
|
18024
|
-
"description": "Mapeamento de evento para automacao (dentro de kiwify_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal."
|
|
18121
|
+
"description": "Mapeamento de evento para automacao (dentro de kiwify_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal. FORMATO: {\"<evento>\": {automation_id, flow_id, first_purchase_only}} — cada valor e um OBJETO; first_purchase_only e booleano de verdade (true/false, texto 'true' nao vale) e pula renovacoes. Ex.: {\"compra_aprovada\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": true}}. Eventos do Kiwify (maiuscula/minuscula tanto faz): compra_aprovada, compra_recusada, compra_reembolsada, chargeback, boleto_gerado, pix_gerado, carrinho_abandonado, subscription_renewed, subscription_canceled, subscription_late. Ids de automacao/fluxo de outra conta = 400. SUBSTITUI o mapa inteiro: leia com a ferramenta show e reenvie todos os eventos."
|
|
18025
18122
|
}
|
|
18026
18123
|
],
|
|
18027
18124
|
"returns": "webhook atualizado",
|
|
@@ -18230,7 +18327,7 @@
|
|
|
18230
18327
|
"type": "object",
|
|
18231
18328
|
"location": "body",
|
|
18232
18329
|
"required": false,
|
|
18233
|
-
"description": "Mapeamento de evento para automacao (dentro de ticto_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal."
|
|
18330
|
+
"description": "Mapeamento de evento para automacao (dentro de ticto_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal. FORMATO: {\"<evento>\": {automation_id, flow_id, first_purchase_only}} — cada valor e um OBJETO; first_purchase_only e booleano de verdade (true/false, texto 'true' nao vale) e pula renovacoes. Ex.: {\"authorized\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": true}}. Eventos do Ticto (maiuscula/minuscula tanto faz): authorized, refused, refunded, chargeback, claimed, close, waiting_payment, bank_slip_created, bank_slip_delayed, pix_created, pix_expired, abandoned_cart, trial, trial_started, trial_ended, subscription_canceled, subscription_delayed, all_charges_paid, card_exchanged, extended, uncanceled. Ids de automacao/fluxo de outra conta = 400."
|
|
18234
18331
|
}
|
|
18235
18332
|
],
|
|
18236
18333
|
"returns": "webhook criado (com novo ID)",
|
|
@@ -18328,7 +18425,7 @@
|
|
|
18328
18425
|
"type": "object",
|
|
18329
18426
|
"location": "body",
|
|
18330
18427
|
"required": false,
|
|
18331
|
-
"description": "Mapeamento de evento para automacao (dentro de ticto_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal."
|
|
18428
|
+
"description": "Mapeamento de evento para automacao (dentro de ticto_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal. FORMATO: {\"<evento>\": {automation_id, flow_id, first_purchase_only}} — cada valor e um OBJETO; first_purchase_only e booleano de verdade (true/false, texto 'true' nao vale) e pula renovacoes. Ex.: {\"authorized\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": true}}. Eventos do Ticto (maiuscula/minuscula tanto faz): authorized, refused, refunded, chargeback, claimed, close, waiting_payment, bank_slip_created, bank_slip_delayed, pix_created, pix_expired, abandoned_cart, trial, trial_started, trial_ended, subscription_canceled, subscription_delayed, all_charges_paid, card_exchanged, extended, uncanceled. Ids de automacao/fluxo de outra conta = 400. SUBSTITUI o mapa inteiro: leia com a ferramenta show e reenvie todos os eventos."
|
|
18332
18429
|
}
|
|
18333
18430
|
],
|
|
18334
18431
|
"returns": "webhook atualizado",
|
|
@@ -18537,7 +18634,7 @@
|
|
|
18537
18634
|
"type": "object",
|
|
18538
18635
|
"location": "body",
|
|
18539
18636
|
"required": false,
|
|
18540
|
-
"description": "Mapeamento de evento para automacao (dentro de eduzz_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal."
|
|
18637
|
+
"description": "Mapeamento de evento para automacao (dentro de eduzz_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal. FORMATO: {\"<evento>\": {automation_id, flow_id, first_purchase_only}} — cada valor e um OBJETO; first_purchase_only e booleano de verdade (true/false, texto 'true' nao vale) e pula renovacoes. Ex.: {\"myeduzz.invoice_paid\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": true}}. Eventos do Eduzz (maiuscula/minuscula tanto faz): myeduzz.invoice_paid, myeduzz.invoice_canceled, myeduzz.invoice_refunded, myeduzz.invoice_waiting_refund, myeduzz.invoice_refused, myeduzz.invoice_expired, myeduzz.invoice_overdue, myeduzz.invoice_opened, myeduzz.invoice_waiting_payment, myeduzz.invoice_scheduled, sun.cart_abandonment, myeduzz.contract_created, myeduzz.contract_updated, myeduzz.contract_card_attempted. Ids de automacao/fluxo de outra conta = 400."
|
|
18541
18638
|
}
|
|
18542
18639
|
],
|
|
18543
18640
|
"returns": "webhook criado (com novo ID)",
|
|
@@ -18635,7 +18732,7 @@
|
|
|
18635
18732
|
"type": "object",
|
|
18636
18733
|
"location": "body",
|
|
18637
18734
|
"required": false,
|
|
18638
|
-
"description": "Mapeamento de evento para automacao (dentro de eduzz_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal."
|
|
18735
|
+
"description": "Mapeamento de evento para automacao (dentro de eduzz_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal. FORMATO: {\"<evento>\": {automation_id, flow_id, first_purchase_only}} — cada valor e um OBJETO; first_purchase_only e booleano de verdade (true/false, texto 'true' nao vale) e pula renovacoes. Ex.: {\"myeduzz.invoice_paid\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": true}}. Eventos do Eduzz (maiuscula/minuscula tanto faz): myeduzz.invoice_paid, myeduzz.invoice_canceled, myeduzz.invoice_refunded, myeduzz.invoice_waiting_refund, myeduzz.invoice_refused, myeduzz.invoice_expired, myeduzz.invoice_overdue, myeduzz.invoice_opened, myeduzz.invoice_waiting_payment, myeduzz.invoice_scheduled, sun.cart_abandonment, myeduzz.contract_created, myeduzz.contract_updated, myeduzz.contract_card_attempted. Ids de automacao/fluxo de outra conta = 400. SUBSTITUI o mapa inteiro: leia com a ferramenta show e reenvie todos os eventos."
|
|
18639
18736
|
}
|
|
18640
18737
|
],
|
|
18641
18738
|
"returns": "webhook atualizado",
|
|
@@ -18844,7 +18941,7 @@
|
|
|
18844
18941
|
"type": "object",
|
|
18845
18942
|
"location": "body",
|
|
18846
18943
|
"required": false,
|
|
18847
|
-
"description": "Mapeamento de evento para automacao (dentro de monetizze_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal."
|
|
18944
|
+
"description": "Mapeamento de evento para automacao (dentro de monetizze_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal. FORMATO: {\"<evento>\": {automation_id, flow_id, first_purchase_only}} — cada valor e um OBJETO; first_purchase_only e booleano de verdade (true/false, texto 'true' nao vale) e pula renovacoes. Ex.: {\"2\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": true}}. Eventos do Monetizze (maiuscula/minuscula tanto faz): codigo do evento como TEXTO — '1' aguardando pagamento, '2' compra aprovada, '3' cancelada, '4' reembolsada, '5' bloqueada, '6' completa, '7' carrinho abandonado, '101' assinatura ativa, '102' inadimplente, '103' cancelada, '104' aguardando pagamento. Ids de automacao/fluxo de outra conta = 400."
|
|
18848
18945
|
}
|
|
18849
18946
|
],
|
|
18850
18947
|
"returns": "webhook criado (com novo ID)",
|
|
@@ -18942,7 +19039,7 @@
|
|
|
18942
19039
|
"type": "object",
|
|
18943
19040
|
"location": "body",
|
|
18944
19041
|
"required": false,
|
|
18945
|
-
"description": "Mapeamento de evento para automacao (dentro de monetizze_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal."
|
|
19042
|
+
"description": "Mapeamento de evento para automacao (dentro de monetizze_webhook). ATENCAO (26/08/2026): conversation_attribute_keys foi REMOVIDA do produto — o backend ignora a chave se gravada. Atributo de conversa mapeado existe so no Meta Lead e no mapeamento de campos (field_mapping) do Webhook Universal. FORMATO: {\"<evento>\": {automation_id, flow_id, first_purchase_only}} — cada valor e um OBJETO; first_purchase_only e booleano de verdade (true/false, texto 'true' nao vale) e pula renovacoes. Ex.: {\"2\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": true}}. Eventos do Monetizze (maiuscula/minuscula tanto faz): codigo do evento como TEXTO — '1' aguardando pagamento, '2' compra aprovada, '3' cancelada, '4' reembolsada, '5' bloqueada, '6' completa, '7' carrinho abandonado, '101' assinatura ativa, '102' inadimplente, '103' cancelada, '104' aguardando pagamento. Ids de automacao/fluxo de outra conta = 400. SUBSTITUI o mapa inteiro: leia com a ferramenta show e reenvie todos os eventos."
|
|
18946
19043
|
}
|
|
18947
19044
|
],
|
|
18948
19045
|
"returns": "webhook atualizado",
|
|
@@ -19242,14 +19339,14 @@
|
|
|
19242
19339
|
"type": "object",
|
|
19243
19340
|
"location": "body",
|
|
19244
19341
|
"required": false,
|
|
19245
|
-
"description": "Mapeamento de campos (singular), dentro de form. Destino tambem pode ser conversation_attr_<chave> (2026-08-21): o atributo vai pra CONVERSA que a automacao/fluxo mapeado abrir pro lead (sem automacao/fluxo nao nasce conversa e o valor e descartado). Chaves reservadas (imported_from, type, in_reply_to...) sao recusadas; valor convertido pelo TIPO do atributo."
|
|
19342
|
+
"description": "Mapeamento de campos (singular), dentro de form. Destino tambem pode ser conversation_attr_<chave> (2026-08-21): o atributo vai pra CONVERSA que a automacao/fluxo mapeado abrir pro lead (sem automacao/fluxo nao nasce conversa e o valor e descartado). Chaves reservadas (imported_from, type, in_reply_to...) sao recusadas; valor convertido pelo TIPO do atributo. FORMATO: {\"<campo do lead>\": \"<destino>\"}, destino SEMPRE texto: contact_name, contact_email, contact_phone, contact_company, contact_city, contact_attr_<chave>, conversation_attr_<chave>, cadastral_<campo> (ex.: cadastral_cpf), social_<rede>. Ex.: {\"full_name\": \"contact_name\", \"phone_number\": \"contact_phone\", \"cidade\": \"contact_attr_cidade\"}. Destino fora da lista e ignorado. SUBSTITUI o mapa inteiro: leia com lionchat_meta_lead_show e reenvie tudo."
|
|
19246
19343
|
},
|
|
19247
19344
|
{
|
|
19248
19345
|
"name": "event_automation_mapping",
|
|
19249
19346
|
"type": "object",
|
|
19250
19347
|
"location": "body",
|
|
19251
19348
|
"required": false,
|
|
19252
|
-
"description": "
|
|
19349
|
+
"description": "Objeto com UMA chave fixa \"__all__\" (vale para todo lead do formulario), dentro de form: {\"__all__\": {\"automation_id\": 12, \"flow_id\": null}} — ou flow_id no lugar. O valor e um OBJETO: numero solto ({\"__all__\": 12}) NAO dispara nada. Ids precisam ser desta conta. SUBSTITUI o objeto inteiro."
|
|
19253
19350
|
}
|
|
19254
19351
|
],
|
|
19255
19352
|
"returns": "integração Meta Lead atualizado",
|
|
@@ -19417,21 +19514,21 @@
|
|
|
19417
19514
|
"type": "array",
|
|
19418
19515
|
"location": "body",
|
|
19419
19516
|
"required": false,
|
|
19420
|
-
"description": "Motivos de ganho
|
|
19517
|
+
"description": "Motivos de ganho (valem para TODOS os funis da conta). Formato: [{\"id\": \"ganho-indicacao\", \"title\": \"Indicacao\"}]. O id e TEXTO estavel (ex.: \"ganho-indicacao\"), nunca numero — numero e convertido para texto, mas mande texto. A lista SUBSTITUI a atual: leia antes com lionchat_kanban_config_list e reenvie os MESMOS id dos motivos que ja existem (trocar o id tira o nome dos cards ja marcados com ele). Recusado com 422: lista de textos soltos ([\"Preco\"]), motivo sem id, motivo sem title, id repetido. O servidor nao inventa id. [] limpa a lista."
|
|
19421
19518
|
},
|
|
19422
19519
|
{
|
|
19423
19520
|
"name": "kanban_config.loss_reasons",
|
|
19424
19521
|
"type": "array",
|
|
19425
19522
|
"location": "body",
|
|
19426
19523
|
"required": false,
|
|
19427
|
-
"description": "Motivos de perda
|
|
19524
|
+
"description": "Motivos de perda (valem para TODOS os funis da conta). Formato: [{\"id\": \"perda-preco\", \"title\": \"Preco alto\"}]. O id e TEXTO estavel (ex.: \"perda-preco\"), nunca numero — numero e convertido para texto, mas mande texto. A lista SUBSTITUI a atual: leia antes com lionchat_kanban_config_list e reenvie os MESMOS id dos motivos que ja existem (trocar o id tira o nome dos cards ja marcados com ele). Recusado com 422: lista de textos soltos ([\"Preco\"]), motivo sem id, motivo sem title, id repetido. O servidor nao inventa id. [] limpa a lista."
|
|
19428
19525
|
},
|
|
19429
19526
|
{
|
|
19430
19527
|
"name": "kanban_config.global_custom_attributes",
|
|
19431
19528
|
"type": "array",
|
|
19432
19529
|
"location": "body",
|
|
19433
19530
|
"required": false,
|
|
19434
|
-
"description": "
|
|
19531
|
+
"description": "LISTA de objetos [{name, type, is_list, list_values:[]}] — sao OS campos da aba Campos de todo card. Tipos que a tela cria: string (texto), number, date, boolean; is_list true + list_values = opcoes. Ex.: [{\"name\": \"Origem do Lead\", \"type\": \"string\", \"is_list\": true, \"list_values\": [\"Google\", \"Meta\"]}]. O valor de cada card mora em item_details.custom_attributes e casa por name+type."
|
|
19435
19532
|
},
|
|
19436
19533
|
{
|
|
19437
19534
|
"name": "kanban_config.config",
|
|
@@ -19501,21 +19598,21 @@
|
|
|
19501
19598
|
"type": "array",
|
|
19502
19599
|
"location": "body",
|
|
19503
19600
|
"required": false,
|
|
19504
|
-
"description": "Motivos de ganho
|
|
19601
|
+
"description": "Motivos de ganho (valem para TODOS os funis da conta). Formato: [{\"id\": \"ganho-indicacao\", \"title\": \"Indicacao\"}]. O id e TEXTO estavel (ex.: \"ganho-indicacao\"), nunca numero — numero e convertido para texto, mas mande texto. A lista SUBSTITUI a atual: leia antes com lionchat_kanban_config_list e reenvie os MESMOS id dos motivos que ja existem (trocar o id tira o nome dos cards ja marcados com ele). Recusado com 422: lista de textos soltos ([\"Preco\"]), motivo sem id, motivo sem title, id repetido. O servidor nao inventa id. [] limpa a lista."
|
|
19505
19602
|
},
|
|
19506
19603
|
{
|
|
19507
19604
|
"name": "kanban_config.loss_reasons",
|
|
19508
19605
|
"type": "array",
|
|
19509
19606
|
"location": "body",
|
|
19510
19607
|
"required": false,
|
|
19511
|
-
"description": "Motivos de perda
|
|
19608
|
+
"description": "Motivos de perda (valem para TODOS os funis da conta). Formato: [{\"id\": \"perda-preco\", \"title\": \"Preco alto\"}]. O id e TEXTO estavel (ex.: \"perda-preco\"), nunca numero — numero e convertido para texto, mas mande texto. A lista SUBSTITUI a atual: leia antes com lionchat_kanban_config_list e reenvie os MESMOS id dos motivos que ja existem (trocar o id tira o nome dos cards ja marcados com ele). Recusado com 422: lista de textos soltos ([\"Preco\"]), motivo sem id, motivo sem title, id repetido. O servidor nao inventa id. [] limpa a lista."
|
|
19512
19609
|
},
|
|
19513
19610
|
{
|
|
19514
19611
|
"name": "kanban_config.global_custom_attributes",
|
|
19515
19612
|
"type": "array",
|
|
19516
19613
|
"location": "body",
|
|
19517
19614
|
"required": false,
|
|
19518
|
-
"description": "
|
|
19615
|
+
"description": "LISTA de objetos [{name, type, is_list, list_values:[]}] — sao OS campos da aba Campos de todo card. Tipos que a tela cria: string (texto), number, date, boolean; is_list true + list_values = opcoes. Ex.: [{\"name\": \"Origem do Lead\", \"type\": \"string\", \"is_list\": true, \"list_values\": [\"Google\", \"Meta\"]}]. O valor de cada card mora em item_details.custom_attributes e casa por name+type. SUBSTITUI a lista inteira: leia com lionchat_kanban_config_list e reenvie todos os campos (campo removido some da aba de todos os cards)."
|
|
19519
19616
|
},
|
|
19520
19617
|
{
|
|
19521
19618
|
"name": "kanban_config.config",
|
|
@@ -20900,7 +20997,8 @@
|
|
|
20900
20997
|
"related_tools": [
|
|
20901
20998
|
"lionchat_agent_availability_update",
|
|
20902
20999
|
"lionchat_agent_availability_list_1",
|
|
20903
|
-
"lionchat_agent_availability_list_2"
|
|
21000
|
+
"lionchat_agent_availability_list_2",
|
|
21001
|
+
"lionchat_agent_availability_day"
|
|
20904
21002
|
]
|
|
20905
21003
|
},
|
|
20906
21004
|
{
|
|
@@ -20963,7 +21061,8 @@
|
|
|
20963
21061
|
"related_tools": [
|
|
20964
21062
|
"lionchat_agent_availability_list",
|
|
20965
21063
|
"lionchat_agent_availability_update",
|
|
20966
|
-
"lionchat_agent_availability_list_2"
|
|
21064
|
+
"lionchat_agent_availability_list_2",
|
|
21065
|
+
"lionchat_agent_availability_day"
|
|
20967
21066
|
]
|
|
20968
21067
|
},
|
|
20969
21068
|
{
|
|
@@ -20991,7 +21090,67 @@
|
|
|
20991
21090
|
"related_tools": [
|
|
20992
21091
|
"lionchat_agent_availability_list",
|
|
20993
21092
|
"lionchat_agent_availability_update",
|
|
20994
|
-
"lionchat_agent_availability_list_1"
|
|
21093
|
+
"lionchat_agent_availability_list_1",
|
|
21094
|
+
"lionchat_agent_availability_day"
|
|
21095
|
+
]
|
|
21096
|
+
},
|
|
21097
|
+
{
|
|
21098
|
+
"id": "lionchat_agent_availability_day",
|
|
21099
|
+
"method": "GET",
|
|
21100
|
+
"path": "/api/v1/accounts/{account_id}/agent_availability/day",
|
|
21101
|
+
"title": "Ver Como Esta o Dia (expediente + horarios ocupados)",
|
|
21102
|
+
"description": "Resumo de UM dia de ate 6 pessoas da conta, para escolher horario de um compromisso COMUM sem marcar no escuro: expediente de cada pessoa e os intervalos ja ocupados, tudo em 'HH:MM' do fuso pedido. E o mesmo dado do quadro 'Escolha o dia e veja os horarios' da janela Nova tarefa. PRIVACIDADE: o INTERVALO ocupado de qualquer pessoa da conta vem sempre (e o que permite marcar algo com um colega); `title`/`task_id` so vem para quem ja veria o compromisso no calendario (proprio/responsavel, agenda publica do dono, administrador) — compromisso PRIVADO de outra pessoa nunca vem com titulo (`title_visible: false`). Sem `user_ids` = o proprio usuario do token. Feriados do dia vem em `holidays` (filtrados por `agenda_id` quando informado). Para agendamento por BOOKING nao use esta: os horarios validos sao os de `lionchat_booking_event_types_slots` (respeitam duracao, intervalo e antecedencia do tipo de evento). `date` ausente ou invalida = 400.",
|
|
21103
|
+
"category": "Disponibilidade",
|
|
21104
|
+
"params": [
|
|
21105
|
+
{
|
|
21106
|
+
"name": "date",
|
|
21107
|
+
"type": "string",
|
|
21108
|
+
"location": "query",
|
|
21109
|
+
"required": true,
|
|
21110
|
+
"description": "Dia no formato YYYY-MM-DD"
|
|
21111
|
+
},
|
|
21112
|
+
{
|
|
21113
|
+
"name": "user_ids",
|
|
21114
|
+
"type": "array",
|
|
21115
|
+
"location": "query",
|
|
21116
|
+
"required": false,
|
|
21117
|
+
"query_name": "user_ids[]",
|
|
21118
|
+
"description": "IDs das pessoas (ate 6, so gente DA CONTA). Vazio = o proprio usuario do token"
|
|
21119
|
+
},
|
|
21120
|
+
{
|
|
21121
|
+
"name": "timezone",
|
|
21122
|
+
"type": "string",
|
|
21123
|
+
"location": "query",
|
|
21124
|
+
"required": false,
|
|
21125
|
+
"description": "Fuso IANA em que os horarios devem voltar (ex.: America/Sao_Paulo). Invalido/ausente = fuso da conta"
|
|
21126
|
+
},
|
|
21127
|
+
{
|
|
21128
|
+
"name": "agenda_id",
|
|
21129
|
+
"type": "integer",
|
|
21130
|
+
"location": "query",
|
|
21131
|
+
"required": false,
|
|
21132
|
+
"description": "ID da agenda (unidade) — filtra os feriados por agenda"
|
|
21133
|
+
},
|
|
21134
|
+
{
|
|
21135
|
+
"name": "excluding_task_id",
|
|
21136
|
+
"type": "integer",
|
|
21137
|
+
"location": "query",
|
|
21138
|
+
"required": false,
|
|
21139
|
+
"description": "Ao REMARCAR: ID da propria tarefa, para ela nao contar como horario ocupado"
|
|
21140
|
+
}
|
|
21141
|
+
],
|
|
21142
|
+
"returns": "{ date, timezone, holidays: [{ name, all_day, start, end }], people: [{ user_id, name, color, working_hours: [{ start, end }], busy: [{ start, end, title_visible, title, task_id, readonly }] }] } — horarios em 'HH:MM' no fuso devolvido em `timezone`",
|
|
21143
|
+
"common_use_cases": [
|
|
21144
|
+
"Antes de criar uma tarefa/reuniao, ver se a pessoa esta livre naquele dia e em que horarios",
|
|
21145
|
+
"Achar um horario em que dois ou mais colegas estao livres ao mesmo tempo",
|
|
21146
|
+
"Ao remarcar, conferir o dia novo sem contar a propria tarefa como ocupada (excluding_task_id)"
|
|
21147
|
+
],
|
|
21148
|
+
"related_tools": [
|
|
21149
|
+
"lionchat_agent_availability_list",
|
|
21150
|
+
"lionchat_agent_availability_list_1",
|
|
21151
|
+
"lionchat_agent_availability_list_2",
|
|
21152
|
+
"lionchat_tasks_create",
|
|
21153
|
+
"lionchat_booking_event_types_slots"
|
|
20995
21154
|
]
|
|
20996
21155
|
},
|
|
20997
21156
|
{
|
|
@@ -21761,7 +21920,7 @@
|
|
|
21761
21920
|
"type": "array",
|
|
21762
21921
|
"location": "body",
|
|
21763
21922
|
"required": false,
|
|
21764
|
-
"description": "Lista de secoes do publico-alvo (uniao/intersecao conforme audience_mode). Sao 7 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: []} (responsavel atual OU time da conversa). 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."
|
|
21923
|
+
"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 7 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). 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."
|
|
21765
21924
|
},
|
|
21766
21925
|
{
|
|
21767
21926
|
"name": "audience_mode",
|
|
@@ -21810,7 +21969,7 @@
|
|
|
21810
21969
|
"type": "object",
|
|
21811
21970
|
"location": "body",
|
|
21812
21971
|
"required": false,
|
|
21813
|
-
"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 7 tipos do audience, inclusive o `operator` nas secoes de atributo."
|
|
21972
|
+
"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 7 tipos do audience, inclusive o `operator` nas secoes de atributo. A exclusion e LISTA de objetos (objeto unico vira lista de um; texto e recusado com 422)."
|
|
21814
21973
|
},
|
|
21815
21974
|
{
|
|
21816
21975
|
"name": "template_params",
|
|
@@ -21896,7 +22055,7 @@
|
|
|
21896
22055
|
"type": "array",
|
|
21897
22056
|
"location": "body",
|
|
21898
22057
|
"required": false,
|
|
21899
|
-
"description": "Lista de secoes do publico-alvo (uniao/intersecao conforme audience_mode). Sao 7 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: []} (responsavel atual OU time da conversa). 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."
|
|
22058
|
+
"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 7 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). 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."
|
|
21900
22059
|
},
|
|
21901
22060
|
{
|
|
21902
22061
|
"name": "audience_mode",
|
|
@@ -21994,7 +22153,7 @@
|
|
|
21994
22153
|
"type": "array",
|
|
21995
22154
|
"location": "body",
|
|
21996
22155
|
"required": true,
|
|
21997
|
-
"description": "Lista de secoes do publico-alvo (uniao/intersecao conforme audience_mode). Sao 7 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: []} (responsavel atual OU time da conversa). 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."
|
|
22156
|
+
"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 7 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). 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."
|
|
21998
22157
|
},
|
|
21999
22158
|
{
|
|
22000
22159
|
"name": "audience_mode",
|
|
@@ -22015,7 +22174,7 @@
|
|
|
22015
22174
|
"type": "array",
|
|
22016
22175
|
"location": "body",
|
|
22017
22176
|
"required": false,
|
|
22018
|
-
"description": "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)."
|
|
22177
|
+
"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."
|
|
22019
22178
|
}
|
|
22020
22179
|
],
|
|
22021
22180
|
"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.",
|
|
@@ -24250,7 +24409,7 @@
|
|
|
24250
24409
|
"type": "object",
|
|
24251
24410
|
"location": "body",
|
|
24252
24411
|
"required": false,
|
|
24253
|
-
"description": "Mapa {
|
|
24412
|
+
"description": "Mapa {<evento>: '<recurso COMPLETO da acao de conversao>'}. O VALOR e o recurso inteiro, nunca so o numero: 'customers/<customer_id sem hifen>/conversionActions/<id da acao>'. Ex.: {\"Lead\": \"customers/1234567890/conversionActions/987654321\", \"Purchase\": \"customers/1234567890/conversionActions/987654322\"}. Pegue o valor pronto no campo resource_name de lionchat_google_ads_integrations_list_conversion_actions. O valor vai CRU pro Google: numero solto e recusado la, e 10 recusas travam a integracao por 1h. Eventos da tela: Lead, Purchase, Contact, CompleteRegistration, Subscribe, Schedule (a acao send_conversion do fluxo so aceita nome que esteja neste mapa). O update SUBSTITUI o mapa inteiro: leia antes com lionchat_google_ads_integrations_show e reenvie TODOS os eventos."
|
|
24254
24413
|
}
|
|
24255
24414
|
],
|
|
24256
24415
|
"returns": "{ id, ... }",
|
|
@@ -24387,7 +24546,7 @@
|
|
|
24387
24546
|
"type": "object",
|
|
24388
24547
|
"location": "body",
|
|
24389
24548
|
"required": false,
|
|
24390
|
-
"description": "Mapa de
|
|
24549
|
+
"description": "Mapa {<evento>: {automation_id, flow_id, first_purchase_only}} — cada valor e um OBJETO so com essas 3 chaves (outra chave ou valor que nao seja objeto = 422). Ex.: {\"pagamento_confirmado\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": false}}. Eventos: cobranca_criada, vencimento_7d, vencimento_3d, vencimento_1d, vencimento_hoje, vencido, vencido_3d, vencido_7d, vencido_15d, vencido_30d, pagamento_confirmado, pagamento_parcial, cancelado, renegociado. ACHADO 18/09 (lendo o codigo, nao conferido no banco): o disparo compara o mapa com o STATUS da parcela, e nao com o nome do evento — o mapeamento pode nao acionar nada; confira em lionchat_conta_azul_integrations_events antes de prometer ao cliente."
|
|
24391
24550
|
}
|
|
24392
24551
|
],
|
|
24393
24552
|
"returns": "{ id, status: 'pending' } (201)",
|
|
@@ -24425,7 +24584,7 @@
|
|
|
24425
24584
|
"type": "object",
|
|
24426
24585
|
"location": "body",
|
|
24427
24586
|
"required": false,
|
|
24428
|
-
"description": "
|
|
24587
|
+
"description": "Mapa {<evento>: {automation_id, flow_id, first_purchase_only}} — cada valor e um OBJETO so com essas 3 chaves (outra chave ou valor que nao seja objeto = 422). Ex.: {\"pagamento_confirmado\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": false}}. Eventos: cobranca_criada, vencimento_7d, vencimento_3d, vencimento_1d, vencimento_hoje, vencido, vencido_3d, vencido_7d, vencido_15d, vencido_30d, pagamento_confirmado, pagamento_parcial, cancelado, renegociado. ACHADO 18/09 (lendo o codigo, nao conferido no banco): o disparo compara o mapa com o STATUS da parcela, e nao com o nome do evento — o mapeamento pode nao acionar nada; confira em lionchat_conta_azul_integrations_events antes de prometer ao cliente. O update SUBSTITUI o mapa inteiro: leia com lionchat_conta_azul_integrations_show e reenvie tudo."
|
|
24429
24588
|
}
|
|
24430
24589
|
],
|
|
24431
24590
|
"returns": "{ id, ... }",
|
|
@@ -24646,14 +24805,14 @@
|
|
|
24646
24805
|
"type": "array",
|
|
24647
24806
|
"location": "body",
|
|
24648
24807
|
"required": false,
|
|
24649
|
-
"description": "
|
|
24808
|
+
"description": "LISTA de textos. Valores aceitos (em portugues): recebimentos, pagamentos, vendas, os, contratos, clientes, fiscais. Ex.: [\"recebimentos\", \"vendas\"]. Outro valor (ex.: receivables, sales) = 422."
|
|
24650
24809
|
},
|
|
24651
24810
|
{
|
|
24652
24811
|
"name": "event_mapping",
|
|
24653
24812
|
"type": "object",
|
|
24654
24813
|
"location": "body",
|
|
24655
24814
|
"required": false,
|
|
24656
|
-
"description": "Mapa de
|
|
24815
|
+
"description": "Mapa AGRUPADO POR CATEGORIA: {<categoria>: {<evento>: {automation_id, flow_id, first_purchase_only}}}. Ex.: {\"recebimentos\": {\"pagamento_confirmado\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": false}}}. Cada valor e um OBJETO so com essas 3 chaves (outra chave, categoria fora da lista ou valor que nao seja objeto = 422). Eventos por categoria — recebimentos: cobranca_criada, boleto_gerado, pix_gerado, vencimento_3d, vencimento_1d, pagamento_confirmado, cobranca_vencida, cobranca_cancelada; pagamentos: despesa_criada, despesa_paga, despesa_vencida, despesa_cancelada; vendas: pedido_criado, pedido_faturado, pedido_cancelado, pedido_etapa_alterada; os: os_criada, os_faturada, os_concluida, os_cancelada; contratos: contrato_criado, contrato_faturado, contrato_cancelado; clientes: cliente_cadastrado, fornecedor_cadastrado; fiscais: nfe_autorizada, nfe_cancelada, nfse_emitida, nfse_cancelada. ACHADO 18/09 (lendo o codigo, em conserto): o disparo procura o mapa pelo STATUS do titulo, e nao por categoria+evento — hoje este mapeamento pode nao acionar nada; confira em lionchat_omie_integrations_events antes de prometer o disparo ao cliente."
|
|
24657
24816
|
}
|
|
24658
24817
|
],
|
|
24659
24818
|
"returns": "{ id, status } (201)",
|
|
@@ -24705,14 +24864,14 @@
|
|
|
24705
24864
|
"type": "array",
|
|
24706
24865
|
"location": "body",
|
|
24707
24866
|
"required": false,
|
|
24708
|
-
"description": "
|
|
24867
|
+
"description": "LISTA de textos. Valores aceitos (em portugues): recebimentos, pagamentos, vendas, os, contratos, clientes, fiscais. Ex.: [\"recebimentos\", \"vendas\"]. Outro valor (ex.: receivables, sales) = 422. SUBSTITUI a lista inteira — para ligar/desligar UMA categoria use lionchat_omie_integrations_toggle_category."
|
|
24709
24868
|
},
|
|
24710
24869
|
{
|
|
24711
24870
|
"name": "event_mapping",
|
|
24712
24871
|
"type": "object",
|
|
24713
24872
|
"location": "body",
|
|
24714
24873
|
"required": false,
|
|
24715
|
-
"description": "
|
|
24874
|
+
"description": "Mapa AGRUPADO POR CATEGORIA: {<categoria>: {<evento>: {automation_id, flow_id, first_purchase_only}}}. Ex.: {\"recebimentos\": {\"pagamento_confirmado\": {\"automation_id\": 12, \"flow_id\": null, \"first_purchase_only\": false}}}. Cada valor e um OBJETO so com essas 3 chaves (outra chave, categoria fora da lista ou valor que nao seja objeto = 422). Eventos por categoria — recebimentos: cobranca_criada, boleto_gerado, pix_gerado, vencimento_3d, vencimento_1d, pagamento_confirmado, cobranca_vencida, cobranca_cancelada; pagamentos: despesa_criada, despesa_paga, despesa_vencida, despesa_cancelada; vendas: pedido_criado, pedido_faturado, pedido_cancelado, pedido_etapa_alterada; os: os_criada, os_faturada, os_concluida, os_cancelada; contratos: contrato_criado, contrato_faturado, contrato_cancelado; clientes: cliente_cadastrado, fornecedor_cadastrado; fiscais: nfe_autorizada, nfe_cancelada, nfse_emitida, nfse_cancelada. ACHADO 18/09 (lendo o codigo, em conserto): o disparo procura o mapa pelo STATUS do titulo, e nao por categoria+evento — hoje este mapeamento pode nao acionar nada; confira em lionchat_omie_integrations_events antes de prometer o disparo ao cliente. O update SUBSTITUI o mapa inteiro: leia com lionchat_omie_integrations_show e reenvie tudo."
|
|
24716
24875
|
}
|
|
24717
24876
|
],
|
|
24718
24877
|
"returns": "{ id, ... }",
|
|
@@ -24807,7 +24966,7 @@
|
|
|
24807
24966
|
"type": "string",
|
|
24808
24967
|
"location": "body",
|
|
24809
24968
|
"required": true,
|
|
24810
|
-
"description": "
|
|
24969
|
+
"description": "recebimentos | pagamentos | vendas | os | contratos | clientes | fiscais (em portugues; outro valor = 422)"
|
|
24811
24970
|
},
|
|
24812
24971
|
{
|
|
24813
24972
|
"name": "enabled",
|
|
@@ -25464,7 +25623,7 @@
|
|
|
25464
25623
|
"type": "object",
|
|
25465
25624
|
"location": "body",
|
|
25466
25625
|
"required": false,
|
|
25467
|
-
"description": "
|
|
25626
|
+
"description": "Objeto de configuracao do app. ATENCAO: SUBSTITUI o objeto inteiro — mandar so api_key APAGA fallback_api_keys e as demais chaves. Leia antes com lionchat_integrations_hooks_show e reenvie tudo. OpenAI: {\"api_key\": \"sk-...\", \"fallback_api_keys\": [\"sk-...\"]} (chaves revalidadas ao trocar)."
|
|
25468
25627
|
},
|
|
25469
25628
|
{
|
|
25470
25629
|
"name": "status",
|
|
@@ -25508,7 +25667,7 @@
|
|
|
25508
25667
|
"method": "GET",
|
|
25509
25668
|
"path": "/api/v1/accounts/{account_id}/eclinica_integrations",
|
|
25510
25669
|
"title": "Listar Integração e-Clínica",
|
|
25511
|
-
"description": "Lista a integração e-Clínica da conta (no máximo 1 por conta) com id, status e configurações. Use PRIMEIRO para descobrir o {id} exigido pelas ferramentas de histórico de lembretes. Eventos mapeáveis incluem (23/07) os novos cliente_inclusao_pagamento ('Inclusão de cobrança' — cobrança/carnê criado, ainda não pago; grava eclinica_ultima_cobranca_valor/vencimento/descricao no contato) e controle_laboratorio_novo ('Controle de laboratório' — grava eclinica_laboratorio_data_prevista/data_moldagem/data_entrega/situacao). O mapeamento evento→flow É EDITÁVEL via MCP desde 31/08/2026 — use lionchat_eclinica_integrations_update (ele SUBSTITUI o mapeamento inteiro: leia aqui primeiro e devolva completo). [2026-07-25] Cada linha de reminder_config traz agora event_type ('agendamento' padrao, 'controle_laboratorio_novo' para lembrete de laboratorio/medicacao, 'cliente_inclusao_pagamento' para lembrete de vencimento de cobranca), dispatch_time (hora do disparo, OBRIGATORIA: 'HH:MM' fixo ou formula Liquid com variavel de conta/contato) e o filtro opcional filter_field/filter_operator/filter_value. Os lembretes SAO editaveis via MCP desde 31/08/2026 — use lionchat_eclinica_integrations_update (ele SUBSTITUI a lista inteira: leia aqui primeiro e devolva completa). Cada unidade em units[] traz tambem settings {} (18/08). O atributo eclinica_cor (cor da agenda, hex com #) virou campo fresco dos lembretes: filtravel por filter_field e disponivel como variavel {{cor}}. LEMBRETE POR AUTOMACAO (25/08): cada entrada de reminder_config aceita `automation_id` alem do `flow_id` — pelo menos um dos dois (422 sem nenhum); com os DOIS preenchidos a AUTOMACAO vence no disparo. A automacao precisa ser da propria conta (422 senao). ALERTA de regra de negocio ao configurar: o caminho por automacao RODA AS ACOES SEM AVALIAR AS CONDICOES da automacao
|
|
25670
|
+
"description": "Lista a integração e-Clínica da conta (no máximo 1 por conta) com id, status e configurações. Use PRIMEIRO para descobrir o {id} exigido pelas ferramentas de histórico de lembretes. Eventos mapeáveis incluem (23/07) os novos cliente_inclusao_pagamento ('Inclusão de cobrança' — cobrança/carnê criado, ainda não pago; grava eclinica_ultima_cobranca_valor/vencimento/descricao no contato) e controle_laboratorio_novo ('Controle de laboratório' — grava eclinica_laboratorio_data_prevista/data_moldagem/data_entrega/situacao). O mapeamento evento→flow É EDITÁVEL via MCP desde 31/08/2026 — use lionchat_eclinica_integrations_update (ele SUBSTITUI o mapeamento inteiro: leia aqui primeiro e devolva completo). [2026-07-25] Cada linha de reminder_config traz agora event_type ('agendamento' padrao, 'controle_laboratorio_novo' para lembrete de laboratorio/medicacao, 'cliente_inclusao_pagamento' para lembrete de vencimento de cobranca), dispatch_time (hora do disparo, OBRIGATORIA: 'HH:MM' fixo ou formula Liquid com variavel de conta/contato) e o filtro opcional filter_field/filter_operator/filter_value. Os lembretes SAO editaveis via MCP desde 31/08/2026 — use lionchat_eclinica_integrations_update (ele SUBSTITUI a lista inteira: leia aqui primeiro e devolva completa). Cada unidade em units[] traz tambem settings {} (18/08). O atributo eclinica_cor (cor da agenda, hex com #) virou campo fresco dos lembretes: filtravel por filter_field e disponivel como variavel {{cor}}. LEMBRETE POR AUTOMACAO (25/08): cada entrada de reminder_config aceita `automation_id` alem do `flow_id` — pelo menos um dos dois (422 sem nenhum); com os DOIS preenchidos a AUTOMACAO vence no disparo. A automacao precisa ser da propria conta (422 senao). ALERTA de regra de negocio ao configurar: o caminho por automacao RODA AS ACOES SEM AVALIAR AS CONDICOES da automacao. Desde 17/09/2026 os DOIS caminhos (fluxo e automacao) mandam um aviso POR CONSULTA: paciente com duas consultas no dia (ou dois pacientes no mesmo celular) recebe um aviso para cada uma, ~10 min um do outro (fila por contato). Quem quer so um por dia monta no FLUXO (condicao num atributo com {{data_consulta}}); na automacao nao da, porque as condicoes dela nao sao avaliadas — avise o cliente antes de trocar fluxo por automacao.",
|
|
25512
25671
|
"category": "Integracoes",
|
|
25513
25672
|
"params": [],
|
|
25514
25673
|
"returns": "200 {payload: {eclinica_integrations: [...]}}",
|
|
@@ -25525,7 +25684,7 @@
|
|
|
25525
25684
|
"method": "GET",
|
|
25526
25685
|
"path": "/api/v1/accounts/{account_id}/eclinica_integrations/{id}/reminder_history",
|
|
25527
25686
|
"title": "Histórico dos Lembretes e-Clínica",
|
|
25528
|
-
"description": "Lista os disparos de lembrete agendados da integração e-Clínica (novo 23/07) — responde 'o lembrete do paciente X saiu?'. Cada item traz status (pending aguardando | fired enviado | cancelled | skipped pulado + skip_reason | failed falhou + fail_reason), datas (created_at recebido, fire_at agendado, fired_at disparado, data_consulta), flow_name, contact_name, compromisso e unidade. Somente administrador. [2026-07-25] O historico cobre os tres tipos de lembrete: consulta (conta a partir da data da consulta), laboratorio/medicacao (conta a partir da data prevista do laboratorio) e vencimento de cobranca (conta a partir do vencimento). O horario de cada disparo vem da 'Hora do disparo' configurada na linha do lembrete.",
|
|
25687
|
+
"description": "Lista os disparos de lembrete agendados da integração e-Clínica (novo 23/07) — responde 'o lembrete do paciente X saiu?'. Cada item traz status (pending aguardando | fired enviado | cancelled | skipped pulado + skip_reason | failed falhou + fail_reason), datas (created_at recebido, fire_at agendado, fired_at disparado, data_consulta), flow_name, contact_name, compromisso e unidade. Somente administrador. [2026-07-25] O historico cobre os tres tipos de lembrete: consulta (conta a partir da data da consulta), laboratorio/medicacao (conta a partir da data prevista do laboratorio) e vencimento de cobranca (conta a partir do vencimento). O horario de cada disparo vem da 'Hora do disparo' configurada na linha do lembrete. [2026-09-17] Um lembrete por CONSULTA: paciente com duas consultas no mesmo dia (ou duas pessoas no mesmo celular) recebe um lembrete para cada uma, com ~10 minutos entre eles — o que espera a vez aparece como pending com fire_at ja no passado por alguns minutos (normal, nao e erro). fail_reason = fluxo_ainda_em_andamento_com_este_contato: o fluxo do aviso anterior ainda rodava com o contato (tipico de fluxo que aguarda o paciente clicar num botao); pode ser reprocessado. fail_reason = nao_disparou: causa mais comum e contato sem telefone. skip_reason = outra_consulta_no_mesmo_dia so existe em linhas antigas (regra removida em 17/09).",
|
|
25529
25688
|
"category": "Integracoes",
|
|
25530
25689
|
"params": [
|
|
25531
25690
|
{
|
|
@@ -25603,7 +25762,8 @@
|
|
|
25603
25762
|
"common_use_cases": [
|
|
25604
25763
|
"Verificar se o lembrete de consulta de um paciente foi enviado",
|
|
25605
25764
|
"Listar lembretes que falharam para reprocessar",
|
|
25606
|
-
"Auditar os disparos agendados de um período"
|
|
25765
|
+
"Auditar os disparos agendados de um período",
|
|
25766
|
+
"Explicar por que um paciente com duas consultas no mesmo dia recebeu (ou ainda nao recebeu) o segundo lembrete"
|
|
25607
25767
|
],
|
|
25608
25768
|
"related_tools": [
|
|
25609
25769
|
"lionchat_eclinica_integrations_list",
|
|
@@ -25615,7 +25775,7 @@
|
|
|
25615
25775
|
"method": "POST",
|
|
25616
25776
|
"path": "/api/v1/accounts/{account_id}/eclinica_integrations/{id}/reminder_history/{firing_id}/reprocess",
|
|
25617
25777
|
"title": "Reprocessar Lembrete e-Clínica Falhado",
|
|
25618
|
-
"description": "Reprocessa UM lembrete com status failed (novo 23/07): volta para pending e dispara de novo. Só funciona em lembrete FALHADO — status diferente retorna 422; corrida (dois cliques) retorna 409. Somente administrador.",
|
|
25778
|
+
"description": "Reprocessa UM lembrete com status failed (novo 23/07): volta para pending e dispara de novo. Só funciona em lembrete FALHADO — status diferente retorna 422; corrida (dois cliques) retorna 409. Somente administrador. [2026-09-17] Serve tambem para o lembrete que falhou com fail_reason = fluxo_ainda_em_andamento_com_este_contato (o fluxo do aviso anterior ainda estava em andamento): se o paciente ja respondeu o primeiro aviso, o segundo sai; se ainda nao, falha de novo sem enviar mensagem. NAO usar em lembrete pending com horario passado ha poucos minutos — ele esta so esperando a vez e sai sozinho.",
|
|
25619
25779
|
"category": "Integracoes",
|
|
25620
25780
|
"params": [
|
|
25621
25781
|
{
|
|
@@ -25956,7 +26116,7 @@
|
|
|
25956
26116
|
"method": "PATCH",
|
|
25957
26117
|
"path": "/api/v1/accounts/{account_id}/inboxes/{id}",
|
|
25958
26118
|
"title": "Atualizar Caixa de Entrada",
|
|
25959
|
-
"description": "Atualiza configurações da caixa (nome, saudação, atribuição automática, atributos extras). MUDANÇA DE CONFIG — confirme com o usuário antes. additional_attributes.mark_as_seen (bool, default true,
|
|
26119
|
+
"description": "Atualiza configurações da caixa (nome, saudação, atribuição automática, atributos extras). MUDANÇA DE CONFIG — confirme com o usuário antes. channel.additional_attributes.mark_as_seen (bool, default true, WhatsApp oficial, 2026-06-11): envia o visto/check azul quando o agente abre a conversa — desligar em coexistência app+API. channel.additional_attributes SOMA no 1o nivel nas caixas de WhatsApp/Instagram/Facebook/TikTok (troca inteiro so na caixa de API); no QR Code mande SO as chaves da tela (accept_*, reject_calls, reject_calls_message, mark_as_seen) com true/false de verdade — o resto e interno do sistema. Email (sincronizacao de mao dupla, admin, via objeto channel): two_way_sync_enabled, sync_sent, sync_deletions, sync_read, delete_strategy. CAIXA OFICIAL CRIADA A MAO (26/08): channel.provider_config aceita phone_number_id, business_account_id e api_key — mas o objeto SUBSTITUI o salvo: SEMPRE mande o provider_config INTEIRO (leia o atual antes e reenvie tudo com o campo alterado), senao webhook_verify_token e a marca source sao APAGADOS em silencio e a caixa para de receber. Os 3 campos sao validados JUNTOS na Meta a cada gravacao (422 'Invalid Credentials' = algum dos tres errado ou chave vencida). O telefone da caixa e somente leitura.",
|
|
25960
26120
|
"category": "Caixas de Entrada",
|
|
25961
26121
|
"params": [
|
|
25962
26122
|
{
|
|
@@ -26002,11 +26162,25 @@
|
|
|
26002
26162
|
"description": "Bloco de configuracao da Distribuicao Automatica da propria caixa (29/07/2026): { assign_offline_agents (bool — distribuir tambem para quem esta offline), fair_distribution_limit (int — quantas conversas o robo entrega a cada atendente por janela), fair_distribution_window (int — tamanho da janela em SEGUNDOS) }. ATENCAO: o envio SUBSTITUI o bloco INTEIRO — reenvie as chaves que ja existem, senao elas somem. Chave fora dessas 3 e DESCARTADA em silencio (responde 200 e nada muda). Aqui `fair_distribution_limit: 0` E aceito e significa SEM FREIO (na Politica de Atribuicao o 0 e recusado). So vale quando a caixa NAO tem politica vinculada — com politica, este bloco e ignorado e a secao some da tela da caixa."
|
|
26003
26163
|
},
|
|
26004
26164
|
{
|
|
26005
|
-
"name": "additional_attributes",
|
|
26165
|
+
"name": "channel.additional_attributes",
|
|
26006
26166
|
"type": "object",
|
|
26007
26167
|
"location": "body",
|
|
26008
26168
|
"required": false,
|
|
26009
|
-
"description": "Atributos extras (
|
|
26169
|
+
"description": "Atributos extras do CANAL — vai DENTRO de channel (o nome antigo additional_attributes, fora de channel, era descartado pelo servidor). Nas caixas WhatsApp (QR Code e oficial), Instagram, Facebook e TikTok a gravacao SOMA no 1o nivel: so as chaves enviadas mudam. Na caixa de API o objeto e TROCADO inteiro. QR Code: so estas chaves sao da tela — accept_status, accept_groups, accept_channels, accept_broadcast, reject_calls, mark_as_seen (true/false de verdade, nunca \"false\" em texto) e reject_calls_message (texto); o resto (sessao, importacao, proxy, migracao, coex) e interno do sistema e NAO deve ser mandado. WhatsApp oficial: mark_as_seen (bool). Ex.: {\"accept_groups\": true, \"reject_calls\": false}."
|
|
26170
|
+
},
|
|
26171
|
+
{
|
|
26172
|
+
"name": "out_of_office_enabled",
|
|
26173
|
+
"type": "boolean",
|
|
26174
|
+
"location": "body",
|
|
26175
|
+
"required": false,
|
|
26176
|
+
"description": "Liga/desliga a mensagem de ausencia da caixa (fora do horario de atendimento)"
|
|
26177
|
+
},
|
|
26178
|
+
{
|
|
26179
|
+
"name": "out_of_office_message",
|
|
26180
|
+
"type": "string",
|
|
26181
|
+
"location": "body",
|
|
26182
|
+
"required": false,
|
|
26183
|
+
"description": "Texto da mensagem de ausencia"
|
|
26010
26184
|
}
|
|
26011
26185
|
],
|
|
26012
26186
|
"returns": "{ inbox }",
|
|
@@ -27133,10 +27307,10 @@
|
|
|
27133
27307
|
},
|
|
27134
27308
|
{
|
|
27135
27309
|
"name": "reassignments",
|
|
27136
|
-
"type": "
|
|
27310
|
+
"type": "array",
|
|
27137
27311
|
"location": "body",
|
|
27138
27312
|
"required": false,
|
|
27139
|
-
"description": "
|
|
27313
|
+
"description": "LISTA de objetos — cada item e um OBJETO {agent_id, funnel_id, target_agent_id}, um por (agente removido x funil). Ex.: [{\"agent_id\": 12, \"funnel_id\": 31, \"target_agent_id\": 5}]. Monte a partir de lionchat_team_members_kanban_reassignment_preview: para cada agente e cada funil da previa, escolha target_agent_id entre os eligible_targets. Funil com has_target=false dispensa item (os cards ficam sem dono). Destino ausente ou fora dos eligible_targets = 422 'reassignment_failed' e NADA e aplicado. Objeto unico no lugar da lista nao funciona."
|
|
27140
27314
|
}
|
|
27141
27315
|
],
|
|
27142
27316
|
"returns": "200 com o time atualizado | 422 { error: 'reassignment_failed', reason } (atômico — nada muda)",
|
|
@@ -27496,6 +27670,150 @@
|
|
|
27496
27670
|
"lionchat_kanban_items_list"
|
|
27497
27671
|
]
|
|
27498
27672
|
},
|
|
27673
|
+
{
|
|
27674
|
+
"id": "lionchat_kanban_sales_reconciliation_preview",
|
|
27675
|
+
"method": "POST",
|
|
27676
|
+
"path": "/api/v1/accounts/{account_id}/kanban_items/sales_reconciliation/preview",
|
|
27677
|
+
"title": "Conferir planilha de vendas",
|
|
27678
|
+
"description": "CONFERE uma planilha de vendas contra os cards de um funil e NAO GRAVA NADA. Devolve, linha a linha, o que aconteceria: completar um card aberto, so atualizar o valor de um card ja ganho, criar card pra quem nao tem, conferir a mao (card marcado como perdido) ou erro da linha. SEMPRE chame isto antes de `lionchat_kanban_sales_reconciliation_apply` e mostre o resumo pra pessoa confirmar. O MCP NAO sobe arquivo: mande as linhas da planilha em `rows` (lista de objetos). Se a pessoa anexar uma planilha na conversa, LEIA o arquivo e monte as linhas voce mesmo. Quem prefere a tela usa Kanban > botao azul + > Importar vendas. Cada item aceita: phone (obrigatorio, COM codigo do pais, ex.: 5511999887766), value (obrigatorio, valor da venda; aceita 1500, '1500,00', 'R$ 1.500,00'), sale_date (obrigatorio, data da VENDA; aceita '01/08/2026' ou '2026-08-01'), name, email, agent (nome ou e-mail do vendedor) e order_id.",
|
|
27679
|
+
"category": "Itens",
|
|
27680
|
+
"params": [
|
|
27681
|
+
{
|
|
27682
|
+
"name": "account_id",
|
|
27683
|
+
"type": "integer",
|
|
27684
|
+
"location": "path",
|
|
27685
|
+
"required": true,
|
|
27686
|
+
"description": "ID da conta"
|
|
27687
|
+
},
|
|
27688
|
+
{
|
|
27689
|
+
"name": "funnel_id",
|
|
27690
|
+
"type": "integer",
|
|
27691
|
+
"location": "body",
|
|
27692
|
+
"required": true,
|
|
27693
|
+
"description": "ID do funil onde os cards vivem"
|
|
27694
|
+
},
|
|
27695
|
+
{
|
|
27696
|
+
"name": "inbox_id",
|
|
27697
|
+
"type": "integer",
|
|
27698
|
+
"location": "body",
|
|
27699
|
+
"required": true,
|
|
27700
|
+
"description": "Caixa de entrada usada pra criar contato e conversa de quem ainda nao tem card"
|
|
27701
|
+
},
|
|
27702
|
+
{
|
|
27703
|
+
"name": "rows",
|
|
27704
|
+
"type": "array",
|
|
27705
|
+
"location": "body",
|
|
27706
|
+
"required": true,
|
|
27707
|
+
"description": "Linhas da planilha. Cada item aceita: phone (obrigatorio, COM codigo do pais, ex.: 5511999887766), value (obrigatorio, valor da venda; aceita 1500, '1500,00', 'R$ 1.500,00'), sale_date (obrigatorio, data da VENDA; aceita '01/08/2026' ou '2026-08-01'), name, email, agent (nome ou e-mail do vendedor) e order_id."
|
|
27708
|
+
}
|
|
27709
|
+
],
|
|
27710
|
+
"returns": "{ total, erros, conversoes, conversao_ligada, pos_venda, automacoes_de_ganho, responsavel, contagem: { completa, ja_ganho, cria, conferir, erro }, linhas: [...] } — nada e gravado.",
|
|
27711
|
+
"common_use_cases": [
|
|
27712
|
+
"Conferir a planilha do financeiro antes de aplicar",
|
|
27713
|
+
"Saber quantas vendas viram conversao e quantos cards de pos-venda nascem",
|
|
27714
|
+
"Achar as linhas com telefone sem codigo do pais"
|
|
27715
|
+
],
|
|
27716
|
+
"related_tools": [
|
|
27717
|
+
"lionchat_kanban_sales_reconciliation_apply",
|
|
27718
|
+
"lionchat_kanban_sales_reconciliation_status",
|
|
27719
|
+
"lionchat_funnels_list"
|
|
27720
|
+
]
|
|
27721
|
+
},
|
|
27722
|
+
{
|
|
27723
|
+
"id": "lionchat_kanban_sales_reconciliation_apply",
|
|
27724
|
+
"method": "POST",
|
|
27725
|
+
"path": "/api/v1/accounts/{account_id}/kanban_items/sales_reconciliation/apply",
|
|
27726
|
+
"title": "Aplicar planilha de vendas",
|
|
27727
|
+
"description": "APLICA a planilha de vendas: grava o valor no card e marca o GANHO com a DATA DA VENDA (nao com a data de hoje), pra o relatorio de faturamento contar a venda no mes certo. Card aberto e completado; card ja ganho recebe SO o valor (a data do ganho dele nao muda); card marcado como perdido nao e tocado. Roda em segundo plano — acompanhe com `lionchat_kanban_sales_reconciliation_status`. Rodar a mesma planilha duas vezes nao dobra valor nem cria card repetido. ATENCAO: `criar_sem_card: true` abre uma CONVERSA nova por card criado, e conversa nova aciona o que a conta tiver em 'Conversa criada' (automacao, fluxo, notificacao) — avise a pessoa antes de ligar isso numa planilha grande. O MCP NAO sobe arquivo: mande as linhas da planilha em `rows` (lista de objetos). Se a pessoa anexar uma planilha na conversa, LEIA o arquivo e monte as linhas voce mesmo. Quem prefere a tela usa Kanban > botao azul + > Importar vendas. Cada item aceita: phone (obrigatorio, COM codigo do pais, ex.: 5511999887766), value (obrigatorio, valor da venda; aceita 1500, '1500,00', 'R$ 1.500,00'), sale_date (obrigatorio, data da VENDA; aceita '01/08/2026' ou '2026-08-01'), name, email, agent (nome ou e-mail do vendedor) e order_id.",
|
|
27728
|
+
"category": "Itens",
|
|
27729
|
+
"params": [
|
|
27730
|
+
{
|
|
27731
|
+
"name": "account_id",
|
|
27732
|
+
"type": "integer",
|
|
27733
|
+
"location": "path",
|
|
27734
|
+
"required": true,
|
|
27735
|
+
"description": "ID da conta"
|
|
27736
|
+
},
|
|
27737
|
+
{
|
|
27738
|
+
"name": "funnel_id",
|
|
27739
|
+
"type": "integer",
|
|
27740
|
+
"location": "body",
|
|
27741
|
+
"required": true,
|
|
27742
|
+
"description": "ID do funil onde os cards vivem"
|
|
27743
|
+
},
|
|
27744
|
+
{
|
|
27745
|
+
"name": "inbox_id",
|
|
27746
|
+
"type": "integer",
|
|
27747
|
+
"location": "body",
|
|
27748
|
+
"required": true,
|
|
27749
|
+
"description": "Caixa de entrada usada pra criar contato e conversa de quem ainda nao tem card"
|
|
27750
|
+
},
|
|
27751
|
+
{
|
|
27752
|
+
"name": "rows",
|
|
27753
|
+
"type": "array",
|
|
27754
|
+
"location": "body",
|
|
27755
|
+
"required": true,
|
|
27756
|
+
"description": "Linhas da planilha. Cada item aceita: phone (obrigatorio, COM codigo do pais, ex.: 5511999887766), value (obrigatorio, valor da venda; aceita 1500, '1500,00', 'R$ 1.500,00'), sale_date (obrigatorio, data da VENDA; aceita '01/08/2026' ou '2026-08-01'), name, email, agent (nome ou e-mail do vendedor) e order_id."
|
|
27757
|
+
},
|
|
27758
|
+
{
|
|
27759
|
+
"name": "criar_sem_card",
|
|
27760
|
+
"type": "boolean",
|
|
27761
|
+
"location": "body",
|
|
27762
|
+
"required": false,
|
|
27763
|
+
"description": "Cria card (ja ganho) pra quem nao tem nenhum no funil. Padrao: false"
|
|
27764
|
+
},
|
|
27765
|
+
{
|
|
27766
|
+
"name": "stage",
|
|
27767
|
+
"type": "string",
|
|
27768
|
+
"location": "body",
|
|
27769
|
+
"required": false,
|
|
27770
|
+
"description": "Etapa onde o card novo nasce. Padrao: a primeira etapa do funil"
|
|
27771
|
+
}
|
|
27772
|
+
],
|
|
27773
|
+
"returns": "{ run_id, status: 'queued', total } — o trabalho roda em segundo plano",
|
|
27774
|
+
"common_use_cases": [
|
|
27775
|
+
"Fechar o mes com a planilha do financeiro",
|
|
27776
|
+
"Corrigir cards que o vendedor esqueceu de marcar como ganho",
|
|
27777
|
+
"Trazer o valor real da venda pro relatorio"
|
|
27778
|
+
],
|
|
27779
|
+
"related_tools": [
|
|
27780
|
+
"lionchat_kanban_sales_reconciliation_preview",
|
|
27781
|
+
"lionchat_kanban_sales_reconciliation_status"
|
|
27782
|
+
]
|
|
27783
|
+
},
|
|
27784
|
+
{
|
|
27785
|
+
"id": "lionchat_kanban_sales_reconciliation_status",
|
|
27786
|
+
"method": "GET",
|
|
27787
|
+
"path": "/api/v1/accounts/{account_id}/kanban_items/sales_reconciliation/status/{run_id}",
|
|
27788
|
+
"title": "Andamento da planilha de vendas",
|
|
27789
|
+
"description": "Acompanha a aplicacao de uma planilha de vendas ja enviada. O run_id vem de `lionchat_kanban_sales_reconciliation_apply`. Consulte de tempos em tempos ate o status virar 'completed' ou 'failed'. O registro vive 7 dias.",
|
|
27790
|
+
"category": "Itens",
|
|
27791
|
+
"params": [
|
|
27792
|
+
{
|
|
27793
|
+
"name": "account_id",
|
|
27794
|
+
"type": "integer",
|
|
27795
|
+
"location": "path",
|
|
27796
|
+
"required": true,
|
|
27797
|
+
"description": "ID da conta"
|
|
27798
|
+
},
|
|
27799
|
+
{
|
|
27800
|
+
"name": "run_id",
|
|
27801
|
+
"type": "string",
|
|
27802
|
+
"location": "path",
|
|
27803
|
+
"required": true,
|
|
27804
|
+
"description": "Codigo da rodada, devolvido pela aplicacao"
|
|
27805
|
+
}
|
|
27806
|
+
],
|
|
27807
|
+
"returns": "{ status, total, completados, valor_atualizado, criados, sem_mudanca, pulados, erros } — 'sem_mudanca' e a linha cujo card ja estava com aquele valor",
|
|
27808
|
+
"common_use_cases": [
|
|
27809
|
+
"Saber se a planilha terminou de ser aplicada",
|
|
27810
|
+
"Contar quantos cards foram completados e quantos foram criados"
|
|
27811
|
+
],
|
|
27812
|
+
"related_tools": [
|
|
27813
|
+
"lionchat_kanban_sales_reconciliation_apply",
|
|
27814
|
+
"lionchat_kanban_sales_reconciliation_preview"
|
|
27815
|
+
]
|
|
27816
|
+
},
|
|
27499
27817
|
{
|
|
27500
27818
|
"id": "lionchat_search_kanban_items",
|
|
27501
27819
|
"method": "GET",
|
|
@@ -28104,6 +28422,450 @@
|
|
|
28104
28422
|
"lionchat_captain_liquid_variables_list"
|
|
28105
28423
|
]
|
|
28106
28424
|
},
|
|
28425
|
+
{
|
|
28426
|
+
"id": "lionchat_captain_call_agents_list",
|
|
28427
|
+
"method": "GET",
|
|
28428
|
+
"path": "/api/v1/accounts/{account_id}/captain/call_agents",
|
|
28429
|
+
"title": "Listar Agentes de Ligacao",
|
|
28430
|
+
"description": "Agente de LIGACAO (area \"Agentes de ligacao\", separada dos agentes de texto desde 24/09/2026). Nao ocupa vaga de IA do plano. Exige Admin ou cargo com captain_manage. Devolve tambem meta.dial_inboxes: as caixas que podem fazer ligacao (LionCalls ligada).",
|
|
28431
|
+
"category": "Assistentes",
|
|
28432
|
+
"params": [],
|
|
28433
|
+
"returns": "{ payload: [agente de ligacao], meta: { dial_inboxes: [{id, name}] } }",
|
|
28434
|
+
"common_use_cases": [
|
|
28435
|
+
"Ver agentes de ligacao configurados",
|
|
28436
|
+
"Descobrir qual caixa pode ligar"
|
|
28437
|
+
],
|
|
28438
|
+
"related_tools": [
|
|
28439
|
+
"lionchat_captain_call_agents_list",
|
|
28440
|
+
"lionchat_captain_call_agents_update",
|
|
28441
|
+
"lionchat_captain_call_agents_test_call",
|
|
28442
|
+
"lionchat_captain_call_test_phones_list"
|
|
28443
|
+
]
|
|
28444
|
+
},
|
|
28445
|
+
{
|
|
28446
|
+
"id": "lionchat_captain_call_agents_show",
|
|
28447
|
+
"method": "GET",
|
|
28448
|
+
"path": "/api/v1/accounts/{account_id}/captain/call_agents/{id}",
|
|
28449
|
+
"title": "Ver Agente de Ligacao",
|
|
28450
|
+
"description": "Agente de LIGACAO (area \"Agentes de ligacao\", separada dos agentes de texto desde 24/09/2026). Nao ocupa vaga de IA do plano. Exige Admin ou cargo com captain_manage.",
|
|
28451
|
+
"category": "Assistentes",
|
|
28452
|
+
"params": [
|
|
28453
|
+
{
|
|
28454
|
+
"name": "id",
|
|
28455
|
+
"type": "integer",
|
|
28456
|
+
"location": "path",
|
|
28457
|
+
"required": true,
|
|
28458
|
+
"description": "ID do agente de ligacao"
|
|
28459
|
+
}
|
|
28460
|
+
],
|
|
28461
|
+
"returns": "agente de ligacao { id, name, objective, first_message, style, voice_provider, engine, voice_id, elevenlabs_agent_id, max_duration_seconds, captain_assistant_id, captain_assistant_name }",
|
|
28462
|
+
"common_use_cases": [
|
|
28463
|
+
"Conferir a configuracao antes de editar"
|
|
28464
|
+
],
|
|
28465
|
+
"related_tools": [
|
|
28466
|
+
"lionchat_captain_call_agents_list",
|
|
28467
|
+
"lionchat_captain_call_agents_update",
|
|
28468
|
+
"lionchat_captain_call_agents_test_call",
|
|
28469
|
+
"lionchat_captain_call_test_phones_list"
|
|
28470
|
+
]
|
|
28471
|
+
},
|
|
28472
|
+
{
|
|
28473
|
+
"id": "lionchat_captain_call_agents_create",
|
|
28474
|
+
"method": "POST",
|
|
28475
|
+
"path": "/api/v1/accounts/{account_id}/captain/call_agents",
|
|
28476
|
+
"title": "Criar Agente de Ligacao",
|
|
28477
|
+
"description": "Agente de LIGACAO (area \"Agentes de ligacao\", separada dos agentes de texto desde 24/09/2026). Nao ocupa vaga de IA do plano. Exige Admin ou cargo com captain_manage. Campos em body (pode mandar solto ou dentro de call_agent). Durante a ligacao a voz so CONSULTA agenda e REPASSA pedidos; quem executa e o agente de texto de captain_assistant_id.",
|
|
28478
|
+
"category": "Assistentes",
|
|
28479
|
+
"params": [
|
|
28480
|
+
{
|
|
28481
|
+
"name": "name",
|
|
28482
|
+
"type": "string",
|
|
28483
|
+
"location": "body",
|
|
28484
|
+
"required": false,
|
|
28485
|
+
"description": "Nome do agente de ligacao (ex.: \"Pesquisa de satisfacao\"). Obrigatorio na criacao. Ate 120 caracteres."
|
|
28486
|
+
},
|
|
28487
|
+
{
|
|
28488
|
+
"name": "objective",
|
|
28489
|
+
"type": "string",
|
|
28490
|
+
"location": "body",
|
|
28491
|
+
"required": false,
|
|
28492
|
+
"description": "Objetivo e roteiro da ligacao: o que ela deve conversar. Ate 4000 caracteres."
|
|
28493
|
+
},
|
|
28494
|
+
{
|
|
28495
|
+
"name": "first_message",
|
|
28496
|
+
"type": "string",
|
|
28497
|
+
"location": "body",
|
|
28498
|
+
"required": false,
|
|
28499
|
+
"description": "Primeira frase quando atendem (ex.: \"Oi, tudo bem? Aqui e a Ana...\"). Ate 400 caracteres."
|
|
28500
|
+
},
|
|
28501
|
+
{
|
|
28502
|
+
"name": "style",
|
|
28503
|
+
"type": "string",
|
|
28504
|
+
"location": "body",
|
|
28505
|
+
"required": false,
|
|
28506
|
+
"description": "Jeito de falar ao telefone (tom, ritmo, sotaque). Ate 1200 caracteres."
|
|
28507
|
+
},
|
|
28508
|
+
{
|
|
28509
|
+
"name": "voice_provider",
|
|
28510
|
+
"type": "string",
|
|
28511
|
+
"location": "body",
|
|
28512
|
+
"required": false,
|
|
28513
|
+
"description": "Fornecedor da voz: 'openai' (padrao) ou 'elevenlabs'. E PROPRIO do agente de ligacao — nao mexe na voz do audio da IA no WhatsApp."
|
|
28514
|
+
},
|
|
28515
|
+
{
|
|
28516
|
+
"name": "engine",
|
|
28517
|
+
"type": "string",
|
|
28518
|
+
"location": "body",
|
|
28519
|
+
"required": false,
|
|
28520
|
+
"description": "So na OpenAI: 'gptlive' (padrao; a voz fala enquanto consulta, e o UNICO motor com consultas de agenda e pedidos ao agente de texto) ou 'realtime' (so conversa)."
|
|
28521
|
+
},
|
|
28522
|
+
{
|
|
28523
|
+
"name": "voice_id",
|
|
28524
|
+
"type": "string",
|
|
28525
|
+
"location": "body",
|
|
28526
|
+
"required": false,
|
|
28527
|
+
"description": "Voz. Catalogo em lionchat_captain_voices_list (engine=gptlive para o GPT-Live: aceita alloy, ash, ballad, coral, echo, sage, shimmer, verse, marin, cedar; voz fora disso cai na marin)."
|
|
28528
|
+
},
|
|
28529
|
+
{
|
|
28530
|
+
"name": "elevenlabs_agent_id",
|
|
28531
|
+
"type": "string",
|
|
28532
|
+
"location": "body",
|
|
28533
|
+
"required": false,
|
|
28534
|
+
"description": "Obrigatorio quando voice_provider=elevenlabs: id do agente criado na ElevenLabs."
|
|
28535
|
+
},
|
|
28536
|
+
{
|
|
28537
|
+
"name": "max_duration_seconds",
|
|
28538
|
+
"type": "integer",
|
|
28539
|
+
"location": "body",
|
|
28540
|
+
"required": false,
|
|
28541
|
+
"description": "Duracao maxima da ligacao, 30 a 600 segundos (padrao 180)."
|
|
28542
|
+
},
|
|
28543
|
+
{
|
|
28544
|
+
"name": "captain_assistant_id",
|
|
28545
|
+
"type": "integer",
|
|
28546
|
+
"location": "body",
|
|
28547
|
+
"required": false,
|
|
28548
|
+
"description": "Agente de TEXTO que EXECUTA durante a ligacao o que o cliente pedir (mandar link no WhatsApp, mover card, anotar), com as ferramentas e a configuracao DELE. Sem ele a voz so conversa. Tem de ser desta conta (422 se nao for)."
|
|
28549
|
+
}
|
|
28550
|
+
],
|
|
28551
|
+
"returns": "agente de ligacao criado",
|
|
28552
|
+
"common_use_cases": [
|
|
28553
|
+
"Criar uma ligacao de pesquisa",
|
|
28554
|
+
"Criar confirmacao de consulta por voz"
|
|
28555
|
+
],
|
|
28556
|
+
"related_tools": [
|
|
28557
|
+
"lionchat_captain_call_agents_list",
|
|
28558
|
+
"lionchat_captain_call_agents_update",
|
|
28559
|
+
"lionchat_captain_call_agents_test_call",
|
|
28560
|
+
"lionchat_captain_call_test_phones_list"
|
|
28561
|
+
]
|
|
28562
|
+
},
|
|
28563
|
+
{
|
|
28564
|
+
"id": "lionchat_captain_call_agents_update",
|
|
28565
|
+
"method": "PATCH",
|
|
28566
|
+
"path": "/api/v1/accounts/{account_id}/captain/call_agents/{id}",
|
|
28567
|
+
"title": "Atualizar Agente de Ligacao",
|
|
28568
|
+
"description": "Agente de LIGACAO (area \"Agentes de ligacao\", separada dos agentes de texto desde 24/09/2026). Nao ocupa vaga de IA do plano. Exige Admin ou cargo com captain_manage. Edicao parcial.",
|
|
28569
|
+
"category": "Assistentes",
|
|
28570
|
+
"params": [
|
|
28571
|
+
{
|
|
28572
|
+
"name": "id",
|
|
28573
|
+
"type": "integer",
|
|
28574
|
+
"location": "path",
|
|
28575
|
+
"required": true,
|
|
28576
|
+
"description": "ID do agente de ligacao"
|
|
28577
|
+
},
|
|
28578
|
+
{
|
|
28579
|
+
"name": "name",
|
|
28580
|
+
"type": "string",
|
|
28581
|
+
"location": "body",
|
|
28582
|
+
"required": false,
|
|
28583
|
+
"description": "Nome do agente de ligacao (ex.: \"Pesquisa de satisfacao\"). Obrigatorio na criacao. Ate 120 caracteres."
|
|
28584
|
+
},
|
|
28585
|
+
{
|
|
28586
|
+
"name": "objective",
|
|
28587
|
+
"type": "string",
|
|
28588
|
+
"location": "body",
|
|
28589
|
+
"required": false,
|
|
28590
|
+
"description": "Objetivo e roteiro da ligacao: o que ela deve conversar. Ate 4000 caracteres."
|
|
28591
|
+
},
|
|
28592
|
+
{
|
|
28593
|
+
"name": "first_message",
|
|
28594
|
+
"type": "string",
|
|
28595
|
+
"location": "body",
|
|
28596
|
+
"required": false,
|
|
28597
|
+
"description": "Primeira frase quando atendem (ex.: \"Oi, tudo bem? Aqui e a Ana...\"). Ate 400 caracteres."
|
|
28598
|
+
},
|
|
28599
|
+
{
|
|
28600
|
+
"name": "style",
|
|
28601
|
+
"type": "string",
|
|
28602
|
+
"location": "body",
|
|
28603
|
+
"required": false,
|
|
28604
|
+
"description": "Jeito de falar ao telefone (tom, ritmo, sotaque). Ate 1200 caracteres."
|
|
28605
|
+
},
|
|
28606
|
+
{
|
|
28607
|
+
"name": "voice_provider",
|
|
28608
|
+
"type": "string",
|
|
28609
|
+
"location": "body",
|
|
28610
|
+
"required": false,
|
|
28611
|
+
"description": "Fornecedor da voz: 'openai' (padrao) ou 'elevenlabs'. E PROPRIO do agente de ligacao — nao mexe na voz do audio da IA no WhatsApp."
|
|
28612
|
+
},
|
|
28613
|
+
{
|
|
28614
|
+
"name": "engine",
|
|
28615
|
+
"type": "string",
|
|
28616
|
+
"location": "body",
|
|
28617
|
+
"required": false,
|
|
28618
|
+
"description": "So na OpenAI: 'gptlive' (padrao; a voz fala enquanto consulta, e o UNICO motor com consultas de agenda e pedidos ao agente de texto) ou 'realtime' (so conversa)."
|
|
28619
|
+
},
|
|
28620
|
+
{
|
|
28621
|
+
"name": "voice_id",
|
|
28622
|
+
"type": "string",
|
|
28623
|
+
"location": "body",
|
|
28624
|
+
"required": false,
|
|
28625
|
+
"description": "Voz. Catalogo em lionchat_captain_voices_list (engine=gptlive para o GPT-Live: aceita alloy, ash, ballad, coral, echo, sage, shimmer, verse, marin, cedar; voz fora disso cai na marin)."
|
|
28626
|
+
},
|
|
28627
|
+
{
|
|
28628
|
+
"name": "elevenlabs_agent_id",
|
|
28629
|
+
"type": "string",
|
|
28630
|
+
"location": "body",
|
|
28631
|
+
"required": false,
|
|
28632
|
+
"description": "Obrigatorio quando voice_provider=elevenlabs: id do agente criado na ElevenLabs."
|
|
28633
|
+
},
|
|
28634
|
+
{
|
|
28635
|
+
"name": "max_duration_seconds",
|
|
28636
|
+
"type": "integer",
|
|
28637
|
+
"location": "body",
|
|
28638
|
+
"required": false,
|
|
28639
|
+
"description": "Duracao maxima da ligacao, 30 a 600 segundos (padrao 180)."
|
|
28640
|
+
},
|
|
28641
|
+
{
|
|
28642
|
+
"name": "captain_assistant_id",
|
|
28643
|
+
"type": "integer",
|
|
28644
|
+
"location": "body",
|
|
28645
|
+
"required": false,
|
|
28646
|
+
"description": "Agente de TEXTO que EXECUTA durante a ligacao o que o cliente pedir (mandar link no WhatsApp, mover card, anotar), com as ferramentas e a configuracao DELE. Sem ele a voz so conversa. Tem de ser desta conta (422 se nao for)."
|
|
28647
|
+
}
|
|
28648
|
+
],
|
|
28649
|
+
"returns": "agente de ligacao atualizado",
|
|
28650
|
+
"common_use_cases": [
|
|
28651
|
+
"Trocar roteiro, voz ou o agente de texto que executa"
|
|
28652
|
+
],
|
|
28653
|
+
"related_tools": [
|
|
28654
|
+
"lionchat_captain_call_agents_list",
|
|
28655
|
+
"lionchat_captain_call_agents_update",
|
|
28656
|
+
"lionchat_captain_call_agents_test_call",
|
|
28657
|
+
"lionchat_captain_call_test_phones_list"
|
|
28658
|
+
]
|
|
28659
|
+
},
|
|
28660
|
+
{
|
|
28661
|
+
"id": "lionchat_captain_call_agents_destroy",
|
|
28662
|
+
"method": "DELETE",
|
|
28663
|
+
"path": "/api/v1/accounts/{account_id}/captain/call_agents/{id}",
|
|
28664
|
+
"title": "Excluir Agente de Ligacao",
|
|
28665
|
+
"description": "Agente de LIGACAO (area \"Agentes de ligacao\", separada dos agentes de texto desde 24/09/2026). Nao ocupa vaga de IA do plano. Exige Admin ou cargo com captain_manage.",
|
|
28666
|
+
"category": "Assistentes",
|
|
28667
|
+
"params": [
|
|
28668
|
+
{
|
|
28669
|
+
"name": "id",
|
|
28670
|
+
"type": "integer",
|
|
28671
|
+
"location": "path",
|
|
28672
|
+
"required": true,
|
|
28673
|
+
"description": "ID do agente de ligacao"
|
|
28674
|
+
}
|
|
28675
|
+
],
|
|
28676
|
+
"returns": "204 sem corpo",
|
|
28677
|
+
"common_use_cases": [
|
|
28678
|
+
"Remover agente de ligacao que nao e mais usado"
|
|
28679
|
+
],
|
|
28680
|
+
"related_tools": [
|
|
28681
|
+
"lionchat_captain_call_agents_list",
|
|
28682
|
+
"lionchat_captain_call_agents_update",
|
|
28683
|
+
"lionchat_captain_call_agents_test_call",
|
|
28684
|
+
"lionchat_captain_call_test_phones_list"
|
|
28685
|
+
]
|
|
28686
|
+
},
|
|
28687
|
+
{
|
|
28688
|
+
"id": "lionchat_captain_call_agents_duplicate",
|
|
28689
|
+
"method": "POST",
|
|
28690
|
+
"path": "/api/v1/accounts/{account_id}/captain/call_agents/{id}/duplicate",
|
|
28691
|
+
"title": "Duplicar Agente de Ligacao",
|
|
28692
|
+
"description": "Agente de LIGACAO (area \"Agentes de ligacao\", separada dos agentes de texto desde 24/09/2026). Nao ocupa vaga de IA do plano. Exige Admin ou cargo com captain_manage. Cria uma copia com \"(cópia)\" no nome.",
|
|
28693
|
+
"category": "Assistentes",
|
|
28694
|
+
"params": [
|
|
28695
|
+
{
|
|
28696
|
+
"name": "id",
|
|
28697
|
+
"type": "integer",
|
|
28698
|
+
"location": "path",
|
|
28699
|
+
"required": true,
|
|
28700
|
+
"description": "ID do agente de ligacao"
|
|
28701
|
+
}
|
|
28702
|
+
],
|
|
28703
|
+
"returns": "a copia criada",
|
|
28704
|
+
"common_use_cases": [
|
|
28705
|
+
"Criar variacao de um agente de ligacao"
|
|
28706
|
+
],
|
|
28707
|
+
"related_tools": [
|
|
28708
|
+
"lionchat_captain_call_agents_list",
|
|
28709
|
+
"lionchat_captain_call_agents_update",
|
|
28710
|
+
"lionchat_captain_call_agents_test_call",
|
|
28711
|
+
"lionchat_captain_call_test_phones_list"
|
|
28712
|
+
]
|
|
28713
|
+
},
|
|
28714
|
+
{
|
|
28715
|
+
"id": "lionchat_captain_call_agents_test_call",
|
|
28716
|
+
"method": "POST",
|
|
28717
|
+
"path": "/api/v1/accounts/{account_id}/captain/call_agents/{id}/test_call",
|
|
28718
|
+
"title": "Ligar de Teste",
|
|
28719
|
+
"description": "Agente de LIGACAO (area \"Agentes de ligacao\", separada dos agentes de texto desde 24/09/2026). Nao ocupa vaga de IA do plano. Exige Admin ou cargo com captain_manage. LIGA DE VERDADE para um numero de teste CADASTRADO (lionchat_captain_call_test_phones_list) — o telefone nunca vai no corpo, so o id do numero. Cria contato e conversa reais, pode disparar automacoes de \"conversa criada\" e fica gravada. Limite: 10 por hora na conta. Exige a Ligacao com IA liberada na conta e a linha da caixa conectada; recusa volta 422 com o motivo em message.",
|
|
28720
|
+
"category": "Assistentes",
|
|
28721
|
+
"params": [
|
|
28722
|
+
{
|
|
28723
|
+
"name": "id",
|
|
28724
|
+
"type": "integer",
|
|
28725
|
+
"location": "path",
|
|
28726
|
+
"required": true,
|
|
28727
|
+
"description": "ID do agente de ligacao"
|
|
28728
|
+
},
|
|
28729
|
+
{
|
|
28730
|
+
"name": "test_phone_id",
|
|
28731
|
+
"type": "integer",
|
|
28732
|
+
"location": "body",
|
|
28733
|
+
"required": true,
|
|
28734
|
+
"description": "ID do numero de teste cadastrado"
|
|
28735
|
+
},
|
|
28736
|
+
{
|
|
28737
|
+
"name": "inbox_id",
|
|
28738
|
+
"type": "integer",
|
|
28739
|
+
"location": "body",
|
|
28740
|
+
"required": true,
|
|
28741
|
+
"description": "Caixa que faz a ligacao (uma de meta.dial_inboxes)"
|
|
28742
|
+
}
|
|
28743
|
+
],
|
|
28744
|
+
"returns": "{ call_id, call_log_id } — acompanhar com lionchat_captain_call_agents_test_call_status",
|
|
28745
|
+
"common_use_cases": [
|
|
28746
|
+
"Testar o agente de ligacao no proprio celular"
|
|
28747
|
+
],
|
|
28748
|
+
"related_tools": [
|
|
28749
|
+
"lionchat_captain_call_agents_list",
|
|
28750
|
+
"lionchat_captain_call_agents_update",
|
|
28751
|
+
"lionchat_captain_call_agents_test_call",
|
|
28752
|
+
"lionchat_captain_call_test_phones_list"
|
|
28753
|
+
]
|
|
28754
|
+
},
|
|
28755
|
+
{
|
|
28756
|
+
"id": "lionchat_captain_call_agents_test_call_status",
|
|
28757
|
+
"method": "GET",
|
|
28758
|
+
"path": "/api/v1/accounts/{account_id}/captain/call_agents/{id}/test_call_status",
|
|
28759
|
+
"title": "Andamento da Ligacao de Teste",
|
|
28760
|
+
"description": "Agente de LIGACAO (area \"Agentes de ligacao\", separada dos agentes de texto desde 24/09/2026). Nao ocupa vaga de IA do plano. Exige Admin ou cargo com captain_manage.",
|
|
28761
|
+
"category": "Assistentes",
|
|
28762
|
+
"params": [
|
|
28763
|
+
{
|
|
28764
|
+
"name": "id",
|
|
28765
|
+
"type": "integer",
|
|
28766
|
+
"location": "path",
|
|
28767
|
+
"required": true,
|
|
28768
|
+
"description": "ID do agente de ligacao"
|
|
28769
|
+
},
|
|
28770
|
+
{
|
|
28771
|
+
"name": "call_log_id",
|
|
28772
|
+
"type": "integer",
|
|
28773
|
+
"location": "query",
|
|
28774
|
+
"required": true,
|
|
28775
|
+
"description": "call_log_id devolvido por lionchat_captain_call_agents_test_call"
|
|
28776
|
+
}
|
|
28777
|
+
],
|
|
28778
|
+
"returns": "{ status: initiated|ringing|active|answered|no_answer|failed|canceled, conversation_display_id, duration_seconds, finished }",
|
|
28779
|
+
"common_use_cases": [
|
|
28780
|
+
"Saber se a ligacao de teste foi atendida e em qual conversa ficou"
|
|
28781
|
+
],
|
|
28782
|
+
"related_tools": [
|
|
28783
|
+
"lionchat_captain_call_agents_list",
|
|
28784
|
+
"lionchat_captain_call_agents_update",
|
|
28785
|
+
"lionchat_captain_call_agents_test_call",
|
|
28786
|
+
"lionchat_captain_call_test_phones_list"
|
|
28787
|
+
]
|
|
28788
|
+
},
|
|
28789
|
+
{
|
|
28790
|
+
"id": "lionchat_captain_call_test_phones_list",
|
|
28791
|
+
"method": "GET",
|
|
28792
|
+
"path": "/api/v1/accounts/{account_id}/captain/call_test_phones",
|
|
28793
|
+
"title": "Listar Numeros de Teste de Ligacao",
|
|
28794
|
+
"description": "Numeros autorizados a receber \"Ligar de teste\" dos agentes de ligacao. Exige Admin ou captain_manage.",
|
|
28795
|
+
"category": "Assistentes",
|
|
28796
|
+
"params": [],
|
|
28797
|
+
"returns": "{ payload: [{id, phone, label}] }",
|
|
28798
|
+
"common_use_cases": [
|
|
28799
|
+
"Ver para quem a ligacao de teste pode ligar"
|
|
28800
|
+
],
|
|
28801
|
+
"related_tools": [
|
|
28802
|
+
"lionchat_captain_call_agents_list",
|
|
28803
|
+
"lionchat_captain_call_agents_update",
|
|
28804
|
+
"lionchat_captain_call_agents_test_call",
|
|
28805
|
+
"lionchat_captain_call_test_phones_list"
|
|
28806
|
+
]
|
|
28807
|
+
},
|
|
28808
|
+
{
|
|
28809
|
+
"id": "lionchat_captain_call_test_phones_create",
|
|
28810
|
+
"method": "POST",
|
|
28811
|
+
"path": "/api/v1/accounts/{account_id}/captain/call_test_phones",
|
|
28812
|
+
"title": "Cadastrar Numero de Teste de Ligacao",
|
|
28813
|
+
"description": "Autoriza um numero a receber ligacao de teste. Telefone com DDI (10 a 15 digitos); repetido na conta volta 422.",
|
|
28814
|
+
"category": "Assistentes",
|
|
28815
|
+
"params": [
|
|
28816
|
+
{
|
|
28817
|
+
"name": "phone",
|
|
28818
|
+
"type": "string",
|
|
28819
|
+
"location": "body",
|
|
28820
|
+
"required": true,
|
|
28821
|
+
"description": "Telefone com DDI, ex. +5511999998888"
|
|
28822
|
+
},
|
|
28823
|
+
{
|
|
28824
|
+
"name": "label",
|
|
28825
|
+
"type": "string",
|
|
28826
|
+
"location": "body",
|
|
28827
|
+
"required": false,
|
|
28828
|
+
"description": "Nome de quem atende (ate 80 caracteres)"
|
|
28829
|
+
}
|
|
28830
|
+
],
|
|
28831
|
+
"returns": "numero cadastrado { id, phone, label }",
|
|
28832
|
+
"common_use_cases": [
|
|
28833
|
+
"Cadastrar o proprio celular para testar"
|
|
28834
|
+
],
|
|
28835
|
+
"related_tools": [
|
|
28836
|
+
"lionchat_captain_call_agents_list",
|
|
28837
|
+
"lionchat_captain_call_agents_update",
|
|
28838
|
+
"lionchat_captain_call_agents_test_call",
|
|
28839
|
+
"lionchat_captain_call_test_phones_list"
|
|
28840
|
+
]
|
|
28841
|
+
},
|
|
28842
|
+
{
|
|
28843
|
+
"id": "lionchat_captain_call_test_phones_destroy",
|
|
28844
|
+
"method": "DELETE",
|
|
28845
|
+
"path": "/api/v1/accounts/{account_id}/captain/call_test_phones/{id}",
|
|
28846
|
+
"title": "Remover Numero de Teste de Ligacao",
|
|
28847
|
+
"description": "Remove um numero de teste.",
|
|
28848
|
+
"category": "Assistentes",
|
|
28849
|
+
"params": [
|
|
28850
|
+
{
|
|
28851
|
+
"name": "id",
|
|
28852
|
+
"type": "integer",
|
|
28853
|
+
"location": "path",
|
|
28854
|
+
"required": true,
|
|
28855
|
+
"description": "ID do numero de teste"
|
|
28856
|
+
}
|
|
28857
|
+
],
|
|
28858
|
+
"returns": "204 sem corpo",
|
|
28859
|
+
"common_use_cases": [
|
|
28860
|
+
"Tirar um numero da lista de teste"
|
|
28861
|
+
],
|
|
28862
|
+
"related_tools": [
|
|
28863
|
+
"lionchat_captain_call_agents_list",
|
|
28864
|
+
"lionchat_captain_call_agents_update",
|
|
28865
|
+
"lionchat_captain_call_agents_test_call",
|
|
28866
|
+
"lionchat_captain_call_test_phones_list"
|
|
28867
|
+
]
|
|
28868
|
+
},
|
|
28107
28869
|
{
|
|
28108
28870
|
"id": "lionchat_captain_liquid_variables_list",
|
|
28109
28871
|
"method": "GET",
|
|
@@ -30391,6 +31153,13 @@
|
|
|
30391
31153
|
"location": "query",
|
|
30392
31154
|
"required": false,
|
|
30393
31155
|
"description": "openai (padrão) | elevenlabs"
|
|
31156
|
+
},
|
|
31157
|
+
{
|
|
31158
|
+
"name": "engine",
|
|
31159
|
+
"type": "string",
|
|
31160
|
+
"location": "query",
|
|
31161
|
+
"required": false,
|
|
31162
|
+
"description": "Motor da ligacao: 'gptlive' devolve o catalogo do GPT-Live (inclui marin e cedar; NAO inclui fable/nova/onyx, que ele recusa). Sem este parametro devolve a lista do audio de texto. So vale com provider=openai."
|
|
30394
31163
|
}
|
|
30395
31164
|
],
|
|
30396
31165
|
"returns": "{voices: [{id, name, category, available, ...}], configured: bool, error: null|string, cloning_allowed?}",
|
|
@@ -31481,13 +32250,6 @@
|
|
|
31481
32250
|
"required": false,
|
|
31482
32251
|
"description": "Token do webhook da Greenn (valida a assinatura do que chega)"
|
|
31483
32252
|
},
|
|
31484
|
-
{
|
|
31485
|
-
"name": "inbox_id",
|
|
31486
|
-
"type": "integer",
|
|
31487
|
-
"location": "body",
|
|
31488
|
-
"required": false,
|
|
31489
|
-
"description": "Caixa onde a conversa do comprador é aberta"
|
|
31490
|
-
},
|
|
31491
32253
|
{
|
|
31492
32254
|
"name": "active",
|
|
31493
32255
|
"type": "boolean",
|
|
@@ -31575,13 +32337,6 @@
|
|
|
31575
32337
|
"required": false,
|
|
31576
32338
|
"description": "Token do webhook da Greenn (valida a assinatura do que chega)"
|
|
31577
32339
|
},
|
|
31578
|
-
{
|
|
31579
|
-
"name": "inbox_id",
|
|
31580
|
-
"type": "integer",
|
|
31581
|
-
"location": "body",
|
|
31582
|
-
"required": false,
|
|
31583
|
-
"description": "Caixa onde a conversa do comprador é aberta"
|
|
31584
|
-
},
|
|
31585
32340
|
{
|
|
31586
32341
|
"name": "active",
|
|
31587
32342
|
"type": "boolean",
|
|
@@ -32424,7 +33179,7 @@
|
|
|
32424
33179
|
"method": "GET",
|
|
32425
33180
|
"path": "/api/v1/accounts/{account_id}/eclinica_integrations/{id}",
|
|
32426
33181
|
"title": "Detalhes da Integração e-Clínica",
|
|
32427
|
-
"description": "SÓ LEITURA, somente administrador. A integração e-Clínica da conta (1 por conta; o id precisa ser o dela — 404 caso contrário) com status, saúde, mapeamento de eventos, lembretes, webhook_url e as UNIDADES (filiais) com status/token-por-variável/webhook próprio. Mesmo conteúdo de lionchat_eclinica_integrations_list, que já resolve o id. LEMBRETE POR AUTOMACAO (25/08): cada entrada de reminder_config aceita `automation_id` alem do `flow_id` — pelo menos um dos dois (422 sem nenhum); com os DOIS preenchidos a AUTOMACAO vence no disparo. A automacao precisa ser da propria conta (422 senao). ALERTA de regra de negocio ao configurar: o caminho por automacao RODA AS ACOES SEM AVALIAR AS CONDICOES da automacao
|
|
33182
|
+
"description": "SÓ LEITURA, somente administrador. A integração e-Clínica da conta (1 por conta; o id precisa ser o dela — 404 caso contrário) com status, saúde, mapeamento de eventos, lembretes, webhook_url e as UNIDADES (filiais) com status/token-por-variável/webhook próprio. Mesmo conteúdo de lionchat_eclinica_integrations_list, que já resolve o id. LEMBRETE POR AUTOMACAO (25/08): cada entrada de reminder_config aceita `automation_id` alem do `flow_id` — pelo menos um dos dois (422 sem nenhum); com os DOIS preenchidos a AUTOMACAO vence no disparo. A automacao precisa ser da propria conta (422 senao). ALERTA de regra de negocio ao configurar: o caminho por automacao RODA AS ACOES SEM AVALIAR AS CONDICOES da automacao. Desde 17/09/2026 os DOIS caminhos (fluxo e automacao) mandam um aviso POR CONSULTA: paciente com duas consultas no dia (ou dois pacientes no mesmo celular) recebe um aviso para cada uma, ~10 min um do outro (fila por contato). Quem quer so um por dia monta no FLUXO (condicao num atributo com {{data_consulta}}); na automacao nao da, porque as condicoes dela nao sao avaliadas — avise o cliente antes de trocar fluxo por automacao.",
|
|
32428
33183
|
"category": "Integracoes",
|
|
32429
33184
|
"params": [
|
|
32430
33185
|
{
|
|
@@ -32448,7 +33203,7 @@
|
|
|
32448
33203
|
"method": "PATCH",
|
|
32449
33204
|
"path": "/api/v1/accounts/{account_id}/eclinica_integrations/{id}",
|
|
32450
33205
|
"title": "Configurar Integração e-Clínica (mapeamento de eventos e lembretes)",
|
|
32451
|
-
"description": "AÇÃO DE ESCRITA, somente administrador. Configura a integração e-Clínica: o MAPEAMENTO evento→automação/fluxo (event_mapping) e os LEMBRETES automáticos (reminder_config). Até 31/08/2026 os dois só existiam na tela — este comando fecha a lacuna.\n\nSUBSTITUIÇÃO TOTAL — LEIA ANTES DE GRAVAR: os dois campos SUBSTITUEM o conteúdo inteiro, NÃO mesclam (o backend faz update! direto no jsonb). Mandar event_mapping com um evento só APAGA todos os outros mapeamentos do cliente; o mesmo vale pra reminder_config. SEMPRE chame lionchat_eclinica_integrations_show ANTES, pegue o objeto atual, altere só o que precisa e devolva o objeto COMPLETO.\n\nevent_mapping: objeto {tipo_do_evento: {automation_id, flow_id}} — pode deixar um dos dois nulo. Tipos aceitos: cliente_novo, cliente_alteracao, agendamento_novo, agendamento_alterado, agendamento_atendido, agendamento_desmarcado, agendamento_transferido, falta, pagamento, cliente_baixa_pagamento, cliente_inclusao_pagamento, controle_laboratorio_novo, controle_laboratorio_alterado, agendamento_aguardando, odontograma_aprovado, cliente_alteracao_pagamento (NOVO 01/09 — a cobrança foi EDITADA: mesmos campos da inclusão e o lembrete de vencimento é MOVIDO, não duplicado; dispara a cada edição, então não sirva para avisar \"nova cobrança\"), procedimento_finalizado (NOVO 31/08 — um procedimento do plano de tratamento foi concluído; dispara UMA VEZ POR PROCEDIMENTO e grava eclinica_procedimento_id/_dente/_valor/_finalizado_em/_profissional no contato, então o fluxo ligado aqui precisa filtrar pelo número do procedimento). odontograma_finalizado (NOVO 01/09 — o plano de tratamento INTEIRO foi concluido; nao confundir com procedimento_finalizado, que e UM item do plano; grava eclinica_odontograma_finalizado_em e nao mexe na data de aprovacao), inclusao_procedimento (NOVO 01/09 — um procedimento foi ACRESCENTADO ao plano, ainda nao executado: serve para aviso de orcamento, NAO e gatilho de orientacao pos-procedimento; grava eclinica_procedimento_incluido_id/_dente/_valor, nunca nos campos do finalizado). Tipo fora da lista = 422; flow_id e automation_id precisam ser da PRÓPRIA conta = 422 senão.\n\nreminder_config: array de {days_before (inteiro >= 0), event_type ('agendamento' padrão | 'controle_laboratorio_novo' | 'cliente_inclusao_pagamento'), flow_id e/ou automation_id (pelo menos um dos dois; com os dois a AUTOMAÇÃO vence), label, dispatch_time (OBRIGATÓRIA — 'HH:MM' fixo ou fórmula Liquid), filter_field/filter_operator/filter_value (opcional; filter_field precisa começar com eclinica_, operadores contains/equal/not_equal)}. Duas linhas com a MESMA régua = 422.\n\nALERTA de regra de negócio: isto muda, na hora e em produção, o que o paciente recebe. E no lembrete por automação as AÇÕES rodam SEM avaliar as CONDIÇÕES da automação
|
|
33206
|
+
"description": "AÇÃO DE ESCRITA, somente administrador. Configura a integração e-Clínica: o MAPEAMENTO evento→automação/fluxo (event_mapping) e os LEMBRETES automáticos (reminder_config). Até 31/08/2026 os dois só existiam na tela — este comando fecha a lacuna.\n\nSUBSTITUIÇÃO TOTAL — LEIA ANTES DE GRAVAR: os dois campos SUBSTITUEM o conteúdo inteiro, NÃO mesclam (o backend faz update! direto no jsonb). Mandar event_mapping com um evento só APAGA todos os outros mapeamentos do cliente; o mesmo vale pra reminder_config. SEMPRE chame lionchat_eclinica_integrations_show ANTES, pegue o objeto atual, altere só o que precisa e devolva o objeto COMPLETO.\n\nevent_mapping: objeto {tipo_do_evento: {automation_id, flow_id}} — pode deixar um dos dois nulo. Tipos aceitos: cliente_novo, cliente_alteracao, agendamento_novo, agendamento_alterado, agendamento_atendido, agendamento_desmarcado, agendamento_transferido, falta, pagamento, cliente_baixa_pagamento, cliente_inclusao_pagamento, controle_laboratorio_novo, controle_laboratorio_alterado, agendamento_aguardando, odontograma_aprovado, cliente_alteracao_pagamento (NOVO 01/09 — a cobrança foi EDITADA: mesmos campos da inclusão e o lembrete de vencimento é MOVIDO, não duplicado; dispara a cada edição, então não sirva para avisar \"nova cobrança\"), procedimento_finalizado (NOVO 31/08 — um procedimento do plano de tratamento foi concluído; dispara UMA VEZ POR PROCEDIMENTO e grava eclinica_procedimento_id/_dente/_valor/_finalizado_em/_profissional no contato, então o fluxo ligado aqui precisa filtrar pelo número do procedimento). odontograma_finalizado (NOVO 01/09 — o plano de tratamento INTEIRO foi concluido; nao confundir com procedimento_finalizado, que e UM item do plano; grava eclinica_odontograma_finalizado_em e nao mexe na data de aprovacao), inclusao_procedimento (NOVO 01/09 — um procedimento foi ACRESCENTADO ao plano, ainda nao executado: serve para aviso de orcamento, NAO e gatilho de orientacao pos-procedimento; grava eclinica_procedimento_incluido_id/_dente/_valor, nunca nos campos do finalizado). Tipo fora da lista = 422; flow_id e automation_id precisam ser da PRÓPRIA conta = 422 senão.\n\nreminder_config: array de {days_before (inteiro >= 0), event_type ('agendamento' padrão | 'controle_laboratorio_novo' | 'cliente_inclusao_pagamento'), flow_id e/ou automation_id (pelo menos um dos dois; com os dois a AUTOMAÇÃO vence), label, dispatch_time (OBRIGATÓRIA — 'HH:MM' fixo ou fórmula Liquid), filter_field/filter_operator/filter_value (opcional; filter_field precisa começar com eclinica_, operadores contains/equal/not_equal)}. Duas linhas com a MESMA régua = 422.\n\nALERTA de regra de negócio: isto muda, na hora e em produção, o que o paciente recebe. E no lembrete por automação as AÇÕES rodam SEM avaliar as CONDIÇÕES da automação. Desde 17/09/2026 os DOIS caminhos (fluxo e automacao) mandam um aviso POR CONSULTA: paciente com duas consultas no dia (ou dois pacientes no mesmo celular) recebe um aviso para cada uma, ~10 min um do outro (fila por contato). Quem quer so um por dia monta no FLUXO (condicao num atributo com {{data_consulta}}); na automacao nao da, porque as condicoes dela nao sao avaliadas.",
|
|
32452
33207
|
"category": "Integracoes",
|
|
32453
33208
|
"params": [
|
|
32454
33209
|
{
|
|
@@ -33106,7 +33861,7 @@
|
|
|
33106
33861
|
"type": "object",
|
|
33107
33862
|
"location": "body",
|
|
33108
33863
|
"required": false,
|
|
33109
|
-
"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."
|
|
33864
|
+
"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."
|
|
33110
33865
|
}
|
|
33111
33866
|
],
|
|
33112
33867
|
"returns": "o modelo criado (id, name, kind, body, variables, roles_layout, progress)",
|
|
@@ -33168,7 +33923,7 @@
|
|
|
33168
33923
|
"type": "object",
|
|
33169
33924
|
"location": "body",
|
|
33170
33925
|
"required": false,
|
|
33171
|
-
"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."
|
|
33926
|
+
"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."
|
|
33172
33927
|
}
|
|
33173
33928
|
],
|
|
33174
33929
|
"returns": "o modelo atualizado",
|