Events & Integration

Realtime streams

Connect to WS /jql-streams for authenticated realtime JQL events and understand related notification streams.

Antly exposes a WebSocket route at:

text
WS /jql-streams

The consumer is authenticated through the same web application session context. Anonymous users are disconnected. On connect, the client joins the JQL room and receives a welcome message.

Message shape

Clients send a message with a type and event. The type maps to the channel handler name, such as on_create, on_update, on_delete, on_service, or on_controller.

json
1{ 2 "type": "on_update", 3 "event": { 4 "namespace": "objects.Record", 5 "id": 123, 6 "data": { 7 "status": "approved" 8 } 9 } 10}

The consumer forwards the event to the room and sends received events back as JSON.

json
1{ 2 "namespace": "objects.Record", 3 "id": 123, 4 "data": { 5 "status": "approved" 6 } 7}

Iris progress streams piggyback on the existing realtime transport. Notifications use MQTT through AWS IoT Core rather than this WebSocket route.

Use /jql-streams for authenticated app realtime behavior. Use outbound webhooks for durable server-to-server delivery. See /developer/outbound-webhooks for delivery logs and retries.

Browser example

js
1const protocol = window.location.protocol === "https:" ? "wss" : "ws"; 2const socket = new WebSocket(`${protocol}://${window.location.host}/jql-streams`); 3 4socket.addEventListener("message", event => { 5 const payload = JSON.parse(event.data); 6 console.log("Realtime event", payload); 7}); 8 9socket.addEventListener("open", () => { 10 socket.send(JSON.stringify({ 11 type: "on_service", 12 event: { name: "client-ready" } 13 })); 14});

For data reads after receiving an event, refresh a useJql query rather than trusting a partial event as the full record. See /developer/data-hooks.