ObjectStackObjectStack

Realtime

Realtime protocol schemas

Source: packages/spec/src/api/realtime.zod.ts

TypeScript Usage

import { RealtimeConfigSchema, RealtimeEventSchema, RealtimeEventType, RealtimePresenceSchema, SubscriptionSchema, SubscriptionEventSchema, TransportProtocol } from '@objectstack/spec/api';
import type { RealtimeConfig, RealtimeEvent, RealtimeEventType, RealtimePresence, Subscription, SubscriptionEvent, TransportProtocol } from '@objectstack/spec/api';

// Validate data
const result = RealtimeConfigSchema.parse(data);

RealtimeConfig

Properties

PropertyTypeRequiredDescription
enabledbooleanEnable realtime synchronization
transportEnum<'websocket' | 'sse' | 'polling'>Transport protocol
subscriptions{ id: string; events: object[]; transport: Enum<'websocket' | 'sse' | 'polling'>; channel?: string }[]optionalDefault subscriptions

RealtimeEvent

Properties

PropertyTypeRequiredDescription
idstringUnique event identifier
typestringEvent type (e.g., record.created, record.updated)
objectstringoptionalObject name the event relates to
actionEnum<'created' | 'updated' | 'deleted'>optionalAction performed
payloadRecord<string, any>Event payload data
timestampstringISO 8601 datetime when event occurred
userIdstringoptionalUser who triggered the event
sessionIdstringoptionalSession identifier

RealtimeEventType

Realtime event type (not yet enforced — the runtime emits data.record.* event names instead, and field.changed is never emitted; see #3197)

Allowed Values

  • record.created
  • record.updated
  • record.deleted
  • field.changed

RealtimePresence

Properties

PropertyTypeRequiredDescription
userIdstringUser identifier
statusEnum<'online' | 'away' | 'busy' | 'offline'>Current presence status
lastSeenstringISO 8601 datetime of last activity
metadataRecord<string, any>optionalCustom presence data (e.g., current page, custom status)

Subscription

Properties

PropertyTypeRequiredDescription
idstringUnique subscription identifier
events{ type: Enum<'record.created' | 'record.updated' | 'record.deleted' | 'field.changed'>; object?: string; filters?: any }[]Array of events to subscribe to
transportEnum<'websocket' | 'sse' | 'polling'>Transport protocol to use
channelstringoptionalOptional channel name for grouping subscriptions

SubscriptionEvent

Properties

PropertyTypeRequiredDescription
typeEnum<'record.created' | 'record.updated' | 'record.deleted' | 'field.changed'>Type of event to subscribe to
objectstringoptionalObject name to subscribe to
filtersanyoptionalFilter conditions

TransportProtocol

Allowed Values

  • websocket
  • sse
  • polling

On this page