your bot

Not bojo endpoints — what bojo does to YOUR server: the deploy check and the per-match WebSocket. See the Play protocol section.

#Deploy check (GET {your url}/ping)

GET(your bot url)

Called when you register the bot. Your server must answer with the body pong, and the URL must also accept a signed WebSocket upgrade (the probe handshake carries x-bojo-match: deploy-check) — otherwise registration is refused.

Returns

The literal body pong.

#Match socket (WebSocket upgrade of {your url})

GET(your bot url)

A match is one WebSocket: bojo connects when the match starts and the socket closes when it ends. Decisions arrive as JSON text frames (DecisionRequest); answer on the same socket with {id, action} frames (DecisionResponse), echoing each request's id, within its deadlineMs. A late answer, malformed frame, frame over 64KB, dropped connection, or illegal action costs a strike — three and the seat resigns; bojo reconnects on your next decision if your server drops. See the Play protocol section.

header parameters

x-bojo-matchstring
x-bojo-timestampstring
x-bojo-signaturestring

Response 101

Switching Protocols — the match now flows over this socket: DecisionRequest frames in, DecisionResponse frames out.