Flujos de petición
Ingest (agent → API → TSDB)
- El agente abre una conn mTLS hacia :8443
- La config TLS del servidor verifica el peer-cert contra la CA emitida
agentIDFromCert(r)→ identity (NUNCA desde body/header)- SELECT organization_id, status, region_id FROM agents
- Sample[]: organization_id + agent_id + host se pegan a cada métrica
router.VMForRegion(region_id)→ el cliente TSDB de la regiónvm.Write(samples)- UPDATE agents SET last_seen_at = now()
Consulta del cabinet
- Browser →
/api/v1/orgs/:slug/query/range?metric=X&host=Y - Session middleware (cookie) → userCtx
- orgMiddleware → orgContext{OrgID, UserID, Role}
composeQuery("X", {organization_id: OrgID, host: Y})vm.Range(promQuery, start, end, step)
Consulta embed
- Backend partner: POST /api/v1/embed/tokens con mk_xxx
- La API verifica el origin de la clave contra la allowlist
- Se emite un JWT: los claims contienen {org_id, filters}
- El partner coloca el JWT en un iframe o postMessage
- SDK →
/api/v1/embed/query/rangecon un Bearer JWT - embed.Required: parsea el JWT, extrae filters de los claims
- composeQuery con claim.filters