Assinatura

7 funções do TermoWebhook para assinatura.

// npm install termo_core --save-exact
import * as webhook from "termo_core/webhook";
// ou: import { webhook } from "termo_core";
FunçãoRotaO que faz
buscar_paginador_assinaturaGET /assinaturaLista as assinaturas paginadas
criar_assinaturaPOST /assinaturaCadastra uma assinatura
buscar_auto_complete_assinaturaGET /assinatura/autocompleteLista básica de assinaturas para seleção
buscar_pelo_filtro_assinaturaGET /assinatura/filtroBusca assinaturas por filtro
buscar_pelo_id_assinaturaGET /assinatura/{id}Busca uma assinatura pelo id
atualizar_pelo_id_assinaturaPATCH /assinatura/{id}Atualiza uma assinatura pelo id
deletar_pelo_id_assinaturaDELETE /assinatura/{id}Exclui uma assinatura pelo id

buscar_paginador_assinatura

GET/assinatura Exige credencial

Lista as assinaturas paginadas

Leitura liberada a quem tem a permissão ler em assinaturas ou monitoramento. Lista as assinaturas não excluídas, ordenadas pelo nome do aplicativo assinante e depois pelo nome do tipo de evento. pagina começa em 1 (padrão 1) e tamanho tem padrão 10, sem máximo; valores menores que 1 viram 1. total é a quantidade de assinaturas não excluídas.

