amage / rastro
Ir para uma seção

Documentação oficial / protocolo v1

Analytics central.
Dados no seu deployment.

Conecte um produto Convex ou Synapse ao dashboard Amage Rastro sem transferir a telemetria para o control plane. O navegador consulta apenas relatórios autorizados no deployment do produto.

Carregando contrato de distribuição
Protocolo
amage-rastro-analytics / 1
Sites por conexão
até 10
Token
RS256 / 10 min
Permissão
analytics:read
Ver manifest JSON ↗

Gate de distribuição

A elegibilidade é provada no artefato exato

Site, checkout e dist-tag não provam quais exports foram publicados. Inspecione estaticamente uma versão exata do registry, sem lifecycle scripts, e pare se qualquer export runtime ou TypeScript faltar.

Ver gate exato no runbook

Arquitetura

O control plane não vira seu data warehouse.

A autorização é central; a telemetria e os relatórios permanecem locais.

  1. 01

    Produto

    Tracker envia eventos ao HTTP Actions URL do próprio produto.

  2. 02

    Deployment cliente

    Convex armazena eventos, grants e relatórios reativos.

  3. 03

    Dashboard

    Consulta somente as funções e sites liberados pelo grant local.

Integração / ordem obrigatória

Prepare, conecte, autorize, prove.

Não pule para o pairing enquanto a telemetria local não estiver funcional.

01

Prove a instalação local

Antes da federação, confirme os cinco sinais no deployment cliente.

  • GET /rastro/health responde no HTTP Actions URL.
  • O site existe e permite o hostname exato do produto.
  • O tracker carrega de /rastro/tracker.js.
  • Opcional: o módulo de Web Vitals carrega de /rastro/vitals.js (alpha.6+).
  • Um evento real retorna HTTP 200 com contadores de ingestão.
  • Uma query autenticada local lê um relatório desse site.
  • Relatórios históricos provam que rotas, IDs pseudônimos, localização, campanhas, afiliados, conversões e properties não contêm dados inesperados ou secrets, têm retenção aceitável e podem ser lidos pelos membros previstos da organização.
02

Prepare o grant local e o módulo canônico

Preserve schema, providers e mounts existentes. O grant indexado por connectionId é a fonte autoritativa de um a dez sites. O arquivo público deve ser exatamente convex/rastroFederation.ts.

schema.ts
rastroFederationGrants: defineTable({
  connectionId: v.string(),
  organizationId: v.string(),
  siteIds: v.array(v.string()),
  revokedAt: v.optional(v.number()),
  createdAt: v.number(),
  updatedAt: v.number(),
}).index("by_connectionId", ["connectionId"])

O resolver consulta esse índice em toda query. Site IDs no JWT nunca substituem o grant local.

Abrir referência técnica em Markdown, seção “Add the authoritative local grant” →
03

Registre as duas URLs e faça o pairing

FUNCTIONS URLQueries + JWT audiencehttps://produto.convex.cloud
HTTP ACTIONS URLTracker + ingestãohttps://produto.convex.site

Um administrador entra no dashboard, abre Conexões e cria uma conexão pendente. Issuer e audience viram envs runtime; connection ID e organization ID são inputs do grant local, não envs.

Compare o issuer exibido com https://site.api.amagerastro.com/federation e a audience com a functions URL normalizada. Em domínio customizado, se aparecer UNTRUSTED_DEPLOYMENT_HOST, peça ao operador Amage Rastro que liberou a organização para adicionar a origem HTTPS exata; envie somente a URL pública, nunca credenciais.

Convex Cloud ou Synapse DEV
# Convex Cloud DEV
npx convex env set --deployment dev RASTRO_FEDERATION_ISSUER \
  'https://site.api.amagerastro.com/federation'
npx convex env set --deployment dev RASTRO_FEDERATION_AUDIENCE \
  'https://produto.convex.cloud'

# Synapse DEV
synapse convex --dev env set RASTRO_FEDERATION_ISSUER \
  'https://site.api.amagerastro.com/federation'
synapse convex --dev env set RASTRO_FEDERATION_AUDIENCE \
  'https://produto.synapse.example'
04

Deploy e autorize os sites exatos

Faça um push único no alvo DEV. Depois use os IDs emitidos pelo pairing para provisionar de um a dez sites que o owner local realmente possui.

Convex Cloud ou Synapse DEV
# Convex Cloud DEV
npx convex dev --once
npx convex run --deployment dev rastroFederationAdmin:provisionConnection \
  '{"connectionId":"CONNECTION_ID","organizationId":"ORGANIZATION_ID","ownerId":"OPAQUE_HOST_OWNER_ID","siteIds":["SITE_ID"]}'

# Synapse DEV
synapse dev --once
synapse convex --dev run rastroFederationAdmin:provisionConnection \
  '{"connectionId":"CONNECTION_ID","organizationId":"ORGANIZATION_ID","ownerId":"OPAQUE_HOST_OWNER_ID","siteIds":["SITE_ID"]}'

Connection ID e organization ID são inputs do grant. Nunca os apresente como envs runtime e nunca enumere todos os sites do owner.

05

Verifique inclusive as negativas

  1. ManifestProtocolo, funções, capacidades e limites iguais ao contrato público.
  2. ScopeLista redigida contém somente os sites do grant.
  3. Tempo realPageview real aparece na visão Ao vivo.
  4. NegativasSem identidade e site fora do grant são recusados.
  5. RevogaçãoGrant local revogado bloqueia token já emitido.

Produção só depois de ensaio em DEV e consentimento explícito para o alvo PROD.

Superfície pública

Dezenove queries. Escrita só por opt-in.

O módulo federado é pequeno por desenho e recusa expansão implícita. As funções de configuração só rodam quando o token e o grant local carregam analytics:configure.

manifest

Metadados públicos e estáticos do protocolo.

connectionStatus

Status redigido e contagem de sites.

listSites

Resumo sem owner, domains ou network.

overview

Métricas agregadas e série temporal.

liveVisitors

Visitantes ativos, limitado a 500.

listSessions

Sessões paginadas de um site.

sessionJourney

Eventos e properties bounded de uma sessão.

listConversions

Ledger paginado de conversões server-side confiáveis.

visitorJourney

Jornada cross-site dentro do grant.

goalsReport

Definições read-only e agregados de metas.

funnelsReport

Definições, steps e agregados; até 90 dias.

affiliatesReport

Definições read-only e atribuição agregada.

vitalsReport

Web Vitals p75 e ratings; capability opcional (alpha.6+).

dataCoverage

Cobertura e retenção sem eventos.

siteMap

Rotas, transições, saídas e rejeições; capability opcional (alpha.8+).

listTrackedLinks

Links rastreados com cliques e bots; capability opcional (0.5.0+).

leadsReport

Leads do servidor do host por origem e campanha → conjunto → criativo; capability opcional leads (0.8.0+).

listLeads

Leads mais recentes, por anúncio, sem o click id.

leadJourney

Histórico de um lead: chegada, qualificação e venda.

configure

Metas, funis, afiliados, links rastreados, site e retenção pela dash; capability opcional (alpha.11+), exige a permissão no token e no grant.

Segurança / fail closed

A identidade pede.
O grant local decide.

Convex valida assinatura, issuer, audience e expiração. Depois, o host consulta o grant local indexado e decide o scope final a cada chamada.

Ler referência Markdown, seção “Authentication contract”