termo_core 0.1.2 → 0.1.4

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.
@@ -7,6 +7,8 @@ export interface ServicoTermotubos {
7
7
  readonly endereco_no_localhost: string | null;
8
8
  readonly endereco_no_sandbox: string;
9
9
  readonly endereco_em_production: string;
10
+ /** `false` para um serviço que ainda não publicou o `openapi.json` (o gerador não baixa o contrato dele). */
11
+ readonly ativo: boolean;
10
12
  }
11
13
  export declare function endereco_no_ambiente(servico: ServicoTermotubos, ambiente: Ambiente): string;
12
14
  /**
@@ -2,12 +2,12 @@ import type { ServicoTermotubos } from "./servico_termotubos.js";
2
2
  export declare const TERMO_AI: ServicoTermotubos;
3
3
  export declare const TERMO_AUTH: ServicoTermotubos;
4
4
  export declare const TERMO_BUCKET: ServicoTermotubos;
5
+ export declare const TERMO_FLOW: ServicoTermotubos;
5
6
  export declare const TERMO_INTRANET: ServicoTermotubos;
6
7
  export declare const TERMO_LEADS: ServicoTermotubos;
7
8
  export declare const TERMO_MCP: ServicoTermotubos;
8
9
  export declare const TERMO_PORTAL: ServicoTermotubos;
9
10
  export declare const TERMO_QUALITY: ServicoTermotubos;
10
- export declare const TERMO_SELL: ServicoTermotubos;
11
11
  export declare const TERMO_STATUS: ServicoTermotubos;
12
12
  export declare const TERMO_STUDIO: ServicoTermotubos;
13
13
  export declare const TERMO_SUPPORT: ServicoTermotubos;
@@ -5,6 +5,7 @@ export const TERMO_AI = {
5
5
  endereco_no_localhost: null,
6
6
  endereco_no_sandbox: "https://sandbox-api-ai.termotubos.com.br",
7
7
  endereco_em_production: "https://api-ai.termotubos.com.br",
8
+ ativo: true,
8
9
  };
9
10
  export const TERMO_AUTH = {
10
11
  nome_do_servico: "TermoAuth",
@@ -12,6 +13,7 @@ export const TERMO_AUTH = {
12
13
  endereco_no_localhost: "http://localhost:51001",
13
14
  endereco_no_sandbox: "https://sandbox-api-auth.termotubos.com.br",
14
15
  endereco_em_production: "https://api-auth.termotubos.com.br",
16
+ ativo: true,
15
17
  };
16
18
  export const TERMO_BUCKET = {
17
19
  nome_do_servico: "TermoBucket",
@@ -19,6 +21,15 @@ export const TERMO_BUCKET = {
19
21
  endereco_no_localhost: "http://localhost:51121",
20
22
  endereco_no_sandbox: "https://sandbox-api-bucket.termotubos.com.br",
21
23
  endereco_em_production: "https://api-bucket.termotubos.com.br",
24
+ ativo: true,
25
+ };
26
+ export const TERMO_FLOW = {
27
+ nome_do_servico: "TermoFlow",
28
+ nome_do_modulo: "flow",
29
+ endereco_no_localhost: "http://localhost:51021",
30
+ endereco_no_sandbox: "https://sandbox-api-flow.termotubos.com.br",
31
+ endereco_em_production: "https://api-flow.termotubos.com.br",
32
+ ativo: true,
22
33
  };
23
34
  export const TERMO_INTRANET = {
24
35
  nome_do_servico: "TermoIntranetAPI",
@@ -26,6 +37,7 @@ export const TERMO_INTRANET = {
26
37
  endereco_no_localhost: "http://localhost:51091",
27
38
  endereco_no_sandbox: "https://sandbox-api-intranet.termotubos.com.br",
28
39
  endereco_em_production: "https://api-intranet.termotubos.com.br",
40
+ ativo: true,
29
41
  };
30
42
  export const TERMO_LEADS = {
31
43
  nome_do_servico: "TermoLeads",
@@ -33,6 +45,7 @@ export const TERMO_LEADS = {
33
45
  endereco_no_localhost: "http://localhost:51031",
34
46
  endereco_no_sandbox: "https://sandbox-api-leads.termotubos.com.br",
35
47
  endereco_em_production: "https://api-leads.termotubos.com.br",
48
+ ativo: true,
36
49
  };
37
50
  export const TERMO_MCP = {
38
51
  nome_do_servico: "TermoMCP",
@@ -40,6 +53,7 @@ export const TERMO_MCP = {
40
53
  endereco_no_localhost: "http://localhost:51061",
41
54
  endereco_no_sandbox: "https://sandbox-api-mcp.termotubos.com.br",
42
55
  endereco_em_production: "https://api-mcp.termotubos.com.br",
56
+ ativo: false,
43
57
  };
44
58
  export const TERMO_PORTAL = {
45
59
  nome_do_servico: "TermoPortal",
@@ -47,6 +61,7 @@ export const TERMO_PORTAL = {
47
61
  endereco_no_localhost: "http://localhost:51011",
48
62
  endereco_no_sandbox: "https://sandbox-api-portal.termotubos.com.br",
49
63
  endereco_em_production: "https://api-portal.termotubos.com.br",
64
+ ativo: true,
50
65
  };
51
66
  export const TERMO_QUALITY = {
52
67
  nome_do_servico: "TermoQuality",
@@ -54,13 +69,7 @@ export const TERMO_QUALITY = {
54
69
  endereco_no_localhost: "http://localhost:51071",
55
70
  endereco_no_sandbox: "https://sandbox-api-quality.termotubos.com.br",
56
71
  endereco_em_production: "https://api-quality.termotubos.com.br",
57
- };
58
- export const TERMO_SELL = {
59
- nome_do_servico: "TermoSell",
60
- nome_do_modulo: "sell",
61
- endereco_no_localhost: "http://localhost:51021",
62
- endereco_no_sandbox: "https://sandbox-api-sell.termotubos.com.br",
63
- endereco_em_production: "https://api-sell.termotubos.com.br",
72
+ ativo: false,
64
73
  };
65
74
  export const TERMO_STATUS = {
66
75
  nome_do_servico: "TermoStatus",
@@ -68,6 +77,7 @@ export const TERMO_STATUS = {
68
77
  endereco_no_localhost: "http://localhost:51131",
69
78
  endereco_no_sandbox: "https://sandbox-api-status.termotubos.com.br",
70
79
  endereco_em_production: "https://api-status.termotubos.com.br",
80
+ ativo: false,
71
81
  };
72
82
  export const TERMO_STUDIO = {
73
83
  nome_do_servico: "TermoStudio",
@@ -75,6 +85,7 @@ export const TERMO_STUDIO = {
75
85
  endereco_no_localhost: null,
76
86
  endereco_no_sandbox: "https://sandbox-api-studio.termotubos.com.br",
77
87
  endereco_em_production: "https://api-studio.termotubos.com.br",
88
+ ativo: false,
78
89
  };
79
90
  export const TERMO_SUPPORT = {
80
91
  nome_do_servico: "TermoSupport",
@@ -82,6 +93,7 @@ export const TERMO_SUPPORT = {
82
93
  endereco_no_localhost: "http://localhost:51051",
83
94
  endereco_no_sandbox: "https://sandbox-api-support.termotubos.com.br",
84
95
  endereco_em_production: "https://api-support.termotubos.com.br",
96
+ ativo: true,
85
97
  };
86
98
  export const TERMO_TRACING = {
87
99
  nome_do_servico: "TermoTracing",
@@ -89,6 +101,7 @@ export const TERMO_TRACING = {
89
101
  endereco_no_localhost: "http://localhost:51111",
90
102
  endereco_no_sandbox: "https://sandbox-api-tracing.termotubos.com.br",
91
103
  endereco_em_production: "https://api-tracing.termotubos.com.br",
104
+ ativo: true,
92
105
  };
93
106
  export const TERMO_WEBHOOK = {
94
107
  nome_do_servico: "TermoWebhook",
@@ -96,6 +109,7 @@ export const TERMO_WEBHOOK = {
96
109
  endereco_no_localhost: "http://localhost:51081",
97
110
  endereco_no_sandbox: "https://sandbox-api-webhook.termotubos.com.br",
98
111
  endereco_em_production: "https://api-webhook.termotubos.com.br",
112
+ ativo: true,
99
113
  };
100
114
  export const TERMO_WMS = {
101
115
  nome_do_servico: "TermoWMS",
@@ -103,17 +117,18 @@ export const TERMO_WMS = {
103
117
  endereco_no_localhost: null,
104
118
  endereco_no_sandbox: "https://sandbox-api-wms.termotubos.com.br",
105
119
  endereco_em_production: "https://api-wms.termotubos.com.br",
120
+ ativo: false,
106
121
  };
107
122
  export const TODOS_OS_SERVICOS = [
108
123
  TERMO_AI,
109
124
  TERMO_AUTH,
110
125
  TERMO_BUCKET,
126
+ TERMO_FLOW,
111
127
  TERMO_INTRANET,
112
128
  TERMO_LEADS,
113
129
  TERMO_MCP,
114
130
  TERMO_PORTAL,
115
131
  TERMO_QUALITY,
116
- TERMO_SELL,
117
132
  TERMO_STATUS,
118
133
  TERMO_STUDIO,
119
134
  TERMO_SUPPORT,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Cliente tipado da API do TermoSell, gerado a partir do `openapi.json` do serviço.
2
+ * Cliente tipado da API do TermoFlow, gerado a partir do `openapi.json` do serviço.
3
3
  */
