ObjectStackObjectStack

Realtime schema — API Protocol reference

Realtime schemas of the ObjectStack API Protocol: RealtimeConfig, RealtimeEvent and 5 more — each property with its type, default and a TypeScript example.

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
enabledbooleanoptional (default: true)Enable realtime synchronization
transportEnum<'websocket' | 'sse' | 'polling'>optional (default: "websocket")Transport protocol
subscriptions{ id: string; events: object[]; transport: Enum<'websocket' | 'sse' | 'polling'>; channel?: string }[]optionalDefault subscriptions

Nested Shape: RealtimeConfig.subscriptions[number]

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

RealtimeEvent

Properties

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

RealtimeEventType

Realtime event type: a record-change event name the runtime emits

Allowed Values

  • data.record.created
  • data.record.updated
  • data.record.deleted
  • data.records.updated
  • data.records.deleted

RealtimePresence

Properties

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

Subscription

Properties

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

Nested Shape: Subscription.events[number]

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

SubscriptionEvent

Properties

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

TransportProtocol

Allowed Values

  • websocket
  • sse
  • polling

On this page