termo_core 0.1.6 → 0.1.8

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.
@@ -6,6 +6,7 @@ export declare const TERMO_FLOW: ServicoTermotubos;
6
6
  export declare const TERMO_INTRANET: ServicoTermotubos;
7
7
  export declare const TERMO_LEADS: ServicoTermotubos;
8
8
  export declare const TERMO_MCP: ServicoTermotubos;
9
+ export declare const TERMO_MIRO: ServicoTermotubos;
9
10
  export declare const TERMO_PORTAL: ServicoTermotubos;
10
11
  export declare const TERMO_QUALITY: ServicoTermotubos;
11
12
  export declare const TERMO_STATUS: ServicoTermotubos;
@@ -55,6 +55,14 @@ export const TERMO_MCP = {
55
55
  endereco_em_production: "https://api-mcp.termotubos.com.br",
56
56
  ativo: false,
57
57
  };
58
+ export const TERMO_MIRO = {
59
+ nome_do_servico: "TermoMiro",
60
+ nome_do_modulo: "miro",
61
+ endereco_no_localhost: "http://localhost:51141",
62
+ endereco_no_sandbox: "https://sandbox-api-miro.termotubos.com.br",
63
+ endereco_em_production: "https://api-miro.termotubos.com.br",
64
+ ativo: true,
65
+ };
58
66
  export const TERMO_PORTAL = {
59
67
  nome_do_servico: "TermoPortal",
60
68
  nome_do_modulo: "portal",
@@ -127,6 +135,7 @@ export const TODOS_OS_SERVICOS = [
127
135
  TERMO_INTRANET,
128
136
  TERMO_LEADS,
129
137
  TERMO_MCP,
138
+ TERMO_MIRO,
130
139
  TERMO_PORTAL,
131
140
  TERMO_QUALITY,
132
141
  TERMO_STATUS,
@@ -4,7 +4,7 @@ import { type OpcoesDaChamada } from "../base/requisicao.js";
4
4
  /**
5
5
  * Cadastra um robô de atendimento
6
6
  *
7
- * Exige a permissão `criar` da área `configuracoes`. `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` 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 não tem saída; `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) e `equipe_id` opcional, e uma varredura a cada minuto passa para essa equipe 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: só vale com `atender_contatos_novos` ligado e, sem ele ou sem ligação, o contato novo sai pelo `inicio`. O texto fixo aceita marcadores como `{{cliente.nome}}` e `{{ultimo_pedido.itens}}`.
7
+ * 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` 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 não tem saída; `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) e `equipe_id` opcional, e uma varredura a cada minuto passa para essa equipe 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: só vale com `atender_contatos_novos` ligado e, sem ele ou sem ligação, o contato novo sai pelo `inicio`. O texto fixo aceita marcadores como `{{cliente.nome}}` e `{{ultimo_pedido.itens}}`.
8
8
  *
9
9
  * `POST /robo`
10
10
  */
@@ -12,7 +12,7 @@ export declare function criar_robo(credencial_de_acesso: CredencialDeAcesso, cor
12
12
  /**
13
13
  * Atualiza um robô pelo id
14
14
  *
15
- * Exige a permissão `editar` da área `configuracoes`. 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ô e `atender_contatos_novos` decide se o robô atende quem não está na lista de clientes (cliente cadastrado com o atendente desligado continua indo para a equipe). `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` 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 não tem saída; `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) e `equipe_id` opcional, e uma varredura a cada minuto passa para essa equipe 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: só vale com `atender_contatos_novos` ligado e, sem ele ou sem ligação, o contato novo sai pelo `inicio`. O texto fixo aceita marcadores como `{{cliente.nome}}` e `{{ultimo_pedido.itens}}`.
15
+ * 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ô e `atender_contatos_novos` decide se o robô atende quem não está na lista de clientes (cliente cadastrado com o atendente desligado continua indo para a equipe). `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` 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 não tem saída; `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) e `equipe_id` opcional, e uma varredura a cada minuto passa para essa equipe 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: só vale com `atender_contatos_novos` ligado e, sem ele ou sem ligação, o contato novo sai pelo `inicio`. O texto fixo aceita marcadores como `{{cliente.nome}}` e `{{ultimo_pedido.itens}}`.
16
16
  *
17
17
  * `PATCH /robo/{id}`
18
18
  */
@@ -4,7 +4,7 @@ import { TERMO_FLOW as SERVICO_DESTA_API } from "../base/servicos.js";
4
4
  /**
5
5
  * Cadastra um robô de atendimento
6
6
  *
7
- * Exige a permissão `criar` da área `configuracoes`. `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` 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 não tem saída; `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) e `equipe_id` opcional, e uma varredura a cada minuto passa para essa equipe 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: só vale com `atender_contatos_novos` ligado e, sem ele ou sem ligação, o contato novo sai pelo `inicio`. O texto fixo aceita marcadores como `{{cliente.nome}}` e `{{ultimo_pedido.itens}}`.
7
+ * 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` 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 não tem saída; `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) e `equipe_id` opcional, e uma varredura a cada minuto passa para essa equipe 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: só vale com `atender_contatos_novos` ligado e, sem ele ou sem ligação, o contato novo sai pelo `inicio`. O texto fixo aceita marcadores como `{{cliente.nome}}` e `{{ultimo_pedido.itens}}`.
8
8
  *
9
9
  * `POST /robo`
10
10
  */
@@ -21,7 +21,7 @@ export function criar_robo(credencial_de_acesso, corpo_da_requisicao, opcoes_da_
21
21
  /**
22
22
  * Atualiza um robô pelo id
23
23
  *
24
- * Exige a permissão `editar` da área `configuracoes`. 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ô e `atender_contatos_novos` decide se o robô atende quem não está na lista de clientes (cliente cadastrado com o atendente desligado continua indo para a equipe). `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` 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 não tem saída; `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) e `equipe_id` opcional, e uma varredura a cada minuto passa para essa equipe 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: só vale com `atender_contatos_novos` ligado e, sem ele ou sem ligação, o contato novo sai pelo `inicio`. O texto fixo aceita marcadores como `{{cliente.nome}}` e `{{ultimo_pedido.itens}}`.
24
+ * 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ô e `atender_contatos_novos` decide se o robô atende quem não está na lista de clientes (cliente cadastrado com o atendente desligado continua indo para a equipe). `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` 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 não tem saída; `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) e `equipe_id` opcional, e uma varredura a cada minuto passa para essa equipe 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: só vale com `atender_contatos_novos` ligado e, sem ele ou 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
  * `PATCH /robo/{id}`
27
27
  */
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export * as flow from "./flow/index.js";
6
6
  export * as intranet from "./intranet/index.js";
7
7
  export * as leads from "./leads/index.js";
8
8
  export * as mcp from "./mcp/index.js";
9
+ export * as miro from "./miro/index.js";
9
10
  export * as portal from "./portal/index.js";
10
11
  export * as quality from "./quality/index.js";
11
12
  export * as status from "./status/index.js";
package/dist/index.js CHANGED
@@ -7,6 +7,7 @@ export * as flow from "./flow/index.js";
7
7
  export * as intranet from "./intranet/index.js";
8
8
  export * as leads from "./leads/index.js";
9
9
  export * as mcp from "./mcp/index.js";
10
+ export * as miro from "./miro/index.js";
10
11
  export * as portal from "./portal/index.js";
11
12
  export * as quality from "./quality/index.js";
12
13
  export * as status from "./status/index.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Cliente tipado da API do TermoMiro, gerado a partir do `openapi.json` do serviço.
3
+ */
4
+ export * from "./tipos.js";
5
+ export * from "./rotas.js";
6
+ export { CredencialDeAcesso, ErroAoChamarServico } from "../base/index.js";
@@ -0,0 +1,7 @@
1
+ // Gerado pelo gerador do TermoCore (`cargo run -p gerador`). Não edite à mão: a próxima geração sobrescreve.
2
+ /**
3
+ * Cliente tipado da API do TermoMiro, gerado a partir do `openapi.json` do serviço.
4
+ */
5
+ export * from "./tipos.js";
6
+ export * from "./rotas.js";
7
+ export { CredencialDeAcesso, ErroAoChamarServico } from "../base/index.js";
@@ -0,0 +1,108 @@
1
+ import type * as tipos from "./tipos.js";
2
+ import type { CredencialDeAcesso } from "../base/credencial.js";
3
+ import { type OpcoesDaChamada } from "../base/requisicao.js";
4
+ /**
5
+ * Parâmetros de consulta e de cabeçalho de `/board`.
6
+ */
7
+ export interface ParametrosDeBuscarPaginadorBoard {
8
+ pagina?: number;
9
+ tamanho?: number;
10
+ nome?: string;
11
+ favoritos?: boolean;
12
+ }
13
+ /**
14
+ * Parâmetros de consulta e de cabeçalho de `/board/autocomplete`.
15
+ */
16
+ export interface ParametrosDeBuscarAutoCompleteBoard {
17
+ busca?: string;
18
+ pagina?: number;
19
+ tamanho?: number;
20
+ }
21
+ /**
22
+ * Parâmetros de consulta e de cabeçalho de `/board/filtro`.
23
+ */
24
+ export interface ParametrosDeBuscarPeloFiltroBoard {
25
+ nome?: string;
26
+ favoritos?: boolean;
27
+ dono_id?: string;
28
+ }
29
+ /**
30
+ * Lista os boards paginados
31
+ *
32
+ * Os boards que a pessoa enxerga, do mais recente para o mais antigo, sempre 50 por página: `tamanho` é ignorado. `pagina` começa em 1; aceita `nome` e `favoritos` como no filtro.
33
+ *
34
+ * `GET /board`
35
+ */
36
+ export declare function buscar_paginador_board(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPaginadorBoard, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PaginaBoard>;
37
+ /**
38
+ * Cria um board
39
+ *
40
+ * Livre para todo colaborador logado; quem cria é o dono. `nome` é obrigatório (até 120 caracteres), `descricao` vai até 500, `cor` segue o formato `#00397c` (padrão `#00397c`) e `visibilidade` é `ORGANIZACAO` (padrão, todos veem e editam) ou `MEMBROS` (só o dono e os `membro_ids`). O canvas nasce vazio e é editado em tempo real em `GET /board/ws/{id}?token=<JWT>` (WebSocket no protocolo do Yjs).
41
+ *
42
+ * `POST /board`
43
+ */
44
+ export declare function criar_board(credencial_de_acesso: CredencialDeAcesso, corpo_da_requisicao: tipos.BoardCriar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Board>;
45
+ /**
46
+ * Lista básica de boards para seleção
47
+ *
48
+ * Id, nome e cor dos boards que a pessoa enxerga, em ordem alfabética. `busca` procura o trecho no nome. `pagina` começa em 1 e `tamanho` tem padrão 10.
49
+ *
50
+ * `GET /board/autocomplete`
51
+ */
52
+ export declare function buscar_auto_complete_board(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarAutoCompleteBoard, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PaginaBoardAutoComplete>;
53
+ /**
54
+ * Busca boards por filtro
55
+ *
56
+ * Todos os boards que a pessoa enxerga, do mais recente para o mais antigo. `nome` procura o trecho no nome sem diferenciar maiúsculas, `favoritos=true` traz só os favoritos de quem pediu e `dono_id` só os de um dono.
57
+ *
58
+ * `GET /board/filtro`
59
+ */
60
+ export declare function buscar_pelo_filtro_board(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPeloFiltroBoard, opcoes_da_chamada?: OpcoesDaChamada): Promise<Array<tipos.Board>>;
61
+ /**
62
+ * Baixa uma imagem do canvas guardada no banco
63
+ *
64
+ * Pública (o `<img>` do canvas não manda token): devolve os bytes da imagem que ficou no banco porque o TermoBucket falhou, com cache longo.
65
+ *
66
+ * `GET /board/imagem/{id}`
67
+ */
68
+ export declare function buscar_imagem_board(id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<void>;
69
+ /**
70
+ * Busca um board pelo id
71
+ *
72
+ * Devolve o board com o dono, os membros, se é favorito de quem pediu e se essa pessoa pode gerenciá-lo (`pode_gerenciar`: dono ou master do TermoAuth). Board `MEMBROS` de que a pessoa não participa responde `404`, como se não existisse.
73
+ *
74
+ * `GET /board/{id}`
75
+ */
76
+ export declare function buscar_pelo_id_board(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Board>;
77
+ /**
78
+ * Atualiza um board pelo id
79
+ *
80
+ * Atualização parcial. `nome`, `descricao` (`null` apaga) e `cor` valem para quem enxerga o board; `visibilidade` e `membro_ids` (a lista inteira) só para o dono ou o master do TermoAuth. `favorito` marca ou desmarca o board como favorito de quem pediu, e `miniatura` é o SVG (até 200 KB) da prévia mostrada na lista; esses dois não mudam a ordem de recentes.
81
+ *
82
+ * `PATCH /board/{id}`
83
+ */
84
+ export declare function atualizar_pelo_id_board(credencial_de_acesso: CredencialDeAcesso, id: string, corpo_da_requisicao: tipos.BoardAtualizar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Board>;
85
+ /**
86
+ * Exclui um board pelo id
87
+ *
88
+ * Só o dono ou o master do TermoAuth. Exclusão lógica: o board some das listas e quem estava com ele aberto é desconectado.
89
+ *
90
+ * `DELETE /board/{id}`
91
+ */
92
+ export declare function deletar_pelo_id_board(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<void>;
93
+ /**
94
+ * Duplica um board
95
+ *
96
+ * Cria "Cópia de <nome>" com todo o conteúdo do canvas. Quem pediu vira o dono da cópia, que mantém a visibilidade do original, sem membros e sem favoritos.
97
+ *
98
+ * `POST /board/{id}/duplicar`
99
+ */
100
+ export declare function duplicar_board(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Board>;
101
+ /**
102
+ * Envia uma imagem para o canvas
103
+ *
104
+ * Guarda uma imagem PNG, JPG, GIF ou WEBP de até 10 MB (`arquivo_base64`, cru com `tipo` ou como data URL) e devolve o endereço público para o elemento de imagem do canvas. A imagem vai ao TermoBucket como arquivo público; se o bucket falhar, fica no banco e o endereço é relativo à API (`/board/imagem/{id}`).
105
+ *
106
+ * `POST /board/{id}/imagem`
107
+ */
108
+ export declare function guardar_imagem_board(credencial_de_acesso: CredencialDeAcesso, id: string, corpo_da_requisicao: tipos.ImagemEnviar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.ImagemGuardada>;
@@ -0,0 +1,168 @@
1
+ // Gerado pelo gerador do TermoCore (`cargo run -p gerador`). Não edite à mão: a próxima geração sobrescreve.
2
+ import { chamar_servico, codificar_parametro_de_caminho } from "../base/requisicao.js";
3
+ import { TERMO_MIRO as SERVICO_DESTA_API } from "../base/servicos.js";
4
+ /**
5
+ * Lista os boards paginados
6
+ *
7
+ * Os boards que a pessoa enxerga, do mais recente para o mais antigo, sempre 50 por página: `tamanho` é ignorado. `pagina` começa em 1; aceita `nome` e `favoritos` como no filtro.
8
+ *
9
+ * `GET /board`
10
+ */
11
+ export function buscar_paginador_board(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
12
+ return chamar_servico({
13
+ servico: SERVICO_DESTA_API,
14
+ metodo_http: "GET",
15
+ caminho_da_rota: "/board",
16
+ credencial_de_acesso,
17
+ parametros_de_consulta: parametros,
18
+ formato_da_resposta: "json",
19
+ }, opcoes_da_chamada);
20
+ }
21
+ /**
22
+ * Cria um board
23
+ *
24
+ * Livre para todo colaborador logado; quem cria é o dono. `nome` é obrigatório (até 120 caracteres), `descricao` vai até 500, `cor` segue o formato `#00397c` (padrão `#00397c`) e `visibilidade` é `ORGANIZACAO` (padrão, todos veem e editam) ou `MEMBROS` (só o dono e os `membro_ids`). O canvas nasce vazio e é editado em tempo real em `GET /board/ws/{id}?token=<JWT>` (WebSocket no protocolo do Yjs).
25
+ *
26
+ * `POST /board`
27
+ */
28
+ export function criar_board(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
29
+ return chamar_servico({
30
+ servico: SERVICO_DESTA_API,
31
+ metodo_http: "POST",
32
+ caminho_da_rota: "/board",
33
+ credencial_de_acesso,
34
+ corpo_json: corpo_da_requisicao,
35
+ formato_da_resposta: "json",
36
+ }, opcoes_da_chamada);
37
+ }
38
+ /**
39
+ * Lista básica de boards para seleção
40
+ *
41
+ * Id, nome e cor dos boards que a pessoa enxerga, em ordem alfabética. `busca` procura o trecho no nome. `pagina` começa em 1 e `tamanho` tem padrão 10.
42
+ *
43
+ * `GET /board/autocomplete`
44
+ */
45
+ export function buscar_auto_complete_board(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
46
+ return chamar_servico({
47
+ servico: SERVICO_DESTA_API,
48
+ metodo_http: "GET",
49
+ caminho_da_rota: "/board/autocomplete",
50
+ credencial_de_acesso,
51
+ parametros_de_consulta: parametros,
52
+ formato_da_resposta: "json",
53
+ }, opcoes_da_chamada);
54
+ }
55
+ /**
56
+ * Busca boards por filtro
57
+ *
58
+ * Todos os boards que a pessoa enxerga, do mais recente para o mais antigo. `nome` procura o trecho no nome sem diferenciar maiúsculas, `favoritos=true` traz só os favoritos de quem pediu e `dono_id` só os de um dono.
59
+ *
60
+ * `GET /board/filtro`
61
+ */
62
+ export function buscar_pelo_filtro_board(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
63
+ return chamar_servico({
64
+ servico: SERVICO_DESTA_API,
65
+ metodo_http: "GET",
66
+ caminho_da_rota: "/board/filtro",
67
+ credencial_de_acesso,
68
+ parametros_de_consulta: parametros,
69
+ formato_da_resposta: "json",
70
+ }, opcoes_da_chamada);
71
+ }
72
+ /**
73
+ * Baixa uma imagem do canvas guardada no banco
74
+ *
75
+ * Pública (o `<img>` do canvas não manda token): devolve os bytes da imagem que ficou no banco porque o TermoBucket falhou, com cache longo.
76
+ *
77
+ * `GET /board/imagem/{id}`
78
+ */
79
+ export function buscar_imagem_board(id, opcoes_da_chamada) {
80
+ return chamar_servico({
81
+ servico: SERVICO_DESTA_API,
82
+ metodo_http: "GET",
83
+ caminho_da_rota: `/board/imagem/${codificar_parametro_de_caminho(id)}`,
84
+ formato_da_resposta: "sem_conteudo",
85
+ }, opcoes_da_chamada);
86
+ }
87
+ /**
88
+ * Busca um board pelo id
89
+ *
90
+ * Devolve o board com o dono, os membros, se é favorito de quem pediu e se essa pessoa pode gerenciá-lo (`pode_gerenciar`: dono ou master do TermoAuth). Board `MEMBROS` de que a pessoa não participa responde `404`, como se não existisse.
91
+ *
92
+ * `GET /board/{id}`
93
+ */
94
+ export function buscar_pelo_id_board(credencial_de_acesso, id, opcoes_da_chamada) {
95
+ return chamar_servico({
96
+ servico: SERVICO_DESTA_API,
97
+ metodo_http: "GET",
98
+ caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}`,
99
+ credencial_de_acesso,
100
+ formato_da_resposta: "json",
101
+ }, opcoes_da_chamada);
102
+ }
103
+ /**
104
+ * Atualiza um board pelo id
105
+ *
106
+ * Atualização parcial. `nome`, `descricao` (`null` apaga) e `cor` valem para quem enxerga o board; `visibilidade` e `membro_ids` (a lista inteira) só para o dono ou o master do TermoAuth. `favorito` marca ou desmarca o board como favorito de quem pediu, e `miniatura` é o SVG (até 200 KB) da prévia mostrada na lista; esses dois não mudam a ordem de recentes.
107
+ *
108
+ * `PATCH /board/{id}`
109
+ */
110
+ export function atualizar_pelo_id_board(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
111
+ return chamar_servico({
112
+ servico: SERVICO_DESTA_API,
113
+ metodo_http: "PATCH",
114
+ caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}`,
115
+ credencial_de_acesso,
116
+ corpo_json: corpo_da_requisicao,
117
+ formato_da_resposta: "json",
118
+ }, opcoes_da_chamada);
119
+ }
120
+ /**
121
+ * Exclui um board pelo id
122
+ *
123
+ * Só o dono ou o master do TermoAuth. Exclusão lógica: o board some das listas e quem estava com ele aberto é desconectado.
124
+ *
125
+ * `DELETE /board/{id}`
126
+ */
127
+ export function deletar_pelo_id_board(credencial_de_acesso, id, opcoes_da_chamada) {
128
+ return chamar_servico({
129
+ servico: SERVICO_DESTA_API,
130
+ metodo_http: "DELETE",
131
+ caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}`,
132
+ credencial_de_acesso,
133
+ formato_da_resposta: "sem_conteudo",
134
+ }, opcoes_da_chamada);
135
+ }
136
+ /**
137
+ * Duplica um board
138
+ *
139
+ * Cria "Cópia de <nome>" com todo o conteúdo do canvas. Quem pediu vira o dono da cópia, que mantém a visibilidade do original, sem membros e sem favoritos.
140
+ *
141
+ * `POST /board/{id}/duplicar`
142
+ */
143
+ export function duplicar_board(credencial_de_acesso, id, opcoes_da_chamada) {
144
+ return chamar_servico({
145
+ servico: SERVICO_DESTA_API,
146
+ metodo_http: "POST",
147
+ caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}/duplicar`,
148
+ credencial_de_acesso,
149
+ formato_da_resposta: "json",
150
+ }, opcoes_da_chamada);
151
+ }
152
+ /**
153
+ * Envia uma imagem para o canvas
154
+ *
155
+ * Guarda uma imagem PNG, JPG, GIF ou WEBP de até 10 MB (`arquivo_base64`, cru com `tipo` ou como data URL) e devolve o endereço público para o elemento de imagem do canvas. A imagem vai ao TermoBucket como arquivo público; se o bucket falhar, fica no banco e o endereço é relativo à API (`/board/imagem/{id}`).
156
+ *
157
+ * `POST /board/{id}/imagem`
158
+ */
159
+ export function guardar_imagem_board(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
160
+ return chamar_servico({
161
+ servico: SERVICO_DESTA_API,
162
+ metodo_http: "POST",
163
+ caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}/imagem`,
164
+ credencial_de_acesso,
165
+ corpo_json: corpo_da_requisicao,
166
+ formato_da_resposta: "json",
167
+ }, opcoes_da_chamada);
168
+ }
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Board com tudo o que a tela precisa: o dono e os membros com nome, e o que vale para quem está
3
+ * olhando (`favorito` e `pode_gerenciar`). O conteúdo do canvas não vem aqui: ele chega pelo
4
+ * tempo real (`/board/ws/{id}`).
5
+ */
6
+ export interface Board {
7
+ atualizado_em: string;
8
+ cor: string;
9
+ criado_em: string;
10
+ descricao?: string | null;
11
+ dono: ColaboradorResumo;
12
+ favorito: boolean;
13
+ id: string;
14
+ membros: Array<ColaboradorResumo>;
15
+ miniatura?: string | null;
16
+ nome: string;
17
+ pode_gerenciar: boolean;
18
+ visibilidade: string;
19
+ }
20
+ export interface BoardAtualizar {
21
+ cor?: string | null;
22
+ descricao?: string | null;
23
+ favorito?: boolean | null;
24
+ membro_ids?: Array<string> | null;
25
+ miniatura?: string | null;
26
+ nome?: string | null;
27
+ visibilidade?: string | null;
28
+ }
29
+ export interface BoardAutoComplete {
30
+ cor: string;
31
+ id: string;
32
+ nome: string;
33
+ }
34
+ export interface BoardCriar {
35
+ cor?: string | null;
36
+ descricao?: string | null;
37
+ membro_ids?: Array<string> | null;
38
+ nome: string;
39
+ visibilidade?: string | null;
40
+ }
41
+ /**
42
+ * Resumo do colaborador (id e nome) para mostrar autoria.
43
+ */
44
+ export interface ColaboradorResumo {
45
+ id: string;
46
+ nome: string;
47
+ }
48
+ export interface ImagemEnviar {
49
+ /**
50
+ * O arquivo em base64 (pode vir como data URL: `data:image/png;base64,...`).
51
+ */
52
+ arquivo_base64: string;
53
+ nome?: string | null;
54
+ /**
55
+ * Tipo da imagem quando o base64 não é data URL (ex.: `image/png`).
56
+ */
57
+ tipo?: string | null;
58
+ }
59
+ export interface ImagemGuardada {
60
+ /**
61
+ * Endereço público da imagem; quando começa com `/`, é relativo à API.
62
+ */
63
+ url: string;
64
+ }
65
+ /**
66
+ * Board com tudo o que a tela precisa: o dono e os membros com nome, e o que vale para quem está
67
+ * olhando (`favorito` e `pode_gerenciar`). O conteúdo do canvas não vem aqui: ele chega pelo
68
+ * tempo real (`/board/ws/{id}`).
69
+ */
70
+ export interface PaginaBoardItensItem {
71
+ atualizado_em: string;
72
+ cor: string;
73
+ criado_em: string;
74
+ descricao?: string | null;
75
+ dono: ColaboradorResumo;
76
+ favorito: boolean;
77
+ id: string;
78
+ membros: Array<ColaboradorResumo>;
79
+ miniatura?: string | null;
80
+ nome: string;
81
+ pode_gerenciar: boolean;
82
+ visibilidade: string;
83
+ }
84
+ export interface PaginaBoard {
85
+ itens: Array<PaginaBoardItensItem>;
86
+ pagina: number;
87
+ tamanho: number;
88
+ total: number;
89
+ }
90
+ export interface PaginaBoardAutoCompleteItensItem {
91
+ cor: string;
92
+ id: string;
93
+ nome: string;
94
+ }
95
+ export interface PaginaBoardAutoComplete {
96
+ itens: Array<PaginaBoardAutoCompleteItensItem>;
97
+ pagina: number;
98
+ tamanho: number;
99
+ total: number;
100
+ }
101
+ export interface RespostaDeErro {
102
+ erro: string;
103
+ }
@@ -0,0 +1,2 @@
1
+ // Gerado pelo gerador do TermoCore (`cargo run -p gerador`). Não edite à mão: a próxima geração sobrescreve.
2
+ export {};
@@ -975,7 +975,7 @@ export declare function deletar_pelo_id_contato(credencial_de_acesso: Credencial
975
975
  /**
976
976
  * Lista uma página de cotações
977
977
  *
978
- * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Devolve só o array da página, até 50 cotações, das mais novas para as mais antigas; o total, as páginas e as contagens por situação vêm de `GET /cotacao/paginador`, com os mesmos filtros. Quem não é colaborador interno precisa informar `unidade_id` de uma unidade da própria sessão; colaborador interno pode omitir e vê todas. Filtros opcionais: `status` (um dos 5 valores, senão 400 `Status inválido`); `busca` procura o número (C-1048 ou 1048), o SKU ou o nome de um item e a razão social da unidade; `inicio`/`fim` são datas AAAA-MM-DD do envio, em Brasília, inclusivas; `origem` (`carrinho`, `pedido_inteligente`) é exata; `cursor` é o id da última cotação da página anterior.
978
+ * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Devolve só o array da página, até 50 cotações, das mais novas para as mais antigas; o total, as páginas e as contagens por situação vêm de `GET /cotacao/paginador`, com os mesmos filtros. Quem não é colaborador interno precisa informar `unidade_id` de uma unidade da própria sessão; colaborador interno pode omitir e vê todas. Filtros opcionais: `status` (`esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`; outro valor dá 400 `Status inválido`); `busca` procura o número (C-1048 ou 1048), o SKU ou o nome de um item e a razão social da unidade; `inicio`/`fim` são datas AAAA-MM-DD do envio, em Brasília, inclusivas; `origem` (`carrinho`, `pedido_inteligente`) é exata; `cursor` é o id da última cotação da página anterior.
979
979
  *
980
980
  * `GET /cotacao`
981
981
  */
@@ -999,7 +999,7 @@ export declare function buscar_auto_complete_cotacao(credencial_de_acesso: Crede
999
999
  /**
1000
1000
  * Busca cotações por filtro
1001
1001
  *
1002
- * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Devolve as cotações não excluídas que casam com o filtro, até 50 por página (`pagina`, a partir de 1, padrão 1), das mais novas para as mais antigas. Quem não é colaborador interno precisa informar `unidade_id` de uma unidade da própria sessão; colaborador interno pode omitir e vê todas. `origem` (`carrinho`, `pedido_inteligente`) e `status` (`rascunho`, `esperando_aprovacao`, `concluido`, `nao_aprovado`, `em_transporte`) são exatos.
1002
+ * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Devolve as cotações não excluídas que casam com o filtro, até 50 por página (`pagina`, a partir de 1, padrão 1), das mais novas para as mais antigas. Quem não é colaborador interno precisa informar `unidade_id` de uma unidade da própria sessão; colaborador interno pode omitir e vê todas. `origem` (`carrinho`, `pedido_inteligente`) e `status` (`esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`) são exatos.
1003
1003
  *
1004
1004
  * `GET /cotacao/filtro`
1005
1005
  */
@@ -1007,7 +1007,7 @@ export declare function buscar_pelo_filtro_cotacao(credencial_de_acesso: Credenc
1007
1007
  /**
1008
1008
  * Total, páginas e contagens das cotações
1009
1009
  *
1010
- * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Recebe os mesmos filtros de `GET /cotacao` (o `cursor` é ignorado) e devolve `total` (cotações que casam), `paginas`, `tamanho` (50) e `contagens` por situação (`todas`, `esperando_aprovacao`, `concluido`, `nao_aprovado`, `em_transporte`), que usam os outros filtros e ignoram o `status`. Mesma regra de unidade da lista.
1010
+ * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Recebe os mesmos filtros de `GET /cotacao` (o `cursor` é ignorado) e devolve `total` (cotações que casam), `paginas`, `tamanho` (50) e `contagens` por situação (`todas`, `esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`), que usam os outros filtros e ignoram o `status`. Mesma regra de unidade da lista.
1011
1011
  *
1012
1012
  * `GET /cotacao/paginador`
1013
1013
  */
@@ -1015,15 +1015,15 @@ export declare function buscar_informacoes_paginador_cotacao(credencial_de_acess
1015
1015
  /**
1016
1016
  * Busca uma cotação pelo id
1017
1017
  *
1018
- * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Cotação excluída, ou de unidade fora da sessão, responde 404. Traz itens e totais.
1018
+ * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Cotação excluída, ou de unidade fora da sessão, responde 404. Traz itens (com `produto_id_tiny`, o ID do produto no Tiny quando a cotação foi gerada), totais e o caminho até o Tiny: `xls_gerado_em` (quando o XLS de proposta foi gerado) e a proposta achada no Tiny (`proposta_tiny_id`, `proposta_tiny_numero`, `proposta_tiny_situacao`, `proposta_tiny_conferida_em`), nulos enquanto não houver. `criado_por_colaborador_nome` é o colaborador da Termotubos que gerou a cotação pelo cliente (nulo quando foi o próprio cliente).
1019
1019
  *
1020
1020
  * `GET /cotacao/{id}`
1021
1021
  */
1022
1022
  export declare function buscar_pelo_id_cotacao(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Cotacao>;
1023
1023
  /**
1024
- * Muda o status de uma cotação
1024
+ * Muda a situação de uma cotação
1025
1025
  *
1026
- * Exige a permissão `editar` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Muda `status` (`rascunho`, `esperando_aprovacao`, `concluido`, `nao_aprovado`, `em_transporte`). Só colaborador interno marca `concluido` ou `em_transporte`; aprovar cotação acima do limite de faturamento exige `confirmar_acima_do_limite: true`. Cotação de unidade fora da sessão responde 404. Atualização parcial: campo ausente mantém o valor atual. Campos: `confirmar_acima_do_limite` (booleano) confirma o aviso de limite de faturamento ao aprovar.
1026
+ * Exige a permissão `editar` no módulo `Cotacoes` e ser colaborador interno: o cliente não muda a situação (403). Campo: `status` (`esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`). À mão só valem três passagens: `esperando_aprovacao` → `nao_aprovado` (recusar), `aguardando_importacao_tiny` → `esperando_aprovacao` (desfazer o XLS, que limpa `xls_gerado_em`) e `nao_aprovado` → `esperando_aprovacao` (reabrir, só se a cotação não tem proposta no Tiny). Ir para `aguardando_importacao_tiny` é pela geração do XLS e `no_tiny`, `concluido` e `nao_aprovado` vindos do Tiny são do próprio portal, lendo a proposta; qualquer outra passagem responde 409 `passagem_nao_permitida`. Pedir a situação atual devolve a cotação sem mudar nada. Se a situação mudou entre a leitura e a gravação, responde 409 `situacao_mudou`. Cotação de unidade fora da sessão responde 404. Campo ausente mantém o valor atual.
1027
1027
  *
1028
1028
  * `PATCH /cotacao/{id}`
1029
1029
  */
@@ -723,7 +723,7 @@ export function deletar_pelo_id_contato(credencial_de_acesso, id, opcoes_da_cham
723
723
  /**
724
724
  * Lista uma página de cotações
725
725
  *
726
- * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Devolve só o array da página, até 50 cotações, das mais novas para as mais antigas; o total, as páginas e as contagens por situação vêm de `GET /cotacao/paginador`, com os mesmos filtros. Quem não é colaborador interno precisa informar `unidade_id` de uma unidade da própria sessão; colaborador interno pode omitir e vê todas. Filtros opcionais: `status` (um dos 5 valores, senão 400 `Status inválido`); `busca` procura o número (C-1048 ou 1048), o SKU ou o nome de um item e a razão social da unidade; `inicio`/`fim` são datas AAAA-MM-DD do envio, em Brasília, inclusivas; `origem` (`carrinho`, `pedido_inteligente`) é exata; `cursor` é o id da última cotação da página anterior.
726
+ * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Devolve só o array da página, até 50 cotações, das mais novas para as mais antigas; o total, as páginas e as contagens por situação vêm de `GET /cotacao/paginador`, com os mesmos filtros. Quem não é colaborador interno precisa informar `unidade_id` de uma unidade da própria sessão; colaborador interno pode omitir e vê todas. Filtros opcionais: `status` (`esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`; outro valor dá 400 `Status inválido`); `busca` procura o número (C-1048 ou 1048), o SKU ou o nome de um item e a razão social da unidade; `inicio`/`fim` são datas AAAA-MM-DD do envio, em Brasília, inclusivas; `origem` (`carrinho`, `pedido_inteligente`) é exata; `cursor` é o id da última cotação da página anterior.
727
727
  *
728
728
  * `GET /cotacao`
729
729
  */
@@ -774,7 +774,7 @@ export function buscar_auto_complete_cotacao(credencial_de_acesso, parametros =
774
774
  /**
775
775
  * Busca cotações por filtro
776
776
  *
777
- * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Devolve as cotações não excluídas que casam com o filtro, até 50 por página (`pagina`, a partir de 1, padrão 1), das mais novas para as mais antigas. Quem não é colaborador interno precisa informar `unidade_id` de uma unidade da própria sessão; colaborador interno pode omitir e vê todas. `origem` (`carrinho`, `pedido_inteligente`) e `status` (`rascunho`, `esperando_aprovacao`, `concluido`, `nao_aprovado`, `em_transporte`) são exatos.
777
+ * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Devolve as cotações não excluídas que casam com o filtro, até 50 por página (`pagina`, a partir de 1, padrão 1), das mais novas para as mais antigas. Quem não é colaborador interno precisa informar `unidade_id` de uma unidade da própria sessão; colaborador interno pode omitir e vê todas. `origem` (`carrinho`, `pedido_inteligente`) e `status` (`esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`) são exatos.
778
778
  *
779
779
  * `GET /cotacao/filtro`
780
780
  */
@@ -791,7 +791,7 @@ export function buscar_pelo_filtro_cotacao(credencial_de_acesso, parametros = {}
791
791
  /**
792
792
  * Total, páginas e contagens das cotações
793
793
  *
794
- * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Recebe os mesmos filtros de `GET /cotacao` (o `cursor` é ignorado) e devolve `total` (cotações que casam), `paginas`, `tamanho` (50) e `contagens` por situação (`todas`, `esperando_aprovacao`, `concluido`, `nao_aprovado`, `em_transporte`), que usam os outros filtros e ignoram o `status`. Mesma regra de unidade da lista.
794
+ * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Recebe os mesmos filtros de `GET /cotacao` (o `cursor` é ignorado) e devolve `total` (cotações que casam), `paginas`, `tamanho` (50) e `contagens` por situação (`todas`, `esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`), que usam os outros filtros e ignoram o `status`. Mesma regra de unidade da lista.
795
795
  *
796
796
  * `GET /cotacao/paginador`
797
797
  */
@@ -808,7 +808,7 @@ export function buscar_informacoes_paginador_cotacao(credencial_de_acesso, param
808
808
  /**
809
809
  * Busca uma cotação pelo id
810
810
  *
811
- * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Cotação excluída, ou de unidade fora da sessão, responde 404. Traz itens e totais.
811
+ * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Cotação excluída, ou de unidade fora da sessão, responde 404. Traz itens (com `produto_id_tiny`, o ID do produto no Tiny quando a cotação foi gerada), totais e o caminho até o Tiny: `xls_gerado_em` (quando o XLS de proposta foi gerado) e a proposta achada no Tiny (`proposta_tiny_id`, `proposta_tiny_numero`, `proposta_tiny_situacao`, `proposta_tiny_conferida_em`), nulos enquanto não houver. `criado_por_colaborador_nome` é o colaborador da Termotubos que gerou a cotação pelo cliente (nulo quando foi o próprio cliente).
812
812
  *
813
813
  * `GET /cotacao/{id}`
814
814
  */
@@ -822,9 +822,9 @@ export function buscar_pelo_id_cotacao(credencial_de_acesso, id, opcoes_da_chama
822
822
  }, opcoes_da_chamada);
823
823
  }
824
824
  /**
825
- * Muda o status de uma cotação
825
+ * Muda a situação de uma cotação
826
826
  *
827
- * Exige a permissão `editar` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Muda `status` (`rascunho`, `esperando_aprovacao`, `concluido`, `nao_aprovado`, `em_transporte`). Só colaborador interno marca `concluido` ou `em_transporte`; aprovar cotação acima do limite de faturamento exige `confirmar_acima_do_limite: true`. Cotação de unidade fora da sessão responde 404. Atualização parcial: campo ausente mantém o valor atual. Campos: `confirmar_acima_do_limite` (booleano) confirma o aviso de limite de faturamento ao aprovar.
827
+ * Exige a permissão `editar` no módulo `Cotacoes` e ser colaborador interno: o cliente não muda a situação (403). Campo: `status` (`esperando_aprovacao`, `aguardando_importacao_tiny`, `no_tiny`, `concluido`, `nao_aprovado`). À mão só valem três passagens: `esperando_aprovacao` → `nao_aprovado` (recusar), `aguardando_importacao_tiny` → `esperando_aprovacao` (desfazer o XLS, que limpa `xls_gerado_em`) e `nao_aprovado` → `esperando_aprovacao` (reabrir, só se a cotação não tem proposta no Tiny). Ir para `aguardando_importacao_tiny` é pela geração do XLS e `no_tiny`, `concluido` e `nao_aprovado` vindos do Tiny são do próprio portal, lendo a proposta; qualquer outra passagem responde 409 `passagem_nao_permitida`. Pedir a situação atual devolve a cotação sem mudar nada. Se a situação mudou entre a leitura e a gravação, responde 409 `situacao_mudou`. Cotação de unidade fora da sessão responde 404. Campo ausente mantém o valor atual.
828
828
  *
829
829
  * `PATCH /cotacao/{id}`
830
830
  */