Models
Models in the .NET SDK.
| Symbol | Kind | Summary |
|---|---|---|
BroadcastResult | class | The acknowledgement of a multi-room broadcast. |
EmitResult | class | The acknowledgement of a realtime emit. |
ErrorCaptureResult | class | What became of a captured error. |
FlagEvaluation | class | Every active flag resolved for one person. |
IdentifyResult | class | The person created or updated by an identify call. |
IvrInstruction | class | One step of an IVR flow, as a directive to act on. |
IvrResult | class | An IVR flow's current step. |
LiveActivityResult | class | How many devices a Live Activity reached, per platform. |
NexusAck | class | The answer from an endpoint that only confirms it did the thing. |
NexusEvent | class | One analytics event, for a batch send. |
NexusLogEntry | class | One log line, for a batch send. |
NexusLogLevel | enum | Severity of a Nexus log line. |
NexusReplayEvent | class | One replay event, as produced by a recorder. |
NexusResult | abstract class | Base for the SDK's response types. |
NexusStackFrame | class | One stack frame, as the console renders it. |
PushSendResult | class | The outcome of a transactional push send. |
RemoteConfigPublishResult | class | A published Remote Config version. |
RemoteConfigSnapshot | class | A resolved Remote Config template: typed getters over the values the server evaluated for your context. |
RemoteConfigValue | class | One resolved Remote Config parameter, with conversions. |
RoomResult | class | A registered realtime room. |
RoomSchemaResult | class | A room's payload schema and whether it is enforced. |
SessionResult | class | The session a track call started or refreshed. |
SurveyResponseResult | class | The stored survey response. |
VoiceAccessToken | class | A short-lived media access token for joining the session's room. |
VoiceCallResult | class | A created call session. |
VoiceDtmfResult | class | The result of sending a DTMF digit. |
VoiceJoinBundle | class | Everything a WebRTC client needs to join a call. |
VoiceLeg | class | One participant's leg of a call. |
VoiceLegResult | class | The outcome of adding a leg to a call. |
VoicePresenceResult | class | An identity's rolled-up presence after a heartbeat. |
VoiceSession | class | A call session — the container every leg belongs to. |
VoiceTurnCredential | class | Short-lived TURN relay credentials for the device to use. |
BroadcastResult
classclass Inverge.Nexus.Models.BroadcastResultThe acknowledgement of a multi-room broadcast.
Count
propertyint Count { get; }How many rooms were emitted to. A message whose room name or event list was empty is skipped server-side, so this can be lower than what you sent.
Ok
propertybool Ok { get; }Whether the broadcast was accepted.
Results
propertyIReadOnlyList<JsonNode> Results { get; }The per-room acknowledgements.
EmitResult
classclass Inverge.Nexus.Models.EmitResultThe acknowledgement of a realtime emit.
Events
propertyIReadOnlyList<string> Events { get; }The event names emitted.
Ok
propertybool Ok { get; }Whether the emit was accepted.
Recipients
propertyint Recipients { get; }How many connected sockets received it. Zero is the signature of an environment mismatch — rooms are environment-scoped, so a subscriber using a key from another environment is never in the room you emitted to.
Related
propertyIReadOnlyList<string> Related { get; }Linked rooms the message was also delivered to.
Room
propertystring? Room { get; }The room it went to.
Skipped
propertybool Skipped { get; }Whether the environment's realtime limit dropped it.
ErrorCaptureResult
classclass Inverge.Nexus.Models.ErrorCaptureResultWhat became of a captured error.
Three outcomes all arrive as a 2xx, and they are not the same thing:
stored (Id set), dropped because the issue is marked ignored in
the console (Ignored), or dropped because the environment hit
its error limit (Skipped). An ignored issue is not billed.
GroupId
propertystring? GroupId { get; }The issue group it was folded into.
Id
propertystring? Id { get; }The stored occurrence's id, when it was stored.
Ignored
propertybool Ignored { get; }Whether the issue is marked ignored, so the occurrence was dropped and not billed.
Skipped
propertybool Skipped { get; }Whether the environment's error limit dropped it.
Stored
propertybool Stored { get; }Whether the occurrence was actually stored.
FlagEvaluation
classclass Inverge.Nexus.Models.FlagEvaluationEvery active flag resolved for one person.
One evaluation covers every flag in the environment, so asking the result
several questions costs one request. Calling IsEnabledAsync three times
costs three.
Flags
propertyIReadOnlyDictionary<string, JsonNode?> Flags { get; }Flag keys mapped to their resolved value: a boolean for an on/off flag, the variant name for a multivariate one.
IsEmpty
propertybool IsEmpty { get; }Whether any flag came back. An empty result usually means a usage cap.
Payloads
propertyIReadOnlyDictionary<string, JsonNode?> Payloads { get; }Flag keys mapped to their attached JSON payload.
Contains()
methodbool Contains(string key)Whether the evaluation mentions a flag at all.
Parameters
Prop
Type
Returns bool
IsEnabled()
methodbool IsEnabled(string key)Whether a flag is on — true for an enabled boolean flag, and for any resolved variant of a multivariate one.
Parameters
Prop
Type
Returns bool
Payload()
methodJsonNode? Payload(string key)The flag's attached JSON payload, or null.
Parameters
Prop
Type
Returns JsonNode?
Variant()
methodstring? Variant(string key)The resolved variant of a multivariate flag, or null.
Parameters
Prop
Type
Returns string?
IdentifyResult
classclass Inverge.Nexus.Models.IdentifyResultThe person created or updated by an identify call.
DistinctId
propertystring? DistinctId { get; }The distinct id you identified them by.
Subject
propertyJsonObject? Subject { get; }The stored subject record.
SubjectId
propertystring? SubjectId { get; }Nexus's own id for the person.
IvrInstruction
classclass Inverge.Nexus.Models.IvrInstructionOne step of an IVR flow, as a directive to act on.
Transfers and queues are resolved server-side into a connect, so the
client never has to know about queues or agent availability — it either gets
somebody to call, or no_agents.
Action
propertystring? Action { get; }What to do: play, collect, voicemail, hangup,
connect, no_agents or ended.
EndpointType
propertystring? EndpointType { get; }For connect: app, pstn or sip.
HasNoAgents
propertybool HasNoAgents { get; }Whether a queue resolved to nobody being available.
IsConnect
propertybool IsConnect { get; }Whether this instruction is telling you to place a call.
IsEnded
propertybool IsEnded { get; }Whether the flow is over.
Raw
propertyJsonObject Raw { get; }The instruction as sent, including action-specific fields.
Reason
propertystring? Reason { get; }Why the flow ended, when it did.
To
propertystring? To { get; }For connect: the address or identity to call.
IvrResult
classclass Inverge.Nexus.Models.IvrResultAn IVR flow's current step.
Instruction
propertyIvrInstruction? Instruction { get; }What to do next.
SessionId
propertystring? SessionId { get; }The IVR session id, returned when the flow starts.
While the caller is still in the menu this is a synthetic id held in Redis —
no call session exists in the database until the flow resolves to a
connect, because only then is there a real call.
LiveActivityResult
classclass Inverge.Nexus.Models.LiveActivityResultHow many devices a Live Activity reached, per platform.
Android
propertyint Android { get; }Android devices reached.
Ios
propertyint Ios { get; }iOS devices reached.
IosTargets
propertyint IosTargets { get; }Start only: iOS devices registered for the activity type.
IosWarning
propertystring? IosWarning { get; }Start only: why iOS got fewer deliveries than targets — no registered devices, APNs not configured, or Apple's rejection. Null when all is well.
Total
propertyint Total { get; }Devices reached in total.
NexusAck
classclass Inverge.Nexus.Models.NexusAckThe answer from an endpoint that only confirms it did the thing.
Skipped is the one to watch. Several ingest endpoints answer
{"skipped": true} with a 2xx when the environment has hit a usage limit
— the call succeeded, and the data was not stored. Treating that as success
hides a billing problem as missing data.
Ok
propertybool Ok { get; }Whether the server acknowledged the call.
Skipped
propertybool Skipped { get; }Whether the server accepted the call but stored nothing, usually a usage cap.
NexusEvent
classclass Inverge.Nexus.Models.NexusEventOne analytics event, for a batch send.
NexusEvent
constructornew NexusEvent(string name, object? properties = null, DateTimeOffset? timestamp = null)Creates an event.
Parameters
Prop
Type
Name
propertystring Name { get; }The event name.
Properties
propertyobject? Properties { get; }The event's properties.
Timestamp
propertyDateTimeOffset? Timestamp { get; }When it happened.
NexusLogEntry
classclass Inverge.Nexus.Models.NexusLogEntryOne log line, for a batch send.
NexusLogEntry
constructornew NexusLogEntry(NexusLogLevel level, string message, string? source = null, object? context = null, DateTimeOffset? timestamp = null)Creates a log entry.
Parameters
Prop
Type
Context
propertyobject? Context { get; }Structured context attached to the line.
Level
propertyNexusLogLevel Level { get; }The severity.
Message
propertystring Message { get; }The message. Over-long messages are truncated server-side, not rejected.
Source
propertystring? Source { get; }Where it came from — a subsystem, a logger name.
Timestamp
propertyDateTimeOffset? Timestamp { get; }When it was written.
NexusLogLevel
enumenum Inverge.Nexus.Models.NexusLogLevelSeverity of a Nexus log line.
| Constant | Description |
|---|---|
const NexusLogLevel Debug = 1 | Developer detail. |
const NexusLogLevel Error = 4 | An operation failed. |
const NexusLogLevel Fatal = 5 | The process cannot continue. |
const NexusLogLevel Information = 2 | Normal operation. |
const NexusLogLevel Trace = 0 | Finest-grained detail. |
const NexusLogLevel Warning = 3 | Something unexpected that did not break anything. |
NexusReplayEvent
classclass Inverge.Nexus.Models.NexusReplayEventOne replay event, as produced by a recorder.
NexusReplayEvent
constructornew NexusReplayEvent(object payload)Creates a replay event from an already-shaped payload.
Parameters
Prop
Type
FromPayloads()
static methodstatic IEnumerable<NexusReplayEvent> FromPayloads(IEnumerable<object> payloads)Wraps a sequence of raw payloads.
Parameters
Prop
Type
Returns IEnumerable<NexusReplayEvent>
Payload
propertyobject Payload { get; }The event payload.
NexusResult
abstract classabstract class Inverge.Nexus.Models.NexusResultBase for the SDK's response types.
Each result reads the fields the endpoint documents into typed properties and
keeps the whole payload in Raw. That combination is deliberate:
you get IntelliSense and compile-time names for the contract, and a field the
server adds next month is reachable immediately without waiting for an SDK
release.
HasPayload
propertybool HasPayload { get; }Whether a response body arrived at all.
Raw
propertyJsonNode? Raw { get; }The decoded response, exactly as the API sent it. null when the
response had no body, or when a silent client swallowed a failure.
NexusStackFrame
classclass Inverge.Nexus.Models.NexusStackFrameOne stack frame, as the console renders it.
NexusStackFrame
constructornew NexusStackFrame(string? function, string? filename = null, int? lineNumber = null, string? contextLine = null)Creates a frame.
Parameters
Prop
Type
ContextLine
propertystring? ContextLine { get; }The source line itself, when known.
Filename
propertystring? Filename { get; }The source file, when symbols were available.
Function
propertystring? Function { get; }The method, qualified by its declaring type.
LineNumber
propertyint? LineNumber { get; }The line number, when symbols were available.
PushSendResult
classclass Inverge.Nexus.Models.PushSendResultThe outcome of a transactional push send.
Failed
propertyint Failed { get; }How many were rejected. A steady non-zero count usually means stale tokens or provider credentials that need attention — the send itself still reports success.
Recipients
propertyint Recipients { get; }How many devices the audience resolved to.
Sent
propertyint Sent { get; }How many device deliveries the providers accepted.
RemoteConfigPublishResult
classclass Inverge.Nexus.Models.RemoteConfigPublishResultA published Remote Config version.
CreatedAt
propertyDateTimeOffset? CreatedAt { get; }When it was published.
ETag
propertystring ETag { get; }The new version's ETag.
VersionNumber
propertyint VersionNumber { get; }The new version number.
RemoteConfigSnapshot
classclass Inverge.Nexus.Models.RemoteConfigSnapshotA resolved Remote Config template: typed getters over the values the server evaluated for your context.
Conditions — platform, version, country, percentile, custom attributes — are evaluated server-side, so what arrives here is final. Nothing is decided locally except the in-app defaults you registered, which fill a key the template does not define.
Defaults
propertyIReadOnlyDictionary<string, object?> Defaults { get; }The in-app defaults in force for this snapshot.
ETag
propertystring ETag { get; }The ETag of the resolved result. It hashes the evaluated values, not just the template, so a changed context produces a new ETag rather than a false "not modified".
NotModified
propertybool NotModified { get; }Whether the server said nothing changed since the ETag we sent.
Parameters
propertyIReadOnlyDictionary<string, RemoteConfigValue> Parameters { get; }The resolved parameters, by key.
Throttled
propertybool Throttled { get; }Whether the environment hit its fetch limit. The values here are the last good ones plus your defaults — the server deliberately served and billed nothing.
Version
propertyint Version { get; }The published template version these values came from.
Contains()
methodbool Contains(string key)Whether the key is defined by the template or by your defaults.
Parameters
Prop
Type
Returns bool
GetBoolean()
methodbool GetBoolean(string key, bool fallback = false)A boolean parameter — the shape a kill switch takes.
Parameters
Prop
Type
Returns bool
GetInt32()
methodint GetInt32(string key, int fallback = 0)An integer parameter.
Parameters
Prop
Type
Returns int
GetJson()
methodJsonNode? GetJson(string key, JsonNode? fallback = null)A JSON parameter.
Parameters
Prop
Type
Returns JsonNode?
GetNumber()
methoddouble GetNumber(string key, double fallback = 0)A numeric parameter.
Parameters
Prop
Type
Returns double
GetString()
methodstring GetString(string key, string fallback = "")A string parameter.
Parameters
Prop
Type
Returns string
SourceOf()
methodstring? SourceOf(string key)Which condition supplied a key's value, or null for the default.
Parameters
Prop
Type
Returns string?
ToDictionary()
methodIReadOnlyDictionary<string, JsonNode?> ToDictionary()A flat key-to-value map, defaults merged underneath.
Returns IReadOnlyDictionary<string, JsonNode?>
Value()
methodRemoteConfigValue Value(string key)The parameter, falling back to the in-app default you registered.
Parameters
Prop
Type
Returns RemoteConfigValue
RemoteConfigValue
classclass Inverge.Nexus.Models.RemoteConfigValueOne resolved Remote Config parameter, with conversions.
The conversions are forgiving on purpose: configuration is edited by people, and a parameter typed as a string in the console but read as a number here should still work rather than throwing in production.
HasValue
propertybool HasValue { get; }Whether a value was resolved at all.
Key
propertystring Key { get; }The parameter key.
Source
propertystring? Source { get; }Which condition supplied the value, or null when it came from the
parameter's default. Useful when a rollout is not behaving as expected.
Value
propertyJsonNode? Value { get; }The resolved value, as JSON.
ValueType
propertystring? ValueType { get; }The declared type: STRING, NUMBER, BOOLEAN or JSON.
AsBoolean()
methodbool AsBoolean(bool fallback = false)The value as a boolean, reading "true", "1", "yes" and friends.
Parameters
Prop
Type
Returns bool
AsInt32()
methodint AsInt32(int fallback = 0)The value as an int.
Parameters
Prop
Type
Returns int
AsInt64()
methodlong AsInt64(long fallback = 0)The value as a long.
Parameters
Prop
Type
Returns long
AsJson()
methodJsonNode? AsJson(JsonNode? fallback = null)The value as JSON. A value stored as a JSON string is parsed, so a
parameter typed STRING but holding {"a":1} still comes back usable.
Parameters
Prop
Type
Returns JsonNode?
AsNumber()
methoddouble AsNumber(double fallback = 0)The value as a double.
Parameters
Prop
Type
Returns double
AsString()
methodstring AsString(string fallback = "")The value as a string.
Parameters
Prop
Type
Returns string
RoomResult
classclass Inverge.Nexus.Models.RoomResultA registered realtime room.
Id
propertystring? Id { get; }The room's id, as used by the link and schema endpoints.
Name
propertystring? Name { get; }The room name, as joined by subscribers.
Room
propertyJsonObject? Room { get; }The room record.
Type
propertystring? Type { get; }The room type, when one was set.
RoomSchemaResult
classclass Inverge.Nexus.Models.RoomSchemaResultA room's payload schema and whether it is enforced.
Enabled
propertybool Enabled { get; }Whether validation is actually enforced. A schema can be attached and switched off, which is why these are two separate things.
Schema
propertyJsonNode? Schema { get; }The JSON Schema payloads must satisfy, when one is set.
SessionResult
classclass Inverge.Nexus.Models.SessionResultThe session a track call started or refreshed.
SessionId
propertystring? SessionId { get; }Nexus's id for the session.
SessionKey
propertystring? SessionKey { get; }The session key correlating this journey.
SubjectId
propertystring? SubjectId { get; }Nexus's id for the person the session belongs to.
SurveyResponseResult
classclass Inverge.Nexus.Models.SurveyResponseResultThe stored survey response.
Completed
propertybool Completed { get; }Whether the response is marked complete.
Id
propertystring? Id { get; }The response id. Pass it back as responseId to keep appending answers
to the same response instead of creating a second one.
Skipped
propertybool Skipped { get; }Whether the environment's survey limit dropped it.
VoiceAccessToken
classclass Inverge.Nexus.Models.VoiceAccessTokenA short-lived media access token for joining the session's room.
ExpiresAt
propertyDateTimeOffset? ExpiresAt { get; }When the token stops working — minutes, not hours.
Raw
propertyJsonObject Raw { get; }The token record as sent.
Token
propertystring? Token { get; }The signed join token. Scoped to this one leg; do not cache or reuse it.
Url
propertystring? Url { get; }The media server URL to join.
VoiceCallResult
classclass Inverge.Nexus.Models.VoiceCallResultA created call session.
Session
propertyVoiceSession? Session { get; }The new session.
SessionId
propertystring? SessionId { get; }The new session's id.
VoiceDtmfResult
classclass Inverge.Nexus.Models.VoiceDtmfResultThe result of sending a DTMF digit.
Ivr
propertyIvrInstruction? Ivr { get; }The next IVR step, when the session is inside a flow. null both when
there is no IVR and when the flow has just ended.
Ok
propertybool Ok { get; }Whether the digit was accepted.
VoiceJoinBundle
classclass Inverge.Nexus.Models.VoiceJoinBundleEverything a WebRTC client needs to join a call.
Access
propertyVoiceAccessToken? Access { get; }The access token to join with.
Raw
propertyJsonObject Raw { get; }The bundle as sent.
Region
propertystring? Region { get; }The media region serving the call.
Room
propertystring? Room { get; }The media room name.
Turn
propertyVoiceTurnCredential? Turn { get; }The TURN configuration to use.
VoiceLeg
classclass Inverge.Nexus.Models.VoiceLegOne participant's leg of a call.
Address
propertystring? Address { get; }The dialled address, for SIP and PSTN legs.
Direction
propertystring? Direction { get; }The leg's direction.
EndpointType
propertystring? EndpointType { get; }webrtc, sip, pstn or app.
Id
propertystring? Id { get; }The leg id. Every control call — ring, answer, hold, hangup, mute, transfer — is addressed by this.
IdentityId
propertystring? IdentityId { get; }The identity this leg rings, for app legs.
Raw
propertyJsonObject Raw { get; }The leg record as sent.
Role
propertystring? Role { get; }caller, callee, agent, supervisor, and so on.
SessionId
propertystring? SessionId { get; }The session this leg belongs to.
Status
propertystring? Status { get; }The leg's lifecycle status.
VoiceLegResult
classclass Inverge.Nexus.Models.VoiceLegResultThe outcome of adding a leg to a call.
This endpoint reports failure inside a successful response, which is
the single most surprising thing about the Voice API. A blocked call, a missing
outbound trunk and an unreachable media plane all arrive as 2xx with
Error set, so that the SDK can end the call cleanly instead of
treating a provisioning problem as a crash.
Check IsSuccess, or call EnsureSuccess to turn the
in-body error into an exception.
Dialing
propertyJsonObject? Dialing { get; }For a pstn or sip leg, the room and number being dialled.
Error
propertystring? Error { get; }The in-body error code, when the leg did not come up:
call_blocked (fraud policy refused it),
no_outbound_trunk (no carrier configured for PSTN),
media_unavailable (the media plane is unconfigured or unreachable).
HasNoOutboundTrunk
propertybool HasNoOutboundTrunk { get; }Whether PSTN has no outbound carrier configured.
IsBlocked
propertybool IsBlocked { get; }Whether the fraud policy refused the destination.
IsMediaUnavailable
propertybool IsMediaUnavailable { get; }Whether the media plane could not provision the room.
IsSuccess
propertybool IsSuccess { get; }Whether the leg is actually usable.
Join
propertyVoiceJoinBundle? Join { get; }The join bundle for a webrtc leg. Hand its token and TURN config to
the device SDK.
Leg
propertyVoiceLeg? Leg { get; }The created leg, absent only when the call was blocked outright.
Reason
propertystring? Reason { get; }Why a blocked call was blocked.
RiskScore
propertydouble? RiskScore { get; }The fraud risk score behind a call_blocked decision.
EnsureSuccess()
methodVoiceLegResult EnsureSuccess()Returns this result, or throws if the leg did not come up.
Returns VoiceLegResult
VoicePresenceResult
classclass Inverge.Nexus.Models.VoicePresenceResultAn identity's rolled-up presence after a heartbeat.
Ok
propertybool Ok { get; }Whether the heartbeat was accepted.
Status
propertystring? Status { get; }The identity's status across all its devices — not just the one that
heartbeat. A person on a call on their phone is IN_CALL even while
their laptop reports ONLINE.
VoiceSession
classclass Inverge.Nexus.Models.VoiceSessionA call session — the container every leg belongs to.
ApplicationId
propertystring? ApplicationId { get; }The voice application this session belongs to, when one was given.
Direction
propertystring? Direction { get; }inbound, outbound or internal.
Id
propertystring? Id { get; }The session id, which every leg and control call references.
Metadata
propertyJsonObject? Metadata { get; }Whatever metadata you attached at creation.
Raw
propertyJsonObject Raw { get; }The session record as sent.
RecordingMode
propertystring? RecordingMode { get; }disabled, mixed, dual_channel or per_track.
StartedAt
propertyDateTimeOffset? StartedAt { get; }When the session began.
Status
propertystring? Status { get; }The session's lifecycle status.
VoiceTurnCredential
classclass Inverge.Nexus.Models.VoiceTurnCredentialShort-lived TURN relay credentials for the device to use.
Credential
propertystring? Credential { get; }The TURN credential.
ExpiresAt
propertyDateTimeOffset? ExpiresAt { get; }When it expires.
Raw
propertyJsonObject Raw { get; }The credential record as sent.
TtlSeconds
propertyint TtlSeconds { get; }How long it is valid for.
Urls
propertyIReadOnlyList<string> Urls { get; }The relay URLs. An empty list means TURN is not configured on the backend — calls will still connect wherever a direct path exists and fail behind a symmetric NAT, which is a confusing way to learn about it.
Username
propertystring? Username { get; }The TURN username.
