termo_core 0.1.16 → 0.1.18
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/flow/rotas.d.ts +5 -3
- package/dist/flow/rotas.js +3 -3
- package/dist/flow/tipos.d.ts +0 -3
- package/dist/miro/rotas.d.ts +1 -1
- package/dist/miro/rotas.js +1 -1
- package/dist/portal/rotas.d.ts +142 -0
- package/dist/portal/rotas.js +201 -0
- package/dist/portal/tipos.d.ts +91 -0
- package/dist/support/rotas.d.ts +16 -0
- package/dist/support/rotas.js +34 -0
- package/dist/support/tipos.d.ts +39 -0
- package/package.json +1 -1
package/dist/flow/rotas.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ import { type OpcoesDaChamada } from "../base/requisicao.js";
|
|
|
7
7
|
export interface ParametrosDeBuscarPaginadorRobo {
|
|
8
8
|
pagina?: number;
|
|
9
9
|
tamanho?: number;
|
|
10
|
+
busca?: string;
|
|
11
|
+
ativo?: boolean;
|
|
10
12
|
}
|
|
11
13
|
/**
|
|
12
14
|
* Parâmetros de consulta e de cabeçalho de `/robo/autocomplete`.
|
|
@@ -27,7 +29,7 @@ export interface ParametrosDeBuscarPeloFiltroRobo {
|
|
|
27
29
|
/**
|
|
28
30
|
* Lista os robôs com paginação
|
|
29
31
|
*
|
|
30
|
-
* Exige qualquer permissão da área `robos`, `whatsapp` ou `chatwoot` (qualquer ação liberada na área já libera a leitura). Ordena por nome. `pagina` começa em 1 (padrão 1; valores menores viram 1). A página tem sempre 50 itens: `tamanho` é aceito, mas ignorado. `total` conta
|
|
32
|
+
* Exige qualquer permissão da área `robos`, `whatsapp` ou `chatwoot` (qualquer ação liberada na área já libera a leitura). Ordena por nome. `pagina` começa em 1 (padrão 1; valores menores viram 1). A página tem sempre 50 itens: `tamanho` é aceito, mas ignorado. `busca` (opcional) procura no nome, na descrição e no modelo; `ativo` (opcional) traz só os ativos ou só os inativos. `total` conta os robôs não excluídos que casam com a busca.
|
|
31
33
|
*
|
|
32
34
|
* `GET /robo`
|
|
33
35
|
*/
|
|
@@ -35,7 +37,7 @@ export declare function buscar_paginador_robo(credencial_de_acesso: CredencialDe
|
|
|
35
37
|
/**
|
|
36
38
|
* Cadastra um robô de atendimento
|
|
37
39
|
*
|
|
38
|
-
* Exige a permissão `criar` da área `robos`. `nome` é obrigatório (até 80 caracteres, único entre os robôs); `modelo` é a IA preferida do gateway do TermoAI, um `provedor` de `GET /robo/modelos` (opcional, até 80; vazio deixa o TermoAI escolher); `descricao` vai até 200 e `prompt_base` até 4000 (padrão vazio). Sem `fluxo`, o robô nasce só com a etapa de início. O robô nasce ativo, na versão 1. `fluxo` é o caminho do atendimento: `nos` (até 40 etapas, exatamente uma do tipo `inicio`; os outros tipos são `inicio_contato_novo`, `instrucao`, `mensagem`, `botoes`, `atendimento`, `vendedor` e `gatilho`) e `ligacoes` (`origem`, `destino` e `origem_saida`, que é o id do botão ou da regra de onde a ligação sai, `null` no início e na mensagem). Cada etapa fora o início precisa de `nome` (até 60 caracteres); `objetivo` vai até 200, `instrucao` até 2000 e `mensagem` até 1000; `ferramentas` lista até 20 ids de ferramentas do robô. A `instrucao` precisa de 1 a 10 `regras` de saída (`condicao` até 200 caracteres); `botoes` precisa de 1 a 10 botões (`rotulo` até 20 caracteres) e de texto fixo em `mensagem` ou, com `mensagem_por_ia`, da `instrucao` para a IA escrever; `mensagem` também exige texto fixo ou `mensagem_por_ia`; `atendimento` encerra o robô, passa a conversa para a equipe do Chatwoot em `equipe_id` (opcional, de `GET /robo/equipes`) e, se vier `vendedor_id` (opcional, de `GET /robo/vendedores?equipe_id=`), para esse vendedor da equipe, e não tem saída; `vendedor` encerra o robô do mesmo jeito, mas passa a conversa só para o vendedor do Chatwoot em `vendedor_id` (obrigatório, de `GET /robo/vendedores`), sem equipe; `gatilho` (no máximo um, sem ligação de entrada nem de saída) é o gatilho de cliente sem resposta: `minutos_sem_resposta` (1 a 1440), `equipe_id` e `vendedor_id` opcionais (um, os dois ou nenhum), e uma varredura a cada minuto passa para essa equipe e esse vendedor toda conversa com o robô em que o cliente ficou esse tempo sem responder. Ids de etapas, botões e regras são únicos; nenhuma ligação volta ao início nem liga a etapa nela mesma, e cada saída tem no máximo uma próxima etapa. `inicio_contato_novo` (no máximo um, sem ligação de entrada) é o início de quem não está na lista de clientes:
|
|
40
|
+
* Exige a permissão `criar` da área `robos`. `nome` é obrigatório (até 80 caracteres, único entre os robôs); `modelo` é a IA preferida do gateway do TermoAI, um `provedor` de `GET /robo/modelos` (opcional, até 80; vazio deixa o TermoAI escolher); `descricao` vai até 200 e `prompt_base` até 4000 (padrão vazio). Sem `fluxo`, o robô nasce só com a etapa de início. O robô nasce ativo, na versão 1. `fluxo` é o caminho do atendimento: `nos` (até 40 etapas, exatamente uma do tipo `inicio`; os outros tipos são `inicio_contato_novo`, `instrucao`, `mensagem`, `botoes`, `atendimento`, `vendedor` e `gatilho`) e `ligacoes` (`origem`, `destino` e `origem_saida`, que é o id do botão ou da regra de onde a ligação sai, `null` no início e na mensagem). Cada etapa fora o início precisa de `nome` (até 60 caracteres); `objetivo` vai até 200, `instrucao` até 2000 e `mensagem` até 1000; `ferramentas` lista até 20 ids de ferramentas do robô. A `instrucao` precisa de 1 a 10 `regras` de saída (`condicao` até 200 caracteres); `botoes` precisa de 1 a 10 botões (`rotulo` até 20 caracteres) e de texto fixo em `mensagem` ou, com `mensagem_por_ia`, da `instrucao` para a IA escrever; `mensagem` também exige texto fixo ou `mensagem_por_ia`; `atendimento` encerra o robô, passa a conversa para a equipe do Chatwoot em `equipe_id` (opcional, de `GET /robo/equipes`) e, se vier `vendedor_id` (opcional, de `GET /robo/vendedores?equipe_id=`), para esse vendedor da equipe, e não tem saída; `vendedor` encerra o robô do mesmo jeito, mas passa a conversa só para o vendedor do Chatwoot em `vendedor_id` (obrigatório, de `GET /robo/vendedores`), sem equipe; `gatilho` (no máximo um, sem ligação de entrada nem de saída) é o gatilho de cliente sem resposta: `minutos_sem_resposta` (1 a 1440), `equipe_id` e `vendedor_id` opcionais (um, os dois ou nenhum), e uma varredura a cada minuto passa para essa equipe e esse vendedor toda conversa com o robô em que o cliente ficou esse tempo sem responder. Ids de etapas, botões e regras são únicos; nenhuma ligação volta ao início nem liga a etapa nela mesma, e cada saída tem no máximo uma próxima etapa. `inicio_contato_novo` (no máximo um, sem ligação de entrada) é o início de quem não está na lista de clientes: com ele no fluxo o robô atende contatos novos (sem ele, o contato novo vai para a equipe) e, sem ligação, o contato novo sai pelo `inicio`. O texto fixo aceita marcadores como `{{cliente.nome}}` e `{{ultimo_pedido.itens}}`.
|
|
39
41
|
*
|
|
40
42
|
* `POST /robo`
|
|
41
43
|
*/
|
|
@@ -67,7 +69,7 @@ export declare function buscar_pelo_id_robo(credencial_de_acesso: CredencialDeAc
|
|
|
67
69
|
/**
|
|
68
70
|
* Atualiza um robô pelo id
|
|
69
71
|
*
|
|
70
|
-
* Exige a permissão `editar` da área `robos`. Atualização parcial: só os campos enviados mudam, com os mesmos limites do cadastro; `descricao` vazia apaga o valor `ativo` liga ou desliga o
|
|
72
|
+
* Exige a permissão `editar` da área `robos`. Atualização parcial: só os campos enviados mudam, com os mesmos limites do cadastro; `descricao` vazia apaga o valor `ativo` liga ou desliga o robô. `fluxo`, quando enviado, substitui o fluxo inteiro. Enviar `prompt_base` ou `fluxo` sobe a `versao` em 1. `fluxo` é o caminho do atendimento: `nos` (até 40 etapas, exatamente uma do tipo `inicio`; os outros tipos são `inicio_contato_novo`, `instrucao`, `mensagem`, `botoes`, `atendimento`, `vendedor` e `gatilho`) e `ligacoes` (`origem`, `destino` e `origem_saida`, que é o id do botão ou da regra de onde a ligação sai, `null` no início e na mensagem). Cada etapa fora o início precisa de `nome` (até 60 caracteres); `objetivo` vai até 200, `instrucao` até 2000 e `mensagem` até 1000; `ferramentas` lista até 20 ids de ferramentas do robô. A `instrucao` precisa de 1 a 10 `regras` de saída (`condicao` até 200 caracteres); `botoes` precisa de 1 a 10 botões (`rotulo` até 20 caracteres) e de texto fixo em `mensagem` ou, com `mensagem_por_ia`, da `instrucao` para a IA escrever; `mensagem` também exige texto fixo ou `mensagem_por_ia`; `atendimento` encerra o robô, passa a conversa para a equipe do Chatwoot em `equipe_id` (opcional, de `GET /robo/equipes`) e, se vier `vendedor_id` (opcional, de `GET /robo/vendedores?equipe_id=`), para esse vendedor da equipe, e não tem saída; `vendedor` encerra o robô do mesmo jeito, mas passa a conversa só para o vendedor do Chatwoot em `vendedor_id` (obrigatório, de `GET /robo/vendedores`), sem equipe; `gatilho` (no máximo um, sem ligação de entrada nem de saída) é o gatilho de cliente sem resposta: `minutos_sem_resposta` (1 a 1440), `equipe_id` e `vendedor_id` opcionais (um, os dois ou nenhum), e uma varredura a cada minuto passa para essa equipe e esse vendedor toda conversa com o robô em que o cliente ficou esse tempo sem responder. Ids de etapas, botões e regras são únicos; nenhuma ligação volta ao início nem liga a etapa nela mesma, e cada saída tem no máximo uma próxima etapa. `inicio_contato_novo` (no máximo um, sem ligação de entrada) é o início de quem não está na lista de clientes: com ele no fluxo o robô atende contatos novos (sem ele, o contato novo vai para a equipe) e, sem ligação, o contato novo sai pelo `inicio`. O texto fixo aceita marcadores como `{{cliente.nome}}` e `{{ultimo_pedido.itens}}`.
|
|
71
73
|
*
|
|
72
74
|
* `PATCH /robo/{id}`
|
|
73
75
|
*/
|
package/dist/flow/rotas.js
CHANGED
|
@@ -4,7 +4,7 @@ import { TERMO_FLOW as SERVICO_DESTA_API } from "../base/servicos.js";
|
|
|
4
4
|
/**
|
|
5
5
|
* Lista os robôs com paginação
|
|
6
6
|
*
|
|
7
|
-
* Exige qualquer permissão da área `robos`, `whatsapp` ou `chatwoot` (qualquer ação liberada na área já libera a leitura). Ordena por nome. `pagina` começa em 1 (padrão 1; valores menores viram 1). A página tem sempre 50 itens: `tamanho` é aceito, mas ignorado. `total` conta
|
|
7
|
+
* Exige qualquer permissão da área `robos`, `whatsapp` ou `chatwoot` (qualquer ação liberada na área já libera a leitura). Ordena por nome. `pagina` começa em 1 (padrão 1; valores menores viram 1). A página tem sempre 50 itens: `tamanho` é aceito, mas ignorado. `busca` (opcional) procura no nome, na descrição e no modelo; `ativo` (opcional) traz só os ativos ou só os inativos. `total` conta os robôs não excluídos que casam com a busca.
|
|
8
8
|
*
|
|
9
9
|
* `GET /robo`
|
|
10
10
|
*/
|
|
@@ -21,7 +21,7 @@ export function buscar_paginador_robo(credencial_de_acesso, parametros = {}, opc
|
|
|
21
21
|
/**
|
|
22
22
|
* Cadastra um robô de atendimento
|
|
23
23
|
*
|
|
24
|
-
* Exige a permissão `criar` da área `robos`. `nome` é obrigatório (até 80 caracteres, único entre os robôs); `modelo` é a IA preferida do gateway do TermoAI, um `provedor` de `GET /robo/modelos` (opcional, até 80; vazio deixa o TermoAI escolher); `descricao` vai até 200 e `prompt_base` até 4000 (padrão vazio). Sem `fluxo`, o robô nasce só com a etapa de início. O robô nasce ativo, na versão 1. `fluxo` é o caminho do atendimento: `nos` (até 40 etapas, exatamente uma do tipo `inicio`; os outros tipos são `inicio_contato_novo`, `instrucao`, `mensagem`, `botoes`, `atendimento`, `vendedor` e `gatilho`) e `ligacoes` (`origem`, `destino` e `origem_saida`, que é o id do botão ou da regra de onde a ligação sai, `null` no início e na mensagem). Cada etapa fora o início precisa de `nome` (até 60 caracteres); `objetivo` vai até 200, `instrucao` até 2000 e `mensagem` até 1000; `ferramentas` lista até 20 ids de ferramentas do robô. A `instrucao` precisa de 1 a 10 `regras` de saída (`condicao` até 200 caracteres); `botoes` precisa de 1 a 10 botões (`rotulo` até 20 caracteres) e de texto fixo em `mensagem` ou, com `mensagem_por_ia`, da `instrucao` para a IA escrever; `mensagem` também exige texto fixo ou `mensagem_por_ia`; `atendimento` encerra o robô, passa a conversa para a equipe do Chatwoot em `equipe_id` (opcional, de `GET /robo/equipes`) e, se vier `vendedor_id` (opcional, de `GET /robo/vendedores?equipe_id=`), para esse vendedor da equipe, e não tem saída; `vendedor` encerra o robô do mesmo jeito, mas passa a conversa só para o vendedor do Chatwoot em `vendedor_id` (obrigatório, de `GET /robo/vendedores`), sem equipe; `gatilho` (no máximo um, sem ligação de entrada nem de saída) é o gatilho de cliente sem resposta: `minutos_sem_resposta` (1 a 1440), `equipe_id` e `vendedor_id` opcionais (um, os dois ou nenhum), e uma varredura a cada minuto passa para essa equipe e esse vendedor toda conversa com o robô em que o cliente ficou esse tempo sem responder. Ids de etapas, botões e regras são únicos; nenhuma ligação volta ao início nem liga a etapa nela mesma, e cada saída tem no máximo uma próxima etapa. `inicio_contato_novo` (no máximo um, sem ligação de entrada) é o início de quem não está na lista de clientes:
|
|
24
|
+
* Exige a permissão `criar` da área `robos`. `nome` é obrigatório (até 80 caracteres, único entre os robôs); `modelo` é a IA preferida do gateway do TermoAI, um `provedor` de `GET /robo/modelos` (opcional, até 80; vazio deixa o TermoAI escolher); `descricao` vai até 200 e `prompt_base` até 4000 (padrão vazio). Sem `fluxo`, o robô nasce só com a etapa de início. O robô nasce ativo, na versão 1. `fluxo` é o caminho do atendimento: `nos` (até 40 etapas, exatamente uma do tipo `inicio`; os outros tipos são `inicio_contato_novo`, `instrucao`, `mensagem`, `botoes`, `atendimento`, `vendedor` e `gatilho`) e `ligacoes` (`origem`, `destino` e `origem_saida`, que é o id do botão ou da regra de onde a ligação sai, `null` no início e na mensagem). Cada etapa fora o início precisa de `nome` (até 60 caracteres); `objetivo` vai até 200, `instrucao` até 2000 e `mensagem` até 1000; `ferramentas` lista até 20 ids de ferramentas do robô. A `instrucao` precisa de 1 a 10 `regras` de saída (`condicao` até 200 caracteres); `botoes` precisa de 1 a 10 botões (`rotulo` até 20 caracteres) e de texto fixo em `mensagem` ou, com `mensagem_por_ia`, da `instrucao` para a IA escrever; `mensagem` também exige texto fixo ou `mensagem_por_ia`; `atendimento` encerra o robô, passa a conversa para a equipe do Chatwoot em `equipe_id` (opcional, de `GET /robo/equipes`) e, se vier `vendedor_id` (opcional, de `GET /robo/vendedores?equipe_id=`), para esse vendedor da equipe, e não tem saída; `vendedor` encerra o robô do mesmo jeito, mas passa a conversa só para o vendedor do Chatwoot em `vendedor_id` (obrigatório, de `GET /robo/vendedores`), sem equipe; `gatilho` (no máximo um, sem ligação de entrada nem de saída) é o gatilho de cliente sem resposta: `minutos_sem_resposta` (1 a 1440), `equipe_id` e `vendedor_id` opcionais (um, os dois ou nenhum), e uma varredura a cada minuto passa para essa equipe e esse vendedor toda conversa com o robô em que o cliente ficou esse tempo sem responder. Ids de etapas, botões e regras são únicos; nenhuma ligação volta ao início nem liga a etapa nela mesma, e cada saída tem no máximo uma próxima etapa. `inicio_contato_novo` (no máximo um, sem ligação de entrada) é o início de quem não está na lista de clientes: com ele no fluxo o robô atende contatos novos (sem ele, o contato novo vai para a equipe) e, sem ligação, o contato novo sai pelo `inicio`. O texto fixo aceita marcadores como `{{cliente.nome}}` e `{{ultimo_pedido.itens}}`.
|
|
25
25
|
*
|
|
26
26
|
* `POST /robo`
|
|
27
27
|
*/
|
|
@@ -88,7 +88,7 @@ export function buscar_pelo_id_robo(credencial_de_acesso, id, opcoes_da_chamada)
|
|
|
88
88
|
/**
|
|
89
89
|
* Atualiza um robô pelo id
|
|
90
90
|
*
|
|
91
|
-
* Exige a permissão `editar` da área `robos`. Atualização parcial: só os campos enviados mudam, com os mesmos limites do cadastro; `descricao` vazia apaga o valor `ativo` liga ou desliga o
|
|
91
|
+
* Exige a permissão `editar` da área `robos`. Atualização parcial: só os campos enviados mudam, com os mesmos limites do cadastro; `descricao` vazia apaga o valor `ativo` liga ou desliga o robô. `fluxo`, quando enviado, substitui o fluxo inteiro. Enviar `prompt_base` ou `fluxo` sobe a `versao` em 1. `fluxo` é o caminho do atendimento: `nos` (até 40 etapas, exatamente uma do tipo `inicio`; os outros tipos são `inicio_contato_novo`, `instrucao`, `mensagem`, `botoes`, `atendimento`, `vendedor` e `gatilho`) e `ligacoes` (`origem`, `destino` e `origem_saida`, que é o id do botão ou da regra de onde a ligação sai, `null` no início e na mensagem). Cada etapa fora o início precisa de `nome` (até 60 caracteres); `objetivo` vai até 200, `instrucao` até 2000 e `mensagem` até 1000; `ferramentas` lista até 20 ids de ferramentas do robô. A `instrucao` precisa de 1 a 10 `regras` de saída (`condicao` até 200 caracteres); `botoes` precisa de 1 a 10 botões (`rotulo` até 20 caracteres) e de texto fixo em `mensagem` ou, com `mensagem_por_ia`, da `instrucao` para a IA escrever; `mensagem` também exige texto fixo ou `mensagem_por_ia`; `atendimento` encerra o robô, passa a conversa para a equipe do Chatwoot em `equipe_id` (opcional, de `GET /robo/equipes`) e, se vier `vendedor_id` (opcional, de `GET /robo/vendedores?equipe_id=`), para esse vendedor da equipe, e não tem saída; `vendedor` encerra o robô do mesmo jeito, mas passa a conversa só para o vendedor do Chatwoot em `vendedor_id` (obrigatório, de `GET /robo/vendedores`), sem equipe; `gatilho` (no máximo um, sem ligação de entrada nem de saída) é o gatilho de cliente sem resposta: `minutos_sem_resposta` (1 a 1440), `equipe_id` e `vendedor_id` opcionais (um, os dois ou nenhum), e uma varredura a cada minuto passa para essa equipe e esse vendedor toda conversa com o robô em que o cliente ficou esse tempo sem responder. Ids de etapas, botões e regras são únicos; nenhuma ligação volta ao início nem liga a etapa nela mesma, e cada saída tem no máximo uma próxima etapa. `inicio_contato_novo` (no máximo um, sem ligação de entrada) é o início de quem não está na lista de clientes: com ele no fluxo o robô atende contatos novos (sem ele, o contato novo vai para a equipe) e, sem ligação, o contato novo sai pelo `inicio`. O texto fixo aceita marcadores como `{{cliente.nome}}` e `{{ultimo_pedido.itens}}`.
|
|
92
92
|
*
|
|
93
93
|
* `PATCH /robo/{id}`
|
|
94
94
|
*/
|
package/dist/flow/tipos.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ export interface PaginaDeRoboAutoComplete {
|
|
|
5
5
|
total: number;
|
|
6
6
|
}
|
|
7
7
|
export interface PaginaRoboItensItem {
|
|
8
|
-
atender_contatos_novos: boolean;
|
|
9
8
|
ativo: boolean;
|
|
10
9
|
atualizado_em: string;
|
|
11
10
|
criado_em: string;
|
|
@@ -27,7 +26,6 @@ export interface RespostaDeErro {
|
|
|
27
26
|
erro: string;
|
|
28
27
|
}
|
|
29
28
|
export interface Robo {
|
|
30
|
-
atender_contatos_novos: boolean;
|
|
31
29
|
ativo: boolean;
|
|
32
30
|
atualizado_em: string;
|
|
33
31
|
criado_em: string;
|
|
@@ -40,7 +38,6 @@ export interface Robo {
|
|
|
40
38
|
versao: number;
|
|
41
39
|
}
|
|
42
40
|
export interface RoboAtualizar {
|
|
43
|
-
atender_contatos_novos?: boolean | null;
|
|
44
41
|
ativo?: boolean | null;
|
|
45
42
|
descricao?: string | null;
|
|
46
43
|
fluxo?: RoboFluxo | null;
|
package/dist/miro/rotas.d.ts
CHANGED
|
@@ -54,7 +54,7 @@ export declare function buscar_paginador_board(credencial_de_acesso: CredencialD
|
|
|
54
54
|
/**
|
|
55
55
|
* Cria um board
|
|
56
56
|
*
|
|
57
|
-
* Livre para todo colaborador logado; quem cria é o dono. `nome` é obrigatório (até 120 caracteres), `descricao` vai até 5000, `cor` segue o formato `#00397c` (padrão `#00397c`) e `visibilidade` é `
|
|
57
|
+
* Livre para todo colaborador logado; quem cria é o dono. `nome` é obrigatório (até 120 caracteres), `descricao` vai até 5000, `cor` segue o formato `#00397c` (padrão `#00397c`) e `visibilidade` é `MEMBROS` (padrão, só o dono e os `membro_ids`) ou `ORGANIZACAO` (todos veem e editam). O canvas nasce vazio. Para ler e editar o que fica dentro do board (notas, textos, formas, conectores, cards, tabelas, frames, imagens e traços) use as rotas `/board/{id}/elementos` (listar, criar, atualizar, excluir e organizar); a tela edita o mesmo canvas em tempo real em `GET /board/ws/{id}?token=<JWT>` (WebSocket no protocolo do Yjs), e o que a API muda aparece na hora para quem está com o board aberto.
|
|
58
58
|
*
|
|
59
59
|
* `POST /board`
|
|
60
60
|
*/
|
package/dist/miro/rotas.js
CHANGED
|
@@ -21,7 +21,7 @@ export function buscar_paginador_board(credencial_de_acesso, parametros = {}, op
|
|
|
21
21
|
/**
|
|
22
22
|
* Cria um board
|
|
23
23
|
*
|
|
24
|
-
* Livre para todo colaborador logado; quem cria é o dono. `nome` é obrigatório (até 120 caracteres), `descricao` vai até 5000, `cor` segue o formato `#00397c` (padrão `#00397c`) e `visibilidade` é `
|
|
24
|
+
* Livre para todo colaborador logado; quem cria é o dono. `nome` é obrigatório (até 120 caracteres), `descricao` vai até 5000, `cor` segue o formato `#00397c` (padrão `#00397c`) e `visibilidade` é `MEMBROS` (padrão, só o dono e os `membro_ids`) ou `ORGANIZACAO` (todos veem e editam). O canvas nasce vazio. Para ler e editar o que fica dentro do board (notas, textos, formas, conectores, cards, tabelas, frames, imagens e traços) use as rotas `/board/{id}/elementos` (listar, criar, atualizar, excluir e organizar); a tela edita o mesmo canvas em tempo real em `GET /board/ws/{id}?token=<JWT>` (WebSocket no protocolo do Yjs), e o que a API muda aparece na hora para quem está com o board aberto.
|
|
25
25
|
*
|
|
26
26
|
* `POST /board`
|
|
27
27
|
*/
|
package/dist/portal/rotas.d.ts
CHANGED
|
@@ -149,6 +149,13 @@ export interface ParametrosDeBuscarInformacoesPaginadorCliente {
|
|
|
149
149
|
unidade_id?: string;
|
|
150
150
|
cursor?: string;
|
|
151
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* Parâmetros de consulta e de cabeçalho de `/cliente/telefone`.
|
|
154
|
+
*/
|
|
155
|
+
export interface ParametrosDeBuscarClientesPeloTelefoneCliente {
|
|
156
|
+
telefone?: string;
|
|
157
|
+
unidade_id?: string;
|
|
158
|
+
}
|
|
152
159
|
/**
|
|
153
160
|
* Parâmetros de consulta e de cabeçalho de `/contato`.
|
|
154
161
|
*/
|
|
@@ -308,6 +315,12 @@ export interface ParametrosDeBuscarPeloFiltroIndicadorVenda {
|
|
|
308
315
|
inicio?: string;
|
|
309
316
|
fim?: string;
|
|
310
317
|
}
|
|
318
|
+
/**
|
|
319
|
+
* Parâmetros de consulta e de cabeçalho de `/lista_de_preco/filtro`.
|
|
320
|
+
*/
|
|
321
|
+
export interface ParametrosDeBuscarPeloFiltroListaDePreco {
|
|
322
|
+
unidade_id?: string;
|
|
323
|
+
}
|
|
311
324
|
/**
|
|
312
325
|
* Parâmetros de consulta e de cabeçalho de `/nao_conformidade`.
|
|
313
326
|
*/
|
|
@@ -660,6 +673,39 @@ export interface ParametrosDeBuscarPeloFiltroUnidade {
|
|
|
660
673
|
cliente_id?: string;
|
|
661
674
|
pagina?: number;
|
|
662
675
|
}
|
|
676
|
+
/**
|
|
677
|
+
* Parâmetros de consulta e de cabeçalho de `/unidade_contato`.
|
|
678
|
+
*/
|
|
679
|
+
export interface ParametrosDeBuscarPaginadorUnidadeContato {
|
|
680
|
+
unidade_id?: string;
|
|
681
|
+
nome?: string;
|
|
682
|
+
pagina?: number;
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
685
|
+
* Parâmetros de consulta e de cabeçalho de `/unidade_contato/autocomplete`.
|
|
686
|
+
*/
|
|
687
|
+
export interface ParametrosDeBuscarAutoCompleteUnidadeContato {
|
|
688
|
+
busca?: string;
|
|
689
|
+
unidade_id?: string;
|
|
690
|
+
pagina?: number;
|
|
691
|
+
tamanho?: number;
|
|
692
|
+
}
|
|
693
|
+
/**
|
|
694
|
+
* Parâmetros de consulta e de cabeçalho de `/unidade_contato/filtro`.
|
|
695
|
+
*/
|
|
696
|
+
export interface ParametrosDeBuscarPeloFiltroUnidadeContato {
|
|
697
|
+
unidade_id?: string;
|
|
698
|
+
nome?: string;
|
|
699
|
+
pagina?: number;
|
|
700
|
+
}
|
|
701
|
+
/**
|
|
702
|
+
* Parâmetros de consulta e de cabeçalho de `/unidade_contato/paginador`.
|
|
703
|
+
*/
|
|
704
|
+
export interface ParametrosDeBuscarInformacoesPaginadorUnidadeContato {
|
|
705
|
+
unidade_id?: string;
|
|
706
|
+
nome?: string;
|
|
707
|
+
pagina?: number;
|
|
708
|
+
}
|
|
663
709
|
/**
|
|
664
710
|
* Lista as categorias com a situação do boletim
|
|
665
711
|
*
|
|
@@ -924,6 +970,14 @@ export declare function buscar_pelo_filtro_cliente(credencial_de_acesso: Credenc
|
|
|
924
970
|
* `GET /cliente/paginador`
|
|
925
971
|
*/
|
|
926
972
|
export declare function buscar_informacoes_paginador_cliente(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarInformacoesPaginadorCliente, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.ClientePaginador>;
|
|
973
|
+
/**
|
|
974
|
+
* Busca clientes pelo número de telefone
|
|
975
|
+
*
|
|
976
|
+
* Acha os clientes de um número de telefone mesmo quando ele está gravado de outro jeito no cadastro. Exige a permissão `ver` no módulo `Configuracoes`; quem não é colaborador interno precisa mandar `unidade_id` de uma unidade da sessão e só vê o cliente dela. Aceita também o token de aplicativo do TermoAuth de um app que atende pelo WhatsApp (hoje só `spark-sell`, o robô do TermoFlow): nesse caso `unidade_id` é ignorado e só vêm os clientes que abrem a sessão de `POST /sessao/whatsapp` (`ativo`, com login e com unidade ativa), cada um só com as unidades ativas; o robô mostra essa lista para o contato escolher a empresa. `telefone` é obrigatório e aceita qualquer formato (`(11) 98765-4321`, `+55 11 98765-4321`, `5511987654321`...): só os dígitos contam. O backend gera as variações do número e procura qualquer uma delas, exata, em `telefone`, `telefone_tiny` e `celular`: com e sem o código do país (`55` e `+55`; o `55` do começo só é lido como código do país quando o número tem 12 ou 13 dígitos, para não confundir com o DDD 55) e, no celular, com e sem o nono dígito (número de 10 dígitos cujo primeiro dígito depois do DDD é de 6 a 9 ganha o 9; número de 11 dígitos com 9 depois do DDD o perde). Telefone fixo não ganha o 9. Número gravado com máscara (parênteses, espaço, traço) não é achado. `unidade_id` (opcional para colaborador interno) restringe ao cliente da unidade. Considera todos os clientes, com ou sem login no portal. Devolve o array dos clientes encontrados, em ordem alfabética do nome, até 50; vazio quando nenhum casa.
|
|
977
|
+
*
|
|
978
|
+
* `GET /cliente/telefone`
|
|
979
|
+
*/
|
|
980
|
+
export declare function buscar_clientes_pelo_telefone_cliente(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarClientesPeloTelefoneCliente, opcoes_da_chamada?: OpcoesDaChamada): Promise<Array<tipos.Cliente>>;
|
|
927
981
|
/**
|
|
928
982
|
* Busca o cliente pelo id
|
|
929
983
|
*
|
|
@@ -1236,6 +1290,22 @@ export declare function buscar_pelo_filtro_indicador_compra(credencial_de_acesso
|
|
|
1236
1290
|
* `GET /indicador_venda/filtro`
|
|
1237
1291
|
*/
|
|
1238
1292
|
export declare function buscar_pelo_filtro_indicador_venda(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPeloFiltroIndicadorVenda, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.IndicadoresDeVenda>;
|
|
1293
|
+
/**
|
|
1294
|
+
* A lista de preço que vale para uma unidade
|
|
1295
|
+
*
|
|
1296
|
+
* Só colaborador interno. O Tiny escolhe a lista em cada pedido: vale a do cadastro do cliente (`origem` = `cadastro`) e, sem ela, a do último pedido não cancelado da unidade ou do CNPJ (`origem` = `ultima_venda`, lida em `GET /sales/order/{id}`). `motivo` explica de onde veio. Lista vazia quando não há nenhuma das duas. `unidade_id` é obrigatório.
|
|
1297
|
+
*
|
|
1298
|
+
* `GET /lista_de_preco/filtro`
|
|
1299
|
+
*/
|
|
1300
|
+
export declare function buscar_pelo_filtro_lista_de_preco(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPeloFiltroListaDePreco, opcoes_da_chamada?: OpcoesDaChamada): Promise<Array<tipos.ListaDePrecoDaUnidade>>;
|
|
1301
|
+
/**
|
|
1302
|
+
* Uma lista de preço do Tiny, com o preço do portal ao lado
|
|
1303
|
+
*
|
|
1304
|
+
* Só colaborador interno. Lê na hora a API de vendas da Termotubos (`GET /sales/price-list/{id}`, cache de 60 s): nome, `ajuste` geral em % como o Tiny grava, se está ativa e os SKUs com preço próprio (`itens`), cada um com o nome e os preços do produto no portal quando o SKU existe aqui. Só leitura: a lista muda no Tiny. O id da lista do cliente vem em `lista_de_preco_id_tiny` da unidade.
|
|
1305
|
+
*
|
|
1306
|
+
* `GET /lista_de_preco/{id_tiny}`
|
|
1307
|
+
*/
|
|
1308
|
+
export declare function buscar_pelo_id_lista_de_preco(credencial_de_acesso: CredencialDeAcesso, id_tiny: number, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.ListaDePreco>;
|
|
1239
1309
|
/**
|
|
1240
1310
|
* Lista as RNCs e ocorrências da qualidade de uma unidade
|
|
1241
1311
|
*
|
|
@@ -1556,6 +1626,14 @@ export declare function buscar_informacoes_paginador_rastreamento(credencial_de_
|
|
|
1556
1626
|
* `GET /rastreamento/{id}`
|
|
1557
1627
|
*/
|
|
1558
1628
|
export declare function buscar_pelo_id_rastreamento(credencial_de_acesso: CredencialDeAcesso, id: number, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Rastreamento>;
|
|
1629
|
+
/**
|
|
1630
|
+
* Abre a sessão do cliente pelo WhatsApp
|
|
1631
|
+
*
|
|
1632
|
+
* Rota do robô do TermoFlow: abre uma sessão só de leitura do cliente que fala pelo WhatsApp. Só aceita o token de aplicativo do TermoAuth de um app que atende pelo WhatsApp (hoje só `spark-sell`). `telefone` é o número do contato que chegou pelo webhook, nunca o texto da conversa; aceita qualquer formato e é procurado com as mesmas variações de `GET /cliente/telefone`, em `telefone`, `telefone_tiny` e `celular`. `cliente_id` é o cliente escolhido na lista de `GET /cliente/telefone`: a sessão só abre se esse cliente tiver o telefone no cadastro, estiver `ativo`, com login (`email`) e com ao menos uma unidade ativa. Sem `cliente_id`, abre a do único cliente que atende a isso (mais de um responde `409`). Devolve um token de 30 minutos (`expira_em`) para mandar em `Authorization: Bearer` nas rotas de leitura do cliente; ele só vale no cabeçalho, só em `GET`/`HEAD` e só para as `unidades` do cliente, e cai na hora se o cliente for inativado.
|
|
1633
|
+
*
|
|
1634
|
+
* `POST /sessao/whatsapp`
|
|
1635
|
+
*/
|
|
1636
|
+
export declare function criar_pelo_whatsapp_sessao(credencial_de_acesso: CredencialDeAcesso, corpo_da_requisicao: tipos.SessaoDoWhatsappCriar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.SessaoDoWhatsapp>;
|
|
1559
1637
|
/**
|
|
1560
1638
|
* Lista as transportadoras (formas de envio) do Tiny
|
|
1561
1639
|
*
|
|
@@ -1636,3 +1714,67 @@ export declare function atualizar_pelo_id_unidade(credencial_de_acesso: Credenci
|
|
|
1636
1714
|
* `DELETE /unidade/{id}`
|
|
1637
1715
|
*/
|
|
1638
1716
|
export declare function deletar_pelo_id_unidade(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<void>;
|
|
1717
|
+
/**
|
|
1718
|
+
* Lista a cópia gravada dos contatos do Tiny
|
|
1719
|
+
*
|
|
1720
|
+
* Só colaborador interno. Lê só a cópia gravada, sem chamar o Tiny (quem atualiza é `GET /unidade_contato/filtro`). Filtros `unidade_id` (sem ele, todas as unidades) e `nome`; ordem alfabética, 50 por página. Totais em `GET /unidade_contato/paginador`.
|
|
1721
|
+
*
|
|
1722
|
+
* `GET /unidade_contato`
|
|
1723
|
+
*/
|
|
1724
|
+
export declare function buscar_paginador_unidade_contato(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPaginadorUnidadeContato, opcoes_da_chamada?: OpcoesDaChamada): Promise<Array<tipos.UnidadeContato>>;
|
|
1725
|
+
/**
|
|
1726
|
+
* Inclui um contato no cadastro do cliente no Tiny
|
|
1727
|
+
*
|
|
1728
|
+
* Só colaborador interno com permissão de editar em Configurações. Grava primeiro no Tiny (`POST /customer/contact` da API de clientes, pelo CNPJ da unidade) e depois relê os contatos do cliente para a cópia. `nome` é obrigatório (até 100); departamento até 50, telefone até 30, ramal até 10 e e-mail válido até 100.
|
|
1729
|
+
*
|
|
1730
|
+
* `POST /unidade_contato`
|
|
1731
|
+
*/
|
|
1732
|
+
export declare function criar_unidade_contato(credencial_de_acesso: CredencialDeAcesso, corpo_da_requisicao: tipos.UnidadeContatoCriar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.UnidadeContato>;
|
|
1733
|
+
/**
|
|
1734
|
+
* Id e nome dos contatos gravados, em ordem alfabética
|
|
1735
|
+
*
|
|
1736
|
+
* Só colaborador interno. `busca` filtra por parte do nome; `unidade_id` limita à unidade; `tamanho` vai até 50 (padrão 10).
|
|
1737
|
+
*
|
|
1738
|
+
* `GET /unidade_contato/autocomplete`
|
|
1739
|
+
*/
|
|
1740
|
+
export declare function buscar_auto_complete_unidade_contato(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarAutoCompleteUnidadeContato, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PaginaUnidadeContatoAutoComplete>;
|
|
1741
|
+
/**
|
|
1742
|
+
* Contatos da unidade no Tiny, pelo id da unidade
|
|
1743
|
+
*
|
|
1744
|
+
* Só colaborador interno. Lê na hora as pessoas de contato do cadastro do cliente no Tiny (API de clientes da Termotubos: `GET /customer/search?doc_id=<CNPJ da unidade>` e `GET /customer/{id}`), grava a cópia na coleção `unidade_contato` (contato que saiu do Tiny vira excluído) e devolve os contatos da unidade em ordem alfabética, 50 por página (`pagina` começa em 1). `unidade_id` é obrigatório; `nome` filtra por parte do nome. Com a API fora do ar, devolve a última cópia (cada contato traz `sincronizado_em`); sem cópia nenhuma, `502`. Unidade sem CNPJ ou sem cliente no Tiny fica sem contatos (a cópia antiga sai). Gravar exige permissão de editar em Configurações.
|
|
1745
|
+
*
|
|
1746
|
+
* `GET /unidade_contato/filtro`
|
|
1747
|
+
*/
|
|
1748
|
+
export declare function buscar_pelo_filtro_unidade_contato(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPeloFiltroUnidadeContato, opcoes_da_chamada?: OpcoesDaChamada): Promise<Array<tipos.UnidadeContato>>;
|
|
1749
|
+
/**
|
|
1750
|
+
* Total e páginas dos contatos gravados
|
|
1751
|
+
*
|
|
1752
|
+
* Só colaborador interno. Mesmos filtros de `GET /unidade_contato`.
|
|
1753
|
+
*
|
|
1754
|
+
* `GET /unidade_contato/paginador`
|
|
1755
|
+
*/
|
|
1756
|
+
export declare function buscar_informacoes_paginador_unidade_contato(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarInformacoesPaginadorUnidadeContato, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.UnidadeContatoPaginador>;
|
|
1757
|
+
/**
|
|
1758
|
+
* Um contato gravado da unidade
|
|
1759
|
+
*
|
|
1760
|
+
* Só colaborador interno. Lê a cópia gravada, sem chamar o Tiny.
|
|
1761
|
+
*
|
|
1762
|
+
* `GET /unidade_contato/{id}`
|
|
1763
|
+
*/
|
|
1764
|
+
export declare function buscar_pelo_id_unidade_contato(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.UnidadeContato>;
|
|
1765
|
+
/**
|
|
1766
|
+
* Altera um contato no cadastro do cliente no Tiny
|
|
1767
|
+
*
|
|
1768
|
+
* A API do Tiny troca a lista inteira: o portal relê os contatos do cliente na hora, muda só este e manda a lista completa (`PUT /customer/update/{id}`), depois relê a cópia. Campo ausente fica como está; texto vazio apaga. O contato pode voltar com outro `id` se o Tiny trocar o id dele.
|
|
1769
|
+
*
|
|
1770
|
+
* `PATCH /unidade_contato/{id}`
|
|
1771
|
+
*/
|
|
1772
|
+
export declare function atualizar_pelo_id_unidade_contato(credencial_de_acesso: CredencialDeAcesso, id: string, corpo_da_requisicao: tipos.UnidadeContatoAtualizar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.UnidadeContato>;
|
|
1773
|
+
/**
|
|
1774
|
+
* Tira um contato do cadastro do cliente no Tiny
|
|
1775
|
+
*
|
|
1776
|
+
* Manda ao Tiny a lista de contatos sem este (`PUT /customer/update/{id}`) e relê a cópia, em que ele fica excluído.
|
|
1777
|
+
*
|
|
1778
|
+
* `DELETE /unidade_contato/{id}`
|
|
1779
|
+
*/
|
|
1780
|
+
export declare function deletar_pelo_id_unidade_contato(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<void>;
|
package/dist/portal/rotas.js
CHANGED
|
@@ -554,6 +554,23 @@ export function buscar_informacoes_paginador_cliente(credencial_de_acesso, param
|
|
|
554
554
|
formato_da_resposta: "json",
|
|
555
555
|
}, opcoes_da_chamada);
|
|
556
556
|
}
|
|
557
|
+
/**
|
|
558
|
+
* Busca clientes pelo número de telefone
|
|
559
|
+
*
|
|
560
|
+
* Acha os clientes de um número de telefone mesmo quando ele está gravado de outro jeito no cadastro. Exige a permissão `ver` no módulo `Configuracoes`; quem não é colaborador interno precisa mandar `unidade_id` de uma unidade da sessão e só vê o cliente dela. Aceita também o token de aplicativo do TermoAuth de um app que atende pelo WhatsApp (hoje só `spark-sell`, o robô do TermoFlow): nesse caso `unidade_id` é ignorado e só vêm os clientes que abrem a sessão de `POST /sessao/whatsapp` (`ativo`, com login e com unidade ativa), cada um só com as unidades ativas; o robô mostra essa lista para o contato escolher a empresa. `telefone` é obrigatório e aceita qualquer formato (`(11) 98765-4321`, `+55 11 98765-4321`, `5511987654321`...): só os dígitos contam. O backend gera as variações do número e procura qualquer uma delas, exata, em `telefone`, `telefone_tiny` e `celular`: com e sem o código do país (`55` e `+55`; o `55` do começo só é lido como código do país quando o número tem 12 ou 13 dígitos, para não confundir com o DDD 55) e, no celular, com e sem o nono dígito (número de 10 dígitos cujo primeiro dígito depois do DDD é de 6 a 9 ganha o 9; número de 11 dígitos com 9 depois do DDD o perde). Telefone fixo não ganha o 9. Número gravado com máscara (parênteses, espaço, traço) não é achado. `unidade_id` (opcional para colaborador interno) restringe ao cliente da unidade. Considera todos os clientes, com ou sem login no portal. Devolve o array dos clientes encontrados, em ordem alfabética do nome, até 50; vazio quando nenhum casa.
|
|
561
|
+
*
|
|
562
|
+
* `GET /cliente/telefone`
|
|
563
|
+
*/
|
|
564
|
+
export function buscar_clientes_pelo_telefone_cliente(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
565
|
+
return chamar_servico({
|
|
566
|
+
servico: SERVICO_DESTA_API,
|
|
567
|
+
metodo_http: "GET",
|
|
568
|
+
caminho_da_rota: "/cliente/telefone",
|
|
569
|
+
credencial_de_acesso,
|
|
570
|
+
parametros_de_consulta: parametros,
|
|
571
|
+
formato_da_resposta: "json",
|
|
572
|
+
}, opcoes_da_chamada);
|
|
573
|
+
}
|
|
557
574
|
/**
|
|
558
575
|
* Busca o cliente pelo id
|
|
559
576
|
*
|
|
@@ -1205,6 +1222,39 @@ export function buscar_pelo_filtro_indicador_venda(credencial_de_acesso, paramet
|
|
|
1205
1222
|
formato_da_resposta: "json",
|
|
1206
1223
|
}, opcoes_da_chamada);
|
|
1207
1224
|
}
|
|
1225
|
+
/**
|
|
1226
|
+
* A lista de preço que vale para uma unidade
|
|
1227
|
+
*
|
|
1228
|
+
* Só colaborador interno. O Tiny escolhe a lista em cada pedido: vale a do cadastro do cliente (`origem` = `cadastro`) e, sem ela, a do último pedido não cancelado da unidade ou do CNPJ (`origem` = `ultima_venda`, lida em `GET /sales/order/{id}`). `motivo` explica de onde veio. Lista vazia quando não há nenhuma das duas. `unidade_id` é obrigatório.
|
|
1229
|
+
*
|
|
1230
|
+
* `GET /lista_de_preco/filtro`
|
|
1231
|
+
*/
|
|
1232
|
+
export function buscar_pelo_filtro_lista_de_preco(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
1233
|
+
return chamar_servico({
|
|
1234
|
+
servico: SERVICO_DESTA_API,
|
|
1235
|
+
metodo_http: "GET",
|
|
1236
|
+
caminho_da_rota: "/lista_de_preco/filtro",
|
|
1237
|
+
credencial_de_acesso,
|
|
1238
|
+
parametros_de_consulta: parametros,
|
|
1239
|
+
formato_da_resposta: "json",
|
|
1240
|
+
}, opcoes_da_chamada);
|
|
1241
|
+
}
|
|
1242
|
+
/**
|
|
1243
|
+
* Uma lista de preço do Tiny, com o preço do portal ao lado
|
|
1244
|
+
*
|
|
1245
|
+
* Só colaborador interno. Lê na hora a API de vendas da Termotubos (`GET /sales/price-list/{id}`, cache de 60 s): nome, `ajuste` geral em % como o Tiny grava, se está ativa e os SKUs com preço próprio (`itens`), cada um com o nome e os preços do produto no portal quando o SKU existe aqui. Só leitura: a lista muda no Tiny. O id da lista do cliente vem em `lista_de_preco_id_tiny` da unidade.
|
|
1246
|
+
*
|
|
1247
|
+
* `GET /lista_de_preco/{id_tiny}`
|
|
1248
|
+
*/
|
|
1249
|
+
export function buscar_pelo_id_lista_de_preco(credencial_de_acesso, id_tiny, opcoes_da_chamada) {
|
|
1250
|
+
return chamar_servico({
|
|
1251
|
+
servico: SERVICO_DESTA_API,
|
|
1252
|
+
metodo_http: "GET",
|
|
1253
|
+
caminho_da_rota: `/lista_de_preco/${codificar_parametro_de_caminho(id_tiny)}`,
|
|
1254
|
+
credencial_de_acesso,
|
|
1255
|
+
formato_da_resposta: "json",
|
|
1256
|
+
}, opcoes_da_chamada);
|
|
1257
|
+
}
|
|
1208
1258
|
/**
|
|
1209
1259
|
* Lista as RNCs e ocorrências da qualidade de uma unidade
|
|
1210
1260
|
*
|
|
@@ -1875,6 +1925,23 @@ export function buscar_pelo_id_rastreamento(credencial_de_acesso, id, opcoes_da_
|
|
|
1875
1925
|
formato_da_resposta: "json",
|
|
1876
1926
|
}, opcoes_da_chamada);
|
|
1877
1927
|
}
|
|
1928
|
+
/**
|
|
1929
|
+
* Abre a sessão do cliente pelo WhatsApp
|
|
1930
|
+
*
|
|
1931
|
+
* Rota do robô do TermoFlow: abre uma sessão só de leitura do cliente que fala pelo WhatsApp. Só aceita o token de aplicativo do TermoAuth de um app que atende pelo WhatsApp (hoje só `spark-sell`). `telefone` é o número do contato que chegou pelo webhook, nunca o texto da conversa; aceita qualquer formato e é procurado com as mesmas variações de `GET /cliente/telefone`, em `telefone`, `telefone_tiny` e `celular`. `cliente_id` é o cliente escolhido na lista de `GET /cliente/telefone`: a sessão só abre se esse cliente tiver o telefone no cadastro, estiver `ativo`, com login (`email`) e com ao menos uma unidade ativa. Sem `cliente_id`, abre a do único cliente que atende a isso (mais de um responde `409`). Devolve um token de 30 minutos (`expira_em`) para mandar em `Authorization: Bearer` nas rotas de leitura do cliente; ele só vale no cabeçalho, só em `GET`/`HEAD` e só para as `unidades` do cliente, e cai na hora se o cliente for inativado.
|
|
1932
|
+
*
|
|
1933
|
+
* `POST /sessao/whatsapp`
|
|
1934
|
+
*/
|
|
1935
|
+
export function criar_pelo_whatsapp_sessao(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
|
|
1936
|
+
return chamar_servico({
|
|
1937
|
+
servico: SERVICO_DESTA_API,
|
|
1938
|
+
metodo_http: "POST",
|
|
1939
|
+
caminho_da_rota: "/sessao/whatsapp",
|
|
1940
|
+
credencial_de_acesso,
|
|
1941
|
+
corpo_json: corpo_da_requisicao,
|
|
1942
|
+
formato_da_resposta: "json",
|
|
1943
|
+
}, opcoes_da_chamada);
|
|
1944
|
+
}
|
|
1878
1945
|
/**
|
|
1879
1946
|
* Lista as transportadoras (formas de envio) do Tiny
|
|
1880
1947
|
*
|
|
@@ -2043,3 +2110,137 @@ export function deletar_pelo_id_unidade(credencial_de_acesso, id, opcoes_da_cham
|
|
|
2043
2110
|
formato_da_resposta: "sem_conteudo",
|
|
2044
2111
|
}, opcoes_da_chamada);
|
|
2045
2112
|
}
|
|
2113
|
+
/**
|
|
2114
|
+
* Lista a cópia gravada dos contatos do Tiny
|
|
2115
|
+
*
|
|
2116
|
+
* Só colaborador interno. Lê só a cópia gravada, sem chamar o Tiny (quem atualiza é `GET /unidade_contato/filtro`). Filtros `unidade_id` (sem ele, todas as unidades) e `nome`; ordem alfabética, 50 por página. Totais em `GET /unidade_contato/paginador`.
|
|
2117
|
+
*
|
|
2118
|
+
* `GET /unidade_contato`
|
|
2119
|
+
*/
|
|
2120
|
+
export function buscar_paginador_unidade_contato(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
2121
|
+
return chamar_servico({
|
|
2122
|
+
servico: SERVICO_DESTA_API,
|
|
2123
|
+
metodo_http: "GET",
|
|
2124
|
+
caminho_da_rota: "/unidade_contato",
|
|
2125
|
+
credencial_de_acesso,
|
|
2126
|
+
parametros_de_consulta: parametros,
|
|
2127
|
+
formato_da_resposta: "json",
|
|
2128
|
+
}, opcoes_da_chamada);
|
|
2129
|
+
}
|
|
2130
|
+
/**
|
|
2131
|
+
* Inclui um contato no cadastro do cliente no Tiny
|
|
2132
|
+
*
|
|
2133
|
+
* Só colaborador interno com permissão de editar em Configurações. Grava primeiro no Tiny (`POST /customer/contact` da API de clientes, pelo CNPJ da unidade) e depois relê os contatos do cliente para a cópia. `nome` é obrigatório (até 100); departamento até 50, telefone até 30, ramal até 10 e e-mail válido até 100.
|
|
2134
|
+
*
|
|
2135
|
+
* `POST /unidade_contato`
|
|
2136
|
+
*/
|
|
2137
|
+
export function criar_unidade_contato(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
|
|
2138
|
+
return chamar_servico({
|
|
2139
|
+
servico: SERVICO_DESTA_API,
|
|
2140
|
+
metodo_http: "POST",
|
|
2141
|
+
caminho_da_rota: "/unidade_contato",
|
|
2142
|
+
credencial_de_acesso,
|
|
2143
|
+
corpo_json: corpo_da_requisicao,
|
|
2144
|
+
formato_da_resposta: "json",
|
|
2145
|
+
}, opcoes_da_chamada);
|
|
2146
|
+
}
|
|
2147
|
+
/**
|
|
2148
|
+
* Id e nome dos contatos gravados, em ordem alfabética
|
|
2149
|
+
*
|
|
2150
|
+
* Só colaborador interno. `busca` filtra por parte do nome; `unidade_id` limita à unidade; `tamanho` vai até 50 (padrão 10).
|
|
2151
|
+
*
|
|
2152
|
+
* `GET /unidade_contato/autocomplete`
|
|
2153
|
+
*/
|
|
2154
|
+
export function buscar_auto_complete_unidade_contato(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
2155
|
+
return chamar_servico({
|
|
2156
|
+
servico: SERVICO_DESTA_API,
|
|
2157
|
+
metodo_http: "GET",
|
|
2158
|
+
caminho_da_rota: "/unidade_contato/autocomplete",
|
|
2159
|
+
credencial_de_acesso,
|
|
2160
|
+
parametros_de_consulta: parametros,
|
|
2161
|
+
formato_da_resposta: "json",
|
|
2162
|
+
}, opcoes_da_chamada);
|
|
2163
|
+
}
|
|
2164
|
+
/**
|
|
2165
|
+
* Contatos da unidade no Tiny, pelo id da unidade
|
|
2166
|
+
*
|
|
2167
|
+
* Só colaborador interno. Lê na hora as pessoas de contato do cadastro do cliente no Tiny (API de clientes da Termotubos: `GET /customer/search?doc_id=<CNPJ da unidade>` e `GET /customer/{id}`), grava a cópia na coleção `unidade_contato` (contato que saiu do Tiny vira excluído) e devolve os contatos da unidade em ordem alfabética, 50 por página (`pagina` começa em 1). `unidade_id` é obrigatório; `nome` filtra por parte do nome. Com a API fora do ar, devolve a última cópia (cada contato traz `sincronizado_em`); sem cópia nenhuma, `502`. Unidade sem CNPJ ou sem cliente no Tiny fica sem contatos (a cópia antiga sai). Gravar exige permissão de editar em Configurações.
|
|
2168
|
+
*
|
|
2169
|
+
* `GET /unidade_contato/filtro`
|
|
2170
|
+
*/
|
|
2171
|
+
export function buscar_pelo_filtro_unidade_contato(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
2172
|
+
return chamar_servico({
|
|
2173
|
+
servico: SERVICO_DESTA_API,
|
|
2174
|
+
metodo_http: "GET",
|
|
2175
|
+
caminho_da_rota: "/unidade_contato/filtro",
|
|
2176
|
+
credencial_de_acesso,
|
|
2177
|
+
parametros_de_consulta: parametros,
|
|
2178
|
+
formato_da_resposta: "json",
|
|
2179
|
+
}, opcoes_da_chamada);
|
|
2180
|
+
}
|
|
2181
|
+
/**
|
|
2182
|
+
* Total e páginas dos contatos gravados
|
|
2183
|
+
*
|
|
2184
|
+
* Só colaborador interno. Mesmos filtros de `GET /unidade_contato`.
|
|
2185
|
+
*
|
|
2186
|
+
* `GET /unidade_contato/paginador`
|
|
2187
|
+
*/
|
|
2188
|
+
export function buscar_informacoes_paginador_unidade_contato(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
2189
|
+
return chamar_servico({
|
|
2190
|
+
servico: SERVICO_DESTA_API,
|
|
2191
|
+
metodo_http: "GET",
|
|
2192
|
+
caminho_da_rota: "/unidade_contato/paginador",
|
|
2193
|
+
credencial_de_acesso,
|
|
2194
|
+
parametros_de_consulta: parametros,
|
|
2195
|
+
formato_da_resposta: "json",
|
|
2196
|
+
}, opcoes_da_chamada);
|
|
2197
|
+
}
|
|
2198
|
+
/**
|
|
2199
|
+
* Um contato gravado da unidade
|
|
2200
|
+
*
|
|
2201
|
+
* Só colaborador interno. Lê a cópia gravada, sem chamar o Tiny.
|
|
2202
|
+
*
|
|
2203
|
+
* `GET /unidade_contato/{id}`
|
|
2204
|
+
*/
|
|
2205
|
+
export function buscar_pelo_id_unidade_contato(credencial_de_acesso, id, opcoes_da_chamada) {
|
|
2206
|
+
return chamar_servico({
|
|
2207
|
+
servico: SERVICO_DESTA_API,
|
|
2208
|
+
metodo_http: "GET",
|
|
2209
|
+
caminho_da_rota: `/unidade_contato/${codificar_parametro_de_caminho(id)}`,
|
|
2210
|
+
credencial_de_acesso,
|
|
2211
|
+
formato_da_resposta: "json",
|
|
2212
|
+
}, opcoes_da_chamada);
|
|
2213
|
+
}
|
|
2214
|
+
/**
|
|
2215
|
+
* Altera um contato no cadastro do cliente no Tiny
|
|
2216
|
+
*
|
|
2217
|
+
* A API do Tiny troca a lista inteira: o portal relê os contatos do cliente na hora, muda só este e manda a lista completa (`PUT /customer/update/{id}`), depois relê a cópia. Campo ausente fica como está; texto vazio apaga. O contato pode voltar com outro `id` se o Tiny trocar o id dele.
|
|
2218
|
+
*
|
|
2219
|
+
* `PATCH /unidade_contato/{id}`
|
|
2220
|
+
*/
|
|
2221
|
+
export function atualizar_pelo_id_unidade_contato(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
|
|
2222
|
+
return chamar_servico({
|
|
2223
|
+
servico: SERVICO_DESTA_API,
|
|
2224
|
+
metodo_http: "PATCH",
|
|
2225
|
+
caminho_da_rota: `/unidade_contato/${codificar_parametro_de_caminho(id)}`,
|
|
2226
|
+
credencial_de_acesso,
|
|
2227
|
+
corpo_json: corpo_da_requisicao,
|
|
2228
|
+
formato_da_resposta: "json",
|
|
2229
|
+
}, opcoes_da_chamada);
|
|
2230
|
+
}
|
|
2231
|
+
/**
|
|
2232
|
+
* Tira um contato do cadastro do cliente no Tiny
|
|
2233
|
+
*
|
|
2234
|
+
* Manda ao Tiny a lista de contatos sem este (`PUT /customer/update/{id}`) e relê a cópia, em que ele fica excluído.
|
|
2235
|
+
*
|
|
2236
|
+
* `DELETE /unidade_contato/{id}`
|
|
2237
|
+
*/
|
|
2238
|
+
export function deletar_pelo_id_unidade_contato(credencial_de_acesso, id, opcoes_da_chamada) {
|
|
2239
|
+
return chamar_servico({
|
|
2240
|
+
servico: SERVICO_DESTA_API,
|
|
2241
|
+
metodo_http: "DELETE",
|
|
2242
|
+
caminho_da_rota: `/unidade_contato/${codificar_parametro_de_caminho(id)}`,
|
|
2243
|
+
credencial_de_acesso,
|
|
2244
|
+
formato_da_resposta: "sem_conteudo",
|
|
2245
|
+
}, opcoes_da_chamada);
|
|
2246
|
+
}
|
package/dist/portal/tipos.d.ts
CHANGED
|
@@ -649,6 +649,14 @@ export interface IndicadoresDeVenda {
|
|
|
649
649
|
por_dia: Array<VendaDoDia>;
|
|
650
650
|
por_vendedor: Array<VendaAgrupada>;
|
|
651
651
|
}
|
|
652
|
+
export interface ItemDaListaDePreco {
|
|
653
|
+
nome?: string | null;
|
|
654
|
+
preco: number;
|
|
655
|
+
preco_a_vista_no_portal?: number | null;
|
|
656
|
+
preco_no_portal?: number | null;
|
|
657
|
+
preco_promocional?: number | null;
|
|
658
|
+
sku: string;
|
|
659
|
+
}
|
|
652
660
|
export interface ItemDoPedido {
|
|
653
661
|
adicionais?: Array<AdicionalDoItem>;
|
|
654
662
|
atributos_escolhidos_pela_ia?: Array<string>;
|
|
@@ -675,6 +683,19 @@ export interface ItemPedidoVenda {
|
|
|
675
683
|
quantidade?: number | null;
|
|
676
684
|
sku?: string | null;
|
|
677
685
|
}
|
|
686
|
+
export interface ListaDePreco {
|
|
687
|
+
ajuste: number;
|
|
688
|
+
ativa: boolean;
|
|
689
|
+
id_tiny: number;
|
|
690
|
+
itens: Array<ItemDaListaDePreco>;
|
|
691
|
+
nome: string;
|
|
692
|
+
sincronizada_em?: string | null;
|
|
693
|
+
}
|
|
694
|
+
export interface ListaDePrecoDaUnidade {
|
|
695
|
+
lista: ListaDePreco;
|
|
696
|
+
motivo: string;
|
|
697
|
+
origem: string;
|
|
698
|
+
}
|
|
678
699
|
export interface MensagemNaoConformidade {
|
|
679
700
|
autor?: string | null;
|
|
680
701
|
criada_em?: string | null;
|
|
@@ -1091,6 +1112,7 @@ export interface PaginaUnidadeItensItem {
|
|
|
1091
1112
|
contato_financeiro?: string | null;
|
|
1092
1113
|
criado_em: string;
|
|
1093
1114
|
email_comercial?: string | null;
|
|
1115
|
+
email_nfe?: string | null;
|
|
1094
1116
|
filiais: Array<UnidadeReferencia>;
|
|
1095
1117
|
id: string;
|
|
1096
1118
|
imagem?: string | null;
|
|
@@ -1098,10 +1120,12 @@ export interface PaginaUnidadeItensItem {
|
|
|
1098
1120
|
inscricao_municipal?: string | null;
|
|
1099
1121
|
limite_faturamento?: number | null;
|
|
1100
1122
|
limite_usado: number;
|
|
1123
|
+
lista_de_preco_id_tiny?: number | null;
|
|
1101
1124
|
matriz_id?: string | null;
|
|
1102
1125
|
matriz_razao_social?: string | null;
|
|
1103
1126
|
nome_fantasia?: string | null;
|
|
1104
1127
|
razao_social: string;
|
|
1128
|
+
regime_tributario?: string | null;
|
|
1105
1129
|
responsavel_principal?: string | null;
|
|
1106
1130
|
site?: string | null;
|
|
1107
1131
|
status: string;
|
|
@@ -1124,6 +1148,16 @@ export interface PaginaUnidadeAutoComplete {
|
|
|
1124
1148
|
tamanho: number;
|
|
1125
1149
|
total: number;
|
|
1126
1150
|
}
|
|
1151
|
+
export interface PaginaUnidadeContatoAutoCompleteItensItem {
|
|
1152
|
+
id: string;
|
|
1153
|
+
nome: string;
|
|
1154
|
+
}
|
|
1155
|
+
export interface PaginaUnidadeContatoAutoComplete {
|
|
1156
|
+
itens: Array<PaginaUnidadeContatoAutoCompleteItensItem>;
|
|
1157
|
+
pagina: number;
|
|
1158
|
+
tamanho: number;
|
|
1159
|
+
total: number;
|
|
1160
|
+
}
|
|
1127
1161
|
export interface PaginadorPedidosVendaTiny {
|
|
1128
1162
|
contagens: ContagemPedidosVenda;
|
|
1129
1163
|
pagina: number;
|
|
@@ -1525,6 +1559,17 @@ export interface ResumoPedidosVenda {
|
|
|
1525
1559
|
pedidos_hoje: number;
|
|
1526
1560
|
pedidos_no_mes: number;
|
|
1527
1561
|
}
|
|
1562
|
+
export interface SessaoDoWhatsapp {
|
|
1563
|
+
cliente_id: string;
|
|
1564
|
+
expira_em: string;
|
|
1565
|
+
nome: string;
|
|
1566
|
+
token: string;
|
|
1567
|
+
unidades: Array<UnidadeDaSessaoDoWhatsapp>;
|
|
1568
|
+
}
|
|
1569
|
+
export interface SessaoDoWhatsappCriar {
|
|
1570
|
+
cliente_id?: string | null;
|
|
1571
|
+
telefone: string;
|
|
1572
|
+
}
|
|
1528
1573
|
export interface TopEmpresaPedido {
|
|
1529
1574
|
documento?: string | null;
|
|
1530
1575
|
nome: string;
|
|
@@ -1580,6 +1625,7 @@ export interface Unidade {
|
|
|
1580
1625
|
contato_financeiro?: string | null;
|
|
1581
1626
|
criado_em: string;
|
|
1582
1627
|
email_comercial?: string | null;
|
|
1628
|
+
email_nfe?: string | null;
|
|
1583
1629
|
filiais: Array<UnidadeReferencia>;
|
|
1584
1630
|
id: string;
|
|
1585
1631
|
imagem?: string | null;
|
|
@@ -1587,10 +1633,12 @@ export interface Unidade {
|
|
|
1587
1633
|
inscricao_municipal?: string | null;
|
|
1588
1634
|
limite_faturamento?: number | null;
|
|
1589
1635
|
limite_usado: number;
|
|
1636
|
+
lista_de_preco_id_tiny?: number | null;
|
|
1590
1637
|
matriz_id?: string | null;
|
|
1591
1638
|
matriz_razao_social?: string | null;
|
|
1592
1639
|
nome_fantasia?: string | null;
|
|
1593
1640
|
razao_social: string;
|
|
1641
|
+
regime_tributario?: string | null;
|
|
1594
1642
|
responsavel_principal?: string | null;
|
|
1595
1643
|
site?: string | null;
|
|
1596
1644
|
status: string;
|
|
@@ -1619,6 +1667,44 @@ export interface UnidadeAutoComplete {
|
|
|
1619
1667
|
id: string;
|
|
1620
1668
|
razao_social: string;
|
|
1621
1669
|
}
|
|
1670
|
+
export interface UnidadeContato {
|
|
1671
|
+
atualizado_em: string;
|
|
1672
|
+
criado_em: string;
|
|
1673
|
+
departamento?: string | null;
|
|
1674
|
+
email?: string | null;
|
|
1675
|
+
id: string;
|
|
1676
|
+
id_api: number;
|
|
1677
|
+
id_tiny?: number | null;
|
|
1678
|
+
nome: string;
|
|
1679
|
+
ramal?: string | null;
|
|
1680
|
+
sincronizado_em: string;
|
|
1681
|
+
telefone?: string | null;
|
|
1682
|
+
unidade_id: string;
|
|
1683
|
+
}
|
|
1684
|
+
export interface UnidadeContatoAtualizar {
|
|
1685
|
+
departamento?: string | null;
|
|
1686
|
+
email?: string | null;
|
|
1687
|
+
nome?: string | null;
|
|
1688
|
+
ramal?: string | null;
|
|
1689
|
+
telefone?: string | null;
|
|
1690
|
+
}
|
|
1691
|
+
export interface UnidadeContatoAutoComplete {
|
|
1692
|
+
id: string;
|
|
1693
|
+
nome: string;
|
|
1694
|
+
}
|
|
1695
|
+
export interface UnidadeContatoCriar {
|
|
1696
|
+
departamento?: string | null;
|
|
1697
|
+
email?: string | null;
|
|
1698
|
+
nome: string;
|
|
1699
|
+
ramal?: string | null;
|
|
1700
|
+
telefone?: string | null;
|
|
1701
|
+
unidade_id: string;
|
|
1702
|
+
}
|
|
1703
|
+
export interface UnidadeContatoPaginador {
|
|
1704
|
+
paginas: number;
|
|
1705
|
+
tamanho: number;
|
|
1706
|
+
total: number;
|
|
1707
|
+
}
|
|
1622
1708
|
export interface UnidadeCriar {
|
|
1623
1709
|
aviso_limite_percentual?: number | null;
|
|
1624
1710
|
cnpj: string;
|
|
@@ -1638,6 +1724,11 @@ export interface UnidadeCriar {
|
|
|
1638
1724
|
tiny?: UnidadeCriarTiny | null;
|
|
1639
1725
|
}
|
|
1640
1726
|
export type UnidadeCriarTiny = Record<string, unknown>;
|
|
1727
|
+
export interface UnidadeDaSessaoDoWhatsapp {
|
|
1728
|
+
cnpj: string;
|
|
1729
|
+
id: string;
|
|
1730
|
+
razao_social: string;
|
|
1731
|
+
}
|
|
1641
1732
|
export interface UnidadeDoCliente {
|
|
1642
1733
|
cnpj: string;
|
|
1643
1734
|
id: string;
|
package/dist/support/rotas.d.ts
CHANGED
|
@@ -742,6 +742,22 @@ export declare function criar_tarefa(credencial_de_acesso: CredencialDeAcesso, c
|
|
|
742
742
|
* `GET /tarefa/autocomplete`
|
|
743
743
|
*/
|
|
744
744
|
export declare function buscar_auto_complete_tarefa(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarAutoCompleteTarefa, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PaginaTarefaAutoComplete>;
|
|
745
|
+
/**
|
|
746
|
+
* Aplica a mesma mudança em várias tarefas
|
|
747
|
+
*
|
|
748
|
+
* Exige a permissão `editar` na área `projetos`. Aplica a mesma mudança em 1 a 500 tarefas (`tarefa_ids`, sem repetição), com pelo menos um destes campos: `secao_id` leva as tarefas principais para o fim dessa coluna, na ordem pedida (as tarefas e a coluna precisam ser do mesmo projeto); `responsavel_id` troca o responsável (`null` tira); `prazo` troca o prazo (`null` apaga; não pode ficar antes do início de nenhuma); `etiqueta_adicionar` põe a etiqueta em quem não a tem e `etiqueta_remover` tira de quem tem. Tudo é conferido antes de gravar: uma tarefa inexistente, subtarefa (com `secao_id`), de outro projeto ou com prazo antes do início recusa o pedido inteiro. A tarefa em que nada muda fica como está. Vale a regra da coluna que conclui do `PATCH /tarefa/{id}`: entrar nela conclui e sair reabre. Cada tarefa alterada ganha as linhas na atividade; o novo responsável e, ao concluir, o criador recebem notificação. Devolve as tarefas pedidas, já atualizadas, na ordem pedida. As tarefas são gravadas uma a uma: se o pedido parar no meio, repeti-lo completa só o que faltou. Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais a coluna e as tarefas dele respondem `404`. O responsável sempre enxerga a própria tarefa.
|
|
749
|
+
*
|
|
750
|
+
* `PATCH /tarefa/em_massa`
|
|
751
|
+
*/
|
|
752
|
+
export declare function atualizar_em_massa_tarefa(credencial_de_acesso: CredencialDeAcesso, corpo_da_requisicao: tipos.TarefaAtualizarEmMassa, opcoes_da_chamada?: OpcoesDaChamada): Promise<Array<tipos.Tarefa>>;
|
|
753
|
+
/**
|
|
754
|
+
* Exclui várias tarefas
|
|
755
|
+
*
|
|
756
|
+
* Exige a permissão `deletar` na área `projetos`. Exclusão lógica de 1 a 500 tarefas (`tarefa_ids`, sem repetição) e das subtarefas delas. Tudo é conferido antes de gravar: uma tarefa inexistente ou já excluída recusa o pedido inteiro. As tarefas são excluídas uma a uma: se o pedido parar no meio, repeti-lo com as que sobraram termina a exclusão. Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais as tarefas dele respondem `404`. O responsável sempre enxerga a própria tarefa.
|
|
757
|
+
*
|
|
758
|
+
* `DELETE /tarefa/em_massa`
|
|
759
|
+
*/
|
|
760
|
+
export declare function deletar_em_massa_tarefa(credencial_de_acesso: CredencialDeAcesso, corpo_da_requisicao: tipos.TarefaDeletarEmMassa, opcoes_da_chamada?: OpcoesDaChamada): Promise<void>;
|
|
745
761
|
/**
|
|
746
762
|
* Busca tarefas por filtro
|
|
747
763
|
*
|
package/dist/support/rotas.js
CHANGED
|
@@ -904,6 +904,40 @@ export function buscar_auto_complete_tarefa(credencial_de_acesso, parametros = {
|
|
|
904
904
|
formato_da_resposta: "json",
|
|
905
905
|
}, opcoes_da_chamada);
|
|
906
906
|
}
|
|
907
|
+
/**
|
|
908
|
+
* Aplica a mesma mudança em várias tarefas
|
|
909
|
+
*
|
|
910
|
+
* Exige a permissão `editar` na área `projetos`. Aplica a mesma mudança em 1 a 500 tarefas (`tarefa_ids`, sem repetição), com pelo menos um destes campos: `secao_id` leva as tarefas principais para o fim dessa coluna, na ordem pedida (as tarefas e a coluna precisam ser do mesmo projeto); `responsavel_id` troca o responsável (`null` tira); `prazo` troca o prazo (`null` apaga; não pode ficar antes do início de nenhuma); `etiqueta_adicionar` põe a etiqueta em quem não a tem e `etiqueta_remover` tira de quem tem. Tudo é conferido antes de gravar: uma tarefa inexistente, subtarefa (com `secao_id`), de outro projeto ou com prazo antes do início recusa o pedido inteiro. A tarefa em que nada muda fica como está. Vale a regra da coluna que conclui do `PATCH /tarefa/{id}`: entrar nela conclui e sair reabre. Cada tarefa alterada ganha as linhas na atividade; o novo responsável e, ao concluir, o criador recebem notificação. Devolve as tarefas pedidas, já atualizadas, na ordem pedida. As tarefas são gravadas uma a uma: se o pedido parar no meio, repeti-lo completa só o que faltou. Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais a coluna e as tarefas dele respondem `404`. O responsável sempre enxerga a própria tarefa.
|
|
911
|
+
*
|
|
912
|
+
* `PATCH /tarefa/em_massa`
|
|
913
|
+
*/
|
|
914
|
+
export function atualizar_em_massa_tarefa(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
|
|
915
|
+
return chamar_servico({
|
|
916
|
+
servico: SERVICO_DESTA_API,
|
|
917
|
+
metodo_http: "PATCH",
|
|
918
|
+
caminho_da_rota: "/tarefa/em_massa",
|
|
919
|
+
credencial_de_acesso,
|
|
920
|
+
corpo_json: corpo_da_requisicao,
|
|
921
|
+
formato_da_resposta: "json",
|
|
922
|
+
}, opcoes_da_chamada);
|
|
923
|
+
}
|
|
924
|
+
/**
|
|
925
|
+
* Exclui várias tarefas
|
|
926
|
+
*
|
|
927
|
+
* Exige a permissão `deletar` na área `projetos`. Exclusão lógica de 1 a 500 tarefas (`tarefa_ids`, sem repetição) e das subtarefas delas. Tudo é conferido antes de gravar: uma tarefa inexistente ou já excluída recusa o pedido inteiro. As tarefas são excluídas uma a uma: se o pedido parar no meio, repeti-lo com as que sobraram termina a exclusão. Visibilidade: projeto com `visibilidade` `MEMBROS` só aparece para o dono, os membros e o master do TermoAuth; para os demais as tarefas dele respondem `404`. O responsável sempre enxerga a própria tarefa.
|
|
928
|
+
*
|
|
929
|
+
* `DELETE /tarefa/em_massa`
|
|
930
|
+
*/
|
|
931
|
+
export function deletar_em_massa_tarefa(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
|
|
932
|
+
return chamar_servico({
|
|
933
|
+
servico: SERVICO_DESTA_API,
|
|
934
|
+
metodo_http: "DELETE",
|
|
935
|
+
caminho_da_rota: "/tarefa/em_massa",
|
|
936
|
+
credencial_de_acesso,
|
|
937
|
+
corpo_json: corpo_da_requisicao,
|
|
938
|
+
formato_da_resposta: "sem_conteudo",
|
|
939
|
+
}, opcoes_da_chamada);
|
|
940
|
+
}
|
|
907
941
|
/**
|
|
908
942
|
* Busca tarefas por filtro
|
|
909
943
|
*
|
package/dist/support/tipos.d.ts
CHANGED
|
@@ -665,6 +665,36 @@ export interface TarefaAtualizar {
|
|
|
665
665
|
secao_id?: string | null;
|
|
666
666
|
titulo?: string | null;
|
|
667
667
|
}
|
|
668
|
+
/**
|
|
669
|
+
* A mesma mudança em várias tarefas de uma vez (as marcadas no quadro). Pelo menos um campo além de
|
|
670
|
+
* `tarefa_ids`; o que vem vale para todas.
|
|
671
|
+
*/
|
|
672
|
+
export interface TarefaAtualizarEmMassa {
|
|
673
|
+
/**
|
|
674
|
+
* Etiqueta a pôr nas tarefas que ainda não a têm.
|
|
675
|
+
*/
|
|
676
|
+
etiqueta_adicionar?: string | null;
|
|
677
|
+
/**
|
|
678
|
+
* Etiqueta a tirar das tarefas que a têm.
|
|
679
|
+
*/
|
|
680
|
+
etiqueta_remover?: string | null;
|
|
681
|
+
/**
|
|
682
|
+
* Novo prazo; `null` apaga o prazo.
|
|
683
|
+
*/
|
|
684
|
+
prazo?: string | null;
|
|
685
|
+
/**
|
|
686
|
+
* Novo responsável; `null` tira o responsável.
|
|
687
|
+
*/
|
|
688
|
+
responsavel_id?: string | null;
|
|
689
|
+
/**
|
|
690
|
+
* Coluna de destino: só tarefas principais do mesmo projeto da coluna.
|
|
691
|
+
*/
|
|
692
|
+
secao_id?: string | null;
|
|
693
|
+
/**
|
|
694
|
+
* Tarefas (de 1 a 500), na ordem em que entram no fim da coluna quando há `secao_id`.
|
|
695
|
+
*/
|
|
696
|
+
tarefa_ids: Array<string>;
|
|
697
|
+
}
|
|
668
698
|
export interface TarefaAutoComplete {
|
|
669
699
|
id: string;
|
|
670
700
|
projeto_nome: string;
|
|
@@ -695,6 +725,15 @@ export interface TarefaCriar {
|
|
|
695
725
|
ticket_id?: string | null;
|
|
696
726
|
titulo: string;
|
|
697
727
|
}
|
|
728
|
+
/**
|
|
729
|
+
* Tarefas para excluir de uma vez.
|
|
730
|
+
*/
|
|
731
|
+
export interface TarefaDeletarEmMassa {
|
|
732
|
+
/**
|
|
733
|
+
* Tarefas (de 1 a 500); cada uma sai com as subtarefas dela.
|
|
734
|
+
*/
|
|
735
|
+
tarefa_ids: Array<string>;
|
|
736
|
+
}
|
|
698
737
|
export interface Ticket {
|
|
699
738
|
anexos_total: number;
|
|
700
739
|
aplicativo: AplicativoResumo;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "termo_core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.18",
|
|
4
4
|
"description": "Todos os clientes da Termotubos num pacote só: um módulo por serviço e cada rota da API como uma função com fetch, com o endereço resolvido pelo ambiente atual.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "TI Termotubos <ti@termotubos.com.br>",
|