4
4
  export * from "./tipos.js";
5
5
  export * from "./rotas.js";
@@ -1,6 +1,6 @@
1
1
  // Gerado pelo gerador do TermoCore (`cargo run -p gerador`). Não edite à mão: a próxima geração sobrescreve.
2
2
  /**
3
- * Cliente tipado da API do TermoSell, gerado a partir do `openapi.json` do serviço.
3
+ * Cliente tipado da API do TermoFlow, gerado a partir do `openapi.json` do serviço.
4
4
  */
5
5
  export * from "./tipos.js";
6
6
  export * from "./rotas.js";
@@ -0,0 +1,19 @@
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
+ * Cadastra um robô de atendimento
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}}`.
8
+ *
9
+ * `POST /robo`
10
+ */
11
+ export declare function criar_robo(credencial_de_acesso: CredencialDeAcesso, corpo_da_requisicao: tipos.RoboCriar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Robo>;
12
+ /**
13
+ * Atualiza um robô pelo id
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}}`.
16
+ *
17
+ * `PATCH /robo/{id}`
18
+ */
19
+ export declare function atualizar_pelo_id_robo(credencial_de_acesso: CredencialDeAcesso, id: string, corpo_da_requisicao: tipos.RoboAtualizar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Robo>;
@@ -0,0 +1,37 @@
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_FLOW as SERVICO_DESTA_API } from "../base/servicos.js";
4
+ /**
5
+ * Cadastra um robô de atendimento
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}}`.
8
+ *
9
+ * `POST /robo`
10
+ */
11
+ export function criar_robo(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
12
+ return chamar_servico({
13
+ servico: SERVICO_DESTA_API,
14
+ metodo_http: "POST",
15
+ caminho_da_rota: "/robo",
16
+ credencial_de_acesso,
17
+ corpo_json: corpo_da_requisicao,
18
+ formato_da_resposta: "json",
19
+ }, opcoes_da_chamada);
20
+ }
21
+ /**
22
+ * Atualiza um robô pelo id
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}}`.
25
+ *
26
+ * `PATCH /robo/{id}`
27
+ */
28
+ export function atualizar_pelo_id_robo(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
29
+ return chamar_servico({
30
+ servico: SERVICO_DESTA_API,
31
+ metodo_http: "PATCH",
32
+ caminho_da_rota: `/robo/${codificar_parametro_de_caminho(id)}`,
33
+ credencial_de_acesso,
34
+ corpo_json: corpo_da_requisicao,
35
+ formato_da_resposta: "json",
36
+ }, opcoes_da_chamada);
37
+ }
@@ -0,0 +1,69 @@
1
+ export interface RespostaDeErro {
2
+ erro: string;
3
+ }
4
+ export interface Robo {
5
+ atender_contatos_novos: boolean;
6
+ ativo: boolean;
7
+ atualizado_em: string;
8
+ criado_em: string;
9
+ descricao?: string | null;
10
+ fluxo: RoboFluxo;
11
+ id: string;
12
+ modelo: string;
13
+ nome: string;
14
+ prompt_base: string;
15
+ versao: number;
16
+ }
17
+ export interface RoboAtualizar {
18
+ atender_contatos_novos?: boolean | null;
19
+ ativo?: boolean | null;
20
+ descricao?: string | null;
21
+ fluxo?: RoboFluxo | null;
22
+ modelo?: string | null;
23
+ nome?: string | null;
24
+ prompt_base?: string | null;
25
+ }
26
+ export interface RoboBotao {
27
+ id: string;
28
+ rotulo: string;
29
+ }
30
+ export interface RoboCriar {
31
+ descricao?: string | null;
32
+ fluxo?: RoboFluxo | null;
33
+ modelo?: string;
34
+ nome: string;
35
+ prompt_base?: string | null;
36
+ }
37
+ export interface RoboFluxo {
38
+ ligacoes?: Array<RoboLigacao>;
39
+ nos?: Array<RoboNo>;
40
+ }
41
+ export interface RoboLigacao {
42
+ destino: string;
43
+ id: string;
44
+ origem: string;
45
+ origem_saida?: string | null;
46
+ }
47
+ export interface RoboNo {
48
+ botoes?: Array<RoboBotao>;
49
+ equipe_id?: number | null;
50
+ ferramentas?: Array<string>;
51
+ id: string;
52
+ instrucao?: string;
53
+ mensagem?: string;
54
+ mensagem_por_ia?: boolean;
55
+ minutos_sem_resposta?: number | null;
56
+ nome?: string;
57
+ objetivo?: string;
58
+ posicao: RoboPosicao;
59
+ regras?: Array<RoboRegra>;
60
+ tipo: string;
61
+ }
62
+ export interface RoboPosicao {
63
+ x?: number;
64
+ y?: number;
65
+ }
66
+ export interface RoboRegra {
67
+ condicao: string;
68
+ id: string;
69
+ }
package/dist/index.d.ts CHANGED
@@ -2,12 +2,12 @@ export * from "./base/index.js";
2
2
  export * as ai from "./ai/index.js";
