@lionchat/mcp-server 1.14.0 → 1.16.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.
@@ -153,6 +153,7 @@ conversa antiga que NÃO aparece no relatório de hoje (régua antiga por criaç
153
153
  | "retrospectiva do ano" | `lionchat_reports_list_15` |
154
154
  | "satisfação", "CSAT", "nota dos clientes" | `lionchat_csat_metrics` |
155
155
  | "SLA", "cumprimento de prazo" (se a conta tiver Enterprise) | `lionchat_sla_metrics` |
156
+ | "quantos agendamentos", "taxa de comparecimento", "agendamentos por tipo/atendente" | `lionchat_booking_reports` (ver "Agendamentos" no fim deste guia) |
156
157
 
157
158
  ---
158
159
 
@@ -330,6 +331,11 @@ Retorna:
330
331
 
331
332
  **Filtros aceitos (expostos na tool desde 2026-07-24):** `inbox_id`, `team_id`, `sla_policy_id`, `label_list[]`, `assigned_agent_id`, `since`/`until` (unix segundos).
332
333
 
334
+ Latência de detecção: o prazo é conferido a cada 5 min, e desde 21/08/2026 (entra com o próximo
335
+ deploy do app depois de 21/08/2026) as conferências saem espalhadas em até 2 min dentro do ciclo —
336
+ um estouro pode aparecer em `sla_list`/`sla_metrics` até ~7 min depois do horário-limite. Não é
337
+ defeito; não conclua "o SLA não está rodando" por isso.
338
+
333
339
  ## Padrões de interpretação
334
340
 
335
341
  ### Comparando períodos
@@ -526,3 +532,183 @@ Endpoints de relatório podem retornar **MUITOS** dados:
526
532
  - `csat_list` sem filtro → milhares
527
533
 
528
534
  **Sempre limite período** quando o usuário não foi específico. Se pediu "esta semana", use 7d. Se pediu "vamos ver tudo", confirme antes (ano inteiro pode ser muito).
535
+
536
+ ---
537
+
538
+ ## Relatórios personalizados — ler, calcular e montar (2026-08)
539
+
540
+ É a aba **Personalizados** dentro de Relatórios: o cliente monta blocos (gráficos e tabelas) e salva
541
+ num painel. Tudo aqui é **só administrador** — quem não for recebe **401** (não é problema de
542
+ conexão do conector; não mande reconectar).
543
+
544
+ | Ferramenta | Para quê |
545
+ |---|---|
546
+ | `lionchat_custom_dashboards_list` | Quais relatórios existem, já com os blocos dentro |
547
+ | `lionchat_custom_dashboards_widget_data` | O número de um bloco **já salvo** |
548
+ | `lionchat_custom_dashboards_preview_widget` | Monta um bloco **na hora** e calcula, sem salvar |
549
+ | `lionchat_custom_dashboards_create` | Cria um relatório que **aparece na tela do cliente** |
550
+ | `lionchat_custom_dashboards_update` | Altera (substitui a lista de blocos) |
551
+ | `lionchat_custom_dashboards_destroy` | Apaga, **sem desfazer** |
552
+
553
+ As três últimas **alteram o que o cliente vê** e só rodam com `confirm: true` — confirme com ele o
554
+ que exatamente vai mudar antes de reenviar.
555
+
556
+ ### `preview_widget` é a ferramenta mais poderosa deste guia
557
+
558
+ Ela responde pergunta de relatório que **nenhuma outra ferramenta cobre**, porque monta o recorte na
559
+ hora. Exemplo real: *"quantos cards foram ganhos em cada etapa do funil 12 nos últimos 30 dias"* —
560
+ nenhum `reports_*` responde; aqui é `funnel_stages` + `date_basis: closed` + `status: won`.
561
+
562
+ Não é consulta livre: escolha um `widget_type` e preencha **só os campos daquele tipo**.
563
+
564
+ ### Os 9 tipos de bloco
565
+
566
+ | Tipo | Campos | Recurso exigido |
567
+ |---|---|---|
568
+ | `conversations_timeseries` | `metric` (conversations, incoming_messages, outgoing_messages, resolutions, reopens, avg_first_response_time, avg_resolution_time) · `bucket` (day/week/month) · `scope_type`+`scope_id` · `time_range` | — |
569
+ | `entity_ranking` | `dimension` (agent/inbox/team/label) · `metric` (conversations, resolutions, avg_first_response_time, avg_resolution_time) · `time_range` | — |
570
+ | `csat_summary` | `time_range` | — |
571
+ | `sla_summary` | `time_range` | `sla` (Enterprise) |
572
+ | `funnel_stages` | `funnel_id` · `date_basis` (created/moved/closed/any) · `status` (all/open/won/lost) · `measure` (count padrão / value = soma do valor dos cards) · `time_range` | `kanban_board` |
573
+ | `stage_entries` | `funnel_id` · `measure` (count/value) · `time_range` — quantos cards DISTINTOS ENTRARAM em cada etapa no período (histórico desde 12/07/2026) | `kanban_board` |
574
+ | `calls_report` | `dimension` (agent/inbox) · `time_range` — ligações / atendidas / não atendidas / não concluídas / tempo total / tempo médio | — |
575
+ | `lead_origin` | `time_range` | `liontrack` |
576
+ | `agent_report` | `dimension` (agent/team/inbox) · `scope_type`+`scope_id` · `columns[]` · `time_range` | — |
577
+
578
+ `stage_entries`, `calls_report`, `measure`, `today`/`yesterday` e os metadados `title`/`width`/`height`
579
+ são commits de 21/08/2026 (entram com o próximo deploy do app depois de 21/08/2026); `custom` em
580
+ todos os tipos está no ar desde 19/08/2026.
581
+
582
+ **`time_range`:** `today`, `yesterday` (desde 21/08 — o menor período era 7 dias), `last_7_days`,
583
+ `last_30_days`, `this_month`, `last_month` e `custom` (com `from`/`to`, **em qualquer tipo** desde
584
+ 19/08/2026). **A janela `custom` não pode passar de 92 dias** — o teto é da janela, não do tipo;
585
+ "esse ano" é recusado com a explicação. `today`/`yesterday` resolvem no fuso do `timezone_offset`
586
+ enviado — mande o da conta.
587
+
588
+ **Metadados do bloco (irmãos de `widget_type`, fora dos params):** `title` (nome que a pessoa dá ao
589
+ bloco, até 80 caracteres; vazio = o painel mostra o rótulo do tipo), `width` (1 a 4 colunas; padrão
590
+ 2) e `height` (`normal` | `tall`). Preencha `title` em todo bloco que você criar — quatro blocos de
591
+ funil sem nome chegam indistinguíveis pra quem lê depois.
592
+
593
+ **Colunas do `agent_report`:** `leads`, `atendidos`, `resolvidas`, `abertas`, `pendentes`, `adiadas`,
594
+ `label_count` (exige `label_id`) e `conversao` (exige `denominator` e `numerator`, que é **lista de
595
+ IDs de etiqueta**, nunca nome de métrica).
596
+
597
+ ### Como ler a resposta (campo `shape`)
598
+
599
+ | `shape` | Estrutura | Cuidado |
600
+ |---|---|---|
601
+ | `series` | `{series: [{timestamp, value}]}` | `timestamp` é unix em segundos. As duas métricas de tempo vêm em **segundos** e trazem também `count` por ponto |
602
+ | `categories` | `{categories: [{label, value}]}` | `funnel_stages` vem **na ordem das etapas do funil**, nunca por valor — não reordene |
603
+ | `scalar` | `{value, total, secondary}` | Use o `total` para separar "ninguém respondeu" de "zero legítimo". **SLA sem nenhum prazo aplicado devolve 100.0** — não anuncie "100% de cumprimento" sem olhar o total |
604
+ | `table` | `{dimension, columns, rows, total}` | O `total` **não é a soma das linhas** (contagem própria por métrica). As linhas são os membros **atuais**: quem saiu da equipe some da linha e continua no total |
605
+
606
+ ### Armadilhas que fazem o bloco sair errado
607
+
608
+ 1. **`scope_type`/`scope_id` têm sentido OPOSTO por tipo.** No `conversations_timeseries` = "o
609
+ gráfico é só daquela entidade". No `agent_report` = "mostre só as linhas de quem é dessa
610
+ equipe/caixa". Confundir troca a conta inteira.
611
+ 2. **Campo fora da lista é descartado em silêncio.** Se um valor "não fez efeito", provavelmente o
612
+ nome do campo está errado.
613
+ 3. **Sempre envie `timezone_offset` em HORAS, derivado do fuso DA CONTA** (`account_show.timezone`;
614
+ Brasília = `-3`, Cuiabá/Campo Grande/Manaus = `-4`). Sem ele o cálculo é em UTC e o número não
615
+ bate com o que o cliente vê na tela.
616
+ 4. **`update` substitui a lista de blocos inteira.** Leia com `list`, altere o array, devolva
617
+ completo — e preserve o `id` de cada bloco que já existia.
618
+ 5. **`list` não pagina.** Se a resposta vier com aviso de corte, **não** use aquela lista para montar
619
+ um `update`: você apagaria os blocos que não chegaram.
620
+ 6. **Recurso não liberado devolve 422 com `code: "feature_unavailable"`** — a resposta certa é "sua
621
+ conta não tem esse recurso", nunca "não há dados".
622
+
623
+ ### Fluxo recomendado para "me monta um relatório de X"
624
+
625
+ 1. `preview_widget` para **testar o desenho** e conferir que o número faz sentido.
626
+ 2. Mostre o número ao usuário e confirme que é o que ele quer.
627
+ 3. `create` com `confirm: true`, usando o mesmo desenho.
628
+
629
+ ---
630
+
631
+ ## Relatório personalizado como FONTE de um resumo escrito (2026-08-21)
632
+
633
+ O caso de uso: o cliente deixa um relatório montado na tela e pede *"me traz o relatório XPTO todo
634
+ dia"*. Em vez de garimpar dado em dez ferramentas, **leia o relatório salvo e escreva o texto**.
635
+
636
+ ### O passo a passo
637
+
638
+ 1. `lionchat_custom_dashboards_list` — ache o relatório pelo nome.
639
+ 2. `lionchat_custom_dashboards_list` (ou `_show`) devolve `widgets[]`, cada um com `id`, `title`,
640
+ `widget_type` e os params. **É o `title` que diz o que aquele bloco é** — sem ele, quatro blocos
641
+ do mesmo tipo chegam indistinguíveis.
642
+ 3. Para cada bloco: `lionchat_custom_dashboards_widget_data` com o `widget_id`.
643
+ **Mande sempre `timezone_offset`, lido do fuso DA CONTA** — `lionchat_account_show` devolve o
644
+ campo `timezone` (ex.: `America/Sao_Paulo`); converta para horas. **Não assuma -3.** O padrão da
645
+ plataforma é São Paulo, mas a conta pode ter outro: Mato Grosso do Sul é -4, e há cliente fora do
646
+ Brasil. Sem o fuso certo, o número não bate com a tela — e numa janela de UM DIA uma hora de
647
+ diferença joga o que aconteceu de madrugada para o dia errado.
648
+ 4. Para um resumo DIÁRIO, mande também **`time_range: 'yesterday'`**. Isso recalcula o bloco naquela
649
+ janela **sem alterar o relatório salvo** — o cliente continua vendo os 30 dias dele na tela.
650
+ 5. Escreva o texto a partir dos números. Não invente linha que o relatório não tem.
651
+
652
+ ### Regras que evitam relatório mentiroso
653
+
654
+ - **Bloco sem `title`**: diga o tipo e o período em vez de adivinhar ("Etapas do funil, últimos 30
655
+ dias"). Nunca chute de qual médico/equipe é.
656
+ - **Zero é resposta, não erro.** Etapa sem card, atendente sem ligação: escreva zero. Só diga "sem
657
+ dado" quando a chamada falhar de verdade.
658
+ - **Não some blocos de janelas diferentes.** Um bloco em 7 dias e outro em 30 no mesmo relatório é
659
+ comum; somar os dois inventa número.
660
+ - **`total` do shape `table` NÃO é a soma das linhas** em toda métrica — é contagem própria. Leia o
661
+ que vem, não recalcule.
662
+ - **Recorte e métrica não são negociáveis pelo agente**: `widget_data` só aceita mudar a JANELA
663
+ (`time_range`/`from`/`to`/`bucket`). Se o cliente pedir "o mesmo relatório só que por caixa", isso
664
+ é editar o relatório (com confirmação), não um override.
665
+
666
+ ### Escolher entre os dois blocos de funil (erro fácil)
667
+
668
+ | Pergunta | Bloco |
669
+ |---|---|
670
+ | "Quantos agendamentos aconteceram no período?" | `stage_entries` |
671
+ | "Como está o funil hoje / quantos estão em cada etapa?" | `funnel_stages` |
672
+
673
+ `funnel_stages` conta quem **está** na etapa; card que entrou e depois saiu some dele. Medido em
674
+ produção: **25% de diferença**. `stage_entries` lê o histórico de movimentação e conta **card
675
+ distinto** (quem volta pra etapa conta uma vez só).
676
+
677
+ **Limite do `stage_entries`**: o histórico só existe a partir de **12/07/2026** e tem retenção de
678
+ 365 dias. Período que alcance antes disso devolve MENOS do que aconteceu — avise em vez de
679
+ apresentar o número como completo.
680
+
681
+ ### Ligações (`calls_report`)
682
+
683
+ Colunas: Ligações · Atendidas · Não atendidas · **Não concluídas** · Tempo total · Tempo médio.
684
+
685
+ - "Não concluídas" são as que ficaram presas (tocando, em andamento, falhou, cancelada). **Não as
686
+ chame de "não atendidas"** — são coisas diferentes e a soma das três tem que fechar com o total.
687
+ - Tempo médio já vem calculado sobre as ATENDIDAS. Não recalcule dividindo pelo total.
688
+ - **Ligação sem atendente tem linha própria** e pode ser boa parte do volume (23% numa conta real).
689
+ Não a esconda ao resumir por pessoa.
690
+ - A tabela lista só quem teve ligação no período — atendente ausente da tabela fez zero.
691
+
692
+ ### Agendamentos (`lionchat_booking_reports`) — 2026-08-19
693
+
694
+ `GET /api/v2/accounts/{id}/booking_reports` — a aba Relatórios > Agendamentos. Unidade = o
695
+ AGENDAMENTO (Booking). Params: `since`/`until` (datas; padrão 30 dias pra trás E 30 pra frente,
696
+ porque agenda tem futuro), `event_type_id`, `user_id` (responsável da tarefa), `status`
697
+ (`pending` | `completed` | `cancelled` | `snoozed`), `group_by` (`day` | `week` | `month`).
698
+ Resposta: `totals` (`total`, `pending`, `completed`, `cancelled`, `snoozed`, `attendance_rate`),
699
+ `timeline`, `by_event_type`, `by_agent`, `by_origin`.
700
+
701
+ - **`attendance_rate` = concluídos / (concluídos + cancelados)**, em %. Pendentes ficam FORA do
702
+ denominador (ainda não aconteceram). Não recalcule com o total.
703
+ - A SITUAÇÃO vem da tarefa da Agenda (`account_tasks.status`), não de `bookings.status` — quem
704
+ conclui/cancela pela Agenda deixa o booking parado em "confirmado". Ler `bookings_*` direto pra
705
+ contar "concluídos" dá zero.
706
+ - `snoozed` (adiado) aparece separado de `pending` de propósito.
707
+
708
+ ### Faturamento (`measure`)
709
+
710
+ `measure: 'value'` faz `funnel_stages`/`stage_entries` somarem o VALOR dos cards em vez de contar.
711
+ Combinado com `status: 'won'` + `date_basis: 'closed'`, dá o faturamento ganho da etapa no período.
712
+
713
+ **Cuidado ao escrever**: se os cards do cliente têm valor padrão (todos com o mesmo número), a soma
714
+ não é faturamento — é o padrão multiplicado. Se todos os valores forem idênticos, desconfie e diga.
@@ -173,7 +173,9 @@ Feature flag específica (ex: `feature_kanban`, `feature_captain`) está OFF.
173
173
  - `"private must be boolean"` — true/false, não string
174
174
 
175
175
  ### KanbanItem
176
- - `"funnel_stage does not exist in funnel"` — etapa inválida pro funil
176
+ - `"STAGE_HAS_ITEMS"` (no `funnels_update`) — você tentou remover uma etapa que ainda tem card;
177
+ `stages` na resposta diz quantos. Mova com `migrate_stage` antes. (Card criado em etapa
178
+ inexistente NÃO dá erro: é redirecionado — confira o `funnel_stage` devolvido.)
177
179
  - `"conversation_display_id must exist"` — conversa não existe ou foi deletada
178
180
  - `"position must be a positive integer"` — não pode ser negativo
179
181
 
@@ -418,6 +420,18 @@ pelo painel de suporte — só volta no botão Retomar), `cancelled` (encerrada
418
420
  Enquanto uma importação está viva, o repescador de mensagens da sessão fica fora do caminho, de
419
421
  propósito. Pausar, retomar e cancelar são ações do painel de suporte — não existem no MCP.
420
422
 
423
+ **A mídia vem DEPOIS do texto (desde 19-20/08/2026).** O import grava as conversas só com o texto
424
+ (779 conversas em ~3 min num caso real) e busca os arquivos em segundo plano, numa fila por caixa
425
+ com poucas vagas na instalação inteira — pode levar horas (o dono aceitou "até 24 h, contanto que
426
+ não atrapalhe nada"). Enquanto isso a mensagem carrega `content_attributes.media_failed` com
427
+ `retryable: true` (bolha âmbar "mídia chegando"); quando o arquivo chega, o selo some e o anexo
428
+ aparece; se o WhatsApp já apagou o arquivo (tudo com mais de ~2 semanas), o selo vira
429
+ `retryable: false` (vermelho, definitivo — não há repesca). `lionchat_inboxes_waha_import_status`
430
+ responde "ainda está chegando?": `media_pending` (arquivos na fila desta caixa; 0 = tudo pedido),
431
+ `media_swept_at`/`media_swept_count` (varredura final que recolocou órfãos na fila). `status:
432
+ completed` com `media_pending > 0` é normal — texto pronto, fotos a caminho. Conversa de histórico
433
+ NÃO é repescada pelo vigia de mensagens, de propósito.
434
+
421
435
  ### "Editei o evento no Google Calendar e não sincronizou"
422
436
  Auto-cura desde 2026-06-09: o vigia horário re-arma o "watch" morto de conexões saudáveis
423
437
  sozinho (sem reconectar a conta). Se persistir >1h, aí sim investigar a conexão
@@ -498,6 +512,15 @@ recusado; brasileiro com 55 e 12-13 dígitos é aceito mesmo no formato antigo s
498
512
  sem erro de telefone); no import do KANBAN, telefone inválido cria o card SEM contato e SEM
499
513
  conversa, em silêncio — comportamento diferente do import de contatos.
500
514
 
515
+ **Complementos de 19/08:** telefone PREENCHIDO e inválido **recusa a linha inteira** — o contato não
516
+ nasce (antes ele nascia mudo, sem telefone). Coluna de telefone **vazia** continua criando o contato
517
+ (lista de nome + e-mail é uso legítimo). **Linha totalmente vazia não é erro**: é pulada e contada em
518
+ `blank_rows` no resultado — planilha de 300 linhas com 2 preenchidas deixa de gerar 298 "Nome é
519
+ obrigatório". Telefone em notação científica do Excel (`9,88888E+12`) recebe mensagem própria
520
+ ("formate a coluna como texto"), não "confira o DDI". No `contacts_import_validate`, o número da
521
+ linha no relatório é a posição REAL no arquivo (linhas vazias contam na numeração, não no total
522
+ conferido).
523
+
501
524
  ## "A caixa oficial parou de disparar / de receber" — avisos automáticos da Meta (18/08)
502
525
 
503
526
  Duas famílias de chaves novas em `additional_attributes` da caixa `Channel::Whatsapp`
@@ -512,6 +535,15 @@ Duas famílias de chaves novas em `additional_attributes` da caixa `Channel::Wha
512
535
  e `reauthorization_required` vira `true` SOZINHO. Com `reauthorization_required: true` a caixa
513
536
  fica MUDA (descarta o que chega) até reconectar. A ausência dessas chaves NÃO prova que a caixa
514
537
  está conectada (caixa antiga só ganha o aviso após reinscrição).
538
+ - **Registro do número incompleto** (20/08): `whatsapp_registration_error` (texto, a frase da
539
+ própria Meta — ex.: verificação em duas etapas ligada num número que veio de outra plataforma).
540
+ A caixa foi criada e **continua recebendo**; só o registro do número não terminou. É diferente de
541
+ `reauthorization_required` (esse emudece a caixa). Orientação: resolver do lado da Meta e clicar
542
+ em "Concluir registro" na caixa; a chave some quando o registro passa. Conectar uma caixa oficial
543
+ é ação de administrador e respeita o teto de caixas do plano (402 antes de abrir a janela da Meta).
544
+ - Reconectar uma caixa em convivência pelo botão volta a pedir o histórico de 180 dias sozinho
545
+ (19/08); é um tiro único por onboarding — se a Meta recusar fora da janela de 24 h, não há
546
+ repetição.
515
547
 
516
548
  ## "O filtro de etiqueta 'não está presente' mente" — NUNCA mentiu pela API
517
549
 
@@ -521,6 +553,17 @@ Se alguma anotação antiga disser que esse filtro mente por API, está errada.
521
553
  verdade nos filtros: data FIXA com `is_greater_than`/`is_less_than` passou a cortar o dia no fuso
522
554
  da CONTA (ver resource `filtros-e-relatorios`).
523
555
 
556
+ ## "Mapeei o campo da integração pro atributo da conversa e nada foi gravado" (21/08 — entra com o próximo deploy do app depois de 21/08/2026)
557
+
558
+ Quatro causas, nesta ordem: (1) o evento não abriu conversa — atributo de conversa só existe na
559
+ conversa que a automação/fluxo mapeado cria (contato sozinho não tem onde gravar); (2) a chave é
560
+ reservada (`imported_from`, `type`, `captain_*`... — lista em `api-conventions`) e foi recusada;
561
+ (3) o valor não é do TIPO do atributo (texto num campo de Número, data em formato estranho) e foi
562
+ descartado — o log do servidor tem `[IntegrationAttributes] ... tipo_invalido=[...]`; (4) nos
563
+ gateways, a chave não está em `conversation_attribute_keys` daquele evento (a granularidade é por
564
+ evento: "compra aprovada" e "carrinho abandonado" gravam listas diferentes). Gravar por integração é
565
+ silencioso: não espere automação nem webhook de saída reagindo ao atributo.
566
+
524
567
  ## Quando reportar pro suporte
525
568
 
526
569
  Reporte se:
@@ -533,3 +576,13 @@ NÃO precisa reportar:
533
576
  - 4xx (você fez algo errado)
534
577
  - Rate limit (esperado)
535
578
  - 404 de recurso deletado
579
+
580
+ ## Conector REMOTO "conecta e desconecta" a cada ~6 minutos (Claude Code / VS Code / Codex ligados direto)
581
+
582
+ Vale SÓ para o conector remoto (`mcp.lionchat.com.br`). O conector local (npm, stdio) não tem canal de rede.
583
+ Sintoma: `/mcp` alterna connected/disconnected a cada ~6 min; nenhuma chamada falha.
584
+ Causa (21/08/2026): o cliente segura um canal GET esperando avisos do servidor; o Cloudflare derruba
585
+ qualquer resposta que fique 125 s sem um byte (Proxy Read Timeout). Quem usa pela claude.ai/ChatGPT não
586
+ abre esse canal e nunca vê isso.
587
+ Correção (v1.15.1): o servidor manda um `ping` a cada 30 s enquanto o canal está aberto.
588
+ Interruptor: `MCP_KEEPALIVE_INTERVAL_MS` (0 = desligado). Detalhe: `docs/plans/mcp-keepalive-cloudflare/`.
@@ -1,3 +1,5 @@
1
+ export declare const CONFIRM_PARAM = "confirm";
2
+ export declare const CONFIRM_DESCRIPTION: string;
1
3
  export declare const FULL_RESPONSE_PARAM = "full_response";
2
4
  export declare const FULL_RESPONSE_DESCRIPTION: string;
3
5
  export declare const FULL_RESPONSE_TOOLS: Set<string>;
package/dist/sanitize.js CHANGED
@@ -53,6 +53,12 @@ const SLIM_KEYS = new Set([
53
53
  // AIDEV-NOTE: tools cujo PROPOSITO e o campo pesado — slim nao se aplica nelas
54
54
  // (segredos continuam redigidos mesmo assim).
55
55
  const SLIM_EXEMPT_SUBSTRINGS = ['whatsapp_templates', 'csat_template'];
56
+ // AIDEV-NOTE: [auditoria adversus A3] parametro do CONECTOR (nunca chega ao Rails) que carrega o
57
+ // OK do usuario pra ferramenta marcada com `confirm_required` no catalogo. Stripado antes do
58
+ // bucketing, igual full_response.
59
+ export const CONFIRM_PARAM = 'confirm';
60
+ export const CONFIRM_DESCRIPTION = 'OBRIGATORIO nesta ferramenta: ela ALTERA algo que o usuario ve na tela. Confirme com ele o que ' +
61
+ 'vai ser criado/alterado/apagado e so entao reenvie com confirm:true. Sem isso a chamada e recusada.';
56
62
  export const FULL_RESPONSE_PARAM = 'full_response';
57
63
  export const FULL_RESPONSE_DESCRIPTION = 'true = resposta COMPLETA, sem a poda de campos pesados (message_templates, working_hours, ' +
58
64
  'avatares, meta_history_import). Padrao false (resposta enxuta). Segredos sao SEMPRE censurados, ' +
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"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"}