utd_signaling 0.1.1 copy "utd_signaling: ^0.1.1" to clipboard
utd_signaling: ^0.1.1 copied to clipboard

UTD-Stream signalling plane for Flutter: presence, 1:1 call invitations, chat messaging + groups, typing, push-token registration and media-upload presign over the engine WebSocket + REST. No media, n [...]

utd_signaling #

The UTD-Stream signalling plane for Flutter — the shared, no-UI foundation under utd_calls_kit / utd_chat_kit and future kits. It owns the REST + WebSocket transport: per-user session mint, presence, 1:1 call invitations, chat messaging + groups, typing, push-token registration, and media-upload presign. No media (LiveKit/WebRTC), no UI, no local storage.

Most consumers use the high-level UTDSignaling facade; the lower-level UTDApi / UTDSignalClient remain available for kits that need the full surface.

Capabilities & billing #

UTD-Stream exposes two independent, separately-billed capabilities:

Capability What it covers Engine flag
signaling Call invitation + presence + rooms/broadcast signaling_enabled
chat Persistent 1:1/group messaging + history + receipts messaging_enabled

Each is sold via a subscription plan (Free / Signaling / Pro / Enterprise) with per-plan limits: history_days, max_group_members, max_friends, max_chatrooms. Billing is MAU-based — there is no per-message charge.

Session capability surfacing #

The session mint (POST /api/v1/auth/session) may carry the capability flags + plan limits. They are parsed defensively and are all nullable — a null flag means the engine didn't surface it (older engine); treat it as "unknown, let the server decide", distinct from an explicit false.

final signaling = UTDSignaling(appId: 'app_x', appKey: 'key_x', userId: 'alice');
await signaling.connect();

if (signaling.signalingEnabled == false) {
  // Paid `signaling` capability is off for this plan — show an upsell.
}
final days = signaling.planLimits?.historyDays; // history retention, when known

UTDSignaling exposes signalingEnabled, chatEnabled, and planLimits (a UTDPlanLimits with historyDays / maxGroupMembers / maxFriends / maxChatrooms), captured on every (re)connect. UTDApi.mintSession() returns the same flags + limits on its result record.

A paid-capability gate from the engine (a non-ban 403 saying a capability is "not enabled") surfaces as UTDStreamException with code == UTDErrorCode.featureDisabled; branch on isFeatureDisabled (or isSignalingDisabled / isChatDisabled) to show an upsell instead of a raw failure. isForbidden still returns true for it.

0
likes
130
points
67
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

UTD-Stream signalling plane for Flutter: presence, 1:1 call invitations, chat messaging + groups, typing, push-token registration and media-upload presign over the engine WebSocket + REST. No media, no UI — the shared foundation for utd_calls_kit / utd_chat_kit and future kits.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

device_info_plus, dio, equatable, flutter, package_info_plus, shared_preferences, web_socket_channel

More

Packages that depend on utd_signaling