Common data types ​
Fields below are declared serialized members. Base types contribute their own fields; related types link the payload graph. ? means nullable, and required marks a required C# initializer. These are schematic C# contract shapes, not compilable declarations or a separate JSON schema. Constructor members are repeated in the field list for easy scanning. Serialization attributes and implementation helpers are omitted; use the linked source for exact wire aliases and formatters.
ApiCommand ​
Base record for client-callable API commands: carries a client-generated Uuid (idempotency key, auto-generated so callers never pass it) and the Session. Source
public partial record ApiCommand : ISessionCommand, IApiCommand, IHasUuid
{
string Uuid;
required Session Session;
}The generic command base adds the result type, but no fields:
public abstract partial record ApiCommand<TResult>
: ApiCommand,
ISessionCommand<TResult>;AppKind ​
Defines the target platform for client applications. Source
public enum AppKind
{
Unknown = 0,
Wasm,
Android,
Ios,
Windows,
MacOS,
Linux,
}AudioCodecKind ​
Specifies the audio codec type. Source
public enum AudioCodecKind
{
Wav = 0,
Flac,
Opus,
}AudioFormat ​
Describes audio encoding parameters including codec, sample rate, and channel count. Source
public sealed partial record AudioFormat : MediaFormat
{
short ChannelCount;
AudioCodecKind CodecKind;
string CodecSettings;
int SampleRate;
int PreSkip;
}Related types: AudioCodecKind, MediaFormat.
AudioFrame ​
Represents a single frame of audio data. Source
public sealed partial record AudioFrame : MediaFrame
{
override TimeSpan Offset;
override TimeSpan Duration;
bool LegacyIsKeyFrame;
}Related types: MediaFrame.
CallPhase ​
Allowed values for call phase. Source
public enum CallPhase
{
Ringing,
Dialing,
Active,
Ended,
}CallReaction ​
Call Reaction contract used by the API operations and related records below. Source
public sealed partial record CallReaction(
AuthorId AuthorId,
Emoji Emoji,
Moment SentAt
)
{
AuthorId AuthorId;
Emoji Emoji;
Moment SentAt;
}Related types: AuthorId, Emoji.
CallRole ​
Allowed values for call role. Source
public enum CallRole
{
Caller,
Callee,
}CallStatus ​
Allowed values for call status. Source
public enum CallStatus
{
None = 0,
Dialing = 1,
Connecting = 2,
Active = 3,
NoAnswer = 4,
Declined = 5,
Canceled = 6,
Ended = 7,
Busy = 8,
}Change ​
A serializable change record with separate create and update payload types. Source
public partial record Change<TCreate, TUpdate> : IChange
{
Option<TCreate> Create;
Option<TUpdate> Update;
bool Remove;
}The one-payload form uses the same type for creation and update:
public partial record Change<T> : Change<T, T>;Select exactly one operation. See changes and versions.
CompatibilityLevel ​
Indicates client-server version compatibility. Source
public enum CompatibilityLevel
{
Unknown = 0,
Full,
Compatible,
Incompatible,
}ConversationStats ​
How much talking actually happened in a chat's live session recently: per-author speech seconds and transcribed characters over a trailing window, plus the session's own age. Source
public sealed partial record ConversationStats
{
TimeSpan Duration;
ApiMap<AuthorId, double> SpeechDurations;
ApiMap<AuthorId, int> TranscriptSizes;
}Related types: AuthorId.
FlowDetails ​
Flow Details contract used by the API operations and related records below. Source
public sealed partial record FlowDetails(string Console, string? Error)
{
string Console;
string? Error;
}FlowStatus ​
Allowed values for flow status. Source
public enum FlowStatus
{
Completed = 0,
Failed,
Scheduled,
Stuck,
Idle,
}FlowSummary ​
Flow Summary contract used by the API operations and related records below. Source
public sealed partial record FlowSummary(
string FlowId,
string Name,
FlowStatus Status,
long Version,
Moment UpdatedAt
)
{
string FlowId;
string Name;
FlowStatus Status;
long Version;
Moment UpdatedAt;
}Related types: FlowStatus.
FlowTypeStat ​
Flow Type Stat contract used by the API operations and related records below. Source
public sealed partial record FlowTypeStat(
string Name,
int Completed,
int Failed,
int Scheduled,
int Stuck,
int Idle
)
{
string Name;
int Completed;
int Failed;
int Scheduled;
int Stuck;
int Idle;
}FlowsQuery ​
Flows Query contract used by the API operations and related records below. Source
public sealed partial record FlowsQuery(
string? Name = null,
bool ProblematicOnly = false,
int Limit = 100,
bool HideCompleted = false
)
{
string? Name;
bool ProblematicOnly;
int Limit;
bool HideCompleted;
}GeoPoint ​
A geographic position: WGS84 latitude/longitude with optional horizontal Accuracy (meters) and Bearing (degrees clockwise from north): the compass heading where the device reads it, otherwise the GPS course, which exists only while moving. Source
public sealed partial record GeoPoint(
double Latitude,
double Longitude,
float? Accuracy = null,
float? Bearing = null
)
{
double Latitude;
double Longitude;
float? Accuracy;
float? Bearing;
}HashString ​
Hash String contract used by the API operations and related records below. Source
public readonly partial struct HashString : ISymbolIdentifier<HashString>
{
Symbol Id;
}LegacyLiveSessionState ​
The LiveSessionState wire shape of 2.21 and older. Keys 22, 23 and 25 are retired. Source
public sealed partial record LegacyLiveSessionState
{
ChatId ChatId;
long StartEntryLid;
long EndEntryLid;
Moment StartedAt;
IReadOnlyList<AuthorId> AuthorIds;
string Title;
string Description;
string Summary;
bool TranscriptionOn;
int MessageCount;
Moment LastSummaryAt;
bool StartNotificationSent;
long Version;
bool IsClosing;
Moment? ClosingAt;
AuthorId Host;
SessionRules Rules;
Moment? SessionStartedAt;
LiveSessionKind Kind;
long VisibleStartLid;
long ContextStartLid;
bool IsExpandedByDefault;
AuthorId? CallerId;
bool HasTranscript;
}Related types: AuthorId, ChatId, LiveSessionKind, SessionRules.
LinearMap ​
Linear Map contract used by the API operations and related records below. Source
public readonly partial struct LinearMap
{
float[] Data;
}LinearMapDiff ​
Partial changes to linear map; omitted optional members leave their values unchanged. Source
public readonly partial record struct LinearMapDiff(
LinearMap Suffix,
bool IsRewrite = false
) : ICanBeNone<LinearMapDiff>
{
LinearMap Suffix;
bool IsRewrite;
}Related types: LinearMap.
LiveAudioStreamInfo ​
Information about an active audio stream in a chat. Source
public sealed partial record LiveAudioStreamInfo
{
ChatId ChatId;
AuthorId AuthorId;
string StreamId;
Moment BeginsAt;
AudioFormat? Format;
ChatEntryId? EntryId;
Moment SourceBeginsAt;
bool IsTextOnly;
ApiArray<Language> Languages;
Language? DubLanguage;
bool IsSynthesized;
}Related types: AudioFormat, AuthorId, ChatEntryId, ChatId, Language.
LiveConversation ​
One live conversation of a chat: its boundaries and its summary. The open one is a part of LiveSessionState; a closed one is kept for a while after the session ends, until the saved Conversation that covers it takes over. Source
public sealed partial record LiveConversation
: IHasId<ConversationId>,
IHasVersion<long>
{
ConversationId Id;
long ContextStartLid;
long SummaryEndLid;
long EndLid;
Moment StartedAt;
Moment EndedAt;
Moment SummarizedAt;
string Title;
string Description;
string Summary;
int SummarizedEntryCount;
IReadOnlyList<AuthorId> AuthorIds;
bool IsExpandedByDefault;
AuthorId? CallerId;
long Version;
IReadOnlyList<AuthorId> ParticipantIds;
}Related types: AuthorId, ConversationId.
LiveSession ​
A live call/session in a chat: its host, capability rules, members and per-peer state. The transcript-summary block, when transcription is on, is the Conversation facet. Source
public sealed partial record LiveSession
{
ChatId ChatId;
AuthorId Host;
Moment StartedAt;
SessionRules Rules;
IReadOnlyList<LiveSessionMember> Members;
Conversation? Conversation;
long Version;
bool TranscriptionOn;
LiveSessionKind Kind;
}Related types: AuthorId, ChatId, Conversation, LiveSessionKind, LiveSessionMember, SessionRules.
LiveSessionKind ​
Allowed values for live session kind. Source
public enum LiveSessionKind
{
Ambient = 0,
Call = 1,
}LiveSessionMember ​
Live Session Member contract used by the API operations and related records below. Source
public sealed partial record LiveSessionMember
{
AuthorId AuthorId;
MemberGroup Group;
bool IsMicOpen;
bool HasCamera;
bool HasScreenShare;
bool IsListening;
bool MicMuted;
Moment JoinedAt;
Moment? HandRaisedAt;
}Related types: AuthorId, MemberGroup.
LiveSessionState ​
The persisted per-chat live-session state: call/lifecycle facts (host, rules, the 2+ peer start, closing) plus the open LiveConversation, which exists once the session starts. Source
public sealed partial record LiveSessionState
{
ChatId ChatId;
long FirstSpeechLid;
Moment FirstSpeechAt;
IReadOnlyList<AuthorId> AuthorIds;
bool IsTranscriptionOn;
bool StartNotificationSent;
long Version;
Moment? QuietSince;
AuthorId HostAuthorId;
SessionRules Rules;
LiveSessionKind Kind;
AuthorId? CallerId;
bool HasTranscript;
LiveConversation? OpenConversation;
}Related types: AuthorId, ChatId, LiveConversation, LiveSessionKind, SessionRules.
MaintenanceMode ​
Allowed values for maintenance mode. Source
public enum MaintenanceMode
{
None = 0,
System = 1,
Import = 2,
Removal = 3,
}MemberGroup ​
Allowed values for member group. Source
public enum MemberGroup
{
Host = 0,
Other = 1,
Exited = 2,
}MuxedAudioFrame ​
Audio data packet in a multiplexed live stream. Source
public sealed partial class MuxedAudioFrame : MuxedAudioStreamItem
{
ReadOnlyMemory<byte> Data;
TimeSpan Offset;
}Related types: MuxedAudioStreamItem.
MuxedAudioStreamEnd ​
Signals that an audio stream has completed within the multiplexed live stream. Source
public sealed partial class MuxedAudioStreamEnd : MuxedAudioStreamItemNo additional serialized fields are declared here; use the base contract or string-identifier representation.
Related types: MuxedAudioStreamItem.
MuxedAudioStreamItem ​
Base type for all live stream items, enabling polymorphic serialization over multiplexed streams. Source
public abstract partial class MuxedAudioStreamItem : IMuxable
{
int StreamIndex;
}Related types: MuxedAudioFrame, MuxedAudioStreamEnd, MuxedAudioStreamReset, MuxedAudioStreamStart.
MuxedAudioStreamReset ​
Signals that the multiplexed live stream has been reset due to a reconnect. All in-flight sub-streams should be flushed and re-started. Source
public sealed partial class MuxedAudioStreamReset : MuxedAudioStreamItemNo additional serialized fields are declared here; use the base contract or string-identifier representation.
Related types: MuxedAudioStreamItem.
MuxedAudioStreamStart ​
Announces the start of a new audio stream within the multiplexed live stream. Source
public sealed partial class MuxedAudioStreamStart : MuxedAudioStreamItem
{
LiveAudioStreamInfo StreamInfo;
TimeSpan PlaysAt;
}Related types: LiveAudioStreamInfo, MuxedAudioStreamItem.
ParticipationKind ​
How a user takes part in a live conversation. Any active kind counts as "joined". Source
public enum ParticipationKind
{
AudioListen = 0,
VideoView = 1,
Record = 2,
}Range ​
Defines the boundaries of a continuous span of items of type T. Source
public readonly partial struct Range<T> : IEquatable<Range<T>> where T : notnull
{
T Start;
T End;
}RecordDiff ​
Base record for diffs that track changes to record types. Source
public abstract record RecordDiff : IDiffNo additional serialized fields are declared here; use the base contract or string-identifier representation.
RingAck ​
Allowed values for ring ack. Source
public enum RingAck
{
Received = 0,
Ringing = 1,
Busy = 2,
}SecureToken ​
A time-limited token used for secure operations. Source
public sealed partial record SecureToken(string Token, Moment ExpiresAt )
{
string Token;
Moment ExpiresAt;
}SessionKind ​
Allowed values for session kind. Source
public enum SessionKind
{
Session = 0,
ApiKey,
OAuth,
}SessionRules ​
Session Rules contract used by the API operations and related records below. Source
public sealed partial record SessionRules
{
VoiceMode? VoiceModeOverride;
bool VideoAllowed;
}Related types: VoiceMode.
SetDiff ​
Represents changes to a collection as added and removed items. Source
public readonly partial struct SetDiff<TItem>(
TItem[]? addedItems,
TItem[]? removedItems = null
) : IDiff, IEquatable<SetDiff<TItem>>
{
TItem[] AddedItems;
TItem[] RemovedItems;
}SpeechPaceDistribution ​
Speech Pace Distribution contract used by the API operations and related records below. Source
public readonly partial record struct SpeechPaceDistribution(
long BelowMilliseconds,
long WithinMilliseconds,
long AboveMilliseconds
)
{
long BelowMilliseconds;
long WithinMilliseconds;
long AboveMilliseconds;
}SpeechPaceSegment ​
Speech Pace Segment contract used by the API operations and related records below. Source
public readonly partial record struct SpeechPaceSegment(
Range<int> TextRange,
Range<int> TimeRange,
int Words
)
{
Range<int> TextRange;
Range<int> TimeRange;
int Words;
}Related types: Range.
StringDiff ​
Represents incremental string changes as a start index and suffix text. Source
public readonly partial record struct StringDiff(
int Start,
string? Suffix
) : ICanBeNone<StringDiff>, ISanitized
{
int Start;
string? Suffix;
}ThermalLevel ​
Device thermal pressure. Maps 1:1 to iOS NSProcessInfoThermalState, Android PowerManager THERMAL_STATUS bands, and the web Compute Pressure API states (nominal/fair/serious/critical). Source
public enum ThermalLevel
{
Nominal = 0,
Fair = 1,
Serious = 2,
Critical = 3,
}TranscriptDiff ​
Represents incremental changes to a Transcript. Source
public sealed partial record TranscriptDiff(
StringDiff TextDiff,
LinearMapDiff TimeMapDiff
) : ISanitized
{
StringDiff TextDiff;
LinearMapDiff TimeMapDiff;
bool IsStable;
Language[]? Languages;
bool IsSegmentEnd;
}Related types: Language, LinearMapDiff, StringDiff.
TypingActivityKind ​
Allowed values for typing activity kind. Source
public enum TypingActivityKind
{
None = 0,
Typing = 1,
}UserCall ​
The one call a user is in, as ActualChat.Streaming.ILiveSessions tells the client that placed or answered it - or, while it rings, every client of theirs. An CallPhase.Ended one is how that client learns the call is over. Source
public sealed partial record UserCall
{
ChatId ChatId;
CallRole Role;
CallPhase Phase;
AuthorId? PeerId;
bool HasVideo;
CallId CallId;
CallOutcome Outcome;
}Related types: AuthorId, CallId, CallOutcome, CallPhase, CallRole, ChatId.
VideoFormat ​
Video Format contract used by the API operations and related records below. Source
public sealed partial record VideoFormat : MediaFormat
{
string Codec;
string CodecSettings;
byte LayerId;
Size2D Size;
Size2D SourceSize;
}Related types: MediaFormat, Size2D.
VideoFrame ​
Video Frame contract used by the API operations and related records below. Source
public sealed partial record VideoFrame : MediaFrame
{
override TimeSpan Offset;
override TimeSpan Duration;
int OffsetEpoch;
int Index;
int KeyFrameIndex;
int Width;
int Height;
byte Rotation;
byte LayerId;
byte LayerCount;
int MaxLayerWidth;
int MaxLayerHeight;
byte TemporalLayerId;
byte TemporalLayerCount;
string? Codec;
ReadOnlyMemory<byte> Description;
ReadOnlyMemory<byte> DropTrace;
long ServerArrivedAtTicks;
byte LayerMask;
}Related types: MediaFrame.
VideoFrameBundle ​
One captured source moment, carried as a simulcast bundle of 1..N per-layer VideoFrames. Ordered bottom-first (Layers[0] = lowest layer; last entry = top layer). All frames in a bundle share capture time, keyframe policy, source dims and codec — only Data, Width/Height, Description and LayerId differ. Source
public sealed partial class VideoFrameBundle(VideoFrame[] layers)
{
VideoFrame[] Layers;
}Related types: VideoFrame.
VideoStreamInfo ​
Video Stream Info contract used by the API operations and related records below. Source
public sealed partial record VideoStreamInfo(
StreamId StreamId,
ChatId ChatId,
AuthorId AuthorId,
VideoFormat Format,
Moment StartedAt,
VideoSourceKind SourceKind = VideoSourceKind.Camera,
Moment SourceStartedAt = default,
double? SourceClockDeltaMs = null
)
{
StreamId StreamId;
ChatId ChatId;
AuthorId AuthorId;
VideoFormat Format;
Moment StartedAt;
VideoSourceKind SourceKind;
Moment SourceStartedAt;
double? SourceClockDeltaMs;
}Related types: AuthorId, ChatId, StreamId, VideoFormat, VideoSourceKind.