@lionchat/mcp-server 1.21.0 → 1.23.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 +2 -0
- package/dist/docs/resources/agenda-multiplas-unidades.md +210 -0
- package/dist/docs/resources/assinatura-eletronica.md +4 -2
- package/dist/docs/resources/best-practices.md +30 -1
- package/dist/docs/resources/conversation-flows.md +1 -1
- package/dist/docs/resources/data-model.md +63 -2
- package/dist/docs/resources/flowbuilder-design-guide.md +65 -14
- package/dist/docs/resources/flowbuilder-patterns.md +9 -1
- package/dist/docs/resources/formularios-publicos.md +4 -2
- package/dist/docs/resources/glossary.md +14 -2
- package/dist/docs/resources/reports-guide.md +33 -5
- package/dist/docs/resources/troubleshooting.md +92 -0
- package/dist/resources.js +6 -0
- package/dist/resources.js.map +1 -1
- package/dist/tools.js +84 -12
- package/dist/tools.js.map +1 -1
- package/endpoints.json +1227 -63
- package/package.json +1 -1
package/endpoints.json
CHANGED
|
@@ -7862,7 +7862,7 @@
|
|
|
7862
7862
|
"method": "POST",
|
|
7863
7863
|
"path": "/api/v1/accounts/{account_id}/macros",
|
|
7864
7864
|
"title": "Criar Macro",
|
|
7865
|
-
"description": "Cria uma nova macro com ações. Obrigatórios: name, actions (visibility: personal ou global). As actions DEVEM ser um array de objetos {action_name, action_params} — item malformado (ex.: texto solto) retorna 422. CARDÁPIO (
|
|
7865
|
+
"description": "Cria uma nova macro com ações. Obrigatórios: name, actions (visibility: personal ou global). As actions DEVEM ser um array de objetos {action_name, action_params} — item malformado (ex.: texto solto) retorna 422. CARDÁPIO (17/09/2026, 41 ações — os action_params seguem os MESMOS formatos das automações, ver conversation-flows.md 'Acoes de automacao'): send_message, add_private_note, send_canned_response ([id] — na MACRO a mensagem sai assinada pelo EXECUTOR; na automação sai como robô), send_attachment, send_email_transcript, send_email_to_team, send_webhook_event, add_label/remove_label (etiqueta da CONVERSA), add_contact_label/remove_contact_label ([titulos] — etiqueta do CONTATO), assign_agent, assign_team, remove_assigned_team, distribute_agents ([agent_ids] — rodízio de verdade, nunca sorteio), change_status, change_priority, open_conversation/pending_conversation/resolve_conversation, snooze_conversation ([] = até a próxima resposta, ou ['until_tomorrow'] etc.), mute_conversation, mark_unread ([]), add_sla ([sla_policy_id]), assign_captain_assistant ([id] ou [{assistant_id, proactive}]), deactivate_captain ([]), send_signature_document, update_contact_attribute/update_conversation_attribute ([{attribute_key, value}] — chave PROTEGIDA é recusada na execução e fica só no log: prefixos waha_whatsapp_/whatsapp_/origin_/ctwa_/meta_lead_/lt_ e atributos de sistema como utm_*/gclid), update_card_attribute ([{funnel_id, attribute_key, value}]), add_card_checklist ([{funnel_id, checklist_template_ids}]), add_card_offer ([{funnel_id, offer_ids}]), e as 7 de Kanban: create_kanban_item, move_kanban_item_to_stage, assign_agent_to_kanban_item, add_note_to_kanban_item, start_kanban_item_timer, stop_kanban_item_timer, set_kanban_item_status (todas exigem card já existente no funil informado, exceto create). send_conversion ([{destinations, event_names, value}] — Meta CAPI/GA4/Google Ads com trigger_type 'macro') só pode ser SALVO por administrador ou cargo com marketing_integrations_manage: para os demais, 422 com o motivo; EXECUTAR segue liberado; teto de 50 conversões por execução (o excedente é pulado com log e as outras ações rodam). Fora do cardápio: send_whatsapp_template. start_flow ([flow_id] — dispara um FLOW DE ACOES (flow_type 'action') na conversa; 17/09/2026). SO flow de acoes entra aqui: a macro roda em qualquer conversa e nao filtra caixa, entao um flow de MENSAGEM apontado aqui rodaria numa caixa que nao e dele. Flow inexistente, desligado ou de outro tipo e ignorado em silencio.",
|
|
7866
7866
|
"category": "Macros",
|
|
7867
7867
|
"params": [
|
|
7868
7868
|
{
|
|
@@ -7884,7 +7884,7 @@
|
|
|
7884
7884
|
"type": "array",
|
|
7885
7885
|
"location": "body",
|
|
7886
7886
|
"required": true,
|
|
7887
|
-
"description": "Array de {action_name, action_params[]} —
|
|
7887
|
+
"description": "Array de {action_name, action_params[]} — 41 nomes aceitos, listados na descrição da tool; formatos iguais aos das automações"
|
|
7888
7888
|
}
|
|
7889
7889
|
],
|
|
7890
7890
|
"returns": "macro criado (com novo ID)",
|
|
@@ -7924,7 +7924,7 @@
|
|
|
7924
7924
|
"method": "PATCH",
|
|
7925
7925
|
"path": "/api/v1/accounts/{account_id}/macros/{id}",
|
|
7926
7926
|
"title": "Atualizar Macro",
|
|
7927
|
-
"description": "Atualiza macro. PATCH parcial: só campos enviados são alterados (name, actions, visibility). As actions DEVEM ser um array de objetos {action_name, action_params} — item malformado retorna 422. CARDÁPIO (
|
|
7927
|
+
"description": "Atualiza macro. PATCH parcial: só campos enviados são alterados (name, actions, visibility). As actions DEVEM ser um array de objetos {action_name, action_params} — item malformado retorna 422. CARDÁPIO (17/09/2026, 41 ações — os action_params seguem os MESMOS formatos das automações, ver conversation-flows.md 'Acoes de automacao'): send_message, add_private_note, send_canned_response ([id] — na MACRO a mensagem sai assinada pelo EXECUTOR; na automação sai como robô), send_attachment, send_email_transcript, send_email_to_team, send_webhook_event, add_label/remove_label (etiqueta da CONVERSA), add_contact_label/remove_contact_label ([titulos] — etiqueta do CONTATO), assign_agent, assign_team, remove_assigned_team, distribute_agents ([agent_ids] — rodízio de verdade, nunca sorteio), change_status, change_priority, open_conversation/pending_conversation/resolve_conversation, snooze_conversation ([] = até a próxima resposta, ou ['until_tomorrow'] etc.), mute_conversation, mark_unread ([]), add_sla ([sla_policy_id]), assign_captain_assistant ([id] ou [{assistant_id, proactive}]), deactivate_captain ([]), send_signature_document, update_contact_attribute/update_conversation_attribute ([{attribute_key, value}] — chave PROTEGIDA é recusada na execução e fica só no log: prefixos waha_whatsapp_/whatsapp_/origin_/ctwa_/meta_lead_/lt_ e atributos de sistema como utm_*/gclid), update_card_attribute ([{funnel_id, attribute_key, value}]), add_card_checklist ([{funnel_id, checklist_template_ids}]), add_card_offer ([{funnel_id, offer_ids}]), e as 7 de Kanban: create_kanban_item, move_kanban_item_to_stage, assign_agent_to_kanban_item, add_note_to_kanban_item, start_kanban_item_timer, stop_kanban_item_timer, set_kanban_item_status (todas exigem card já existente no funil informado, exceto create). send_conversion ([{destinations, event_names, value}] — Meta CAPI/GA4/Google Ads com trigger_type 'macro') só pode ser SALVO por administrador ou cargo com marketing_integrations_manage: para os demais, 422 com o motivo; EXECUTAR segue liberado; teto de 50 conversões por execução (o excedente é pulado com log e as outras ações rodam). Fora do cardápio: send_whatsapp_template. start_flow ([flow_id] — dispara um FLOW DE ACOES (flow_type 'action') na conversa; 17/09/2026). SO flow de acoes entra aqui: a macro roda em qualquer conversa e nao filtra caixa, entao um flow de MENSAGEM apontado aqui rodaria numa caixa que nao e dele. Flow inexistente, desligado ou de outro tipo e ignorado em silencio.",
|
|
7928
7928
|
"category": "Macros",
|
|
7929
7929
|
"params": [
|
|
7930
7930
|
{
|
|
@@ -7946,7 +7946,7 @@
|
|
|
7946
7946
|
"type": "array",
|
|
7947
7947
|
"location": "body",
|
|
7948
7948
|
"required": false,
|
|
7949
|
-
"description": "Array de {action_name, action_params[]} —
|
|
7949
|
+
"description": "Array de {action_name, action_params[]} — 41 nomes aceitos, listados na descrição da tool; formatos iguais aos das automações"
|
|
7950
7950
|
},
|
|
7951
7951
|
{
|
|
7952
7952
|
"name": "visibility",
|
|
@@ -8289,7 +8289,7 @@
|
|
|
8289
8289
|
"method": "GET",
|
|
8290
8290
|
"path": "/api/v1/accounts/{account_id}/account_tasks",
|
|
8291
8291
|
"title": "Listar Tarefas",
|
|
8292
|
-
"description": "Lista tarefas com filtros avançados. Lista tarefas/agenda paginados (per_page padrão 25, máximo 100). Filtros disponíveis: page, per_page, task_type, status, user_id. Retorna meta (contadores) + payload (array de tarefa/agenda).",
|
|
8292
|
+
"description": "Lista tarefas com filtros avançados. Lista tarefas/agenda paginados (per_page padrão 25, máximo 100). Filtros disponíveis: page, per_page, task_type, status, user_id. Retorna meta (contadores) + payload (array de tarefa/agenda). Cada tarefa traz `tratamento` {id, sessao, total, titulo} quando e sessao de um tratamento em sessoes (15/09); nulo em compromisso comum. **`selo` (17/09):** cada tarefa traz o rotulo UNICO que o painel mostra ao lado dela, so de leitura — `cancelled` > `no_show` / `attended` > `completed` > `snoozed` > `rescheduled` > `pending`. Junta `status`, `attendance` e remarcacao (pelo painel ou pelo cliente no link). Para dizer o que aconteceu com o compromisso, leia `selo`: `status: pending` sozinho NAO significa que nada aconteceu (a pessoa pode ter faltado).",
|
|
8293
8293
|
"category": "Agenda / Tarefas",
|
|
8294
8294
|
"params": [
|
|
8295
8295
|
{
|
|
@@ -8354,6 +8354,13 @@
|
|
|
8354
8354
|
"location": "query",
|
|
8355
8355
|
"required": false,
|
|
8356
8356
|
"description": "Data fim"
|
|
8357
|
+
},
|
|
8358
|
+
{
|
|
8359
|
+
"name": "agenda_id",
|
|
8360
|
+
"type": "integer",
|
|
8361
|
+
"location": "query",
|
|
8362
|
+
"required": false,
|
|
8363
|
+
"description": "Recorta por AGENDA (unidade). SEM este parametro a listagem ja vem recortada pelas agendas que o usuario enxerga. Na agenda PRINCIPAL entram tambem os compromissos com agenda nula."
|
|
8357
8364
|
}
|
|
8358
8365
|
],
|
|
8359
8366
|
"returns": "LISTA PURA (array no topo, SEM embrulho meta/payload) — a resposta JA E a lista de tarefas da agenda. Cada tarefa traz todos os campos da tarefa (id, title, description, task_type, status, scheduled_at, completed, recurrence_*), mais assignees [{id, name, agenda_color}], assignee_ids, conversation_display_id, conversation_contact_name, contact_name/contact_phone/contact_email, meeting_url, calendar_color, is_readonly, is_private, guest_emails, attendee_rsvp e booking_id. Lista vazia = []. Com filtro de data (date_start/date_end) devolve TUDO do periodo sem paginar (teto de 10.000). Sem filtro de data, pagina por `page`/`per_page` — mas a resposta NAO traz numero de paginas nem total: pagina cheia sugere que ha mais.",
|
|
@@ -8372,7 +8379,7 @@
|
|
|
8372
8379
|
"method": "POST",
|
|
8373
8380
|
"path": "/api/v1/accounts/{account_id}/account_tasks",
|
|
8374
8381
|
"title": "Criar Tarefa",
|
|
8375
|
-
"description": "Cria uma tarefa/compromisso. Obrigatorios: title, scheduled_at. Requer feature unified_agenda + LionLab PRO. Para task_type video_call ou meeting, o link do Google Meet é gerado automaticamente após ~5s (campo meeting_url). Reuniões com convidados NÃO suportam recorrência.",
|
|
8382
|
+
"description": "Cria uma tarefa/compromisso. Obrigatorios: title, scheduled_at. Requer feature unified_agenda + LionLab PRO. Para task_type video_call ou meeting, o link do Google Meet é gerado automaticamente após ~5s (campo meeting_url). Reuniões com convidados NÃO suportam recorrência. **Tratamento em sessoes (15/09):** com tipo `sessions_enabled`, o agendamento pelo painel/API nasce como sessao do tratamento do contato (proxima a marcar; cheio = sessao extra ate 60; concluido = ciclo novo) e a tarefa devolve `tratamento` {id, sessao, total, titulo} (nulo em compromisso comum). `treatment.*` cria o plano; `agenda_treatment_id` + `treatment_session_number` marcam uma sessao pedida.",
|
|
8376
8383
|
"category": "Agenda / Tarefas",
|
|
8377
8384
|
"params": [
|
|
8378
8385
|
{
|
|
@@ -8493,6 +8500,48 @@
|
|
|
8493
8500
|
"location": "body",
|
|
8494
8501
|
"required": false,
|
|
8495
8502
|
"description": "IGNORADO — não é consumido pelo endpoint"
|
|
8503
|
+
},
|
|
8504
|
+
{
|
|
8505
|
+
"name": "agenda_id",
|
|
8506
|
+
"type": "integer",
|
|
8507
|
+
"location": "body",
|
|
8508
|
+
"required": false,
|
|
8509
|
+
"description": "AGENDA (unidade) em que o compromisso nasce. NULO = agenda principal, que e onde moram os compromissos de quem nao usa multiplas agendas. So aceita agenda que o usuario ENXERGA; agenda de outra conta e recusada."
|
|
8510
|
+
},
|
|
8511
|
+
{
|
|
8512
|
+
"name": "treatment.sessions",
|
|
8513
|
+
"type": "integer",
|
|
8514
|
+
"location": "body",
|
|
8515
|
+
"required": false,
|
|
8516
|
+
"description": "Modo booking, tipo com sessoes: quantidade de sessoes do programa NOVO (2 a 60). Sem isto vale o padrao do tipo. Validado antes da reserva (422)"
|
|
8517
|
+
},
|
|
8518
|
+
{
|
|
8519
|
+
"name": "treatment.interval_value",
|
|
8520
|
+
"type": "integer",
|
|
8521
|
+
"location": "body",
|
|
8522
|
+
"required": false,
|
|
8523
|
+
"description": "Modo booking: intervalo entre sessoes (1 a 365)"
|
|
8524
|
+
},
|
|
8525
|
+
{
|
|
8526
|
+
"name": "treatment.interval_unit",
|
|
8527
|
+
"type": "string",
|
|
8528
|
+
"location": "body",
|
|
8529
|
+
"required": false,
|
|
8530
|
+
"description": "Modo booking: days, weeks ou months"
|
|
8531
|
+
},
|
|
8532
|
+
{
|
|
8533
|
+
"name": "agenda_treatment_id",
|
|
8534
|
+
"type": "integer",
|
|
8535
|
+
"location": "body",
|
|
8536
|
+
"required": false,
|
|
8537
|
+
"description": "'Marcar proxima': ID do programa do CONTATO ao qual esta sessao pertence (programa de outra ficha = 422)"
|
|
8538
|
+
},
|
|
8539
|
+
{
|
|
8540
|
+
"name": "treatment_session_number",
|
|
8541
|
+
"type": "integer",
|
|
8542
|
+
"location": "body",
|
|
8543
|
+
"required": false,
|
|
8544
|
+
"description": "'Marcar proxima': numero da sessao pedida (1..N); sessao ja marcada = 422 'Essa sessao ja foi marcada'"
|
|
8496
8545
|
}
|
|
8497
8546
|
],
|
|
8498
8547
|
"returns": "tarefa/agenda criado (com novo ID)",
|
|
@@ -8511,7 +8560,7 @@
|
|
|
8511
8560
|
"method": "GET",
|
|
8512
8561
|
"path": "/api/v1/accounts/{account_id}/account_tasks/{id}",
|
|
8513
8562
|
"title": "Detalhe da Tarefa",
|
|
8514
|
-
"description": "Retorna detalhes de uma tarefa. Retorna detalhes completos de UM tarefa/agenda específico pelo ID. Inclui campos relacionais quando aplicável.",
|
|
8563
|
+
"description": "Retorna detalhes de uma tarefa. Retorna detalhes completos de UM tarefa/agenda específico pelo ID. Inclui campos relacionais quando aplicável. Cada tarefa traz `tratamento` {id, sessao, total, titulo} quando e sessao de um tratamento em sessoes (15/09); nulo em compromisso comum. **`selo` (17/09):** cada tarefa traz o rotulo UNICO que o painel mostra ao lado dela, so de leitura — `cancelled` > `no_show` / `attended` > `completed` > `snoozed` > `rescheduled` > `pending`. Junta `status`, `attendance` e remarcacao (pelo painel ou pelo cliente no link). Para dizer o que aconteceu com o compromisso, leia `selo`: `status: pending` sozinho NAO significa que nada aconteceu (a pessoa pode ter faltado).",
|
|
8515
8564
|
"category": "Agenda / Tarefas",
|
|
8516
8565
|
"params": [
|
|
8517
8566
|
{
|
|
@@ -8535,7 +8584,7 @@
|
|
|
8535
8584
|
"method": "PATCH",
|
|
8536
8585
|
"path": "/api/v1/accounts/{account_id}/account_tasks/{id}",
|
|
8537
8586
|
"title": "Atualizar Tarefa",
|
|
8538
|
-
"description": "Atualiza uma tarefa. Campos alterados em video_call/meeting disparam sync com Google Calendar. Atualiza campos do tarefa/agenda existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: title, description, task_type, priority, scheduled_at, duration_minutes.",
|
|
8587
|
+
"description": "Atualiza uma tarefa. Campos alterados em video_call/meeting disparam sync com Google Calendar. Atualiza campos do tarefa/agenda existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: title, description, task_type, priority, scheduled_at, duration_minutes. **Tratamento em sessoes (15/09):** com tipo `sessions_enabled`, o agendamento pelo painel/API nasce como sessao do tratamento do contato (proxima a marcar; cheio = sessao extra ate 60; concluido = ciclo novo) e a tarefa devolve `tratamento` {id, sessao, total, titulo} (nulo em compromisso comum). `treatment.*` cria o plano; `agenda_treatment_id` + `treatment_session_number` marcam uma sessao pedida. **Compromisso de Booking (17/09):** tarefa com `booking_id` tem responsavel FIXO (o profissional do tipo de evento) — `assignee_ids` e IGNORADO (200, o resto da edicao vale). Para mudar quem atende, edite o tipo de evento. **Presenca nao conclui:** mandar `attendance` NAO muda `status`; nao conclua a tarefa so porque a presenca foi marcada (concluir compromisso de Booking encerra lembretes/pos-atendimento e dispara o gatilho de fluxo 'agendamento concluido'). A resposta traz `selo` com o rotulo resultante.",
|
|
8539
8588
|
"category": "Agenda / Tarefas",
|
|
8540
8589
|
"params": [
|
|
8541
8590
|
{
|
|
@@ -8641,7 +8690,7 @@
|
|
|
8641
8690
|
"type": "array",
|
|
8642
8691
|
"location": "body",
|
|
8643
8692
|
"required": false,
|
|
8644
|
-
"description": "IDs dos responsáveis"
|
|
8693
|
+
"description": "IDs dos responsáveis. IGNORADO em compromisso nascido de Booking (`booking_id` presente): o responsavel e o profissional do tipo de evento"
|
|
8645
8694
|
},
|
|
8646
8695
|
{
|
|
8647
8696
|
"name": "guest_emails",
|
|
@@ -8656,6 +8705,55 @@
|
|
|
8656
8705
|
"location": "body",
|
|
8657
8706
|
"required": false,
|
|
8658
8707
|
"description": "Incluir email do contato como convidado"
|
|
8708
|
+
},
|
|
8709
|
+
{
|
|
8710
|
+
"name": "agenda_id",
|
|
8711
|
+
"type": "integer",
|
|
8712
|
+
"location": "body",
|
|
8713
|
+
"required": false,
|
|
8714
|
+
"description": "AGENDA (unidade) em que o compromisso nasce. NULO = agenda principal, que e onde moram os compromissos de quem nao usa multiplas agendas. So aceita agenda que o usuario ENXERGA; agenda de outra conta e recusada."
|
|
8715
|
+
},
|
|
8716
|
+
{
|
|
8717
|
+
"name": "attendance",
|
|
8718
|
+
"type": "string",
|
|
8719
|
+
"location": "body",
|
|
8720
|
+
"required": false,
|
|
8721
|
+
"description": "Presenca: attended (compareceu) ou no_show (faltou). E um CARIMBO, nao um status — nao substitui `status`, e marcar falta NAO devolve o horario para a agenda."
|
|
8722
|
+
},
|
|
8723
|
+
{
|
|
8724
|
+
"name": "treatment.sessions",
|
|
8725
|
+
"type": "integer",
|
|
8726
|
+
"location": "body",
|
|
8727
|
+
"required": false,
|
|
8728
|
+
"description": "Modo booking, tipo com sessoes: quantidade de sessoes do programa NOVO (2 a 60). Sem isto vale o padrao do tipo. Validado antes da reserva (422)"
|
|
8729
|
+
},
|
|
8730
|
+
{
|
|
8731
|
+
"name": "treatment.interval_value",
|
|
8732
|
+
"type": "integer",
|
|
8733
|
+
"location": "body",
|
|
8734
|
+
"required": false,
|
|
8735
|
+
"description": "Modo booking: intervalo entre sessoes (1 a 365)"
|
|
8736
|
+
},
|
|
8737
|
+
{
|
|
8738
|
+
"name": "treatment.interval_unit",
|
|
8739
|
+
"type": "string",
|
|
8740
|
+
"location": "body",
|
|
8741
|
+
"required": false,
|
|
8742
|
+
"description": "Modo booking: days, weeks ou months"
|
|
8743
|
+
},
|
|
8744
|
+
{
|
|
8745
|
+
"name": "agenda_treatment_id",
|
|
8746
|
+
"type": "integer",
|
|
8747
|
+
"location": "body",
|
|
8748
|
+
"required": false,
|
|
8749
|
+
"description": "'Marcar proxima': ID do programa do CONTATO ao qual esta sessao pertence (programa de outra ficha = 422)"
|
|
8750
|
+
},
|
|
8751
|
+
{
|
|
8752
|
+
"name": "treatment_session_number",
|
|
8753
|
+
"type": "integer",
|
|
8754
|
+
"location": "body",
|
|
8755
|
+
"required": false,
|
|
8756
|
+
"description": "'Marcar proxima': numero da sessao pedida (1..N); sessao ja marcada = 422 'Essa sessao ja foi marcada'"
|
|
8659
8757
|
}
|
|
8660
8758
|
],
|
|
8661
8759
|
"returns": "tarefa/agenda atualizado",
|
|
@@ -8733,6 +8831,13 @@
|
|
|
8733
8831
|
"location": "path",
|
|
8734
8832
|
"required": true,
|
|
8735
8833
|
"description": "ID"
|
|
8834
|
+
},
|
|
8835
|
+
{
|
|
8836
|
+
"name": "agenda_id",
|
|
8837
|
+
"type": "integer",
|
|
8838
|
+
"location": "body",
|
|
8839
|
+
"required": false,
|
|
8840
|
+
"description": "AGENDA (unidade) em que o compromisso nasce. NULO = agenda principal, que e onde moram os compromissos de quem nao usa multiplas agendas. So aceita agenda que o usuario ENXERGA; agenda de outra conta e recusada."
|
|
8736
8841
|
}
|
|
8737
8842
|
],
|
|
8738
8843
|
"returns": "tarefa atualizada",
|
|
@@ -8781,7 +8886,7 @@
|
|
|
8781
8886
|
"method": "PATCH",
|
|
8782
8887
|
"path": "/api/v1/accounts/{account_id}/account_tasks/{id}/update_future",
|
|
8783
8888
|
"title": "Atualizar Futuras",
|
|
8784
|
-
"description": "Atualiza esta e todas as futuras instâncias de tarefa recorrente. Atualiza campos do tarefa/agenda existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: title, scheduled_at.",
|
|
8889
|
+
"description": "Atualiza esta e todas as futuras instâncias de tarefa recorrente. Atualiza campos do tarefa/agenda existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: title, scheduled_at. **Compromisso de Booking (17/09):** tarefa com `booking_id` tem responsavel FIXO (o profissional do tipo de evento) — `assignee_ids` e IGNORADO (200, o resto da edicao vale). Para mudar quem atende, edite o tipo de evento. **Presenca nao conclui:** mandar `attendance` NAO muda `status`; nao conclua a tarefa so porque a presenca foi marcada (concluir compromisso de Booking encerra lembretes/pos-atendimento e dispara o gatilho de fluxo 'agendamento concluido'). A resposta traz `selo` com o rotulo resultante.",
|
|
8785
8890
|
"category": "Agenda / Tarefas",
|
|
8786
8891
|
"params": [
|
|
8787
8892
|
{
|
|
@@ -8804,6 +8909,20 @@
|
|
|
8804
8909
|
"location": "body",
|
|
8805
8910
|
"required": false,
|
|
8806
8911
|
"description": "Data"
|
|
8912
|
+
},
|
|
8913
|
+
{
|
|
8914
|
+
"name": "agenda_id",
|
|
8915
|
+
"type": "integer",
|
|
8916
|
+
"location": "body",
|
|
8917
|
+
"required": false,
|
|
8918
|
+
"description": "AGENDA (unidade) em que o compromisso nasce. NULO = agenda principal, que e onde moram os compromissos de quem nao usa multiplas agendas. So aceita agenda que o usuario ENXERGA; agenda de outra conta e recusada."
|
|
8919
|
+
},
|
|
8920
|
+
{
|
|
8921
|
+
"name": "attendance",
|
|
8922
|
+
"type": "string",
|
|
8923
|
+
"location": "body",
|
|
8924
|
+
"required": false,
|
|
8925
|
+
"description": "Presenca: attended (compareceu) ou no_show (faltou). E um CARIMBO, nao um status — nao substitui `status`, e marcar falta NAO devolve o horario para a agenda."
|
|
8807
8926
|
}
|
|
8808
8927
|
],
|
|
8809
8928
|
"returns": "tarefa/agenda atualizado",
|
|
@@ -8847,9 +8966,17 @@
|
|
|
8847
8966
|
"method": "GET",
|
|
8848
8967
|
"path": "/api/v1/accounts/{account_id}/account_tasks/my_day",
|
|
8849
8968
|
"title": "Meu Dia",
|
|
8850
|
-
"description": "Retorna tarefas agrupadas: atrasadas, hoje, amanhã, próximos 7 dias. Lista tarefas/agenda paginados (per_page padrão 25, máximo 100). Retorna meta (contadores) + payload (array de tarefa/agenda).",
|
|
8969
|
+
"description": "Retorna tarefas agrupadas: atrasadas, hoje, amanhã, próximos 7 dias. Lista tarefas/agenda paginados (per_page padrão 25, máximo 100). Retorna meta (contadores) + payload (array de tarefa/agenda). **`selo` (17/09):** cada tarefa traz o rotulo UNICO que o painel mostra ao lado dela, so de leitura — `cancelled` > `no_show` / `attended` > `completed` > `snoozed` > `rescheduled` > `pending`. Junta `status`, `attendance` e remarcacao (pelo painel ou pelo cliente no link). Para dizer o que aconteceu com o compromisso, leia `selo`: `status: pending` sozinho NAO significa que nada aconteceu (a pessoa pode ter faltado).",
|
|
8851
8970
|
"category": "Agenda / Tarefas",
|
|
8852
|
-
"params": [
|
|
8971
|
+
"params": [
|
|
8972
|
+
{
|
|
8973
|
+
"name": "agenda_id",
|
|
8974
|
+
"type": "integer",
|
|
8975
|
+
"location": "query",
|
|
8976
|
+
"required": false,
|
|
8977
|
+
"description": "Recorta por AGENDA (unidade). SEM este parametro a listagem ja vem recortada pelas agendas que o usuario enxerga. Na agenda PRINCIPAL entram tambem os compromissos com agenda nula."
|
|
8978
|
+
}
|
|
8979
|
+
],
|
|
8853
8980
|
"returns": "Objeto com QUATRO listas separadas, sem meta e sem payload: { overdue: [...], today: [...], tomorrow: [...], next_7_days: [...] }. Traz APENAS tarefas em aberto (status pendente ou adiada — concluida/cancelada nao aparece) e nao ocultas, ja filtradas pela permissao de quem chama (administrador ve todas; agente ve so as que criou ou em que e responsavel). Agrupamento pela data agendada: overdue = antes de hoje 00:00 (ordenado da mais recente para a mais antiga), today = hoje, tomorrow = amanha, next_7_days = ate 7 dias a frente. Cada item e a tarefa completa (serializacao do modelo AccountTask, ja com assignees/assignee_ids, completed, dados de recorrencia, conversation_display_id, nome/telefone/email do contato, meeting_url e links de booking). Sem paginacao (teto de 10 mil por grupo).",
|
|
8854
8981
|
"common_use_cases": [
|
|
8855
8982
|
"Dashboard: contar/exibir tarefas/agenda",
|
|
@@ -8868,7 +8995,15 @@
|
|
|
8868
8995
|
"title": "Contagem Badge",
|
|
8869
8996
|
"description": "Retorna contagem para badge de tarefas pendentes. Lista tarefas/agenda paginados (per_page padrão 25, máximo 100). Retorna meta (contadores) + payload (array de tarefa/agenda).",
|
|
8870
8997
|
"category": "Agenda / Tarefas",
|
|
8871
|
-
"params": [
|
|
8998
|
+
"params": [
|
|
8999
|
+
{
|
|
9000
|
+
"name": "agenda_id",
|
|
9001
|
+
"type": "integer",
|
|
9002
|
+
"location": "query",
|
|
9003
|
+
"required": false,
|
|
9004
|
+
"description": "Recorta por AGENDA (unidade). SEM este parametro a listagem ja vem recortada pelas agendas que o usuario enxerga. Na agenda PRINCIPAL entram tambem os compromissos com agenda nula."
|
|
9005
|
+
}
|
|
9006
|
+
],
|
|
8872
9007
|
"returns": "Objeto simples, NAO e lista: { overdue_count, today_count }. `today_count` = quantas tarefas pendentes ou adiadas estao marcadas para HOJE. `overdue_count` vem SEMPRE 0 — de proposito, o contador do badge nao inclui atrasadas. Para ver as tarefas em si, use a listagem de tarefas.",
|
|
8873
9008
|
"common_use_cases": [
|
|
8874
9009
|
"Dashboard: contar/exibir tarefas/agenda",
|
|
@@ -8885,7 +9020,7 @@
|
|
|
8885
9020
|
"method": "GET",
|
|
8886
9021
|
"path": "/api/v1/accounts/{account_id}/kanban_items/{id}/tasks",
|
|
8887
9022
|
"title": "Tarefas do Card",
|
|
8888
|
-
"description": "Lista tarefas de todas as conversas vinculadas ao card (primária + linked). Lista tarefas/agenda paginados (per_page padrão 25, máximo 100). Filtros disponíveis: scope, page. Retorna meta (contadores) + payload (array de tarefa/agenda).",
|
|
9023
|
+
"description": "Lista tarefas de todas as conversas vinculadas ao card (primária + linked). Lista tarefas/agenda paginados (per_page padrão 25, máximo 100). Filtros disponíveis: scope, page. Retorna meta (contadores) + payload (array de tarefa/agenda). **`selo` (17/09):** cada tarefa traz o rotulo UNICO que o painel mostra ao lado dela, so de leitura — `cancelled` > `no_show` / `attended` > `completed` > `snoozed` > `rescheduled` > `pending`. Junta `status`, `attendance` e remarcacao (pelo painel ou pelo cliente no link). Para dizer o que aconteceu com o compromisso, leia `selo`: `status: pending` sozinho NAO significa que nada aconteceu (a pessoa pode ter faltado).",
|
|
8889
9024
|
"category": "Agenda / Tarefas",
|
|
8890
9025
|
"params": [
|
|
8891
9026
|
{
|
|
@@ -8927,7 +9062,7 @@
|
|
|
8927
9062
|
"method": "GET",
|
|
8928
9063
|
"path": "/api/v1/accounts/{account_id}/kanban_items/{id}/next_task",
|
|
8929
9064
|
"title": "Próxima Tarefa do Card",
|
|
8930
|
-
"description": "Retorna a PROXIMA tarefa pendente ou adiada do card (a de menor scheduled_at), considerando a conversa principal e as vinculadas. Devolve UM OBJETO de tarefa — nao ha meta/payload nem paginacao — e `{}` (objeto vazio) quando nao ha nenhuma. Nao procure um array: procurar array aqui faz voce responder \"esse card nao tem proxima tarefa\" quando tem. ATENCAO: esta rota NAO filtra por privacidade de tarefa — pode devolver tarefa de OUTRO atendente, ao contrario do campo `next_task` que vem dentro do proprio card (esse so mostra tarefa de quem esta consultando).",
|
|
9065
|
+
"description": "Retorna a PROXIMA tarefa pendente ou adiada do card (a de menor scheduled_at), considerando a conversa principal e as vinculadas. Devolve UM OBJETO de tarefa — nao ha meta/payload nem paginacao — e `{}` (objeto vazio) quando nao ha nenhuma. Nao procure um array: procurar array aqui faz voce responder \"esse card nao tem proxima tarefa\" quando tem. ATENCAO: esta rota NAO filtra por privacidade de tarefa — pode devolver tarefa de OUTRO atendente, ao contrario do campo `next_task` que vem dentro do proprio card (esse so mostra tarefa de quem esta consultando). **`selo` (17/09):** cada tarefa traz o rotulo UNICO que o painel mostra ao lado dela, so de leitura — `cancelled` > `no_show` / `attended` > `completed` > `snoozed` > `rescheduled` > `pending`. Junta `status`, `attendance` e remarcacao (pelo painel ou pelo cliente no link). Para dizer o que aconteceu com o compromisso, leia `selo`: `status: pending` sozinho NAO significa que nada aconteceu (a pessoa pode ter faltado).",
|
|
8931
9066
|
"category": "Agenda / Tarefas",
|
|
8932
9067
|
"params": [
|
|
8933
9068
|
{
|
|
@@ -9595,7 +9730,7 @@
|
|
|
9595
9730
|
"method": "POST",
|
|
9596
9731
|
"path": "/api/v1/accounts/{account_id}/flows",
|
|
9597
9732
|
"title": "Criar Flow",
|
|
9598
|
-
"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.",
|
|
9733
|
+
"description": "Cria um flow (FlowBuilder) na conta. Requer Admin. flow_data segue formato Vue Flow {nodes:[], edges:[]}. NODE SCHEMA — start: {label}. send_message: {label, messageItems:[{id, type:'text', content}]} handles: success/no_response/error. wait_response: {label, waitTime, waitUnit:'minutes'|'seconds', validation:'any'|'options'|'regex', acceptedOptions:['1','2'] (se options), regexPattern (se regex), invalidMessage, maxRetries:3, saveTo:'variable'|'contact_name'|'contact_email'|'contact_phone'|'contact_attr'|'conversation_attr'|'', saveVariable, saveAttrKey} — quando validation='options' os handles ficam 'option_{val}' + 'timeout'; senão 'success' + 'timeout' — NUNCA precisa de condition node depois. condition: {label, conditions:[{id, label, field, operator, value}]} handles = 'cond_0','cond_1',... (INDICE no array, NAO o id) + 'default'. action: {label, items:[{key, config:{...}}]} keys comuns assign_team({team_id}), assign_agent({agent_id}), add_label({labels:['slug',...]}), remove_label({labels}), change_status({status}), change_priority({priority}), mute_conversation({}), add_private_note({content}), create_kanban_item({funnel_id, funnel_stage,...}), move_kanban_stage({funnel_id, funnel_stage}), deactivate_flow({}), assign_captain({assistant_id}). api: {label, method, url, headers:[{key,value}], body, apiResponseVar}. set_variable: {label, variables:[{name, value}]}. wait: {label, waitTime, waitUnit}. EDGE SCHEMA: {id, source, target, sourceHandle (opcional, OBRIGATORIO casar com handle exposto pelo node source), type:'deletable', animated:true}. ERROS COMUNS QUE DEVEM SER EVITADOS: (1) action usa items[].config NAO items[].params; (2) send_message usa messageItems NAO items; (3) wait_response com validation='options' NAO precisa de condition node — use sourceHandle='option_X' diretamente; (4) sourceHandle inventado tipo 'c1','c2' nao funciona — sempre usar o handle real; (5) inbox_ids precisa vir aninhado em {flow:{inbox_ids:[]}} no PUT bruto, mas no MCP basta inbox_ids no nivel raiz. Cria novo flow. Obrigatórios: name, channel_type. Valida unicidade quando aplicável. Retorna o flow criado com ID atribuído. POSITIONING (CRITICO): cada node DEVE ter position:{x,y}. Sem isso, todos empilham no canvas no (0,0). Regra basica de layout: start em {x:50,y:300}, espaco horizontal +320 entre nodes sequenciais, ramificacoes em +/-150 vertical. ANTES DE GERAR JSON consulte o resource lionchat://docs/flowbuilder-design-guide (schema completo de cada tipo de node, handles expostos, erros comuns, checklist) e lionchat://docs/flowbuilder-patterns (10 templates prontos pra adaptar). BRAINSTORMING: se faltou info critica (canal, gatilho, conteudo), use o prompt create_flow_brainstorm como banco de perguntas sugeridas — pergunte SO o que falta, sem checklist forcado. APOS GERAR: rode o checklist da secao 6 do design guide antes de submeter (1 node start, todo node com id unico + position + data, todo edge com sourceHandle valido). NUNCA invente sourceHandle (no condition use cond_0/cond_1/default, no wait_response options use option_X, no AI intent use intent_<opcao>). IMPORTANTE: chame lionchat_flows_schema_reference antes pra ver o schema COMPLETO e atualizado (nodes end/ai/note, etiqueta conversa vs contato, webhook embutido, timeout, anti-loop). Pra ferramentas da IA (ai_tool) use lionchat_flow_tools_create. conversation_mode: 'individual' (default) | 'group'. Sticky note (type 'note'): data usa title+body+color(yellow|teal|blue|violet|pink|orange|slate)+width+height — NUNCA 'content'. ORGANIZAÇÃO: preencha tags ao criar (reutilizando as tags já existentes nos flows da conta — veja flows_list) pra manter a lista organizada. STICKY NOTE: o texto da nota (type note) vai em data.title + data.body — content/label/text deixam a nota EM BRANCO na tela; nunca crie nota sem body. LAYOUT: espace os nodes (colunas a >=320px no x, ramos a >=180px no y; notas AO LADO/ACIMA do trecho, nunca sobre nodes ou linhas). REGRAS 18/08: acao start_flow com flow_id do PROPRIO flow e aceita no save mas IGNORADA EM SILENCIO na execucao (o fluxo para ali) — aponte sempre pra OUTRO flow. Condicoes: preencha operator E field juntos (tabela dos pares no resource flowbuilder-patterns), senao a regra roda certa e aparece errada na tela do cliente. NOVIDADES 01/09/2026 no schema (lionchat_flows_schema_reference): acao send_conversion (Meta/Google Ads/GA4 de dentro do fluxo) e condicao por origem/campanha (attr_config de conversa com origin_kind=paid_ad etc.). NOVIDADES 02/09/2026: (1) send_conversion ganhou event_names — UM evento por destino ({meta, google_ads, ga4}); event_name virou reserva (grave os dois); Google Ads so aceita nome do conversion_action_map. (2) preset 'Origem do lead' (attrScope 'lead_origin', attr_key origin_platform; valores: plataforma ou 'custom:<slug>'). (3) REGRA DE VALOR na condicao de atributo: equal/not_equal/contains/not_contains gravam em values:[...] (LISTA) com value:'' — value solo abre VAZIO na tela do cliente. Ver lionchat_flows_schema_reference. TIPO DE FLUXO (17/09/2026): o parametro flow_type aceita 'conversation' (padrao) ou 'action' (Fluxo de Acoes). O de ACOES nao fica ligado a caixa nenhuma, roda em QUALQUER conversa de QUALQUER caixa e SO executa acoes — NAO pode ter os blocos send_message, wait_response nem update_group (a validacao recusa o save inteiro), nao aceita inbox_ids e ignora conversation_mode. Use pra regra que vale na empresa toda e nao depende da caixa (ex.: etiqueta 'urgente' -> atribui equipe de suporte). Se precisa FALAR com a pessoa, o tipo e 'conversation'. Pra ferramenta da IA continue usando lionchat_flow_tools_create.",
|
|
9599
9734
|
"category": "Flows",
|
|
9600
9735
|
"params": [
|
|
9601
9736
|
{
|
|
@@ -9616,8 +9751,8 @@
|
|
|
9616
9751
|
"name": "channel_type",
|
|
9617
9752
|
"type": "string",
|
|
9618
9753
|
"location": "body",
|
|
9619
|
-
"required":
|
|
9620
|
-
"description": "Tipo de canal (ex: Channel::Waha, Channel::WebWidget, Channel::Whatsapp)"
|
|
9754
|
+
"required": false,
|
|
9755
|
+
"description": "Tipo de canal (ex: Channel::Waha, Channel::WebWidget, Channel::Whatsapp). Obrigatorio no fluxo de conversa; NAO se aplica ao flow_type 'action', que roda em todas as caixas."
|
|
9621
9756
|
},
|
|
9622
9757
|
{
|
|
9623
9758
|
"name": "conversation_mode",
|
|
@@ -9631,7 +9766,7 @@
|
|
|
9631
9766
|
"type": "array",
|
|
9632
9767
|
"location": "body",
|
|
9633
9768
|
"required": false,
|
|
9634
|
-
"description": "IDs das caixas de entrada a vincular"
|
|
9769
|
+
"description": "IDs das caixas de entrada a vincular. NAO use com flow_type 'action' — a validacao recusa caixa nesse tipo (ele roda em todas)."
|
|
9635
9770
|
},
|
|
9636
9771
|
{
|
|
9637
9772
|
"name": "flow_data",
|
|
@@ -9646,6 +9781,13 @@
|
|
|
9646
9781
|
"location": "body",
|
|
9647
9782
|
"required": false,
|
|
9648
9783
|
"description": "Tags livres do flow para organização (array de strings; máx 20 tags, cada uma até 50 caracteres; duplicadas por maiúscula/minúscula são unificadas). A lista de flows na tela filtra por Status/Tipo/Caixa/Tags no navegador — não há filtro por query param no index."
|
|
9784
|
+
},
|
|
9785
|
+
{
|
|
9786
|
+
"name": "flow_type",
|
|
9787
|
+
"type": "string",
|
|
9788
|
+
"location": "body",
|
|
9789
|
+
"required": false,
|
|
9790
|
+
"description": "'conversation' (padrao) ou 'action' (Fluxo de Acoes). IMUTAVEL apos criar. No 'action' NAO mande inbox_ids nem channel_type (ele roda em todas as caixas) e nem conversation_mode (o backend fixa 'individual'); e o flow_data NAO pode conter send_message, wait_response, update_group ou end. Ferramenta da IA ('ai_tool') tem tool propria: lionchat_flow_tools_create."
|
|
9649
9791
|
}
|
|
9650
9792
|
],
|
|
9651
9793
|
"returns": "flow criado (com novo ID)",
|
|
@@ -9933,6 +10075,97 @@
|
|
|
9933
10075
|
"location": "body",
|
|
9934
10076
|
"required": false,
|
|
9935
10077
|
"description": "Lembretes do agendamento (o bloco '1d antes do evento' da tela). Array de objetos: {id (obrigatorio para EDITAR o existente — sem id CRIA outro), offset_direction ('before'/'after'), offset_days, offset_hours, offset_minutes, message_body, blocks, active, position, _destroy}. IMPORTANTE: message_body E blocks[0].content precisam do MESMO texto — a tela le blocks e o envio usa message_body; gravar so um deixa a tela e a mensagem entregue diferentes. blocks = [{type:'text', content:'...'}]. Aceita variaveis {{titulo}}, {{data}}, {{horario}} e quebra de linha (\\n)."
|
|
10078
|
+
},
|
|
10079
|
+
{
|
|
10080
|
+
"name": "agenda_id",
|
|
10081
|
+
"type": "integer",
|
|
10082
|
+
"location": "body",
|
|
10083
|
+
"required": false,
|
|
10084
|
+
"description": "AGENDA (unidade) em que o agendamento feito por este Booking vai nascer. NULO = agenda principal, que e o que todo Booking de hoje herda."
|
|
10085
|
+
},
|
|
10086
|
+
{
|
|
10087
|
+
"name": "allow_reschedule",
|
|
10088
|
+
"type": "boolean",
|
|
10089
|
+
"location": "body",
|
|
10090
|
+
"required": false,
|
|
10091
|
+
"description": "O cliente pode remarcar pela pagina publica. Padrao true."
|
|
10092
|
+
},
|
|
10093
|
+
{
|
|
10094
|
+
"name": "allow_cancel",
|
|
10095
|
+
"type": "boolean",
|
|
10096
|
+
"location": "body",
|
|
10097
|
+
"required": false,
|
|
10098
|
+
"description": "O cliente pode cancelar pela pagina publica. Padrao true."
|
|
10099
|
+
},
|
|
10100
|
+
{
|
|
10101
|
+
"name": "ask_attendance_confirmation",
|
|
10102
|
+
"type": "boolean",
|
|
10103
|
+
"location": "body",
|
|
10104
|
+
"required": false,
|
|
10105
|
+
"description": "Mostra o botao 'Sim, vou comparecer' na pagina publica. Padrao FALSE. Ligado, use a variavel {{link_confirmar}} na mensagem para entregar o link ao cliente."
|
|
10106
|
+
},
|
|
10107
|
+
{
|
|
10108
|
+
"name": "reschedule_min_notice_hours",
|
|
10109
|
+
"type": "integer",
|
|
10110
|
+
"location": "body",
|
|
10111
|
+
"required": false,
|
|
10112
|
+
"description": "Horas minimas de antecedencia para remarcar. Vazio/zero = sem limite."
|
|
10113
|
+
},
|
|
10114
|
+
{
|
|
10115
|
+
"name": "cancel_min_notice_hours",
|
|
10116
|
+
"type": "integer",
|
|
10117
|
+
"location": "body",
|
|
10118
|
+
"required": false,
|
|
10119
|
+
"description": "Horas minimas de antecedencia para cancelar. Vazio/zero = sem limite."
|
|
10120
|
+
},
|
|
10121
|
+
{
|
|
10122
|
+
"name": "reschedule_max_advance_days",
|
|
10123
|
+
"type": "integer",
|
|
10124
|
+
"location": "body",
|
|
10125
|
+
"required": false,
|
|
10126
|
+
"description": "Ate quantos dias a frente o cliente pode remarcar. Vazio usa o max_advance_days do tipo."
|
|
10127
|
+
},
|
|
10128
|
+
{
|
|
10129
|
+
"name": "max_reschedules",
|
|
10130
|
+
"type": "integer",
|
|
10131
|
+
"location": "body",
|
|
10132
|
+
"required": false,
|
|
10133
|
+
"description": "Quantas vezes o mesmo agendamento pode ser remarcado. Vazio = sem teto."
|
|
10134
|
+
},
|
|
10135
|
+
{
|
|
10136
|
+
"name": "manage_page_message",
|
|
10137
|
+
"type": "string",
|
|
10138
|
+
"location": "body",
|
|
10139
|
+
"required": false,
|
|
10140
|
+
"description": "Texto de abertura da pagina publica. Aceita {{nome}} {{titulo}} {{tipo}} {{agente}} {{data}} {{horario}} {{dia_semana}} {{duracao}} {{telefone}} {{email}} {{link_cancelar}} {{link_remarcar}} {{link_confirmar}}. Variavel desconhecida sai CRUA para o cliente."
|
|
10141
|
+
},
|
|
10142
|
+
{
|
|
10143
|
+
"name": "booking_event_type.sessions_enabled",
|
|
10144
|
+
"type": "boolean",
|
|
10145
|
+
"location": "body",
|
|
10146
|
+
"required": false,
|
|
10147
|
+
"description": "Programa de sessoes: este tipo e UMA sessao de um programa com varias (15/09; tratamento, mentoria, onboarding). Ligado, todo agendamento deste tipo nasce (ou engrossa) um tratamento do contato"
|
|
10148
|
+
},
|
|
10149
|
+
{
|
|
10150
|
+
"name": "booking_event_type.sessions_default_count",
|
|
10151
|
+
"type": "integer",
|
|
10152
|
+
"location": "body",
|
|
10153
|
+
"required": false,
|
|
10154
|
+
"description": "Quantidade padrao de sessoes (2 a 60; obrigatorio com sessions_enabled)"
|
|
10155
|
+
},
|
|
10156
|
+
{
|
|
10157
|
+
"name": "booking_event_type.sessions_interval_value",
|
|
10158
|
+
"type": "integer",
|
|
10159
|
+
"location": "body",
|
|
10160
|
+
"required": false,
|
|
10161
|
+
"description": "Intervalo padrao entre sessoes (1 a 365; obrigatorio com sessions_enabled)"
|
|
10162
|
+
},
|
|
10163
|
+
{
|
|
10164
|
+
"name": "booking_event_type.sessions_interval_unit",
|
|
10165
|
+
"type": "string",
|
|
10166
|
+
"location": "body",
|
|
10167
|
+
"required": false,
|
|
10168
|
+
"description": "Unidade do intervalo: days, weeks ou months (obrigatorio com sessions_enabled)"
|
|
9936
10169
|
}
|
|
9937
10170
|
],
|
|
9938
10171
|
"returns": "tipo de evento criado (com novo ID)",
|
|
@@ -10038,6 +10271,97 @@
|
|
|
10038
10271
|
"location": "body",
|
|
10039
10272
|
"required": false,
|
|
10040
10273
|
"description": "Lembretes do agendamento (o bloco '1d antes do evento' da tela). Array de objetos: {id (obrigatorio para EDITAR o existente — sem id CRIA outro), offset_direction ('before'/'after'), offset_days, offset_hours, offset_minutes, message_body, blocks, active, position, _destroy}. IMPORTANTE: message_body E blocks[0].content precisam do MESMO texto — a tela le blocks e o envio usa message_body; gravar so um deixa a tela e a mensagem entregue diferentes. blocks = [{type:'text', content:'...'}]. Aceita variaveis {{titulo}}, {{data}}, {{horario}} e quebra de linha (\\n)."
|
|
10274
|
+
},
|
|
10275
|
+
{
|
|
10276
|
+
"name": "agenda_id",
|
|
10277
|
+
"type": "integer",
|
|
10278
|
+
"location": "body",
|
|
10279
|
+
"required": false,
|
|
10280
|
+
"description": "AGENDA (unidade) em que o agendamento feito por este Booking vai nascer. NULO = agenda principal, que e o que todo Booking de hoje herda."
|
|
10281
|
+
},
|
|
10282
|
+
{
|
|
10283
|
+
"name": "allow_reschedule",
|
|
10284
|
+
"type": "boolean",
|
|
10285
|
+
"location": "body",
|
|
10286
|
+
"required": false,
|
|
10287
|
+
"description": "O cliente pode remarcar pela pagina publica. Padrao true."
|
|
10288
|
+
},
|
|
10289
|
+
{
|
|
10290
|
+
"name": "allow_cancel",
|
|
10291
|
+
"type": "boolean",
|
|
10292
|
+
"location": "body",
|
|
10293
|
+
"required": false,
|
|
10294
|
+
"description": "O cliente pode cancelar pela pagina publica. Padrao true."
|
|
10295
|
+
},
|
|
10296
|
+
{
|
|
10297
|
+
"name": "ask_attendance_confirmation",
|
|
10298
|
+
"type": "boolean",
|
|
10299
|
+
"location": "body",
|
|
10300
|
+
"required": false,
|
|
10301
|
+
"description": "Mostra o botao 'Sim, vou comparecer' na pagina publica. Padrao FALSE. Ligado, use a variavel {{link_confirmar}} na mensagem para entregar o link ao cliente."
|
|
10302
|
+
},
|
|
10303
|
+
{
|
|
10304
|
+
"name": "reschedule_min_notice_hours",
|
|
10305
|
+
"type": "integer",
|
|
10306
|
+
"location": "body",
|
|
10307
|
+
"required": false,
|
|
10308
|
+
"description": "Horas minimas de antecedencia para remarcar. Vazio/zero = sem limite."
|
|
10309
|
+
},
|
|
10310
|
+
{
|
|
10311
|
+
"name": "cancel_min_notice_hours",
|
|
10312
|
+
"type": "integer",
|
|
10313
|
+
"location": "body",
|
|
10314
|
+
"required": false,
|
|
10315
|
+
"description": "Horas minimas de antecedencia para cancelar. Vazio/zero = sem limite."
|
|
10316
|
+
},
|
|
10317
|
+
{
|
|
10318
|
+
"name": "reschedule_max_advance_days",
|
|
10319
|
+
"type": "integer",
|
|
10320
|
+
"location": "body",
|
|
10321
|
+
"required": false,
|
|
10322
|
+
"description": "Ate quantos dias a frente o cliente pode remarcar. Vazio usa o max_advance_days do tipo."
|
|
10323
|
+
},
|
|
10324
|
+
{
|
|
10325
|
+
"name": "max_reschedules",
|
|
10326
|
+
"type": "integer",
|
|
10327
|
+
"location": "body",
|
|
10328
|
+
"required": false,
|
|
10329
|
+
"description": "Quantas vezes o mesmo agendamento pode ser remarcado. Vazio = sem teto."
|
|
10330
|
+
},
|
|
10331
|
+
{
|
|
10332
|
+
"name": "manage_page_message",
|
|
10333
|
+
"type": "string",
|
|
10334
|
+
"location": "body",
|
|
10335
|
+
"required": false,
|
|
10336
|
+
"description": "Texto de abertura da pagina publica. Aceita {{nome}} {{titulo}} {{tipo}} {{agente}} {{data}} {{horario}} {{dia_semana}} {{duracao}} {{telefone}} {{email}} {{link_cancelar}} {{link_remarcar}} {{link_confirmar}}. Variavel desconhecida sai CRUA para o cliente."
|
|
10337
|
+
},
|
|
10338
|
+
{
|
|
10339
|
+
"name": "booking_event_type.sessions_enabled",
|
|
10340
|
+
"type": "boolean",
|
|
10341
|
+
"location": "body",
|
|
10342
|
+
"required": false,
|
|
10343
|
+
"description": "Programa de sessoes: este tipo e UMA sessao de um programa com varias (15/09; tratamento, mentoria, onboarding). Ligado, todo agendamento deste tipo nasce (ou engrossa) um tratamento do contato"
|
|
10344
|
+
},
|
|
10345
|
+
{
|
|
10346
|
+
"name": "booking_event_type.sessions_default_count",
|
|
10347
|
+
"type": "integer",
|
|
10348
|
+
"location": "body",
|
|
10349
|
+
"required": false,
|
|
10350
|
+
"description": "Quantidade padrao de sessoes (2 a 60; obrigatorio com sessions_enabled)"
|
|
10351
|
+
},
|
|
10352
|
+
{
|
|
10353
|
+
"name": "booking_event_type.sessions_interval_value",
|
|
10354
|
+
"type": "integer",
|
|
10355
|
+
"location": "body",
|
|
10356
|
+
"required": false,
|
|
10357
|
+
"description": "Intervalo padrao entre sessoes (1 a 365; obrigatorio com sessions_enabled)"
|
|
10358
|
+
},
|
|
10359
|
+
{
|
|
10360
|
+
"name": "booking_event_type.sessions_interval_unit",
|
|
10361
|
+
"type": "string",
|
|
10362
|
+
"location": "body",
|
|
10363
|
+
"required": false,
|
|
10364
|
+
"description": "Unidade do intervalo: days, weeks ou months (obrigatorio com sessions_enabled)"
|
|
10041
10365
|
}
|
|
10042
10366
|
],
|
|
10043
10367
|
"returns": "tipo de evento atualizado",
|
|
@@ -10653,23 +10977,86 @@
|
|
|
10653
10977
|
"location": "body",
|
|
10654
10978
|
"required": true,
|
|
10655
10979
|
"description": "update, cancel ou backfill"
|
|
10656
|
-
}
|
|
10657
|
-
|
|
10658
|
-
|
|
10659
|
-
|
|
10660
|
-
|
|
10661
|
-
|
|
10662
|
-
|
|
10663
|
-
|
|
10664
|
-
|
|
10665
|
-
|
|
10666
|
-
|
|
10667
|
-
|
|
10668
|
-
|
|
10669
|
-
|
|
10670
|
-
|
|
10671
|
-
|
|
10672
|
-
|
|
10980
|
+
},
|
|
10981
|
+
{
|
|
10982
|
+
"name": "agenda_id",
|
|
10983
|
+
"type": "integer",
|
|
10984
|
+
"location": "body",
|
|
10985
|
+
"required": false,
|
|
10986
|
+
"description": "AGENDA (unidade) em que o agendamento feito por este Booking vai nascer. NULO = agenda principal, que e o que todo Booking de hoje herda."
|
|
10987
|
+
},
|
|
10988
|
+
{
|
|
10989
|
+
"name": "allow_reschedule",
|
|
10990
|
+
"type": "boolean",
|
|
10991
|
+
"location": "body",
|
|
10992
|
+
"required": false,
|
|
10993
|
+
"description": "O cliente pode remarcar pela pagina publica. Padrao true."
|
|
10994
|
+
},
|
|
10995
|
+
{
|
|
10996
|
+
"name": "allow_cancel",
|
|
10997
|
+
"type": "boolean",
|
|
10998
|
+
"location": "body",
|
|
10999
|
+
"required": false,
|
|
11000
|
+
"description": "O cliente pode cancelar pela pagina publica. Padrao true."
|
|
11001
|
+
},
|
|
11002
|
+
{
|
|
11003
|
+
"name": "ask_attendance_confirmation",
|
|
11004
|
+
"type": "boolean",
|
|
11005
|
+
"location": "body",
|
|
11006
|
+
"required": false,
|
|
11007
|
+
"description": "Mostra o botao 'Sim, vou comparecer' na pagina publica. Padrao FALSE. Ligado, use a variavel {{link_confirmar}} na mensagem para entregar o link ao cliente."
|
|
11008
|
+
},
|
|
11009
|
+
{
|
|
11010
|
+
"name": "reschedule_min_notice_hours",
|
|
11011
|
+
"type": "integer",
|
|
11012
|
+
"location": "body",
|
|
11013
|
+
"required": false,
|
|
11014
|
+
"description": "Horas minimas de antecedencia para remarcar. Vazio/zero = sem limite."
|
|
11015
|
+
},
|
|
11016
|
+
{
|
|
11017
|
+
"name": "cancel_min_notice_hours",
|
|
11018
|
+
"type": "integer",
|
|
11019
|
+
"location": "body",
|
|
11020
|
+
"required": false,
|
|
11021
|
+
"description": "Horas minimas de antecedencia para cancelar. Vazio/zero = sem limite."
|
|
11022
|
+
},
|
|
11023
|
+
{
|
|
11024
|
+
"name": "reschedule_max_advance_days",
|
|
11025
|
+
"type": "integer",
|
|
11026
|
+
"location": "body",
|
|
11027
|
+
"required": false,
|
|
11028
|
+
"description": "Ate quantos dias a frente o cliente pode remarcar. Vazio usa o max_advance_days do tipo."
|
|
11029
|
+
},
|
|
11030
|
+
{
|
|
11031
|
+
"name": "max_reschedules",
|
|
11032
|
+
"type": "integer",
|
|
11033
|
+
"location": "body",
|
|
11034
|
+
"required": false,
|
|
11035
|
+
"description": "Quantas vezes o mesmo agendamento pode ser remarcado. Vazio = sem teto."
|
|
11036
|
+
},
|
|
11037
|
+
{
|
|
11038
|
+
"name": "manage_page_message",
|
|
11039
|
+
"type": "string",
|
|
11040
|
+
"location": "body",
|
|
11041
|
+
"required": false,
|
|
11042
|
+
"description": "Texto de abertura da pagina publica. Aceita {{nome}} {{titulo}} {{tipo}} {{agente}} {{data}} {{horario}} {{dia_semana}} {{duracao}} {{telefone}} {{email}} {{link_cancelar}} {{link_remarcar}} {{link_confirmar}}. Variavel desconhecida sai CRUA para o cliente."
|
|
11043
|
+
}
|
|
11044
|
+
],
|
|
11045
|
+
"returns": "tipo de evento criado (com novo ID)",
|
|
11046
|
+
"common_use_cases": [
|
|
11047
|
+
"Cadastro inicial de tipo de evento",
|
|
11048
|
+
"Automação a partir de evento externo",
|
|
11049
|
+
"Importação manual via API"
|
|
11050
|
+
],
|
|
11051
|
+
"related_tools": [
|
|
11052
|
+
"lionchat_booking_event_types_list",
|
|
11053
|
+
"lionchat_booking_event_types_create",
|
|
11054
|
+
"lionchat_booking_event_types_show"
|
|
11055
|
+
]
|
|
11056
|
+
},
|
|
11057
|
+
{
|
|
11058
|
+
"id": "lionchat_booking_event_types_list_2",
|
|
11059
|
+
"method": "GET",
|
|
10673
11060
|
"path": "/api/v1/accounts/{account_id}/bookings/{id}/follow_ups",
|
|
10674
11061
|
"title": "Follow-ups do Agendamento",
|
|
10675
11062
|
"description": "Lista as mensagens agendadas (follow-ups) de um agendamento.",
|
|
@@ -13550,7 +13937,7 @@
|
|
|
13550
13937
|
"type": "string",
|
|
13551
13938
|
"location": "body",
|
|
13552
13939
|
"required": false,
|
|
13553
|
-
"description": "Descricao"
|
|
13940
|
+
"description": "Descricao CURTA do cargo: uma frase de ate 60 caracteres (ex.: 'Tudo, menos conversas das caixas em que nao foi adicionado.'). NAO repetir as permissoes aqui — a tela ja mostra na coluna Permissoes. Texto longo e cortado com reticencias na lista de Funcoes personalizadas (16/09/2026)."
|
|
13554
13941
|
},
|
|
13555
13942
|
{
|
|
13556
13943
|
"name": "permissions",
|
|
@@ -13606,7 +13993,7 @@
|
|
|
13606
13993
|
"method": "PUT",
|
|
13607
13994
|
"path": "/api/v1/accounts/{account_id}/custom_roles/{id}",
|
|
13608
13995
|
"title": "Atualizar Role",
|
|
13609
|
-
"description": "Atualiza um role personalizado. Atualiza campos do papel personalizado existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: name, permissions.",
|
|
13996
|
+
"description": "Atualiza um role personalizado. Atualiza campos do papel personalizado existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados. Campos suportados: name, description, permissions.",
|
|
13610
13997
|
"category": "Roles Personalizados",
|
|
13611
13998
|
"params": [
|
|
13612
13999
|
{
|
|
@@ -13628,7 +14015,7 @@
|
|
|
13628
14015
|
"type": "string",
|
|
13629
14016
|
"location": "body",
|
|
13630
14017
|
"required": false,
|
|
13631
|
-
"description": "
|
|
14018
|
+
"description": "Descricao CURTA do cargo: uma frase de ate 60 caracteres (ex.: 'Tudo, menos conversas das caixas em que nao foi adicionado.'). NAO repetir as permissoes aqui — a tela ja mostra na coluna Permissoes. Texto longo e cortado com reticencias na lista de Funcoes personalizadas (16/09/2026)."
|
|
13632
14019
|
},
|
|
13633
14020
|
{
|
|
13634
14021
|
"name": "permissions",
|
|
@@ -15211,6 +15598,75 @@
|
|
|
15211
15598
|
"lionchat_inboxes_waha_groups_update"
|
|
15212
15599
|
]
|
|
15213
15600
|
},
|
|
15601
|
+
{
|
|
15602
|
+
"id": "lionchat_inboxes_waha_groups_list_3",
|
|
15603
|
+
"method": "GET",
|
|
15604
|
+
"path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/waha_groups/join_info",
|
|
15605
|
+
"title": "Ver Grupo de um Convite (antes de entrar)",
|
|
15606
|
+
"description": "SO LEITURA: pergunta ao WhatsApp que grupo e um codigo de convite, sem entrar. Use SEMPRE antes de lionchat_inboxes_waha_groups_create_6 para confirmar com a pessoa em qual grupo ela vai entrar. Aceita o codigo cru, o link inteiro (https://chat.whatsapp.com/CODIGO) ou o link no meio de um texto. So funciona em caixa de WhatsApp QR Code (Channel::Waha).",
|
|
15607
|
+
"category": "Grupos WhatsApp",
|
|
15608
|
+
"params": [
|
|
15609
|
+
{
|
|
15610
|
+
"name": "inbox_id",
|
|
15611
|
+
"type": "integer",
|
|
15612
|
+
"location": "path",
|
|
15613
|
+
"required": true,
|
|
15614
|
+
"description": "ID da inbox (precisa ser WhatsApp QR Code)"
|
|
15615
|
+
},
|
|
15616
|
+
{
|
|
15617
|
+
"name": "code",
|
|
15618
|
+
"type": "string",
|
|
15619
|
+
"location": "query",
|
|
15620
|
+
"required": true,
|
|
15621
|
+
"description": "Codigo do convite, o link completo, ou um texto que contenha o link"
|
|
15622
|
+
}
|
|
15623
|
+
],
|
|
15624
|
+
"returns": "{ data: { JID, Name, ParticipantCount, OwnerPN, IsJoinApprovalRequired, Suspended, GroupCreated } } — formato cru do motor, em PascalCase. 422 quando o link nao e de convite de grupo.",
|
|
15625
|
+
"common_use_cases": [
|
|
15626
|
+
"Confirmar o nome e o tamanho do grupo antes de entrar",
|
|
15627
|
+
"Saber se a entrada no grupo precisa de aprovacao de administrador",
|
|
15628
|
+
"Validar um link de convite recebido numa conversa"
|
|
15629
|
+
],
|
|
15630
|
+
"related_tools": [
|
|
15631
|
+
"lionchat_inboxes_waha_groups_list",
|
|
15632
|
+
"lionchat_inboxes_waha_groups_show",
|
|
15633
|
+
"lionchat_inboxes_waha_groups_create_5"
|
|
15634
|
+
]
|
|
15635
|
+
},
|
|
15636
|
+
{
|
|
15637
|
+
"id": "lionchat_inboxes_waha_groups_create_6",
|
|
15638
|
+
"method": "POST",
|
|
15639
|
+
"path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/waha_groups/join",
|
|
15640
|
+
"title": "Entrar no Grupo por Convite",
|
|
15641
|
+
"description": "Faz o numero conectado ENTRAR num grupo WhatsApp usando um codigo de convite, como participante comum. Acao que muda o WhatsApp do cliente: confirme antes com lionchat_inboxes_waha_groups_list_3. Recusa com 422 e reason 'groups_disabled' quando a caixa esta com 'Aceitar grupos' desligado — sem essa chave as mensagens do grupo nunca chegariam ao painel. So funciona em caixa de WhatsApp QR Code (Channel::Waha).",
|
|
15642
|
+
"category": "Grupos WhatsApp",
|
|
15643
|
+
"params": [
|
|
15644
|
+
{
|
|
15645
|
+
"name": "inbox_id",
|
|
15646
|
+
"type": "integer",
|
|
15647
|
+
"location": "path",
|
|
15648
|
+
"required": true,
|
|
15649
|
+
"description": "ID da inbox (precisa ser WhatsApp QR Code)"
|
|
15650
|
+
},
|
|
15651
|
+
{
|
|
15652
|
+
"name": "code",
|
|
15653
|
+
"type": "string",
|
|
15654
|
+
"location": "body",
|
|
15655
|
+
"required": true,
|
|
15656
|
+
"description": "Codigo do convite, o link completo, ou um texto que contenha o link"
|
|
15657
|
+
}
|
|
15658
|
+
],
|
|
15659
|
+
"returns": "{ success: true, data: { id: '...@g.us' } }. 422 com reason 'groups_disabled' se a caixa nao aceita grupos; 422 se o link nao e de convite.",
|
|
15660
|
+
"common_use_cases": [
|
|
15661
|
+
"Entrar num grupo a partir de um convite recebido na conversa",
|
|
15662
|
+
"Entrar num grupo usando um link colado pelo cliente"
|
|
15663
|
+
],
|
|
15664
|
+
"related_tools": [
|
|
15665
|
+
"lionchat_inboxes_waha_groups_list_3",
|
|
15666
|
+
"lionchat_inboxes_waha_groups_list",
|
|
15667
|
+
"lionchat_inboxes_waha_groups_show"
|
|
15668
|
+
]
|
|
15669
|
+
},
|
|
15214
15670
|
{
|
|
15215
15671
|
"id": "lionchat_inboxes_whatsapp_templates_list",
|
|
15216
15672
|
"method": "GET",
|
|
@@ -20520,7 +20976,8 @@
|
|
|
20520
20976
|
"related_tools": [
|
|
20521
20977
|
"lionchat_agent_availability_update",
|
|
20522
20978
|
"lionchat_agent_availability_list_1",
|
|
20523
|
-
"lionchat_agent_availability_list_2"
|
|
20979
|
+
"lionchat_agent_availability_list_2",
|
|
20980
|
+
"lionchat_agent_availability_day"
|
|
20524
20981
|
]
|
|
20525
20982
|
},
|
|
20526
20983
|
{
|
|
@@ -20583,7 +21040,8 @@
|
|
|
20583
21040
|
"related_tools": [
|
|
20584
21041
|
"lionchat_agent_availability_list",
|
|
20585
21042
|
"lionchat_agent_availability_update",
|
|
20586
|
-
"lionchat_agent_availability_list_2"
|
|
21043
|
+
"lionchat_agent_availability_list_2",
|
|
21044
|
+
"lionchat_agent_availability_day"
|
|
20587
21045
|
]
|
|
20588
21046
|
},
|
|
20589
21047
|
{
|
|
@@ -20611,7 +21069,67 @@
|
|
|
20611
21069
|
"related_tools": [
|
|
20612
21070
|
"lionchat_agent_availability_list",
|
|
20613
21071
|
"lionchat_agent_availability_update",
|
|
20614
|
-
"lionchat_agent_availability_list_1"
|
|
21072
|
+
"lionchat_agent_availability_list_1",
|
|
21073
|
+
"lionchat_agent_availability_day"
|
|
21074
|
+
]
|
|
21075
|
+
},
|
|
21076
|
+
{
|
|
21077
|
+
"id": "lionchat_agent_availability_day",
|
|
21078
|
+
"method": "GET",
|
|
21079
|
+
"path": "/api/v1/accounts/{account_id}/agent_availability/day",
|
|
21080
|
+
"title": "Ver Como Esta o Dia (expediente + horarios ocupados)",
|
|
21081
|
+
"description": "Resumo de UM dia de ate 6 pessoas da conta, para escolher horario de um compromisso COMUM sem marcar no escuro: expediente de cada pessoa e os intervalos ja ocupados, tudo em 'HH:MM' do fuso pedido. E o mesmo dado do quadro 'Escolha o dia e veja os horarios' da janela Nova tarefa. PRIVACIDADE: o INTERVALO ocupado de qualquer pessoa da conta vem sempre (e o que permite marcar algo com um colega); `title`/`task_id` so vem para quem ja veria o compromisso no calendario (proprio/responsavel, agenda publica do dono, administrador) — compromisso PRIVADO de outra pessoa nunca vem com titulo (`title_visible: false`). Sem `user_ids` = o proprio usuario do token. Feriados do dia vem em `holidays` (filtrados por `agenda_id` quando informado). Para agendamento por BOOKING nao use esta: os horarios validos sao os de `lionchat_booking_event_types_slots` (respeitam duracao, intervalo e antecedencia do tipo de evento). `date` ausente ou invalida = 400.",
|
|
21082
|
+
"category": "Disponibilidade",
|
|
21083
|
+
"params": [
|
|
21084
|
+
{
|
|
21085
|
+
"name": "date",
|
|
21086
|
+
"type": "string",
|
|
21087
|
+
"location": "query",
|
|
21088
|
+
"required": true,
|
|
21089
|
+
"description": "Dia no formato YYYY-MM-DD"
|
|
21090
|
+
},
|
|
21091
|
+
{
|
|
21092
|
+
"name": "user_ids",
|
|
21093
|
+
"type": "array",
|
|
21094
|
+
"location": "query",
|
|
21095
|
+
"required": false,
|
|
21096
|
+
"query_name": "user_ids[]",
|
|
21097
|
+
"description": "IDs das pessoas (ate 6, so gente DA CONTA). Vazio = o proprio usuario do token"
|
|
21098
|
+
},
|
|
21099
|
+
{
|
|
21100
|
+
"name": "timezone",
|
|
21101
|
+
"type": "string",
|
|
21102
|
+
"location": "query",
|
|
21103
|
+
"required": false,
|
|
21104
|
+
"description": "Fuso IANA em que os horarios devem voltar (ex.: America/Sao_Paulo). Invalido/ausente = fuso da conta"
|
|
21105
|
+
},
|
|
21106
|
+
{
|
|
21107
|
+
"name": "agenda_id",
|
|
21108
|
+
"type": "integer",
|
|
21109
|
+
"location": "query",
|
|
21110
|
+
"required": false,
|
|
21111
|
+
"description": "ID da agenda (unidade) — filtra os feriados por agenda"
|
|
21112
|
+
},
|
|
21113
|
+
{
|
|
21114
|
+
"name": "excluding_task_id",
|
|
21115
|
+
"type": "integer",
|
|
21116
|
+
"location": "query",
|
|
21117
|
+
"required": false,
|
|
21118
|
+
"description": "Ao REMARCAR: ID da propria tarefa, para ela nao contar como horario ocupado"
|
|
21119
|
+
}
|
|
21120
|
+
],
|
|
21121
|
+
"returns": "{ date, timezone, holidays: [{ name, all_day, start, end }], people: [{ user_id, name, color, working_hours: [{ start, end }], busy: [{ start, end, title_visible, title, task_id, readonly }] }] } — horarios em 'HH:MM' no fuso devolvido em `timezone`",
|
|
21122
|
+
"common_use_cases": [
|
|
21123
|
+
"Antes de criar uma tarefa/reuniao, ver se a pessoa esta livre naquele dia e em que horarios",
|
|
21124
|
+
"Achar um horario em que dois ou mais colegas estao livres ao mesmo tempo",
|
|
21125
|
+
"Ao remarcar, conferir o dia novo sem contar a propria tarefa como ocupada (excluding_task_id)"
|
|
21126
|
+
],
|
|
21127
|
+
"related_tools": [
|
|
21128
|
+
"lionchat_agent_availability_list",
|
|
21129
|
+
"lionchat_agent_availability_list_1",
|
|
21130
|
+
"lionchat_agent_availability_list_2",
|
|
21131
|
+
"lionchat_tasks_create",
|
|
21132
|
+
"lionchat_booking_event_types_slots"
|
|
20615
21133
|
]
|
|
20616
21134
|
},
|
|
20617
21135
|
{
|
|
@@ -25145,7 +25663,7 @@
|
|
|
25145
25663
|
"method": "GET",
|
|
25146
25664
|
"path": "/api/v1/accounts/{account_id}/eclinica_integrations/{id}/reminder_history",
|
|
25147
25665
|
"title": "Histórico dos Lembretes e-Clínica",
|
|
25148
|
-
"description": "Lista os disparos de lembrete agendados da integração e-Clínica (novo 23/07) — responde 'o lembrete do paciente X saiu?'. Cada item traz status (pending aguardando | fired enviado | cancelled | skipped pulado + skip_reason | failed falhou + fail_reason), datas (created_at recebido, fire_at agendado, fired_at disparado, data_consulta), flow_name, contact_name, compromisso e unidade. Somente administrador. [2026-07-25] O historico cobre os tres tipos de lembrete: consulta (conta a partir da data da consulta), laboratorio/medicacao (conta a partir da data prevista do laboratorio) e vencimento de cobranca (conta a partir do vencimento). O horario de cada disparo vem da 'Hora do disparo' configurada na linha do lembrete.",
|
|
25666
|
+
"description": "Lista os disparos de lembrete agendados da integração e-Clínica (novo 23/07) — responde 'o lembrete do paciente X saiu?'. Cada item traz status (pending aguardando | fired enviado | cancelled | skipped pulado + skip_reason | failed falhou + fail_reason), datas (created_at recebido, fire_at agendado, fired_at disparado, data_consulta), flow_name, contact_name, compromisso e unidade. Somente administrador. [2026-07-25] O historico cobre os tres tipos de lembrete: consulta (conta a partir da data da consulta), laboratorio/medicacao (conta a partir da data prevista do laboratorio) e vencimento de cobranca (conta a partir do vencimento). O horario de cada disparo vem da 'Hora do disparo' configurada na linha do lembrete. [2026-09-17] Um lembrete por CONSULTA: paciente com duas consultas no mesmo dia (ou duas pessoas no mesmo celular) recebe um lembrete para cada uma, com ~10 minutos entre eles — o que espera a vez aparece como pending com fire_at ja no passado por alguns minutos (normal, nao e erro). fail_reason = fluxo_ainda_em_andamento_com_este_contato: o fluxo do aviso anterior ainda rodava com o contato (tipico de fluxo que aguarda o paciente clicar num botao); pode ser reprocessado. fail_reason = nao_disparou: causa mais comum e contato sem telefone. skip_reason = outra_consulta_no_mesmo_dia so existe em linhas antigas (regra removida em 17/09).",
|
|
25149
25667
|
"category": "Integracoes",
|
|
25150
25668
|
"params": [
|
|
25151
25669
|
{
|
|
@@ -25223,7 +25741,8 @@
|
|
|
25223
25741
|
"common_use_cases": [
|
|
25224
25742
|
"Verificar se o lembrete de consulta de um paciente foi enviado",
|
|
25225
25743
|
"Listar lembretes que falharam para reprocessar",
|
|
25226
|
-
"Auditar os disparos agendados de um período"
|
|
25744
|
+
"Auditar os disparos agendados de um período",
|
|
25745
|
+
"Explicar por que um paciente com duas consultas no mesmo dia recebeu (ou ainda nao recebeu) o segundo lembrete"
|
|
25227
25746
|
],
|
|
25228
25747
|
"related_tools": [
|
|
25229
25748
|
"lionchat_eclinica_integrations_list",
|
|
@@ -25235,7 +25754,7 @@
|
|
|
25235
25754
|
"method": "POST",
|
|
25236
25755
|
"path": "/api/v1/accounts/{account_id}/eclinica_integrations/{id}/reminder_history/{firing_id}/reprocess",
|
|
25237
25756
|
"title": "Reprocessar Lembrete e-Clínica Falhado",
|
|
25238
|
-
"description": "Reprocessa UM lembrete com status failed (novo 23/07): volta para pending e dispara de novo. Só funciona em lembrete FALHADO — status diferente retorna 422; corrida (dois cliques) retorna 409. Somente administrador.",
|
|
25757
|
+
"description": "Reprocessa UM lembrete com status failed (novo 23/07): volta para pending e dispara de novo. Só funciona em lembrete FALHADO — status diferente retorna 422; corrida (dois cliques) retorna 409. Somente administrador. [2026-09-17] Serve tambem para o lembrete que falhou com fail_reason = fluxo_ainda_em_andamento_com_este_contato (o fluxo do aviso anterior ainda estava em andamento): se o paciente ja respondeu o primeiro aviso, o segundo sai; se ainda nao, falha de novo sem enviar mensagem. NAO usar em lembrete pending com horario passado ha poucos minutos — ele esta so esperando a vez e sai sozinho.",
|
|
25239
25758
|
"category": "Integracoes",
|
|
25240
25759
|
"params": [
|
|
25241
25760
|
{
|
|
@@ -25627,6 +26146,20 @@
|
|
|
25627
26146
|
"location": "body",
|
|
25628
26147
|
"required": false,
|
|
25629
26148
|
"description": "Atributos extras (ex: { mark_as_seen: false } no WhatsApp oficial)"
|
|
26149
|
+
},
|
|
26150
|
+
{
|
|
26151
|
+
"name": "out_of_office_enabled",
|
|
26152
|
+
"type": "boolean",
|
|
26153
|
+
"location": "body",
|
|
26154
|
+
"required": false,
|
|
26155
|
+
"description": "Liga/desliga a mensagem de ausencia da caixa (fora do horario de atendimento)"
|
|
26156
|
+
},
|
|
26157
|
+
{
|
|
26158
|
+
"name": "out_of_office_message",
|
|
26159
|
+
"type": "string",
|
|
26160
|
+
"location": "body",
|
|
26161
|
+
"required": false,
|
|
26162
|
+
"description": "Texto da mensagem de ausencia"
|
|
25630
26163
|
}
|
|
25631
26164
|
],
|
|
25632
26165
|
"returns": "{ inbox }",
|
|
@@ -31101,13 +31634,6 @@
|
|
|
31101
31634
|
"required": false,
|
|
31102
31635
|
"description": "Token do webhook da Greenn (valida a assinatura do que chega)"
|
|
31103
31636
|
},
|
|
31104
|
-
{
|
|
31105
|
-
"name": "inbox_id",
|
|
31106
|
-
"type": "integer",
|
|
31107
|
-
"location": "body",
|
|
31108
|
-
"required": false,
|
|
31109
|
-
"description": "Caixa onde a conversa do comprador é aberta"
|
|
31110
|
-
},
|
|
31111
31637
|
{
|
|
31112
31638
|
"name": "active",
|
|
31113
31639
|
"type": "boolean",
|
|
@@ -31195,13 +31721,6 @@
|
|
|
31195
31721
|
"required": false,
|
|
31196
31722
|
"description": "Token do webhook da Greenn (valida a assinatura do que chega)"
|
|
31197
31723
|
},
|
|
31198
|
-
{
|
|
31199
|
-
"name": "inbox_id",
|
|
31200
|
-
"type": "integer",
|
|
31201
|
-
"location": "body",
|
|
31202
|
-
"required": false,
|
|
31203
|
-
"description": "Caixa onde a conversa do comprador é aberta"
|
|
31204
|
-
},
|
|
31205
31724
|
{
|
|
31206
31725
|
"name": "active",
|
|
31207
31726
|
"type": "boolean",
|
|
@@ -32181,7 +32700,7 @@
|
|
|
32181
32700
|
"path": "/api/v2/accounts/{account_id}/booking_reports",
|
|
32182
32701
|
"title": "Relatorio de Agendamentos",
|
|
32183
32702
|
"category": "Relatorios",
|
|
32184
|
-
"description": "[GET] A aba Relatorios > Agendamentos (2026-08-19). Unidade = o AGENDAMENTO (Booking nativo: link publico, IA e Agenda do painel — NAO e e-Clinica). Padrao de periodo: 30 dias pra TRAS e 30 pra FRENTE (agenda tem futuro). A SITUACAO vem da TAREFA da Agenda (account_tasks.status), nao de bookings.status — quem conclui/cancela pela Agenda deixa o booking parado em 'confirmado'; ler bookings direto pra contar concluidos da zero. attendance_rate =
|
|
32703
|
+
"description": "[GET] A aba Relatorios > Agendamentos (2026-08-19). Unidade = o AGENDAMENTO (Booking nativo: link publico, IA e Agenda do painel — NAO e e-Clinica). Padrao de periodo: 30 dias pra TRAS e 30 pra FRENTE (agenda tem futuro). A SITUACAO vem da TAREFA da Agenda (account_tasks.status), nao de bookings.status — quem conclui/cancela pela Agenda deixa o booking parado em 'confirmado'; ler bookings direto pra contar concluidos da zero. attendance_rate (15/09) = attended / (attended + no_show), em %, pelas marcas Compareceu/Faltou; periodo SEM marca nenhuma cai na regra antiga concluidos / (concluidos + cancelados) — pendentes FORA do denominador (ainda nao aconteceram) — e attendance_basis diz qual valeu ('attendance' ou 'status'); nao recalcule com o total. snoozed (adiado) sai separado de pending. [15/09] totals traz tambem attended/no_show (marcas Compareceu/Faltou da tarefa — eixo proprio, NAO mexem no status nem na taxa) e a resposta ganha `treatments` (bloco Programas, refeito 15/09 a noite): o PERIODO since/until VALE; event_type_id recorta; user_id e status NAO. Programas: em_andamento e atrasados (medidos no FIM do periodo), comecaram/concluidos/encerrados (so se a data cair no periodo), sessoes_planejadas/sessoes_usadas/percentual (so dos em andamento). Sessoes do periodo: previstas = marcadas + nao_marcadas (nao_marcadas e PREVISAO), aconteceram, faltaram, taxa. Mais parados {programas, sessoes_restantes}, duracao {programas, dias_reais, dias_previstos}, linha[] {period, previstas, aconteceram, faltaram, aguardando (16/09), nao_marcadas} e por_tipo[] (mesmos campos + tipo). Sem valor em reais. Detalhe em lionchat://docs/reports-guide. Admin ou agente.",
|
|
32185
32704
|
"params": [
|
|
32186
32705
|
{
|
|
32187
32706
|
"name": "since",
|
|
@@ -32226,7 +32745,7 @@
|
|
|
32226
32745
|
"description": "day | week | month (agrupamento da timeline; default day)"
|
|
32227
32746
|
}
|
|
32228
32747
|
],
|
|
32229
|
-
"returns": "{period: {since, until, group_by}, totals: {total, pending, completed, cancelled, snoozed, attendance_rate}, timeline: [{period, count}], by_event_type, by_agent, by_origin}",
|
|
32748
|
+
"returns": "{period: {since, until, group_by}, totals: {total, pending, completed, cancelled, snoozed, attended, no_show, attendance_rate, attendance_basis}, timeline: [{period, count}], by_event_type, by_agent, by_origin, treatments: {em_andamento, atrasados, comecaram, concluidos, encerrados, previstas, marcadas, aconteceram, faltaram, nao_marcadas, taxa, percentual, parados, duracao, linha, por_tipo}}",
|
|
32230
32749
|
"common_use_cases": [
|
|
32231
32750
|
"Quantos agendamentos foram marcados/concluidos/cancelados no mes",
|
|
32232
32751
|
"Taxa de comparecimento por tipo de consulta ou por responsavel",
|
|
@@ -32726,7 +33245,7 @@
|
|
|
32726
33245
|
"type": "object",
|
|
32727
33246
|
"location": "body",
|
|
32728
33247
|
"required": false,
|
|
32729
|
-
"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)
|
|
33248
|
+
"description": "Configuracao do modelo (objeto, MESCLADO no update — mande so o que muda): signers (quantos titulares assinam, 1..), witnesses (testemunhas, 0..), sender_signs (bool: quem envia tambem assina, NO PAINEL), require_id_photo (bool: exige foto do documento na assinatura), validity_days (validade em dias contada do ENVIO; padrao 7; 1..365 — vira {{document.deadline}} no texto). O LEMBRETE NAO E MAIS CAMPO DO MODELO (2026-09-14): o reminder_days e a tarefa diaria das 10h foram REMOVIDOS. Quem lembra e um fluxo do cliente, com o texto e a caixa dele — gatilho signature_delivered (dispara por PESSOA), bloco Esperar em dias e condicao signature_status (person_not_signed + pending, logic and). NUNCA sugerir reminder_days."
|
|
32730
33249
|
}
|
|
32731
33250
|
],
|
|
32732
33251
|
"returns": "o modelo criado (id, name, kind, body, variables, roles_layout, progress)",
|
|
@@ -32788,7 +33307,7 @@
|
|
|
32788
33307
|
"type": "object",
|
|
32789
33308
|
"location": "body",
|
|
32790
33309
|
"required": false,
|
|
32791
|
-
"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)
|
|
33310
|
+
"description": "Configuracao do modelo (objeto, MESCLADO no update — mande so o que muda): signers (quantos titulares assinam, 1..), witnesses (testemunhas, 0..), sender_signs (bool: quem envia tambem assina, NO PAINEL), require_id_photo (bool: exige foto do documento na assinatura), validity_days (validade em dias contada do ENVIO; padrao 7; 1..365 — vira {{document.deadline}} no texto). O LEMBRETE NAO E MAIS CAMPO DO MODELO (2026-09-14): o reminder_days e a tarefa diaria das 10h foram REMOVIDOS. Quem lembra e um fluxo do cliente, com o texto e a caixa dele — gatilho signature_delivered (dispara por PESSOA), bloco Esperar em dias e condicao signature_status (person_not_signed + pending, logic and). NUNCA sugerir reminder_days."
|
|
32792
33311
|
}
|
|
32793
33312
|
],
|
|
32794
33313
|
"returns": "o modelo atualizado",
|
|
@@ -33102,5 +33621,650 @@
|
|
|
33102
33621
|
"related_tools": [
|
|
33103
33622
|
"lionchat_signature_envelopes_create"
|
|
33104
33623
|
]
|
|
33624
|
+
},
|
|
33625
|
+
{
|
|
33626
|
+
"id": "lionchat_agendas_list",
|
|
33627
|
+
"method": "GET",
|
|
33628
|
+
"path": "/api/v1/accounts/{account_id}/agendas",
|
|
33629
|
+
"title": "Listar agendas (unidades)",
|
|
33630
|
+
"description": "Lista as AGENDAS da conta. Uma agenda e um LUGAR — uma unidade, uma filial, um consultorio —, nunca uma pessoa: tem fuso, cor, quem enxerga e conta Google proprios. Devolve so as que o usuario enxerga (admin ve todas). `meta` traz a cota: `liberada` (o recurso 'multiple_agendas' esta ligado na conta), `limite` (nulo = ilimitado), `usadas` e `pode_criar`. SEM o recurso a conta tem UMA agenda; compromissos com agenda_id nulo pertencem a ela. Cada agenda traz `google: { connected, email, state }` — a conta Google ligada a ela e o estado da sincronizacao (healthy / needs_reconnect / needs_calendar_selection / reactivatable; nulos sem conexao). [13/09]",
|
|
33631
|
+
"category": "Agenda / Tarefas",
|
|
33632
|
+
"params": []
|
|
33633
|
+
},
|
|
33634
|
+
{
|
|
33635
|
+
"id": "lionchat_agendas_show",
|
|
33636
|
+
"method": "GET",
|
|
33637
|
+
"path": "/api/v1/accounts/{account_id}/agendas/{id}",
|
|
33638
|
+
"title": "Ver agenda",
|
|
33639
|
+
"description": "Detalhe de uma agenda (unidade): nome, fuso, cor, se e a principal e quem enxerga. Cada agenda traz `google: { connected, email, state }` — a conta Google ligada a ela e o estado da sincronizacao (healthy / needs_reconnect / needs_calendar_selection / reactivatable; nulos sem conexao). [13/09]",
|
|
33640
|
+
"category": "Agenda / Tarefas",
|
|
33641
|
+
"params": [
|
|
33642
|
+
{
|
|
33643
|
+
"name": "id",
|
|
33644
|
+
"type": "integer",
|
|
33645
|
+
"location": "path",
|
|
33646
|
+
"required": true,
|
|
33647
|
+
"description": "ID da agenda"
|
|
33648
|
+
}
|
|
33649
|
+
]
|
|
33650
|
+
},
|
|
33651
|
+
{
|
|
33652
|
+
"id": "lionchat_agendas_create",
|
|
33653
|
+
"method": "POST",
|
|
33654
|
+
"path": "/api/v1/accounts/{account_id}/agendas",
|
|
33655
|
+
"title": "Criar agenda (unidade)",
|
|
33656
|
+
"description": "Cria uma agenda. SO ADMINISTRADOR. Exige o recurso 'multiple_agendas' ligado na conta (Super Admin) e respeita o numero de Extras Manuais — ZERO ali significa ILIMITADO. Sem o recurso, a conta fica com a agenda principal e a criacao e recusada.",
|
|
33657
|
+
"category": "Agenda / Tarefas",
|
|
33658
|
+
"params": [
|
|
33659
|
+
{
|
|
33660
|
+
"name": "name",
|
|
33661
|
+
"type": "string",
|
|
33662
|
+
"location": "body",
|
|
33663
|
+
"required": true,
|
|
33664
|
+
"description": "Nome da unidade (ex.: Matriz, Consultorio Boa Vista). Obrigatorio, unico na conta."
|
|
33665
|
+
},
|
|
33666
|
+
{
|
|
33667
|
+
"name": "timezone",
|
|
33668
|
+
"type": "string",
|
|
33669
|
+
"location": "body",
|
|
33670
|
+
"required": false,
|
|
33671
|
+
"description": "Fuso IANA (ex.: America/Sao_Paulo). VAZIO usa o fuso da conta. E o horario que aparece na tela e que vai escrito para o cliente."
|
|
33672
|
+
},
|
|
33673
|
+
{
|
|
33674
|
+
"name": "color",
|
|
33675
|
+
"type": "string",
|
|
33676
|
+
"location": "body",
|
|
33677
|
+
"required": false,
|
|
33678
|
+
"description": "Cor hex (#RRGGBB). Pinta o compromisso no calendario quando o tipo de Booking e o atendente nao tem cor propria."
|
|
33679
|
+
},
|
|
33680
|
+
{
|
|
33681
|
+
"name": "active",
|
|
33682
|
+
"type": "boolean",
|
|
33683
|
+
"location": "body",
|
|
33684
|
+
"required": false,
|
|
33685
|
+
"description": "Agenda ativa. Padrao true."
|
|
33686
|
+
},
|
|
33687
|
+
{
|
|
33688
|
+
"name": "position",
|
|
33689
|
+
"type": "integer",
|
|
33690
|
+
"location": "body",
|
|
33691
|
+
"required": false,
|
|
33692
|
+
"description": "Ordem na lista."
|
|
33693
|
+
},
|
|
33694
|
+
{
|
|
33695
|
+
"name": "member_user_ids",
|
|
33696
|
+
"type": "array",
|
|
33697
|
+
"location": "body",
|
|
33698
|
+
"required": false,
|
|
33699
|
+
"description": "IDs dos usuarios que enxergam. SUBSTITUI a lista inteira. Vazio em pessoas E equipes = todo mundo da conta enxerga."
|
|
33700
|
+
},
|
|
33701
|
+
{
|
|
33702
|
+
"name": "member_team_ids",
|
|
33703
|
+
"type": "array",
|
|
33704
|
+
"location": "body",
|
|
33705
|
+
"required": false,
|
|
33706
|
+
"description": "IDs das equipes que enxergam. SUBSTITUI a lista inteira. Quem entrar na equipe ganha acesso sozinho."
|
|
33707
|
+
}
|
|
33708
|
+
]
|
|
33709
|
+
},
|
|
33710
|
+
{
|
|
33711
|
+
"id": "lionchat_agendas_update",
|
|
33712
|
+
"method": "PATCH",
|
|
33713
|
+
"path": "/api/v1/accounts/{account_id}/agendas/{id}",
|
|
33714
|
+
"title": "Editar agenda",
|
|
33715
|
+
"description": "Edita a agenda. SO ADMINISTRADOR. `member_user_ids`/`member_team_ids` SUBSTITUEM a lista inteira.",
|
|
33716
|
+
"category": "Agenda / Tarefas",
|
|
33717
|
+
"params": [
|
|
33718
|
+
{
|
|
33719
|
+
"name": "id",
|
|
33720
|
+
"type": "integer",
|
|
33721
|
+
"location": "path",
|
|
33722
|
+
"required": true,
|
|
33723
|
+
"description": "ID da agenda"
|
|
33724
|
+
},
|
|
33725
|
+
{
|
|
33726
|
+
"name": "name",
|
|
33727
|
+
"type": "string",
|
|
33728
|
+
"location": "body",
|
|
33729
|
+
"required": false,
|
|
33730
|
+
"description": "Nome da unidade (ex.: Matriz, Consultorio Boa Vista). Obrigatorio, unico na conta."
|
|
33731
|
+
},
|
|
33732
|
+
{
|
|
33733
|
+
"name": "timezone",
|
|
33734
|
+
"type": "string",
|
|
33735
|
+
"location": "body",
|
|
33736
|
+
"required": false,
|
|
33737
|
+
"description": "Fuso IANA (ex.: America/Sao_Paulo). VAZIO usa o fuso da conta. E o horario que aparece na tela e que vai escrito para o cliente."
|
|
33738
|
+
},
|
|
33739
|
+
{
|
|
33740
|
+
"name": "color",
|
|
33741
|
+
"type": "string",
|
|
33742
|
+
"location": "body",
|
|
33743
|
+
"required": false,
|
|
33744
|
+
"description": "Cor hex (#RRGGBB). Pinta o compromisso no calendario quando o tipo de Booking e o atendente nao tem cor propria."
|
|
33745
|
+
},
|
|
33746
|
+
{
|
|
33747
|
+
"name": "active",
|
|
33748
|
+
"type": "boolean",
|
|
33749
|
+
"location": "body",
|
|
33750
|
+
"required": false,
|
|
33751
|
+
"description": "Agenda ativa. Padrao true."
|
|
33752
|
+
},
|
|
33753
|
+
{
|
|
33754
|
+
"name": "position",
|
|
33755
|
+
"type": "integer",
|
|
33756
|
+
"location": "body",
|
|
33757
|
+
"required": false,
|
|
33758
|
+
"description": "Ordem na lista."
|
|
33759
|
+
},
|
|
33760
|
+
{
|
|
33761
|
+
"name": "member_user_ids",
|
|
33762
|
+
"type": "array",
|
|
33763
|
+
"location": "body",
|
|
33764
|
+
"required": false,
|
|
33765
|
+
"description": "IDs dos usuarios que enxergam. SUBSTITUI a lista inteira. Vazio em pessoas E equipes = todo mundo da conta enxerga."
|
|
33766
|
+
},
|
|
33767
|
+
{
|
|
33768
|
+
"name": "member_team_ids",
|
|
33769
|
+
"type": "array",
|
|
33770
|
+
"location": "body",
|
|
33771
|
+
"required": false,
|
|
33772
|
+
"description": "IDs das equipes que enxergam. SUBSTITUI a lista inteira. Quem entrar na equipe ganha acesso sozinho."
|
|
33773
|
+
}
|
|
33774
|
+
]
|
|
33775
|
+
},
|
|
33776
|
+
{
|
|
33777
|
+
"id": "lionchat_agendas_destroy",
|
|
33778
|
+
"method": "DELETE",
|
|
33779
|
+
"path": "/api/v1/accounts/{account_id}/agendas/{id}",
|
|
33780
|
+
"title": "Excluir agenda",
|
|
33781
|
+
"description": "Exclui a agenda. SO ADMINISTRADOR. A agenda PRINCIPAL nao pode ser excluida. Os compromissos dela NAO sao apagados — ficam sem agenda e passam a aparecer na principal.",
|
|
33782
|
+
"category": "Agenda / Tarefas",
|
|
33783
|
+
"params": [
|
|
33784
|
+
{
|
|
33785
|
+
"name": "id",
|
|
33786
|
+
"type": "integer",
|
|
33787
|
+
"location": "path",
|
|
33788
|
+
"required": true,
|
|
33789
|
+
"description": "ID da agenda"
|
|
33790
|
+
}
|
|
33791
|
+
]
|
|
33792
|
+
},
|
|
33793
|
+
{
|
|
33794
|
+
"id": "lionchat_account_task_types_list",
|
|
33795
|
+
"method": "GET",
|
|
33796
|
+
"path": "/api/v1/accounts/{account_id}/account_task_types",
|
|
33797
|
+
"title": "Listar tipos de compromisso da conta",
|
|
33798
|
+
"description": "Tipos de compromisso CRIADOS PELA EMPRESA, alem dos 7 de fabrica (task, follow_up, call, meeting, video_call, deadline, custom). Cada um tem `key` (o que fica gravado em account_tasks.task_type), `name` (o que aparece na tela) e `icon`. Leitura liberada a todos; criar/editar/excluir e so de administrador.",
|
|
33799
|
+
"category": "Agenda / Tarefas",
|
|
33800
|
+
"params": []
|
|
33801
|
+
},
|
|
33802
|
+
{
|
|
33803
|
+
"id": "lionchat_account_task_types_create",
|
|
33804
|
+
"method": "POST",
|
|
33805
|
+
"path": "/api/v1/accounts/{account_id}/account_task_types",
|
|
33806
|
+
"title": "Criar tipo de compromisso",
|
|
33807
|
+
"description": "Cria um tipo com o nome da empresa (ex.: Consulta, Ondas de Choque, Visita ao imovel). SO ADMINISTRADOR. A `key` e derivada do nome e NUNCA muda depois — renomear troca so o que aparece na tela, o historico fica inteiro. O nome nao pode gerar uma key de fabrica. O tipo fica disponivel na lista Tipo do Booking e no Novo compromisso.",
|
|
33808
|
+
"category": "Agenda / Tarefas",
|
|
33809
|
+
"params": [
|
|
33810
|
+
{
|
|
33811
|
+
"name": "name",
|
|
33812
|
+
"type": "string",
|
|
33813
|
+
"location": "body",
|
|
33814
|
+
"required": true,
|
|
33815
|
+
"description": "Nome do tipo. Obrigatorio, unico na conta, ate 60 caracteres."
|
|
33816
|
+
},
|
|
33817
|
+
{
|
|
33818
|
+
"name": "icon",
|
|
33819
|
+
"type": "string",
|
|
33820
|
+
"location": "body",
|
|
33821
|
+
"required": false,
|
|
33822
|
+
"description": "Icone. LISTA FECHADA — qualquer outro valor e RECUSADO (nome fora da lista vira icone invisivel na tela). Valores: i-lucide-calendar-check, i-lucide-stethoscope, i-lucide-syringe, i-lucide-heart-pulse, i-lucide-smile, i-lucide-sparkles, i-lucide-utensils, i-lucide-dumbbell, i-lucide-home, i-lucide-scale, i-lucide-wrench, i-lucide-graduation-cap"
|
|
33823
|
+
},
|
|
33824
|
+
{
|
|
33825
|
+
"name": "color",
|
|
33826
|
+
"type": "string",
|
|
33827
|
+
"location": "body",
|
|
33828
|
+
"required": false,
|
|
33829
|
+
"description": "Cor hex (#RRGGBB), opcional."
|
|
33830
|
+
},
|
|
33831
|
+
{
|
|
33832
|
+
"name": "active",
|
|
33833
|
+
"type": "boolean",
|
|
33834
|
+
"location": "body",
|
|
33835
|
+
"required": false,
|
|
33836
|
+
"description": "Padrao true."
|
|
33837
|
+
},
|
|
33838
|
+
{
|
|
33839
|
+
"name": "position",
|
|
33840
|
+
"type": "integer",
|
|
33841
|
+
"location": "body",
|
|
33842
|
+
"required": false,
|
|
33843
|
+
"description": "Ordem na lista."
|
|
33844
|
+
}
|
|
33845
|
+
]
|
|
33846
|
+
},
|
|
33847
|
+
{
|
|
33848
|
+
"id": "lionchat_account_task_types_update",
|
|
33849
|
+
"method": "PATCH",
|
|
33850
|
+
"path": "/api/v1/accounts/{account_id}/account_task_types/{id}",
|
|
33851
|
+
"title": "Editar tipo de compromisso",
|
|
33852
|
+
"description": "Edita o tipo. SO ADMINISTRADOR. A `key` e IMUTAVEL: renomear muda so o nome exibido.",
|
|
33853
|
+
"category": "Agenda / Tarefas",
|
|
33854
|
+
"params": [
|
|
33855
|
+
{
|
|
33856
|
+
"name": "id",
|
|
33857
|
+
"type": "integer",
|
|
33858
|
+
"location": "path",
|
|
33859
|
+
"required": true,
|
|
33860
|
+
"description": "ID do tipo"
|
|
33861
|
+
},
|
|
33862
|
+
{
|
|
33863
|
+
"name": "name",
|
|
33864
|
+
"type": "string",
|
|
33865
|
+
"location": "body",
|
|
33866
|
+
"required": false,
|
|
33867
|
+
"description": "Novo nome."
|
|
33868
|
+
},
|
|
33869
|
+
{
|
|
33870
|
+
"name": "icon",
|
|
33871
|
+
"type": "string",
|
|
33872
|
+
"location": "body",
|
|
33873
|
+
"required": false,
|
|
33874
|
+
"description": "Icone (lista fechada): i-lucide-calendar-check, i-lucide-stethoscope, i-lucide-syringe, i-lucide-heart-pulse, i-lucide-smile, i-lucide-sparkles, i-lucide-utensils, i-lucide-dumbbell, i-lucide-home, i-lucide-scale, i-lucide-wrench, i-lucide-graduation-cap"
|
|
33875
|
+
},
|
|
33876
|
+
{
|
|
33877
|
+
"name": "color",
|
|
33878
|
+
"type": "string",
|
|
33879
|
+
"location": "body",
|
|
33880
|
+
"required": false,
|
|
33881
|
+
"description": "Cor hex."
|
|
33882
|
+
},
|
|
33883
|
+
{
|
|
33884
|
+
"name": "active",
|
|
33885
|
+
"type": "boolean",
|
|
33886
|
+
"location": "body",
|
|
33887
|
+
"required": false,
|
|
33888
|
+
"description": "Ativo."
|
|
33889
|
+
},
|
|
33890
|
+
{
|
|
33891
|
+
"name": "position",
|
|
33892
|
+
"type": "integer",
|
|
33893
|
+
"location": "body",
|
|
33894
|
+
"required": false,
|
|
33895
|
+
"description": "Ordem."
|
|
33896
|
+
}
|
|
33897
|
+
]
|
|
33898
|
+
},
|
|
33899
|
+
{
|
|
33900
|
+
"id": "lionchat_account_task_types_destroy",
|
|
33901
|
+
"method": "DELETE",
|
|
33902
|
+
"path": "/api/v1/accounts/{account_id}/account_task_types/{id}",
|
|
33903
|
+
"title": "Excluir tipo de compromisso",
|
|
33904
|
+
"description": "SO ADMINISTRADOR. Tipo EM USO nao e apagado: e DESATIVADO (some das listas de escolha, mas os compromissos antigos continuam com nome e icone). A resposta traz `deactivated: true` nesse caso. So o que nunca foi usado e apagado de vez.",
|
|
33905
|
+
"category": "Agenda / Tarefas",
|
|
33906
|
+
"params": [
|
|
33907
|
+
{
|
|
33908
|
+
"name": "id",
|
|
33909
|
+
"type": "integer",
|
|
33910
|
+
"location": "path",
|
|
33911
|
+
"required": true,
|
|
33912
|
+
"description": "ID do tipo"
|
|
33913
|
+
}
|
|
33914
|
+
]
|
|
33915
|
+
},
|
|
33916
|
+
{
|
|
33917
|
+
"id": "lionchat_agenda_treatments_list",
|
|
33918
|
+
"method": "GET",
|
|
33919
|
+
"path": "/api/v1/accounts/{account_id}/agenda_treatments",
|
|
33920
|
+
"title": "Listar tratamentos em sessoes de um contato",
|
|
33921
|
+
"description": "Programas de sessoes do CONTATO (ficha; na tela o nome e PROGRAMA — pode ser tratamento, mentoria, onboarding): cada um e N sessoes de um tipo de agendamento com `sessions_enabled`. Devolve o RESUMO pronto por tratamento: `planejadas`, `usadas` (compareceu + faltou), `percentual`, `compareceu`, `faltou`, `marcadas`, `concluido`, `cheio` (tudo marcado, nada usado), `atrasado`, `proxima` ({numero, prevista_em}), `intervalo` e `sessoes` (uma linha por sessao: `numero`, `situacao` a_marcar|marcada|compareceu|faltou, `prevista_em`, `data_passou`, `tarefa` {id, title, scheduled_at, status, attendance} ou null, `oculta` quando o compromisso e de agenda/privado que o usuario nao enxerga). Em andamento primeiro, depois concluidos e encerrados. O programa NASCE junto do agendamento (tasks_create no modo booking ou link publico) — nao existe create aqui. Exige a Agenda ligada na conta.",
|
|
33922
|
+
"category": "Agenda / Tarefas",
|
|
33923
|
+
"params": [
|
|
33924
|
+
{
|
|
33925
|
+
"name": "contact_id",
|
|
33926
|
+
"type": "integer",
|
|
33927
|
+
"location": "query",
|
|
33928
|
+
"required": true,
|
|
33929
|
+
"description": "ID do contato (obrigatorio)"
|
|
33930
|
+
}
|
|
33931
|
+
],
|
|
33932
|
+
"returns": "Array de resumos de tratamento (em andamento primeiro).",
|
|
33933
|
+
"common_use_cases": [
|
|
33934
|
+
"Ver quantas sessoes o paciente ja usou e qual e a proxima a marcar",
|
|
33935
|
+
"Descobrir se o tratamento esta atrasado e a data prevista da proxima sessao",
|
|
33936
|
+
"Conferir compareceu/faltou por sessao antes de ligar para o paciente"
|
|
33937
|
+
],
|
|
33938
|
+
"related_tools": [
|
|
33939
|
+
"lionchat_agenda_treatments_show",
|
|
33940
|
+
"lionchat_agenda_treatments_update",
|
|
33941
|
+
"lionchat_tasks_create",
|
|
33942
|
+
"lionchat_booking_event_types_update"
|
|
33943
|
+
]
|
|
33944
|
+
},
|
|
33945
|
+
{
|
|
33946
|
+
"id": "lionchat_agenda_treatments_show",
|
|
33947
|
+
"method": "GET",
|
|
33948
|
+
"path": "/api/v1/accounts/{account_id}/agenda_treatments/{id}",
|
|
33949
|
+
"title": "Ver um tratamento em sessoes",
|
|
33950
|
+
"description": "O resumo de UM programa (mesmo formato da listagem). 404 fora da conta.",
|
|
33951
|
+
"category": "Agenda / Tarefas",
|
|
33952
|
+
"params": [
|
|
33953
|
+
{
|
|
33954
|
+
"name": "id",
|
|
33955
|
+
"type": "integer",
|
|
33956
|
+
"location": "path",
|
|
33957
|
+
"required": true,
|
|
33958
|
+
"description": "ID do tratamento"
|
|
33959
|
+
}
|
|
33960
|
+
],
|
|
33961
|
+
"returns": "Resumo do tratamento.",
|
|
33962
|
+
"common_use_cases": [
|
|
33963
|
+
"Reler o tratamento depois de marcar ou desmarcar uma sessao"
|
|
33964
|
+
],
|
|
33965
|
+
"related_tools": [
|
|
33966
|
+
"lionchat_agenda_treatments_list",
|
|
33967
|
+
"lionchat_agenda_treatments_update"
|
|
33968
|
+
]
|
|
33969
|
+
},
|
|
33970
|
+
{
|
|
33971
|
+
"id": "lionchat_agenda_treatments_update",
|
|
33972
|
+
"method": "PATCH",
|
|
33973
|
+
"path": "/api/v1/accounts/{account_id}/agenda_treatments/{id}",
|
|
33974
|
+
"title": "Ajustar um tratamento em sessoes (quantidade, encerrar, reabrir)",
|
|
33975
|
+
"description": "Muda a quantidade de sessoes (`planned_sessions`, 2..60, NUNCA abaixo da maior sessao ja marcada — 422 'Ha sessoes marcadas alem dessa quantidade') e encerra/reabre (`status`: `closed` grava motivo `manual`; `active` reabre). Reabrir com OUTRO tratamento em andamento do mesmo tipo para o contato e recusado com 422 ('Ja existe um programa em andamento deste tipo para este contato'). Programa encerrado por mesclagem de fichas (`close_reason: mesclagem`) fica so como historico. Qualquer usuario da conta pode ajustar. O ajuste roda sob a MESMA trava do agendamento (conta, contato, tipo).",
|
|
33976
|
+
"category": "Agenda / Tarefas",
|
|
33977
|
+
"params": [
|
|
33978
|
+
{
|
|
33979
|
+
"name": "id",
|
|
33980
|
+
"type": "integer",
|
|
33981
|
+
"location": "path",
|
|
33982
|
+
"required": true,
|
|
33983
|
+
"description": "ID do tratamento"
|
|
33984
|
+
},
|
|
33985
|
+
{
|
|
33986
|
+
"name": "agenda_treatment.planned_sessions",
|
|
33987
|
+
"type": "integer",
|
|
33988
|
+
"location": "body",
|
|
33989
|
+
"required": false,
|
|
33990
|
+
"description": "Quantidade de sessoes (2 a 60; nunca abaixo da maior sessao marcada)"
|
|
33991
|
+
},
|
|
33992
|
+
{
|
|
33993
|
+
"name": "agenda_treatment.status",
|
|
33994
|
+
"type": "string",
|
|
33995
|
+
"location": "body",
|
|
33996
|
+
"required": false,
|
|
33997
|
+
"description": "`closed` para encerrar, `active` para reabrir"
|
|
33998
|
+
}
|
|
33999
|
+
],
|
|
34000
|
+
"returns": "Resumo do tratamento ja atualizado.",
|
|
34001
|
+
"common_use_cases": [
|
|
34002
|
+
"Aumentar de 5 para 8 sessoes o pacote de um paciente",
|
|
34003
|
+
"Encerrar um tratamento abandonado",
|
|
34004
|
+
"Reabrir um tratamento encerrado por engano"
|
|
34005
|
+
],
|
|
34006
|
+
"related_tools": [
|
|
34007
|
+
"lionchat_agenda_treatments_list",
|
|
34008
|
+
"lionchat_agenda_treatments_show"
|
|
34009
|
+
]
|
|
34010
|
+
},
|
|
34011
|
+
{
|
|
34012
|
+
"id": "lionchat_agenda_treatments_plano_sugerido",
|
|
34013
|
+
"method": "GET",
|
|
34014
|
+
"path": "/api/v1/accounts/{account_id}/agenda_treatments/{id}/plano_sugerido",
|
|
34015
|
+
"title": "Programa: sugestao de datas para marcar todas",
|
|
34016
|
+
"category": "Agenda / Tarefas",
|
|
34017
|
+
"description": "[GET] (15/09) O que a tela de conferencia do \"Marcar todas as sessoes\" mostra ANTES de marcar nada. Devolve, por sessao que ainda falta: `numero`, `prevista_em` (a data pela regra do programa), `data`/`slot` sugeridos, `slots` (os horarios livres daquele dia) e `deslocada` (true = o dia previsto nao tinha vaga e a sugestao andou para a frente). Traz tambem `timezone` e `tipo` (dias da semana configurados e janela de antecedencia) para o calendario de vagas acender os dias certos. LEITURA PURA: nada e gravado. 422 quando o programa perdeu o tipo de agendamento. Exige a Agenda ligada na conta.",
|
|
34018
|
+
"params": [
|
|
34019
|
+
{
|
|
34020
|
+
"name": "id",
|
|
34021
|
+
"type": "integer",
|
|
34022
|
+
"location": "path",
|
|
34023
|
+
"required": true,
|
|
34024
|
+
"description": "ID do programa (agenda_treatment)"
|
|
34025
|
+
}
|
|
34026
|
+
],
|
|
34027
|
+
"returns": "{ timezone, tipo: {booking_availabilities, max_advance_days, available_from, available_until, duration_minutes}, sessoes: [{numero, prevista_em, data, slot, slots, deslocada}] }",
|
|
34028
|
+
"common_use_cases": [
|
|
34029
|
+
"Mostrar as datas sugeridas antes de marcar todas as sessoes que faltam",
|
|
34030
|
+
"Saber quais sessoes nao tem vaga na janela de procura (data nula)"
|
|
34031
|
+
],
|
|
34032
|
+
"related_tools": [
|
|
34033
|
+
"lionchat_agenda_treatments_marcar_todas",
|
|
34034
|
+
"lionchat_agenda_treatments_show",
|
|
34035
|
+
"lionchat_booking_event_types_slots"
|
|
34036
|
+
]
|
|
34037
|
+
},
|
|
34038
|
+
{
|
|
34039
|
+
"id": "lionchat_agenda_treatments_marcar_todas",
|
|
34040
|
+
"method": "POST",
|
|
34041
|
+
"path": "/api/v1/accounts/{account_id}/agenda_treatments/{id}/marcar_todas",
|
|
34042
|
+
"title": "Programa: marcar varias sessoes de uma vez",
|
|
34043
|
+
"category": "Agenda / Tarefas",
|
|
34044
|
+
"description": "[POST] (15/09) Marca de uma vez as sessoes confirmadas do programa. Body: `sessoes: [{numero, date, slot}]` — o numero da sessao, o dia (YYYY-MM-DD) e o horario (HH:MM). NAO e transacao unica de proposito: cada sessao e uma reserva DE VERDADE (cria a tarefa, dispara confirmacao, lembrete e Google como qualquer agendamento), entao uma falha no meio NAO desfaz as que ja entraram na agenda — a resposta e 200 com `marcadas` e `falhas: [{numero, erro}]`. ATENCAO: com confirmacao ligada no tipo, o cliente recebe UMA mensagem por sessao. Teto de 60 sessoes por chamada. 422 se o programa estiver encerrado/concluido ou sem tipo de agendamento. Sessao que ja tem compromisso vivo volta em `falhas` ('Essa sessao ja foi marcada').",
|
|
34045
|
+
"params": [
|
|
34046
|
+
{
|
|
34047
|
+
"name": "id",
|
|
34048
|
+
"type": "integer",
|
|
34049
|
+
"location": "path",
|
|
34050
|
+
"required": true,
|
|
34051
|
+
"description": "ID do programa (agenda_treatment)"
|
|
34052
|
+
},
|
|
34053
|
+
{
|
|
34054
|
+
"name": "sessoes",
|
|
34055
|
+
"type": "array",
|
|
34056
|
+
"location": "body",
|
|
34057
|
+
"required": true,
|
|
34058
|
+
"description": "Lista [{numero, date, slot}] — use o `plano_sugerido` para montar"
|
|
34059
|
+
}
|
|
34060
|
+
],
|
|
34061
|
+
"returns": "{ marcadas: [numeros], falhas: [{numero, erro}], tratamento: resumo atualizado }",
|
|
34062
|
+
"common_use_cases": [
|
|
34063
|
+
"Marcar todas as sessoes que faltam num pacote de fisioterapia/mentoria/onboarding",
|
|
34064
|
+
"Reagendar em lote as sessoes que ainda nao aconteceram"
|
|
34065
|
+
],
|
|
34066
|
+
"related_tools": [
|
|
34067
|
+
"lionchat_agenda_treatments_plano_sugerido",
|
|
34068
|
+
"lionchat_tasks_create",
|
|
34069
|
+
"lionchat_agenda_treatments_update"
|
|
34070
|
+
]
|
|
34071
|
+
},
|
|
34072
|
+
{
|
|
34073
|
+
"id": "lionchat_agenda_holidays_list",
|
|
34074
|
+
"method": "GET",
|
|
34075
|
+
"path": "/api/v1/accounts/{account_id}/agenda_holidays",
|
|
34076
|
+
"title": "Listar feriados da agenda",
|
|
34077
|
+
"description": "Feriados cadastrados pela conta (aparecem como faixa na Agenda; NAO bloqueiam horario — decisao do dono 14/09). COM `from`/`to` devolve o periodo pedido (passado inclusive); SEM periodo devolve so os que ainda estao por vir, do mais proximo ao mais distante. Cada item: `id`, `name`, `date`, `start_time`, `end_time`, `all_agendas`, `dia_inteiro`, `agenda_ids`, `agenda_names`. Leitura liberada a todos.",
|
|
34078
|
+
"category": "Agenda / Tarefas",
|
|
34079
|
+
"params": [
|
|
34080
|
+
{
|
|
34081
|
+
"name": "from",
|
|
34082
|
+
"type": "string",
|
|
34083
|
+
"location": "query",
|
|
34084
|
+
"required": false,
|
|
34085
|
+
"description": "Inicio do periodo (YYYY-MM-DD) — junto com `to`"
|
|
34086
|
+
},
|
|
34087
|
+
{
|
|
34088
|
+
"name": "to",
|
|
34089
|
+
"type": "string",
|
|
34090
|
+
"location": "query",
|
|
34091
|
+
"required": false,
|
|
34092
|
+
"description": "Fim do periodo (YYYY-MM-DD) — junto com `from`"
|
|
34093
|
+
}
|
|
34094
|
+
],
|
|
34095
|
+
"returns": "Array de feriados.",
|
|
34096
|
+
"common_use_cases": [
|
|
34097
|
+
"Ver os feriados do mes antes de sugerir horario",
|
|
34098
|
+
"Conferir se um feriado vale para todas as agendas ou so para uma unidade"
|
|
34099
|
+
],
|
|
34100
|
+
"related_tools": [
|
|
34101
|
+
"lionchat_agenda_holidays_create",
|
|
34102
|
+
"lionchat_agenda_holidays_update",
|
|
34103
|
+
"lionchat_agenda_holidays_destroy",
|
|
34104
|
+
"lionchat_agendas_list"
|
|
34105
|
+
]
|
|
34106
|
+
},
|
|
34107
|
+
{
|
|
34108
|
+
"id": "lionchat_agenda_holidays_create",
|
|
34109
|
+
"method": "POST",
|
|
34110
|
+
"path": "/api/v1/accounts/{account_id}/agenda_holidays",
|
|
34111
|
+
"title": "Cadastrar feriado da agenda",
|
|
34112
|
+
"description": "Cria um feriado. SO ADMINISTRADOR. Ou vale para TODAS as agendas (`all_agendas: true`) ou aponta agendas especificas (`agenda_ids`, so ids DESTA conta) — sem uma coisa nem outra e recusado com 422 (feriado que nao vale para ninguem). Sem `start_time`/`end_time` e dia inteiro.",
|
|
34113
|
+
"category": "Agenda / Tarefas",
|
|
34114
|
+
"params": [
|
|
34115
|
+
{
|
|
34116
|
+
"name": "agenda_holiday.name",
|
|
34117
|
+
"type": "string",
|
|
34118
|
+
"location": "body",
|
|
34119
|
+
"required": true,
|
|
34120
|
+
"description": "Nome do feriado"
|
|
34121
|
+
},
|
|
34122
|
+
{
|
|
34123
|
+
"name": "agenda_holiday.date",
|
|
34124
|
+
"type": "string",
|
|
34125
|
+
"location": "body",
|
|
34126
|
+
"required": true,
|
|
34127
|
+
"description": "Data (YYYY-MM-DD)"
|
|
34128
|
+
},
|
|
34129
|
+
{
|
|
34130
|
+
"name": "agenda_holiday.start_time",
|
|
34131
|
+
"type": "string",
|
|
34132
|
+
"location": "body",
|
|
34133
|
+
"required": false,
|
|
34134
|
+
"description": "Hora inicial (HH:MM) — vazio = dia inteiro"
|
|
34135
|
+
},
|
|
34136
|
+
{
|
|
34137
|
+
"name": "agenda_holiday.end_time",
|
|
34138
|
+
"type": "string",
|
|
34139
|
+
"location": "body",
|
|
34140
|
+
"required": false,
|
|
34141
|
+
"description": "Hora final (HH:MM)"
|
|
34142
|
+
},
|
|
34143
|
+
{
|
|
34144
|
+
"name": "agenda_holiday.all_agendas",
|
|
34145
|
+
"type": "boolean",
|
|
34146
|
+
"location": "body",
|
|
34147
|
+
"required": false,
|
|
34148
|
+
"description": "Vale para todas as agendas (unidades) da conta"
|
|
34149
|
+
},
|
|
34150
|
+
{
|
|
34151
|
+
"name": "agenda_holiday.agenda_ids",
|
|
34152
|
+
"type": "array",
|
|
34153
|
+
"location": "body",
|
|
34154
|
+
"required": false,
|
|
34155
|
+
"description": "IDs das agendas em que vale (ignorado com all_agendas)"
|
|
34156
|
+
}
|
|
34157
|
+
],
|
|
34158
|
+
"returns": "Feriado criado (201).",
|
|
34159
|
+
"common_use_cases": [
|
|
34160
|
+
"Cadastrar o feriado municipal so da unidade da filial",
|
|
34161
|
+
"Marcar o recesso de fim de ano para todas as agendas"
|
|
34162
|
+
],
|
|
34163
|
+
"related_tools": [
|
|
34164
|
+
"lionchat_agenda_holidays_list",
|
|
34165
|
+
"lionchat_agenda_holidays_update",
|
|
34166
|
+
"lionchat_agendas_list"
|
|
34167
|
+
]
|
|
34168
|
+
},
|
|
34169
|
+
{
|
|
34170
|
+
"id": "lionchat_agenda_holidays_update",
|
|
34171
|
+
"method": "PATCH",
|
|
34172
|
+
"path": "/api/v1/accounts/{account_id}/agenda_holidays/{id}",
|
|
34173
|
+
"title": "Editar feriado da agenda",
|
|
34174
|
+
"description": "Edita nome, data, horario e alcance (todas as agendas ou lista de agendas). SO ADMINISTRADOR. Mesma regra do create: sem alcance nenhum e recusado com 422.",
|
|
34175
|
+
"category": "Agenda / Tarefas",
|
|
34176
|
+
"params": [
|
|
34177
|
+
{
|
|
34178
|
+
"name": "id",
|
|
34179
|
+
"type": "integer",
|
|
34180
|
+
"location": "path",
|
|
34181
|
+
"required": true,
|
|
34182
|
+
"description": "ID do feriado"
|
|
34183
|
+
},
|
|
34184
|
+
{
|
|
34185
|
+
"name": "agenda_holiday.name",
|
|
34186
|
+
"type": "string",
|
|
34187
|
+
"location": "body",
|
|
34188
|
+
"required": false,
|
|
34189
|
+
"description": "Nome"
|
|
34190
|
+
},
|
|
34191
|
+
{
|
|
34192
|
+
"name": "agenda_holiday.date",
|
|
34193
|
+
"type": "string",
|
|
34194
|
+
"location": "body",
|
|
34195
|
+
"required": false,
|
|
34196
|
+
"description": "Data (YYYY-MM-DD)"
|
|
34197
|
+
},
|
|
34198
|
+
{
|
|
34199
|
+
"name": "agenda_holiday.start_time",
|
|
34200
|
+
"type": "string",
|
|
34201
|
+
"location": "body",
|
|
34202
|
+
"required": false,
|
|
34203
|
+
"description": "Hora inicial (HH:MM)"
|
|
34204
|
+
},
|
|
34205
|
+
{
|
|
34206
|
+
"name": "agenda_holiday.end_time",
|
|
34207
|
+
"type": "string",
|
|
34208
|
+
"location": "body",
|
|
34209
|
+
"required": false,
|
|
34210
|
+
"description": "Hora final (HH:MM)"
|
|
34211
|
+
},
|
|
34212
|
+
{
|
|
34213
|
+
"name": "agenda_holiday.all_agendas",
|
|
34214
|
+
"type": "boolean",
|
|
34215
|
+
"location": "body",
|
|
34216
|
+
"required": false,
|
|
34217
|
+
"description": "Vale para todas as agendas"
|
|
34218
|
+
},
|
|
34219
|
+
{
|
|
34220
|
+
"name": "agenda_holiday.agenda_ids",
|
|
34221
|
+
"type": "array",
|
|
34222
|
+
"location": "body",
|
|
34223
|
+
"required": false,
|
|
34224
|
+
"description": "IDs das agendas em que vale"
|
|
34225
|
+
}
|
|
34226
|
+
],
|
|
34227
|
+
"returns": "Feriado atualizado.",
|
|
34228
|
+
"common_use_cases": [
|
|
34229
|
+
"Trocar a data de um feriado cadastrado errado",
|
|
34230
|
+
"Estender um feriado da matriz para todas as unidades"
|
|
34231
|
+
],
|
|
34232
|
+
"related_tools": [
|
|
34233
|
+
"lionchat_agenda_holidays_list",
|
|
34234
|
+
"lionchat_agenda_holidays_create"
|
|
34235
|
+
]
|
|
34236
|
+
},
|
|
34237
|
+
{
|
|
34238
|
+
"id": "lionchat_agenda_holidays_destroy",
|
|
34239
|
+
"method": "DELETE",
|
|
34240
|
+
"path": "/api/v1/accounts/{account_id}/agenda_holidays/{id}",
|
|
34241
|
+
"title": "Excluir feriado da agenda",
|
|
34242
|
+
"description": "Apaga o feriado. SO ADMINISTRADOR.",
|
|
34243
|
+
"category": "Agenda / Tarefas",
|
|
34244
|
+
"params": [
|
|
34245
|
+
{
|
|
34246
|
+
"name": "id",
|
|
34247
|
+
"type": "integer",
|
|
34248
|
+
"location": "path",
|
|
34249
|
+
"required": true,
|
|
34250
|
+
"description": "ID do feriado"
|
|
34251
|
+
}
|
|
34252
|
+
],
|
|
34253
|
+
"returns": "200 sem corpo.",
|
|
34254
|
+
"common_use_cases": [
|
|
34255
|
+
"Remover um feriado cadastrado por engano"
|
|
34256
|
+
],
|
|
34257
|
+
"related_tools": [
|
|
34258
|
+
"lionchat_agenda_holidays_list"
|
|
34259
|
+
]
|
|
34260
|
+
},
|
|
34261
|
+
{
|
|
34262
|
+
"id": "lionchat_google_calendar_agendas",
|
|
34263
|
+
"method": "GET",
|
|
34264
|
+
"path": "/api/v1/accounts/{account_id}/google_calendar/agendas",
|
|
34265
|
+
"title": "Google Calendar por agenda (unidade)",
|
|
34266
|
+
"description": "Uma linha por AGENDA com o estado do Google de cada uma: `connected`, `state`, `calendar_id`, `connected_by`. A conexao Google e UMA POR AGENDA — cada unidade liga a conta Google dela, inclusive a mesma pessoa com contas diferentes. SO ADMINISTRADOR. Conta sem agendas devolve uma linha com agenda_id nulo (a principal).",
|
|
34267
|
+
"category": "Integracoes / Google Calendar",
|
|
34268
|
+
"params": []
|
|
33105
34269
|
}
|
|
33106
34270
|
]
|