https://api.logbrew.co. Os SDKs
públicos enviam os lotes que gerenciam para POST /v1/events. Clientes
nativos personalizados enviam envelopes nativos para
POST /api/telemetry/ingest. As duas rotas de ingestão exigem um token bearer
de ingestão restrito ao projeto.
As leituras e as mudanças em dados da conta usam um token bearer da conta.
Nunca use um token bearer da conta ou uma sessão do navegador na configuração
do SDK ou da ingestão. Nunca envie um token bearer de ingestão para uma rota
de leitura.
Enviar uma requisição com escopo limitado
Use esta lista de verificação antes que um cliente envie uma requisição:- Escolha a rota e o método HTTP na tabela de endpoints.
- Use o token bearer correto: um token bearer de ingestão para a ingestão e um token bearer da conta para todo o resto.
- Selecione o escopo de projeto que a rota aceita. Não amplie o escopo depois de uma resposta vazia.
- Adicione só os parâmetros de consulta que a rota aceita. Consulte Filtros de consulta da API de telemetria.
- Envie
Content-Type: application/jsonquando a rota tiver um corpo JSON. - Leia o status HTTP e o corpo da resposta antes de tentar de novo.
- Mantenha tokens bearer, tickets do feed e corpos completos de resposta fora de logs e de prompts de agentes.
Endpoints
Ingestão
Deixe o SDK montar os lotes de
/v1/events. Não monte esses lotes à mão.
Para o envelope nativo, consulte
Integração do SDK.
Leituras de telemetria
Implantações
Registre uma implantação a partir da automação de versões, depois que ela
terminar com sucesso ou com falha. O corpo do
PUT tem project_id,
release, environment, service_name, status (succeeded ou
failed), started_at, finished_at e um commit_sha opcional. Use os
mesmos valores de release, environment e service_name que seu SDK
envia. A conta precisa ser dona do projeto.
deployment_id é o seu próprio ID para a implantação. Uma nova tentativa com
o mesmo ID e o mesmo corpo retorna a implantação armazenada. O mesmo ID com
um corpo diferente falha com 409 e idempotency_conflict. Use um novo ID
para uma implantação diferente.
Investigações
Cada rota de investigação retorna um pacote limitado de evidências sobre um item. O comandologbrew explain da CLI lê essas
rotas e valida a resposta.
Análise de produto
As rotas de análise
POST recebem um corpo JSON, não parâmetros de consulta.
Consulte Análise de produto.
Feed ao vivo
Conta e login
As rotas de uso, cota, assinatura e logout estão na API de conta.Códigos de status de sucesso
Uma resposta
200 não prova que as evidências estão completas. Leia os
campos de cobertura, truncamento e status na resposta.
Filtros de consulta e paginação
Cada rota de leitura aceita os próprios parâmetros de consulta. Aliases amigáveis, comoproject, trace e user, não são parâmetros de consulta. As
rotas de lista retornam um array simples por padrão e um envelope de cursor
com pagination=cursor. A lista de implantações sempre retorna um objeto de
página. Consulte
Filtros de consulta da API de telemetria.
Respostas e erros
- Formatos de resposta mostra um exemplo para cada família de respostas.
- Erros da API lista os códigos de erro e as ações de recuperação.
code antes da mensagem para pessoas. Use next_action para o
comportamento do programa e next para orientar pessoas. Não faça parsing do
texto de error ou de next.
Atualizar problemas
Estas requisições usam um token bearer da conta. Ele é diferente deLOGBREW_INGEST_BEARER de propósito. A conta precisa ter permissão para
gerenciar problemas no projeto do problema. Se não tiver, a requisição falha
com 403 e forbidden. A mesma permissão cobre as mudanças de status,
prioridade e responsável, além das regras de problemas e de logs.
Cada requisição define 1 ou mais destes campos:
Uma requisição sem nenhum desses campos falha com
422 e
validation_failed.
Um problema tem 0 ou 1 responsável: uma conta ou uma equipe. Uma conta precisa
conseguir ler o projeto, e uma equipe precisa ser da organização do projeto.
Se não for o caso, a requisição falha com 422 e validation_failed, e o
LogBrew não muda nada. Veja as contas que podem ser
responsáveis em Listar responsáveis. Qualquer outro valor
de assignee também falha com 422 e validation_failed.
Uma prioridade que você define fica fixa. Sem uma prioridade definida por
você, a prioridade acompanha a gravidade do problema: error e critical
são high, warning é medium e info é low.
Um campo que já tem o valor solicitado não muda. Você pode enviar a mesma
requisição de novo depois de um timeout. Um timeout não prova que a mudança
não aconteceu. Leia o problema de novo antes de enviar uma mudança
diferente.
Atualizar um problema
Adicioneresponse_version=4 para receber archived, a prioridade e o
responsável na resposta. Na versão 4, assignee é
{ "type": "user", "user_id", "name", "email" },
{ "type": "team", "team_id", "slug", "name" } ou null. A versão 3 mostra
uma equipe responsável como null.
Atualizar problemas em lote
Envieproject_id e de 1 a 100 IDs de problemas diferentes desse projeto:
project_id e results, com 1 resultado para cada ID de problema, na ordem
da requisição. Cada resultado tem issue_id, outcome e issue. issue é
o problema atual na versão 3 da resposta, ou null para not_found.
Adicione "response_version": 2 ao corpo para receber cada problema na versão
4 da resposta.
Uma lista vazia, mais de 100 IDs ou um ID repetido falha com
422 e
validation_failed. Divida um conjunto maior em mais requisições. Se a conta
não puder ler o projeto, a requisição falha com 404 e not_found.
Listar responsáveis
Envie o ID do projeto para obter todas as contas que podem ser responsáveis por problemas nesse projeto:user_id, name e email. name é null quando a conta não tem nome.
Adicione response_version=2 para receber também teams: todas as equipes
da organização do projeto, com team_id, slug e name.
Consulte a
resposta da lista de responsáveis.
Qualquer conta que pode ler o projeto pode obter esta lista. Se a conta não
puder ler o projeto, a requisição falha com 404 e not_found.
Quando um membro perde o acesso ao projeto, os problemas atribuídos a ele
aparecem sem responsável. Se o membro voltar a ter acesso, os problemas
mostram esse membro de novo, a não ser que alguém tenha mudado ou removido o
responsável nesse meio-tempo.
Regras de dono e donos sugeridos
GET /api/telemetry/issues/ownership?project_id=<project-uuid> retorna
rules, codeowners, updated_at e unresolved_owners. Qualquer conta que
pode ler o projeto pode fazer essa leitura. Um PUT com project_id e
rules, codeowners ou os dois substitui esse texto e exige permissão para
gerenciar problemas. Um campo que você não envia mantém o texto atual, e uma
string vazia apaga o texto. Cada texto tem no máximo 128 KiB. Um texto
inválido falha com 422 e indica a linha.
GET /api/telemetry/issues/{issue_id}/owners?response_version=2 retorna
suggested_assignee, owners e inputs. Cada dono tem type (user ou
team), source (ownership_rule, codeowners ou recent_activity),
rule, line e matched. A versão 1, a padrão, lista só contas.
Histórico do problema
GET /api/telemetry/issues/{issue_id}/activity?response_version=2 retorna
activity, da mudança mais recente para a mais antiga, e next_cursor. Cada
entrada tem type (status, priority, assigned, unassigned,
severity_rule ou first_seen), value, actor_id, actor,
assignee_id, assignee, team e at. limit vai de 1 a 200, com 50 por
padrão. Envie cursor_time e cursor_id de next_cursor para ler a próxima
página.
Notificações
GET /api/telemetry/issues/notifications retorna notifications, unread,
read_at e next_cursor. Cada notificação é uma atribuição de um problema a
você ou à sua equipe feita por outra conta. Um POST /api/telemetry/issues/notifications/read com um objeto JSON vazio, ou com
read_at, move a sua marca de leitura. A marca nunca volta para trás.
Definir regras de problemas e de logs
Uma regra muda como o LogBrew mostra os sinais correspondentes. Ela não exclui dados. Oseverity capturado não muda, e a resposta mostra a regra em
triage.
severity é info, warning, error, critical ou source. source
remove a substituição e mostra de novo a gravidade capturada. Em uma regra de
log, ignored: true esconde os logs correspondentes da lista de logs padrão.
Leia esses logs com status=ignored ou status=all. A regra vale para os
sinais correspondentes retidos e futuros. Outro valor falha com 422 e
validation_failed.