function buscar_paginador_assinatura(
  credencial_de_acesso: CredencialDeAcesso,
  parametros: ParametrosDeBuscarPaginadorAssinatura = {},
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.PaginaAssinatura>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { buscar_paginador_assinatura } from "termo_core/webhook";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_paginador_assinatura(credencial_de_acesso, { pagina: 1 });

Argumentos

Nome

Tipo

Retorno: Promise<tipos.PaginaAssinatura> · Rust: Result<tipos::PaginaAssinatura, ErroAoChamarServico> · veja PaginaAssinatura.

criar_assinatura

POST/assinatura Exige credencial

Cadastra uma assinatura

Exige a permissão criar na área assinaturas. Inscreve um aplicativo para receber os eventos de um tipo numa versão do esquema: cada evento aceito dali em diante nessa versão vira uma entrega para url_de_destino. O aplicativo assinante e o tipo de evento precisam existir, e a versão precisa existir para o tipo e não estar desligada. Cada aplicativo assina um tipo uma vez só; para mudar de versão, atualize a assinatura existente. url_de_destino tem até 500 caracteres e precisa ser https (http só para localhost). maximo_de_tentativas vai de 1 a 20 e tempo_limite_em_segundos de 1 a 30 (padrão 5 em ambos); ativa tem padrão true. Não há segredo por assinatura: o hub assina cada entrega com a chave dele (Ed25519, chaves públicas em GET /.well-known/jwks.json) e o assinante confere só com a URL do hub e o id do próprio aplicativo.

function criar_assinatura(
  credencial_de_acesso: CredencialDeAcesso,
  corpo_da_requisicao: tipos.AssinaturaCriar,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.Assinatura>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { criar_assinatura } from "termo_core/webhook";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await criar_assinatura(credencial_de_acesso, corpo_da_requisicao);

Argumentos

Nome

Tipo

Retorno: Promise<tipos.Assinatura> · Rust: Result<tipos::Assinatura, ErroAoChamarServico> · veja Assinatura.

buscar_auto_complete_assinatura

GET/assinatura/autocomplete Exige credencial

Lista básica de assinaturas para seleção

Leitura liberada a quem tem a permissão ler em assinaturas ou monitoramento, por exemplo para escolher a assinatura de um reprocessamento. Devolve só id, nomes do assinante e do tipo, versão e ativa, ordenados pelo nome do aplicativo assinante e depois pelo nome do tipo, sem as excluídas. busca procura o trecho no nome do aplicativo assinante ou do tipo de evento, sem diferenciar maiúsculas. pagina começa em 1 (padrão 1) e tamanho tem padrão 10.

function buscar_auto_complete_assinatura(
  credencial_de_acesso: CredencialDeAcesso,
  parametros: ParametrosDeBuscarAutoCompleteAssinatura = {},
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.PaginaAssinaturaAutoComplete>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { buscar_auto_complete_assinatura } from "termo_core/webhook";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_auto_complete_assinatura(credencial_de_acesso, { busca: "..." });

Argumentos

Nome

Tipo

Retorno: Promise<tipos.PaginaAssinaturaAutoComplete> · Rust: Result<tipos::PaginaAssinaturaAutoComplete, ErroAoChamarServico> · veja PaginaAssinaturaAutoComplete.

buscar_pelo_filtro_assinatura

GET/assinatura/filtro Exige credencial

Busca assinaturas por filtro

Leitura liberada a quem tem a permissão ler em assinaturas ou monitoramento. Devolve todas as assinaturas não excluídas que casam com o filtro, sem paginação, ordenadas pelo nome do aplicativo assinante e depois pelo nome do tipo de evento. aplicativo_assinante_id, tipo_de_evento_id e ativa filtram pelo valor exato. Sem filtro, devolve todas.

function buscar_pelo_filtro_assinatura(
  credencial_de_acesso: CredencialDeAcesso,
  parametros: ParametrosDeBuscarPeloFiltroAssinatura = {},
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<Array<tipos.Assinatura>>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { buscar_pelo_filtro_assinatura } from "termo_core/webhook";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_pelo_filtro_assinatura(credencial_de_acesso, { aplicativo_assinante_id: "..." });

Argumentos

Nome

Tipo

Retorno: Promise<Array<tipos.Assinatura>> · Rust: Result<Vec<tipos::Assinatura>, ErroAoChamarServico>

buscar_pelo_id_assinatura

GET/assinatura/{id} Exige credencial

Busca uma assinatura pelo id

Leitura liberada a quem tem a permissão ler em assinaturas ou monitoramento. Assinatura excluída não é encontrada. Traz os nomes do aplicativo assinante e do tipo de evento, a situação da versão assinada, quantas entregas estão na fila de erro (tentativas esgotadas) e quando foi a última entrega bem-sucedida.

function buscar_pelo_id_assinatura(
  credencial_de_acesso: CredencialDeAcesso,
  id: string,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.Assinatura>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { buscar_pelo_id_assinatura } from "termo_core/webhook";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_pelo_id_assinatura(credencial_de_acesso, id);

Argumentos

Nome

Tipo

Retorno: Promise<tipos.Assinatura> · Rust: Result<tipos::Assinatura, ErroAoChamarServico> · veja Assinatura.

atualizar_pelo_id_assinatura

PATCH/assinatura/{id} Exige credencial

Atualiza uma assinatura pelo id

Exige a permissão editar na área assinaturas. Atualização parcial: só os campos enviados mudam; o aplicativo assinante e o tipo de evento não mudam. versao_do_esquema troca a versão assinada e precisa existir para o tipo e não estar desligada (manter a versão atual é sempre aceito). url_de_destino, maximo_de_tentativas e tempo_limite_em_segundos seguem as regras do cadastro. Desativar a assinatura (ativa: false) faz ela deixar de receber eventos novos e cancela as entregas pendentes dela na mesma hora.

function atualizar_pelo_id_assinatura(
  credencial_de_acesso: CredencialDeAcesso,
  id: string,
  corpo_da_requisicao: tipos.AssinaturaAtualizar,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.Assinatura>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { atualizar_pelo_id_assinatura } from "termo_core/webhook";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await atualizar_pelo_id_assinatura(credencial_de_acesso, id, corpo_da_requisicao);

Argumentos

Nome

Tipo

Retorno: Promise<tipos.Assinatura> · Rust: Result<tipos::Assinatura, ErroAoChamarServico> · veja Assinatura.

deletar_pelo_id_assinatura

DELETE/assinatura/{id} Exige credencial

Exclui uma assinatura pelo id

Exige a permissão deletar na área assinaturas. A exclusão é lógica: a assinatura some das leituras, para de gerar entregas e o aplicativo pode assinar o mesmo tipo de novo, mas o registro não é apagado e não há como restaurar. As entregas pendentes dela são canceladas na mesma hora; o histórico de entregas continua até vencer a retenção.

function deletar_pelo_id_assinatura(
  credencial_de_acesso: CredencialDeAcesso,
  id: string,
  opcoes_da_chamada?: OpcoesDaChamada,
): Promise<void>
Exemplo
import { CredencialDeAcesso } from "termo_core";
import { deletar_pelo_id_assinatura } from "termo_core/webhook";

const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
await deletar_pelo_id_assinatura(credencial_de_acesso, id);

Argumentos

Nome

Tipo

Retorno: Promise<void> · Rust: Result<(), ErroAoChamarServico> · sem corpo na resposta.

Tipos

Tipos usados pelas funções desta página. O nome é o mesmo nos dois pacotes.

Assinatura

import type { Assinatura } from "termo_core/webhook";

export interface Assinatura {
  aplicativo_assinante_id: string;
  aplicativo_assinante_nome: string;
  ativa: boolean;
  atualizada_em: string;
  criada_em: string;
  entregas_na_fila_de_erro: number;
  id: string;
  maximo_de_tentativas: number;
  situacao_da_versao: string;
  tempo_limite_em_segundos: number;
  tipo_de_evento_id: string;
  tipo_de_evento_nome: string;
  ultima_entrega_em?: string | null;
  url_de_destino: string;
  versao_do_esquema: number;
}

AssinaturaAtualizar

import type { AssinaturaAtualizar } from "termo_core/webhook";

export interface AssinaturaAtualizar {
  ativa?: boolean | null;
  maximo_de_tentativas?: number | null;
  tempo_limite_em_segundos?: number | null;
  url_de_destino?: string | null;
  versao_do_esquema?: number | null;
}

AssinaturaCriar

import type { AssinaturaCriar } from "termo_core/webhook";

export interface AssinaturaCriar {
  aplicativo_assinante_id: string;
  ativa?: boolean | null;
  maximo_de_tentativas?: number | null;
  tempo_limite_em_segundos?: number | null;
  tipo_de_evento_id: string;
  url_de_destino: string;
  versao_do_esquema: number;
}

PaginaAssinatura

import type { PaginaAssinatura } from "termo_core/webhook";

export interface PaginaAssinatura {
  itens: Array<PaginaAssinaturaItensItem>;
  pagina: number;
  tamanho: number;
  total: number;
}

PaginaAssinaturaAutoComplete

import type { PaginaAssinaturaAutoComplete } from "termo_core/webhook";

export interface PaginaAssinaturaAutoComplete {
  itens: Array<PaginaAssinaturaAutoCompleteItensItem>;
  pagina: number;
  tamanho: number;
  total: number;
}

PaginaAssinaturaAutoCompleteItensItem

import type { PaginaAssinaturaAutoCompleteItensItem } from "termo_core/webhook";

export interface PaginaAssinaturaAutoCompleteItensItem {
  aplicativo_assinante_nome: string;
  ativa: boolean;
  id: string;
  tipo_de_evento_nome: string;
  versao_do_esquema: number;
}

PaginaAssinaturaItensItem

import type { PaginaAssinaturaItensItem } from "termo_core/webhook";

export interface PaginaAssinaturaItensItem {
  aplicativo_assinante_id: string;
  aplicativo_assinante_nome: string;
  ativa: boolean;
  atualizada_em: string;
  criada_em: string;
  entregas_na_fila_de_erro: number;
  id: string;
  maximo_de_tentativas: number;
  situacao_da_versao: string;
  tempo_limite_em_segundos: number;
  tipo_de_evento_id: string;
  tipo_de_evento_nome: string;
  ultima_entrega_em?: string | null;
  url_de_destino: string;
  versao_do_esquema: number;
}

Nesta página