Contrato
LSP nomeia org, track, carro, sessão, eventos de telemetria e etapa onboard. Subscrevem-se a um circuito na vossa organização. Muitos carros publicam. O vosso produto recebe esses carros como eventos.
LapsHub Live
O contrato com nombre de LapsHub Live. Organização → circuito → carro → sessão. Telemetria em direto mais cámara de baja latência. Live API é como construyé encima. Hosted Pit Wall é a UI opcionao de primer partido en este mesmo protocolo.
Ámbito da org · Design partners · Specs anté do runtime
LapsHub Streaming Protocol é a linguagem do stream do circuito. Não é um formato binário novo. Equipas, streamers e integradores falam LSP; Live API acrescenta sessões, acesso ao stream e meters por cima.
Organization
└── Track (subscribe: all org cars on this circuit)
└── Car
└── Session
├── Telemetry events
└── Stage (onboard) → publish / watch access
LSP nomeia org, track, carro, sessão, eventos de telemetria e etapa onboard. Subscrevem-se a um circuito na vossa organização. Muitos carros publicam. O vosso produto recebe esses carros como eventos.
Kafka ou IoT em bruto movem bytes. Não nomeiam que org, track, carro ou sessão está live, nem quando o onboard deve abrir. Esse mapeamento é LSP.
O que compram para construir: controlo de sessão, acesso ao stream e meters de uso. O pit wall, overlay, app de série ou stream é vosso.
UI oficial opcional sobre o mesmo protocolo. Preferem um ecrã chave na mão? O mesmo backend Live, caminho Hosted Pit Wall.
Liguem a vossa fonte de telemetria por MQTT. Abram uma sessão em GraphQL, emitam credenciais de curta duração e publiquem envelopes JSON a partir do vosso device, logger ou bridge.
Chamem createLiveSession com o carId e trackId da vossa org. Uma sessão live por carro no circuito.
Chamem createTelemetryCredentials com role: PUBLISH. Live API devolve endpoint, clientId, topicPublish e expiresAt.
O vosso device liga-se a ${endpoint} por TLS e publica envelopes de telemetria em topicPublish. Até 50 pontos por mensagem.
LapsHub device, RaceBox ou Dragy via a vossa bridge, loggers CAN/GPS, ou qualquer stack que possa correr um cliente MQTT e emitir JSON.
JSON sobre MQTT, application/json. Campos de envelope obrigatórios: v, orgId, trackId, carId e points[] com pelo menos ts. Opcionais por ponto: lat, lon, speedMps, headingDeg, lap e escalares channels com nome (rpm, throttle, etc.).
Os carros da vossa organização nos vossos circuitos. Não é um tap ao tráfego público da app de piloto LapsHub.
mutation {
createLiveSession(input: { carId: "car_42", trackId: "track_ra" }) {
id
status
}
}
mutation {
createTelemetryCredentials(
sessionId: "sess_1"
input: { role: PUBLISH, ttlSeconds: 3600 }
) {
endpoint
clientId
topicPublish
expiresAt
}
}
{
"endpoint": "mqtts://live-mqtt.lapshub.com:8883",
"clientId": "lh_org_1_car_42_sess_1",
"topicPublish": "live/org_1/track_ra/car_42/telemetry",
"expiresAt": "2026-08-17T19:00:00.000Z"
}
Broker previsto: ${endpoint} (Preview, não live). As credenciais são de curta duração: renovem antes de expirarem. O ingest batch HTTPS é uma via secundária quando um device não pode correr MQTT. Prefiram MQTT para GPS de alto Hz e canais CAN. Schema completo: asyncapi-telemetry-v1.yaml.
Subscrevam-se a um circuito na vossa org. Os carros que publicam enviam eventos para esse stream do track em tempo real. Emitam credenciais de subscribe com role: SUBSCRIBE ou BOTH em createTelemetryCredentials.
Subscribe (your org, one circuit):
live/{orgId}/{trackId}/+/telemetry
Publish (one car):
live/{orgId}/{trackId}/{carId}/telemetry
Live API emite acesso de publish e subscribe de curta duração. HTTPS batch continua como via secundária quando não há um cliente de stream.
Um envelope, um ou mais pontos. Versão de schema v: 1. Lista completa de campos para parceiros de design: asyncapi-telemetry-v1.yaml.
{
"v": 1,
"orgId": "org_1",
"trackId": "track_ra",
"carId": "car_42",
"sessionId": "sess_1",
"points": [
{
"ts": "2026-08-17T18:00:00.000Z",
"lat": 43.798,
"lon": -87.992,
"speedMps": 42.1,
"headingDeg": 187.2,
"lap": 3,
"channels": { "rpm": 6120, "throttle": 0.82 }
}
]
}
Os dados do carro de alto Hz vão por MQTT, não pela API de controlo. Os devices publicam num topic de carro; pit walls e overlays subscrevem-se ao wildcard do track. Veja integração de dispositivos para o fluxo de ligar e publicar.
Carros ou loggers publicam em live/{orgId}/{trackId}/{carId}/telemetry.
Pit walls, overlays e stacks de stream subscrevem-se a live/{orgId}/{trackId}/+/telemetry e recebem cada carro da org nesse circuito.
Não empurrem pontos GPS de alto Hz pelas APIs de sessão. Essas chamadas abrem sessões e acesso. O stream transporta os pontos.
Live API é como abrem sessões, concedem acesso de stream e watch, e leem uso. O protocolo nomeia o que essas chamadas significam. As formas a nível de cabo continuam em revisão de parceiros de design.
Abram e fechem uma sessão live para um carro num track da vossa org.
Acesso de publish, subscribe e watch de curta duração. Abram acesso de watch só enquanto alguém está a ver.
Os meters reportam tempo de publish, tempo de watch e volume de telemetria aceite.
mutation {
createLiveSession(input: { carId: "car_42", trackId: "track_ra" }) {
id
status
}
}
Subscribe (your org, one circuit):
live/{orgId}/{trackId}/+/telemetry
Publish (one car):
live/{orgId}/{trackId}/{carId}/telemetry
GraphQL abre sessões e etapas. MQTT transporta os dados live do carro. WebRTC transporta o onboard. GraphQL não é o bus de GPS live.
Onboard de baixa latência para a vossa audiência (objetivo abaixo de 2 s). Abram uma etapa só enquanto alguém está a ver, depois alimentem YouTube, Twitch, TV ou ecrãs no venue a partir do vosso próprio stack.
Arranquem uma etapa para o carro/sessão e enviem onboard a partir da câmara.
O acesso de watch é de curta duração e faturável. Abram-no só enquanto alguém está a ver.
Nós corremos o backend live. Vocês decidem como o evento chega ao YouTube, Twitch, TV, overlays e streams internos.
O que contamos como uso. O preço do programa piloto define-se com parceiros de design.
video.publisherSegundos de participante enquanto um publisher está ligado.
video.subscriberSegundos de participante enquanto um viewer permanece ligado.
telemetry.messageContagem de eventos de telemetria aceites ou itens de batch.
Estes contratos são para revisão de arquitetura com parceiros de design. Os endpoints de runtime ainda não estão em disponibilidade geral. As specs podem mudar antes do lançamento.
Solicitem acesso de parceiro de design. Contem-nos do vosso produto, stream ou pit wall e mapeamos sessões, telemetria e etapas onboard ao vosso roadmap.
Programa de parceiros de design. Preferem um ecrã chave na mão? ${pitLabel}. Procuram a app de piloto? ${appLabel}.