@lionchat/mcp-server 1.19.1 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/instructions.md +18 -4
- package/dist/docs/resources/assinatura-eletronica.md +75 -0
- package/dist/docs/resources/best-practices.md +26 -10
- package/dist/docs/resources/data-model.md +17 -0
- package/dist/docs/resources/filtros-e-relatorios.md +39 -1
- package/dist/docs/resources/flowbuilder-design-guide.md +54 -11
- package/dist/docs/resources/formularios-publicos.md +28 -1
- package/dist/docs/resources/glossary.md +72 -2
- package/dist/docs/resources/troubleshooting.md +45 -4
- package/dist/resources.js +6 -0
- package/dist/resources.js.map +1 -1
- package/dist/tools.js +62 -13
- package/dist/tools.js.map +1 -1
- package/endpoints.json +495 -22
- package/package.json +1 -1
package/endpoints.json
CHANGED
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
"method": "POST",
|
|
174
174
|
"path": "/api/v1/accounts/{account_id}/contacts",
|
|
175
175
|
"title": "Criar Contato",
|
|
176
|
-
"description": "Cria um contato. Nenhum campo e estritamente obrigatorio (recomendado phone_number ou email). Aceita name, email, phone_number, identifier, additional_attributes, custom_attributes, blocked. TELEFONE UNICO POR CONTA (trava no BANCO desde 01/09/2026, como e-mail e identifier): phone_number ja cadastrado em outro contato da conta = 422 'phone_number has already been taken' — inclusive em chamadas paralelas. Procure antes com contacts_search (acha com e sem o 9o digito) e use contacts_update no que existe.",
|
|
176
|
+
"description": "Cria um contato. Nenhum campo e estritamente obrigatorio (recomendado phone_number ou email). Aceita name, email, phone_number, identifier, additional_attributes, custom_attributes, blocked. TELEFONE UNICO POR CONTA (trava no BANCO desde 01/09/2026, como e-mail e identifier): phone_number ja cadastrado em outro contato da conta = 422 'phone_number has already been taken' — inclusive em chamadas paralelas. Procure antes com contacts_search (acha com e sem o 9o digito) e use contacts_update no que existe.\n\nSE VOLTAR 422 com attributes:['phone_number']: o contato JA EXISTE — na forma exata OU na outra forma do nono digito. Nao tente criar de novo trocando a forma do numero (a recusa protege contra ficha em dobro): busque com lionchat_contacts_search e use contacts_update. Case os 'attributes' da resposta, nunca o texto da mensagem (ela sai no idioma padrao da instalacao, em ingles).",
|
|
177
177
|
"category": "Contatos",
|
|
178
178
|
"params": [
|
|
179
179
|
{
|
|
@@ -646,7 +646,7 @@
|
|
|
646
646
|
"method": "GET",
|
|
647
647
|
"path": "/api/v1/accounts/{account_id}/contacts/search",
|
|
648
648
|
"title": "Buscar Contatos",
|
|
649
|
-
"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).",
|
|
649
|
+
"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).\n\nTELEFONE COM E SEM O 9 (desde 05/09/2026): quando 'q' e um celular brasileiro completo (com ou sem o nono digito, com ou sem '+', formatado ou nao), a busca acha o contato salvo em QUALQUER das duas formas. Nao precisa buscar duas vezes. Uma pessoa com ficha duplicada pode voltar como 2 resultados — nunca pegue o primeiro as cegas para contacts_update; confira nome/e-mail. A lupa geral (lionchat_search_list) NAO tem essa tolerancia: para telefone, use esta.",
|
|
650
650
|
"category": "Contatos",
|
|
651
651
|
"params": [
|
|
652
652
|
{
|
|
@@ -654,7 +654,7 @@
|
|
|
654
654
|
"type": "string",
|
|
655
655
|
"location": "query",
|
|
656
656
|
"required": true,
|
|
657
|
-
"description": "Termo de busca"
|
|
657
|
+
"description": "Termo de busca. Telefone: qualquer forma (com/sem +, com/sem o nono digito, formatado) acha a mesma ficha."
|
|
658
658
|
},
|
|
659
659
|
{
|
|
660
660
|
"name": "page",
|
|
@@ -698,7 +698,7 @@
|
|
|
698
698
|
"method": "POST",
|
|
699
699
|
"path": "/api/v1/accounts/{account_id}/contacts/filter",
|
|
700
700
|
"title": "Filtrar Contatos",
|
|
701
|
-
"description": "Filtra contatos com condicoes avancadas (payload de condicoes). 15/pagina.\n\nCHAVES FILTRAVEIS: name, email, identifier (equal_to/not_equal_to/contains/does_not_contain — match parcial case-insensitive); phone_number (+starts_with); country_code, city, company; cpf, cnpj, rg, profession (cadastral; cpf/cnpj/rg aceitam is_present/is_not_present); labels; created_at, last_activity_at (is_greater_than/is_less_than/days_before); blocked (equal_to true/false); QUALQUER outra chave = atributo personalizado do contato.\n\nREGISTROS VINCULADOS (acha o contato pelo que aconteceu com ele): attribute_key 'conversation_search' (conversa vinculada: conversation_status/conversation_labels/conversation_inbox_id), condicoes com custom_attribute_type 'conversation_attribute' (atributo da conversa vinculada) e attribute_key 'kanban_card' (card vinculado: card_funnel_id/card_stage/card_priority/card_status). Combinaveis com E/OU.\n\nCada condicao: {attribute_key, filter_operator, values[], query_operator:'and'|'or', custom_attribute_type?}. Operador fora da lista da chave = 422. [2026-07-25] Nova chave id (id interno do contato, equal_to/not_equal_to) — serve pra exportar/checar UM contato especifico. NOTA 18/08: data FIXA com is_greater_than/is_less_than corta o dia no FUSO DA CONTA (padrao America/Sao_Paulo), nao mais em UTC — mesmo criterio das datas relativas.",
|
|
701
|
+
"description": "Filtra contatos com condicoes avancadas (payload de condicoes). 15/pagina.\n\nCHAVES FILTRAVEIS: name, email, identifier (equal_to/not_equal_to/contains/does_not_contain — match parcial case-insensitive); phone_number (+starts_with); country_code, city, company; cpf, cnpj, rg, profession (cadastral; cpf/cnpj/rg aceitam is_present/is_not_present); labels; created_at, last_activity_at (is_greater_than/is_less_than/days_before); blocked (equal_to true/false); QUALQUER outra chave = atributo personalizado do contato.\n\nREGISTROS VINCULADOS (acha o contato pelo que aconteceu com ele): attribute_key 'conversation_search' (conversa vinculada: conversation_status/conversation_labels/conversation_inbox_id), condicoes com custom_attribute_type 'conversation_attribute' (atributo da conversa vinculada) e attribute_key 'kanban_card' (card vinculado: card_funnel_id/card_stage/card_priority/card_status). Combinaveis com E/OU.\n\nCada condicao: {attribute_key, filter_operator, values[], query_operator:'and'|'or', custom_attribute_type?}. Operador fora da lista da chave = 422. [2026-07-25] Nova chave id (id interno do contato, equal_to/not_equal_to) — serve pra exportar/checar UM contato especifico. NOTA 18/08: data FIXA com is_greater_than/is_less_than corta o dia no FUSO DA CONTA (padrao America/Sao_Paulo), nao mais em UTC — mesmo criterio das datas relativas.\n\nTELEFONE COM E SEM O 9 (desde 05/09/2026): phone_number com equal_to/not_equal_to casa as DUAS formas do celular brasileiro (mande +5541999887766 ou +554199887766 — acham a mesma ficha; not_equal_to exclui as duas). Valor formatado ('(41) 99988-7766') tambem casa. Telefone fixo, estrangeiro ou trecho segue exato. ATENCAO: 'Selecionar todos' + excluir sobre um filtro de telefone apaga as 2 fichas da mesma pessoa (decisao do dono, 05/09).",
|
|
702
702
|
"category": "Contatos",
|
|
703
703
|
"params": [
|
|
704
704
|
{
|
|
@@ -1224,7 +1224,7 @@
|
|
|
1224
1224
|
"method": "POST",
|
|
1225
1225
|
"path": "/api/v1/accounts/{account_id}/conversations",
|
|
1226
1226
|
"title": "Criar Conversa",
|
|
1227
|
-
"description": "Cria uma nova conversa. Obrigatorios: inbox_id, contact_id. Cria ContactInbox automaticamente; para inbox WAHA valida se o numero tem WhatsApp (422 phone_not_on_whatsapp).",
|
|
1227
|
+
"description": "Cria uma nova conversa. Obrigatorios: inbox_id, contact_id. Cria ContactInbox automaticamente; para inbox WAHA valida se o numero tem WhatsApp (422 phone_not_on_whatsapp). RESERVADO (02/09/2026): additional_attributes recusa as chaves do sistema (imported_from, live_since, has_imported_history, mail_subject, type, in_reply_to, initiated_by, auto_reply, original_channel_type, conversation_language, agent_reply_time_window, conference_sid, call_status, tiktok_capabilities, captain_media_asset_id, import_digits) — sao ignoradas. A mensagem que chega ADOTA a conversa existente (uma por contato/caixa) e NAO dispara 'conversa criada'; o gatilho equivalente e 'Conversa reaberta'. Use last_incoming_message_at da conversa para saber se a janela de 24h esta aberta.",
|
|
1228
1228
|
"category": "Conversas",
|
|
1229
1229
|
"params": [
|
|
1230
1230
|
{
|
|
@@ -2520,7 +2520,7 @@
|
|
|
2520
2520
|
"method": "GET",
|
|
2521
2521
|
"path": "/api/v1/accounts/{account_id}/funnels/{id}/stage_report",
|
|
2522
2522
|
"title": "Relatorio de UMA Etapa do Funil (Kanban)",
|
|
2523
|
-
"description": "Numeros de UMA etapa do funil calculados no SERVIDOR (antes a tela so somava os cards carregados na tela, mostrando '100' numa etapa de 432): total de cards, faixa de valores, ganhos/perdidos, distribuicao por prioridade e ranking de vendedores da etapa. Aceita escolher a REGUA de data e recortar por periodo. FUNIL = KANBAN (mesma coisa no LionChat).",
|
|
2523
|
+
"description": "Numeros de UMA etapa do funil calculados no SERVIDOR (antes a tela so somava os cards carregados na tela, mostrando '100' numa etapa de 432): total de cards, faixa de valores, ganhos/perdidos, distribuicao por prioridade e ranking de vendedores da etapa. Aceita escolher a REGUA de data e recortar por periodo. FUNIL = KANBAN (mesma coisa no LionChat). FILTRO DE DATA (02/09/2026): quatro eixos, cada um com janela fixa (_start/_end ISO) ou atalho relativo (_relative + _relative_days): criacao (date_*), entrada na etapa atual (stage_date_*), atualizacao (updated_date_*) e ganho/perdido em (closed_date_*). Operadores do atalho: today, yesterday (estes DOIS sem numero), last_days (ultimos N incluindo hoje), days_ago (o dia exato de N atras), days_before (mais de N atras). N inteiro 1..998; janela no fuso da CONTA. CUIDADO: operador invalido ou N invalido NAO da erro — o atalho e ignorado e a resposta volta MAIOR (ate 5.000 cards) com cara de filtrada; confira a contagem antes de qualquer acao em massa. Ver o resource de filtros.",
|
|
2524
2524
|
"category": "Funis",
|
|
2525
2525
|
"params": [
|
|
2526
2526
|
{
|
|
@@ -3658,7 +3658,7 @@
|
|
|
3658
3658
|
"method": "GET",
|
|
3659
3659
|
"path": "/api/v1/accounts/{account_id}/kanban_items/filter",
|
|
3660
3660
|
"title": "Filtrar Items",
|
|
3661
|
-
"description": "Filtra cards do Kanban com o filtro RICO da plataforma (mesmo motor da tela '+ Filtro'). Filtros REAIS aplicados: etapas (stages), prioridades, status do card (open/won/lost), agente, faixa de valor, periodo de criacao (date_start/end), periodo de MOVIMENTACAO PARA A ETAPA atual (stage_date_start/end), periodo de agendamento (scheduled_date_*), tarefas (task_filter), canal, etiqueta da conversa, oferta e atributos personalizados de card/contato/conversa (JSON-string + custom_attribute_match all/any). ATENCAO: SEM paginacao — retorna ate 5000 cards em ordem created_at DESC, shape {items:[], total, filters}. NAO existe filtro por time aqui (use lionchat_kanban_items_list_3 pra relatorio por time, ou filtre por agent_id); ordenacao e fixa. (2026-07-24: removidos os parametros stage_id/inbox_id/sort_by/sort_direction/page — eram aceitos mas IGNORADOS pelo backend; use stages[] no lugar de stage_id.) NOVO 2026-08-13: updated_date_start/end (ultima alteracao, qualquer mexida) e closed_date_start/end (data do DESFECHO — ganho/perdido; use com statuses=['won'] pra 'os ganhos do mes').",
|
|
3661
|
+
"description": "Filtra cards do Kanban com o filtro RICO da plataforma (mesmo motor da tela '+ Filtro'). Filtros REAIS aplicados: etapas (stages), prioridades, status do card (open/won/lost), agente, faixa de valor, periodo de criacao (date_start/end), periodo de MOVIMENTACAO PARA A ETAPA atual (stage_date_start/end), periodo de agendamento (scheduled_date_*), tarefas (task_filter), canal, etiqueta da conversa, oferta e atributos personalizados de card/contato/conversa (JSON-string + custom_attribute_match all/any). ATENCAO: SEM paginacao — retorna ate 5000 cards em ordem created_at DESC, shape {items:[], total, filters}. NAO existe filtro por time aqui (use lionchat_kanban_items_list_3 pra relatorio por time, ou filtre por agent_id); ordenacao e fixa. (2026-07-24: removidos os parametros stage_id/inbox_id/sort_by/sort_direction/page — eram aceitos mas IGNORADOS pelo backend; use stages[] no lugar de stage_id.) NOVO 2026-08-13: updated_date_start/end (ultima alteracao, qualquer mexida) e closed_date_start/end (data do DESFECHO — ganho/perdido; use com statuses=['won'] pra 'os ganhos do mes'). FILTRO DE DATA (02/09/2026): quatro eixos, cada um com janela fixa (_start/_end ISO) ou atalho relativo (_relative + _relative_days): criacao (date_*), entrada na etapa atual (stage_date_*), atualizacao (updated_date_*) e ganho/perdido em (closed_date_*). Operadores do atalho: today, yesterday (estes DOIS sem numero), last_days (ultimos N incluindo hoje), days_ago (o dia exato de N atras), days_before (mais de N atras). N inteiro 1..998; janela no fuso da CONTA. CUIDADO: operador invalido ou N invalido NAO da erro — o atalho e ignorado e a resposta volta MAIOR (ate 5.000 cards) com cara de filtrada; confira a contagem antes de qualquer acao em massa. Ver o resource de filtros.",
|
|
3662
3662
|
"category": "Itens",
|
|
3663
3663
|
"params": [
|
|
3664
3664
|
{
|
|
@@ -3857,7 +3857,7 @@
|
|
|
3857
3857
|
"method": "GET",
|
|
3858
3858
|
"path": "/api/v1/accounts/{account_id}/kanban_items/export",
|
|
3859
3859
|
"title": "Exportar Items",
|
|
3860
|
-
"description": "Exporta cards do Kanban em massa. **Requer perfil Administrador.**. Lista itens Kanban paginados (per_page padrão 25, máximo 100). Filtros disponíveis: priorities[], agent_id, value_min, value_max. Retorna meta (contadores) + payload (array de item Kanban).",
|
|
3860
|
+
"description": "Exporta cards do Kanban em massa. **Requer perfil Administrador.**. Lista itens Kanban paginados (per_page padrão 25, máximo 100). Filtros disponíveis: priorities[], agent_id, value_min, value_max. Retorna meta (contadores) + payload (array de item Kanban). FILTRO DE DATA (02/09/2026): quatro eixos, cada um com janela fixa (_start/_end ISO) ou atalho relativo (_relative + _relative_days): criacao (date_*), entrada na etapa atual (stage_date_*), atualizacao (updated_date_*) e ganho/perdido em (closed_date_*). Operadores do atalho: today, yesterday (estes DOIS sem numero), last_days (ultimos N incluindo hoje), days_ago (o dia exato de N atras), days_before (mais de N atras). N inteiro 1..998; janela no fuso da CONTA. CUIDADO: operador invalido ou N invalido NAO da erro — o atalho e ignorado e a resposta volta MAIOR (ate 5.000 cards) com cara de filtrada; confira a contagem antes de qualquer acao em massa. Ver o resource de filtros.",
|
|
3861
3861
|
"category": "Itens",
|
|
3862
3862
|
"params": [
|
|
3863
3863
|
{
|
|
@@ -4347,7 +4347,7 @@
|
|
|
4347
4347
|
"type": "string",
|
|
4348
4348
|
"location": "body",
|
|
4349
4349
|
"required": false,
|
|
4350
|
-
"description": "Modelo LLM do assistente.
|
|
4350
|
+
"description": "Modelo LLM do assistente. VALIDADO no servidor desde 08/09/2026: valor fora da lista devolve 422 (message 'Model is not included in the list') e nada e gravado. Valores validos — os mesmos 19 da tela: gpt-4.1-nano, gpt-4o-mini, gpt-4.1-mini, gpt-5.4-nano, gpt-5.4-mini, gpt-4o, gpt-4.1, gpt-5-mini, gpt-5.4, o3-mini, o4-mini, gpt-5, gpt-5.2, gpt-5.5, o1, o3, gpt-5.6-luna, gpt-5.6-terra, gpt-5.6-sol. Familia gpt-5.6 (luna/terra/sol) LIBERADA em 08/09/2026: o servidor fala com esses tres por um canal proprio da OpenAI (/v1/responses, so pra eles; os outros 16 seguem como sempre). Regras dela: nao aceita temperatura (o campo some na tela e e ignorado), custo premium, e o Formulario publico (bloco de IA) NAO usa esses tres — la o servidor cai no modelo padrao da conta. Nao existe 'gpt-5.6' sem sufixo. Default: openai_model da conta ou LlmConstants::DEFAULT_MODEL. Assistente antigo com modelo fora da lista continua salvando o resto do config; so a TROCA de modelo e conferida."
|
|
4351
4351
|
},
|
|
4352
4352
|
{
|
|
4353
4353
|
"name": "config.instructions",
|
|
@@ -4572,7 +4572,7 @@
|
|
|
4572
4572
|
"type": "string",
|
|
4573
4573
|
"location": "body",
|
|
4574
4574
|
"required": false,
|
|
4575
|
-
"description": "Modelo LLM do assistente.
|
|
4575
|
+
"description": "Modelo LLM do assistente. VALIDADO no servidor desde 08/09/2026: valor fora da lista devolve 422 (message 'Model is not included in the list') e nada e gravado. Valores validos — os mesmos 19 da tela: gpt-4.1-nano, gpt-4o-mini, gpt-4.1-mini, gpt-5.4-nano, gpt-5.4-mini, gpt-4o, gpt-4.1, gpt-5-mini, gpt-5.4, o3-mini, o4-mini, gpt-5, gpt-5.2, gpt-5.5, o1, o3, gpt-5.6-luna, gpt-5.6-terra, gpt-5.6-sol. Familia gpt-5.6 (luna/terra/sol) LIBERADA em 08/09/2026: o servidor fala com esses tres por um canal proprio da OpenAI (/v1/responses, so pra eles; os outros 16 seguem como sempre). Regras dela: nao aceita temperatura (o campo some na tela e e ignorado), custo premium, e o Formulario publico (bloco de IA) NAO usa esses tres — la o servidor cai no modelo padrao da conta. Nao existe 'gpt-5.6' sem sufixo. Default: openai_model da conta ou LlmConstants::DEFAULT_MODEL. Assistente antigo com modelo fora da lista continua salvando o resto do config; so a TROCA de modelo e conferida."
|
|
4576
4576
|
},
|
|
4577
4577
|
{
|
|
4578
4578
|
"name": "config.instructions",
|
|
@@ -8228,7 +8228,7 @@
|
|
|
8228
8228
|
"method": "GET",
|
|
8229
8229
|
"path": "/api/v1/accounts/{account_id}/search/messages",
|
|
8230
8230
|
"title": "Buscar Mensagens",
|
|
8231
|
-
"description": "RAPIDO. E uma BUSCA, nao uma listagem — o sufixo _list no id e historico, ignore. Procura o termo DENTRO DO TEXTO das mensagens.\n\nE A SUBSTITUTA CERTA do lionchat_conversations_search legado, que faz a mesma busca em 15 a 22 segundos: aqui ha indice trigram proprio e teto de tempo em duas fases (2 s na primeira tentativa, 14 s no limite absoluto), entao nao trava. Devolve payload.messages[], 15 por pagina.\n\nTermo de texto com menos de 3 caracteres e descartado (so-digitos e isento, protegido pelo limite da primeira fase); se todos os termos forem curtos a resposta vem VAZIA — isso nao significa que nao existe, significa que a busca nao rodou.\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). NOVO (2026-06-16): casa por TRECHO/substring (multi-termo AND — ex.: 'época d' acha 'época do'); e cada resultado de mensagem inclui previous_message e next_message (as mensagens anterior e seguinte da MESMA conversa, em ordem cronológica, ignorando eventos de sistema) como objeto {id, content, sender_name, message_type, private, created_at} ou null quando não há vizinha.",
|
|
8231
|
+
"description": "RAPIDO. E uma BUSCA, nao uma listagem — o sufixo _list no id e historico, ignore. Procura o termo DENTRO DO TEXTO das mensagens.\n\nE A SUBSTITUTA CERTA do lionchat_conversations_search legado, que faz a mesma busca em 15 a 22 segundos: aqui ha indice trigram proprio e teto de tempo em duas fases (2 s na primeira tentativa, 14 s no limite absoluto), entao nao trava. Devolve payload.messages[], 15 por pagina.\n\nTermo de texto com menos de 3 caracteres e descartado (so-digitos e isento, protegido pelo limite da primeira fase); se todos os termos forem curtos a resposta vem VAZIA — isso nao significa que nao existe, significa que a busca nao rodou.\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). NOVO (2026-06-16): casa por TRECHO/substring (multi-termo AND — ex.: 'época d' acha 'época do'); e cada resultado de mensagem inclui previous_message e next_message (as mensagens anterior e seguinte da MESMA conversa, em ordem cronológica, ignorando eventos de sistema) como objeto {id, content, sender_name, message_type, private, created_at} ou null quando não há vizinha. Leia message_search_interrupted no retorno antes de afirmar 'nao encontrado'.",
|
|
8232
8232
|
"category": "Busca",
|
|
8233
8233
|
"params": [
|
|
8234
8234
|
{
|
|
@@ -8274,7 +8274,7 @@
|
|
|
8274
8274
|
"description": "Página"
|
|
8275
8275
|
}
|
|
8276
8276
|
],
|
|
8277
|
-
"returns": "{ payload: { messages: [...] } } — sem meta e sem total. 15 mensagens por pagina, das MAIS RECENTES para as mais antigas; para ver o resto use `page` (a resposta NAO informa quantas paginas existem, entao vindo 15 itens assuma que pode haver mais). Cada mensagem traz contact_name, contact_thumbnail, conversation_status e previous_message/next_message (as vizinhas da MESMA conversa, ou null). O resultado de MENSAGEM nao traz `labels` — as etiquetas so vem nos cards de conversa e de contato.",
|
|
8277
|
+
"returns": "{ payload: { messages: [...] } } — sem meta e sem total. 15 mensagens por pagina, das MAIS RECENTES para as mais antigas; para ver o resto use `page` (a resposta NAO informa quantas paginas existem, entao vindo 15 itens assuma que pode haver mais). Cada mensagem traz contact_name, contact_thumbnail, conversation_status e previous_message/next_message (as vizinhas da MESMA conversa, ou null). O resultado de MENSAGEM nao traz `labels` — as etiquetas so vem nos cards de conversa e de contato. Desde 04/09 o payload traz tambem message_search_interrupted (boolean): true = a secao de mensagens estourou o teto de tempo (2 s + 2 s) e a lista voltou VAZIA/incompleta — NAO quer dizer que nao existe; refine o termo ou recorte por conversa.",
|
|
8278
8278
|
"common_use_cases": [
|
|
8279
8279
|
"Dashboard: contar/exibir resultados de busca",
|
|
8280
8280
|
"Buscar com filtros antes de outra operação",
|
|
@@ -9596,7 +9596,7 @@
|
|
|
9596
9596
|
"method": "POST",
|
|
9597
9597
|
"path": "/api/v1/accounts/{account_id}/flows",
|
|
9598
9598
|
"title": "Criar Flow",
|
|
9599
|
-
"description": "Cria um flow (FlowBuilder) na conta. Requer Admin. flow_data segue formato Vue Flow {nodes:[], edges:[]}. NODE SCHEMA — start: {label}. send_message: {label, messageItems:[{id, type:'text', content}]} handles: success/no_response/error. wait_response: {label, waitTime, waitUnit:'minutes'|'seconds', validation:'any'|'options'|'regex', acceptedOptions:['1','2'] (se options), regexPattern (se regex), invalidMessage, maxRetries:3, saveTo:'variable'|'contact_name'|'contact_email'|'contact_phone'|'contact_attr'|'conversation_attr'|'', saveVariable, saveAttrKey} — quando validation='options' os handles ficam 'option_{val}' + 'timeout'; senão 'success' + 'timeout' — NUNCA precisa de condition node depois. condition: {label, conditions:[{id, label, field, operator, value}]} handles = 'cond_0','cond_1',... (INDICE no array, NAO o id) + 'default'. action: {label, items:[{key, config:{...}}]} keys comuns assign_team({team_id}), assign_agent({agent_id}), add_label({labels:['slug',...]}), remove_label({labels}), change_status({status}), change_priority({priority}), mute_conversation({}), add_private_note({content}), create_kanban_item({funnel_id, funnel_stage,...}), move_kanban_stage({funnel_id, funnel_stage}), deactivate_flow({}), assign_captain({assistant_id}). api: {label, method, url, headers:[{key,value}], body, apiResponseVar}. set_variable: {label, variables:[{name, value}]}. wait: {label, waitTime, waitUnit}. EDGE SCHEMA: {id, source, target, sourceHandle (opcional, OBRIGATORIO casar com handle exposto pelo node source), type:'deletable', animated:true}. ERROS COMUNS QUE DEVEM SER EVITADOS: (1) action usa items[].config NAO items[].params; (2) send_message usa messageItems NAO items; (3) wait_response com validation='options' NAO precisa de condition node — use sourceHandle='option_X' diretamente; (4) sourceHandle inventado tipo 'c1','c2' nao funciona — sempre usar o handle real; (5) inbox_ids precisa vir aninhado em {flow:{inbox_ids:[]}} no PUT bruto, mas no MCP basta inbox_ids no nivel raiz. Cria novo flow. Obrigatórios: name, channel_type. Valida unicidade quando aplicável. Retorna o flow criado com ID atribuído. POSITIONING (CRITICO): cada node DEVE ter position:{x,y}. Sem isso, todos empilham no canvas no (0,0). Regra basica de layout: start em {x:50,y:300}, espaco horizontal +320 entre nodes sequenciais, ramificacoes em +/-150 vertical. ANTES DE GERAR JSON consulte o resource lionchat://docs/flowbuilder-design-guide (schema completo de cada tipo de node, handles expostos, erros comuns, checklist) e lionchat://docs/flowbuilder-patterns (10 templates prontos pra adaptar). BRAINSTORMING: se faltou info critica (canal, gatilho, conteudo), use o prompt create_flow_brainstorm como banco de perguntas sugeridas — pergunte SO o que falta, sem checklist forcado. APOS GERAR: rode o checklist da secao 6 do design guide antes de submeter (1 node start, todo node com id unico + position + data, todo edge com sourceHandle valido). NUNCA invente sourceHandle (no condition use cond_0/cond_1/default, no wait_response options use option_X, no AI intent use intent_<opcao>). IMPORTANTE: chame lionchat_flows_schema_reference antes pra ver o schema COMPLETO e atualizado (nodes end/ai/note, etiqueta conversa vs contato, webhook embutido, timeout, anti-loop). Pra ferramentas da IA (ai_tool) use lionchat_flow_tools_create. conversation_mode: 'individual' (default) | 'group'. Sticky note (type 'note'): data usa title+body+color(yellow|teal|blue|violet|pink|orange|slate)+width+height — NUNCA 'content'. ORGANIZAÇÃO: preencha tags ao criar (reutilizando as tags já existentes nos flows da conta — veja flows_list) pra manter a lista organizada. STICKY NOTE: o texto da nota (type note) vai em data.title + data.body — content/label/text deixam a nota EM BRANCO na tela; nunca crie nota sem body. LAYOUT: espace os nodes (colunas a >=320px no x, ramos a >=180px no y; notas AO LADO/ACIMA do trecho, nunca sobre nodes ou linhas). REGRAS 18/08: acao start_flow com flow_id do PROPRIO flow e aceita no save mas IGNORADA EM SILENCIO na execucao (o fluxo para ali) — aponte sempre pra OUTRO flow. Condicoes: preencha operator E field juntos (tabela dos pares no resource flowbuilder-patterns), senao a regra roda certa e aparece errada na tela do cliente. NOVIDADES 01/09/2026 no schema (lionchat_flows_schema_reference): acao send_conversion (Meta/Google Ads/GA4 de dentro do fluxo) e condicao por origem/campanha (attr_config de conversa com origin_kind=paid_ad etc.).",
|
|
9599
|
+
"description": "Cria um flow (FlowBuilder) na conta. Requer Admin. flow_data segue formato Vue Flow {nodes:[], edges:[]}. NODE SCHEMA — start: {label}. send_message: {label, messageItems:[{id, type:'text', content}]} handles: success/no_response/error. wait_response: {label, waitTime, waitUnit:'minutes'|'seconds', validation:'any'|'options'|'regex', acceptedOptions:['1','2'] (se options), regexPattern (se regex), invalidMessage, maxRetries:3, saveTo:'variable'|'contact_name'|'contact_email'|'contact_phone'|'contact_attr'|'conversation_attr'|'', saveVariable, saveAttrKey} — quando validation='options' os handles ficam 'option_{val}' + 'timeout'; senão 'success' + 'timeout' — NUNCA precisa de condition node depois. condition: {label, conditions:[{id, label, field, operator, value}]} handles = 'cond_0','cond_1',... (INDICE no array, NAO o id) + 'default'. action: {label, items:[{key, config:{...}}]} keys comuns assign_team({team_id}), assign_agent({agent_id}), add_label({labels:['slug',...]}), remove_label({labels}), change_status({status}), change_priority({priority}), mute_conversation({}), add_private_note({content}), create_kanban_item({funnel_id, funnel_stage,...}), move_kanban_stage({funnel_id, funnel_stage}), deactivate_flow({}), assign_captain({assistant_id}). api: {label, method, url, headers:[{key,value}], body, apiResponseVar}. set_variable: {label, variables:[{name, value}]}. wait: {label, waitTime, waitUnit}. EDGE SCHEMA: {id, source, target, sourceHandle (opcional, OBRIGATORIO casar com handle exposto pelo node source), type:'deletable', animated:true}. ERROS COMUNS QUE DEVEM SER EVITADOS: (1) action usa items[].config NAO items[].params; (2) send_message usa messageItems NAO items; (3) wait_response com validation='options' NAO precisa de condition node — use sourceHandle='option_X' diretamente; (4) sourceHandle inventado tipo 'c1','c2' nao funciona — sempre usar o handle real; (5) inbox_ids precisa vir aninhado em {flow:{inbox_ids:[]}} no PUT bruto, mas no MCP basta inbox_ids no nivel raiz. Cria novo flow. Obrigatórios: name, channel_type. Valida unicidade quando aplicável. Retorna o flow criado com ID atribuído. POSITIONING (CRITICO): cada node DEVE ter position:{x,y}. Sem isso, todos empilham no canvas no (0,0). Regra basica de layout: start em {x:50,y:300}, espaco horizontal +320 entre nodes sequenciais, ramificacoes em +/-150 vertical. ANTES DE GERAR JSON consulte o resource lionchat://docs/flowbuilder-design-guide (schema completo de cada tipo de node, handles expostos, erros comuns, checklist) e lionchat://docs/flowbuilder-patterns (10 templates prontos pra adaptar). BRAINSTORMING: se faltou info critica (canal, gatilho, conteudo), use o prompt create_flow_brainstorm como banco de perguntas sugeridas — pergunte SO o que falta, sem checklist forcado. APOS GERAR: rode o checklist da secao 6 do design guide antes de submeter (1 node start, todo node com id unico + position + data, todo edge com sourceHandle valido). NUNCA invente sourceHandle (no condition use cond_0/cond_1/default, no wait_response options use option_X, no AI intent use intent_<opcao>). IMPORTANTE: chame lionchat_flows_schema_reference antes pra ver o schema COMPLETO e atualizado (nodes end/ai/note, etiqueta conversa vs contato, webhook embutido, timeout, anti-loop). Pra ferramentas da IA (ai_tool) use lionchat_flow_tools_create. conversation_mode: 'individual' (default) | 'group'. Sticky note (type 'note'): data usa title+body+color(yellow|teal|blue|violet|pink|orange|slate)+width+height — NUNCA 'content'. ORGANIZAÇÃO: preencha tags ao criar (reutilizando as tags já existentes nos flows da conta — veja flows_list) pra manter a lista organizada. STICKY NOTE: o texto da nota (type note) vai em data.title + data.body — content/label/text deixam a nota EM BRANCO na tela; nunca crie nota sem body. LAYOUT: espace os nodes (colunas a >=320px no x, ramos a >=180px no y; notas AO LADO/ACIMA do trecho, nunca sobre nodes ou linhas). REGRAS 18/08: acao start_flow com flow_id do PROPRIO flow e aceita no save mas IGNORADA EM SILENCIO na execucao (o fluxo para ali) — aponte sempre pra OUTRO flow. Condicoes: preencha operator E field juntos (tabela dos pares no resource flowbuilder-patterns), senao a regra roda certa e aparece errada na tela do cliente. NOVIDADES 01/09/2026 no schema (lionchat_flows_schema_reference): acao send_conversion (Meta/Google Ads/GA4 de dentro do fluxo) e condicao por origem/campanha (attr_config de conversa com origin_kind=paid_ad etc.). NOVIDADES 02/09/2026: (1) send_conversion ganhou event_names — UM evento por destino ({meta, google_ads, ga4}); event_name virou reserva (grave os dois); Google Ads so aceita nome do conversion_action_map. (2) preset 'Origem do lead' (attrScope 'lead_origin', attr_key origin_platform; valores: plataforma ou 'custom:<slug>'). (3) REGRA DE VALOR na condicao de atributo: equal/not_equal/contains/not_contains gravam em values:[...] (LISTA) com value:'' — value solo abre VAZIO na tela do cliente. Ver lionchat_flows_schema_reference.",
|
|
9600
9600
|
"category": "Flows",
|
|
9601
9601
|
"params": [
|
|
9602
9602
|
{
|
|
@@ -9691,7 +9691,7 @@
|
|
|
9691
9691
|
"method": "PUT",
|
|
9692
9692
|
"path": "/api/v1/accounts/{account_id}/flows/{id}",
|
|
9693
9693
|
"title": "Atualizar Flow",
|
|
9694
|
-
"description": "Atualiza nome, descricao, caixas de entrada ou dados dos blocos. Mesmo schema de flow_data do tool lionchat_flows_create — consulte a descricao daquele tool para o schema completo dos nodes (start, send_message, wait_response, condition, action, api, set_variable) e dos edges. RECAP RAPIDO: action items[].config (nao params); send_message messageItems (nao items); wait_response validation='options' gera handles 'option_X' (dispensa condition node); edges sourceHandle DEVE casar com handle real do node source. Atualiza campos do flow existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: name, description, inbox_ids, flow_data. IMPORTANTE: chame lionchat_flows_schema_reference antes pra ver o schema COMPLETO e atualizado (nodes end/ai/note, etiqueta conversa vs contato, webhook embutido, timeout, anti-loop). Pra ferramentas da IA (ai_tool) use lionchat_flow_tools_create. STICKY NOTE: o texto da nota (type note) vai em data.title + data.body — content/label/text deixam a nota EM BRANCO na tela; nunca crie nota sem body. LAYOUT: espace os nodes (colunas a >=320px no x, ramos a >=180px no y; notas AO LADO/ACIMA do trecho, nunca sobre nodes ou linhas). REGRAS 18/08: acao start_flow com flow_id do PROPRIO flow e aceita no save mas IGNORADA EM SILENCIO na execucao (o fluxo para ali) — aponte sempre pra OUTRO flow. Condicoes: preencha operator E field juntos (tabela dos pares no resource flowbuilder-patterns), senao a regra roda certa e aparece errada na tela do cliente. NOVIDADES 01/09/2026 no schema (lionchat_flows_schema_reference): acao send_conversion (Meta/Google Ads/GA4 de dentro do fluxo) e condicao por origem/campanha (attr_config de conversa com origin_kind=paid_ad etc.).",
|
|
9694
|
+
"description": "Atualiza nome, descricao, caixas de entrada ou dados dos blocos. Mesmo schema de flow_data do tool lionchat_flows_create — consulte a descricao daquele tool para o schema completo dos nodes (start, send_message, wait_response, condition, action, api, set_variable) e dos edges. RECAP RAPIDO: action items[].config (nao params); send_message messageItems (nao items); wait_response validation='options' gera handles 'option_X' (dispensa condition node); edges sourceHandle DEVE casar com handle real do node source. Atualiza campos do flow existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: name, description, inbox_ids, flow_data. IMPORTANTE: chame lionchat_flows_schema_reference antes pra ver o schema COMPLETO e atualizado (nodes end/ai/note, etiqueta conversa vs contato, webhook embutido, timeout, anti-loop). Pra ferramentas da IA (ai_tool) use lionchat_flow_tools_create. STICKY NOTE: o texto da nota (type note) vai em data.title + data.body — content/label/text deixam a nota EM BRANCO na tela; nunca crie nota sem body. LAYOUT: espace os nodes (colunas a >=320px no x, ramos a >=180px no y; notas AO LADO/ACIMA do trecho, nunca sobre nodes ou linhas). REGRAS 18/08: acao start_flow com flow_id do PROPRIO flow e aceita no save mas IGNORADA EM SILENCIO na execucao (o fluxo para ali) — aponte sempre pra OUTRO flow. Condicoes: preencha operator E field juntos (tabela dos pares no resource flowbuilder-patterns), senao a regra roda certa e aparece errada na tela do cliente. NOVIDADES 01/09/2026 no schema (lionchat_flows_schema_reference): acao send_conversion (Meta/Google Ads/GA4 de dentro do fluxo) e condicao por origem/campanha (attr_config de conversa com origin_kind=paid_ad etc.). NOVIDADES 02/09/2026: (1) send_conversion ganhou event_names — UM evento por destino ({meta, google_ads, ga4}); event_name virou reserva (grave os dois); Google Ads so aceita nome do conversion_action_map. (2) preset 'Origem do lead' (attrScope 'lead_origin', attr_key origin_platform; valores: plataforma ou 'custom:<slug>'). (3) REGRA DE VALOR na condicao de atributo: equal/not_equal/contains/not_contains gravam em values:[...] (LISTA) com value:'' — value solo abre VAZIO na tela do cliente. Ver lionchat_flows_schema_reference.",
|
|
9695
9695
|
"category": "Flows",
|
|
9696
9696
|
"params": [
|
|
9697
9697
|
{
|
|
@@ -10101,7 +10101,7 @@
|
|
|
10101
10101
|
"type": "string",
|
|
10102
10102
|
"location": "body",
|
|
10103
10103
|
"required": false,
|
|
10104
|
-
"description": "Modelo LLM (gpt-4o-mini, gpt-
|
|
10104
|
+
"description": "Modelo LLM (gpt-4o-mini, gpt-4.1-mini, gpt-5.4, gpt-5.6-luna/terra/sol etc. — a mesma lista de 19 do assistente). A familia gpt-5.6 e aceita no bloco de IA do fluxo desde 08/09/2026 e nao usa temperatura."
|
|
10105
10105
|
},
|
|
10106
10106
|
{
|
|
10107
10107
|
"name": "instructions",
|
|
@@ -13558,7 +13558,7 @@
|
|
|
13558
13558
|
"type": "array",
|
|
13559
13559
|
"location": "body",
|
|
13560
13560
|
"required": true,
|
|
13561
|
-
"description": "Array de permissoes"
|
|
13561
|
+
"description": "Array de permissoes (array de strings). Valores aceitos (22): conversation_manage, conversation_delete, conversation_unassigned_manage, conversation_participating_manage, conversation_team_manage, contact_manage, contact_export_import, report_manage, knowledge_base_manage, kanban_manage, kanban_view, kanban_delete, kanban_export_import, offer_manage, funnel_manage, campaign_manage, automation_manage, marketing_integrations_manage, captain_manage, flowbuilder_manage, lead_form_manage (Formularios publicos, 05/09), signature_manage (Assinatura eletronica, 05/09). Fora da lista = recusado. Administrador tem tudo sem cargo; agente sem cargo nao tem lead_form_manage nem signature_manage (nao ve Formularios nem Assinaturas no menu)."
|
|
13562
13562
|
}
|
|
13563
13563
|
],
|
|
13564
13564
|
"returns": "papel personalizado criado (com novo ID)",
|
|
@@ -13636,7 +13636,7 @@
|
|
|
13636
13636
|
"type": "array",
|
|
13637
13637
|
"location": "body",
|
|
13638
13638
|
"required": false,
|
|
13639
|
-
"description": "Permissoes"
|
|
13639
|
+
"description": "Permissoes (array de strings). Valores aceitos (22): conversation_manage, conversation_delete, conversation_unassigned_manage, conversation_participating_manage, conversation_team_manage, contact_manage, contact_export_import, report_manage, knowledge_base_manage, kanban_manage, kanban_view, kanban_delete, kanban_export_import, offer_manage, funnel_manage, campaign_manage, automation_manage, marketing_integrations_manage, captain_manage, flowbuilder_manage, lead_form_manage (Formularios publicos, 05/09), signature_manage (Assinatura eletronica, 05/09). Fora da lista = recusado. Administrador tem tudo sem cargo; agente sem cargo nao tem lead_form_manage nem signature_manage (nao ve Formularios nem Assinaturas no menu)."
|
|
13640
13640
|
}
|
|
13641
13641
|
],
|
|
13642
13642
|
"returns": "papel personalizado atualizado",
|
|
@@ -20792,7 +20792,7 @@
|
|
|
20792
20792
|
"method": "PATCH",
|
|
20793
20793
|
"path": "/api/v1/accounts/{account_id}/agents/{id}",
|
|
20794
20794
|
"title": "Atualizar Agente",
|
|
20795
|
-
"description": "Atualiza um agente existente. Campos suportados: name, role (agent ou administrator), availability, auto_offline, custom_role_id, team_ids (times) e inboxes (caixas com cargo Agente/Supervisor). Ao enviar team_ids e/ou inboxes, o agente e RECONCILIADO para o estado enviado: entra nos novos, SAI dos que nao estao na lista e ajusta o cargo por caixa — envie sempre a lista COMPLETA desejada. Se NAO enviar team_ids/inboxes, os vinculos atuais ficam intactos. Use para promover/rebaixar papel, ajustar disponibilidade, aplicar cargo personalizado ou gerenciar times/caixas do agente.",
|
|
20795
|
+
"description": "Atualiza um agente existente. Campos suportados: name, role (agent ou administrator), availability, auto_offline, custom_role_id, team_ids (times) e inboxes (caixas com cargo Agente/Supervisor). Ao enviar team_ids e/ou inboxes, o agente e RECONCILIADO para o estado enviado: entra nos novos, SAI dos que nao estao na lista e ajusta o cargo por caixa — envie sempre a lista COMPLETA desejada. Se NAO enviar team_ids/inboxes, os vinculos atuais ficam intactos. Use para promover/rebaixar papel, ajustar disponibilidade, aplicar cargo personalizado ou gerenciar times/caixas do agente. PROPRIO USUARIO (02/09/2026): editar a si mesmo e permitido para times e caixas, mas NAO para o cargo — mandar role/custom_role_id do proprio usuario devolve 422 e DESCARTA a chamada inteira (a recusa e antes do update), entao as outras alteracoes tambem se perdem. Troca de cargo so por outro administrador.",
|
|
20796
20796
|
"category": "Agentes",
|
|
20797
20797
|
"params": [
|
|
20798
20798
|
{
|
|
@@ -22851,7 +22851,7 @@
|
|
|
22851
22851
|
"description": "ID da caixa de entrada WAHA"
|
|
22852
22852
|
}
|
|
22853
22853
|
],
|
|
22854
|
-
"returns": "{ status, connected, phone_number, qr_code_available, phone_number_changed }",
|
|
22854
|
+
"returns": "{ status, connected, phone_number, qr_code_available, phone_number_changed, previous_phone_number, qr_link_active, qr_link_expires_at, contacts_quota, reachout_timelock }. contacts_quota vem do WhatsApp (nao da Meta) e traz cappingStatus/totalQuota/usedQuota/cycleStart/cycleEnd; totalQuota -1 = sem limite (o caso de quase toda caixa). reachout_timelock null = pode iniciar conversas; presente = o WhatsApp bloqueou temporariamente abordagem fria por esse numero. Os dois podem vir AUSENTES (servidor WAHA que nao reporta saude) — ausencia nao significa \"sem limite\".",
|
|
22855
22855
|
"common_use_cases": [
|
|
22856
22856
|
"Diagnosticar 'mensagens não estão saindo' (sessão caiu?)"
|
|
22857
22857
|
],
|
|
@@ -27101,7 +27101,7 @@
|
|
|
27101
27101
|
"method": "GET",
|
|
27102
27102
|
"path": "/api/v1/accounts/{account_id}/search/kanban_items",
|
|
27103
27103
|
"title": "Buscar Cards do Kanban",
|
|
27104
|
-
"description": "Busca cards do Kanban por texto ou pelo numero do card. Procura em titulo, descricao, nome e e-mail do cliente, nos atributos personalizados do card (menos os do tipo secreto) e tambem na conversa/contato vinculados; com UM termo so de numeros, tenta antes casar o ID exato do card. Varios termos separados por espaco funcionam como E (todos precisam bater, ate 5). PISO DE 3 LETRAS (desde 04/08/2026): termo com letra e menos de 3 caracteres e recusado e a resposta vem VAZIA sem nenhum aviso — se todos os termos forem curtos, isso NAO quer dizer que o card nao existe, quer dizer que a busca nem rodou; refaca com 3+ letras. Termo so de digitos e isento do piso. Devolve no maximo 15 cards e NAO tem paginacao — pra listar de verdade use lionchat_kanban_items_filter. Quem nao e administrador so enxerga cards em que e responsavel.",
|
|
27104
|
+
"description": "Busca cards do Kanban por texto ou pelo numero do card. Procura em titulo, descricao, nome e e-mail do cliente, nos atributos personalizados do card (menos os do tipo secreto) e tambem na conversa/contato vinculados; com UM termo so de numeros, tenta antes casar o ID exato do card. Varios termos separados por espaco funcionam como E (todos precisam bater, ate 5). PISO DE 3 LETRAS (desde 04/08/2026): termo com letra e menos de 3 caracteres e recusado e a resposta vem VAZIA sem nenhum aviso — se todos os termos forem curtos, isso NAO quer dizer que o card nao existe, quer dizer que a busca nem rodou; refaca com 3+ letras. Termo so de digitos e isento do piso. Devolve no maximo 15 cards e NAO tem paginacao — pra listar de verdade use lionchat_kanban_items_filter. Quem nao e administrador so enxerga cards em que e responsavel. FILTRO DE DATA (02/09/2026): quatro eixos, cada um com janela fixa (_start/_end ISO) ou atalho relativo (_relative + _relative_days): criacao (date_*), entrada na etapa atual (stage_date_*), atualizacao (updated_date_*) e ganho/perdido em (closed_date_*). Operadores do atalho: today, yesterday (estes DOIS sem numero), last_days (ultimos N incluindo hoje), days_ago (o dia exato de N atras), days_before (mais de N atras). N inteiro 1..998; janela no fuso da CONTA. CUIDADO: operador invalido ou N invalido NAO da erro — o atalho e ignorado e a resposta volta MAIOR (ate 5.000 cards) com cara de filtrada; confira a contagem antes de qualquer acao em massa. Ver o resource de filtros.",
|
|
27105
27105
|
"category": "Busca",
|
|
27106
27106
|
"params": [
|
|
27107
27107
|
{
|
|
@@ -28879,7 +28879,7 @@
|
|
|
28879
28879
|
"type": "object",
|
|
28880
28880
|
"location": "body",
|
|
28881
28881
|
"required": false,
|
|
28882
|
-
"description": "Configuração visual/comportamento: {primary_color: '#7C3AED', theme: 'light'|'dark', abandon_minutes: 1..15 (default 15), button_label: string|null, resume: bool (continuar de onde parou, default true), chat_avatar: id de blob já subido (foto dos balões no formato chat), public_title: string (título que o LEAD vê na aba do navegador e no link — até 100 caracteres; vazio/ausente = usa o name, que é o nome INTERNO do painel)}. O objeto é gravado como vier (nenhuma chave é obrigatória)."
|
|
28882
|
+
"description": "Configuração visual/comportamento: {primary_color: '#7C3AED', theme: 'light'|'dark', abandon_minutes: 1..15 (default 15), button_label: string|null, resume: bool (continuar de onde parou, default true), identify_by_link: bool (reconhecer quem recebeu o link, default true — DESLIGUE quando o link do formulario for repassado a outras pessoas, ex.: o cliente manda pros familiares; ligado, todos que abrem o link encaminhado sao tratados como o contato original e as respostas caem na MESMA ficha), chat_avatar: id de blob já subido (foto dos balões no formato chat), public_title: string (título que o LEAD vê na aba do navegador e no link — até 100 caracteres; vazio/ausente = usa o name, que é o nome INTERNO do painel)}. O objeto é gravado como vier (nenhuma chave é obrigatória)."
|
|
28883
28883
|
},
|
|
28884
28884
|
{
|
|
28885
28885
|
"name": "inbox_id",
|
|
@@ -28984,7 +28984,7 @@
|
|
|
28984
28984
|
"type": "object",
|
|
28985
28985
|
"location": "body",
|
|
28986
28986
|
"required": false,
|
|
28987
|
-
"description": "Configuração visual/comportamento: {primary_color: '#7C3AED', theme: 'light'|'dark', abandon_minutes: 1..15 (default 15), button_label: string|null, resume: bool (continuar de onde parou, default true), chat_avatar: id de blob já subido (foto dos balões no formato chat), public_title: string (título que o LEAD vê na aba do navegador e no link — até 100 caracteres; vazio/ausente = usa o name, que é o nome INTERNO do painel)}. O objeto é gravado como vier (nenhuma chave é obrigatória). SUBSTITUI o objeto inteiro — mande todas as chaves que quer manter."
|
|
28987
|
+
"description": "Configuração visual/comportamento: {primary_color: '#7C3AED', theme: 'light'|'dark', abandon_minutes: 1..15 (default 15), button_label: string|null, resume: bool (continuar de onde parou, default true), identify_by_link: bool (reconhecer quem recebeu o link, default true — DESLIGUE quando o link do formulario for repassado a outras pessoas, ex.: o cliente manda pros familiares; ligado, todos que abrem o link encaminhado sao tratados como o contato original e as respostas caem na MESMA ficha), chat_avatar: id de blob já subido (foto dos balões no formato chat), public_title: string (título que o LEAD vê na aba do navegador e no link — até 100 caracteres; vazio/ausente = usa o name, que é o nome INTERNO do painel)}. O objeto é gravado como vier (nenhuma chave é obrigatória). SUBSTITUI o objeto inteiro — mande todas as chaves que quer manter."
|
|
28988
28988
|
},
|
|
28989
28989
|
{
|
|
28990
28990
|
"name": "inbox_id",
|
|
@@ -32564,5 +32564,478 @@
|
|
|
32564
32564
|
"related_tools": [
|
|
32565
32565
|
"lionchat_report_alerts_preview"
|
|
32566
32566
|
]
|
|
32567
|
+
},
|
|
32568
|
+
{
|
|
32569
|
+
"id": "lionchat_signature_documents_list",
|
|
32570
|
+
"method": "GET",
|
|
32571
|
+
"path": "/api/v1/accounts/{account_id}/signature_documents",
|
|
32572
|
+
"title": "Listar Modelos de Contrato",
|
|
32573
|
+
"description": "Lista os MODELOS de documento para assinatura eletronica da conta (o 'contrato padrao' escrito uma vez com {{variaveis}} e reaproveitado), com o andamento agregado dos contratos de cada um (progress: aguardando/visualizado/assinado/encerrado). Exige a feature document_signing ligada na conta (403 feature_disabled). Guia: resource lionchat://docs/assinatura-eletronica.",
|
|
32574
|
+
"category": "Assinatura eletronica",
|
|
32575
|
+
"params": [
|
|
32576
|
+
{
|
|
32577
|
+
"name": "archived",
|
|
32578
|
+
"type": "boolean",
|
|
32579
|
+
"location": "query",
|
|
32580
|
+
"required": false,
|
|
32581
|
+
"description": "true = inclui os modelos arquivados"
|
|
32582
|
+
}
|
|
32583
|
+
],
|
|
32584
|
+
"returns": "payload: [{id, name, kind (text|file|word), body, variables, tags, archived, roles_layout, progress, envelopes_count, has_source_file, source_file_name}]",
|
|
32585
|
+
"common_use_cases": [
|
|
32586
|
+
"Ver quais modelos existem antes de mandar um contrato",
|
|
32587
|
+
"Acompanhar quantos contratos de cada modelo estao aguardando/assinados",
|
|
32588
|
+
"Achar o id do modelo pra usar em signature_envelopes_create, na acao de fluxo ou no bloco do formulario"
|
|
32589
|
+
],
|
|
32590
|
+
"related_tools": [
|
|
32591
|
+
"lionchat_signature_documents_show",
|
|
32592
|
+
"lionchat_signature_documents_create",
|
|
32593
|
+
"lionchat_signature_envelopes_list"
|
|
32594
|
+
]
|
|
32595
|
+
},
|
|
32596
|
+
{
|
|
32597
|
+
"id": "lionchat_signature_documents_show",
|
|
32598
|
+
"method": "GET",
|
|
32599
|
+
"path": "/api/v1/accounts/{account_id}/signature_documents/{id}",
|
|
32600
|
+
"title": "Detalhes do Modelo de Contrato",
|
|
32601
|
+
"description": "Um modelo de contrato com as variaveis que ele usa, a configuracao (roles_layout) e os contratos ja mandados a partir dele (envelopes, ate 200 — pra listar com filtro/busca/pagina use signature_envelopes_list com signature_document_id).",
|
|
32602
|
+
"category": "Assinatura eletronica",
|
|
32603
|
+
"params": [
|
|
32604
|
+
{
|
|
32605
|
+
"name": "id",
|
|
32606
|
+
"type": "integer",
|
|
32607
|
+
"location": "path",
|
|
32608
|
+
"required": true,
|
|
32609
|
+
"description": "ID do modelo"
|
|
32610
|
+
}
|
|
32611
|
+
],
|
|
32612
|
+
"returns": "modelo + envelopes: [{id, title, status, contact_id, contact_name, sent_at, completed_at, expires_at, participants[]}]",
|
|
32613
|
+
"common_use_cases": [
|
|
32614
|
+
"Ver o texto e as variaveis do modelo antes de editar",
|
|
32615
|
+
"Conferir quem ja recebeu este contrato"
|
|
32616
|
+
],
|
|
32617
|
+
"related_tools": [
|
|
32618
|
+
"lionchat_signature_documents_list",
|
|
32619
|
+
"lionchat_signature_documents_update",
|
|
32620
|
+
"lionchat_signature_envelopes_list"
|
|
32621
|
+
]
|
|
32622
|
+
},
|
|
32623
|
+
{
|
|
32624
|
+
"id": "lionchat_signature_documents_create",
|
|
32625
|
+
"method": "POST",
|
|
32626
|
+
"path": "/api/v1/accounts/{account_id}/signature_documents",
|
|
32627
|
+
"title": "Criar Modelo de Contrato (texto)",
|
|
32628
|
+
"description": "Cria um MODELO de contrato ESCRITO (kind=text) usando o editor de texto do LionChat: o corpo e texto/markdown simples (**negrito**, listas, paragrafos) com {{variaveis}} da ficha — {{contact.name}}, {{contact.cpf}}, {{contact.phone_number}}, {{contact.email}}, {{contact.address.street}}, {{contact.marital_status}}, {{contact.profession}}, {{account.name}}, {{document.deadline}} (data-limite) e {{document.validity_days}} — veja o catalogo em signature_documents_field_catalog. Cada pessoa recebe o PDF com os dados DELA; campo mapeado sem valor na ficha BLOQUEIA o envio (trava). NAO da pra subir arquivo (PDF/Word) por aqui — isso e so pela tela (kind file/word); aqui e so escrever o contrato.",
|
|
32629
|
+
"category": "Assinatura eletronica",
|
|
32630
|
+
"params": [
|
|
32631
|
+
{
|
|
32632
|
+
"name": "name",
|
|
32633
|
+
"type": "string",
|
|
32634
|
+
"location": "body",
|
|
32635
|
+
"required": true,
|
|
32636
|
+
"description": "Nome do modelo (ex.: Contrato de prestacao de servicos)"
|
|
32637
|
+
},
|
|
32638
|
+
{
|
|
32639
|
+
"name": "body",
|
|
32640
|
+
"type": "string",
|
|
32641
|
+
"location": "body",
|
|
32642
|
+
"required": true,
|
|
32643
|
+
"description": "Texto do contrato com {{variaveis}}. Blocos de assinatura de cada pessoa sao desenhados automaticamente no fim."
|
|
32644
|
+
},
|
|
32645
|
+
{
|
|
32646
|
+
"name": "kind",
|
|
32647
|
+
"type": "string",
|
|
32648
|
+
"location": "body",
|
|
32649
|
+
"required": false,
|
|
32650
|
+
"description": "Sempre 'text' pela API (padrao). file/word exigem upload pela tela."
|
|
32651
|
+
},
|
|
32652
|
+
{
|
|
32653
|
+
"name": "tags",
|
|
32654
|
+
"type": "array",
|
|
32655
|
+
"location": "body",
|
|
32656
|
+
"required": false,
|
|
32657
|
+
"description": "Etiquetas do modelo (strings) — organizam e filtram a lista"
|
|
32658
|
+
},
|
|
32659
|
+
{
|
|
32660
|
+
"name": "roles_layout",
|
|
32661
|
+
"type": "object",
|
|
32662
|
+
"location": "body",
|
|
32663
|
+
"required": false,
|
|
32664
|
+
"description": "Configuracao do modelo (objeto, MESCLADO no update — mande so o que muda): signers (quantos titulares assinam, 1..), witnesses (testemunhas, 0..), sender_signs (bool: quem envia tambem assina, NO PAINEL), require_id_photo (bool: exige foto do documento na assinatura), validity_days (validade em dias contada do ENVIO; padrao 7; 1..365 — vira {{document.deadline}} no texto), reminder_days (lembrete a cada N dias a quem nao assinou; 0 desliga; padrao 2)."
|
|
32665
|
+
}
|
|
32666
|
+
],
|
|
32667
|
+
"returns": "o modelo criado (id, name, kind, body, variables, roles_layout, progress)",
|
|
32668
|
+
"common_use_cases": [
|
|
32669
|
+
"Escrever um contrato padrao com variaveis da ficha pra mandar depois",
|
|
32670
|
+
"Criar o modelo que um fluxo, uma macro ou um formulario vai usar"
|
|
32671
|
+
],
|
|
32672
|
+
"related_tools": [
|
|
32673
|
+
"lionchat_signature_documents_field_catalog",
|
|
32674
|
+
"lionchat_signature_documents_update",
|
|
32675
|
+
"lionchat_signature_envelopes_create"
|
|
32676
|
+
]
|
|
32677
|
+
},
|
|
32678
|
+
{
|
|
32679
|
+
"id": "lionchat_signature_documents_update",
|
|
32680
|
+
"method": "PATCH",
|
|
32681
|
+
"path": "/api/v1/accounts/{account_id}/signature_documents/{id}",
|
|
32682
|
+
"title": "Editar Modelo de Contrato",
|
|
32683
|
+
"description": "Edita nome, texto, etiquetas, arquivamento ou configuracao do modelo. roles_layout e MESCLADO (mande so as chaves que mudam; as posicoes de assinatura e o mapeamento do Word gravados pela tela ficam intactos). Contratos JA mandados nao mudam (o PDF de cada um e fixo).",
|
|
32684
|
+
"category": "Assinatura eletronica",
|
|
32685
|
+
"params": [
|
|
32686
|
+
{
|
|
32687
|
+
"name": "id",
|
|
32688
|
+
"type": "integer",
|
|
32689
|
+
"location": "path",
|
|
32690
|
+
"required": true,
|
|
32691
|
+
"description": "ID do modelo"
|
|
32692
|
+
},
|
|
32693
|
+
{
|
|
32694
|
+
"name": "name",
|
|
32695
|
+
"type": "string",
|
|
32696
|
+
"location": "body",
|
|
32697
|
+
"required": false,
|
|
32698
|
+
"description": "Novo nome"
|
|
32699
|
+
},
|
|
32700
|
+
{
|
|
32701
|
+
"name": "body",
|
|
32702
|
+
"type": "string",
|
|
32703
|
+
"location": "body",
|
|
32704
|
+
"required": false,
|
|
32705
|
+
"description": "Novo texto (so modelo kind=text)"
|
|
32706
|
+
},
|
|
32707
|
+
{
|
|
32708
|
+
"name": "tags",
|
|
32709
|
+
"type": "array",
|
|
32710
|
+
"location": "body",
|
|
32711
|
+
"required": false,
|
|
32712
|
+
"description": "Etiquetas (substitui a lista)"
|
|
32713
|
+
},
|
|
32714
|
+
{
|
|
32715
|
+
"name": "archived",
|
|
32716
|
+
"type": "boolean",
|
|
32717
|
+
"location": "body",
|
|
32718
|
+
"required": false,
|
|
32719
|
+
"description": "true = arquiva (some da lista padrao, sem apagar); false = desarquiva"
|
|
32720
|
+
},
|
|
32721
|
+
{
|
|
32722
|
+
"name": "roles_layout",
|
|
32723
|
+
"type": "object",
|
|
32724
|
+
"location": "body",
|
|
32725
|
+
"required": false,
|
|
32726
|
+
"description": "Configuracao do modelo (objeto, MESCLADO no update — mande so o que muda): signers (quantos titulares assinam, 1..), witnesses (testemunhas, 0..), sender_signs (bool: quem envia tambem assina, NO PAINEL), require_id_photo (bool: exige foto do documento na assinatura), validity_days (validade em dias contada do ENVIO; padrao 7; 1..365 — vira {{document.deadline}} no texto), reminder_days (lembrete a cada N dias a quem nao assinou; 0 desliga; padrao 2)."
|
|
32727
|
+
}
|
|
32728
|
+
],
|
|
32729
|
+
"returns": "o modelo atualizado",
|
|
32730
|
+
"common_use_cases": [
|
|
32731
|
+
"Trocar o nome ou corrigir o texto do contrato",
|
|
32732
|
+
"Mudar validade, lembrete, testemunhas ou 'eu tambem assino'",
|
|
32733
|
+
"Arquivar um modelo antigo"
|
|
32734
|
+
],
|
|
32735
|
+
"related_tools": [
|
|
32736
|
+
"lionchat_signature_documents_show",
|
|
32737
|
+
"lionchat_signature_documents_list"
|
|
32738
|
+
]
|
|
32739
|
+
},
|
|
32740
|
+
{
|
|
32741
|
+
"id": "lionchat_signature_documents_destroy",
|
|
32742
|
+
"method": "DELETE",
|
|
32743
|
+
"path": "/api/v1/accounts/{account_id}/signature_documents/{id}",
|
|
32744
|
+
"title": "Apagar Modelo de Contrato",
|
|
32745
|
+
"description": "Apaga o modelo (so ADMINISTRADOR). Os contratos ja mandados NAO sao apagados (ficam sem o nome do modelo). Prefira arquivar (update archived=true).",
|
|
32746
|
+
"category": "Assinatura eletronica",
|
|
32747
|
+
"params": [
|
|
32748
|
+
{
|
|
32749
|
+
"name": "id",
|
|
32750
|
+
"type": "integer",
|
|
32751
|
+
"location": "path",
|
|
32752
|
+
"required": true,
|
|
32753
|
+
"description": "ID do modelo"
|
|
32754
|
+
}
|
|
32755
|
+
],
|
|
32756
|
+
"returns": "204 sem corpo",
|
|
32757
|
+
"common_use_cases": [
|
|
32758
|
+
"Remover um modelo criado por engano"
|
|
32759
|
+
],
|
|
32760
|
+
"related_tools": [
|
|
32761
|
+
"lionchat_signature_documents_update"
|
|
32762
|
+
]
|
|
32763
|
+
},
|
|
32764
|
+
{
|
|
32765
|
+
"id": "lionchat_signature_documents_field_catalog",
|
|
32766
|
+
"method": "GET",
|
|
32767
|
+
"path": "/api/v1/accounts/{account_id}/signature_documents/field_catalog",
|
|
32768
|
+
"title": "Catalogo de Variaveis do Contrato",
|
|
32769
|
+
"description": "As variaveis que o contrato consegue preencher a partir da ficha do contato e da conta (value + label), pra escrever o texto do modelo ou mapear campos de um Word.",
|
|
32770
|
+
"category": "Assinatura eletronica",
|
|
32771
|
+
"params": [],
|
|
32772
|
+
"returns": "catalog: [{value: 'contact.name', label: 'Nome do contato'}, ...] (inclui document.deadline)",
|
|
32773
|
+
"common_use_cases": [
|
|
32774
|
+
"Saber quais {{variaveis}} existem antes de escrever um modelo"
|
|
32775
|
+
],
|
|
32776
|
+
"related_tools": [
|
|
32777
|
+
"lionchat_signature_documents_create"
|
|
32778
|
+
]
|
|
32779
|
+
},
|
|
32780
|
+
{
|
|
32781
|
+
"id": "lionchat_signature_envelopes_list",
|
|
32782
|
+
"method": "GET",
|
|
32783
|
+
"path": "/api/v1/accounts/{account_id}/signature_envelopes",
|
|
32784
|
+
"title": "Listar Contratos Enviados",
|
|
32785
|
+
"description": "Lista os CONTRATOS (cada envio a uma pessoa e um contrato, com PDF proprio e linha do tempo), paginada (25 por pagina) com filtro e busca no servidor. Recortes: por modelo (signature_document_id), por contato (contact_id — o que aparece na aba Contratos da ficha) ou por conversa (conversation_id). status aceita os baldes aguardando (draft/sent), visualizado (viewed/partially_signed), assinado (signed_pending_seal/signed), encerrado (refused/cancelled/expired) ou falta_eu (contratos em que o usuario do token e o remetente e ainda nao assinou). Resposta traz meta.counts com a contagem por balde.",
|
|
32786
|
+
"category": "Assinatura eletronica",
|
|
32787
|
+
"params": [
|
|
32788
|
+
{
|
|
32789
|
+
"name": "signature_document_id",
|
|
32790
|
+
"type": "integer",
|
|
32791
|
+
"location": "query",
|
|
32792
|
+
"required": false,
|
|
32793
|
+
"description": "So contratos deste modelo"
|
|
32794
|
+
},
|
|
32795
|
+
{
|
|
32796
|
+
"name": "contact_id",
|
|
32797
|
+
"type": "integer",
|
|
32798
|
+
"location": "query",
|
|
32799
|
+
"required": false,
|
|
32800
|
+
"description": "So contratos desta pessoa"
|
|
32801
|
+
},
|
|
32802
|
+
{
|
|
32803
|
+
"name": "conversation_id",
|
|
32804
|
+
"type": "integer",
|
|
32805
|
+
"location": "query",
|
|
32806
|
+
"required": false,
|
|
32807
|
+
"description": "So contratos desta conversa (display_id)"
|
|
32808
|
+
},
|
|
32809
|
+
{
|
|
32810
|
+
"name": "status",
|
|
32811
|
+
"type": "string",
|
|
32812
|
+
"location": "query",
|
|
32813
|
+
"required": false,
|
|
32814
|
+
"description": "Balde: aguardando | visualizado | assinado | encerrado | falta_eu"
|
|
32815
|
+
},
|
|
32816
|
+
{
|
|
32817
|
+
"name": "q",
|
|
32818
|
+
"type": "string",
|
|
32819
|
+
"location": "query",
|
|
32820
|
+
"required": false,
|
|
32821
|
+
"description": "Busca por nome, telefone ou e-mail de quem assina"
|
|
32822
|
+
},
|
|
32823
|
+
{
|
|
32824
|
+
"name": "page",
|
|
32825
|
+
"type": "integer",
|
|
32826
|
+
"location": "query",
|
|
32827
|
+
"required": false,
|
|
32828
|
+
"description": "Pagina (padrao 1, 25 por pagina)"
|
|
32829
|
+
}
|
|
32830
|
+
],
|
|
32831
|
+
"returns": "payload: [{id, title, status, signature_document_id, document_name, contact_id, contact_name, conversation_id, sent_at, completed_at, expires_at, participants[{id, name, role, status, delivery_channel, phone, email, signed_at, viewed_at, public_url, signs_in_panel}], delivery: {failed[], delivered_participant_ids[]}, has_signed_document, pending_for_me}], meta: {page, per_page, has_more, counts}",
|
|
32832
|
+
"common_use_cases": [
|
|
32833
|
+
"Ver o status dos contratos de um cliente (assinou? abriu? expirou?)",
|
|
32834
|
+
"Relatorio de um modelo: quantos aguardando/assinados, quem falta",
|
|
32835
|
+
"Achar contratos nao entregues (delivery.failed) pra reenviar"
|
|
32836
|
+
],
|
|
32837
|
+
"related_tools": [
|
|
32838
|
+
"lionchat_signature_envelopes_show",
|
|
32839
|
+
"lionchat_signature_envelopes_resend",
|
|
32840
|
+
"lionchat_signature_envelopes_create"
|
|
32841
|
+
]
|
|
32842
|
+
},
|
|
32843
|
+
{
|
|
32844
|
+
"id": "lionchat_signature_envelopes_show",
|
|
32845
|
+
"method": "GET",
|
|
32846
|
+
"path": "/api/v1/accounts/{account_id}/signature_envelopes/{id}",
|
|
32847
|
+
"title": "Detalhes do Contrato (linha do tempo)",
|
|
32848
|
+
"description": "Um contrato com quem assina e a LINHA DO TEMPO completa (events): created, delivered, sent, opened, code_requested, code_verified, signed (com ip, device, location e panel=true quando foi assinado no painel), all_signed, sealed (documento final gerado, com hash), refused, expired, cancelled, delivery_failed, reminded, resent. E o relatorio de evidencias em dados; os PDFs (original, assinado, evidencias) so saem pela tela/API de download.",
|
|
32849
|
+
"category": "Assinatura eletronica",
|
|
32850
|
+
"params": [
|
|
32851
|
+
{
|
|
32852
|
+
"name": "id",
|
|
32853
|
+
"type": "integer",
|
|
32854
|
+
"location": "path",
|
|
32855
|
+
"required": true,
|
|
32856
|
+
"description": "ID do contrato"
|
|
32857
|
+
}
|
|
32858
|
+
],
|
|
32859
|
+
"returns": "contrato + events: [{kind, occurred_at, ip, device, location, participant_id, panel}] + original_sha256/sealed_sha256",
|
|
32860
|
+
"common_use_cases": [
|
|
32861
|
+
"Conferir quando e de onde a pessoa abriu e assinou",
|
|
32862
|
+
"Ver por que um contrato nao foi entregue (delivery.failed) ou foi recusado"
|
|
32863
|
+
],
|
|
32864
|
+
"related_tools": [
|
|
32865
|
+
"lionchat_signature_envelopes_list",
|
|
32866
|
+
"lionchat_signature_envelopes_resend",
|
|
32867
|
+
"lionchat_signature_envelopes_cancel"
|
|
32868
|
+
]
|
|
32869
|
+
},
|
|
32870
|
+
{
|
|
32871
|
+
"id": "lionchat_signature_envelopes_create",
|
|
32872
|
+
"method": "POST",
|
|
32873
|
+
"path": "/api/v1/accounts/{account_id}/signature_envelopes",
|
|
32874
|
+
"title": "Enviar Contrato para Assinar",
|
|
32875
|
+
"description": "Cria o contrato DAQUELA pessoa a partir de um modelo e ENTREGA o link (na conversa de WhatsApp da pessoa — uma conversa POR assinante — ou por e-mail). O PDF e gerado com os dados da ficha; variavel do modelo sem valor na ficha = 422 variaveis_sem_valor com a lista do que falta (preencha a ficha e tente de novo). Sem inbox_id e com o contato conversando em MAIS de uma caixa de WhatsApp = 422 escolher_caixa com inboxes[] — repita mandando inbox_id. Ninguem recebeu = 422 entrega_falhou (o contrato fica como rascunho; use resend). Recebeu parcialmente = 201 com delivery_failures[]. Consome 1 vaga do limite mensal (veja signature_envelopes_limits). Modelo com sender_signs cria sozinho o participante do remetente (o usuario do token), que assina NO PAINEL (nao ha ferramenta pra assinar por ele).",
|
|
32876
|
+
"category": "Assinatura eletronica",
|
|
32877
|
+
"params": [
|
|
32878
|
+
{
|
|
32879
|
+
"name": "signature_document_id",
|
|
32880
|
+
"type": "integer",
|
|
32881
|
+
"location": "body",
|
|
32882
|
+
"required": true,
|
|
32883
|
+
"description": "ID do modelo"
|
|
32884
|
+
},
|
|
32885
|
+
{
|
|
32886
|
+
"name": "contact_id",
|
|
32887
|
+
"type": "integer",
|
|
32888
|
+
"location": "body",
|
|
32889
|
+
"required": false,
|
|
32890
|
+
"description": "Ficha do titular (recomendado — preenche as variaveis e a conversa)"
|
|
32891
|
+
},
|
|
32892
|
+
{
|
|
32893
|
+
"name": "conversation_id",
|
|
32894
|
+
"type": "integer",
|
|
32895
|
+
"location": "body",
|
|
32896
|
+
"required": false,
|
|
32897
|
+
"description": "Conversa (display_id) por onde o link sai, quando ja se sabe qual"
|
|
32898
|
+
},
|
|
32899
|
+
{
|
|
32900
|
+
"name": "inbox_id",
|
|
32901
|
+
"type": "integer",
|
|
32902
|
+
"location": "body",
|
|
32903
|
+
"required": false,
|
|
32904
|
+
"description": "Caixa de WhatsApp por onde entregar (obrigatorio quando a resposta anterior foi escolher_caixa)"
|
|
32905
|
+
},
|
|
32906
|
+
{
|
|
32907
|
+
"name": "participants",
|
|
32908
|
+
"type": "array",
|
|
32909
|
+
"location": "body",
|
|
32910
|
+
"required": true,
|
|
32911
|
+
"description": "Quem assina (array). Cada item: {name (obrigatorio), role: signer|witness (titular|testemunha; NAO mande sender — o remetente e criado sozinho quando o modelo tem sender_signs), phone (+55DDDNUMERO, quando delivery_channel=whatsapp), email (quando delivery_channel=email), delivery_channel: whatsapp|email (padrao whatsapp), cpf (opcional; invalido = 422 cpf_invalido), contact_id (ficha da pessoa; recomendado no titular)}. Cada pessoa recebe o proprio link e assina com codigo de uso unico."
|
|
32912
|
+
}
|
|
32913
|
+
],
|
|
32914
|
+
"returns": "201: o contrato (status sent) com participants[] (public_url de cada um), events[] e delivery_failures[]; 422: {error, detail, missing, inboxes, envelope}",
|
|
32915
|
+
"common_use_cases": [
|
|
32916
|
+
"Mandar o contrato padrao pra um cliente assinar pelo WhatsApp",
|
|
32917
|
+
"Mandar com testemunha (participants com role witness e o telefone dela)",
|
|
32918
|
+
"Reenviar um contrato que ficou como rascunho por falha de entrega (use resend)"
|
|
32919
|
+
],
|
|
32920
|
+
"related_tools": [
|
|
32921
|
+
"lionchat_signature_documents_list",
|
|
32922
|
+
"lionchat_signature_envelopes_limits",
|
|
32923
|
+
"lionchat_signature_envelopes_show",
|
|
32924
|
+
"lionchat_signature_envelopes_resend"
|
|
32925
|
+
]
|
|
32926
|
+
},
|
|
32927
|
+
{
|
|
32928
|
+
"id": "lionchat_signature_envelopes_resend",
|
|
32929
|
+
"method": "POST",
|
|
32930
|
+
"path": "/api/v1/accounts/{account_id}/signature_envelopes/{id}/resend",
|
|
32931
|
+
"title": "Reenviar Link do Contrato",
|
|
32932
|
+
"description": "Reenvia o link a quem ainda nao assinou (nao cria contrato novo, nao consome vaga). Le o resultado: {ok, resent, failures[{participant_id, name, motivo}]}. Contrato que nasceu sem entrega vira 'sent' no primeiro link que sai.",
|
|
32933
|
+
"category": "Assinatura eletronica",
|
|
32934
|
+
"params": [
|
|
32935
|
+
{
|
|
32936
|
+
"name": "id",
|
|
32937
|
+
"type": "integer",
|
|
32938
|
+
"location": "path",
|
|
32939
|
+
"required": true,
|
|
32940
|
+
"description": "ID do contrato"
|
|
32941
|
+
}
|
|
32942
|
+
],
|
|
32943
|
+
"returns": "{ok, resent, failures[]}",
|
|
32944
|
+
"common_use_cases": [
|
|
32945
|
+
"Cliente diz que nao recebeu o link",
|
|
32946
|
+
"Contrato marcado como 'nao entregue'"
|
|
32947
|
+
],
|
|
32948
|
+
"related_tools": [
|
|
32949
|
+
"lionchat_signature_envelopes_show"
|
|
32950
|
+
]
|
|
32951
|
+
},
|
|
32952
|
+
{
|
|
32953
|
+
"id": "lionchat_signature_envelopes_sign_as_sender",
|
|
32954
|
+
"method": "POST",
|
|
32955
|
+
"path": "/api/v1/accounts/{account_id}/signature_envelopes/{id}/sign_as_sender",
|
|
32956
|
+
"title": "Remetente Assina o Contrato pelo Painel",
|
|
32957
|
+
"description": "A assinatura do REMETENTE (a pessoa do token), quando o modelo tem 'eu tambem assino' (roles_layout.sender_signs). Nao serve pra assinar no lugar do cliente: titular e testemunha assinam pelo link publico deles. Manda o desenho da assinatura como PNG em base64 com o prefixo data:image/png;base64,... (o mesmo rabisco da tela; remember_drawing guarda pra proxima vez). Recusas 422: nao_e_sua (o usuario do token nao e o remetente deste contrato), ja_assinado, sem_desenho. Quando era a ultima assinatura que faltava, o contrato fecha e o PDF final e gerado em seguida (status signed_pending_seal -> signed). Ache os contratos que esperam a sua assinatura com status=falta_eu em lionchat_signature_envelopes_list.",
|
|
32958
|
+
"category": "Assinatura eletronica",
|
|
32959
|
+
"params": [
|
|
32960
|
+
{
|
|
32961
|
+
"name": "id",
|
|
32962
|
+
"type": "integer",
|
|
32963
|
+
"location": "path",
|
|
32964
|
+
"required": true,
|
|
32965
|
+
"description": "ID do contrato"
|
|
32966
|
+
},
|
|
32967
|
+
{
|
|
32968
|
+
"name": "signature_image",
|
|
32969
|
+
"type": "string",
|
|
32970
|
+
"location": "body",
|
|
32971
|
+
"required": true,
|
|
32972
|
+
"description": "Desenho da assinatura em base64, com prefixo data URL (data:image/png;base64,...). Obrigatorio — sem ele 422 sem_desenho"
|
|
32973
|
+
},
|
|
32974
|
+
{
|
|
32975
|
+
"name": "location",
|
|
32976
|
+
"type": "object",
|
|
32977
|
+
"location": "body",
|
|
32978
|
+
"required": false,
|
|
32979
|
+
"description": "Onde o remetente assinou, se souber: {latitude, longitude, accuracy} (graus decimais; fora da faixa e ignorado). Vai pra prova (evidencias)"
|
|
32980
|
+
},
|
|
32981
|
+
{
|
|
32982
|
+
"name": "remember_drawing",
|
|
32983
|
+
"type": "boolean",
|
|
32984
|
+
"location": "body",
|
|
32985
|
+
"required": false,
|
|
32986
|
+
"description": "true = guarda o desenho nas preferencias do usuario pra reaproveitar no proximo contrato"
|
|
32987
|
+
}
|
|
32988
|
+
],
|
|
32989
|
+
"returns": "o contrato atualizado com participants[] e events[] (o seu participante vira signed); 422: {error: nao_e_sua | ja_assinado | sem_desenho}",
|
|
32990
|
+
"common_use_cases": [
|
|
32991
|
+
"Fechar um contrato em que so falta a assinatura do remetente",
|
|
32992
|
+
"Assinar em lote os contratos listados com status=falta_eu"
|
|
32993
|
+
],
|
|
32994
|
+
"related_tools": [
|
|
32995
|
+
"lionchat_signature_envelopes_list",
|
|
32996
|
+
"lionchat_signature_envelopes_show",
|
|
32997
|
+
"lionchat_signature_envelopes_create"
|
|
32998
|
+
]
|
|
32999
|
+
},
|
|
33000
|
+
{
|
|
33001
|
+
"id": "lionchat_signature_envelopes_cancel",
|
|
33002
|
+
"method": "POST",
|
|
33003
|
+
"path": "/api/v1/accounts/{account_id}/signature_envelopes/{id}/cancel",
|
|
33004
|
+
"title": "Cancelar Contrato",
|
|
33005
|
+
"description": "Cancela um contrato ainda aberto (so ADMINISTRADOR). O link para de funcionar; a linha do tempo guarda o cancelamento. Contrato assinado/recusado/expirado nao cancela (422 ja_concluido).",
|
|
33006
|
+
"category": "Assinatura eletronica",
|
|
33007
|
+
"params": [
|
|
33008
|
+
{
|
|
33009
|
+
"name": "id",
|
|
33010
|
+
"type": "integer",
|
|
33011
|
+
"location": "path",
|
|
33012
|
+
"required": true,
|
|
33013
|
+
"description": "ID do contrato"
|
|
33014
|
+
}
|
|
33015
|
+
],
|
|
33016
|
+
"returns": "o contrato com status cancelled",
|
|
33017
|
+
"common_use_cases": [
|
|
33018
|
+
"Mandou pro cliente errado",
|
|
33019
|
+
"O negocio nao vai acontecer"
|
|
33020
|
+
],
|
|
33021
|
+
"related_tools": [
|
|
33022
|
+
"lionchat_signature_envelopes_show"
|
|
33023
|
+
]
|
|
33024
|
+
},
|
|
33025
|
+
{
|
|
33026
|
+
"id": "lionchat_signature_envelopes_limits",
|
|
33027
|
+
"method": "GET",
|
|
33028
|
+
"path": "/api/v1/accounts/{account_id}/signature_envelopes/limits",
|
|
33029
|
+
"title": "Limite Mensal de Contratos",
|
|
33030
|
+
"description": "Quantos contratos a conta ja mandou no mes e o teto do plano ({used, limit, unlimited}). Contrato cancelado/expirado NAO devolve a vaga.",
|
|
33031
|
+
"category": "Assinatura eletronica",
|
|
33032
|
+
"params": [],
|
|
33033
|
+
"returns": "{used, limit, unlimited}",
|
|
33034
|
+
"common_use_cases": [
|
|
33035
|
+
"Avisar antes de um disparo em lote que o teto vai estourar"
|
|
33036
|
+
],
|
|
33037
|
+
"related_tools": [
|
|
33038
|
+
"lionchat_signature_envelopes_create"
|
|
33039
|
+
]
|
|
32567
33040
|
}
|
|
32568
33041
|
]
|