termo_core 0.1.0 → 0.1.2

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.
@@ -1,38 +1,3 @@
1
- export interface AcessoAtual {
2
- email: string;
3
- id: string;
4
- master: boolean;
5
- nome: string;
6
- perfil: string;
7
- perfil_acesso?: string | null;
8
- permissoes: Permissoes;
9
- }
10
- export interface Acoes {
11
- criar?: boolean;
12
- deletar?: boolean;
13
- editar?: boolean;
14
- ler?: boolean;
15
- }
16
- export interface Aplicativo {
17
- arquivos_privados: number;
18
- arquivos_publicos: number;
19
- ativo: boolean;
20
- atualizado_em: string;
21
- bytes_privados: number;
22
- bytes_publicos: number;
23
- criado_em: string;
24
- id: string;
25
- nome: string;
26
- slug: string;
27
- tamanho_maximo: number;
28
- tipos_permitidos: Array<string>;
29
- }
30
- export interface AplicativoAtualizar {
31
- ativo?: boolean | null;
32
- nome?: string | null;
33
- tamanho_maximo?: number | null;
34
- tipos_permitidos?: Array<string> | null;
35
- }
36
1
  export interface ArmazenamentoDoMes {
37
2
  arquivos: number;
38
3
  arquivos_enviados: number;
@@ -70,49 +35,6 @@ export interface ArquivoCriar {
70
35
  tamanho: number;
71
36
  tipo: string;
72
37
  }
73
- export interface ArquivosApagados {
74
- objetos_apagados: number;
75
- registros_apagados: number;
76
- }
77
- export interface Auth {
78
- ativo: boolean;
79
- atualizado_em: string;
80
- bloqueado_ate?: string | null;
81
- criado_em: string;
82
- email: string;
83
- id: string;
84
- master: boolean;
85
- nome?: string | null;
86
- perfil: string;
87
- termoauth_id?: string | null;
88
- ultimo_login_em?: string | null;
89
- vinculado: boolean;
90
- }
91
- export interface AuthAtualizar {
92
- ativo?: boolean | null;
93
- email?: string | null;
94
- }
95
- export interface AuthCriar {
96
- email: string;
97
- perfil: string;
98
- }
99
- export interface Colaborador {
100
- ativo: boolean;
101
- atualizado_em: string;
102
- auth_id: string;
103
- cargo?: string | null;
104
- criado_em: string;
105
- email: string;
106
- id: string;
107
- master: boolean;
108
- nome: string;
109
- perfil_acesso?: string | null;
110
- perfil_acesso_id?: string | null;
111
- telefone?: string | null;
112
- }
113
- export interface ColaboradorVincularPerfilAcesso {
114
- perfil_acesso_id?: string | null;
115
- }
116
38
  export interface ConsumoDoAplicativo {
117
39
  arquivos: number;
118
40
  bytes: number;
@@ -125,37 +47,6 @@ export interface EnviosDoDia {
125
47
  bytes: number;
126
48
  dia: string;
127
49
  }
128
- export interface PaginaAplicativoItensItem {
129
- arquivos_privados: number;
130
- arquivos_publicos: number;
131
- ativo: boolean;
132
- atualizado_em: string;
133
- bytes_privados: number;
134
- bytes_publicos: number;
135
- criado_em: string;
136
- id: string;
137
- nome: string;
138
- slug: string;
139
- tamanho_maximo: number;
140
- tipos_permitidos: Array<string>;
141
- }
142
- export interface PaginaAplicativo {
143
- itens: Array<PaginaAplicativoItensItem>;
144
- pagina: number;
145
- tamanho: number;
146
- total: number;
147
- }
148
- export interface PaginaAplicativoAutoCompleteItensItem {
149
- id: string;
150
- nome: string;
151
- slug: string;
152
- }
153
- export interface PaginaAplicativoAutoComplete {
154
- itens: Array<PaginaAplicativoAutoCompleteItensItem>;
155
- pagina: number;
156
- tamanho: number;
157
- total: number;
158
- }
159
50
  export interface PaginaArquivoItensItem {
160
51
  app: string;
161
52
  atualizado_em: string;
@@ -174,136 +65,6 @@ export interface PaginaArquivo {
174
65
  tamanho: number;
175
66
  total: number;
176
67
  }
177
- export interface PaginaAuthItensItem {
178
- ativo: boolean;
179
- atualizado_em: string;
180
- bloqueado_ate?: string | null;
181
- criado_em: string;
182
- email: string;
183
- id: string;
184
- master: boolean;
185
- nome?: string | null;
186
- perfil: string;
187
- termoauth_id?: string | null;
188
- ultimo_login_em?: string | null;
189
- vinculado: boolean;
190
- }
191
- export interface PaginaAuth {
192
- itens: Array<PaginaAuthItensItem>;
193
- pagina: number;
194
- tamanho: number;
195
- total: number;
196
- }
197
- export interface PaginaAuthAutoCompleteItensItem {
198
- email: string;
199
- id: string;
200
- perfil: string;
201
- }
202
- export interface PaginaAuthAutoComplete {
203
- itens: Array<PaginaAuthAutoCompleteItensItem>;
204
- pagina: number;
205
- tamanho: number;
206
- total: number;
207
- }
208
- export interface PaginaColaboradorItensItem {
209
- ativo: boolean;
210
- atualizado_em: string;
211
- auth_id: string;
212
- cargo?: string | null;
213
- criado_em: string;
214
- email: string;
215
- id: string;
216
- master: boolean;
217
- nome: string;
218
- perfil_acesso?: string | null;
219
- perfil_acesso_id?: string | null;
220
- telefone?: string | null;
221
- }
222
- export interface PaginaColaborador {
223
- itens: Array<PaginaColaboradorItensItem>;
224
- pagina: number;
225
- tamanho: number;
226
- total: number;
227
- }
228
- export interface PaginaColaboradorAutoCompleteItensItem {
229
- email: string;
230
- id: string;
231
- nome: string;
232
- }
233
- export interface PaginaColaboradorAutoComplete {
234
- itens: Array<PaginaColaboradorAutoCompleteItensItem>;
235
- pagina: number;
236
- tamanho: number;
237
- total: number;
238
- }
239
- export interface PaginaLogItensItem {
240
- cabecalhos: unknown;
241
- caminho: string;
242
- consulta?: string | null;
243
- corpo_requisicao?: string | null;
244
- corpo_resposta?: string | null;
245
- criado_em: string;
246
- duracao_ms: number;
247
- id: string;
248
- ip?: string | null;
249
- metodo: string;
250
- status: number;
251
- }
252
- export interface PaginaLog {
253
- itens: Array<PaginaLogItensItem>;
254
- pagina: number;
255
- tamanho: number;
256
- total: number;
257
- }
258
- export interface PaginaPerfilAcessoItensItem {
259
- atualizado_em: string;
260
- colaboradores: number;
261
- criado_em: string;
262
- descricao?: string | null;
263
- id: string;
264
- nome: string;
265
- permissoes: Permissoes;
266
- }
267
- export interface PaginaPerfilAcesso {
268
- itens: Array<PaginaPerfilAcessoItensItem>;
269
- pagina: number;
270
- tamanho: number;
271
- total: number;
272
- }
273
- export interface PaginaPerfilAcessoAutoCompleteItensItem {
274
- id: string;
275
- nome: string;
276
- }
277
- export interface PaginaPerfilAcessoAutoComplete {
278
- itens: Array<PaginaPerfilAcessoAutoCompleteItensItem>;
279
- pagina: number;
280
- tamanho: number;
281
- total: number;
282
- }
283
- export interface PerfilAcesso {
284
- atualizado_em: string;
285
- colaboradores: number;
286
- criado_em: string;
287
- descricao?: string | null;
288
- id: string;
289
- nome: string;
290
- permissoes: Permissoes;
291
- }
292
- export interface PerfilAcessoAtualizar {
293
- descricao?: string | null;
294
- nome?: string | null;
295
- permissoes?: Permissoes | null;
296
- }
297
- export interface PerfilAcessoCriar {
298
- descricao?: string | null;
299
- nome: string;
300
- permissoes?: Permissoes;
301
- }
302
- export interface Permissoes {
303
- aplicativos?: Acoes;
304
- colaboradores?: Acoes;
305
- configuracoes?: Acoes;
306
- }
307
68
  export interface RespostaDeErro {
308
69
  erro: string;
309
70
  }
@@ -318,13 +79,3 @@ export interface Resumo {
318
79
  consumo_por_aplicativo: Array<ConsumoDoAplicativo>;
319
80
  envios_por_dia: Array<EnviosDoDia>;
320
81
  }
321
- export interface SaudeDoBackend {
322
- mensagem: string;
323
- sucesso: boolean;
324
- versao: string;
325
- }
326
- export interface VersaoDoBackend {
327
- sucesso: boolean;
328
- versao: string;
329
- versao_backend: string;
330
- }
@@ -156,53 +156,6 @@ export interface ParametrosDeBuscarInformacoesPaginadorCliente {
156
156
  unidade_id?: string;
157
157
  cursor?: string;
158
158
  }
159
- /**
160
- * Parâmetros de consulta e de cabeçalho de `/colaborador`.
161
- */
162
- export interface ParametrosDeBuscarPaginadorColaborador {
163
- pagina?: number;
164
- }
165
- /**
166
- * Parâmetros de consulta e de cabeçalho de `/colaborador/autocomplete`.
167
- */
168
- export interface ParametrosDeBuscarAutoCompleteColaborador {
169
- busca?: string;
170
- status?: string;
171
- pagina?: number;
172
- tamanho?: number;
173
- }
174
- /**
175
- * Parâmetros de consulta e de cabeçalho de `/colaborador/filtro`.
176
- */
177
- export interface ParametrosDeBuscarPeloFiltroColaborador {
178
- nome?: string;
179
- email?: string;
180
- status?: string;
181
- perfil_id?: string;
182
- pagina?: number;
183
- }
184
- /**
185
- * Parâmetros de consulta e de cabeçalho de `/configuracao`.
186
- */
187
- export interface ParametrosDeBuscarPaginadorConfiguracao {
188
- pagina?: number;
189
- }
190
- /**
191
- * Parâmetros de consulta e de cabeçalho de `/configuracao/autocomplete`.
192
- */
193
- export interface ParametrosDeBuscarAutoCompleteConfiguracao {
194
- busca?: string;
195
- pagina?: number;
196
- tamanho?: number;
197
- }
198
- /**
199
- * Parâmetros de consulta e de cabeçalho de `/configuracao/filtro`.
200
- */
201
- export interface ParametrosDeBuscarPeloFiltroConfiguracao {
202
- chave?: string;
203
- prefixo?: string;
204
- pagina?: number;
205
- }
206
159
  /**
207
160
  * Parâmetros de consulta e de cabeçalho de `/contato`.
208
161
  */
@@ -586,8 +539,6 @@ export interface ParametrosDeBuscarPaginadorProduto {
586
539
  enriquecido?: boolean;
587
540
  unidade?: string;
588
541
  cor?: string;
589
- material?: string;
590
- diametro?: string;
591
542
  categoria_tiny?: string;
592
543
  marca_tiny?: string;
593
544
  criado_desde?: string;
@@ -630,8 +581,6 @@ export interface ParametrosDeBuscarPeloFiltroProduto {
630
581
  enriquecido?: boolean;
631
582
  unidade?: string;
632
583
  cor?: string;
633
- material?: string;
634
- diametro?: string;
635
584
  categoria_tiny?: string;
636
585
  marca_tiny?: string;
637
586
  criado_desde?: string;
@@ -788,14 +737,6 @@ export interface ParametrosDeBuscarPeloFiltroUnidade {
788
737
  cliente_id?: string;
789
738
  pagina?: number;
790
739
  }
791
- /**
792
- * Versão da API
793
- *
794
- * Rota pública: não exige sessão. Confere se a API está no ar e devolve a versão publicada do backend.
795
- *
796
- * `GET /`
797
- */
798
- export declare function buscar_pelo_id_versao(opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.VersaoDaApi>;
799
740
  /**
800
741
  * Envia um arquivo (imagem ou PDF de boletim)
801
742
  *
@@ -1116,134 +1057,6 @@ export declare function atualizar_pelo_id_cliente(credencial_de_acesso: Credenci
1116
1057
  * `DELETE /cliente/{id}`
1117
1058
  */
1118
1059
  export declare function deletar_pelo_id_cliente(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<void>;
1119
- /**
1120
- * Lista colaboradores paginados
1121
- *
1122
- * Colaborador é o usuário da Termotubos: entra pela área `/painel` e também pode abrir o `/app`. Exige colaborador interno.
1123
- *
1124
- * `GET /colaborador`
1125
- */
1126
- export declare function buscar_paginador_colaborador(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPaginadorColaborador, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PaginaColaborador>;
1127
- /**
1128
- * Cadastra o colaborador
1129
- *
1130
- * Colaborador é o usuário da Termotubos: entra pela área `/painel` e também pode abrir o `/app`. Exige colaborador interno com `usuarios.gerenciar`. `perfil_id` de colaborador (sem ele vale o perfil `acesso-inicial`, só leitura); só administrador atribui perfil de administrador.
1131
- *
1132
- * `POST /colaborador`
1133
- */
1134
- export declare function criar_colaborador(credencial_de_acesso: CredencialDeAcesso, corpo_da_requisicao: tipos.ColaboradorCriar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Colaborador>;
1135
- /**
1136
- * Lista básica de colaboradores para seleção
1137
- *
1138
- * Colaborador é o usuário da Termotubos: entra pela área `/painel` e também pode abrir o `/app`. Exige colaborador interno. Devolve id, nome e e-mail em ordem alfabética; `busca` procura no nome e no e-mail; `tamanho` de 1 a 50 (padrão 10).
1139
- *
1140
- * `GET /colaborador/autocomplete`
1141
- */
1142
- export declare function buscar_auto_complete_colaborador(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarAutoCompleteColaborador, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PaginaColaboradorAutoComplete>;
1143
- /**
1144
- * Busca colaboradores por filtro
1145
- *
1146
- * Colaborador é o usuário da Termotubos: entra pela área `/painel` e também pode abrir o `/app`. Exige colaborador interno. Até 50 por página (`pagina`, a partir de 1, padrão 1), em ordem alfabética; `nome` e `email` procuram o trecho, os demais são exatos.
1147
- *
1148
- * `GET /colaborador/filtro`
1149
- */
1150
- export declare function buscar_pelo_filtro_colaborador(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPeloFiltroColaborador, opcoes_da_chamada?: OpcoesDaChamada): Promise<Array<tipos.Colaborador>>;
1151
- /**
1152
- * Busca o colaborador pelo id
1153
- *
1154
- * Colaborador é o usuário da Termotubos: entra pela área `/painel` e também pode abrir o `/app`. Exige colaborador interno.
1155
- *
1156
- * `GET /colaborador/{id}`
1157
- */
1158
- export declare function buscar_pelo_id_colaborador(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Colaborador>;
1159
- /**
1160
- * Atualiza o colaborador
1161
- *
1162
- * Colaborador é o usuário da Termotubos: entra pela área `/painel` e também pode abrir o `/app`. Atualização parcial. Exige colaborador interno com `usuarios.gerenciar`; o próprio colaborador só altera nome, telefone, cargo e `presente` (heartbeat que grava `ultimo_acesso_em`).
1163
- *
1164
- * `PATCH /colaborador/{id}`
1165
- */
1166
- export declare function atualizar_pelo_id_colaborador(credencial_de_acesso: CredencialDeAcesso, id: string, corpo_da_requisicao: tipos.ColaboradorAtualizar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Colaborador>;
1167
- /**
1168
- * Exclui o colaborador
1169
- *
1170
- * Colaborador é o usuário da Termotubos: entra pela área `/painel` e também pode abrir o `/app`. Exige colaborador interno com `usuarios.gerenciar`. Exclusão lógica.
1171
- *
1172
- * `DELETE /colaborador/{id}`
1173
- */
1174
- export declare function deletar_pelo_id_colaborador(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<void>;
1175
- /**
1176
- * Lista as configurações paginadas
1177
- *
1178
- * Exige só uma sessão válida (qualquer pessoa logada no portal). Ordem de chave. Paginado com 50 itens por página (fixo); `pagina` começa em 1 (padrão 1). A resposta traz `itens`, `total` (registros que casam), `pagina` e `tamanho`.
1179
- *
1180
- * `GET /configuracao`
1181
- */
1182
- export declare function buscar_paginador_configuracao(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPaginadorConfiguracao, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PaginaConfiguracao>;
1183
- /**
1184
- * Grava uma configuração do portal
1185
- *
1186
- * Exige a permissão `criar` no módulo `Configuracoes` do perfil de quem chama (administrador e master têm tudo). Configuração chave/valor do portal (vitrine). `chave` precisa ser uma das chaves conhecidas (ex.: `produtos_mostrar_preco`) e `valor` (texto) segue o tipo da chave: booleano `true`/`false`, hora `HH:MM`, decimal ou texto com limite. Cada chave existe uma vez só.
1187
- *
1188
- * `POST /configuracao`
1189
- */
1190
- export declare function criar_configuracao(credencial_de_acesso: CredencialDeAcesso, corpo_da_requisicao: tipos.ConfiguracaoCriar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Configuracao>;
1191
- /**
1192
- * Lista básica de configurações para seleção
1193
- *
1194
- * Exige só uma sessão válida (qualquer pessoa logada no portal). Devolve só id e chave, em ordem de chave. `busca` procura o trecho na chave. `tamanho` tem padrão 10 e vai de 1 a 50; `pagina` começa em 1. A resposta traz `itens`, `total`, `pagina` e `tamanho`.
1195
- *
1196
- * `GET /configuracao/autocomplete`
1197
- */
1198
- export declare function buscar_auto_complete_configuracao(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarAutoCompleteConfiguracao, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.PaginaConfiguracaoAutoComplete>;
1199
- /**
1200
- * Busca configurações por filtro
1201
- *
1202
- * Exige só uma sessão válida (qualquer pessoa logada no portal). Devolve as configurações não excluídas que casam com o filtro, até 50 por página (`pagina`, a partir de 1, padrão 1), em ordem de chave. `chave` é exata; `prefixo` pega as chaves que começam com o texto (ex.: `produtos_`).
1203
- *
1204
- * `GET /configuracao/filtro`
1205
- */
1206
- export declare function buscar_pelo_filtro_configuracao(credencial_de_acesso: CredencialDeAcesso, parametros?: ParametrosDeBuscarPeloFiltroConfiguracao, opcoes_da_chamada?: OpcoesDaChamada): Promise<Array<tipos.Configuracao>>;
1207
- /**
1208
- * Busca uma configuração pelo id
1209
- *
1210
- * Exige só uma sessão válida (qualquer pessoa logada no portal). Configuração excluída não é encontrada.
1211
- *
1212
- * `GET /configuracao/{id}`
1213
- */
1214
- export declare function buscar_pelo_id_configuracao(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Configuracao>;
1215
- /**
1216
- * Atualiza o valor de uma configuração
1217
- *
1218
- * Exige a permissão `editar` no módulo `Configuracoes` do perfil de quem chama (administrador e master têm tudo). Troca o `valor`, validado pelo tipo da chave.
1219
- *
1220
- * `PATCH /configuracao/{id}`
1221
- */
1222
- export declare function atualizar_pelo_id_configuracao(credencial_de_acesso: CredencialDeAcesso, id: string, corpo_da_requisicao: tipos.ConfiguracaoAtualizar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Configuracao>;
1223
- /**
1224
- * Exclui uma configuração
1225
- *
1226
- * Exige a permissão `excluir` no módulo `Configuracoes` do perfil de quem chama (administrador e master têm tudo). A exclusão é lógica: o registro some das leituras, mas a linha não é apagada.
1227
- *
1228
- * `DELETE /configuracao/{id}`
1229
- */
1230
- export declare function deletar_pelo_id_configuracao(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<void>;
1231
- /**
1232
- * Mostra a situação do segredo do app gerado no TermoAuth
1233
- *
1234
- * Só um master do TermoAuth (e-mail `@termotubos.com.br`) lê. Nunca devolve o valor: `segredo_do_app_gerado_no_termo_auth` traz só `configurado` e o final mascarado (`final_visivel`). `criptografia_disponivel` é falso quando o servidor está sem a `GLOBAL_SECRET_CRIPTOGRAFIA`; nesse caso o segredo aparece como não configurado.
1235
- *
1236
- * `GET /configuracao_provedor`
1237
- */
1238
- export declare function buscar_pelo_id_configuracao_provedor(credencial_de_acesso: CredencialDeAcesso, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.ConfiguracaoProvedor>;
1239
- /**
1240
- * Grava ou limpa o segredo do app gerado no TermoAuth
1241
- *
1242
- * Só um master do TermoAuth (e-mail `@termotubos.com.br`) grava. O segredo do app `portal-b2b` é guardado cifrado (AES-256-GCM com a `GLOBAL_SECRET_CRIPTOGRAFIA`) e entregue na hora ao `termo_core`, sem deploy. Campo ausente não muda nada, texto troca o segredo e `null` (ou texto vazio) limpa. No máximo 2.000 caracteres, sem quebra de linha.
1243
- *
1244
- * `PATCH /configuracao_provedor`
1245
- */
1246
- export declare function atualizar_pelo_id_configuracao_provedor(credencial_de_acesso: CredencialDeAcesso, corpo_da_requisicao: tipos.ConfiguracaoProvedorAtualizar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.ConfiguracaoProvedor>;
1247
1060
  /**
1248
1061
  * Lista os contatos paginados
1249
1062
  *
@@ -1524,6 +1337,22 @@ export declare function buscar_pelo_filtro_indicador_compra(credencial_de_acesso
1524
1337
  * `GET /indicador_venda/filtro`
1525
1338
  */
1526
1339
  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>;
1527
1356
  /**
1528
1357
  * Uma página das notas fiscais, por cursor
1529
1358
  *
@@ -1767,7 +1596,7 @@ export declare function deletar_pelo_id_perfil(credencial_de_acesso: CredencialD
1767
1596
  /**
1768
1597
  * Lista os produtos paginados
1769
1598
  *
1770
- * Exige só uma sessão válida (qualquer pessoa logada no portal). `ordem` aceita `relevancia` (padrão: relevância, depois nome), `menor-preco`/`maior-preco` (preço à vista, ou o preço base quando o à vista é zero), `az`/`za` (nome), `mais-novo`/`mais-antigo` (data de cadastro); o desempate é sempre nome e id; outro valor responde 400 `Ordem inválida`. Filtros opcionais (todos combinam com E): `sku` exato e `skus` vários separados por vírgula (sem diferenciar maiúsculas); `nome` procura o trecho no nome, no SKU e no nome comercial, sem diferenciar maiúsculas nem acentos; `ativo`, `lancamento`, `importado_da_api`, `demonstracao` são exatos; `tem_preco_portal_b2b` (`true` só os que têm Preço Portal B2B); `tem_imagem` (ao menos uma imagem), `tem_estoque` (estoque maior que zero), `tem_descricao`, `tem_nome_comercial`, `tem_heuristica_pendente` e `enriquecido` (já enriquecido pelo Tiny) aceitam `true` ou `false`; `estoque_minimo`/`estoque_maximo` e `preco_minimo`/`preco_maximo` são faixas inclusivas; `unidade` é exata e `cor`, `material`, `diametro`, `categoria_tiny` e `marca_tiny` procuram o trecho; `criado_desde`/`criado_ate` e `atualizado_desde`/`atualizado_ate` são datas AAAA-MM-DD inclusivas. Para quem não é colaborador interno, os dados do Tiny vêm vazios. Paginado com 50 itens por página (fixo); `pagina` começa em 1 (padrão 1). A resposta traz `itens`, `total` (registros que casam), `pagina` e `tamanho`. Para quem não é colaborador interno, `estoque` vem `null` (a quantidade nunca é mostrada ao cliente) e `disponivel` diz se há estoque.
1599
+ * Exige só uma sessão válida (qualquer pessoa logada no portal). `ordem` aceita `relevancia` (padrão: relevância, depois nome), `menor-preco`/`maior-preco` (preço à vista, ou o preço base quando o à vista é zero), `az`/`za` (nome), `mais-novo`/`mais-antigo` (data de cadastro); o desempate é sempre nome e id; outro valor responde 400 `Ordem inválida`. Filtros opcionais (todos combinam com E): `sku` exato e `skus` vários separados por vírgula (sem diferenciar maiúsculas); `nome` procura o trecho no nome, no SKU e no nome comercial, sem diferenciar maiúsculas nem acentos; `ativo`, `lancamento`, `importado_da_api`, `demonstracao` são exatos; `tem_preco_portal_b2b` (`true` só os que têm Preço Portal B2B); `tem_imagem` (ao menos uma imagem), `tem_estoque` (estoque maior que zero), `tem_descricao`, `tem_nome_comercial`, `tem_heuristica_pendente` e `enriquecido` (já enriquecido pelo Tiny) aceitam `true` ou `false`; `estoque_minimo`/`estoque_maximo` e `preco_minimo`/`preco_maximo` são faixas inclusivas; `unidade` é exata e `cor`, `categoria_tiny` e `marca_tiny` procuram o trecho; `criado_desde`/`criado_ate` e `atualizado_desde`/`atualizado_ate` são datas AAAA-MM-DD inclusivas. Para quem não é colaborador interno, os dados do Tiny vêm vazios. Paginado com 50 itens por página (fixo); `pagina` começa em 1 (padrão 1). A resposta traz `itens`, `total` (registros que casam), `pagina` e `tamanho`. Para quem não é colaborador interno, `estoque` vem `null` (a quantidade nunca é mostrada ao cliente) e `disponivel` diz se há estoque.
1771
1600
  *
1772
1601
  * `GET /produto`
1773
1602
  */
@@ -1775,7 +1604,7 @@ export declare function buscar_paginador_produto(credencial_de_acesso: Credencia
1775
1604
  /**
1776
1605
  * Cadastra um produto
1777
1606
  *
1778
- * Exige a permissão `criar` no módulo `Configuracoes` do perfil de quem chama (administrador e master têm tudo). Produto do catálogo. `sku` até 32 letras, números, ponto, hífen e `_`, único; `nome` de 2 a 200 caracteres; `preco` e `preco_a_vista` maiores que zero (à vista não maior que o base); `unidade` de venda obrigatória; `estoque` não negativo; `incremento_minimo` e `quantidade_minima` maiores que zero; até 15 `imagens` (URLs; a primeira é a principal). Campos: `aplicacao` é o texto de onde o produto é usado; `embalagem` é o texto da embalagem de venda; `unidade_medida` é a unidade das quantidades (ex.: `m`, `un`); `embalagem_rotulo` é o nome da embalagem fechada (ex.: caixa); `embalagem_quantidade` é quantas unidades vêm na embalagem fechada (não negativa); `embalagem_preco` é o preço da embalagem fechada (não negativo); `diametro`, `material`, `cor` e `temperatura` são atributos técnicos em texto; `material` é atributo técnico em texto; `temperatura` é atributo técnico em texto; `lancamento` (booleano) marca o produto como lançamento; `relevancia` (inteiro) ordena a vitrine, da maior para a menor; `descricao` é o texto longo da vitrine (até 5000 caracteres); `especificacoes_texto` é a ficha técnica em texto (até 5000 caracteres); `outras_informacoes` é texto livre extra (até 2000 caracteres); `demonstracao` (booleano) marca produto de demonstração; `importado_da_api` (booleano) marca produto vindo do Tiny; `heuristica_pendente` é a lista de campos que ainda precisam de revisão manual.
1607
+ * Exige a permissão `criar` no módulo `Configuracoes` do perfil de quem chama (administrador e master têm tudo). Produto do catálogo. `sku` até 32 letras, números, ponto, hífen e `_`, único; `nome` de 2 a 200 caracteres; `preco` e `preco_a_vista` maiores que zero (à vista não maior que o base); `unidade` de venda obrigatória; `estoque` não negativo; `incremento_minimo` e `quantidade_minima` maiores que zero; até 15 `imagens` (URLs; a primeira é a principal). Campos: `embalagem` é o texto da embalagem de venda; `unidade_medida` é a unidade das quantidades (ex.: `m`, `un`); `embalagem_rotulo` é o nome da embalagem fechada (ex.: caixa); `embalagem_quantidade` é quantas unidades vêm na embalagem fechada (não negativa); `embalagem_preco` é o preço da embalagem fechada (não negativo); `cor` é atributo em texto; `lancamento` (booleano) marca o produto como lançamento; `relevancia` (inteiro) ordena a vitrine, da maior para a menor; `descricao` é o texto longo da vitrine (até 5000 caracteres); `especificacoes_texto` é a ficha técnica em texto (até 5000 caracteres); `outras_informacoes` é texto livre extra (até 2000 caracteres); `demonstracao` (booleano) marca produto de demonstração; `importado_da_api` (booleano) marca produto vindo do Tiny; `heuristica_pendente` é a lista de campos que ainda precisam de revisão manual.
1779
1608
  *
1780
1609
  * `POST /produto`
1781
1610
  */
@@ -1791,7 +1620,7 @@ export declare function buscar_auto_complete_produto(credencial_de_acesso: Crede
1791
1620
  /**
1792
1621
  * Busca produtos por filtro
1793
1622
  *
1794
- * Exige só uma sessão válida (qualquer pessoa logada no portal). Devolve os produtos não excluídos que casam com o filtro, até 50 por página (`pagina`, a partir de 1, padrão 1). `ordem` aceita `relevancia` (padrão: relevância, depois nome), `menor-preco`/`maior-preco` (preço à vista, ou o preço base quando o à vista é zero), `az`/`za` (nome), `mais-novo`/`mais-antigo` (data de cadastro); o desempate é sempre nome e id; outro valor responde 400 `Ordem inválida`. Filtros opcionais (todos combinam com E): `sku` exato e `skus` vários separados por vírgula (sem diferenciar maiúsculas); `nome` procura o trecho no nome, no SKU e no nome comercial, sem diferenciar maiúsculas nem acentos; `ativo`, `lancamento`, `importado_da_api`, `demonstracao` são exatos; `tem_preco_portal_b2b` (`true` só os que têm Preço Portal B2B); `tem_imagem` (ao menos uma imagem), `tem_estoque` (estoque maior que zero), `tem_descricao`, `tem_nome_comercial`, `tem_heuristica_pendente` e `enriquecido` (já enriquecido pelo Tiny) aceitam `true` ou `false`; `estoque_minimo`/`estoque_maximo` e `preco_minimo`/`preco_maximo` são faixas inclusivas; `unidade` é exata e `cor`, `material`, `diametro`, `categoria_tiny` e `marca_tiny` procuram o trecho; `criado_desde`/`criado_ate` e `atualizado_desde`/`atualizado_ate` são datas AAAA-MM-DD inclusivas. Para quem não é colaborador interno, os dados do Tiny vêm vazios. Para quem não é colaborador interno, `estoque` vem `null` (a quantidade nunca é mostrada ao cliente) e `disponivel` diz se há estoque.
1623
+ * Exige só uma sessão válida (qualquer pessoa logada no portal). Devolve os produtos não excluídos que casam com o filtro, até 50 por página (`pagina`, a partir de 1, padrão 1). `ordem` aceita `relevancia` (padrão: relevância, depois nome), `menor-preco`/`maior-preco` (preço à vista, ou o preço base quando o à vista é zero), `az`/`za` (nome), `mais-novo`/`mais-antigo` (data de cadastro); o desempate é sempre nome e id; outro valor responde 400 `Ordem inválida`. Filtros opcionais (todos combinam com E): `sku` exato e `skus` vários separados por vírgula (sem diferenciar maiúsculas); `nome` procura o trecho no nome, no SKU e no nome comercial, sem diferenciar maiúsculas nem acentos; `ativo`, `lancamento`, `importado_da_api`, `demonstracao` são exatos; `tem_preco_portal_b2b` (`true` só os que têm Preço Portal B2B); `tem_imagem` (ao menos uma imagem), `tem_estoque` (estoque maior que zero), `tem_descricao`, `tem_nome_comercial`, `tem_heuristica_pendente` e `enriquecido` (já enriquecido pelo Tiny) aceitam `true` ou `false`; `estoque_minimo`/`estoque_maximo` e `preco_minimo`/`preco_maximo` são faixas inclusivas; `unidade` é exata e `cor`, `categoria_tiny` e `marca_tiny` procuram o trecho; `criado_desde`/`criado_ate` e `atualizado_desde`/`atualizado_ate` são datas AAAA-MM-DD inclusivas. Para quem não é colaborador interno, os dados do Tiny vêm vazios. Para quem não é colaborador interno, `estoque` vem `null` (a quantidade nunca é mostrada ao cliente) e `disponivel` diz se há estoque.
1795
1624
  *
1796
1625
  * `GET /produto/filtro`
1797
1626
  */
@@ -1807,7 +1636,7 @@ export declare function buscar_pelo_id_produto(credencial_de_acesso: CredencialD
1807
1636
  /**
1808
1637
  * Atualiza um produto
1809
1638
  *
1810
- * Exige a permissão `editar` no módulo `Configuracoes` do perfil de quem chama (administrador e master têm tudo). Mesmas validações do cadastro (o SKU não muda). `embalagem_quantidade` e `embalagem_preco` aceitam `null` para apagar. Produto do Tiny não aceita `preco` nem `preco_a_vista` (400): o preço próprio do portal vai em `preco_portal_b2b`, maior que zero e até o preço a prazo do Tiny, e vira o preço à vista usado no portal; `null` apaga e o preço à vista volta ao do Tiny. A sincronização com o Tiny nunca muda o `preco_portal_b2b`. Produto que não veio do Tiny não aceita `preco_portal_b2b` (400). Atualização parcial: campo ausente mantém o valor atual. Campos: `nome` de 2 a 200 caracteres; `aplicacao` é o texto de onde o produto é usado; `unidade` é a unidade de venda (obrigatória quando enviada); `embalagem` é o texto da embalagem de venda; `unidade_medida` é a unidade das quantidades (ex.: `m`, `un`); `embalagem_rotulo` é o nome da embalagem fechada (ex.: caixa); `incremento_minimo` maior que zero; `diametro`, `material`, `cor` e `temperatura` são atributos técnicos em texto; `material` é atributo técnico em texto; `temperatura` é atributo técnico em texto; `lancamento` (booleano) marca o produto como lançamento; `relevancia` (inteiro) ordena a vitrine, da maior para a menor; `imagens` até 15 URLs, sem itens vazios; `descricao` é o texto longo da vitrine (até 5000 caracteres); `especificacoes_texto` é a ficha técnica em texto (até 5000 caracteres); `outras_informacoes` é texto livre extra (até 2000 caracteres); `heuristica_pendente` é a lista de campos que ainda precisam de revisão manual. `nome_comercial` é o nome mostrado ao cliente e `resumo_caracteristicas` a linha curta de características do card; os dois aceitam texto ou `null` para limpar (vazio também limpa).
1639
+ * Exige a permissão `editar` no módulo `Configuracoes` do perfil de quem chama (administrador e master têm tudo). Mesmas validações do cadastro (o SKU não muda). `embalagem_quantidade` e `embalagem_preco` aceitam `null` para apagar. Produto do Tiny não aceita `preco` nem `preco_a_vista` (400): o preço próprio do portal vai em `preco_portal_b2b`, maior que zero e até o preço a prazo do Tiny, e vira o preço à vista usado no portal; `null` apaga e o preço à vista volta ao do Tiny. A sincronização com o Tiny nunca muda o `preco_portal_b2b`. Produto que não veio do Tiny não aceita `preco_portal_b2b` (400). Atualização parcial: campo ausente mantém o valor atual. Campos: `nome` de 2 a 200 caracteres; `unidade` é a unidade de venda (obrigatória quando enviada); `embalagem` é o texto da embalagem de venda; `unidade_medida` é a unidade das quantidades (ex.: `m`, `un`); `embalagem_rotulo` é o nome da embalagem fechada (ex.: caixa); `incremento_minimo` maior que zero; `cor` é atributo em texto; `lancamento` (booleano) marca o produto como lançamento; `relevancia` (inteiro) ordena a vitrine, da maior para a menor; `imagens` até 15 URLs, sem itens vazios; `descricao` é o texto longo da vitrine (até 5000 caracteres); `especificacoes_texto` é a ficha técnica em texto (até 5000 caracteres); `outras_informacoes` é texto livre extra (até 2000 caracteres); `heuristica_pendente` é a lista de campos que ainda precisam de revisão manual. `nome_comercial` é o nome mostrado ao cliente e `resumo_caracteristicas` a linha curta de características do card; os dois aceitam texto ou `null` para limpar (vazio também limpa).
1811
1640
  *
1812
1641
  * `PATCH /produto/{id}`
1813
1642
  */