Pular para o conteúdo
Pathrule

documentação

Protocolo e coletores

O protocolo de Signals que um coletor recebe (envelope, itens, limites de tamanho), como o SDK lê as respostas do coletor e faz novas tentativas, e como rodar seu próprio coletor HTTP no modo Standalone.

Nesta página

No modo Standalone, o SDK envia para um coletor HTTP que você mesmo roda. Esta página descreve o que esse coletor recebe e como ele deve responder. O Pathrule Local e o Pathrule Cloud usam o mesmo protocolo, então nada aqui muda quando você troca de destino.

O envelope

O protocolo está na versão 1. O SDK envia um envelope por POST como application/json; o beacon enviado enquanto a página é descarregada usa text/plain. Um envelope tem no máximo 32.768 bytes e carrega no máximo 50 itens.

CampoO que é
schemaVersionA versão do protocolo.
idAté 64 letras, dígitos, _ ou -. É o mesmo em todas as novas tentativas, para que o coletor possa armazenar cada envelope uma única vez.
keyA chave do projeto. Usada só no Cloud.
environmentdevelopment, preview ou production.
releaseA identificação da release, com até 120 caracteres.
connectionComo o SDK está conectado.
itemsOs sinais e as declarações contidos neste envelope.

Cada item tem type (signal ou declaration), kind (error ou event), fingerprint, countDelta, node (o caminho no código), flow, label, message e metadata. Ocorrências repetidas são somadas em countDelta, então o coletor deve contar por esse campo, e não pelo número de itens.

Respostas e novas tentativas

RespostaO que o SDK faz
2xxConsidera entregue.
401, 403Para de enviar de vez.
408, 429, 5xxTenta de novo.
Qualquer outro 4xxDescarta o lote.

As novas tentativas acontecem depois de 1, 5 e 15 minutos, com no máximo 4 tentativas, e o SDK mantém no máximo 20 envelopes na espera. Um header Retry-After é interpretado como um número de segundos.

Rodando seu próprio coletor

Um coletor faz três coisas: autentica a requisição, valida o envelope e o armazena ou repassa adiante.

import { normalizeEnvelope } from "@pathrule/signals/protocol";

// In your POST handler, after checking your own Authorization header:
const envelope = normalizeEnvelope(body, { requireKey: false, bytes: rawBody.length });

Passe requireKey: false quando você autentica de outra forma, como o header bearer do guia rápido, e passe o tamanho bruto para que o limite de tamanho seja aplicado. Depois:

  • Armazene cada envelope uma única vez por id; as novas tentativas reutilizam esse valor.
  • Agrupe os itens por ambiente, tipo e fingerprint, do mesmo jeito que o Pathrule faz.
  • Responda 2xx assim que o envelope estiver guardado com segurança, e 401 ou 403 só quando o cliente deve parar.