Ir al contenido
AtheronDEVELOPERS
← API reference

Events stream

Every webhook event as it happens, over Server-Sent Events, a WebSocket or a GraphQL subscription.

Inicie sesión para ver su propio ID de cliente de prueba en los ejemplos.

The same events your webhooks hear, as they happen, over a connection you keep open: no public address needed, in order, resumable for 30 days. Needs an API key with the events:read right. The AsyncAPI description describes all of it.

Server-Sent Events

GET https://developers.aton-network.org/api/v1/events

A text/event-stream response that stays open. Each event: id: <event id>, event: <type>, data: the webhook body. Resume with Last-Event-ID or ?after=. A comment every 15 seconds keeps proxies from closing it. ?types=user.signed_in,consent.revoked filters.

# The events stream as Server-Sent Events. Needs events:read. -N keeps it open.
# Resume after the last event you handled: add -H "Last-Event-ID: <its id>" (kept 30 days).
curl -N "https://developers.aton-network.org/api/v1/events?types=user.signed_in,consent.revoked" \
  -H "Authorization: Bearer $ATHERON_API_KEY"

WebSocket

WebSocket wss://developers.aton-network.org/api/v1/events/ws

Authorization: Bearer on the upgrade request. Frames are JSON: {"type":"ready"}, then {"type":"event","event":<webhook body>}; {"type":"error","error":<code>,"error_description":...} before it closes. The same ?types= and ?after=.

Este ejemplo aún no está escrito en cURL. Se muestra en TypeScript.

// The events stream over a plain WebSocket, with the ws package. The key goes on the upgrade.
import WebSocket from "ws";

export function followEventsOverSocket(apiKey: string, onEvent: (event: { id: string; type: string; data: Record<string, unknown> }) => void): () => void {
  const socket = new WebSocket("wss://developers.aton-network.org/api/v1/events/ws?types=user.signed_in", {
    headers: { authorization: `Bearer ${apiKey}` },
  });
  socket.on("message", (raw) => {
    const frame = JSON.parse(raw.toString()) as { type: string; event?: { id: string; type: string; data: Record<string, unknown> }; error?: string };
    if (frame.type === "event" && frame.event) onEvent(frame.event);
    else if (frame.type === "error") console.error("the events stream ended:", frame.error);
  });
  return () => socket.close(1000);
}

GraphQL subscription

graphql-transport-ws wss://developers.aton-network.org/api/graphql/ws

subscription { events(types, after) { ... } } over the graphql-transport-ws protocol, the key in connection_init's payload as authorization.

# curl does not speak WebSocket. The same events come as Server-Sent Events: -N keeps the stream open.
# Needs events:read. Each event: id, event (its type) and data (the body a webhook would get).
curl -N "https://developers.aton-network.org/api/v1/events?types=user.signed_in,consent.revoked" \
  -H "Authorization: Bearer $ATHERON_API_KEY"

Which to use

Webhooks when your server has a public address and you want us to retry for a day. The events stream for a laptop, a worker behind a firewall, or a dashboard that shows sign-ins as they happen. The atheron CLI forwards test events to localhost.

Pregunte a Atlas

Asistente de IA

Pregunte lo que quiera sobre Iniciar sesión con Atheron, la API o el portal. La respuesta sale de nuestra documentación, con enlaces a las páginas usadas.