@lionchat/mcp-server 0.4.9 → 0.5.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/endpoints.json CHANGED
@@ -131,6 +131,7 @@
131
131
  "type": "array",
132
132
  "location": "query",
133
133
  "required": false,
134
+ "query_name": "labels[]",
134
135
  "description": "Filtrar por labels"
135
136
  },
136
137
  {
@@ -631,7 +632,7 @@
631
632
  "method": "GET",
632
633
  "path": "/api/v1/accounts/{account_id}/contacts/search",
633
634
  "title": "Buscar Contatos",
634
- "description": "Busca contatos por texto (insensivel a acento) em nome/email/telefone/identifier. Obrigatorio: q.",
635
+ "description": "Busca contatos por texto (insensivel a acento) em nome/email/telefone/identifier. Obrigatorio: q.\n\nNOVO (2026-06): 'q' aceita multiplos termos (espacos = E/AND, cap 5; cada termo precisa bater) e dados cadastrais (CPF/CNPJ/RG por digitos, ignora pontuacao).",
635
636
  "category": "Contatos",
636
637
  "params": [
637
638
  {
@@ -647,6 +648,27 @@
647
648
  "location": "query",
648
649
  "required": false,
649
650
  "description": "Página"
651
+ },
652
+ {
653
+ "name": "conversation_filters",
654
+ "type": "string",
655
+ "location": "query",
656
+ "required": false,
657
+ "description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
658
+ },
659
+ {
660
+ "name": "contact_filters",
661
+ "type": "string",
662
+ "location": "query",
663
+ "required": false,
664
+ "description": "Filtros estruturados aplicados aos resultados de CONTATOS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
665
+ },
666
+ {
667
+ "name": "kanban_filters",
668
+ "type": "string",
669
+ "location": "query",
670
+ "required": false,
671
+ "description": "Filtros estruturados aplicados aos resultados de CARDS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
650
672
  }
651
673
  ],
652
674
  "returns": "meta{count,current_page,has_more} + payload (array de contatos)",
@@ -662,7 +684,7 @@
662
684
  "method": "POST",
663
685
  "path": "/api/v1/accounts/{account_id}/contacts/filter",
664
686
  "title": "Filtrar Contatos",
665
- "description": "Filtra contatos com condições avançadas (múltiplas condições combinadas com AND/OR, operadores como contains, is_present, days_before, starts_with, e filtro por custom_attributes). Ver a seção Casos de Uso e Filtros para a lista completa de atributos e operadores. Filtragem avançada de contatos via payload de condições. Múltiplos operadores: equal_to, contains, includes, is_present, etc.",
687
+ "description": "Filtra contatos com condições avançadas (múltiplas condições combinadas com AND/OR, operadores como contains, is_present, days_before, starts_with, e filtro por custom_attributes). Ver a seção Casos de Uso e Filtros para a lista completa de atributos e operadores. Filtragem avançada de contatos via payload de condições. Múltiplos operadores: equal_to, contains, includes, is_present, etc.\n\nNOVO (2026-06): filtro por REGISTROS VINCULADOS — acha o contato pelo que aconteceu com ele: attribute_key 'conversation_search' (conversa vinculada: status/etiquetas/caixa), condicoes com custom_attribute_type 'conversation_attribute' (atributos da conversa) e attribute_key 'kanban_card' (card vinculado: funil/etapa/prioridade/status). Combinaveis com E/OU.",
666
688
  "category": "Contatos",
667
689
  "params": [
668
690
  {
@@ -885,7 +907,7 @@
885
907
  "method": "POST",
886
908
  "path": "/api/v1/accounts/{account_id}/contacts/export",
887
909
  "title": "Exportar Contatos",
888
- "description": "Exporta contatos (gera CSV em job async).",
910
+ "description": "Exporta contatos (gera CSV em job async). NOVO (2026-06): exportacao COMPLETA por padrao — cadastral (16 colunas), etiquetas, empresa/cidade/pais, atributos do contato e da conversa (prefixos contato_/conversa_), ultima conversa e card do Kanban. Passar column_names mantem o formato antigo (so as colunas pedidas).",
889
911
  "category": "Contatos",
890
912
  "params": [
891
913
  {
@@ -1032,6 +1054,7 @@
1032
1054
  "type": "array",
1033
1055
  "location": "query",
1034
1056
  "required": false,
1057
+ "query_name": "labels[]",
1035
1058
  "description": "Labels (tags) — array de títulos"
1036
1059
  }
1037
1060
  ],
@@ -1098,6 +1121,7 @@
1098
1121
  "type": "array",
1099
1122
  "location": "query",
1100
1123
  "required": false,
1124
+ "query_name": "labels[]",
1101
1125
  "description": "Labels (tags) — array de títulos"
1102
1126
  },
1103
1127
  {
@@ -1310,7 +1334,7 @@
1310
1334
  "method": "GET",
1311
1335
  "path": "/api/v1/accounts/{account_id}/conversations/search",
1312
1336
  "title": "Buscar Conversas",
1313
- "description": "Busca conversas por texto (no conteúdo das mensagens). Diferente de filter — pesquisa free-text. Use quando o usuário menciona uma palavra específica que provavelmente apareceu na conversa.",
1337
+ "description": "Busca conversas por texto (no conteúdo das mensagens). Diferente de filter — pesquisa free-text. Use quando o usuário menciona uma palavra específica que provavelmente apareceu na conversa.\n\nNOVO (2026-06): 'q' aceita multiplos termos (espacos = E/AND, cap 5; cada termo precisa bater) e dados cadastrais (CPF/CNPJ/RG por digitos, ignora pontuacao).",
1314
1338
  "category": "Conversas",
1315
1339
  "params": [
1316
1340
  {
@@ -1326,6 +1350,27 @@
1326
1350
  "location": "query",
1327
1351
  "required": false,
1328
1352
  "description": "Página"
1353
+ },
1354
+ {
1355
+ "name": "conversation_filters",
1356
+ "type": "string",
1357
+ "location": "query",
1358
+ "required": false,
1359
+ "description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
1360
+ },
1361
+ {
1362
+ "name": "contact_filters",
1363
+ "type": "string",
1364
+ "location": "query",
1365
+ "required": false,
1366
+ "description": "Filtros estruturados aplicados aos resultados de CONTATOS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
1367
+ },
1368
+ {
1369
+ "name": "kanban_filters",
1370
+ "type": "string",
1371
+ "location": "query",
1372
+ "required": false,
1373
+ "description": "Filtros estruturados aplicados aos resultados de CARDS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
1329
1374
  }
1330
1375
  ],
1331
1376
  "returns": "Array de conversas que contêm o texto buscado",
@@ -1959,7 +2004,7 @@
1959
2004
  "method": "GET",
1960
2005
  "path": "/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages/search",
1961
2006
  "title": "Buscar Mensagens",
1962
- "description": "Busca mensagens por texto dentro de uma conversa. Suporta private_only e file_type.",
2007
+ "description": "Busca mensagens por texto dentro de uma conversa. Suporta private_only e file_type.\n\nNOVO (2026-06): 'q' aceita multiplos termos (espacos = E/AND, cap 5; cada termo precisa bater) e dados cadastrais (CPF/CNPJ/RG por digitos, ignora pontuacao).",
1963
2008
  "category": "Mensagens",
1964
2009
  "params": [
1965
2010
  {
@@ -1995,7 +2040,29 @@
1995
2040
  "type": "array",
1996
2041
  "location": "query",
1997
2042
  "required": false,
2043
+ "query_name": "file_type[]",
1998
2044
  "description": "Tipos de arquivo"
2045
+ },
2046
+ {
2047
+ "name": "conversation_filters",
2048
+ "type": "string",
2049
+ "location": "query",
2050
+ "required": false,
2051
+ "description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
2052
+ },
2053
+ {
2054
+ "name": "contact_filters",
2055
+ "type": "string",
2056
+ "location": "query",
2057
+ "required": false,
2058
+ "description": "Filtros estruturados aplicados aos resultados de CONTATOS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
2059
+ },
2060
+ {
2061
+ "name": "kanban_filters",
2062
+ "type": "string",
2063
+ "location": "query",
2064
+ "required": false,
2065
+ "description": "Filtros estruturados aplicados aos resultados de CARDS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
1999
2066
  }
2000
2067
  ],
2001
2068
  "returns": "payload (array de mensagens, geralmente 25 resultados)",
@@ -2134,7 +2201,7 @@
2134
2201
  "method": "GET",
2135
2202
  "path": "/api/v1/accounts/{account_id}/funnels",
2136
2203
  "title": "Listar Funis",
2137
- "description": "Lista todos os funis com contagem de itens por etapa (cache 5min). NAO e paginado.",
2204
+ "description": "Lista todos os funis com contagem de itens por etapa (cache 5min). NAO e paginado. ACESSO (2026-06): retorna SO os funis visiveis pro usuario do token (admin, permissao kanban, funil aberto ou participante). Funil nao-visivel da 404 no show.",
2138
2205
  "category": "Funis",
2139
2206
  "params": [],
2140
2207
  "returns": "array de funis (cada um com stage_items_count); sem meta/paginacao",
@@ -2824,7 +2891,7 @@
2824
2891
  "method": "GET",
2825
2892
  "path": "/api/v1/accounts/{account_id}/kanban_items/{id}",
2826
2893
  "title": "Detalhe do Item",
2827
- "description": "Retorna detalhes. Retorna detalhes completos de UM item Kanban específico pelo ID. Inclui campos relacionais quando aplicável.",
2894
+ "description": "Retorna detalhes. Retorna detalhes completos de UM item Kanban específico pelo ID. Inclui campos relacionais quando aplicável. Resposta inclui selos de permissao (2026-06): can_edit, can_move, can_delete, can_assign (booleans calculados pro usuario do token).",
2828
2895
  "category": "Itens",
2829
2896
  "params": [
2830
2897
  {
@@ -3034,7 +3101,7 @@
3034
3101
  "method": "POST",
3035
3102
  "path": "/api/v1/accounts/{account_id}/kanban_items/{id}/move",
3036
3103
  "title": "Mover entre Funis",
3037
- "description": "Move o card entre funis/etapas. Obrigatorios: id, funnel_id, funnel_stage.",
3104
+ "description": "Move o card entre funis/etapas. Obrigatorios: id, funnel_id, funnel_stage. PERMISSAO (2026-06): mover sem acesso ao funil retorna 403 — confira o campo can_move no show do card antes.",
3038
3105
  "category": "Itens",
3039
3106
  "params": [
3040
3107
  {
@@ -3202,11 +3269,11 @@
3202
3269
  "method": "GET",
3203
3270
  "path": "/api/v1/accounts/{account_id}/kanban_items/search",
3204
3271
  "title": "Buscar Items",
3205
- "description": "Busca items por título, descrição, nome ou email do cliente. Busca itens Kanban por texto livre. Suporta query parcial em nome/email/telefone. Use para \"encontrar X\" rapidamente.",
3272
+ "description": "Busca items por título, descrição, nome ou email do cliente. Busca itens Kanban por texto livre. Suporta query parcial em nome/email/telefone. Use para \"encontrar X\" rapidamente.\n\nNOVO (2026-06): 'q' aceita multiplos termos (espacos = E/AND, cap 5; cada termo precisa bater) e dados cadastrais (CPF/CNPJ/RG por digitos, ignora pontuacao).",
3206
3273
  "category": "Itens",
3207
3274
  "params": [
3208
3275
  {
3209
- "name": "q",
3276
+ "name": "query",
3210
3277
  "type": "string",
3211
3278
  "location": "query",
3212
3279
  "required": true,
@@ -3225,6 +3292,27 @@
3225
3292
  "location": "query",
3226
3293
  "required": false,
3227
3294
  "description": "Excluir cards que ja tem esta conversa vinculada"
3295
+ },
3296
+ {
3297
+ "name": "conversation_filters",
3298
+ "type": "string",
3299
+ "location": "query",
3300
+ "required": false,
3301
+ "description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
3302
+ },
3303
+ {
3304
+ "name": "contact_filters",
3305
+ "type": "string",
3306
+ "location": "query",
3307
+ "required": false,
3308
+ "description": "Filtros estruturados aplicados aos resultados de CONTATOS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
3309
+ },
3310
+ {
3311
+ "name": "kanban_filters",
3312
+ "type": "string",
3313
+ "location": "query",
3314
+ "required": false,
3315
+ "description": "Filtros estruturados aplicados aos resultados de CARDS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
3228
3316
  }
3229
3317
  ],
3230
3318
  "returns": "payload (array de itens Kanban, geralmente 25 resultados)",
@@ -3713,7 +3801,7 @@
3713
3801
  "method": "POST",
3714
3802
  "path": "/api/v1/accounts/{account_id}/captain/assistants",
3715
3803
  "title": "Criar Assistente IA",
3716
- "description": "Cria um assistente de IA. Obrigatorios: name, description. Exige Admin; sujeito ao limite do plano (403 se atingir).",
3804
+ "description": "Cria um assistente de IA. Obrigatorios: name, description. Exige Admin; sujeito ao limite do plano (403 se atingir).\n\nCONFIG (2026-06): config faz MERGE PARCIAL no update. Chaves novas: follow_up_steps (ate 3 etapas [{after_minutes>=5, prompt}], soma<=1440min), disabled_tools, offer_ids, media_asset_ids, booking_event_type_ids, activation_label, min/max_response_time. instructions ate 20.000 chars.",
3717
3805
  "category": "Assistentes",
3718
3806
  "params": [
3719
3807
  {
@@ -3862,6 +3950,13 @@
3862
3950
  "location": "body",
3863
3951
  "required": false,
3864
3952
  "description": "Array de IDs de tipos de agendamento que o agente pode oferecer"
3953
+ },
3954
+ {
3955
+ "name": "paused",
3956
+ "type": "boolean",
3957
+ "location": "body",
3958
+ "required": false,
3959
+ "description": "BOTAO DE PANICO: true pausa TODA a IA do assistente (respostas, follow-ups, callbacks) sem perder config. Top-level, auditado"
3865
3960
  }
3866
3961
  ],
3867
3962
  "returns": "assistente AI criado (com novo ID)",
@@ -3910,7 +4005,7 @@
3910
4005
  "method": "PATCH",
3911
4006
  "path": "/api/v1/accounts/{account_id}/captain/assistants/{id}",
3912
4007
  "title": "Atualizar Assistente IA",
3913
- "description": "Atualiza um assistente de IA. Exige Admin. Para pausar use paused:true (top-level).",
4008
+ "description": "Atualiza um assistente de IA. Exige Admin. Para pausar use paused:true (top-level).\n\nCONFIG (2026-06): config faz MERGE PARCIAL no update. Chaves novas: follow_up_steps (ate 3 etapas [{after_minutes>=5, prompt}], soma<=1440min), disabled_tools, offer_ids, media_asset_ids, booking_event_type_ids, activation_label, min/max_response_time. instructions ate 20.000 chars.",
3914
4009
  "category": "Assistentes",
3915
4010
  "params": [
3916
4011
  {
@@ -4066,6 +4161,13 @@
4066
4161
  "location": "body",
4067
4162
  "required": false,
4068
4163
  "description": "Array de IDs de tipos de agendamento que o agente pode oferecer"
4164
+ },
4165
+ {
4166
+ "name": "paused",
4167
+ "type": "boolean",
4168
+ "location": "body",
4169
+ "required": false,
4170
+ "description": "BOTAO DE PANICO: true pausa TODA a IA do assistente (respostas, follow-ups, callbacks) sem perder config. Top-level, auditado"
4069
4171
  }
4070
4172
  ],
4071
4173
  "returns": "assistente AI atualizado",
@@ -7402,7 +7504,7 @@
7402
7504
  "method": "GET",
7403
7505
  "path": "/api/v1/accounts/{account_id}/search",
7404
7506
  "title": "Busca Global",
7405
- "description": "Busca global por texto (conversas, contatos, mensagens, artigos) — sempre retorna todos os tipos. Para um tipo unico use /search/conversations|contacts|messages.",
7507
+ "description": "Busca global por texto (conversas, contatos, mensagens, artigos) — sempre retorna todos os tipos. Para um tipo unico use /search/conversations|contacts|messages.\n\nNOVO (2026-06): 'q' aceita multiplos termos (espacos = E/AND, cap 5; cada termo precisa bater) e dados cadastrais (CPF/CNPJ/RG por digitos, ignora pontuacao).",
7406
7508
  "category": "Busca",
7407
7509
  "params": [
7408
7510
  {
@@ -7446,6 +7548,27 @@
7446
7548
  "location": "query",
7447
7549
  "required": false,
7448
7550
  "description": "Página"
7551
+ },
7552
+ {
7553
+ "name": "conversation_filters",
7554
+ "type": "string",
7555
+ "location": "query",
7556
+ "required": false,
7557
+ "description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
7558
+ },
7559
+ {
7560
+ "name": "contact_filters",
7561
+ "type": "string",
7562
+ "location": "query",
7563
+ "required": false,
7564
+ "description": "Filtros estruturados aplicados aos resultados de CONTATOS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
7565
+ },
7566
+ {
7567
+ "name": "kanban_filters",
7568
+ "type": "string",
7569
+ "location": "query",
7570
+ "required": false,
7571
+ "description": "Filtros estruturados aplicados aos resultados de CARDS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
7449
7572
  }
7450
7573
  ],
7451
7574
  "returns": "payload (array de resultados de busca, geralmente 25 resultados)",
@@ -7461,7 +7584,7 @@
7461
7584
  "method": "GET",
7462
7585
  "path": "/api/v1/accounts/{account_id}/search/conversations",
7463
7586
  "title": "Buscar Conversas",
7464
- "description": "Busca apenas em conversas por texto.",
7587
+ "description": "Busca apenas em conversas por texto.\n\nNOVO (2026-06): 'q' aceita multiplos termos (espacos = E/AND, cap 5; cada termo precisa bater) e dados cadastrais (CPF/CNPJ/RG por digitos, ignora pontuacao).",
7465
7588
  "category": "Busca",
7466
7589
  "params": [
7467
7590
  {
@@ -7505,6 +7628,13 @@
7505
7628
  "location": "query",
7506
7629
  "required": false,
7507
7630
  "description": "Página"
7631
+ },
7632
+ {
7633
+ "name": "conversation_filters",
7634
+ "type": "string",
7635
+ "location": "query",
7636
+ "required": false,
7637
+ "description": "Filtros estruturados (mesmo formato de conversations_filter). JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
7508
7638
  }
7509
7639
  ],
7510
7640
  "returns": "meta (contadores globais) + payload (array de resultados de busca)",
@@ -7523,7 +7653,7 @@
7523
7653
  "method": "GET",
7524
7654
  "path": "/api/v1/accounts/{account_id}/search/contacts",
7525
7655
  "title": "Buscar Contatos",
7526
- "description": "Busca apenas em contatos por texto.",
7656
+ "description": "Busca apenas em contatos por texto.\n\nNOVO (2026-06): 'q' aceita multiplos termos (espacos = E/AND, cap 5; cada termo precisa bater) e dados cadastrais (CPF/CNPJ/RG por digitos, ignora pontuacao).",
7527
7657
  "category": "Busca",
7528
7658
  "params": [
7529
7659
  {
@@ -7539,6 +7669,13 @@
7539
7669
  "location": "query",
7540
7670
  "required": false,
7541
7671
  "description": "Página"
7672
+ },
7673
+ {
7674
+ "name": "contact_filters",
7675
+ "type": "string",
7676
+ "location": "query",
7677
+ "required": false,
7678
+ "description": "Filtros estruturados (mesmo formato de contacts_filter). JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
7542
7679
  }
7543
7680
  ],
7544
7681
  "returns": "meta (contadores globais) + payload (array de resultados de busca)",
@@ -7557,7 +7694,7 @@
7557
7694
  "method": "GET",
7558
7695
  "path": "/api/v1/accounts/{account_id}/search/messages",
7559
7696
  "title": "Buscar Mensagens",
7560
- "description": "Busca apenas em mensagens por texto.",
7697
+ "description": "Busca apenas em mensagens por texto.\n\nNOVO (2026-06): 'q' aceita multiplos termos (espacos = E/AND, cap 5; cada termo precisa bater) e dados cadastrais (CPF/CNPJ/RG por digitos, ignora pontuacao).",
7561
7698
  "category": "Busca",
7562
7699
  "params": [
7563
7700
  {
@@ -8885,7 +9022,7 @@
8885
9022
  "method": "POST",
8886
9023
  "path": "/api/v1/accounts/{account_id}/flows",
8887
9024
  "title": "Criar Flow",
8888
- "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'|'attribute'|'', 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 = id de cada condicao + '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>).",
9025
+ "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.",
8889
9026
  "category": "Flows",
8890
9027
  "params": [
8891
9028
  {
@@ -8966,7 +9103,7 @@
8966
9103
  "method": "PUT",
8967
9104
  "path": "/api/v1/accounts/{account_id}/flows/{id}",
8968
9105
  "title": "Atualizar Flow",
8969
- "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.",
9106
+ "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.",
8970
9107
  "category": "Flows",
8971
9108
  "params": [
8972
9109
  {
@@ -10105,6 +10242,7 @@
10105
10242
  "type": "array",
10106
10243
  "location": "query",
10107
10244
  "required": false,
10245
+ "query_name": "includes[]",
10108
10246
  "description": "Filtrar por status: read, snoozed"
10109
10247
  },
10110
10248
  {
@@ -10552,7 +10690,7 @@
10552
10690
  "method": "GET",
10553
10691
  "path": "/api/v1/accounts/{account_id}/companies/search",
10554
10692
  "title": "Buscar Empresas",
10555
- "description": "Busca empresas por NOME ou DOMINIO. Obrigatorio: q.",
10693
+ "description": "Busca empresas por NOME ou DOMINIO. Obrigatorio: q.\n\nNOVO (2026-06): 'q' aceita multiplos termos (espacos = E/AND, cap 5; cada termo precisa bater) e dados cadastrais (CPF/CNPJ/RG por digitos, ignora pontuacao).",
10556
10694
  "category": "Empresas",
10557
10695
  "params": [
10558
10696
  {
@@ -10561,6 +10699,27 @@
10561
10699
  "location": "query",
10562
10700
  "required": true,
10563
10701
  "description": "Termo de busca"
10702
+ },
10703
+ {
10704
+ "name": "conversation_filters",
10705
+ "type": "string",
10706
+ "location": "query",
10707
+ "required": false,
10708
+ "description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
10709
+ },
10710
+ {
10711
+ "name": "contact_filters",
10712
+ "type": "string",
10713
+ "location": "query",
10714
+ "required": false,
10715
+ "description": "Filtros estruturados aplicados aos resultados de CONTATOS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
10716
+ },
10717
+ {
10718
+ "name": "kanban_filters",
10719
+ "type": "string",
10720
+ "location": "query",
10721
+ "required": false,
10722
+ "description": "Filtros estruturados aplicados aos resultados de CARDS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
10564
10723
  }
10565
10724
  ],
10566
10725
  "returns": "payload (array de empresas, geralmente 25 resultados)",
@@ -10697,7 +10856,7 @@
10697
10856
  "method": "GET",
10698
10857
  "path": "/api/v1/accounts/{account_id}/offers/search",
10699
10858
  "title": "Buscar Ofertas",
10700
- "description": "Busca ofertas por TITULO. Obrigatorio: q.",
10859
+ "description": "Busca ofertas por TITULO. Obrigatorio: q.\n\nNOVO (2026-06): 'q' aceita multiplos termos (espacos = E/AND, cap 5; cada termo precisa bater) e dados cadastrais (CPF/CNPJ/RG por digitos, ignora pontuacao).",
10701
10860
  "category": "Ofertas",
10702
10861
  "params": [
10703
10862
  {
@@ -10706,6 +10865,27 @@
10706
10865
  "location": "query",
10707
10866
  "required": true,
10708
10867
  "description": "Termo de busca"
10868
+ },
10869
+ {
10870
+ "name": "conversation_filters",
10871
+ "type": "string",
10872
+ "location": "query",
10873
+ "required": false,
10874
+ "description": "Filtros estruturados aplicados aos resultados de CONVERSAS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
10875
+ },
10876
+ {
10877
+ "name": "contact_filters",
10878
+ "type": "string",
10879
+ "location": "query",
10880
+ "required": false,
10881
+ "description": "Filtros estruturados aplicados aos resultados de CONTATOS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
10882
+ },
10883
+ {
10884
+ "name": "kanban_filters",
10885
+ "type": "string",
10886
+ "location": "query",
10887
+ "required": false,
10888
+ "description": "Filtros estruturados aplicados aos resultados de CARDS. JSON-string de condicoes no formato do endpoint /filter correspondente (ex: [{\"attribute_key\":\"status\",\"filter_operator\":\"equal_to\",\"values\":[\"open\"]}]). Cap 10 condicoes; payload invalido = 422"
10709
10889
  }
10710
10890
  ],
10711
10891
  "returns": "array de ofertas (sem paginacao)",
@@ -12205,6 +12385,13 @@
12205
12385
  "description": "Atualiza valor de uma variável existente. Atualiza campos do variável de conta existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: value.",
12206
12386
  "category": "Variaveis da Conta",
12207
12387
  "params": [
12388
+ {
12389
+ "name": "id",
12390
+ "type": "integer",
12391
+ "location": "path",
12392
+ "required": true,
12393
+ "description": "ID da variável"
12394
+ },
12208
12395
  {
12209
12396
  "name": "attribute_display_name",
12210
12397
  "type": "string",
@@ -15184,7 +15371,7 @@
15184
15371
  "method": "POST",
15185
15372
  "path": "/api/v1/accounts/{account_id}/webhooks",
15186
15373
  "title": "Criar Webhook",
15187
- "description": "Cria um webhook. Body exige wrapper webhook. subscriptions restrito a allow-list.",
15374
+ "description": "Cria um webhook. Body exige wrapper webhook. subscriptions restrito a allow-list. Evento novo (2026-06): 'inbox_updated' (dispara quando uma caixa de entrada e autorizada/reautorizada).",
15188
15375
  "category": "Webhooks",
15189
15376
  "params": [
15190
15377
  {
@@ -15230,7 +15417,7 @@
15230
15417
  "method": "PUT",
15231
15418
  "path": "/api/v1/accounts/{account_id}/webhooks/{id}",
15232
15419
  "title": "Atualizar Webhook",
15233
- "description": "Atualiza um webhook existente. Atualiza campos do webhook existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: url, subscriptions.",
15420
+ "description": "Atualiza um webhook existente. Atualiza campos do webhook existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: url, subscriptions. Evento novo (2026-06): 'inbox_updated' (dispara quando uma caixa de entrada e autorizada/reautorizada).",
15234
15421
  "category": "Webhooks",
15235
15422
  "params": [
15236
15423
  {
@@ -15356,7 +15543,7 @@
15356
15543
  "type": "object",
15357
15544
  "location": "body",
15358
15545
  "required": false,
15359
- "description": "Mapeamento de campos do payload para campos internos (dentro de custom_webhook_integration)"
15546
+ "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"
15360
15547
  },
15361
15548
  {
15362
15549
  "name": "event_automation_mapping",
@@ -15378,6 +15565,13 @@
15378
15565
  "location": "body",
15379
15566
  "required": false,
15380
15567
  "description": "Lista de valores de evento conhecidos (dentro de custom_webhook_integration)"
15568
+ },
15569
+ {
15570
+ "name": "flow_id",
15571
+ "type": "integer",
15572
+ "location": "body",
15573
+ "required": false,
15574
+ "description": "Webhook EMBUTIDO de flow (2026-06): cria/retorna a integracao vinculada ao flow (idempotente, nome automatico 'Flow: <nome>', auto-mapeia todos os eventos -> o flow, oculta da listagem standalone). Ver receita no resource de flows"
15381
15575
  }
15382
15576
  ],
15383
15577
  "returns": "webhook criado (com novo ID)",
@@ -17449,7 +17643,7 @@
17449
17643
  "method": "GET",
17450
17644
  "path": "/api/v1/accounts/{account_id}/integrations/meta_lead",
17451
17645
  "title": "Listar Paginas Meta Lead Ads",
17452
- "description": "Lista as integracoes Meta Lead Ads conectadas.",
17646
+ "description": "Lista as integracoes Meta Lead Ads conectadas. NOVO (2026-06): conexao agora e POR PAGINA selecionada (BM virou rotulo); resposta traz enrichment_active e pending_businesses (BMs com pendencia).",
17453
17647
  "category": "Meta Lead Ads",
17454
17648
  "params": [],
17455
17649
  "returns": "{ data: [...integracoes...] }",
@@ -18594,8 +18788,7 @@
18594
18788
  "lionchat_captain_documents_list",
18595
18789
  "lionchat_captain_documents_create",
18596
18790
  "lionchat_captain_documents_destroy"
18597
- ],
18598
- "body_wrapper": "document"
18791
+ ]
18599
18792
  },
18600
18793
  {
18601
18794
  "id": "lionchat_copilot_prompts_list",
@@ -18668,6 +18861,13 @@
18668
18861
  "description": "Atualiza um prompt salvo do Copilot (campo prompt). Exige Admin.",
18669
18862
  "category": "Prompts Salvos",
18670
18863
  "params": [
18864
+ {
18865
+ "name": "id",
18866
+ "type": "integer",
18867
+ "location": "path",
18868
+ "required": true,
18869
+ "description": "ID do prompt salvo"
18870
+ },
18671
18871
  {
18672
18872
  "name": "title",
18673
18873
  "type": "string",
@@ -19733,5 +19933,3474 @@
19733
19933
  "Auditoria/relatório de respostas CSAT ativas"
19734
19934
  ],
19735
19935
  "related_tools": []
19936
+ },
19937
+ {
19938
+ "id": "lionchat_campaigns_list",
19939
+ "method": "GET",
19940
+ "path": "/api/v1/accounts/{account_id}/campaigns",
19941
+ "title": "Listar Campanhas",
19942
+ "description": "Lista todas as campanhas da conta: one-off (disparo em massa — WhatsApp oficial, WhatsApp QR Code/WAHA, SMS) e ongoing (chat ao vivo do site). Inclui audiência, regras de disparo e status.",
19943
+ "category": "Campanhas",
19944
+ "params": [],
19945
+ "returns": "{ campaigns: [{ id (display_id), title, message, inbox, campaign_type ('one_off'|'ongoing'), campaign_status ('active'|'completed'), enabled, scheduled_at, audience, trigger_rules, sender, created_at }] }",
19946
+ "common_use_cases": [
19947
+ "Ver campanhas agendadas e concluídas",
19948
+ "Conferir audiência de uma campanha antes de editar"
19949
+ ],
19950
+ "related_tools": [
19951
+ "lionchat_campaigns_show",
19952
+ "lionchat_campaigns_statistics"
19953
+ ]
19954
+ },
19955
+ {
19956
+ "id": "lionchat_campaigns_create",
19957
+ "method": "POST",
19958
+ "path": "/api/v1/accounts/{account_id}/campaigns",
19959
+ "title": "Criar Campanha",
19960
+ "description": "Cria campanha. O TIPO vem da inbox: WhatsApp oficial (Cloud, exige template em template_params), WhatsApp QR Code/WAHA (texto livre + variações anti-bloqueio), SMS/Twilio, ou Website (ongoing — popup de chat por URL/tempo). One-off exige audience. ENVIO EM MASSA: SEMPRE rode estimate_audience com o MESMO audience+audience_mode antes e CONFIRME com o usuário. 422 se inbox incompatível, audience vazio (one-off) ou ConversationAttribute sem key/value.",
19961
+ "category": "Campanhas",
19962
+ "params": [
19963
+ {
19964
+ "name": "title",
19965
+ "type": "string",
19966
+ "location": "body",
19967
+ "required": true,
19968
+ "description": "Nome da campanha"
19969
+ },
19970
+ {
19971
+ "name": "message",
19972
+ "type": "string",
19973
+ "location": "body",
19974
+ "required": true,
19975
+ "description": "Mensagem (texto com {{contact.name}} etc; no WhatsApp oficial o conteúdo real vem do template em template_params)"
19976
+ },
19977
+ {
19978
+ "name": "inbox_id",
19979
+ "type": "integer",
19980
+ "location": "body",
19981
+ "required": true,
19982
+ "description": "Caixa de entrada que dispara (define o tipo da campanha)"
19983
+ },
19984
+ {
19985
+ "name": "audience",
19986
+ "type": "array",
19987
+ "location": "body",
19988
+ "required": false,
19989
+ "description": "Critérios de público — array de seções combináveis: { type: 'Label', id } | { type: 'Funnel', id, stages: ['slug_etapa'], include_won: bool, include_lost: bool } | { type: 'ConversationAttribute', key, value } (atributo personalizado da conversa, ex: origem_do_lead=instagram). OBRIGATÓRIO em one-off"
19990
+ },
19991
+ {
19992
+ "name": "audience_mode",
19993
+ "type": "string",
19994
+ "location": "body",
19995
+ "required": false,
19996
+ "description": "Como combinar as seções do público: 'sum' (união, default — contato em QUALQUER seção entra) ou 'all' (interseção — precisa atender TODAS as seções preenchidas)"
19997
+ },
19998
+ {
19999
+ "name": "scheduled_at",
20000
+ "type": "string",
20001
+ "location": "body",
20002
+ "required": false,
20003
+ "description": "Quando disparar (ISO 8601). Ausente = imediato. Ignorado em ongoing"
20004
+ },
20005
+ {
20006
+ "name": "description",
20007
+ "type": "string",
20008
+ "location": "body",
20009
+ "required": false,
20010
+ "description": "Descrição interna"
20011
+ },
20012
+ {
20013
+ "name": "sender_id",
20014
+ "type": "integer",
20015
+ "location": "body",
20016
+ "required": false,
20017
+ "description": "Agente remetente (opcional)"
20018
+ },
20019
+ {
20020
+ "name": "enabled",
20021
+ "type": "boolean",
20022
+ "location": "body",
20023
+ "required": false,
20024
+ "description": "Ativa (default true)"
20025
+ },
20026
+ {
20027
+ "name": "trigger_only_during_business_hours",
20028
+ "type": "boolean",
20029
+ "location": "body",
20030
+ "required": false,
20031
+ "description": "Só dispara em horário comercial"
20032
+ },
20033
+ {
20034
+ "name": "trigger_rules",
20035
+ "type": "object",
20036
+ "location": "body",
20037
+ "required": false,
20038
+ "description": "Regras de disparo (ongoing/Website): { url, time_on_page }"
20039
+ },
20040
+ {
20041
+ "name": "template_params",
20042
+ "type": "object",
20043
+ "location": "body",
20044
+ "required": false,
20045
+ "description": "WhatsApp oficial: { name, namespace, lang_code, parameters }. QR Code/WAHA: { delay_min, delay_max, variations: ['variação 1', ...], bulk_actions: { assignee_id, priority, labels: [] } }"
20046
+ }
20047
+ ],
20048
+ "returns": "{ campaign: {...} } (201)",
20049
+ "common_use_cases": [
20050
+ "Disparo WhatsApp QR Code pra etiqueta VIP com delay anti-bloqueio",
20051
+ "Campanha de template oficial pro funil de vendas",
20052
+ "Popup de chat ao vivo na página de preços"
20053
+ ],
20054
+ "related_tools": [
20055
+ "lionchat_campaigns_estimate_audience",
20056
+ "lionchat_campaigns_statistics"
20057
+ ]
20058
+ },
20059
+ {
20060
+ "id": "lionchat_campaigns_show",
20061
+ "method": "GET",
20062
+ "path": "/api/v1/accounts/{account_id}/campaigns/{id}",
20063
+ "title": "Detalhes da Campanha",
20064
+ "description": "Retorna uma campanha pelo display_id (o número visível na UI, não o id interno). Inclui audience, trigger_rules e template_params completos.",
20065
+ "category": "Campanhas",
20066
+ "params": [
20067
+ {
20068
+ "name": "id",
20069
+ "type": "integer",
20070
+ "location": "path",
20071
+ "required": true,
20072
+ "description": "display_id da campanha"
20073
+ }
20074
+ ],
20075
+ "returns": "{ campaign: {...} }",
20076
+ "common_use_cases": [
20077
+ "Conferir configuração antes de editar"
20078
+ ],
20079
+ "related_tools": [
20080
+ "lionchat_campaigns_update"
20081
+ ]
20082
+ },
20083
+ {
20084
+ "id": "lionchat_campaigns_update",
20085
+ "method": "PATCH",
20086
+ "path": "/api/v1/accounts/{account_id}/campaigns/{id}",
20087
+ "title": "Atualizar Campanha",
20088
+ "description": "Atualiza campanha (mesmos campos do create). Campanha one-off já 'completed' não pode ser editada (422). Mudar audience de campanha agendada vale pro disparo.",
20089
+ "category": "Campanhas",
20090
+ "params": [
20091
+ {
20092
+ "name": "id",
20093
+ "type": "integer",
20094
+ "location": "path",
20095
+ "required": true,
20096
+ "description": "display_id da campanha"
20097
+ },
20098
+ {
20099
+ "name": "title",
20100
+ "type": "string",
20101
+ "location": "body",
20102
+ "required": false,
20103
+ "description": "Novo nome"
20104
+ },
20105
+ {
20106
+ "name": "message",
20107
+ "type": "string",
20108
+ "location": "body",
20109
+ "required": false,
20110
+ "description": "Nova mensagem"
20111
+ },
20112
+ {
20113
+ "name": "audience",
20114
+ "type": "array",
20115
+ "location": "body",
20116
+ "required": false,
20117
+ "description": "Critérios de público — array de seções combináveis: { type: 'Label', id } | { type: 'Funnel', id, stages: ['slug_etapa'], include_won: bool, include_lost: bool } | { type: 'ConversationAttribute', key, value } (atributo personalizado da conversa, ex: origem_do_lead=instagram)"
20118
+ },
20119
+ {
20120
+ "name": "audience_mode",
20121
+ "type": "string",
20122
+ "location": "body",
20123
+ "required": false,
20124
+ "description": "Como combinar as seções do público: 'sum' (união, default — contato em QUALQUER seção entra) ou 'all' (interseção — precisa atender TODAS as seções preenchidas)"
20125
+ },
20126
+ {
20127
+ "name": "scheduled_at",
20128
+ "type": "string",
20129
+ "location": "body",
20130
+ "required": false,
20131
+ "description": "Nova data de disparo (ISO 8601)"
20132
+ },
20133
+ {
20134
+ "name": "enabled",
20135
+ "type": "boolean",
20136
+ "location": "body",
20137
+ "required": false,
20138
+ "description": "Ativa/desativa sem apagar"
20139
+ }
20140
+ ],
20141
+ "returns": "{ campaign: {...} }",
20142
+ "common_use_cases": [
20143
+ "Corrigir mensagem antes do horário agendado",
20144
+ "Desativar campanha temporariamente"
20145
+ ],
20146
+ "related_tools": [
20147
+ "lionchat_campaigns_estimate_audience"
20148
+ ]
20149
+ },
20150
+ {
20151
+ "id": "lionchat_campaigns_destroy",
20152
+ "method": "DELETE",
20153
+ "path": "/api/v1/accounts/{account_id}/campaigns/{id}",
20154
+ "title": "Excluir Campanha",
20155
+ "description": "Remove uma campanha (agendada ou concluída). AÇÃO DESTRUTIVA — confirme com o usuário antes.",
20156
+ "category": "Campanhas",
20157
+ "params": [
20158
+ {
20159
+ "name": "id",
20160
+ "type": "integer",
20161
+ "location": "path",
20162
+ "required": true,
20163
+ "description": "display_id da campanha"
20164
+ }
20165
+ ],
20166
+ "returns": "200 OK",
20167
+ "common_use_cases": [
20168
+ "Cancelar disparo agendado"
20169
+ ],
20170
+ "related_tools": []
20171
+ },
20172
+ {
20173
+ "id": "lionchat_campaigns_statistics",
20174
+ "method": "GET",
20175
+ "path": "/api/v1/accounts/{account_id}/campaigns/{id}/statistics",
20176
+ "title": "Estatísticas da Campanha",
20177
+ "description": "Métricas de entrega de campanha one-off: total, enviadas, entregues, lidas, falhas e taxas (%).",
20178
+ "category": "Campanhas",
20179
+ "params": [
20180
+ {
20181
+ "name": "id",
20182
+ "type": "integer",
20183
+ "location": "path",
20184
+ "required": true,
20185
+ "description": "display_id da campanha"
20186
+ }
20187
+ ],
20188
+ "returns": "{ total, sent, delivered, read, failed, delivery_rate, read_rate }",
20189
+ "common_use_cases": [
20190
+ "Acompanhar desempenho do disparo",
20191
+ "Comparar campanhas"
20192
+ ],
20193
+ "related_tools": []
20194
+ },
20195
+ {
20196
+ "id": "lionchat_campaigns_estimate_audience",
20197
+ "method": "POST",
20198
+ "path": "/api/v1/accounts/{account_id}/campaigns/estimate_audience",
20199
+ "title": "Estimar Audiência da Campanha",
20200
+ "description": "Conta quantos contatos COM TELEFONE atendem aos critérios ANTES de criar a campanha. Usa o MESMO motor do disparo (estimativa = lista real). SEMPRE chame antes de campaigns_create e mostre o número ao usuário.",
20201
+ "category": "Campanhas",
20202
+ "params": [
20203
+ {
20204
+ "name": "audience",
20205
+ "type": "array",
20206
+ "location": "body",
20207
+ "required": true,
20208
+ "description": "Critérios de público — array de seções combináveis: { type: 'Label', id } | { type: 'Funnel', id, stages: ['slug_etapa'], include_won: bool, include_lost: bool } | { type: 'ConversationAttribute', key, value } (atributo personalizado da conversa, ex: origem_do_lead=instagram)"
20209
+ },
20210
+ {
20211
+ "name": "audience_mode",
20212
+ "type": "string",
20213
+ "location": "body",
20214
+ "required": false,
20215
+ "description": "Como combinar as seções do público: 'sum' (união, default — contato em QUALQUER seção entra) ou 'all' (interseção — precisa atender TODAS as seções preenchidas)"
20216
+ }
20217
+ ],
20218
+ "returns": "{ count: <int> }",
20219
+ "common_use_cases": [
20220
+ "Validar público antes do disparo",
20221
+ "Comparar união vs interseção dos critérios"
20222
+ ],
20223
+ "related_tools": [
20224
+ "lionchat_campaigns_create"
20225
+ ]
20226
+ },
20227
+ {
20228
+ "id": "lionchat_inboxes_campaigns_list",
20229
+ "method": "GET",
20230
+ "path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/campaigns",
20231
+ "title": "Campanhas de uma Caixa de Entrada",
20232
+ "description": "Lista as campanhas vinculadas a uma inbox específica (útil pra ver campanhas ongoing de um site).",
20233
+ "category": "Campanhas",
20234
+ "params": [
20235
+ {
20236
+ "name": "inbox_id",
20237
+ "type": "integer",
20238
+ "location": "path",
20239
+ "required": true,
20240
+ "description": "ID da caixa de entrada"
20241
+ }
20242
+ ],
20243
+ "returns": "{ campaigns: [...] }",
20244
+ "common_use_cases": [
20245
+ "Ver campanhas ativas de um canal"
20246
+ ],
20247
+ "related_tools": [
20248
+ "lionchat_campaigns_list"
20249
+ ]
20250
+ },
20251
+ {
20252
+ "id": "lionchat_topsend_campaigns_list",
20253
+ "method": "GET",
20254
+ "path": "/api/v1/accounts/{account_id}/topsend_campaigns",
20255
+ "title": "Listar Campanhas SMS/Voz (TopSend)",
20256
+ "description": "Lista campanhas de SMS e voz via TopSend. ADMIN-ONLY. Tipos: SMSSHORT (texto), SMSFLASH (tela), TVOZ (voz), URA (voz + teclas). Status: draft, pending, active, ended, cancelled, failed.",
20257
+ "category": "Campanhas SMS/Voz",
20258
+ "params": [
20259
+ {
20260
+ "name": "status",
20261
+ "type": "string",
20262
+ "location": "query",
20263
+ "required": false,
20264
+ "description": "Filtro: draft | pending | active | ended | cancelled | failed"
20265
+ },
20266
+ {
20267
+ "name": "type",
20268
+ "type": "string",
20269
+ "location": "query",
20270
+ "required": false,
20271
+ "description": "Filtro: SMSSHORT | SMSFLASH | TVOZ | URA"
20272
+ }
20273
+ ],
20274
+ "returns": "{ campaigns: [{ id, title, campaign_type, status, message, scheduled_at, total_recipients, delivered_count, failed_count, ... }] }",
20275
+ "common_use_cases": [
20276
+ "Ver campanhas SMS em rascunho",
20277
+ "Conferir falhas de disparo de voz"
20278
+ ],
20279
+ "related_tools": []
20280
+ },
20281
+ {
20282
+ "id": "lionchat_topsend_campaigns_show",
20283
+ "method": "GET",
20284
+ "path": "/api/v1/accounts/{account_id}/topsend_campaigns/{id}",
20285
+ "title": "Detalhe da Campanha TopSend",
20286
+ "description": "Detalhe completo de uma campanha SMS/voz: destinatários, áudio, resultados de entrega, ações DTMF. ADMIN-ONLY.",
20287
+ "category": "Campanhas SMS/Voz",
20288
+ "params": [
20289
+ {
20290
+ "name": "id",
20291
+ "type": "integer",
20292
+ "location": "path",
20293
+ "required": true,
20294
+ "description": "ID da campanha TopSend"
20295
+ }
20296
+ ],
20297
+ "returns": "{ campaign: {...} }",
20298
+ "common_use_cases": [
20299
+ "Auditar disparo SMS"
20300
+ ],
20301
+ "related_tools": []
20302
+ },
20303
+ {
20304
+ "id": "lionchat_topsend_campaigns_create",
20305
+ "method": "POST",
20306
+ "path": "/api/v1/accounts/{account_id}/topsend_campaigns",
20307
+ "title": "Criar Campanha SMS/Voz (TopSend)",
20308
+ "description": "Cria campanha SMS (SMSSHORT/SMSFLASH) ou voz (TVOZ/URA). ADMIN-ONLY. Destinatários: audience estruturado (Labels/Funnel) OU recipient_numbers manual. TVOZ/URA exigem áudio via audio_id (já na TopSend) ou audio_url (externa) — upload de arquivo não é suportado via MCP. ENVIO EM MASSA: confirme com o usuário. 422 sem destinatários ou voz sem áudio.",
20309
+ "category": "Campanhas SMS/Voz",
20310
+ "params": [
20311
+ {
20312
+ "name": "title",
20313
+ "type": "string",
20314
+ "location": "body",
20315
+ "required": true,
20316
+ "description": "Nome da campanha"
20317
+ },
20318
+ {
20319
+ "name": "campaign_type",
20320
+ "type": "string",
20321
+ "location": "body",
20322
+ "required": true,
20323
+ "description": "SMSSHORT | SMSFLASH | TVOZ | URA"
20324
+ },
20325
+ {
20326
+ "name": "message",
20327
+ "type": "string",
20328
+ "location": "body",
20329
+ "required": true,
20330
+ "description": "Texto do SMS (até 160 chars) ou roteiro de voz"
20331
+ },
20332
+ {
20333
+ "name": "scheduled_at",
20334
+ "type": "string",
20335
+ "location": "body",
20336
+ "required": false,
20337
+ "description": "Agendamento (ISO 8601); futuro = pending até o disparo"
20338
+ },
20339
+ {
20340
+ "name": "recipient_numbers",
20341
+ "type": "array",
20342
+ "location": "body",
20343
+ "required": false,
20344
+ "description": "Números manuais (+5511..., normalizador tolerante). Alternativa a audience"
20345
+ },
20346
+ {
20347
+ "name": "audience",
20348
+ "type": "array",
20349
+ "location": "body",
20350
+ "required": false,
20351
+ "description": "Seções Label/Funnel (mesmo formato das campanhas) — resolve pros telefones dos contatos"
20352
+ },
20353
+ {
20354
+ "name": "audio_id",
20355
+ "type": "string",
20356
+ "location": "body",
20357
+ "required": false,
20358
+ "description": "ID de áudio já enviado à TopSend (TVOZ/URA)"
20359
+ },
20360
+ {
20361
+ "name": "audio_url",
20362
+ "type": "string",
20363
+ "location": "body",
20364
+ "required": false,
20365
+ "description": "URL externa do áudio MP3 (TVOZ/URA)"
20366
+ },
20367
+ {
20368
+ "name": "dtmf_actions",
20369
+ "type": "object",
20370
+ "location": "body",
20371
+ "required": false,
20372
+ "description": "URA: mapeamento de teclas { '1': { automation_rule_id }, '2': null }"
20373
+ }
20374
+ ],
20375
+ "returns": "{ campaign: { id, status: 'draft'|'pending', ... } }",
20376
+ "common_use_cases": [
20377
+ "SMS pra etiqueta VIP",
20378
+ "Voz de confirmação de consulta agendada"
20379
+ ],
20380
+ "related_tools": [
20381
+ "lionchat_topsend_campaigns_test_connection"
20382
+ ]
20383
+ },
20384
+ {
20385
+ "id": "lionchat_topsend_campaigns_destroy",
20386
+ "method": "DELETE",
20387
+ "path": "/api/v1/accounts/{account_id}/topsend_campaigns/{id}",
20388
+ "title": "Excluir Campanha TopSend",
20389
+ "description": "Remove campanha TopSend. SÓ status 'draft' pode ser excluído (422 nos demais). ADMIN-ONLY.",
20390
+ "category": "Campanhas SMS/Voz",
20391
+ "params": [
20392
+ {
20393
+ "name": "id",
20394
+ "type": "integer",
20395
+ "location": "path",
20396
+ "required": true,
20397
+ "description": "ID da campanha TopSend"
20398
+ }
20399
+ ],
20400
+ "returns": "200 OK",
20401
+ "common_use_cases": [
20402
+ "Descartar rascunho"
20403
+ ],
20404
+ "related_tools": []
20405
+ },
20406
+ {
20407
+ "id": "lionchat_topsend_campaigns_test_connection",
20408
+ "method": "POST",
20409
+ "path": "/api/v1/accounts/{account_id}/topsend_campaigns/test_connection",
20410
+ "title": "Testar Conexão TopSend",
20411
+ "description": "Valida a chave de API TopSend configurada na conta. ADMIN-ONLY.",
20412
+ "category": "Campanhas SMS/Voz",
20413
+ "params": [],
20414
+ "returns": "{ success: true } ou { success: false, error }",
20415
+ "common_use_cases": [
20416
+ "Diagnosticar integração antes de criar campanha"
20417
+ ],
20418
+ "related_tools": []
20419
+ },
20420
+ {
20421
+ "id": "lionchat_flow_tools_list",
20422
+ "method": "GET",
20423
+ "path": "/api/v1/accounts/{account_id}/flow_tools",
20424
+ "title": "Listar Ferramentas da IA (ai_tool)",
20425
+ "description": "Lista os flows de tipo ai_tool — ferramentas que o AI Agente (Captain) invoca durante a conversa. ADMIN-ONLY. Inclui vínculos com assistentes.",
20426
+ "category": "Ferramentas da IA",
20427
+ "params": [],
20428
+ "returns": "[{ id, name, tool_name, tool_description, active, flow_type: 'ai_tool', assistant_flow_tools, created_at }]",
20429
+ "common_use_cases": [
20430
+ "Ver ferramentas disponíveis pra vincular a um assistente"
20431
+ ],
20432
+ "related_tools": [
20433
+ "lionchat_flow_tools_create",
20434
+ "lionchat_flows_schema_reference"
20435
+ ]
20436
+ },
20437
+ {
20438
+ "id": "lionchat_flow_tools_show",
20439
+ "method": "GET",
20440
+ "path": "/api/v1/accounts/{account_id}/flow_tools/{id}",
20441
+ "title": "Detalhe da Ferramenta da IA",
20442
+ "description": "Detalhe de um flow ai_tool, incluindo flow_data completo. ADMIN-ONLY.",
20443
+ "category": "Ferramentas da IA",
20444
+ "params": [
20445
+ {
20446
+ "name": "id",
20447
+ "type": "integer",
20448
+ "location": "path",
20449
+ "required": true,
20450
+ "description": "ID do flow tool"
20451
+ }
20452
+ ],
20453
+ "returns": "{ id, name, tool_name, tool_description, active, flow_data, ... }",
20454
+ "common_use_cases": [
20455
+ "Inspecionar antes de editar"
20456
+ ],
20457
+ "related_tools": [
20458
+ "lionchat_flow_tools_update"
20459
+ ]
20460
+ },
20461
+ {
20462
+ "id": "lionchat_flow_tools_create",
20463
+ "method": "POST",
20464
+ "path": "/api/v1/accounts/{account_id}/flow_tools",
20465
+ "title": "Criar Ferramenta da IA (ai_tool)",
20466
+ "description": "Cria flow de tipo ai_tool (a porta CERTA — NÃO use flows_create pra isso). ADMIN-ONLY. CHAME lionchat_flows_schema_reference ANTES: nó 'end' OBRIGATÓRIO, sem inbox_ids, nodes permitidos = start/end/api/condition/set_variable/ai/randomizer/action/send_message/note. Depois de criar: teste com flow_tools_run e vincule ao assistente com flow_tools_assistants_update.",
20467
+ "category": "Ferramentas da IA",
20468
+ "params": [
20469
+ {
20470
+ "name": "tool_name",
20471
+ "type": "string",
20472
+ "location": "body",
20473
+ "required": true,
20474
+ "description": "Identificador da ferramenta (snake_case, [a-z][a-z0-9_], máx 50) — é o que o LLM enxerga"
20475
+ },
20476
+ {
20477
+ "name": "tool_description",
20478
+ "type": "string",
20479
+ "location": "body",
20480
+ "required": false,
20481
+ "description": "Quando a IA deve usar a ferramenta (máx 500 chars) — seja específico"
20482
+ },
20483
+ {
20484
+ "name": "flow_data",
20485
+ "type": "object",
20486
+ "location": "body",
20487
+ "required": true,
20488
+ "description": "Canvas Vue Flow { nodes, edges } com nó end obrigatório (ver flows_schema_reference)"
20489
+ },
20490
+ {
20491
+ "name": "name",
20492
+ "type": "string",
20493
+ "location": "body",
20494
+ "required": false,
20495
+ "description": "Nome de exibição (default: tool_name)"
20496
+ },
20497
+ {
20498
+ "name": "active",
20499
+ "type": "boolean",
20500
+ "location": "body",
20501
+ "required": false,
20502
+ "description": "Ativa (default true)"
20503
+ }
20504
+ ],
20505
+ "returns": "{ id, tool_name, flow_type: 'ai_tool', ... } (201)",
20506
+ "common_use_cases": [
20507
+ "Ferramenta de consulta a API externa (status de pedido, CEP)",
20508
+ "Cálculo/decisão estruturada pro assistente"
20509
+ ],
20510
+ "related_tools": [
20511
+ "lionchat_flow_tools_run",
20512
+ "lionchat_flow_tools_assistants_update",
20513
+ "lionchat_flows_schema_reference"
20514
+ ]
20515
+ },
20516
+ {
20517
+ "id": "lionchat_flow_tools_update",
20518
+ "method": "PATCH",
20519
+ "path": "/api/v1/accounts/{account_id}/flow_tools/{id}",
20520
+ "title": "Atualizar Ferramenta da IA",
20521
+ "description": "Atualiza um flow ai_tool (mesmos campos do create). ADMIN-ONLY. Re-teste com flow_tools_run após mudar o flow_data.",
20522
+ "category": "Ferramentas da IA",
20523
+ "params": [
20524
+ {
20525
+ "name": "id",
20526
+ "type": "integer",
20527
+ "location": "path",
20528
+ "required": true,
20529
+ "description": "ID do flow tool"
20530
+ },
20531
+ {
20532
+ "name": "tool_name",
20533
+ "type": "string",
20534
+ "location": "body",
20535
+ "required": false,
20536
+ "description": "Novo identificador (snake_case)"
20537
+ },
20538
+ {
20539
+ "name": "tool_description",
20540
+ "type": "string",
20541
+ "location": "body",
20542
+ "required": false,
20543
+ "description": "Nova descrição"
20544
+ },
20545
+ {
20546
+ "name": "flow_data",
20547
+ "type": "object",
20548
+ "location": "body",
20549
+ "required": false,
20550
+ "description": "Novo canvas (nó end obrigatório)"
20551
+ },
20552
+ {
20553
+ "name": "name",
20554
+ "type": "string",
20555
+ "location": "body",
20556
+ "required": false,
20557
+ "description": "Novo nome de exibição"
20558
+ },
20559
+ {
20560
+ "name": "active",
20561
+ "type": "boolean",
20562
+ "location": "body",
20563
+ "required": false,
20564
+ "description": "Ativa/desativa"
20565
+ }
20566
+ ],
20567
+ "returns": "{ id, ... }",
20568
+ "common_use_cases": [
20569
+ "Ajustar URL da API consultada",
20570
+ "Refinar a descrição pra IA acertar quando usar"
20571
+ ],
20572
+ "related_tools": [
20573
+ "lionchat_flow_tools_run"
20574
+ ]
20575
+ },
20576
+ {
20577
+ "id": "lionchat_flow_tools_destroy",
20578
+ "method": "DELETE",
20579
+ "path": "/api/v1/accounts/{account_id}/flow_tools/{id}",
20580
+ "title": "Excluir Ferramenta da IA",
20581
+ "description": "Remove o flow ai_tool e os vínculos com assistentes. ADMIN-ONLY. DESTRUTIVO — confirme antes; confira os vínculos com flow_tools_assistants_list.",
20582
+ "category": "Ferramentas da IA",
20583
+ "params": [
20584
+ {
20585
+ "name": "id",
20586
+ "type": "integer",
20587
+ "location": "path",
20588
+ "required": true,
20589
+ "description": "ID do flow tool"
20590
+ }
20591
+ ],
20592
+ "returns": "204 No Content",
20593
+ "common_use_cases": [
20594
+ "Remover ferramenta obsoleta"
20595
+ ],
20596
+ "related_tools": [
20597
+ "lionchat_flow_tools_assistants_list"
20598
+ ]
20599
+ },
20600
+ {
20601
+ "id": "lionchat_flow_tools_toggle",
20602
+ "method": "POST",
20603
+ "path": "/api/v1/accounts/{account_id}/flow_tools/{id}/toggle",
20604
+ "title": "Ativar/Desativar Ferramenta da IA",
20605
+ "description": "Inverte o estado ativo da ferramenta (desativada = assistentes param de enxergar). ADMIN-ONLY.",
20606
+ "category": "Ferramentas da IA",
20607
+ "params": [
20608
+ {
20609
+ "name": "id",
20610
+ "type": "integer",
20611
+ "location": "path",
20612
+ "required": true,
20613
+ "description": "ID do flow tool"
20614
+ }
20615
+ ],
20616
+ "returns": "{ id, active }",
20617
+ "common_use_cases": [
20618
+ "Pausar ferramenta com problema sem apagar"
20619
+ ],
20620
+ "related_tools": []
20621
+ },
20622
+ {
20623
+ "id": "lionchat_flow_tools_run",
20624
+ "method": "POST",
20625
+ "path": "/api/v1/accounts/{account_id}/flow_tools/{id}/run",
20626
+ "title": "Testar Ferramenta da IA (execução manual)",
20627
+ "description": "Executa o flow ai_tool sincronamente com parâmetros explícitos, SEM passar pelo LLM. Cria FlowToolExecution auditável. ADMIN-ONLY, rate limit 60/min. Use SEMPRE antes de vincular ao assistente.",
20628
+ "category": "Ferramentas da IA",
20629
+ "params": [
20630
+ {
20631
+ "name": "id",
20632
+ "type": "integer",
20633
+ "location": "path",
20634
+ "required": true,
20635
+ "description": "ID do flow tool"
20636
+ },
20637
+ {
20638
+ "name": "flow_params",
20639
+ "type": "object",
20640
+ "location": "body",
20641
+ "required": false,
20642
+ "description": "Parâmetros de entrada do flow, ex: { \"numero_pedido\": \"123\" }"
20643
+ }
20644
+ ],
20645
+ "returns": "{ execution_id, status, output_result, variables, execution_log, error_message, duration_ms }",
20646
+ "common_use_cases": [
20647
+ "Validar a ferramenta com dados reais",
20648
+ "Depurar erro de execução"
20649
+ ],
20650
+ "related_tools": [
20651
+ "lionchat_flow_tool_executions_show"
20652
+ ]
20653
+ },
20654
+ {
20655
+ "id": "lionchat_flow_tools_assistants_list",
20656
+ "method": "GET",
20657
+ "path": "/api/v1/accounts/{account_id}/flow_tools/{id}/assistants",
20658
+ "title": "Assistentes Vinculados à Ferramenta",
20659
+ "description": "Lista quais AI Agentes (Captain::Assistant) usam esta ferramenta. ADMIN-ONLY.",
20660
+ "category": "Ferramentas da IA",
20661
+ "params": [
20662
+ {
20663
+ "name": "id",
20664
+ "type": "integer",
20665
+ "location": "path",
20666
+ "required": true,
20667
+ "description": "ID do flow tool"
20668
+ }
20669
+ ],
20670
+ "returns": "{ assistant_ids: [..], assistants: [{ id, name }] }",
20671
+ "common_use_cases": [
20672
+ "Conferir impacto antes de editar/excluir"
20673
+ ],
20674
+ "related_tools": [
20675
+ "lionchat_flow_tools_assistants_update"
20676
+ ]
20677
+ },
20678
+ {
20679
+ "id": "lionchat_flow_tools_assistants_update",
20680
+ "method": "POST",
20681
+ "path": "/api/v1/accounts/{account_id}/flow_tools/{id}/assistants",
20682
+ "title": "Vincular Ferramenta aos Assistentes",
20683
+ "description": "SINCRONIZA a lista de assistentes que usam a ferramenta (substitui a lista inteira — IDs ausentes são DESVINCULADOS). Idempotente; IDs de outra conta são ignorados. ADMIN-ONLY.",
20684
+ "category": "Ferramentas da IA",
20685
+ "params": [
20686
+ {
20687
+ "name": "id",
20688
+ "type": "integer",
20689
+ "location": "path",
20690
+ "required": true,
20691
+ "description": "ID do flow tool"
20692
+ },
20693
+ {
20694
+ "name": "assistant_ids",
20695
+ "type": "array",
20696
+ "location": "body",
20697
+ "required": true,
20698
+ "description": "Lista FINAL de IDs de assistentes (leia a lista atual antes pra não desvincular sem querer)"
20699
+ }
20700
+ ],
20701
+ "returns": "{ assistant_ids: [...] }",
20702
+ "common_use_cases": [
20703
+ "Disponibilizar a ferramenta pro AI Agente",
20704
+ "Remover de um assistente específico"
20705
+ ],
20706
+ "related_tools": [
20707
+ "lionchat_flow_tools_assistants_list"
20708
+ ]
20709
+ },
20710
+ {
20711
+ "id": "lionchat_flow_tools_executions_list",
20712
+ "method": "GET",
20713
+ "path": "/api/v1/accounts/{account_id}/flow_tools/{id}/executions",
20714
+ "title": "Execuções da Ferramenta da IA",
20715
+ "description": "Últimas 50 execuções (manuais e via LLM) com status e duração. ADMIN-ONLY.",
20716
+ "category": "Ferramentas da IA",
20717
+ "params": [
20718
+ {
20719
+ "name": "id",
20720
+ "type": "integer",
20721
+ "location": "path",
20722
+ "required": true,
20723
+ "description": "ID do flow tool"
20724
+ }
20725
+ ],
20726
+ "returns": "[{ id, status, started_at, completed_at, duration_ms, error_message }]",
20727
+ "common_use_cases": [
20728
+ "Monitorar saúde da ferramenta",
20729
+ "Achar execuções com falha"
20730
+ ],
20731
+ "related_tools": [
20732
+ "lionchat_flow_tool_executions_show"
20733
+ ]
20734
+ },
20735
+ {
20736
+ "id": "lionchat_flow_tool_executions_show",
20737
+ "method": "GET",
20738
+ "path": "/api/v1/accounts/{account_id}/flow_tool_executions/{id}",
20739
+ "title": "Detalhe de Execução da Ferramenta",
20740
+ "description": "Detalhe completo de UMA execução: entrada, saída, log passo a passo, variáveis, nós visitados e a resposta da IA na sequência (se houver). PII é redigida automaticamente. ADMIN-ONLY.",
20741
+ "category": "Ferramentas da IA",
20742
+ "params": [
20743
+ {
20744
+ "name": "id",
20745
+ "type": "integer",
20746
+ "location": "path",
20747
+ "required": true,
20748
+ "description": "ID da execução (FlowToolExecution)"
20749
+ }
20750
+ ],
20751
+ "returns": "{ id, flow_id, status, input_params, output_result, execution_log, variables, canvas_detail, ai_response, duration_ms, error_message }",
20752
+ "common_use_cases": [
20753
+ "Depurar por que a ferramenta retornou errado pro LLM"
20754
+ ],
20755
+ "related_tools": []
20756
+ },
20757
+ {
20758
+ "id": "lionchat_flows_executions_list",
20759
+ "method": "GET",
20760
+ "path": "/api/v1/accounts/{account_id}/flows/{id}/executions",
20761
+ "title": "Execuções de um Flow",
20762
+ "description": "Histórico de execuções (sessões) de um flow de conversa, com filtros. ADMIN-ONLY, rate limit 60/min. Janela de datas limitada a 90 dias.",
20763
+ "category": "Flows",
20764
+ "params": [
20765
+ {
20766
+ "name": "id",
20767
+ "type": "integer",
20768
+ "location": "path",
20769
+ "required": true,
20770
+ "description": "ID do flow"
20771
+ },
20772
+ {
20773
+ "name": "status",
20774
+ "type": "string",
20775
+ "location": "query",
20776
+ "required": false,
20777
+ "description": "Filtrar por status: pending | running | completed | failed"
20778
+ },
20779
+ {
20780
+ "name": "from",
20781
+ "type": "string",
20782
+ "location": "query",
20783
+ "required": false,
20784
+ "description": "Início ISO 8601 (default: 7 dias atrás)"
20785
+ },
20786
+ {
20787
+ "name": "to",
20788
+ "type": "string",
20789
+ "location": "query",
20790
+ "required": false,
20791
+ "description": "Fim ISO 8601 (default: agora; máx 90 dias de janela)"
20792
+ },
20793
+ {
20794
+ "name": "q",
20795
+ "type": "string",
20796
+ "location": "query",
20797
+ "required": false,
20798
+ "description": "Busca por nome do contato ou nº da conversa (mín 2 chars)"
20799
+ },
20800
+ {
20801
+ "name": "page",
20802
+ "type": "integer",
20803
+ "location": "query",
20804
+ "required": false,
20805
+ "description": "Página (default 1)"
20806
+ },
20807
+ {
20808
+ "name": "per_page",
20809
+ "type": "integer",
20810
+ "location": "query",
20811
+ "required": false,
20812
+ "description": "Itens por página (default 25, máx 100)"
20813
+ }
20814
+ ],
20815
+ "returns": "{ data: [{ id, status, contact_name, conversation_display_id, started_at, completed_at }], meta }",
20816
+ "common_use_cases": [
20817
+ "Diagnosticar 'o flow não disparou'",
20818
+ "Ver quantos clientes passaram pelo flow hoje"
20819
+ ],
20820
+ "related_tools": [
20821
+ "lionchat_flows_show"
20822
+ ]
20823
+ },
20824
+ {
20825
+ "id": "lionchat_flow_versions_list",
20826
+ "method": "GET",
20827
+ "path": "/api/v1/accounts/{account_id}/flows/{flow_id}/versions",
20828
+ "title": "Histórico de Versões do Flow",
20829
+ "description": "Lista o histórico de edições do flow: quem editou, quando, resumo do diff. ADMIN-ONLY.",
20830
+ "category": "Flows",
20831
+ "params": [
20832
+ {
20833
+ "name": "flow_id",
20834
+ "type": "integer",
20835
+ "location": "path",
20836
+ "required": true,
20837
+ "description": "ID do flow"
20838
+ },
20839
+ {
20840
+ "name": "page",
20841
+ "type": "integer",
20842
+ "location": "query",
20843
+ "required": false,
20844
+ "description": "Página"
20845
+ }
20846
+ ],
20847
+ "returns": "{ data: [{ id, version, action, created_at, user, diff_summary }], meta }",
20848
+ "common_use_cases": [
20849
+ "Auditar quem mudou o flow",
20850
+ "Achar versão pra comparar"
20851
+ ],
20852
+ "related_tools": [
20853
+ "lionchat_flow_versions_show"
20854
+ ]
20855
+ },
20856
+ {
20857
+ "id": "lionchat_flow_versions_show",
20858
+ "method": "GET",
20859
+ "path": "/api/v1/accounts/{account_id}/flows/{flow_id}/versions/{id}",
20860
+ "title": "Detalhe de Versão do Flow",
20861
+ "description": "Retorna uma versão específica com o snapshot completo do canvas naquele momento. ADMIN-ONLY.",
20862
+ "category": "Flows",
20863
+ "params": [
20864
+ {
20865
+ "name": "flow_id",
20866
+ "type": "integer",
20867
+ "location": "path",
20868
+ "required": true,
20869
+ "description": "ID do flow"
20870
+ },
20871
+ {
20872
+ "name": "id",
20873
+ "type": "integer",
20874
+ "location": "path",
20875
+ "required": true,
20876
+ "description": "ID da versão"
20877
+ }
20878
+ ],
20879
+ "returns": "{ id, version, created_at, user, snapshot: { nodes, edges } }",
20880
+ "common_use_cases": [
20881
+ "Ver como o flow era antes de uma mudança"
20882
+ ],
20883
+ "related_tools": [
20884
+ "lionchat_flow_versions_list"
20885
+ ]
20886
+ },
20887
+ {
20888
+ "id": "lionchat_whatsapp_calls_list",
20889
+ "method": "GET",
20890
+ "path": "/api/v1/accounts/{account_id}/whatsapp_calls",
20891
+ "title": "Listar Ligações WhatsApp",
20892
+ "description": "Histórico de ligações de VOZ pelo WhatsApp (API oficial — NÃO confundir com voip_* que é telefonia Zenvia). Sem page = modo popup (por contato/favoritas); com page = histórico completo paginado com filtros.",
20893
+ "category": "Ligacoes WhatsApp",
20894
+ "params": [
20895
+ {
20896
+ "name": "contact_id",
20897
+ "type": "integer",
20898
+ "location": "query",
20899
+ "required": false,
20900
+ "description": "Ligações de um contato específico"
20901
+ },
20902
+ {
20903
+ "name": "favorites",
20904
+ "type": "boolean",
20905
+ "location": "query",
20906
+ "required": false,
20907
+ "description": "Só favoritas (modo popup)"
20908
+ },
20909
+ {
20910
+ "name": "page",
20911
+ "type": "integer",
20912
+ "location": "query",
20913
+ "required": false,
20914
+ "description": "Página — presença ativa o modo histórico paginado"
20915
+ },
20916
+ {
20917
+ "name": "per",
20918
+ "type": "integer",
20919
+ "location": "query",
20920
+ "required": false,
20921
+ "description": "Itens por página (default 25, máx 100)"
20922
+ },
20923
+ {
20924
+ "name": "status",
20925
+ "type": "string",
20926
+ "location": "query",
20927
+ "required": false,
20928
+ "description": "Filtro: ringing | accepted | completed | failed"
20929
+ },
20930
+ {
20931
+ "name": "agent_id",
20932
+ "type": "integer",
20933
+ "location": "query",
20934
+ "required": false,
20935
+ "description": "Filtro por agente que atendeu"
20936
+ },
20937
+ {
20938
+ "name": "q",
20939
+ "type": "string",
20940
+ "location": "query",
20941
+ "required": false,
20942
+ "description": "Busca por nome/telefone/observação"
20943
+ }
20944
+ ],
20945
+ "returns": "[{ id, contact_name, phone_number, status, direction, duration_seconds, favorited, custom_name, created_at }] ou { data, meta } no modo paginado",
20946
+ "common_use_cases": [
20947
+ "Ver histórico de ligações de um cliente",
20948
+ "Achar ligações perdidas do dia"
20949
+ ],
20950
+ "related_tools": [
20951
+ "lionchat_whatsapp_calls_show",
20952
+ "lionchat_whatsapp_calls_transcribe"
20953
+ ]
20954
+ },
20955
+ {
20956
+ "id": "lionchat_whatsapp_calls_show",
20957
+ "method": "GET",
20958
+ "path": "/api/v1/accounts/{account_id}/whatsapp_calls/{id}",
20959
+ "title": "Detalhe da Ligação WhatsApp",
20960
+ "description": "Detalhe completo de uma ligação: duração, quem atendeu, gravação, transcrição (se gerada).",
20961
+ "category": "Ligacoes WhatsApp",
20962
+ "params": [
20963
+ {
20964
+ "name": "id",
20965
+ "type": "integer",
20966
+ "location": "path",
20967
+ "required": true,
20968
+ "description": "ID da ligação"
20969
+ }
20970
+ ],
20971
+ "returns": "{ id, contact_id, status, direction, duration_seconds, accepted_by_agent_id, custom_name, favorited, transcript, transcript_status }",
20972
+ "common_use_cases": [
20973
+ "Ler a transcrição de uma ligação"
20974
+ ],
20975
+ "related_tools": [
20976
+ "lionchat_whatsapp_calls_transcribe"
20977
+ ]
20978
+ },
20979
+ {
20980
+ "id": "lionchat_whatsapp_calls_update",
20981
+ "method": "PATCH",
20982
+ "path": "/api/v1/accounts/{account_id}/whatsapp_calls/{id}",
20983
+ "title": "Atualizar Ligação (observação/favorita)",
20984
+ "description": "Define observação (custom_name) e/ou marca como favorita.",
20985
+ "category": "Ligacoes WhatsApp",
20986
+ "params": [
20987
+ {
20988
+ "name": "id",
20989
+ "type": "integer",
20990
+ "location": "path",
20991
+ "required": true,
20992
+ "description": "ID da ligação"
20993
+ },
20994
+ {
20995
+ "name": "custom_name",
20996
+ "type": "string",
20997
+ "location": "body",
20998
+ "required": false,
20999
+ "description": "Observação/apelido da ligação"
21000
+ },
21001
+ {
21002
+ "name": "favorited",
21003
+ "type": "boolean",
21004
+ "location": "body",
21005
+ "required": false,
21006
+ "description": "Marcar/desmarcar favorita"
21007
+ }
21008
+ ],
21009
+ "returns": "{ id, custom_name, favorited }",
21010
+ "common_use_cases": [
21011
+ "Anotar do que se tratou a ligação"
21012
+ ],
21013
+ "related_tools": []
21014
+ },
21015
+ {
21016
+ "id": "lionchat_whatsapp_calls_toggle_favorite",
21017
+ "method": "POST",
21018
+ "path": "/api/v1/accounts/{account_id}/whatsapp_calls/{id}/toggle_favorite",
21019
+ "title": "Alternar Favorita",
21020
+ "description": "Inverte o estado de favorita da ligação.",
21021
+ "category": "Ligacoes WhatsApp",
21022
+ "params": [
21023
+ {
21024
+ "name": "id",
21025
+ "type": "integer",
21026
+ "location": "path",
21027
+ "required": true,
21028
+ "description": "ID da ligação"
21029
+ }
21030
+ ],
21031
+ "returns": "{ id, favorited }",
21032
+ "common_use_cases": [
21033
+ "Marcar ligação importante"
21034
+ ],
21035
+ "related_tools": []
21036
+ },
21037
+ {
21038
+ "id": "lionchat_whatsapp_calls_transcribe",
21039
+ "method": "POST",
21040
+ "path": "/api/v1/accounts/{account_id}/whatsapp_calls/{id}/transcribe",
21041
+ "title": "Transcrever Ligação com IA",
21042
+ "description": "Dispara a transcrição da gravação por IA (assíncrono — usa a chave de IA da conta, tem custo). Acompanhe pelo transcript_status no show (pending → processing → completed/failed).",
21043
+ "category": "Ligacoes WhatsApp",
21044
+ "params": [
21045
+ {
21046
+ "name": "id",
21047
+ "type": "integer",
21048
+ "location": "path",
21049
+ "required": true,
21050
+ "description": "ID da ligação"
21051
+ }
21052
+ ],
21053
+ "returns": "200 OK (job enfileirado)",
21054
+ "common_use_cases": [
21055
+ "Gerar transcrição sob demanda",
21056
+ "Re-transcrever após falha"
21057
+ ],
21058
+ "related_tools": [
21059
+ "lionchat_whatsapp_calls_show"
21060
+ ]
21061
+ },
21062
+ {
21063
+ "id": "lionchat_inboxes_enable_whatsapp_calling",
21064
+ "method": "POST",
21065
+ "path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/enable_whatsapp_calling",
21066
+ "title": "Ativar Ligações WhatsApp na Caixa",
21067
+ "description": "Habilita chamadas de voz na inbox WhatsApp oficial (Cloud API com suporte a voz). ADMIN-ONLY. É mudança de config — confirme com o usuário.",
21068
+ "category": "Ligacoes WhatsApp",
21069
+ "params": [
21070
+ {
21071
+ "name": "inbox_id",
21072
+ "type": "integer",
21073
+ "location": "path",
21074
+ "required": true,
21075
+ "description": "ID da caixa de entrada"
21076
+ }
21077
+ ],
21078
+ "returns": "200 OK",
21079
+ "common_use_cases": [
21080
+ "Habilitar voz no número oficial"
21081
+ ],
21082
+ "related_tools": [
21083
+ "lionchat_inboxes_disable_whatsapp_calling"
21084
+ ]
21085
+ },
21086
+ {
21087
+ "id": "lionchat_inboxes_disable_whatsapp_calling",
21088
+ "method": "POST",
21089
+ "path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/disable_whatsapp_calling",
21090
+ "title": "Desativar Ligações WhatsApp na Caixa",
21091
+ "description": "Desabilita chamadas de voz na inbox. ADMIN-ONLY. É mudança de config — confirme com o usuário.",
21092
+ "category": "Ligacoes WhatsApp",
21093
+ "params": [
21094
+ {
21095
+ "name": "inbox_id",
21096
+ "type": "integer",
21097
+ "location": "path",
21098
+ "required": true,
21099
+ "description": "ID da caixa de entrada"
21100
+ }
21101
+ ],
21102
+ "returns": "200 OK",
21103
+ "common_use_cases": [
21104
+ "Desligar voz temporariamente"
21105
+ ],
21106
+ "related_tools": []
21107
+ },
21108
+ {
21109
+ "id": "lionchat_upload_limits_show",
21110
+ "method": "GET",
21111
+ "path": "/api/v1/accounts/{account_id}/upload_limits",
21112
+ "title": "Limites de Upload por Tipo",
21113
+ "description": "Retorna o teto de upload em MB por tipo de arquivo. Consulte antes de subir anexo grande (evita 422).",
21114
+ "category": "Upload",
21115
+ "params": [],
21116
+ "returns": "{ image, video, audio, document, fallback } (valores em MB)",
21117
+ "common_use_cases": [
21118
+ "Validar tamanho antes de anexar arquivo em mensagem"
21119
+ ],
21120
+ "related_tools": [
21121
+ "lionchat_upload_create"
21122
+ ]
21123
+ },
21124
+ {
21125
+ "id": "lionchat_liontrack_journey_stages_list",
21126
+ "method": "GET",
21127
+ "path": "/api/v1/accounts/{account_id}/liontrack/journey_stages",
21128
+ "title": "Listar Fases da Jornada do Lead",
21129
+ "description": "Regras que mapeiam padrão de URL → fase da jornada (Topo/Meio/Fundo/Compra etc). Exige feature liontrack (404 sem ela) e permissão de relatórios.",
21130
+ "category": "LionTrack",
21131
+ "params": [],
21132
+ "returns": "[{ id, stage, url_pattern, position }]",
21133
+ "common_use_cases": [
21134
+ "Conferir fases antes de ler o relatório de jornada"
21135
+ ],
21136
+ "related_tools": [
21137
+ "lionchat_journey_funnel_reports",
21138
+ "lionchat_liontrack_journey_stages_create"
21139
+ ]
21140
+ },
21141
+ {
21142
+ "id": "lionchat_liontrack_journey_stages_create",
21143
+ "method": "POST",
21144
+ "path": "/api/v1/accounts/{account_id}/liontrack/journey_stages",
21145
+ "title": "Criar Fase da Jornada",
21146
+ "description": "Cria regra URL → fase. url_pattern é match LITERAL de trecho da URL (sem regex; ex: '/checkout', '/blog/'). Exige feature liontrack + permissão de relatórios.",
21147
+ "category": "LionTrack",
21148
+ "params": [
21149
+ {
21150
+ "name": "stage",
21151
+ "type": "string",
21152
+ "location": "body",
21153
+ "required": true,
21154
+ "description": "Nome da fase (ex: 'Topo', 'Fundo', 'Compra')"
21155
+ },
21156
+ {
21157
+ "name": "url_pattern",
21158
+ "type": "string",
21159
+ "location": "body",
21160
+ "required": true,
21161
+ "description": "Trecho literal da URL que identifica a fase (máx 255)"
21162
+ },
21163
+ {
21164
+ "name": "position",
21165
+ "type": "integer",
21166
+ "location": "body",
21167
+ "required": false,
21168
+ "description": "Ordem da fase no painel"
21169
+ }
21170
+ ],
21171
+ "returns": "{ id, stage, url_pattern, position } (201)",
21172
+ "common_use_cases": [
21173
+ "Mapear '/precos' como Fundo de funil"
21174
+ ],
21175
+ "related_tools": [
21176
+ "lionchat_liontrack_journey_stages_list"
21177
+ ]
21178
+ },
21179
+ {
21180
+ "id": "lionchat_liontrack_journey_stages_update",
21181
+ "method": "PATCH",
21182
+ "path": "/api/v1/accounts/{account_id}/liontrack/journey_stages/{id}",
21183
+ "title": "Atualizar Fase da Jornada",
21184
+ "description": "Edita uma regra de fase (nome, padrão de URL, ordem).",
21185
+ "category": "LionTrack",
21186
+ "params": [
21187
+ {
21188
+ "name": "id",
21189
+ "type": "integer",
21190
+ "location": "path",
21191
+ "required": true,
21192
+ "description": "ID da regra"
21193
+ },
21194
+ {
21195
+ "name": "stage",
21196
+ "type": "string",
21197
+ "location": "body",
21198
+ "required": false,
21199
+ "description": "Novo nome da fase"
21200
+ },
21201
+ {
21202
+ "name": "url_pattern",
21203
+ "type": "string",
21204
+ "location": "body",
21205
+ "required": false,
21206
+ "description": "Novo padrão literal"
21207
+ },
21208
+ {
21209
+ "name": "position",
21210
+ "type": "integer",
21211
+ "location": "body",
21212
+ "required": false,
21213
+ "description": "Nova ordem"
21214
+ }
21215
+ ],
21216
+ "returns": "{ id, stage, url_pattern, position }",
21217
+ "common_use_cases": [
21218
+ "Reordenar fases do painel"
21219
+ ],
21220
+ "related_tools": []
21221
+ },
21222
+ {
21223
+ "id": "lionchat_liontrack_journey_stages_destroy",
21224
+ "method": "DELETE",
21225
+ "path": "/api/v1/accounts/{account_id}/liontrack/journey_stages/{id}",
21226
+ "title": "Excluir Fase da Jornada",
21227
+ "description": "Remove uma regra de fase (as pageviews continuam — só deixam de ser agrupadas nessa fase).",
21228
+ "category": "LionTrack",
21229
+ "params": [
21230
+ {
21231
+ "name": "id",
21232
+ "type": "integer",
21233
+ "location": "path",
21234
+ "required": true,
21235
+ "description": "ID da regra"
21236
+ }
21237
+ ],
21238
+ "returns": "200 OK",
21239
+ "common_use_cases": [
21240
+ "Remover fase descontinuada"
21241
+ ],
21242
+ "related_tools": []
21243
+ },
21244
+ {
21245
+ "id": "lionchat_journey_funnel_reports",
21246
+ "method": "GET",
21247
+ "path": "/api/v2/accounts/{account_id}/journey_funnel_reports",
21248
+ "title": "Relatório Jornada do Lead",
21249
+ "description": "Mapa agregado de navegação dos leads no site (nós = páginas, arestas = transições, agrupado por fase). Janela MÁXIMA de 30 dias (acima é cortado). URLs sem querystring (LGPD). Exige feature liontrack + permissão de relatórios.",
21250
+ "category": "LionTrack",
21251
+ "params": [
21252
+ {
21253
+ "name": "since",
21254
+ "type": "string",
21255
+ "location": "query",
21256
+ "required": false,
21257
+ "description": "Início ISO 8601"
21258
+ },
21259
+ {
21260
+ "name": "until",
21261
+ "type": "string",
21262
+ "location": "query",
21263
+ "required": false,
21264
+ "description": "Fim ISO 8601 (máx 30 dias após since)"
21265
+ },
21266
+ {
21267
+ "name": "utm_source",
21268
+ "type": "string",
21269
+ "location": "query",
21270
+ "required": false,
21271
+ "description": "Filtra por origem (utm_source)"
21272
+ },
21273
+ {
21274
+ "name": "utm_campaign",
21275
+ "type": "string",
21276
+ "location": "query",
21277
+ "required": false,
21278
+ "description": "Filtra por campanha (utm_campaign)"
21279
+ },
21280
+ {
21281
+ "name": "device_name",
21282
+ "type": "string",
21283
+ "location": "query",
21284
+ "required": false,
21285
+ "description": "Filtra por dispositivo (mobile/desktop)"
21286
+ },
21287
+ {
21288
+ "name": "country",
21289
+ "type": "string",
21290
+ "location": "query",
21291
+ "required": false,
21292
+ "description": "Filtra por país (código ISO 2 letras)"
21293
+ },
21294
+ {
21295
+ "name": "contact_id",
21296
+ "type": "integer",
21297
+ "location": "query",
21298
+ "required": false,
21299
+ "description": "Trilha de UM lead específico"
21300
+ },
21301
+ {
21302
+ "name": "with_conversation",
21303
+ "type": "boolean",
21304
+ "location": "query",
21305
+ "required": false,
21306
+ "description": "true = só pageviews de quem virou conversa"
21307
+ }
21308
+ ],
21309
+ "returns": "{ nodes: [{ path, stage, visits, unique_visitors }], edges: [{ from, to, count }], totals }",
21310
+ "common_use_cases": [
21311
+ "Por onde os leads entram e onde desistem",
21312
+ "Caminho de quem veio da campanha X"
21313
+ ],
21314
+ "related_tools": [
21315
+ "lionchat_liontrack_journey_stages_list"
21316
+ ]
21317
+ },
21318
+ {
21319
+ "id": "lionchat_inboxes_waha_status",
21320
+ "method": "GET",
21321
+ "path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/waha/status",
21322
+ "title": "Status da Conexão WhatsApp (WAHA)",
21323
+ "description": "Status em tempo real da sessão WhatsApp QR Code da inbox (WORKING = conectado, SCAN_QR_CODE = precisa escanear, STOPPED/FAILED = problema). SÓ LEITURA. Detecta troca de número.",
21324
+ "category": "Caixas de Entrada",
21325
+ "params": [
21326
+ {
21327
+ "name": "inbox_id",
21328
+ "type": "integer",
21329
+ "location": "path",
21330
+ "required": true,
21331
+ "description": "ID da caixa de entrada WAHA"
21332
+ }
21333
+ ],
21334
+ "returns": "{ status, connected, phone_number, qr_code_available, phone_number_changed }",
21335
+ "common_use_cases": [
21336
+ "Diagnosticar 'mensagens não estão saindo' (sessão caiu?)"
21337
+ ],
21338
+ "related_tools": []
21339
+ },
21340
+ {
21341
+ "id": "lionchat_internal_chat_rooms_list",
21342
+ "method": "GET",
21343
+ "path": "/api/v1/accounts/{account_id}/internal_chat/rooms",
21344
+ "title": "Listar Salas do Chat Interno",
21345
+ "description": "Salas de conversa ENTRE AGENTES da conta (não envolve cliente). Tipos: direct (1:1) e multi_user (grupo). Traz última mensagem e contagem de não lidas. Cada agente vê só as próprias salas.",
21346
+ "category": "Chat Interno",
21347
+ "params": [
21348
+ {
21349
+ "name": "kind",
21350
+ "type": "string",
21351
+ "location": "query",
21352
+ "required": false,
21353
+ "description": "Filtro: all (default) | direct | multi_user"
21354
+ },
21355
+ {
21356
+ "name": "q",
21357
+ "type": "string",
21358
+ "location": "query",
21359
+ "required": false,
21360
+ "description": "Busca por nome da sala ou nome/e-mail de membro"
21361
+ },
21362
+ {
21363
+ "name": "page",
21364
+ "type": "integer",
21365
+ "location": "query",
21366
+ "required": false,
21367
+ "description": "Página (default 1)"
21368
+ },
21369
+ {
21370
+ "name": "per_page",
21371
+ "type": "integer",
21372
+ "location": "query",
21373
+ "required": false,
21374
+ "description": "Itens por página (default 50, máx 100)"
21375
+ }
21376
+ ],
21377
+ "returns": "{ rooms: [{ id, kind, name, display_name, last_message, unread_count, member_ids }], counts, meta }",
21378
+ "common_use_cases": [
21379
+ "Ver salas com mensagens não lidas"
21380
+ ],
21381
+ "related_tools": [
21382
+ "lionchat_internal_chat_messages_list",
21383
+ "lionchat_internal_chat_rooms_create"
21384
+ ]
21385
+ },
21386
+ {
21387
+ "id": "lionchat_internal_chat_rooms_show",
21388
+ "method": "GET",
21389
+ "path": "/api/v1/accounts/{account_id}/internal_chat/rooms/{id}",
21390
+ "title": "Detalhe da Sala",
21391
+ "description": "Detalhe de uma sala do chat interno com a lista de membros.",
21392
+ "category": "Chat Interno",
21393
+ "params": [
21394
+ {
21395
+ "name": "id",
21396
+ "type": "integer",
21397
+ "location": "path",
21398
+ "required": true,
21399
+ "description": "ID da sala"
21400
+ }
21401
+ ],
21402
+ "returns": "{ id, kind, name, members: [{ id, name, email, member_role }], unread_count }",
21403
+ "common_use_cases": [
21404
+ "Conferir membros antes de mandar mensagem"
21405
+ ],
21406
+ "related_tools": [
21407
+ "lionchat_internal_chat_messages_create"
21408
+ ]
21409
+ },
21410
+ {
21411
+ "id": "lionchat_internal_chat_rooms_create",
21412
+ "method": "POST",
21413
+ "path": "/api/v1/accounts/{account_id}/internal_chat/rooms",
21414
+ "title": "Criar Sala (ou abrir 1:1 existente)",
21415
+ "description": "Cria sala direct (1:1 — se já existir com aquela pessoa, retorna a existente com was_created=false) ou multi_user (grupo, exige name).",
21416
+ "category": "Chat Interno",
21417
+ "params": [
21418
+ {
21419
+ "name": "kind",
21420
+ "type": "string",
21421
+ "location": "body",
21422
+ "required": true,
21423
+ "description": "'direct' (1:1) ou 'multi_user' (grupo)"
21424
+ },
21425
+ {
21426
+ "name": "name",
21427
+ "type": "string",
21428
+ "location": "body",
21429
+ "required": false,
21430
+ "description": "Nome do grupo (obrigatório em multi_user)"
21431
+ },
21432
+ {
21433
+ "name": "user_id",
21434
+ "type": "integer",
21435
+ "location": "body",
21436
+ "required": false,
21437
+ "description": "direct: ID do outro agente"
21438
+ },
21439
+ {
21440
+ "name": "user_ids",
21441
+ "type": "array",
21442
+ "location": "body",
21443
+ "required": false,
21444
+ "description": "multi_user: IDs dos membros (criador entra automático)"
21445
+ }
21446
+ ],
21447
+ "returns": "{ id, kind, name, members, was_created }",
21448
+ "common_use_cases": [
21449
+ "Mandar recado pra um colega",
21450
+ "Criar grupo do time de vendas"
21451
+ ],
21452
+ "related_tools": [
21453
+ "lionchat_internal_chat_messages_create"
21454
+ ]
21455
+ },
21456
+ {
21457
+ "id": "lionchat_internal_chat_rooms_update",
21458
+ "method": "PATCH",
21459
+ "path": "/api/v1/accounts/{account_id}/internal_chat/rooms/{id}",
21460
+ "title": "Renomear Sala / Atualizar Dados",
21461
+ "description": "Renomeia sala multi_user (salas direct não podem ser renomeadas) ou atualiza metadados.",
21462
+ "category": "Chat Interno",
21463
+ "params": [
21464
+ {
21465
+ "name": "id",
21466
+ "type": "integer",
21467
+ "location": "path",
21468
+ "required": true,
21469
+ "description": "ID da sala"
21470
+ },
21471
+ {
21472
+ "name": "name",
21473
+ "type": "string",
21474
+ "location": "body",
21475
+ "required": false,
21476
+ "description": "Novo nome (não pode ser vazio)"
21477
+ },
21478
+ {
21479
+ "name": "additional_data",
21480
+ "type": "object",
21481
+ "location": "body",
21482
+ "required": false,
21483
+ "description": "Metadados livres (merge com o existente)"
21484
+ }
21485
+ ],
21486
+ "returns": "{ id, name, additional_data }",
21487
+ "common_use_cases": [
21488
+ "Renomear grupo do time"
21489
+ ],
21490
+ "related_tools": []
21491
+ },
21492
+ {
21493
+ "id": "lionchat_internal_chat_rooms_mark_read",
21494
+ "method": "POST",
21495
+ "path": "/api/v1/accounts/{account_id}/internal_chat/rooms/{id}/mark_read",
21496
+ "title": "Marcar Sala como Lida",
21497
+ "description": "Marca todas as mensagens da sala como lidas pro usuário atual.",
21498
+ "category": "Chat Interno",
21499
+ "params": [
21500
+ {
21501
+ "name": "id",
21502
+ "type": "integer",
21503
+ "location": "path",
21504
+ "required": true,
21505
+ "description": "ID da sala"
21506
+ }
21507
+ ],
21508
+ "returns": "200 OK",
21509
+ "common_use_cases": [
21510
+ "Zerar contador de não lidas"
21511
+ ],
21512
+ "related_tools": []
21513
+ },
21514
+ {
21515
+ "id": "lionchat_internal_chat_messages_list",
21516
+ "method": "GET",
21517
+ "path": "/api/v1/accounts/{account_id}/internal_chat/rooms/{room_id}/messages",
21518
+ "title": "Mensagens da Sala",
21519
+ "description": "Lista mensagens da sala (40 por página, cursor before_id pra carregar mais antigas).",
21520
+ "category": "Chat Interno",
21521
+ "params": [
21522
+ {
21523
+ "name": "room_id",
21524
+ "type": "integer",
21525
+ "location": "path",
21526
+ "required": true,
21527
+ "description": "ID da sala"
21528
+ },
21529
+ {
21530
+ "name": "before_id",
21531
+ "type": "integer",
21532
+ "location": "query",
21533
+ "required": false,
21534
+ "description": "Cursor: carrega mensagens ANTERIORES a este ID"
21535
+ }
21536
+ ],
21537
+ "returns": "{ messages: [{ id, content, attachments, created_at, sender, read_by_all }], meta: { has_more } }",
21538
+ "common_use_cases": [
21539
+ "Ler o histórico antes de responder"
21540
+ ],
21541
+ "related_tools": [
21542
+ "lionchat_internal_chat_messages_create"
21543
+ ]
21544
+ },
21545
+ {
21546
+ "id": "lionchat_internal_chat_messages_create",
21547
+ "method": "POST",
21548
+ "path": "/api/v1/accounts/{account_id}/internal_chat/rooms/{room_id}/messages",
21549
+ "title": "Enviar Mensagem no Chat Interno",
21550
+ "description": "Envia mensagem de texto numa sala do chat interno (vai pros AGENTES da sala, nunca pro cliente). Confirme com o usuário antes de enviar em nome dele.",
21551
+ "category": "Chat Interno",
21552
+ "params": [
21553
+ {
21554
+ "name": "room_id",
21555
+ "type": "integer",
21556
+ "location": "path",
21557
+ "required": true,
21558
+ "description": "ID da sala"
21559
+ },
21560
+ {
21561
+ "name": "content",
21562
+ "type": "string",
21563
+ "location": "body",
21564
+ "required": true,
21565
+ "description": "Texto da mensagem"
21566
+ }
21567
+ ],
21568
+ "returns": "{ id, content, created_at, sender }",
21569
+ "common_use_cases": [
21570
+ "Avisar o time sobre um cliente urgente"
21571
+ ],
21572
+ "related_tools": [
21573
+ "lionchat_internal_chat_rooms_list"
21574
+ ]
21575
+ },
21576
+ {
21577
+ "id": "lionchat_internal_chat_messages_update",
21578
+ "method": "PATCH",
21579
+ "path": "/api/v1/accounts/{account_id}/internal_chat/rooms/{room_id}/messages/{id}",
21580
+ "title": "Editar/Reagir/Fixar Mensagem",
21581
+ "description": "Edita o conteúdo (só o autor), adiciona reações ou fixa a mensagem (fixar como aviso exige admin do grupo).",
21582
+ "category": "Chat Interno",
21583
+ "params": [
21584
+ {
21585
+ "name": "room_id",
21586
+ "type": "integer",
21587
+ "location": "path",
21588
+ "required": true,
21589
+ "description": "ID da sala"
21590
+ },
21591
+ {
21592
+ "name": "id",
21593
+ "type": "integer",
21594
+ "location": "path",
21595
+ "required": true,
21596
+ "description": "ID da mensagem"
21597
+ },
21598
+ {
21599
+ "name": "content",
21600
+ "type": "string",
21601
+ "location": "body",
21602
+ "required": false,
21603
+ "description": "Novo texto (só o autor; marca como editada)"
21604
+ },
21605
+ {
21606
+ "name": "additional_data",
21607
+ "type": "object",
21608
+ "location": "body",
21609
+ "required": false,
21610
+ "description": "Reações/fixar: { reactions: { '👍': [user_ids] }, pinned: bool, pinned_mode: 'normal'|'announcement', pinned_expires_at }"
21611
+ }
21612
+ ],
21613
+ "returns": "{ id, content, additional_data }",
21614
+ "common_use_cases": [
21615
+ "Corrigir mensagem enviada",
21616
+ "Fixar aviso importante"
21617
+ ],
21618
+ "related_tools": []
21619
+ },
21620
+ {
21621
+ "id": "lionchat_internal_chat_messages_destroy",
21622
+ "method": "DELETE",
21623
+ "path": "/api/v1/accounts/{account_id}/internal_chat/rooms/{room_id}/messages/{id}",
21624
+ "title": "Apagar Mensagem do Chat Interno",
21625
+ "description": "Soft delete — só o autor pode apagar; os demais veem que foi apagada (conteúdo preservado pra auditoria).",
21626
+ "category": "Chat Interno",
21627
+ "params": [
21628
+ {
21629
+ "name": "room_id",
21630
+ "type": "integer",
21631
+ "location": "path",
21632
+ "required": true,
21633
+ "description": "ID da sala"
21634
+ },
21635
+ {
21636
+ "name": "id",
21637
+ "type": "integer",
21638
+ "location": "path",
21639
+ "required": true,
21640
+ "description": "ID da mensagem"
21641
+ }
21642
+ ],
21643
+ "returns": "{ id, additional_data: { deleted: true } }",
21644
+ "common_use_cases": [
21645
+ "Remover mensagem enviada por engano"
21646
+ ],
21647
+ "related_tools": []
21648
+ },
21649
+ {
21650
+ "id": "lionchat_internal_chat_members_add",
21651
+ "method": "POST",
21652
+ "path": "/api/v1/accounts/{account_id}/internal_chat/rooms/{room_id}/members",
21653
+ "title": "Adicionar Membro à Sala",
21654
+ "description": "Adiciona um agente a sala multi_user (exige ser admin da sala; não funciona em direct).",
21655
+ "category": "Chat Interno",
21656
+ "params": [
21657
+ {
21658
+ "name": "room_id",
21659
+ "type": "integer",
21660
+ "location": "path",
21661
+ "required": true,
21662
+ "description": "ID da sala"
21663
+ },
21664
+ {
21665
+ "name": "user_id",
21666
+ "type": "integer",
21667
+ "location": "body",
21668
+ "required": true,
21669
+ "description": "ID do agente a adicionar"
21670
+ }
21671
+ ],
21672
+ "returns": "201 Created",
21673
+ "common_use_cases": [
21674
+ "Convidar colega pro grupo"
21675
+ ],
21676
+ "related_tools": [
21677
+ "lionchat_internal_chat_members_remove"
21678
+ ]
21679
+ },
21680
+ {
21681
+ "id": "lionchat_internal_chat_members_remove",
21682
+ "method": "DELETE",
21683
+ "path": "/api/v1/accounts/{account_id}/internal_chat/rooms/{room_id}/members/{user_id}",
21684
+ "title": "Remover Membro da Sala",
21685
+ "description": "Remove um agente da sala multi_user (admin remove qualquer um; agente comum só sai a si mesmo).",
21686
+ "category": "Chat Interno",
21687
+ "params": [
21688
+ {
21689
+ "name": "room_id",
21690
+ "type": "integer",
21691
+ "location": "path",
21692
+ "required": true,
21693
+ "description": "ID da sala"
21694
+ },
21695
+ {
21696
+ "name": "user_id",
21697
+ "type": "integer",
21698
+ "location": "path",
21699
+ "required": true,
21700
+ "description": "ID do agente a remover"
21701
+ }
21702
+ ],
21703
+ "returns": "200 OK",
21704
+ "common_use_cases": [
21705
+ "Sair de um grupo",
21706
+ "Remover membro que saiu do time"
21707
+ ],
21708
+ "related_tools": []
21709
+ },
21710
+ {
21711
+ "id": "lionchat_meta_pixel_integrations_list",
21712
+ "method": "GET",
21713
+ "path": "/api/v1/accounts/{account_id}/meta_pixel_integrations",
21714
+ "title": "Listar Integrações Meta CAPI",
21715
+ "description": "Lista os pixels da Meta (Conversions API) configurados na conta. ADMIN-ONLY.",
21716
+ "category": "Integracoes",
21717
+ "params": [],
21718
+ "returns": "[{ id, pixel_id, enabled, test_event_code, funnel_id }]",
21719
+ "common_use_cases": [
21720
+ "Auditar pixels configurados"
21721
+ ],
21722
+ "related_tools": [
21723
+ "lionchat_meta_pixel_integrations_test_event"
21724
+ ]
21725
+ },
21726
+ {
21727
+ "id": "lionchat_meta_pixel_integrations_create",
21728
+ "method": "POST",
21729
+ "path": "/api/v1/accounts/{account_id}/meta_pixel_integrations",
21730
+ "title": "Criar Integração Meta CAPI",
21731
+ "description": "Conecta um pixel da Meta (CAPI). Nasce desativado (enabled=false) — após test_event com sucesso, ativa sozinho. ADMIN-ONLY. Evento de checkout: nome atual é 'begin_checkout' (antigo InitiateCheckout).",
21732
+ "category": "Integracoes",
21733
+ "params": [
21734
+ {
21735
+ "name": "pixel_id",
21736
+ "type": "string",
21737
+ "location": "body",
21738
+ "required": true,
21739
+ "description": "ID do pixel Meta"
21740
+ },
21741
+ {
21742
+ "name": "access_token",
21743
+ "type": "string",
21744
+ "location": "body",
21745
+ "required": true,
21746
+ "description": "Token de acesso CAPI"
21747
+ },
21748
+ {
21749
+ "name": "test_event_code",
21750
+ "type": "string",
21751
+ "location": "body",
21752
+ "required": false,
21753
+ "description": "Código de teste (Events Manager)"
21754
+ },
21755
+ {
21756
+ "name": "funnel_id",
21757
+ "type": "integer",
21758
+ "location": "body",
21759
+ "required": false,
21760
+ "description": "Funil vinculado (eventos de ganho/perda)"
21761
+ }
21762
+ ],
21763
+ "returns": "{ id, enabled: false, ... } (201)",
21764
+ "common_use_cases": [
21765
+ "Configurar rastreamento de conversões da Meta"
21766
+ ],
21767
+ "related_tools": [
21768
+ "lionchat_meta_pixel_integrations_test_event"
21769
+ ]
21770
+ },
21771
+ {
21772
+ "id": "lionchat_meta_pixel_integrations_update",
21773
+ "method": "PATCH",
21774
+ "path": "/api/v1/accounts/{account_id}/meta_pixel_integrations/{id}",
21775
+ "title": "Atualizar Integração Meta CAPI",
21776
+ "description": "Atualiza pixel/token/código de teste/funil. ADMIN-ONLY.",
21777
+ "category": "Integracoes",
21778
+ "params": [
21779
+ {
21780
+ "name": "id",
21781
+ "type": "integer",
21782
+ "location": "path",
21783
+ "required": true,
21784
+ "description": "ID da integração"
21785
+ },
21786
+ {
21787
+ "name": "pixel_id",
21788
+ "type": "string",
21789
+ "location": "body",
21790
+ "required": false,
21791
+ "description": "Novo pixel"
21792
+ },
21793
+ {
21794
+ "name": "access_token",
21795
+ "type": "string",
21796
+ "location": "body",
21797
+ "required": false,
21798
+ "description": "Novo token"
21799
+ },
21800
+ {
21801
+ "name": "test_event_code",
21802
+ "type": "string",
21803
+ "location": "body",
21804
+ "required": false,
21805
+ "description": "Novo código de teste"
21806
+ },
21807
+ {
21808
+ "name": "funnel_id",
21809
+ "type": "integer",
21810
+ "location": "body",
21811
+ "required": false,
21812
+ "description": "Novo funil"
21813
+ }
21814
+ ],
21815
+ "returns": "{ id, ... }",
21816
+ "common_use_cases": [
21817
+ "Trocar token expirado"
21818
+ ],
21819
+ "related_tools": []
21820
+ },
21821
+ {
21822
+ "id": "lionchat_meta_pixel_integrations_destroy",
21823
+ "method": "DELETE",
21824
+ "path": "/api/v1/accounts/{account_id}/meta_pixel_integrations/{id}",
21825
+ "title": "Excluir Integração Meta CAPI",
21826
+ "description": "Remove o pixel da conta. DESTRUTIVO — confirme antes. ADMIN-ONLY.",
21827
+ "category": "Integracoes",
21828
+ "params": [
21829
+ {
21830
+ "name": "id",
21831
+ "type": "integer",
21832
+ "location": "path",
21833
+ "required": true,
21834
+ "description": "ID da integração"
21835
+ }
21836
+ ],
21837
+ "returns": "204 No Content",
21838
+ "common_use_cases": [
21839
+ "Remover pixel desativado"
21840
+ ],
21841
+ "related_tools": []
21842
+ },
21843
+ {
21844
+ "id": "lionchat_meta_pixel_integrations_test_event",
21845
+ "method": "POST",
21846
+ "path": "/api/v1/accounts/{account_id}/meta_pixel_integrations/{id}/test_event",
21847
+ "title": "Testar Evento Meta CAPI",
21848
+ "description": "Dispara evento de teste REAL contra a API da Meta. 200 OK = integração é ativada automaticamente. ADMIN-ONLY.",
21849
+ "category": "Integracoes",
21850
+ "params": [
21851
+ {
21852
+ "name": "id",
21853
+ "type": "integer",
21854
+ "location": "path",
21855
+ "required": true,
21856
+ "description": "ID da integração"
21857
+ }
21858
+ ],
21859
+ "returns": "{ ok, response }",
21860
+ "common_use_cases": [
21861
+ "Validar pixel recém-configurado"
21862
+ ],
21863
+ "related_tools": [
21864
+ "lionchat_meta_pixel_integrations_reset_test_event_window"
21865
+ ]
21866
+ },
21867
+ {
21868
+ "id": "lionchat_meta_pixel_integrations_reset_test_event_window",
21869
+ "method": "POST",
21870
+ "path": "/api/v1/accounts/{account_id}/meta_pixel_integrations/{id}/reset_test_event_window",
21871
+ "title": "Reabrir Janela de Teste Meta CAPI",
21872
+ "description": "Reabre a janela de teste quando expirou (TTL ~5min/5 usos). Rate limit 10/hora. ADMIN-ONLY.",
21873
+ "category": "Integracoes",
21874
+ "params": [
21875
+ {
21876
+ "name": "id",
21877
+ "type": "integer",
21878
+ "location": "path",
21879
+ "required": true,
21880
+ "description": "ID da integração"
21881
+ }
21882
+ ],
21883
+ "returns": "{ ok }",
21884
+ "common_use_cases": [
21885
+ "Continuar testando após expirar"
21886
+ ],
21887
+ "related_tools": []
21888
+ },
21889
+ {
21890
+ "id": "lionchat_ga4_integrations_list",
21891
+ "method": "GET",
21892
+ "path": "/api/v1/accounts/{account_id}/ga4_integrations",
21893
+ "title": "Listar Integrações GA4",
21894
+ "description": "Lista integrações do Google Analytics 4 (Measurement Protocol). ADMIN-ONLY.",
21895
+ "category": "Integracoes",
21896
+ "params": [],
21897
+ "returns": "[{ id, measurement_id, enabled, funnel_id }]",
21898
+ "common_use_cases": [
21899
+ "Auditar rastreamento GA4"
21900
+ ],
21901
+ "related_tools": []
21902
+ },
21903
+ {
21904
+ "id": "lionchat_ga4_integrations_create",
21905
+ "method": "POST",
21906
+ "path": "/api/v1/accounts/{account_id}/ga4_integrations",
21907
+ "title": "Criar Integração GA4",
21908
+ "description": "Conecta GA4 via Measurement ID + API Secret (nasce ativa). ADMIN-ONLY.",
21909
+ "category": "Integracoes",
21910
+ "params": [
21911
+ {
21912
+ "name": "measurement_id",
21913
+ "type": "string",
21914
+ "location": "body",
21915
+ "required": true,
21916
+ "description": "Measurement ID (G-XXXX)"
21917
+ },
21918
+ {
21919
+ "name": "api_secret",
21920
+ "type": "string",
21921
+ "location": "body",
21922
+ "required": true,
21923
+ "description": "API Secret do data stream"
21924
+ },
21925
+ {
21926
+ "name": "funnel_id",
21927
+ "type": "integer",
21928
+ "location": "body",
21929
+ "required": false,
21930
+ "description": "Funil vinculado"
21931
+ }
21932
+ ],
21933
+ "returns": "{ id, enabled: true } (201)",
21934
+ "common_use_cases": [
21935
+ "Mandar eventos de funil pro GA4"
21936
+ ],
21937
+ "related_tools": [
21938
+ "lionchat_ga4_integrations_test_connection"
21939
+ ]
21940
+ },
21941
+ {
21942
+ "id": "lionchat_ga4_integrations_update",
21943
+ "method": "PATCH",
21944
+ "path": "/api/v1/accounts/{account_id}/ga4_integrations/{id}",
21945
+ "title": "Atualizar Integração GA4",
21946
+ "description": "Atualiza credenciais/funil do GA4. ADMIN-ONLY.",
21947
+ "category": "Integracoes",
21948
+ "params": [
21949
+ {
21950
+ "name": "id",
21951
+ "type": "integer",
21952
+ "location": "path",
21953
+ "required": true,
21954
+ "description": "ID da integração"
21955
+ },
21956
+ {
21957
+ "name": "measurement_id",
21958
+ "type": "string",
21959
+ "location": "body",
21960
+ "required": false,
21961
+ "description": "Novo Measurement ID"
21962
+ },
21963
+ {
21964
+ "name": "api_secret",
21965
+ "type": "string",
21966
+ "location": "body",
21967
+ "required": false,
21968
+ "description": "Novo API Secret"
21969
+ },
21970
+ {
21971
+ "name": "funnel_id",
21972
+ "type": "integer",
21973
+ "location": "body",
21974
+ "required": false,
21975
+ "description": "Novo funil"
21976
+ }
21977
+ ],
21978
+ "returns": "{ id, ... }",
21979
+ "common_use_cases": [
21980
+ "Trocar secret"
21981
+ ],
21982
+ "related_tools": []
21983
+ },
21984
+ {
21985
+ "id": "lionchat_ga4_integrations_destroy",
21986
+ "method": "DELETE",
21987
+ "path": "/api/v1/accounts/{account_id}/ga4_integrations/{id}",
21988
+ "title": "Excluir Integração GA4",
21989
+ "description": "Remove a integração GA4. DESTRUTIVO — confirme antes. ADMIN-ONLY.",
21990
+ "category": "Integracoes",
21991
+ "params": [
21992
+ {
21993
+ "name": "id",
21994
+ "type": "integer",
21995
+ "location": "path",
21996
+ "required": true,
21997
+ "description": "ID da integração"
21998
+ }
21999
+ ],
22000
+ "returns": "204 No Content",
22001
+ "common_use_cases": [
22002
+ "Desligar rastreamento GA4"
22003
+ ],
22004
+ "related_tools": []
22005
+ },
22006
+ {
22007
+ "id": "lionchat_ga4_integrations_test_connection",
22008
+ "method": "POST",
22009
+ "path": "/api/v1/accounts/{account_id}/ga4_integrations/{id}/test_connection",
22010
+ "title": "Testar Conexão GA4",
22011
+ "description": "Valida Measurement ID + API Secret no endpoint de debug do GA4 (não grava evento). ADMIN-ONLY.",
22012
+ "category": "Integracoes",
22013
+ "params": [
22014
+ {
22015
+ "name": "id",
22016
+ "type": "integer",
22017
+ "location": "path",
22018
+ "required": true,
22019
+ "description": "ID da integração"
22020
+ }
22021
+ ],
22022
+ "returns": "{ ok, validation_messages }",
22023
+ "common_use_cases": [
22024
+ "Diagnosticar credenciais GA4"
22025
+ ],
22026
+ "related_tools": []
22027
+ },
22028
+ {
22029
+ "id": "lionchat_google_ads_integrations_list",
22030
+ "method": "GET",
22031
+ "path": "/api/v1/accounts/{account_id}/google_ads_integrations",
22032
+ "title": "Listar Integrações Google Ads",
22033
+ "description": "Lista integrações de conversões do Google Ads. A CONEXÃO inicial é por OAuth no navegador (não dá pra criar via MCP) — aqui dá pra ver, configurar e remover. ADMIN-ONLY.",
22034
+ "category": "Integracoes",
22035
+ "params": [],
22036
+ "returns": "[{ id, customer_id, enabled, conversion_action_map, funnel_id }]",
22037
+ "common_use_cases": [
22038
+ "Conferir mapeamento de conversões"
22039
+ ],
22040
+ "related_tools": [
22041
+ "lionchat_google_ads_integrations_update"
22042
+ ]
22043
+ },
22044
+ {
22045
+ "id": "lionchat_google_ads_integrations_show",
22046
+ "method": "GET",
22047
+ "path": "/api/v1/accounts/{account_id}/google_ads_integrations/{id}",
22048
+ "title": "Detalhe da Integração Google Ads",
22049
+ "description": "Detalhe de uma integração Google Ads. ADMIN-ONLY.",
22050
+ "category": "Integracoes",
22051
+ "params": [
22052
+ {
22053
+ "name": "id",
22054
+ "type": "integer",
22055
+ "location": "path",
22056
+ "required": true,
22057
+ "description": "ID da integração"
22058
+ }
22059
+ ],
22060
+ "returns": "{ id, customer_id, login_customer_id, enabled, conversion_action_map }",
22061
+ "common_use_cases": [
22062
+ "Verificar configuração antes de mapear conversões"
22063
+ ],
22064
+ "related_tools": []
22065
+ },
22066
+ {
22067
+ "id": "lionchat_google_ads_integrations_update",
22068
+ "method": "PATCH",
22069
+ "path": "/api/v1/accounts/{account_id}/google_ads_integrations/{id}",
22070
+ "title": "Atualizar Integração Google Ads",
22071
+ "description": "Define conta de anúncio (customer_id), habilita/desabilita e mapeia eventos → conversion actions. ADMIN-ONLY.",
22072
+ "category": "Integracoes",
22073
+ "params": [
22074
+ {
22075
+ "name": "id",
22076
+ "type": "integer",
22077
+ "location": "path",
22078
+ "required": true,
22079
+ "description": "ID da integração"
22080
+ },
22081
+ {
22082
+ "name": "customer_id",
22083
+ "type": "string",
22084
+ "location": "body",
22085
+ "required": false,
22086
+ "description": "Customer ID (sem hífens)"
22087
+ },
22088
+ {
22089
+ "name": "login_customer_id",
22090
+ "type": "string",
22091
+ "location": "body",
22092
+ "required": false,
22093
+ "description": "Login Customer ID (MCC)"
22094
+ },
22095
+ {
22096
+ "name": "enabled",
22097
+ "type": "boolean",
22098
+ "location": "body",
22099
+ "required": false,
22100
+ "description": "Liga/desliga envio de conversões"
22101
+ },
22102
+ {
22103
+ "name": "funnel_id",
22104
+ "type": "integer",
22105
+ "location": "body",
22106
+ "required": false,
22107
+ "description": "Funil vinculado"
22108
+ },
22109
+ {
22110
+ "name": "conversion_action_map",
22111
+ "type": "object",
22112
+ "location": "body",
22113
+ "required": false,
22114
+ "description": "Mapa { evento: conversion_action_id }"
22115
+ }
22116
+ ],
22117
+ "returns": "{ id, ... }",
22118
+ "common_use_cases": [
22119
+ "Mapear 'ganho no funil' → conversão do Ads"
22120
+ ],
22121
+ "related_tools": [
22122
+ "lionchat_google_ads_integrations_list_conversion_actions"
22123
+ ]
22124
+ },
22125
+ {
22126
+ "id": "lionchat_google_ads_integrations_destroy",
22127
+ "method": "DELETE",
22128
+ "path": "/api/v1/accounts/{account_id}/google_ads_integrations/{id}",
22129
+ "title": "Excluir Integração Google Ads",
22130
+ "description": "Remove a integração. DESTRUTIVO — confirme antes. ADMIN-ONLY.",
22131
+ "category": "Integracoes",
22132
+ "params": [
22133
+ {
22134
+ "name": "id",
22135
+ "type": "integer",
22136
+ "location": "path",
22137
+ "required": true,
22138
+ "description": "ID da integração"
22139
+ }
22140
+ ],
22141
+ "returns": "204 No Content",
22142
+ "common_use_cases": [
22143
+ "Desconectar conta de anúncios"
22144
+ ],
22145
+ "related_tools": []
22146
+ },
22147
+ {
22148
+ "id": "lionchat_google_ads_integrations_list_customers",
22149
+ "method": "GET",
22150
+ "path": "/api/v1/accounts/{account_id}/google_ads_integrations/{id}/list_customers",
22151
+ "title": "Listar Contas Acessíveis do Google Ads",
22152
+ "description": "Lista as contas de anúncio acessíveis pelo login conectado (pra escolher o customer_id). ADMIN-ONLY.",
22153
+ "category": "Integracoes",
22154
+ "params": [
22155
+ {
22156
+ "name": "id",
22157
+ "type": "integer",
22158
+ "location": "path",
22159
+ "required": true,
22160
+ "description": "ID da integração"
22161
+ }
22162
+ ],
22163
+ "returns": "{ customers: [{ customer_id, descriptive_name, manager }] }",
22164
+ "common_use_cases": [
22165
+ "Escolher a conta certa num MCC"
22166
+ ],
22167
+ "related_tools": [
22168
+ "lionchat_google_ads_integrations_update"
22169
+ ]
22170
+ },
22171
+ {
22172
+ "id": "lionchat_google_ads_integrations_list_conversion_actions",
22173
+ "method": "GET",
22174
+ "path": "/api/v1/accounts/{account_id}/google_ads_integrations/{id}/list_conversion_actions",
22175
+ "title": "Listar Conversion Actions do Google Ads",
22176
+ "description": "Lista as ações de conversão habilitadas na conta de anúncio (pra montar o conversion_action_map). ADMIN-ONLY.",
22177
+ "category": "Integracoes",
22178
+ "params": [
22179
+ {
22180
+ "name": "id",
22181
+ "type": "integer",
22182
+ "location": "path",
22183
+ "required": true,
22184
+ "description": "ID da integração"
22185
+ }
22186
+ ],
22187
+ "returns": "{ conversion_actions: [{ id, name, category, status }] }",
22188
+ "common_use_cases": [
22189
+ "Mapear eventos do LionChat pra conversões"
22190
+ ],
22191
+ "related_tools": [
22192
+ "lionchat_google_ads_integrations_update"
22193
+ ]
22194
+ },
22195
+ {
22196
+ "id": "lionchat_conta_azul_integrations_list",
22197
+ "method": "GET",
22198
+ "path": "/api/v1/accounts/{account_id}/conta_azul_integrations",
22199
+ "title": "Listar Integrações Conta Azul",
22200
+ "description": "Lista integrações com o ERP Conta Azul. ADMIN-ONLY.",
22201
+ "category": "Integracoes",
22202
+ "params": [],
22203
+ "returns": "[{ id, name, status, event_mapping }]",
22204
+ "common_use_cases": [
22205
+ "Ver status da conexão Conta Azul"
22206
+ ],
22207
+ "related_tools": []
22208
+ },
22209
+ {
22210
+ "id": "lionchat_conta_azul_integrations_show",
22211
+ "method": "GET",
22212
+ "path": "/api/v1/accounts/{account_id}/conta_azul_integrations/{id}",
22213
+ "title": "Detalhe da Integração Conta Azul",
22214
+ "description": "Detalhe de uma integração Conta Azul (status, mapeamento de eventos). ADMIN-ONLY.",
22215
+ "category": "Integracoes",
22216
+ "params": [
22217
+ {
22218
+ "name": "id",
22219
+ "type": "integer",
22220
+ "location": "path",
22221
+ "required": true,
22222
+ "description": "ID da integração"
22223
+ }
22224
+ ],
22225
+ "returns": "{ id, name, status, event_mapping }",
22226
+ "common_use_cases": [
22227
+ "Conferir status de sincronização"
22228
+ ],
22229
+ "related_tools": []
22230
+ },
22231
+ {
22232
+ "id": "lionchat_conta_azul_integrations_create",
22233
+ "method": "POST",
22234
+ "path": "/api/v1/accounts/{account_id}/conta_azul_integrations",
22235
+ "title": "Criar Integração Conta Azul",
22236
+ "description": "Cria a integração (status pending) — a autorização em si é via OAuth: use 'connect' pra gerar o link que o usuário abre no navegador. ADMIN-ONLY.",
22237
+ "category": "Integracoes",
22238
+ "params": [
22239
+ {
22240
+ "name": "name",
22241
+ "type": "string",
22242
+ "location": "body",
22243
+ "required": false,
22244
+ "description": "Nome (default: Conta Azul)"
22245
+ },
22246
+ {
22247
+ "name": "event_mapping",
22248
+ "type": "object",
22249
+ "location": "body",
22250
+ "required": false,
22251
+ "description": "Mapa de eventos personalizados"
22252
+ }
22253
+ ],
22254
+ "returns": "{ id, status: 'pending' } (201)",
22255
+ "common_use_cases": [
22256
+ "Iniciar conexão com o ERP"
22257
+ ],
22258
+ "related_tools": [
22259
+ "lionchat_conta_azul_integrations_connect"
22260
+ ]
22261
+ },
22262
+ {
22263
+ "id": "lionchat_conta_azul_integrations_update",
22264
+ "method": "PATCH",
22265
+ "path": "/api/v1/accounts/{account_id}/conta_azul_integrations/{id}",
22266
+ "title": "Atualizar Integração Conta Azul",
22267
+ "description": "Atualiza nome/mapeamento de eventos. ADMIN-ONLY.",
22268
+ "category": "Integracoes",
22269
+ "params": [
22270
+ {
22271
+ "name": "id",
22272
+ "type": "integer",
22273
+ "location": "path",
22274
+ "required": true,
22275
+ "description": "ID da integração"
22276
+ },
22277
+ {
22278
+ "name": "name",
22279
+ "type": "string",
22280
+ "location": "body",
22281
+ "required": false,
22282
+ "description": "Novo nome"
22283
+ },
22284
+ {
22285
+ "name": "event_mapping",
22286
+ "type": "object",
22287
+ "location": "body",
22288
+ "required": false,
22289
+ "description": "Novo mapa de eventos"
22290
+ }
22291
+ ],
22292
+ "returns": "{ id, ... }",
22293
+ "common_use_cases": [
22294
+ "Ajustar quais eventos viram ação"
22295
+ ],
22296
+ "related_tools": []
22297
+ },
22298
+ {
22299
+ "id": "lionchat_conta_azul_integrations_destroy",
22300
+ "method": "DELETE",
22301
+ "path": "/api/v1/accounts/{account_id}/conta_azul_integrations/{id}",
22302
+ "title": "Excluir Integração Conta Azul",
22303
+ "description": "Remove a integração. DESTRUTIVO — confirme antes. ADMIN-ONLY.",
22304
+ "category": "Integracoes",
22305
+ "params": [
22306
+ {
22307
+ "name": "id",
22308
+ "type": "integer",
22309
+ "location": "path",
22310
+ "required": true,
22311
+ "description": "ID da integração"
22312
+ }
22313
+ ],
22314
+ "returns": "200 OK",
22315
+ "common_use_cases": [
22316
+ "Desconectar o ERP"
22317
+ ],
22318
+ "related_tools": []
22319
+ },
22320
+ {
22321
+ "id": "lionchat_conta_azul_integrations_connect",
22322
+ "method": "POST",
22323
+ "path": "/api/v1/accounts/{account_id}/conta_azul_integrations/connect",
22324
+ "title": "Gerar Link de Autorização Conta Azul",
22325
+ "description": "Inicia o OAuth: retorna authorize_url pro USUÁRIO abrir no navegador e autorizar (state expira em 15 min). ADMIN-ONLY.",
22326
+ "category": "Integracoes",
22327
+ "params": [],
22328
+ "returns": "{ authorize_url, state }",
22329
+ "common_use_cases": [
22330
+ "Mandar o link de autorização pro usuário"
22331
+ ],
22332
+ "related_tools": []
22333
+ },
22334
+ {
22335
+ "id": "lionchat_conta_azul_integrations_disconnect",
22336
+ "method": "POST",
22337
+ "path": "/api/v1/accounts/{account_id}/conta_azul_integrations/{id}/disconnect",
22338
+ "title": "Desconectar Conta Azul",
22339
+ "description": "Marca a integração como desconectada (pausa a sincronização sem apagar a configuração). ADMIN-ONLY.",
22340
+ "category": "Integracoes",
22341
+ "params": [
22342
+ {
22343
+ "name": "id",
22344
+ "type": "integer",
22345
+ "location": "path",
22346
+ "required": true,
22347
+ "description": "ID da integração"
22348
+ }
22349
+ ],
22350
+ "returns": "200 OK",
22351
+ "common_use_cases": [
22352
+ "Pausar sincronização"
22353
+ ],
22354
+ "related_tools": []
22355
+ },
22356
+ {
22357
+ "id": "lionchat_conta_azul_integrations_sync_now",
22358
+ "method": "POST",
22359
+ "path": "/api/v1/accounts/{account_id}/conta_azul_integrations/{id}/sync_now",
22360
+ "title": "Sincronizar Conta Azul Agora",
22361
+ "description": "Enfileira sincronização manual imediata (assíncrona — resposta confirma o agendamento, não o resultado). ADMIN-ONLY.",
22362
+ "category": "Integracoes",
22363
+ "params": [
22364
+ {
22365
+ "name": "id",
22366
+ "type": "integer",
22367
+ "location": "path",
22368
+ "required": true,
22369
+ "description": "ID da integração"
22370
+ }
22371
+ ],
22372
+ "returns": "{ enqueued: true }",
22373
+ "common_use_cases": [
22374
+ "Forçar sync após mudança no ERP"
22375
+ ],
22376
+ "related_tools": [
22377
+ "lionchat_conta_azul_integrations_events"
22378
+ ]
22379
+ },
22380
+ {
22381
+ "id": "lionchat_conta_azul_integrations_events",
22382
+ "method": "GET",
22383
+ "path": "/api/v1/accounts/{account_id}/conta_azul_integrations/{id}/events",
22384
+ "title": "Eventos da Conta Azul",
22385
+ "description": "Últimos 50 eventos de sincronização (status, erros). ADMIN-ONLY.",
22386
+ "category": "Integracoes",
22387
+ "params": [
22388
+ {
22389
+ "name": "id",
22390
+ "type": "integer",
22391
+ "location": "path",
22392
+ "required": true,
22393
+ "description": "ID da integração"
22394
+ }
22395
+ ],
22396
+ "returns": "[{ id, event_type, processing_status, error_message, created_at }]",
22397
+ "common_use_cases": [
22398
+ "Diagnosticar sync com falha"
22399
+ ],
22400
+ "related_tools": [
22401
+ "lionchat_conta_azul_integrations_retry_event"
22402
+ ]
22403
+ },
22404
+ {
22405
+ "id": "lionchat_conta_azul_integrations_retry_event",
22406
+ "method": "POST",
22407
+ "path": "/api/v1/accounts/{account_id}/conta_azul_integrations/{id}/events/{event_id}/retry",
22408
+ "title": "Reprocessar Evento Conta Azul",
22409
+ "description": "Reprocessa um evento com falha/pulado. ADMIN-ONLY.",
22410
+ "category": "Integracoes",
22411
+ "params": [
22412
+ {
22413
+ "name": "id",
22414
+ "type": "integer",
22415
+ "location": "path",
22416
+ "required": true,
22417
+ "description": "ID da integração"
22418
+ },
22419
+ {
22420
+ "name": "event_id",
22421
+ "type": "integer",
22422
+ "location": "path",
22423
+ "required": true,
22424
+ "description": "ID do evento"
22425
+ }
22426
+ ],
22427
+ "returns": "{ success: true }",
22428
+ "common_use_cases": [
22429
+ "Retentar evento que falhou"
22430
+ ],
22431
+ "related_tools": []
22432
+ },
22433
+ {
22434
+ "id": "lionchat_omie_integrations_list",
22435
+ "method": "GET",
22436
+ "path": "/api/v1/accounts/{account_id}/omie_integrations",
22437
+ "title": "Listar Integrações Omie",
22438
+ "description": "Lista integrações com o ERP Omie (0 ou 1 por conta). ADMIN-ONLY.",
22439
+ "category": "Integracoes",
22440
+ "params": [],
22441
+ "returns": "[{ id, name, status, enabled_categories }]",
22442
+ "common_use_cases": [
22443
+ "Ver se a Omie está conectada"
22444
+ ],
22445
+ "related_tools": []
22446
+ },
22447
+ {
22448
+ "id": "lionchat_omie_integrations_show",
22449
+ "method": "GET",
22450
+ "path": "/api/v1/accounts/{account_id}/omie_integrations/{id}",
22451
+ "title": "Detalhe da Integração Omie",
22452
+ "description": "Detalhe da integração Omie (status, categorias habilitadas, mapeamento). ADMIN-ONLY.",
22453
+ "category": "Integracoes",
22454
+ "params": [
22455
+ {
22456
+ "name": "id",
22457
+ "type": "integer",
22458
+ "location": "path",
22459
+ "required": true,
22460
+ "description": "ID da integração"
22461
+ }
22462
+ ],
22463
+ "returns": "{ id, name, status, omie_company_name, enabled_categories, event_mapping }",
22464
+ "common_use_cases": [
22465
+ "Conferir categorias de eventos ativas"
22466
+ ],
22467
+ "related_tools": []
22468
+ },
22469
+ {
22470
+ "id": "lionchat_omie_integrations_create",
22471
+ "method": "POST",
22472
+ "path": "/api/v1/accounts/{account_id}/omie_integrations",
22473
+ "title": "Criar Integração Omie",
22474
+ "description": "Conecta a Omie com app_key + app_secret (testa a conexão automaticamente). ADMIN-ONLY.",
22475
+ "category": "Integracoes",
22476
+ "params": [
22477
+ {
22478
+ "name": "app_key",
22479
+ "type": "string",
22480
+ "location": "body",
22481
+ "required": true,
22482
+ "description": "App Key da Omie"
22483
+ },
22484
+ {
22485
+ "name": "app_secret",
22486
+ "type": "string",
22487
+ "location": "body",
22488
+ "required": true,
22489
+ "description": "App Secret da Omie"
22490
+ },
22491
+ {
22492
+ "name": "name",
22493
+ "type": "string",
22494
+ "location": "body",
22495
+ "required": false,
22496
+ "description": "Nome (default: Omie)"
22497
+ },
22498
+ {
22499
+ "name": "omie_company_name",
22500
+ "type": "string",
22501
+ "location": "body",
22502
+ "required": false,
22503
+ "description": "Nome da empresa na Omie"
22504
+ },
22505
+ {
22506
+ "name": "enabled_categories",
22507
+ "type": "array",
22508
+ "location": "body",
22509
+ "required": false,
22510
+ "description": "Categorias: receivables, payables, sales, purchase_orders, contracts, clients, fiscal"
22511
+ },
22512
+ {
22513
+ "name": "event_mapping",
22514
+ "type": "object",
22515
+ "location": "body",
22516
+ "required": false,
22517
+ "description": "Mapa de eventos"
22518
+ }
22519
+ ],
22520
+ "returns": "{ id, status } (201)",
22521
+ "common_use_cases": [
22522
+ "Conectar o ERP Omie"
22523
+ ],
22524
+ "related_tools": [
22525
+ "lionchat_omie_integrations_test_connection"
22526
+ ]
22527
+ },
22528
+ {
22529
+ "id": "lionchat_omie_integrations_update",
22530
+ "method": "PATCH",
22531
+ "path": "/api/v1/accounts/{account_id}/omie_integrations/{id}",
22532
+ "title": "Atualizar Integração Omie",
22533
+ "description": "Atualiza credenciais/categorias/mapeamento (credencial nova dispara novo teste de conexão). ADMIN-ONLY.",
22534
+ "category": "Integracoes",
22535
+ "params": [
22536
+ {
22537
+ "name": "id",
22538
+ "type": "integer",
22539
+ "location": "path",
22540
+ "required": true,
22541
+ "description": "ID da integração"
22542
+ },
22543
+ {
22544
+ "name": "app_key",
22545
+ "type": "string",
22546
+ "location": "body",
22547
+ "required": false,
22548
+ "description": "Nova App Key"
22549
+ },
22550
+ {
22551
+ "name": "app_secret",
22552
+ "type": "string",
22553
+ "location": "body",
22554
+ "required": false,
22555
+ "description": "Novo App Secret"
22556
+ },
22557
+ {
22558
+ "name": "name",
22559
+ "type": "string",
22560
+ "location": "body",
22561
+ "required": false,
22562
+ "description": "Novo nome"
22563
+ },
22564
+ {
22565
+ "name": "enabled_categories",
22566
+ "type": "array",
22567
+ "location": "body",
22568
+ "required": false,
22569
+ "description": "Novas categorias"
22570
+ },
22571
+ {
22572
+ "name": "event_mapping",
22573
+ "type": "object",
22574
+ "location": "body",
22575
+ "required": false,
22576
+ "description": "Novo mapa"
22577
+ }
22578
+ ],
22579
+ "returns": "{ id, ... }",
22580
+ "common_use_cases": [
22581
+ "Trocar credenciais da Omie"
22582
+ ],
22583
+ "related_tools": []
22584
+ },
22585
+ {
22586
+ "id": "lionchat_omie_integrations_destroy",
22587
+ "method": "DELETE",
22588
+ "path": "/api/v1/accounts/{account_id}/omie_integrations/{id}",
22589
+ "title": "Excluir Integração Omie",
22590
+ "description": "Remove a integração. DESTRUTIVO — confirme antes. ADMIN-ONLY.",
22591
+ "category": "Integracoes",
22592
+ "params": [
22593
+ {
22594
+ "name": "id",
22595
+ "type": "integer",
22596
+ "location": "path",
22597
+ "required": true,
22598
+ "description": "ID da integração"
22599
+ }
22600
+ ],
22601
+ "returns": "200 OK",
22602
+ "common_use_cases": [
22603
+ "Desconectar a Omie"
22604
+ ],
22605
+ "related_tools": []
22606
+ },
22607
+ {
22608
+ "id": "lionchat_omie_integrations_disconnect",
22609
+ "method": "POST",
22610
+ "path": "/api/v1/accounts/{account_id}/omie_integrations/{id}/disconnect",
22611
+ "title": "Desconectar Omie",
22612
+ "description": "Marca como desconectada (pausa sem apagar). ADMIN-ONLY.",
22613
+ "category": "Integracoes",
22614
+ "params": [
22615
+ {
22616
+ "name": "id",
22617
+ "type": "integer",
22618
+ "location": "path",
22619
+ "required": true,
22620
+ "description": "ID da integração"
22621
+ }
22622
+ ],
22623
+ "returns": "200 OK",
22624
+ "common_use_cases": [
22625
+ "Pausar a integração"
22626
+ ],
22627
+ "related_tools": []
22628
+ },
22629
+ {
22630
+ "id": "lionchat_omie_integrations_test_connection",
22631
+ "method": "POST",
22632
+ "path": "/api/v1/accounts/{account_id}/omie_integrations/{id}/test_connection",
22633
+ "title": "Testar Conexão Omie",
22634
+ "description": "Testa as credenciais contra a API da Omie (síncrono). ADMIN-ONLY.",
22635
+ "category": "Integracoes",
22636
+ "params": [
22637
+ {
22638
+ "name": "id",
22639
+ "type": "integer",
22640
+ "location": "path",
22641
+ "required": true,
22642
+ "description": "ID da integração"
22643
+ }
22644
+ ],
22645
+ "returns": "{ ok, company, error? }",
22646
+ "common_use_cases": [
22647
+ "Diagnosticar credenciais"
22648
+ ],
22649
+ "related_tools": []
22650
+ },
22651
+ {
22652
+ "id": "lionchat_omie_integrations_toggle_category",
22653
+ "method": "POST",
22654
+ "path": "/api/v1/accounts/{account_id}/omie_integrations/{id}/toggle_category",
22655
+ "title": "Ativar/Desativar Categoria Omie",
22656
+ "description": "Liga/desliga uma categoria de eventos da Omie. ADMIN-ONLY.",
22657
+ "category": "Integracoes",
22658
+ "params": [
22659
+ {
22660
+ "name": "id",
22661
+ "type": "integer",
22662
+ "location": "path",
22663
+ "required": true,
22664
+ "description": "ID da integração"
22665
+ },
22666
+ {
22667
+ "name": "category",
22668
+ "type": "string",
22669
+ "location": "body",
22670
+ "required": true,
22671
+ "description": "receivables | payables | sales | purchase_orders | contracts | clients | fiscal"
22672
+ },
22673
+ {
22674
+ "name": "enabled",
22675
+ "type": "boolean",
22676
+ "location": "body",
22677
+ "required": true,
22678
+ "description": "true liga, false desliga"
22679
+ }
22680
+ ],
22681
+ "returns": "{ enabled_categories: [...] }",
22682
+ "common_use_cases": [
22683
+ "Processar só contas a receber"
22684
+ ],
22685
+ "related_tools": []
22686
+ },
22687
+ {
22688
+ "id": "lionchat_omie_integrations_events",
22689
+ "method": "GET",
22690
+ "path": "/api/v1/accounts/{account_id}/omie_integrations/{id}/events",
22691
+ "title": "Eventos da Omie",
22692
+ "description": "Últimos 50 eventos de webhook recebidos da Omie. ADMIN-ONLY.",
22693
+ "category": "Integracoes",
22694
+ "params": [
22695
+ {
22696
+ "name": "id",
22697
+ "type": "integer",
22698
+ "location": "path",
22699
+ "required": true,
22700
+ "description": "ID da integração"
22701
+ }
22702
+ ],
22703
+ "returns": "[{ id, category, event_type, processing_status, error_message }]",
22704
+ "common_use_cases": [
22705
+ "Diagnosticar evento que não virou ação"
22706
+ ],
22707
+ "related_tools": [
22708
+ "lionchat_omie_integrations_retry_event"
22709
+ ]
22710
+ },
22711
+ {
22712
+ "id": "lionchat_omie_integrations_retry_event",
22713
+ "method": "POST",
22714
+ "path": "/api/v1/accounts/{account_id}/omie_integrations/{id}/events/{event_id}/retry",
22715
+ "title": "Reprocessar Evento Omie",
22716
+ "description": "Reprocessa um evento com falha. ADMIN-ONLY.",
22717
+ "category": "Integracoes",
22718
+ "params": [
22719
+ {
22720
+ "name": "id",
22721
+ "type": "integer",
22722
+ "location": "path",
22723
+ "required": true,
22724
+ "description": "ID da integração"
22725
+ },
22726
+ {
22727
+ "name": "event_id",
22728
+ "type": "integer",
22729
+ "location": "path",
22730
+ "required": true,
22731
+ "description": "ID do evento"
22732
+ }
22733
+ ],
22734
+ "returns": "{ success: true }",
22735
+ "common_use_cases": [
22736
+ "Retentar evento da Omie"
22737
+ ],
22738
+ "related_tools": []
22739
+ },
22740
+ {
22741
+ "id": "lionchat_integrations_slack_update",
22742
+ "method": "PATCH",
22743
+ "path": "/api/v1/accounts/{account_id}/integrations/slack",
22744
+ "title": "Trocar Canal do Slack",
22745
+ "description": "Muda o canal Slack que recebe as notificações (a conexão inicial é OAuth no navegador). ADMIN-ONLY.",
22746
+ "category": "Integracoes",
22747
+ "params": [
22748
+ {
22749
+ "name": "reference_id",
22750
+ "type": "string",
22751
+ "location": "body",
22752
+ "required": true,
22753
+ "description": "ID do canal Slack de destino"
22754
+ }
22755
+ ],
22756
+ "returns": "{ hook }",
22757
+ "common_use_cases": [
22758
+ "Apontar notificações pra outro canal"
22759
+ ],
22760
+ "related_tools": [
22761
+ "lionchat_integrations_slack_list_all_channels"
22762
+ ]
22763
+ },
22764
+ {
22765
+ "id": "lionchat_integrations_slack_destroy",
22766
+ "method": "DELETE",
22767
+ "path": "/api/v1/accounts/{account_id}/integrations/slack",
22768
+ "title": "Desconectar Slack",
22769
+ "description": "Remove a integração Slack. DESTRUTIVO — confirme antes. ADMIN-ONLY.",
22770
+ "category": "Integracoes",
22771
+ "params": [],
22772
+ "returns": "200 OK",
22773
+ "common_use_cases": [
22774
+ "Desligar notificações no Slack"
22775
+ ],
22776
+ "related_tools": []
22777
+ },
22778
+ {
22779
+ "id": "lionchat_integrations_slack_list_all_channels",
22780
+ "method": "GET",
22781
+ "path": "/api/v1/accounts/{account_id}/integrations/slack/list_all_channels",
22782
+ "title": "Listar Canais do Slack",
22783
+ "description": "Lista os canais do workspace Slack conectado (pra escolher o destino). ADMIN-ONLY.",
22784
+ "category": "Integracoes",
22785
+ "params": [],
22786
+ "returns": "[{ id, name, is_private }]",
22787
+ "common_use_cases": [
22788
+ "Escolher canal antes de trocar"
22789
+ ],
22790
+ "related_tools": [
22791
+ "lionchat_integrations_slack_update"
22792
+ ]
22793
+ },
22794
+ {
22795
+ "id": "lionchat_integrations_linear_teams",
22796
+ "method": "GET",
22797
+ "path": "/api/v1/accounts/{account_id}/integrations/linear/teams",
22798
+ "title": "Listar Times do Linear",
22799
+ "description": "Lista os times do workspace Linear conectado.",
22800
+ "category": "Integracoes",
22801
+ "params": [],
22802
+ "returns": "{ data: [{ id, name, key }] }",
22803
+ "common_use_cases": [
22804
+ "Escolher time antes de criar issue"
22805
+ ],
22806
+ "related_tools": [
22807
+ "lionchat_integrations_linear_create_issue"
22808
+ ]
22809
+ },
22810
+ {
22811
+ "id": "lionchat_integrations_linear_team_entities",
22812
+ "method": "GET",
22813
+ "path": "/api/v1/accounts/{account_id}/integrations/linear/team_entities",
22814
+ "title": "Entidades de um Time Linear",
22815
+ "description": "Projetos, estados, labels e membros de um time Linear.",
22816
+ "category": "Integracoes",
22817
+ "params": [
22818
+ {
22819
+ "name": "team_id",
22820
+ "type": "string",
22821
+ "location": "query",
22822
+ "required": true,
22823
+ "description": "ID do time Linear"
22824
+ }
22825
+ ],
22826
+ "returns": "{ data: { projects, states, labels, users } }",
22827
+ "common_use_cases": [
22828
+ "Preencher campos da issue"
22829
+ ],
22830
+ "related_tools": []
22831
+ },
22832
+ {
22833
+ "id": "lionchat_integrations_linear_create_issue",
22834
+ "method": "POST",
22835
+ "path": "/api/v1/accounts/{account_id}/integrations/linear/create_issue",
22836
+ "title": "Criar Issue no Linear",
22837
+ "description": "Cria issue no Linear a partir de uma conversa (registra atividade na conversa).",
22838
+ "category": "Integracoes",
22839
+ "params": [
22840
+ {
22841
+ "name": "conversation_id",
22842
+ "type": "integer",
22843
+ "location": "body",
22844
+ "required": true,
22845
+ "description": "display_id da conversa"
22846
+ },
22847
+ {
22848
+ "name": "team_id",
22849
+ "type": "string",
22850
+ "location": "body",
22851
+ "required": true,
22852
+ "description": "ID do time Linear"
22853
+ },
22854
+ {
22855
+ "name": "title",
22856
+ "type": "string",
22857
+ "location": "body",
22858
+ "required": true,
22859
+ "description": "Título da issue"
22860
+ },
22861
+ {
22862
+ "name": "description",
22863
+ "type": "string",
22864
+ "location": "body",
22865
+ "required": false,
22866
+ "description": "Descrição"
22867
+ },
22868
+ {
22869
+ "name": "project_id",
22870
+ "type": "string",
22871
+ "location": "body",
22872
+ "required": false,
22873
+ "description": "Projeto"
22874
+ },
22875
+ {
22876
+ "name": "assignee_id",
22877
+ "type": "string",
22878
+ "location": "body",
22879
+ "required": false,
22880
+ "description": "Responsável no Linear"
22881
+ },
22882
+ {
22883
+ "name": "priority",
22884
+ "type": "integer",
22885
+ "location": "body",
22886
+ "required": false,
22887
+ "description": "Prioridade (1-4)"
22888
+ },
22889
+ {
22890
+ "name": "state_id",
22891
+ "type": "string",
22892
+ "location": "body",
22893
+ "required": false,
22894
+ "description": "Estado inicial"
22895
+ },
22896
+ {
22897
+ "name": "label_ids",
22898
+ "type": "array",
22899
+ "location": "body",
22900
+ "required": false,
22901
+ "description": "Labels do Linear"
22902
+ }
22903
+ ],
22904
+ "returns": "{ data: { id, identifier, title, url } }",
22905
+ "common_use_cases": [
22906
+ "Abrir bug reportado pelo cliente direto no Linear"
22907
+ ],
22908
+ "related_tools": [
22909
+ "lionchat_integrations_linear_link_issue"
22910
+ ]
22911
+ },
22912
+ {
22913
+ "id": "lionchat_integrations_linear_link_issue",
22914
+ "method": "POST",
22915
+ "path": "/api/v1/accounts/{account_id}/integrations/linear/link_issue",
22916
+ "title": "Vincular Issue Existente do Linear",
22917
+ "description": "Vincula uma issue Linear já existente à conversa.",
22918
+ "category": "Integracoes",
22919
+ "params": [
22920
+ {
22921
+ "name": "conversation_id",
22922
+ "type": "integer",
22923
+ "location": "body",
22924
+ "required": true,
22925
+ "description": "display_id da conversa"
22926
+ },
22927
+ {
22928
+ "name": "issue_id",
22929
+ "type": "string",
22930
+ "location": "body",
22931
+ "required": true,
22932
+ "description": "ID da issue Linear"
22933
+ },
22934
+ {
22935
+ "name": "title",
22936
+ "type": "string",
22937
+ "location": "body",
22938
+ "required": false,
22939
+ "description": "Título (exibição)"
22940
+ }
22941
+ ],
22942
+ "returns": "{ data }",
22943
+ "common_use_cases": [
22944
+ "Ligar conversa a um bug já aberto"
22945
+ ],
22946
+ "related_tools": [
22947
+ "lionchat_integrations_linear_search_issue"
22948
+ ]
22949
+ },
22950
+ {
22951
+ "id": "lionchat_integrations_linear_unlink_issue",
22952
+ "method": "POST",
22953
+ "path": "/api/v1/accounts/{account_id}/integrations/linear/unlink_issue",
22954
+ "title": "Desvincular Issue do Linear",
22955
+ "description": "Remove o vínculo entre a issue e a conversa.",
22956
+ "category": "Integracoes",
22957
+ "params": [
22958
+ {
22959
+ "name": "conversation_id",
22960
+ "type": "integer",
22961
+ "location": "body",
22962
+ "required": true,
22963
+ "description": "display_id da conversa"
22964
+ },
22965
+ {
22966
+ "name": "link_id",
22967
+ "type": "string",
22968
+ "location": "body",
22969
+ "required": true,
22970
+ "description": "ID do vínculo"
22971
+ },
22972
+ {
22973
+ "name": "issue_id",
22974
+ "type": "string",
22975
+ "location": "body",
22976
+ "required": true,
22977
+ "description": "ID da issue"
22978
+ }
22979
+ ],
22980
+ "returns": "{ data }",
22981
+ "common_use_cases": [
22982
+ "Corrigir vínculo errado"
22983
+ ],
22984
+ "related_tools": []
22985
+ },
22986
+ {
22987
+ "id": "lionchat_integrations_linear_search_issue",
22988
+ "method": "GET",
22989
+ "path": "/api/v1/accounts/{account_id}/integrations/linear/search_issue",
22990
+ "title": "Buscar Issues no Linear",
22991
+ "description": "Busca issues do Linear por termo.",
22992
+ "category": "Integracoes",
22993
+ "params": [
22994
+ {
22995
+ "name": "q",
22996
+ "type": "string",
22997
+ "location": "query",
22998
+ "required": true,
22999
+ "description": "Termo de busca"
23000
+ }
23001
+ ],
23002
+ "returns": "{ data: [{ id, identifier, title }] }",
23003
+ "common_use_cases": [
23004
+ "Achar a issue pra vincular"
23005
+ ],
23006
+ "related_tools": [
23007
+ "lionchat_integrations_linear_link_issue"
23008
+ ]
23009
+ },
23010
+ {
23011
+ "id": "lionchat_integrations_linear_linked_issues",
23012
+ "method": "GET",
23013
+ "path": "/api/v1/accounts/{account_id}/integrations/linear/linked_issues",
23014
+ "title": "Issues Vinculadas à Conversa",
23015
+ "description": "Lista as issues Linear vinculadas a uma conversa.",
23016
+ "category": "Integracoes",
23017
+ "params": [
23018
+ {
23019
+ "name": "conversation_id",
23020
+ "type": "integer",
23021
+ "location": "query",
23022
+ "required": true,
23023
+ "description": "display_id da conversa"
23024
+ }
23025
+ ],
23026
+ "returns": "{ data: [{ id, identifier, title, status }] }",
23027
+ "common_use_cases": [
23028
+ "Conferir se o problema do cliente já tem issue"
23029
+ ],
23030
+ "related_tools": []
23031
+ },
23032
+ {
23033
+ "id": "lionchat_integrations_linear_destroy",
23034
+ "method": "DELETE",
23035
+ "path": "/api/v1/accounts/{account_id}/integrations/linear",
23036
+ "title": "Desconectar Linear",
23037
+ "description": "Remove a integração Linear. DESTRUTIVO — confirme antes. ADMIN-ONLY.",
23038
+ "category": "Integracoes",
23039
+ "params": [],
23040
+ "returns": "200 OK",
23041
+ "common_use_cases": [
23042
+ "Desligar o Linear"
23043
+ ],
23044
+ "related_tools": []
23045
+ },
23046
+ {
23047
+ "id": "lionchat_integrations_notion_search_pages",
23048
+ "method": "GET",
23049
+ "path": "/api/v1/accounts/{account_id}/integrations/notion/search_pages",
23050
+ "title": "Buscar Páginas do Notion",
23051
+ "description": "Busca páginas no workspace Notion conectado.",
23052
+ "category": "Integracoes",
23053
+ "params": [
23054
+ {
23055
+ "name": "q",
23056
+ "type": "string",
23057
+ "location": "query",
23058
+ "required": true,
23059
+ "description": "Termo de busca"
23060
+ }
23061
+ ],
23062
+ "returns": "[{ id, title, url }]",
23063
+ "common_use_cases": [
23064
+ "Achar página pra importar como conhecimento"
23065
+ ],
23066
+ "related_tools": [
23067
+ "lionchat_integrations_notion_import_pages"
23068
+ ]
23069
+ },
23070
+ {
23071
+ "id": "lionchat_integrations_notion_import_pages",
23072
+ "method": "POST",
23073
+ "path": "/api/v1/accounts/{account_id}/integrations/notion/import_pages",
23074
+ "title": "Importar Páginas do Notion",
23075
+ "description": "Importa páginas do Notion como documentos/artigos (base de conhecimento).",
23076
+ "category": "Integracoes",
23077
+ "params": [
23078
+ {
23079
+ "name": "page_ids",
23080
+ "type": "array",
23081
+ "location": "body",
23082
+ "required": true,
23083
+ "description": "IDs das páginas Notion a importar"
23084
+ }
23085
+ ],
23086
+ "returns": "[documentos importados]",
23087
+ "common_use_cases": [
23088
+ "Sincronizar docs do Notion pra IA"
23089
+ ],
23090
+ "related_tools": []
23091
+ },
23092
+ {
23093
+ "id": "lionchat_integrations_notion_destroy",
23094
+ "method": "DELETE",
23095
+ "path": "/api/v1/accounts/{account_id}/integrations/notion",
23096
+ "title": "Desconectar Notion",
23097
+ "description": "Remove a integração Notion. DESTRUTIVO — confirme antes. ADMIN-ONLY.",
23098
+ "category": "Integracoes",
23099
+ "params": [],
23100
+ "returns": "200 OK",
23101
+ "common_use_cases": [
23102
+ "Desligar o Notion"
23103
+ ],
23104
+ "related_tools": []
23105
+ },
23106
+ {
23107
+ "id": "lionchat_integrations_shopify_orders",
23108
+ "method": "GET",
23109
+ "path": "/api/v1/accounts/{account_id}/integrations/shopify/orders",
23110
+ "title": "Pedidos da Loja Shopify",
23111
+ "description": "Lista pedidos da loja Shopify conectada (pra contexto de atendimento).",
23112
+ "category": "Integracoes",
23113
+ "params": [
23114
+ {
23115
+ "name": "limit",
23116
+ "type": "integer",
23117
+ "location": "query",
23118
+ "required": false,
23119
+ "description": "Limite de resultados"
23120
+ },
23121
+ {
23122
+ "name": "status",
23123
+ "type": "string",
23124
+ "location": "query",
23125
+ "required": false,
23126
+ "description": "Status do pedido"
23127
+ }
23128
+ ],
23129
+ "returns": "[pedidos]",
23130
+ "common_use_cases": [
23131
+ "Ver pedidos do cliente durante o atendimento"
23132
+ ],
23133
+ "related_tools": []
23134
+ },
23135
+ {
23136
+ "id": "lionchat_integrations_shopify_destroy",
23137
+ "method": "DELETE",
23138
+ "path": "/api/v1/accounts/{account_id}/integrations/shopify",
23139
+ "title": "Desconectar Shopify",
23140
+ "description": "Remove a integração Shopify. DESTRUTIVO — confirme antes. ADMIN-ONLY.",
23141
+ "category": "Integracoes",
23142
+ "params": [],
23143
+ "returns": "200 OK",
23144
+ "common_use_cases": [
23145
+ "Desligar a Shopify"
23146
+ ],
23147
+ "related_tools": []
23148
+ },
23149
+ {
23150
+ "id": "lionchat_integrations_dyte_create_meeting",
23151
+ "method": "POST",
23152
+ "path": "/api/v1/accounts/{account_id}/integrations/dyte/create_a_meeting",
23153
+ "title": "Criar Videochamada (Dyte)",
23154
+ "description": "Cria uma sala de videochamada Dyte vinculada à conversa.",
23155
+ "category": "Integracoes",
23156
+ "params": [
23157
+ {
23158
+ "name": "conversation_id",
23159
+ "type": "integer",
23160
+ "location": "body",
23161
+ "required": true,
23162
+ "description": "display_id da conversa"
23163
+ }
23164
+ ],
23165
+ "returns": "{ meeting_id, meeting_link }",
23166
+ "common_use_cases": [
23167
+ "Iniciar vídeo com o cliente"
23168
+ ],
23169
+ "related_tools": [
23170
+ "lionchat_integrations_dyte_add_participant"
23171
+ ]
23172
+ },
23173
+ {
23174
+ "id": "lionchat_integrations_dyte_add_participant",
23175
+ "method": "POST",
23176
+ "path": "/api/v1/accounts/{account_id}/integrations/dyte/add_participant_to_meeting",
23177
+ "title": "Adicionar Participante à Videochamada",
23178
+ "description": "Adiciona um participante a uma reunião Dyte existente.",
23179
+ "category": "Integracoes",
23180
+ "params": [
23181
+ {
23182
+ "name": "meeting_id",
23183
+ "type": "string",
23184
+ "location": "body",
23185
+ "required": true,
23186
+ "description": "ID da reunião"
23187
+ },
23188
+ {
23189
+ "name": "participant_name",
23190
+ "type": "string",
23191
+ "location": "body",
23192
+ "required": true,
23193
+ "description": "Nome do participante"
23194
+ }
23195
+ ],
23196
+ "returns": "{ participant_id, auth_token }",
23197
+ "common_use_cases": [
23198
+ "Incluir mais alguém na call"
23199
+ ],
23200
+ "related_tools": []
23201
+ },
23202
+ {
23203
+ "id": "lionchat_integrations_apps_list",
23204
+ "method": "GET",
23205
+ "path": "/api/v1/accounts/{account_id}/integrations/apps",
23206
+ "title": "Listar Apps de Integração",
23207
+ "description": "Catálogo de apps de integração da conta (OpenAI, Slack, Dialogflow, etc) com status de conexão.",
23208
+ "category": "Integracoes",
23209
+ "params": [],
23210
+ "returns": "[{ id, name, description, enabled, hooks }]",
23211
+ "common_use_cases": [
23212
+ "Descobrir o que dá pra conectar",
23213
+ "Ver o que já está conectado"
23214
+ ],
23215
+ "related_tools": [
23216
+ "lionchat_integrations_hooks_create"
23217
+ ]
23218
+ },
23219
+ {
23220
+ "id": "lionchat_integrations_apps_show",
23221
+ "method": "GET",
23222
+ "path": "/api/v1/accounts/{account_id}/integrations/apps/{id}",
23223
+ "title": "Detalhe do App de Integração",
23224
+ "description": "Detalhe de um app específico (ex: 'openai') com seus hooks configurados.",
23225
+ "category": "Integracoes",
23226
+ "params": [
23227
+ {
23228
+ "name": "id",
23229
+ "type": "string",
23230
+ "location": "path",
23231
+ "required": true,
23232
+ "description": "ID do app (ex: openai, slack, dialogflow)"
23233
+ }
23234
+ ],
23235
+ "returns": "{ id, name, hooks: [...] }",
23236
+ "common_use_cases": [
23237
+ "Ver configuração da integração OpenAI"
23238
+ ],
23239
+ "related_tools": []
23240
+ },
23241
+ {
23242
+ "id": "lionchat_integrations_hooks_show",
23243
+ "method": "GET",
23244
+ "path": "/api/v1/accounts/{account_id}/integrations/hooks/{id}",
23245
+ "title": "Detalhe de um Hook de Integração",
23246
+ "description": "Detalhe de um hook (instância de integração — ex: a chave OpenAI da conta). ADMIN-ONLY.",
23247
+ "category": "Integracoes",
23248
+ "params": [
23249
+ {
23250
+ "name": "id",
23251
+ "type": "integer",
23252
+ "location": "path",
23253
+ "required": true,
23254
+ "description": "ID do hook"
23255
+ }
23256
+ ],
23257
+ "returns": "{ id, app_id, status, settings, inbox_id }",
23258
+ "common_use_cases": [
23259
+ "Conferir config antes de atualizar"
23260
+ ],
23261
+ "related_tools": []
23262
+ },
23263
+ {
23264
+ "id": "lionchat_integrations_hooks_create",
23265
+ "method": "POST",
23266
+ "path": "/api/v1/accounts/{account_id}/integrations/hooks",
23267
+ "title": "Criar Hook de Integração",
23268
+ "description": "Conecta um app (ex: OpenAI — valida a api_key na hora; chave inválida nem salva). ADMIN-ONLY. É mudança de config — confirme com o usuário.",
23269
+ "category": "Integracoes",
23270
+ "params": [
23271
+ {
23272
+ "name": "app_id",
23273
+ "type": "string",
23274
+ "location": "body",
23275
+ "required": true,
23276
+ "description": "ID do app (openai, slack, dialogflow, ...)"
23277
+ },
23278
+ {
23279
+ "name": "settings",
23280
+ "type": "object",
23281
+ "location": "body",
23282
+ "required": false,
23283
+ "description": "Config do app — OpenAI: { api_key, fallback_api_keys: [chaves reservas] }"
23284
+ },
23285
+ {
23286
+ "name": "inbox_id",
23287
+ "type": "integer",
23288
+ "location": "body",
23289
+ "required": false,
23290
+ "description": "Restringir a uma inbox"
23291
+ },
23292
+ {
23293
+ "name": "status",
23294
+ "type": "string",
23295
+ "location": "body",
23296
+ "required": false,
23297
+ "description": "enabled | disabled"
23298
+ }
23299
+ ],
23300
+ "returns": "{ id, app_id, status } (201)",
23301
+ "common_use_cases": [
23302
+ "Configurar a chave OpenAI da conta"
23303
+ ],
23304
+ "related_tools": [
23305
+ "lionchat_integrations_hooks_update"
23306
+ ]
23307
+ },
23308
+ {
23309
+ "id": "lionchat_integrations_hooks_update",
23310
+ "method": "PATCH",
23311
+ "path": "/api/v1/accounts/{account_id}/integrations/hooks/{id}",
23312
+ "title": "Atualizar Hook de Integração",
23313
+ "description": "Atualiza settings/status do hook (chaves OpenAI revalidadas ao trocar). ADMIN-ONLY. Confirme com o usuário.",
23314
+ "category": "Integracoes",
23315
+ "params": [
23316
+ {
23317
+ "name": "id",
23318
+ "type": "integer",
23319
+ "location": "path",
23320
+ "required": true,
23321
+ "description": "ID do hook"
23322
+ },
23323
+ {
23324
+ "name": "settings",
23325
+ "type": "object",
23326
+ "location": "body",
23327
+ "required": false,
23328
+ "description": "Novas settings"
23329
+ },
23330
+ {
23331
+ "name": "status",
23332
+ "type": "string",
23333
+ "location": "body",
23334
+ "required": false,
23335
+ "description": "enabled | disabled"
23336
+ }
23337
+ ],
23338
+ "returns": "{ id, ... }",
23339
+ "common_use_cases": [
23340
+ "Trocar chave OpenAI",
23341
+ "Adicionar chaves reservas (fallback)"
23342
+ ],
23343
+ "related_tools": []
23344
+ },
23345
+ {
23346
+ "id": "lionchat_integrations_hooks_destroy",
23347
+ "method": "DELETE",
23348
+ "path": "/api/v1/accounts/{account_id}/integrations/hooks/{id}",
23349
+ "title": "Excluir Hook de Integração",
23350
+ "description": "Remove o hook (ex: desconecta OpenAI — a IA da conta PARA de responder). DESTRUTIVO — confirme antes. ADMIN-ONLY.",
23351
+ "category": "Integracoes",
23352
+ "params": [
23353
+ {
23354
+ "name": "id",
23355
+ "type": "integer",
23356
+ "location": "path",
23357
+ "required": true,
23358
+ "description": "ID do hook"
23359
+ }
23360
+ ],
23361
+ "returns": "200 OK",
23362
+ "common_use_cases": [
23363
+ "Desconectar um app"
23364
+ ],
23365
+ "related_tools": []
23366
+ },
23367
+ {
23368
+ "id": "lionchat_contacts_tracking_events_list",
23369
+ "method": "GET",
23370
+ "path": "/api/v1/accounts/{account_id}/contacts/{contact_id}/tracking_events",
23371
+ "title": "Eventos de Navegação do Contato (LionTrack)",
23372
+ "description": "Linha do tempo de rastreamento do contato no site: pageviews e eventos (UTMs, dispositivo, duração). Base da Jornada do Lead. URLs vêm SEM querystring (LGPD).",
23373
+ "category": "LionTrack",
23374
+ "params": [
23375
+ {
23376
+ "name": "contact_id",
23377
+ "type": "integer",
23378
+ "location": "path",
23379
+ "required": true,
23380
+ "description": "ID do contato"
23381
+ },
23382
+ {
23383
+ "name": "only_pageviews",
23384
+ "type": "boolean",
23385
+ "location": "query",
23386
+ "required": false,
23387
+ "description": "true = só pageviews (trilha de navegação da Jornada do Lead)"
23388
+ },
23389
+ {
23390
+ "name": "page",
23391
+ "type": "integer",
23392
+ "location": "query",
23393
+ "required": false,
23394
+ "description": "Página"
23395
+ }
23396
+ ],
23397
+ "returns": "{ events: [{ event_name, page_url, page_title, utm_source, utm_campaign, device, created_at }], meta }",
23398
+ "common_use_cases": [
23399
+ "Ver por onde o lead navegou antes de chamar",
23400
+ "Conferir origem (UTM) de um contato"
23401
+ ],
23402
+ "related_tools": [
23403
+ "lionchat_journey_funnel_reports"
23404
+ ]
19736
23405
  }
19737
23406
  ]