Evento
7 funções do TermoTracing para evento.
// npm install termo_core --save-exact
import * as tracing from "termo_core/tracing";
// ou: import { tracing } from "termo_core";| Função | Rota | O que faz |
|---|---|---|
buscar_paginador_evento | GET /evento | Lista os eventos paginados |
buscar_auto_complete_evento | GET /evento/autocomplete | Lista básica de eventos para seleção |
buscar_pelo_filtro_evento | GET /evento/filtro | Busca eventos por filtro |
criar_evento | POST /evento/ingestao | Recebe um lote de eventos de um site (ingestão) |
buscar_pelo_id_evento | GET /evento/{id} | Busca um evento pelo id |
atualizar_pelo_id_evento | PATCH /evento/{id} | Atualiza um evento pelo id |
deletar_pelo_id_evento | DELETE /evento/{id} | Exclui um evento pelo id |
buscar_paginador_evento
GET/evento Exige credencial
Lista os eventos paginados
Qualquer colaborador da Termotubos logado no TermoAuth (perfil employee); não há área de permissão própria. Cada conta só enxerga e altera os próprios registros (os do sub do token): registro de outra conta responde como não encontrado. Lista os eventos não excluídos da conta. Com sessao_id, devolve a linha do tempo da sessão do mais antigo para o mais recente; sem ele, do mais recente para o mais antigo. aplicativo_id filtra pelo aplicativo. pagina começa em 1 (padrão 1; menor que 1 vira 1). A página tem sempre 50 itens: o parâmetro tamanho é aceito, mas ignorado. A resposta traz itens, total (quantidade de registros que casam com os filtros), pagina e tamanho (50). Parâmetros de consulta, todos opcionais: pagina: número da página, começando em 1 (padrão 1; menor que 1 vira 1); tamanho: aceito, mas ignorado: a página tem sempre 50 itens; sessao_id: id da sessão: com ele, a lista vem do mais antigo para o mais recente (opcional); aplicativo_id: id do aplicativo (opcional).
function buscar_paginador_evento(
credencial_de_acesso: CredencialDeAcesso,
parametros: ParametrosDeBuscarPaginadorEvento = {},
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.PaginaEvento>import { CredencialDeAcesso } from "termo_core";
import { buscar_paginador_evento } from "termo_core/tracing";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_paginador_evento(credencial_de_acesso, { pagina: 1 });Argumentos
Nome
Tipo
Retorno: Promise<tipos.PaginaEvento> · Rust: Result<tipos::PaginaEvento, ErroAoChamarServico> · veja PaginaEvento.
buscar_auto_complete_evento
GET/evento/autocomplete Exige credencial
Lista básica de eventos para seleção
Qualquer colaborador da Termotubos logado no TermoAuth (perfil employee); não há área de permissão própria. Cada conta só enxerga e altera os próprios registros (os do sub do token): registro de outra conta responde como não encontrado. Devolve só id e rótulo (o nome do evento ou, sem nome, a mensagem ou o tipo), em ordem alfabética do rótulo. busca procura o trecho no rótulo, 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. A resposta traz itens, total, pagina e tamanho. Parâmetros de consulta, todos opcionais: busca: trecho do rótulo (nome, mensagem ou tipo), sem diferenciar maiúsculas (opcional); pagina: número da página, começando em 1 (padrão 1; menor que 1 vira 1); tamanho: itens por página (padrão 10, sem máximo; menor que 1 vira 1).
function buscar_auto_complete_evento(
credencial_de_acesso: CredencialDeAcesso,
parametros: ParametrosDeBuscarAutoCompleteEvento = {},
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.PaginaEventoAutoComplete>import { CredencialDeAcesso } from "termo_core";
import { buscar_auto_complete_evento } from "termo_core/tracing";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_auto_complete_evento(credencial_de_acesso, { busca: "..." });Argumentos
Nome
Tipo
Retorno: Promise<tipos.PaginaEventoAutoComplete> · Rust: Result<tipos::PaginaEventoAutoComplete, ErroAoChamarServico> · veja PaginaEventoAutoComplete.
buscar_pelo_filtro_evento
GET/evento/filtro Exige credencial
Busca eventos por filtro
Qualquer colaborador da Termotubos logado no TermoAuth (perfil employee); não há área de permissão própria. Cada conta só enxerga e altera os próprios registros (os do sub do token): registro de outra conta responde como não encontrado. Devolve todos os eventos não excluídos da conta que casam com o filtro, sem paginação, do mais antigo para o mais recente (ocorrido_em). aplicativo_id e sessao_id filtram pelo id; tipo compara o valor exato, sem diferenciar maiúsculas (ERRO_JS, PROMISE_REJEITADA, CONSOLE, REQUISICAO, NAVEGACAO, SAIDA, PULSO, CLIQUE, DESEMPENHO, IDENTIFICACAO ou PERSONALIZADO); nome procura o trecho no nome; inicio e fim (data e hora ISO 8601) limitam o ocorrido_em. Sem filtro, devolve todos. Os eventos ficam guardados por 30 dias. Parâmetros de consulta, todos opcionais: aplicativo_id: id do aplicativo; sessao_id: id da sessão; tipo: tipo do evento (sem diferenciar maiúsculas): ERRO_JS, PROMISE_REJEITADA, CONSOLE, REQUISICAO, NAVEGACAO, SAIDA, PULSO, CLIQUE, DESEMPENHO, IDENTIFICACAO ou PERSONALIZADO; nome: trecho do nome, sem diferenciar maiúsculas; inicio: eventos ocorridos a partir desta data e hora ISO 8601, por exemplo 2026-10-07T00:00:00Z; fim: eventos ocorridos até esta data e hora ISO 8601.
function buscar_pelo_filtro_evento(
credencial_de_acesso: CredencialDeAcesso,
parametros: ParametrosDeBuscarPeloFiltroEvento = {},
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<Array<tipos.Evento>>import { CredencialDeAcesso } from "termo_core";
import { buscar_pelo_filtro_evento } from "termo_core/tracing";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_pelo_filtro_evento(credencial_de_acesso, { aplicativo_id: "..." });Argumentos
Nome
Tipo
Retorno: Promise<Array<tipos.Evento>> · Rust: Result<Vec<tipos::Evento>, ErroAoChamarServico>
criar_evento
POST/evento/ingestao Pública
Recebe um lote de eventos de um site (ingestão)
Rota pública, sem token: é a que o script instalado no site do cliente chama. O corpo é JSON, opcionalmente comprimido em gzip (Content-Encoding: gzip), com a chave pública do aplicativo, os dados da sessao e a lista de eventos. O cabeçalho Origin (ou, na falta dele, Referer) precisa ser de um dos domínios cadastrados no aplicativo. Cada lote aceita até 500 eventos (o excedente é recusado) e eventos de tipo desconhecido são recusados; cada chave aceita até 6000 eventos por minuto. Tipos aceitos: ERRO_JS, PROMISE_REJEITADA, CONSOLE, REQUISICAO, NAVEGACAO, SAIDA, PULSO, CLIQUE, DESEMPENHO, IDENTIFICACAO e PERSONALIZADO. Com o comportamento PARAR_INGESTAO e a franquia do mês esgotada, o lote é recusado. Os eventos aceitos são gravados em segundo plano; a resposta diz quantos foram aceitos e recusados. Campos do corpo: chave: chave pública do aplicativo (prefixo pk_live_), obrigatória; sessao: dados da sessão de navegação que enviou o lote; eventos: eventos do lote; até 500 por lote, o excedente é recusado. Campos de sessao: sessao.sessao_externa: identificador da sessão gerado pelo script (obrigatório); sessao.anonimo_id: identificador anônimo do visitante (obrigatório); sessao.usuario_id: id do usuário logado no site (opcional); sessao.navegador: navegador (padrão vazio); sessao.sistema_operacional: sistema operacional (padrão vazio); sessao.dispositivo: tipo de dispositivo (padrão vazio); sessao.resolucao: resolução da tela (padrão vazio); sessao.pagina_inicial: endereço da primeira página (padrão vazio). Campos de cada item de eventos: evento_id: identificador do evento no navegador, usado para não gravar o mesmo evento duas vezes (até 120 caracteres); tipo: tipo do evento (obrigatório): ERRO_JS, PROMISE_REJEITADA, CONSOLE, REQUISICAO, NAVEGACAO, SAIDA, PULSO, CLIQUE, DESEMPENHO, IDENTIFICACAO ou PERSONALIZADO; outro valor é recusado; nome: nome do evento (padrão vazio; cortado em 120 caracteres); mensagem: mensagem (cortada em 2000 caracteres); pilha: pilha de chamadas (cortada em 8000 caracteres); arquivo: arquivo do erro (cortado em 2000 caracteres); linha: linha do erro; coluna: coluna do erro; url: endereço da página ou da requisição (cortado em 2000 caracteres); metodo: método HTTP da requisição; status: status HTTP da requisição; duracao_ms: duração em milissegundos; nivel: nível do console; seletor: seletor CSS do elemento clicado (cortado em 500 caracteres); texto: texto do elemento clicado (cortado em 200 caracteres); metrica: nome da métrica de desempenho; valor: valor da métrica de desempenho; usuario_id: id do usuário logado no site; payload: dados livres (JSON); ocorrido_em: data e hora ISO 8601 em que o evento ocorreu (padrão: a hora do recebimento).
function criar_evento(
corpo_da_requisicao: tipos.EventoCriar,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.ResultadoIngestao>import { criar_evento } from "termo_core/tracing";
const resposta = await criar_evento(corpo_da_requisicao);Argumentos
Nome
Tipo
Retorno: Promise<tipos.ResultadoIngestao> · Rust: Result<tipos::ResultadoIngestao, ErroAoChamarServico> · veja ResultadoIngestao.
buscar_pelo_id_evento
GET/evento/{id} Exige credencial
Busca um evento pelo id
Qualquer colaborador da Termotubos logado no TermoAuth (perfil employee); não há área de permissão própria. Cada conta só enxerga e altera os próprios registros (os do sub do token): registro de outra conta responde como não encontrado. Devolve o evento pelo id; registro excluído não é encontrado.
function buscar_pelo_id_evento(
credencial_de_acesso: CredencialDeAcesso,
id: string,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.Evento>import { CredencialDeAcesso } from "termo_core";
import { buscar_pelo_id_evento } from "termo_core/tracing";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await buscar_pelo_id_evento(credencial_de_acesso, id);Argumentos
Nome
Tipo
Retorno: Promise<tipos.Evento> · Rust: Result<tipos::Evento, ErroAoChamarServico> · veja Evento.
atualizar_pelo_id_evento
PATCH/evento/{id} Exige credencial
Atualiza um evento pelo id
Qualquer colaborador da Termotubos logado no TermoAuth (perfil employee); não há área de permissão própria. Cada conta só enxerga e altera os próprios registros (os do sub do token): registro de outra conta responde como não encontrado. Atualização parcial: só os campos enviados mudam. Muda o nome (cortado em 120 caracteres) e o payload (JSON livre) do evento. Campos do corpo, todos opcionais: nome: novo nome do evento (cortado em 120 caracteres); payload: novos dados livres do evento (JSON), que substituem os atuais.
function atualizar_pelo_id_evento(
credencial_de_acesso: CredencialDeAcesso,
id: string,
corpo_da_requisicao: tipos.EventoAtualizar,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<tipos.Evento>import { CredencialDeAcesso } from "termo_core";
import { atualizar_pelo_id_evento } from "termo_core/tracing";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
const resposta = await atualizar_pelo_id_evento(credencial_de_acesso, id, corpo_da_requisicao);Argumentos
Nome
Tipo
Retorno: Promise<tipos.Evento> · Rust: Result<tipos::Evento, ErroAoChamarServico> · veja Evento.
deletar_pelo_id_evento
DELETE/evento/{id} Exige credencial
Exclui um evento pelo id
Qualquer colaborador da Termotubos logado no TermoAuth (perfil employee); não há área de permissão própria. Cada conta só enxerga e altera os próprios registros (os do sub do token): registro de outra conta responde como não encontrado. Exclusão lógica: o registro some das leituras, mas não é apagado na hora.
function deletar_pelo_id_evento(
credencial_de_acesso: CredencialDeAcesso,
id: string,
opcoes_da_chamada?: OpcoesDaChamada,
): Promise<void>import { CredencialDeAcesso } from "termo_core";
import { deletar_pelo_id_evento } from "termo_core/tracing";
const credencial_de_acesso = CredencialDeAcesso.token_do_usuario_logado(token_do_usuario);
await deletar_pelo_id_evento(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.
Evento
import type { Evento } from "termo_core/tracing";
export interface Evento {
aplicativo_id: string;
arquivo?: string | null;
coluna?: number | null;
conta_id: string;
criado_em: string;
duracao_ms?: number | null;
id: string;
linha?: number | null;
mensagem?: string | null;
metodo?: string | null;
metrica?: string | null;
navegador: string;
nivel?: string | null;
nome: string;
ocorrido_em: string;
payload?: unknown;
pilha?: string | null;
seletor?: string | null;
sessao_id: string;
status?: number | null;
texto?: string | null;
tipo: string;
url?: string | null;
valor?: number | null;
}EventoAtualizar
import type { EventoAtualizar } from "termo_core/tracing";
export interface EventoAtualizar {
nome?: string | null;
payload?: unknown;
}EventoCriar
import type { EventoCriar } from "termo_core/tracing";
export interface EventoCriar {
chave: string;
eventos: Array<EventoRecebido>;
sessao: SessaoRecebida;
}EventoRecebido
import type { EventoRecebido } from "termo_core/tracing";
export interface EventoRecebido {
arquivo?: string | null;
coluna?: number | null;
duracao_ms?: number | null;
evento_id?: string | null;
linha?: number | null;
mensagem?: string | null;
metodo?: string | null;
metrica?: string | null;
nivel?: string | null;
nome?: string;
ocorrido_em?: string | null;
payload?: unknown;
pilha?: string | null;
seletor?: string | null;
status?: number | null;
texto?: string | null;
tipo: string;
url?: string | null;
usuario_id?: string | null;
valor?: number | null;
}PaginaEvento
import type { PaginaEvento } from "termo_core/tracing";
export interface PaginaEvento {
itens: Array<PaginaEventoItensItem>;
pagina: number;
tamanho: number;
total: number;
}PaginaEventoAutoComplete
import type { PaginaEventoAutoComplete } from "termo_core/tracing";
export interface PaginaEventoAutoComplete {
itens: Array<PaginaEventoAutoCompleteItensItem>;
pagina: number;
tamanho: number;
total: number;
}PaginaEventoAutoCompleteItensItem
import type { PaginaEventoAutoCompleteItensItem } from "termo_core/tracing";
export interface PaginaEventoAutoCompleteItensItem {
id: string;
rotulo: string;
}PaginaEventoItensItem
import type { PaginaEventoItensItem } from "termo_core/tracing";
export interface PaginaEventoItensItem {
aplicativo_id: string;
arquivo?: string | null;
coluna?: number | null;
conta_id: string;
criado_em: string;
duracao_ms?: number | null;
id: string;
linha?: number | null;
mensagem?: string | null;
metodo?: string | null;
metrica?: string | null;
navegador: string;
nivel?: string | null;
nome: string;
ocorrido_em: string;
payload?: unknown;
pilha?: string | null;
seletor?: string | null;
sessao_id: string;
status?: number | null;
texto?: string | null;
tipo: string;
url?: string | null;
valor?: number | null;
}ResultadoIngestao
import type { ResultadoIngestao } from "termo_core/tracing";
export interface ResultadoIngestao {
aceitos: number;
recusados: number;
}SessaoRecebida
import type { SessaoRecebida } from "termo_core/tracing";
export interface SessaoRecebida {
anonimo_id: string;
dispositivo?: string;
navegador?: string;
pagina_inicial?: string;
resolucao?: string;
sessao_externa: string;
sistema_operacional?: string;
usuario_id?: string | null;
}