3
3
  export * as auth from "./auth/index.js";
4
4
  export * as bucket from "./bucket/index.js";
5
+ export * as flow from "./flow/index.js";
5
6
  export * as intranet from "./intranet/index.js";
6
7
  export * as leads from "./leads/index.js";
7
8
  export * as mcp from "./mcp/index.js";
8
9
  export * as portal from "./portal/index.js";
9
10
  export * as quality from "./quality/index.js";
10
- export * as sell from "./sell/index.js";
11
11
  export * as status from "./status/index.js";
12
12
  export * as studio from "./studio/index.js";
13
13
  export * as support from "./support/index.js";
package/dist/index.js CHANGED
@@ -3,12 +3,12 @@ export * from "./base/index.js";
3
3
  export * as ai from "./ai/index.js";
4
4
  export * as auth from "./auth/index.js";
5
5
  export * as bucket from "./bucket/index.js";
6
+ export * as flow from "./flow/index.js";
6
7
  export * as intranet from "./intranet/index.js";
7
8
  export * as leads from "./leads/index.js";
8
9
  export * as mcp from "./mcp/index.js";
9
10
  export * as portal from "./portal/index.js";
10
11
  export * as quality from "./quality/index.js";
11
- export * as sell from "./sell/index.js";
12
12
  export * as status from "./status/index.js";
