termo_core 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/rotas.d.ts +0 -263
- package/dist/ai/rotas.js +0 -397
- package/dist/ai/tipos.d.ts +0 -202
- package/dist/auth/rotas.d.ts +0 -8
- package/dist/auth/rotas.js +0 -16
- package/dist/auth/tipos.d.ts +0 -8
- package/dist/bucket/rotas.d.ts +3 -3
- package/dist/bucket/rotas.js +3 -3
- package/dist/intranet/rotas.d.ts +0 -335
- package/dist/intranet/rotas.js +0 -463
- package/dist/intranet/tipos.d.ts +0 -210
- package/dist/leads/rotas.d.ts +0 -334
- package/dist/leads/rotas.js +0 -440
- package/dist/leads/tipos.d.ts +0 -653
- package/dist/portal/rotas.d.ts +47 -454
- package/dist/portal/rotas.js +37 -635
- package/dist/portal/tipos.d.ts +125 -314
- package/dist/support/rotas.d.ts +0 -306
- package/dist/support/rotas.js +0 -420
- package/dist/support/tipos.d.ts +0 -216
- package/dist/tracing/rotas.d.ts +0 -305
- package/dist/tracing/rotas.js +0 -415
- package/dist/tracing/tipos.d.ts +0 -250
- package/dist/webhook/rotas.d.ts +0 -333
- package/dist/webhook/rotas.js +0 -458
- package/dist/webhook/tipos.d.ts +0 -255
- package/package.json +1 -1
package/dist/webhook/rotas.js
CHANGED
|
@@ -1,36 +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
|
import { chamar_servico, codificar_parametro_de_caminho } from "../base/requisicao.js";
|
|
3
3
|
import { TERMO_WEBHOOK as SERVICO_DESTA_API } from "../base/servicos.js";
|
|
4
|
-
/**
|
|
5
|
-
* Versão do backend no ar
|
|
6
|
-
*
|
|
7
|
-
* Pública, sem token. Devolve `sucesso: true` e a versão do backend que está publicada, no formato semver.
|
|
8
|
-
*
|
|
9
|
-
* `GET /`
|
|
10
|
-
*/
|
|
11
|
-
export function buscar_versao_test(opcoes_da_chamada) {
|
|
12
|
-
return chamar_servico({
|
|
13
|
-
servico: SERVICO_DESTA_API,
|
|
14
|
-
metodo_http: "GET",
|
|
15
|
-
caminho_da_rota: "/",
|
|
16
|
-
formato_da_resposta: "json",
|
|
17
|
-
}, opcoes_da_chamada);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Chaves públicas que conferem as entregas
|
|
21
|
-
*
|
|
22
|
-
* Pública, sem token. Lista as chaves públicas Ed25519 (JWKS, `kty: OKP`, `crv: Ed25519`, `alg: EdDSA`) com que o hub assina cada entrega. O assinante confere `X-TermoWebhook-Assinatura: ed25519=<base64url>` sobre `<X-TermoWebhook-Data>.<id do próprio aplicativo>.<corpo>` com a chave do `kid` em `X-TermoWebhook-Chave`. Pode guardar em cache por 5 minutos e buscar de novo quando chegar um `kid` desconhecido.
|
|
23
|
-
*
|
|
24
|
-
* `GET /.well-known/jwks.json`
|
|
25
|
-
*/
|
|
26
|
-
export function buscar_paginador_chave_de_assinatura(opcoes_da_chamada) {
|
|
27
|
-
return chamar_servico({
|
|
28
|
-
servico: SERVICO_DESTA_API,
|
|
29
|
-
metodo_http: "GET",
|
|
30
|
-
caminho_da_rota: "/.well-known/jwks.json",
|
|
31
|
-
formato_da_resposta: "json",
|
|
32
|
-
}, opcoes_da_chamada);
|
|
33
|
-
}
|
|
34
4
|
/**
|
|
35
5
|
* Lista os aplicativos paginados
|
|
36
6
|
*
|
|
@@ -215,256 +185,6 @@ export function deletar_pelo_id_assinatura(credencial_de_acesso, id, opcoes_da_c
|
|
|
215
185
|
formato_da_resposta: "sem_conteudo",
|
|
216
186
|
}, opcoes_da_chamada);
|
|
217
187
|
}
|
|
218
|
-
/**
|
|
219
|
-
* Lista acessos com paginação
|
|
220
|
-
*
|
|
221
|
-
* Exige qualquer permissão da área `colaboradores`. Ordena por perfil e depois por e-mail. `pagina` começa em 1 (padrão 1); `tamanho` tem padrão 10, sem máximo. Acessos excluídos não aparecem nem entram no `total`.
|
|
222
|
-
*
|
|
223
|
-
* `GET /auth`
|
|
224
|
-
*/
|
|
225
|
-
export function buscar_paginador_auth(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
226
|
-
return chamar_servico({
|
|
227
|
-
servico: SERVICO_DESTA_API,
|
|
228
|
-
metodo_http: "GET",
|
|
229
|
-
caminho_da_rota: "/auth",
|
|
230
|
-
credencial_de_acesso,
|
|
231
|
-
parametros_de_consulta: parametros,
|
|
232
|
-
formato_da_resposta: "json",
|
|
233
|
-
}, opcoes_da_chamada);
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Cria um acesso
|
|
237
|
-
*
|
|
238
|
-
* Exige a permissão `criar` da área `colaboradores`. Cadastra quem pode entrar no TermoWebhook: o e-mail é gravado em minúsculas, sem espaços nas pontas, com até 160 caracteres. O único perfil aceito é `colaborador`. O acesso nasce ativo e sem perfil de acesso. Para a pessoa conseguir entrar, o e-mail precisa ser `@termotubos.com.br` e existir no TermoAuth. O colaborador (nome, setor, cargo e função) não se cadastra aqui: vem só do TermoAuth, pelos eventos do TermoWebhook.
|
|
239
|
-
*
|
|
240
|
-
* `POST /auth`
|
|
241
|
-
*/
|
|
242
|
-
export function criar_auth(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
|
|
243
|
-
return chamar_servico({
|
|
244
|
-
servico: SERVICO_DESTA_API,
|
|
245
|
-
metodo_http: "POST",
|
|
246
|
-
caminho_da_rota: "/auth",
|
|
247
|
-
credencial_de_acesso,
|
|
248
|
-
corpo_json: corpo_da_requisicao,
|
|
249
|
-
formato_da_resposta: "json",
|
|
250
|
-
}, opcoes_da_chamada);
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Busca o acesso de quem está logado
|
|
254
|
-
*
|
|
255
|
-
* Livre para qualquer usuário autenticado com cadastro ativo, mesmo sem nenhuma permissão liberada. Devolve o cadastro de quem chamou, o nome do perfil de acesso do colaborador em `perfil_acesso` (`null` quando ainda não tem) e as permissões que o perfil dá por área (`monitoramento`, `aplicativos`, `contratos`, `assinaturas` e `colaboradores`), cada uma com `ler`, `criar`, `editar` e `deletar`. Um master do TermoAuth recebe todas as permissões e, no primeiro acesso, ganha o cadastro automaticamente. `nome` vem do TermoAuth e, se estiver vazio, repete o e-mail. É a chamada que o painel faz antes de mostrar qualquer tela.
|
|
256
|
-
*
|
|
257
|
-
* `GET /auth/acesso`
|
|
258
|
-
*/
|
|
259
|
-
export function buscar_acesso_auth(credencial_de_acesso, opcoes_da_chamada) {
|
|
260
|
-
return chamar_servico({
|
|
261
|
-
servico: SERVICO_DESTA_API,
|
|
262
|
-
metodo_http: "GET",
|
|
263
|
-
caminho_da_rota: "/auth/acesso",
|
|
264
|
-
credencial_de_acesso,
|
|
265
|
-
formato_da_resposta: "json",
|
|
266
|
-
}, opcoes_da_chamada);
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Lista básica de acessos para seleção
|
|
270
|
-
*
|
|
271
|
-
* Exige qualquer permissão da área `colaboradores`. Devolve só id, e-mail e perfil, em ordem alfabética de e-mail, para escolher um acesso. `busca` procura por trecho do e-mail, sem diferenciar maiúsculas; `perfil` compara o valor exato. `pagina` começa em 1 (padrão 1); `tamanho` tem padrão 10, sem máximo.
|
|
272
|
-
*
|
|
273
|
-
* `GET /auth/autocomplete`
|
|
274
|
-
*/
|
|
275
|
-
export function buscar_auto_complete_auth(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
276
|
-
return chamar_servico({
|
|
277
|
-
servico: SERVICO_DESTA_API,
|
|
278
|
-
metodo_http: "GET",
|
|
279
|
-
caminho_da_rota: "/auth/autocomplete",
|
|
280
|
-
credencial_de_acesso,
|
|
281
|
-
parametros_de_consulta: parametros,
|
|
282
|
-
formato_da_resposta: "json",
|
|
283
|
-
}, opcoes_da_chamada);
|
|
284
|
-
}
|
|
285
|
-
/**
|
|
286
|
-
* Busca acessos por filtro
|
|
287
|
-
*
|
|
288
|
-
* Exige qualquer permissão da área `colaboradores`. Devolve todos os acessos que casam com o filtro, sem paginação, em ordem alfabética de e-mail. `email` procura por trecho, sem diferenciar maiúsculas; `perfil` compara o valor exato; `ativo` filtra pela situação. Sem filtro, devolve todos. Acessos excluídos não aparecem.
|
|
289
|
-
*
|
|
290
|
-
* `GET /auth/filtro`
|
|
291
|
-
*/
|
|
292
|
-
export function buscar_pelo_filtro_auth(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
293
|
-
return chamar_servico({
|
|
294
|
-
servico: SERVICO_DESTA_API,
|
|
295
|
-
metodo_http: "GET",
|
|
296
|
-
caminho_da_rota: "/auth/filtro",
|
|
297
|
-
credencial_de_acesso,
|
|
298
|
-
parametros_de_consulta: parametros,
|
|
299
|
-
formato_da_resposta: "json",
|
|
300
|
-
}, opcoes_da_chamada);
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Busca um acesso pelo id
|
|
304
|
-
*
|
|
305
|
-
* Exige qualquer permissão da área `colaboradores`. Acesso excluído responde `404`. `vinculado` diz se há um colaborador ligado ao acesso, e `nome` é o nome desse colaborador.
|
|
306
|
-
*
|
|
307
|
-
* `GET /auth/{id}`
|
|
308
|
-
*/
|
|
309
|
-
export function buscar_pelo_id_auth(credencial_de_acesso, id, opcoes_da_chamada) {
|
|
310
|
-
return chamar_servico({
|
|
311
|
-
servico: SERVICO_DESTA_API,
|
|
312
|
-
metodo_http: "GET",
|
|
313
|
-
caminho_da_rota: `/auth/${codificar_parametro_de_caminho(id)}`,
|
|
314
|
-
credencial_de_acesso,
|
|
315
|
-
formato_da_resposta: "json",
|
|
316
|
-
}, opcoes_da_chamada);
|
|
317
|
-
}
|
|
318
|
-
/**
|
|
319
|
-
* Atualiza um acesso pelo id
|
|
320
|
-
*
|
|
321
|
-
* Exige a permissão `editar` da área `colaboradores`. Só os campos enviados mudam: `email` (gravado em minúsculas, até 160 caracteres) e `ativo` (acesso inativo é barrado em todas as rotas). O acesso de um master do TermoAuth não pode ser alterado.
|
|
322
|
-
*
|
|
323
|
-
* `PATCH /auth/{id}`
|
|
324
|
-
*/
|
|
325
|
-
export function atualizar_pelo_id_auth(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
|
|
326
|
-
return chamar_servico({
|
|
327
|
-
servico: SERVICO_DESTA_API,
|
|
328
|
-
metodo_http: "PATCH",
|
|
329
|
-
caminho_da_rota: `/auth/${codificar_parametro_de_caminho(id)}`,
|
|
330
|
-
credencial_de_acesso,
|
|
331
|
-
corpo_json: corpo_da_requisicao,
|
|
332
|
-
formato_da_resposta: "json",
|
|
333
|
-
}, opcoes_da_chamada);
|
|
334
|
-
}
|
|
335
|
-
/**
|
|
336
|
-
* Exclui um acesso pelo id
|
|
337
|
-
*
|
|
338
|
-
* Exige a permissão `deletar` da área `colaboradores`. A exclusão é lógica: o acesso some das consultas e a pessoa deixa de entrar, mas o registro fica guardado e não há como restaurar. Acesso com colaborador vinculado não pode ser excluído: o colaborador pertence ao TermoAuth e só sai de lá. O acesso de um master do TermoAuth não pode ser excluído.
|
|
339
|
-
*
|
|
340
|
-
* `DELETE /auth/{id}`
|
|
341
|
-
*/
|
|
342
|
-
export function deletar_pelo_id_auth(credencial_de_acesso, id, opcoes_da_chamada) {
|
|
343
|
-
return chamar_servico({
|
|
344
|
-
servico: SERVICO_DESTA_API,
|
|
345
|
-
metodo_http: "DELETE",
|
|
346
|
-
caminho_da_rota: `/auth/${codificar_parametro_de_caminho(id)}`,
|
|
347
|
-
credencial_de_acesso,
|
|
348
|
-
formato_da_resposta: "sem_conteudo",
|
|
349
|
-
}, opcoes_da_chamada);
|
|
350
|
-
}
|
|
351
|
-
/**
|
|
352
|
-
* Lista colaboradores com paginação
|
|
353
|
-
*
|
|
354
|
-
* Só leitura: o colaborador é cadastrado, alterado e excluído no TermoAuth e chega aqui pelos eventos `colaborador.criado` e `colaborador.atualizado` do TermoWebhook; aqui só se escolhe o perfil de acesso dele (`PATCH /colaborador/{id}/perfil_acesso`). Exige qualquer permissão da área `colaboradores`. Ordena por nome. `nome`, `setor` e `cargo` filtram por trecho, sem diferenciar maiúsculas, e `ativo` pela situação. `pagina` começa em 1 (padrão 1; valores menores viram 1). A página tem sempre 50 itens: `tamanho` é aceito, mas ignorado. Colaboradores excluídos não aparecem nem entram no `total`, que conta os registros que casam com os filtros. Quando quem chama é master do TermoAuth, a lista antes traz do TermoAuth os colaboradores `@termotubos.com.br` que ainda não existem aqui, criando acesso e colaborador com o perfil de acesso "Acesso inicial" (só leitura em todas as áreas); quem já existe não é alterado e ninguém é excluído. Se o TermoAuth falhar, a lista sai mesmo assim, só sem a sincronização.
|
|
355
|
-
*
|
|
356
|
-
* `GET /colaborador`
|
|
357
|
-
*/
|
|
358
|
-
export function buscar_paginador_colaborador(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
359
|
-
return chamar_servico({
|
|
360
|
-
servico: SERVICO_DESTA_API,
|
|
361
|
-
metodo_http: "GET",
|
|
362
|
-
caminho_da_rota: "/colaborador",
|
|
363
|
-
credencial_de_acesso,
|
|
364
|
-
parametros_de_consulta: parametros,
|
|
365
|
-
formato_da_resposta: "json",
|
|
366
|
-
}, opcoes_da_chamada);
|
|
367
|
-
}
|
|
368
|
-
/**
|
|
369
|
-
* Lista básica de colaboradores para seleção
|
|
370
|
-
*
|
|
371
|
-
* Exige qualquer permissão da área `colaboradores`. Devolve só id, nome e e-mail, em ordem alfabética de nome, para escolher um colaborador. `busca` procura por trecho do nome ou do e-mail, sem diferenciar maiúsculas. `pagina` começa em 1 (padrão 1); `tamanho` tem padrão 10, sem máximo.
|
|
372
|
-
*
|
|
373
|
-
* `GET /colaborador/autocomplete`
|
|
374
|
-
*/
|
|
375
|
-
export function buscar_auto_complete_colaborador(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
376
|
-
return chamar_servico({
|
|
377
|
-
servico: SERVICO_DESTA_API,
|
|
378
|
-
metodo_http: "GET",
|
|
379
|
-
caminho_da_rota: "/colaborador/autocomplete",
|
|
380
|
-
credencial_de_acesso,
|
|
381
|
-
parametros_de_consulta: parametros,
|
|
382
|
-
formato_da_resposta: "json",
|
|
383
|
-
}, opcoes_da_chamada);
|
|
384
|
-
}
|
|
385
|
-
/**
|
|
386
|
-
* Busca colaboradores por filtro
|
|
387
|
-
*
|
|
388
|
-
* Exige qualquer permissão da área `colaboradores`. Devolve todos os colaboradores que casam com o filtro, sem paginação, em ordem alfabética de nome. `busca` procura por trecho do nome ou do e-mail; `nome`, `email`, `setor` e `cargo` procuram por trecho, sem diferenciar maiúsculas; `ativo` filtra pela situação; `perfil_acesso_id` filtra pelo perfil de acesso. Sem filtro, devolve todos. Colaboradores excluídos não aparecem.
|
|
389
|
-
*
|
|
390
|
-
* `GET /colaborador/filtro`
|
|
391
|
-
*/
|
|
392
|
-
export function buscar_pelo_filtro_colaborador(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
393
|
-
return chamar_servico({
|
|
394
|
-
servico: SERVICO_DESTA_API,
|
|
395
|
-
metodo_http: "GET",
|
|
396
|
-
caminho_da_rota: "/colaborador/filtro",
|
|
397
|
-
credencial_de_acesso,
|
|
398
|
-
parametros_de_consulta: parametros,
|
|
399
|
-
formato_da_resposta: "json",
|
|
400
|
-
}, opcoes_da_chamada);
|
|
401
|
-
}
|
|
402
|
-
/**
|
|
403
|
-
* Busca um colaborador pelo id
|
|
404
|
-
*
|
|
405
|
-
* Exige qualquer permissão da área `colaboradores`. Colaborador excluído responde `404`. Traz junto o e-mail do acesso, se ele é master do TermoAuth e o perfil de acesso (`perfil_acesso_id` e o nome em `perfil_acesso`).
|
|
406
|
-
*
|
|
407
|
-
* `GET /colaborador/{id}`
|
|
408
|
-
*/
|
|
409
|
-
export function buscar_pelo_id_colaborador(credencial_de_acesso, id, opcoes_da_chamada) {
|
|
410
|
-
return chamar_servico({
|
|
411
|
-
servico: SERVICO_DESTA_API,
|
|
412
|
-
metodo_http: "GET",
|
|
413
|
-
caminho_da_rota: `/colaborador/${codificar_parametro_de_caminho(id)}`,
|
|
414
|
-
credencial_de_acesso,
|
|
415
|
-
formato_da_resposta: "json",
|
|
416
|
-
}, opcoes_da_chamada);
|
|
417
|
-
}
|
|
418
|
-
/**
|
|
419
|
-
* Define o perfil de acesso de um colaborador
|
|
420
|
-
*
|
|
421
|
-
* Exige a permissão `editar` da área `colaboradores`. É a única escrita do colaborador feita pelo TermoWebhook: `perfil_acesso_id` aponta para um perfil de `GET /perfil_acesso/filtro` e passa a definir o que a pessoa enxerga; `null` tira o perfil e deixa a pessoa sem nenhuma área. O colaborador de um master do TermoAuth não aceita perfil (ele já tem tudo). Vale em até 5 minutos (cache do acesso).
|
|
422
|
-
*
|
|
423
|
-
* `PATCH /colaborador/{id}/perfil_acesso`
|
|
424
|
-
*/
|
|
425
|
-
export function vincular_perfil_acesso_colaborador(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
|
|
426
|
-
return chamar_servico({
|
|
427
|
-
servico: SERVICO_DESTA_API,
|
|
428
|
-
metodo_http: "PATCH",
|
|
429
|
-
caminho_da_rota: `/colaborador/${codificar_parametro_de_caminho(id)}/perfil_acesso`,
|
|
430
|
-
credencial_de_acesso,
|
|
431
|
-
corpo_json: corpo_da_requisicao,
|
|
432
|
-
formato_da_resposta: "json",
|
|
433
|
-
}, opcoes_da_chamada);
|
|
434
|
-
}
|
|
435
|
-
/**
|
|
436
|
-
* Mostra se o segredo do app está cadastrado
|
|
437
|
-
*
|
|
438
|
-
* Só o master do TermoAuth (os demais recebem `403`). Devolve a configuração única do TermoWebhook (tela `/painel/configuracoes/provedores`). O segredo do app gerado no TermoAuth nunca volta aberto: só `configurado` e o final mascarado (`final_visivel`). Fica cifrado no banco com AES-256-GCM e a chave derivada de `GLOBAL_SECRET_CRIPTOGRAFIA`; sem essa variável no servidor, ou se ela mudou, `configurado` vem `false`.
|
|
439
|
-
*
|
|
440
|
-
* `GET /configuracao`
|
|
441
|
-
*/
|
|
442
|
-
export function buscar_pelo_id_configuracao(credencial_de_acesso, opcoes_da_chamada) {
|
|
443
|
-
return chamar_servico({
|
|
444
|
-
servico: SERVICO_DESTA_API,
|
|
445
|
-
metodo_http: "GET",
|
|
446
|
-
caminho_da_rota: "/configuracao",
|
|
447
|
-
credencial_de_acesso,
|
|
448
|
-
formato_da_resposta: "json",
|
|
449
|
-
}, opcoes_da_chamada);
|
|
450
|
-
}
|
|
451
|
-
/**
|
|
452
|
-
* Grava ou limpa o segredo do app
|
|
453
|
-
*
|
|
454
|
-
* Só o master do TermoAuth (os demais recebem `403`). `segredo_do_app_gerado_no_termo_auth` ausente fica como está, string troca (até 2.000 caracteres, sem quebra de linha; vazia conta como limpar) e `null` limpa. O valor é cifrado com a `GLOBAL_SECRET_CRIPTOGRAFIA` e entregue na hora ao `termo_core`, sem deploy. A resposta é a mesma do `GET`.
|
|
455
|
-
*
|
|
456
|
-
* `PATCH /configuracao`
|
|
457
|
-
*/
|
|
458
|
-
export function atualizar_pelo_id_configuracao(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
|
|
459
|
-
return chamar_servico({
|
|
460
|
-
servico: SERVICO_DESTA_API,
|
|
461
|
-
metodo_http: "PATCH",
|
|
462
|
-
caminho_da_rota: "/configuracao",
|
|
463
|
-
credencial_de_acesso,
|
|
464
|
-
corpo_json: corpo_da_requisicao,
|
|
465
|
-
formato_da_resposta: "json",
|
|
466
|
-
}, opcoes_da_chamada);
|
|
467
|
-
}
|
|
468
188
|
/**
|
|
469
189
|
* Lista entregas com paginação
|
|
470
190
|
*
|
|
@@ -680,148 +400,6 @@ export function buscar_pelo_id_evento_recusado(credencial_de_acesso, id, opcoes_
|
|
|
680
400
|
formato_da_resposta: "json",
|
|
681
401
|
}, opcoes_da_chamada);
|
|
682
402
|
}
|
|
683
|
-
/**
|
|
684
|
-
* Publica um evento no hub
|
|
685
|
-
*
|
|
686
|
-
* Exige o token de aplicativo do TermoAuth (`Authorization: Bearer <token>`, `tipo: aplicativo`): é aqui que cada aplicativo publica os eventos dos dados de que é dono. Token de usuário não publica.
|
|
687
|
-
*
|
|
688
|
-
* **Token.** O app troca o segredo dele (`SEGREDO_DO_APP_GERADO_NO_TERMO_AUTH`) por um JWT de 15 minutos em `POST /token_de_app` do TermoAuth; o `termo_core` faz isso sozinho. O hub valida o JWT offline pelo JWKS do TermoAuth. O publicador é o aplicativo cujo `identificador_no_termoauth` é o `sub` do token; se ele ainda não existir, é criado na hora com o `name` do token, ativo e sem tipos de evento.
|
|
689
|
-
*
|
|
690
|
-
* **Corpo.** JSON de até 1 MiB com o envelope `{ id, tipo, versao, entidade_id, ocorrido_em, dados }`: `id` é um UUID (de preferência UUIDv7) gerado pelo publicador e é a chave de idempotência; `tipo` é o nome do tipo de evento no catálogo; `versao` é o número da versão do esquema (maior que zero); `entidade_id` tem de 1 a 200 caracteres; `ocorrido_em` é RFC 3339; `dados` é validado contra o JSON Schema da versão.
|
|
691
|
-
*
|
|
692
|
-
* **Ordem das verificações.** Token, aplicativo ativo, envelope, tipo cadastrado e ativo, publicador dono do tipo, versão cadastrada e não desligada, e os `dados` contra o contrato. Toda recusa fica registrada nos eventos recusados do painel com o `motivo` devolvido: `token_invalido`, `aplicativo_inativo`, `envelope_invalido`, `tipo_desconhecido`, `tipo_inativo`, `publicador_nao_e_dono`, `versao_inexistente`, `versao_desligada` ou `dados_fora_do_contrato`.
|
|
693
|
-
*
|
|
694
|
-
* **Idempotência.** Um `id` já recebido responde `200` com `situacao: repetido` e não cria entregas de novo, então reenviar depois de uma falha de rede é seguro. Aceito, o evento é entregue a todas as assinaturas ativas da versão publicada, pelo menos uma vez cada. Publicar numa versão descontinuada é aceito, mas volta um `aviso` pedindo a migração.
|
|
695
|
-
*
|
|
696
|
-
* `POST /eventos`
|
|
697
|
-
*/
|
|
698
|
-
export function receber_evento_eventos(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
|
|
699
|
-
return chamar_servico({
|
|
700
|
-
servico: SERVICO_DESTA_API,
|
|
701
|
-
metodo_http: "POST",
|
|
702
|
-
caminho_da_rota: "/eventos",
|
|
703
|
-
credencial_de_acesso,
|
|
704
|
-
corpo_json: corpo_da_requisicao,
|
|
705
|
-
formato_da_resposta: "json",
|
|
706
|
-
}, opcoes_da_chamada);
|
|
707
|
-
}
|
|
708
|
-
/**
|
|
709
|
-
* Lista os perfis de acesso com paginação
|
|
710
|
-
*
|
|
711
|
-
* Exige qualquer permissão da área `colaboradores` (qualquer ação liberada na área já libera a leitura). Ordena pelo nome. `pagina` começa em 1 (padrão 1; valores menores viram 1). A página tem sempre 50 itens: `tamanho` é aceito, mas ignorado. `total` conta todos os registros não excluídos.
|
|
712
|
-
*
|
|
713
|
-
* `GET /perfil_acesso`
|
|
714
|
-
*/
|
|
715
|
-
export function buscar_paginador_perfil_acesso(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
716
|
-
return chamar_servico({
|
|
717
|
-
servico: SERVICO_DESTA_API,
|
|
718
|
-
metodo_http: "GET",
|
|
719
|
-
caminho_da_rota: "/perfil_acesso",
|
|
720
|
-
credencial_de_acesso,
|
|
721
|
-
parametros_de_consulta: parametros,
|
|
722
|
-
formato_da_resposta: "json",
|
|
723
|
-
}, opcoes_da_chamada);
|
|
724
|
-
}
|
|
725
|
-
/**
|
|
726
|
-
* Cria um perfil de acesso
|
|
727
|
-
*
|
|
728
|
-
* Exige a permissão `criar` da área `colaboradores`. O perfil de acesso é o conjunto de permissões que o TermoWebhook dá a um colaborador: cada colaborador aponta para um perfil (`PATCH /colaborador/{id}/perfil_acesso`) e enxerga o que o perfil libera. `nome` é obrigatório (até 80 caracteres, único sem diferenciar maiúsculas); `descricao` é opcional (até 200); `permissoes` traz, para cada área (`monitoramento`, `aplicativos`, `contratos`, `assinaturas` e `colaboradores`), as ações `ler`, `criar`, `editar` e `deletar` (o que não vier fica `false`). A resposta inclui `colaboradores`, quantas pessoas usam o perfil. O master do TermoAuth tem tudo liberado sem precisar de perfil.
|
|
729
|
-
*
|
|
730
|
-
* `POST /perfil_acesso`
|
|
731
|
-
*/
|
|
732
|
-
export function criar_perfil_acesso(credencial_de_acesso, corpo_da_requisicao, opcoes_da_chamada) {
|
|
733
|
-
return chamar_servico({
|
|
734
|
-
servico: SERVICO_DESTA_API,
|
|
735
|
-
metodo_http: "POST",
|
|
736
|
-
caminho_da_rota: "/perfil_acesso",
|
|
737
|
-
credencial_de_acesso,
|
|
738
|
-
corpo_json: corpo_da_requisicao,
|
|
739
|
-
formato_da_resposta: "json",
|
|
740
|
-
}, opcoes_da_chamada);
|
|
741
|
-
}
|
|
742
|
-
/**
|
|
743
|
-
* Lista básica de perfis de acesso para seleção
|
|
744
|
-
*
|
|
745
|
-
* Exige qualquer permissão da área `colaboradores` (qualquer ação liberada na área já libera a leitura). Devolve só o id e o nome, em ordem alfabética. `busca` procura por trecho do nome, sem diferenciar maiúsculas. `pagina` começa em 1 (padrão 1) e `tamanho` tem padrão 10, sem máximo; valores menores que 1 viram 1. `total` conta os registros que casam com a busca.
|
|
746
|
-
*
|
|
747
|
-
* `GET /perfil_acesso/autocomplete`
|
|
748
|
-
*/
|
|
749
|
-
export function buscar_auto_complete_perfil_acesso(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
750
|
-
return chamar_servico({
|
|
751
|
-
servico: SERVICO_DESTA_API,
|
|
752
|
-
metodo_http: "GET",
|
|
753
|
-
caminho_da_rota: "/perfil_acesso/autocomplete",
|
|
754
|
-
credencial_de_acesso,
|
|
755
|
-
parametros_de_consulta: parametros,
|
|
756
|
-
formato_da_resposta: "json",
|
|
757
|
-
}, opcoes_da_chamada);
|
|
758
|
-
}
|
|
759
|
-
/**
|
|
760
|
-
* Busca perfis de acesso por filtro
|
|
761
|
-
*
|
|
762
|
-
* Exige qualquer permissão da área `colaboradores` (qualquer ação liberada na área já libera a leitura). Devolve todos os perfis que casam com o filtro, sem paginação, em ordem alfabética de nome. `nome` procura por trecho, sem diferenciar maiúsculas. Sem filtro, devolve todos (é o que a tela usa para listar e para escolher o perfil de um colaborador).
|
|
763
|
-
*
|
|
764
|
-
* `GET /perfil_acesso/filtro`
|
|
765
|
-
*/
|
|
766
|
-
export function buscar_pelo_filtro_perfil_acesso(credencial_de_acesso, parametros = {}, opcoes_da_chamada) {
|
|
767
|
-
return chamar_servico({
|
|
768
|
-
servico: SERVICO_DESTA_API,
|
|
769
|
-
metodo_http: "GET",
|
|
770
|
-
caminho_da_rota: "/perfil_acesso/filtro",
|
|
771
|
-
credencial_de_acesso,
|
|
772
|
-
parametros_de_consulta: parametros,
|
|
773
|
-
formato_da_resposta: "json",
|
|
774
|
-
}, opcoes_da_chamada);
|
|
775
|
-
}
|
|
776
|
-
/**
|
|
777
|
-
* Busca um perfil de acesso pelo id
|
|
778
|
-
*
|
|
779
|
-
* Exige qualquer permissão da área `colaboradores` (qualquer ação liberada na área já libera a leitura). Perfil excluído responde `404`.
|
|
780
|
-
*
|
|
781
|
-
* `GET /perfil_acesso/{id}`
|
|
782
|
-
*/
|
|
783
|
-
export function buscar_pelo_id_perfil_acesso(credencial_de_acesso, id, opcoes_da_chamada) {
|
|
784
|
-
return chamar_servico({
|
|
785
|
-
servico: SERVICO_DESTA_API,
|
|
786
|
-
metodo_http: "GET",
|
|
787
|
-
caminho_da_rota: `/perfil_acesso/${codificar_parametro_de_caminho(id)}`,
|
|
788
|
-
credencial_de_acesso,
|
|
789
|
-
formato_da_resposta: "json",
|
|
790
|
-
}, opcoes_da_chamada);
|
|
791
|
-
}
|
|
792
|
-
/**
|
|
793
|
-
* Atualiza um perfil de acesso pelo id
|
|
794
|
-
*
|
|
795
|
-
* Exige a permissão `editar` da área `colaboradores`. Atualização parcial: só os campos enviados mudam. `nome` segue o limite do cadastro; `descricao` vazia apaga o valor; `permissoes`, quando enviado, substitui o conjunto inteiro (o que não vier fica `false`). Todo colaborador do perfil passa a valer com as novas permissões em até 5 minutos (cache do acesso).
|
|
796
|
-
*
|
|
797
|
-
* `PATCH /perfil_acesso/{id}`
|
|
798
|
-
*/
|
|
799
|
-
export function atualizar_pelo_id_perfil_acesso(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
|
|
800
|
-
return chamar_servico({
|
|
801
|
-
servico: SERVICO_DESTA_API,
|
|
802
|
-
metodo_http: "PATCH",
|
|
803
|
-
caminho_da_rota: `/perfil_acesso/${codificar_parametro_de_caminho(id)}`,
|
|
804
|
-
credencial_de_acesso,
|
|
805
|
-
corpo_json: corpo_da_requisicao,
|
|
806
|
-
formato_da_resposta: "json",
|
|
807
|
-
}, opcoes_da_chamada);
|
|
808
|
-
}
|
|
809
|
-
/**
|
|
810
|
-
* Exclui um perfil de acesso pelo id
|
|
811
|
-
*
|
|
812
|
-
* Exige a permissão `deletar` da área `colaboradores`. A exclusão é lógica e só é aceita quando nenhum colaborador usa o perfil: com gente vinculada responde `409`, e é preciso trocar o perfil dessas pessoas antes.
|
|
813
|
-
*
|
|
814
|
-
* `DELETE /perfil_acesso/{id}`
|
|
815
|
-
*/
|
|
816
|
-
export function deletar_pelo_id_perfil_acesso(credencial_de_acesso, id, opcoes_da_chamada) {
|
|
817
|
-
return chamar_servico({
|
|
818
|
-
servico: SERVICO_DESTA_API,
|
|
819
|
-
metodo_http: "DELETE",
|
|
820
|
-
caminho_da_rota: `/perfil_acesso/${codificar_parametro_de_caminho(id)}`,
|
|
821
|
-
credencial_de_acesso,
|
|
822
|
-
formato_da_resposta: "sem_conteudo",
|
|
823
|
-
}, opcoes_da_chamada);
|
|
824
|
-
}
|
|
825
403
|
/**
|
|
826
404
|
* Lista solicitações de reprocessamento com paginação
|
|
827
405
|
*
|
|
@@ -895,21 +473,6 @@ export function buscar_pelo_id_solicitacao_de_reprocessamento(credencial_de_aces
|
|
|
895
473
|
formato_da_resposta: "json",
|
|
896
474
|
}, opcoes_da_chamada);
|
|
897
475
|
}
|
|
898
|
-
/**
|
|
899
|
-
* Verifica se o backend está no ar
|
|
900
|
-
*
|
|
901
|
-
* Pública, sem token. Responde `200` com `sucesso: true` e a versão do backend no ar (semver) sempre que o servidor está de pé; não consulta o banco nem o TermoAuth.
|
|
902
|
-
*
|
|
903
|
-
* `GET /test`
|
|
904
|
-
*/
|
|
905
|
-
export function verificar_saude_test(opcoes_da_chamada) {
|
|
906
|
-
return chamar_servico({
|
|
907
|
-
servico: SERVICO_DESTA_API,
|
|
908
|
-
metodo_http: "GET",
|
|
909
|
-
caminho_da_rota: "/test",
|
|
910
|
-
formato_da_resposta: "json",
|
|
911
|
-
}, opcoes_da_chamada);
|
|
912
|
-
}
|
|
913
476
|
/**
|
|
914
477
|
* Lista os tipos de evento paginados
|
|
915
478
|
*
|
|
@@ -1144,24 +707,3 @@ export function deletar_pelo_id_versao_de_esquema(credencial_de_acesso, id, opco
|
|
|
1144
707
|
formato_da_resposta: "sem_conteudo",
|
|
1145
708
|
}, opcoes_da_chamada);
|
|
1146
709
|
}
|
|
1147
|
-
/**
|
|
1148
|
-
* Recebe as entregas do hub como assinante
|
|
1149
|
-
*
|
|
1150
|
-
* Pública, sem token do usuário: é onde o próprio TermoWebhook, como assinante, recebe as entregas do hub. A assinatura é conferida pelo crate `termo_core` (feature `webhook_receber`) com a chave pública do hub (endereço do hub pelo `AMBIENTE` + `/.well-known/jwks.json`) e o id do aplicativo, que é o mesmo do TermoAuth e vem do token de aplicativo (sem variável de ambiente).
|
|
1151
|
-
*
|
|
1152
|
-
* **Eventos assinados.** `colaborador.criado` v1 cria o acesso e o colaborador de quem ainda não existe aqui, com o perfil de acesso "Acesso inicial" (só leitura em todas as áreas). `colaborador.atualizado` v1 grava e-mail e master, o nome só quando `nome` está em `campos_alterados`, e a troca de perfil liga ou desliga o acesso (virou cliente desliga, voltou a colaborador religa); quem é colaborador e ainda não existe é criado.
|
|
1153
|
-
*
|
|
1154
|
-
* **Ordem e repetição.** A entrega é pelo menos uma vez e sem ordem garantida: a alteração só é aplicada quando o `ocorrido_em` é mais novo que o do último evento aplicado àquele acesso; o repetido ou atrasado responde `200` sem mudar nada. Tipo que o app não assina responde `200`.
|
|
1155
|
-
*
|
|
1156
|
-
* `POST /webhooks/termowebhook`
|
|
1157
|
-
*/
|
|
1158
|
-
export function webhooks_receber_evento_termo_webhook(parametros, corpo_da_requisicao, opcoes_da_chamada) {
|
|
1159
|
-
return chamar_servico({
|
|
1160
|
-
servico: SERVICO_DESTA_API,
|
|
1161
|
-
metodo_http: "POST",
|
|
1162
|
-
caminho_da_rota: "/webhooks/termowebhook",
|
|
1163
|
-
cabecalhos: { "X-TermoWebhook-Data": parametros["X-TermoWebhook-Data"], "X-TermoWebhook-Chave": parametros["X-TermoWebhook-Chave"], "X-TermoWebhook-Destino": parametros["X-TermoWebhook-Destino"], "X-TermoWebhook-Assinatura": parametros["X-TermoWebhook-Assinatura"] },
|
|
1164
|
-
corpo_json: corpo_da_requisicao,
|
|
1165
|
-
formato_da_resposta: "sem_conteudo",
|
|
1166
|
-
}, opcoes_da_chamada);
|
|
1167
|
-
}
|