13
13
  export * as studio from "./studio/index.js";
14
14
  export * as support from "./support/index.js";
@@ -187,6 +187,7 @@ export interface ParametrosDeBuscarPeloFiltroContato {
187
187
  export interface ParametrosDeBuscarPaginadorCotacao {
188
188
  unidade_id?: string;
189
189
  status?: string;
190
+ origem?: string;
190
191
  busca?: string;
191
192
  inicio?: string;
192
193
  fim?: string;
@@ -206,8 +207,8 @@ export interface ParametrosDeBuscarAutoCompleteCotacao {
206
207
  */
207
208
  export interface ParametrosDeBuscarPeloFiltroCotacao {
208
209
  unidade_id?: string;
209
- autor_cliente_id?: string;
210
210
  status?: string;
211
+ origem?: string;
211
212
  pagina?: number;
212
213
  }
213
214
  /**
@@ -216,6 +217,7 @@ export interface ParametrosDeBuscarPeloFiltroCotacao {
216
217
  export interface ParametrosDeBuscarInformacoesPaginadorCotacao {
217
218
  unidade_id?: string;
218
219
  status?: string;
220
+ origem?: string;
219
221
  busca?: string;
220
222
  inicio?: string;
221
223
  fim?: string;
@@ -420,6 +422,14 @@ export interface ParametrosDeBuscarPeloFiltroPedido {
420
422
  entregue?: boolean;
421
423
  pagina?: number;
422
424
  }
425
+ /**
426
+ * Parâmetros de consulta e de cabeçalho de `/pedido_inteligente/filtro`.
427
+ */
428
+ export interface ParametrosDeBuscarPeloFiltroPedidoInteligente {
429
+ unidade_id?: string;
430
+ status?: string;
431
+ pagina?: number;
432
+ }
423
433
  /**
424
434
  * Parâmetros de consulta e de cabeçalho de `/pedido_venda`.
425
435
  */
@@ -1116,7 +1126,7 @@ export declare function deletar_pelo_id_contato(credencial_de_acesso: Credencial
1116
1126
  /**
1117
1127
  * Lista uma página de cotações
1118
1128
  *
1119
- * 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; `cursor` é o id da última cotação da página anterior.
1129
+ * 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.
1120
1130
  *
1121
1131
  * `GET /cotacao`
1122
1132
  */
@@ -1124,7 +1134,7 @@ export declare function buscar_paginador_cotacao(credencial_de_acesso: Credencia
1124
1134
  /**
1125
1135
  * Cria uma cotação (carrinho enviado)
1126
1136
  *
1127
- * Exige a permissão `criar` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Monta a cotação no servidor a partir dos itens (`produto_id`, `quantidade` acima de zero e até 9999, `embalagem_fechada`, `preco_unitario` visto pelo cliente), com 1 a 200 itens e sem produto repetido. Recalcula preços por faixa, confere `total_esperado` e grava com o status inicial. A unidade precisa ser da sessão (colaborador interno acessa todas) e, para quem não é colaborador interno, o autor é sempre quem chama. `acima_do_limite` indica que a cotação passa o limite de faturamento da unidade. Campos: `unidade_id` (uuid) é a unidade compradora, da sessão; `autor_cliente_id` é a pessoa autora (uuid; para quem não é colaborador interno vale sempre a própria pessoa); `itens` é a lista de 1 a 200 itens, cada um com `produto_id`, `quantidade`, `embalagem_fechada` e `preco_unitario`; `economia_tier` é a economia do grupo de cliente vista no carrinho (decimal, informativo); `carrinho_id` (opcional) é o carrinho aberto da unidade de onde os itens saíram: todo item precisa estar nele, o carrinho fecha junto com a cotação e os itens que não foram cotados seguem num carrinho novo; `endereco_id` (opcional) é um endereço de entrega da unidade, copiado para `endereco_entrega`; `observacao` (opcional) tem até 1000 caracteres. A cotação nasce com `numero` sequencial (exibido como C-1001) e `valida_ate` = hoje em Brasília + `cotacao_validade_dias` de Configurações (15 sem a chave).
1137
+ * Exige a permissão `criar` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Monta a cotação no servidor a partir dos itens (`produto_id`, `quantidade` acima de zero e até 9999, `embalagem_fechada`, `preco_unitario` visto pelo cliente), com 1 a 200 itens e sem produto repetido. Recalcula preços por faixa, confere `total_esperado` e grava com o status inicial. A unidade precisa ser da sessão (colaborador interno acessa todas) e, para quem não é colaborador interno, o autor é sempre quem chama. `acima_do_limite` indica que a cotação passa o limite de faturamento da unidade. Campos: `unidade_id` (uuid) é a unidade compradora, da sessão, e o cliente da cotação é sempre o cliente dessa unidade (o nome dele fica em `autor_nome`); `itens` é a lista de 1 a 200 itens, cada um com `produto_id`, `quantidade`, `embalagem_fechada` e `preco_unitario`; `economia_tier` é a economia do grupo de cliente vista no carrinho (decimal, informativo); `carrinho_id` (opcional) é o carrinho aberto da unidade de onde os itens saíram: todo item precisa estar nele, o carrinho fecha junto com a cotação e os itens que não foram cotados seguem num carrinho novo; `pedido_inteligente_id` (opcional, nunca junto com `carrinho_id`) é o pedido inteligente revisado de onde os itens saíram: ele precisa estar `pronto`, todo item precisa ser um produto confirmado na revisão, a cotação sai com `origem` `pedido_inteligente` e o pedido vira `cotado`; sem ele, `origem` é `carrinho`; `endereco_id` (opcional) é um endereço de entrega da unidade, copiado para `endereco_entrega`; `observacao` (opcional) tem até 1000 caracteres. A cotação nasce com `numero` sequencial (exibido como C-1001) e `valida_ate` = hoje em Brasília + `cotacao_validade_dias` de Configurações (15 sem a chave).
1128
1138
  *
1129
1139
  * `POST /cotacao`
1130
1140
  */
@@ -1140,7 +1150,7 @@ export declare function buscar_auto_complete_cotacao(credencial_de_acesso: Crede
1140
1150
  /**
1141
1151
  * Busca cotações por filtro
1142
1152
  *
1143
- * 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. `autor_cliente_id` e `status` (`rascunho`, `esperando_aprovacao`, `concluido`, `nao_aprovado`, `em_transporte`) são exatos.
1153
+ * 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.
1144
1154
  *
1145
1155
  * `GET /cotacao/filtro`
1146
1156
  */
@@ -1337,22 +1347,6 @@ export declare function buscar_pelo_filtro_indicador_compra(credencial_de_acesso
1337
1347
  * `GET /indicador_venda/filtro`
1338
1348
  */
1339
1349
  export declare function buscar_pelo_filtro_indicador_venda(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPeloFiltroIndicadorVenda, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.IndicadoresDeVenda>;
1340
- /**
1341
- * Gera um link de envio de imagem para o produto do SKU
1342
- *
1343
- * Exige colaborador interno com a permissão `editar` no módulo `Configuracoes`. Serve para enviar a imagem de um arquivo local (ex.: uma pasta do computador) sem passar o conteúdo pela ferramenta: gere um link por imagem e envie o arquivo direto para a `url_envio` com `curl -X PATCH -F "arquivo=@<caminho do arquivo>" <url_envio>` (sem token: o link já autoriza). O envio grava a imagem no TermoBucket e já a acrescenta ao fim das `imagens` do produto (a primeira continua a principal); a resposta traz a `url` da imagem e a lista de `imagens` do produto. O link é de uso único e vence em 15 minutos (`expira_em`). Campos: `sku` do produto, sem diferenciar maiúsculas. Na resposta, `imagens_no_produto` e `vagas_de_imagem` dizem quantas imagens ele já tem e quantas ainda cabem (até 15). Imagem PNG, JPG, WEBP ou GIF até 5 MB. Dica: com o nome do arquivo começando pelo SKU (`<SKU>.png`, `<SKU>_2.png`), dá para enviar uma pasta inteira descobrindo o produto pelo nome.
1344
- *
1345
- * `POST /link_envio_imagem`
1346
- */
1347
- export declare function criar_link_envio_imagem(credencial_de_acesso: CredencialDeAcesso, corpo_da_requisicao: tipos.LinkEnvioImagemCriar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.LinkEnvioImagem>;
1348
- /**
1349
- * Envia a imagem pelo link e a acrescenta ao produto
1350
- *
1351
- * Rota pública: quem autoriza é o próprio link (`id` de uso único gerado pelo `POST /link_envio_imagem`, válido por 15 minutos). Formulário `multipart/form-data` com o campo `arquivo` (PNG, JPG, WEBP ou GIF até 5 MB; o tipo sai dos bytes). Grava a imagem no TermoBucket e a acrescenta ao fim das `imagens` do produto. Se o envio falha (formato, tamanho, TermoBucket fora do ar), o link continua valendo até vencer.
1352
- *
1353
- * `PATCH /link_envio_imagem/{id}`
1354
- */
1355
- export declare function atualizar_pelo_id_link_envio_imagem(id: string, formulario: FormData, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.ImagemEnviada>;
1356
1350
  /**
1357
1351
  * Uma página das notas fiscais, por cursor
1358
1352
  *
@@ -1473,6 +1467,46 @@ export declare function atualizar_pelo_id_pedido(credencial_de_acesso: Credencia
1473
1467
  * `DELETE /pedido/{id}`
1474
1468
  */
1475
1469
  export declare function deletar_pelo_id_pedido(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<void>;
1470
+ /**
1471
+ * Envia um pedido para a IA montar
1472
+ *
1473
+ * Exige a permissão `criar` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Formulário `multipart/form-data` com `unidade_id` (uma unidade da sessão), `texto` (opcional, até 4000 caracteres) e até 5 campos `arquivo` (áudio MP3, M4A, OGG, OPUS, WAV ou WEBM; PDF; foto PNG, JPG ou WEBP; planilha XLSX ou CSV), cada um com até 20 MB e o envio inteiro com até 25 MB; é preciso mandar o texto ou ao menos um anexo. Grava o pedido com `status` `analisando` e responde na hora; a análise roda no servidor: os anexos vão para o TermoBucket (privados), tudo vira texto (PDF e planilha no próprio Portal, foto, PDF escaneado e áudio pelo TermoAI) e a IA de texto escolhida em Provedores procura cada item no catálogo e no boletim técnico. Acompanhe por `GET /pedido_inteligente/{id}` até `status` virar `pronto` (com os `itens` para revisar) ou `erro` (com o motivo em `erro`). Cada unidade manda no máximo 20 pedidos por hora.
1474
+ *
1475
+ * `POST /pedido_inteligente`
1476
+ */
1477
+ export declare function criar_pedido_inteligente(credencial_de_acesso: CredencialDeAcesso, formulario: FormData, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PedidoInteligente>;
1478
+ /**
1479
+ * Busca pedidos inteligentes por filtro
1480
+ *
1481
+ * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Devolve os pedidos não excluídos, até 50 por página (`pagina`, a partir de 1, padrão 1), dos mais novos para os mais antigos. Quem não é colaborador interno precisa informar `unidade_id` de uma unidade da própria sessão; colaborador interno pode omitir e vê todos. `status` (`analisando`, `pronto`, `cotado`, `erro`) é exato; uma análise parada há mais de 10 minutos conta como `erro`.
1482
+ *
1483
+ * `GET /pedido_inteligente/filtro`
1484
+ */
1485
+ export declare function buscar_pelo_filtro_pedido_inteligente(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPeloFiltroPedidoInteligente, opcoes_da_chamada?: OpcoesDaChamada): Promise<Array<tipos.PedidoInteligente>>;
1486
+ /**
1487
+ * Busca um pedido inteligente pelo id
1488
+ *
1489
+ * Exige a permissão `ver` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Pedido de uma unidade fora da sessão responde 404, como se não existisse. Depois da análise, cada anexo guardado traz `url`, um link de download do TermoBucket que vale 15 minutos. Cada item traz `pedido_do_cliente` (o trecho que o cliente escreveu), `situacao` (`encontrado`, `escolher`, `indisponivel` ou `nao_encontrado`), `quantidade`, `escolhido`, `opcoes` e `observacao` (como a IA entendeu o item); `cotacao_id` aparece quando o pedido já virou cotação.
1490
+ *
1491
+ * `GET /pedido_inteligente/{id}`
1492
+ */
1493
+ export declare function buscar_pelo_id_pedido_inteligente(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PedidoInteligente>;
1494
+ /**
1495
+ * Grava a revisão do cliente
1496
+ *
1497
+ * Exige a permissão `editar` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Só vale com `status` `pronto`. `itens` tem uma escolha por item do pedido, na mesma ordem: `produto_id` é o produto escolhido, entre o `escolhido` e as `opcoes` daquele item (nulo tira o item da cotação), e `quantidade` vai de 0 a 9999 (acima de zero).
1498
+ *
1499
+ * `PATCH /pedido_inteligente/{id}`
1500
+ */
1501
+ export declare function atualizar_pelo_id_pedido_inteligente(credencial_de_acesso: CredencialDeAcesso, id: string, corpo_da_requisicao: tipos.PedidoInteligenteAtualizar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PedidoInteligente>;
1502
+ /**
1503
+ * Cancela um pedido inteligente
1504
+ *
1505
+ * Exige a permissão `excluir` no módulo `Cotacoes` do perfil de quem chama (administrador e master têm tudo). Exclusão lógica; uma análise em andamento para de gravar. O pedido que já virou cotação não sai (409).
1506
+ *
1507
+ * `DELETE /pedido_inteligente/{id}`
1508
+ */
1509
+ export declare function deletar_pelo_id_pedido_inteligente(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<void>;
1476
1510
  /**
1477
1511
  * Lista os pedidos de venda do ERP
1478
1512
  *