Common protos

This section contains common proto files.

common_types.proto

AgentInfo

Information about the call center agent receiving the CTI event.

AgentInfo
Field Type Description
agent_id string Optional. Used to distinguish which agent is using the extension at a specific time.
agent_extension string Optional. The extension of the agent receiving the call.

AudioChannelSelector

Message used to select an audio channel when processing media with multiple channels (such as a stereo audio file).

AudioChannelSelector
Field Type Description
channel google.protobuf.Int32Value Mandatory. The channel to select. For stereo, left is channel 1 and right is channel 2. When channel=0, all channels will be selected.

AudioDetails

Information about the audio.

AudioDetails
Field Type Description
gk_media_segment_id UniqueId Optional. Unique ID of the media segment.
gk_processed_audio_id UniqueId Optional. Unique ID of the audio returned by a processing method.
gross_audio google.protobuf.Duration Optional. Amount of gross audio including speech, noise, and silence.
net_audio google.protobuf.Duration Optional. Amount of speech.
snr_db google.protobuf.FloatValue Optional. Signal noise ratio, expressed in decibels.
speech_level google.protobuf.FloatValue Optional. Audio energy level.
saturation_level google.protobuf.FloatValue Optional. Audio saturation level represented as the number of saturated samples in one minute.
media_number_of_channels google.protobuf.Int32Value Optional. Number of audio input channels. Values are 1 for mono and 2 for stereo.
media_sampling_rate_hz google.protobuf.Int32Value Optional. Sampling rate of the input audio in Hertz. Can be different from the one used for processing.
selected_channel AudioChannelSelector Optional. Specifies the processed channel when processing media with multiple channels. This parameter is not set if the media has a single channel.
processed_audio_number_of_channels google.protobuf.Int32Value Optional. Number of audio channels in the processed audio. Values are 1 for mono and 2 for stereo.
processed_audio_sampling_rate_hz google.protobuf.Int32Value Optional. Sampling rate used for processing the audio. Value is in Hertz and can differ from the value of the input audio.
number_of_detected_speakers google.protobuf.Int32Value Optional. Specifies the number of speakers detected in the processed audio. It is available only if segmentation is enabled using the EnableSegmentation configuration parameter.
segmentation_score google.protobuf.FloatValue Optional. Specifies a score between -10 and 10 representing how similar the voices of different speakers are. The higher the score, more similar the voices are. Note that it is available only if segmentation is enabled using the EnableSegmentation configuration parameter and multiple speakers are detected during processing.

CallMetadata

Call-related metadata received from the CTI layer.

CallMetadata
Field Type Description
ani string Optional. Automatic Number Identification received from the CTI layer.
dnis string Optional. Dialed Number Identification Service received from the CTI layer

Context

Defines the context in which the public API method is executed. Some fields may be optional or mandatory depending on the specific API method they are used in. See the method documentation for detailed information on required fields.

Context
Field Type Description
gk_engagement_id UniqueId Unique ID of the engagement, used to aggregate several sessions of the same customer/user engagement with the system.
gk_session_id UniqueId Unique ID of the session, used to aggregate several API methods calls of the same customer/user on the same channel.
gk_scope_id UniqueId Unique ID of the scope the method should operate in.
configset_id string Identifies the active config set to use to control the method’s execution.

CtiEvent

Received CTI call event that describes the detected call operation along with its details.

CtiEvent
Field Type Description
event_type CallEventType Mandatory. The CTI operation type detected.
call_id string Mandatory. Primary call identifier received from the CTI layer, usually unique to the call leg.
call_type CallType Mandatory. Describes the call type of the incoming CTI event.
call_metadata CallMetadata Optional. Call-related metadata received from the CTI layer.
agent_info AgentInfo Mandatory. Information about the call center agent receiving the event.
call_attributes repeated CtiEvent.CallAttributesEntry Optional. Additional call attributes received from the CTI layer.
custom_data repeated CtiEvent.CustomDataEntry Optional. Custom call data received from the CTI layer.
recording_id string Optional. Unique recording ID used as correlation ID with SIPREC.
consumed_timestamp google.protobuf.Timestamp Optional. Date and time when the event was consumed by the service.

CtiEvent.CallAttributesEntry

CtiEvent.CallAttributesEntry
Field Type Description
key string  
value string  

CtiEvent.CustomDataEntry

CtiEvent.CustomDataEntry
Field Type Description
key string  
value string  

ListOfUniqueId

List of unique IDs.

ListOfUniqueId
Field Type Description
unique_ids repeated UniqueId Optional. Repeated, list of Unique IDs.

Member

Contains member details. A member can either be a user or a group that is granted permissions to operate in the system. Some fields may be optional or mandatory depending on the specific API method they are used in. A member is identified by the sub and issuer claims in the OIDC token or by a user name (typically an email address).

Member
Field Type Description
One of member_id:  
   external_id string Mandatory. The client ID or group ID, depending on the member type.
   member_name string Mandatory. Well-known user name, typically an email address.
issuer string Mandatory. Identifies the token issuer.
type MemberType Optional or Mandatory according to specific cases. Indicates the member type.
label string Optional. Indicates a readable association for types client and group
last_visit google.protobuf.Timestamp Optional. ReadOnly. Timestamp of member last visit.

RiskEngineResult

Results computed by the risk engine. The system assesses the risk associated with one or more factors used in a session based on two scores returned by the AI Risk Engine: reliability and risk. When the reliability is too low, the decision is uncertain. When the reliability is high enough, the decision is taken based on the risk score. A high risk score indicates that this is a fraud attack, while a low risk score indicates that the interaction is with an authentic person. Risk scores that are not high enough or low enough indicate that this is not the expected person, but not necessarily a fraud attack.

RiskEngineResult
Field Type Description
risk google.protobuf.Int32Value Optional. A number between 0 and 1000 that represents the risk level (The higher number means the higher risk).
reliability google.protobuf.Int32Value Optional. A number between 0 and 100 that represents the level of confidence in the risk score.

UniqueId

Defines unique identifier for various system entities.

UniqueId
Field Type Description
value string The unique ID as String.

UniqueIdAndTag

A combination of entity ID and a tag, used to specify a print or set of prints associated with an entity filtered by the tag.

UniqueIdAndTag
Field Type Description
unique_id UniqueId Unique ID.
tag string Optional. The tag filter.

AudioValidity

Audio validity and the reason that the audio segment is not valid (when relevant).

Name Number Description
REASON_UNSPECIFIED 0 Use to initialize the fields.
REASON_AUDIO_OK 1 Audio is satisfactory for processing.
REASON_NOT_ENOUGH_SEGMENTS 2 The number of audio segments provided is not enough for processing.
REASON_INVALID_AUDIO 3 Audio format is invalid or not supported.
REASON_AUDIO_TOO_SHORT 4 Audio does not contain the amount of speech required to complete the process.
REASON_AUDIO_TOO_SOFT 5 Audio speech level is lower than the level required to complete the process.
REASON_AUDIO_TOO_LOUD 6 Audio is too loud and causes saturation.
REASON_AUDIO_TOO_NOISY 7 Audio SNR is too low.
REASON_MULTIPLE_SPEAKERS_DETECTED 8 Multiple speakers detected in the audio instead of one speaker.
REASON_INTERNAL_ERROR 999 An internal error prevented the system from checking if the audio is valid or not.

CallEventType

The CTI operation type detected.

Name Number Description
CALL_EVENT_UNSPECIFIED 0 Call Event Type is not specified.
CALL_STARTED 1 A call is established.
CALL_ENDED 2 A call is ended.
CALL_HOLD 3 The call is put on hold (pause).
CALL_RESUMED 4 The call is retrieved or resumed from pause.
CALL_PARTY_ADDED 5 Another party has been added to the conference.
CALL_PARTY_DELETED 6 Another party has been removed from the conference.
CALL_DATA_UPDATED 7 Call data changed.
AUDIO_CHANNEL_CHANGED 8 The audio channel information has changed.

CallType

The phone call type.

Name Number Description
CALL_TYPE_UNSPECIFIED 0 The call type is not specified.
CALL_TYPE_INBOUND 1 An incoming call from an external party (a customer) to an agent.
CALL_TYPE_OUTBOUND 2 An outgoing call from an agent to an external party (a customer).
CALL_TYPE_EXTERNAL 3 A call occurring between with an external party (a customer) and an agent. Can either be but we are not able to differentiate between an inbound or an outbound calls.
CALL_TYPE_INTERNAL 4 A call between two agents.
CALL_TYPE_CONSULT 5 An internal call occurring between two agents. Another call that was in progress was put on hold.
CALL_TYPE_TRANSFER 6 A call in progress with an external party that has been was transferred to another agent.
CALL_TYPE_CONFERENCE 7 A call occurring with between an external party and two or more agents.

CallerIdRiskLevel

The caller ID risk level.

Name Number Description
CALLER_ID_RISK_LEVEL_UNSPECIFIED 0 Risk level is not set.
CALLER_ID_RISK_LEVEL_NO_RISK 1 No Risk.
CALLER_ID_RISK_LEVEL_LOW 2 Risk level is low.
CALLER_ID_RISK_LEVEL_MEDIUM 3 Risk level is medium.
CALLER_ID_RISK_LEVEL_HIGH 4 Risk level is high.

Decision

Various types of decision. Could be factor specific decision or session decision made based on multiple factors.

Name Number Description
DECISION_UNSPECIFIED 0 Decision not set.
DECISION_AUTHENTIC 1 Most likely to be the authentic person.
DECISION_NO_MATCH 2 Most likely not to be the authentic person but rather someone else.
DECISION_FRAUD 3 Most likely to be a fraud attempt.
DECISION_UNCERTAIN 4 System cannot make a reliable decision.
DECISION_FAILED 5 There was a failure while making the decision.
DECISION_NO_RISK_DETECTED 6 No risk was detected.

EngagementVerdict

The engagement’s verdict set by the fraud analyst to specify the result of the analysis.

Name Number Description
ENGAGEMENT_VERDICT_UNSPECIFIED 0 Engagement’s verdict is not set.
ENGAGEMENT_VERDICT_AUTHENTIC 1 Engagement’s verdict is authentic.
ENGAGEMENT_VERDICT_FRAUD 2 Engagement’s verdict is fraud.
ENGAGEMENT_VERDICT_SOMEONE_ELSE 3 Engagement’s verdict is someone else.
ENGAGEMENT_VERDICT_UNCERTAIN 4 Engagement’s verdict is inconclusive.

Gender

A person’s gender.

Name Number Description
GENDER_UNSPECIFIED 0 Gender is not specified.
GENDER_MALE 1 Gender is male.
GENDER_FEMALE 2 Gender is female.
GENDER_UNKNOWN 3 Gender is unknown.
GENDER_NON_BINARY 4 Gender is nonbinary.

LockReason

The standard lock reasons.

Name Number Description
LOCK_REASON_UNSPECIFIED 0 Use to initialize the fields.
LOCK_REASON_CONSECUTIVE_MISMATCHES 1 The print is locked due to too many consecutive mismatches
LOCK_REASON_OTHER 100 The print is locked due to a reason that is not standard. Details on the reason are available in another field.

LockStatus

The print lock status.

Name Number Description
LOCK_STATUS_UNSPECIFIED 0 Print lock status is not specified.
LOCK_STATUS_UNLOCKED 1 Print can be used for verification.
LOCK_STATUS_LOCKED 2 Print is locked and cannot be used for verification.

MemberType

Enumerator for the different members types.

Name Number Description
MEMBER_TYPE_UNSPECIFIED 0 Member type is not set.
MEMBER_TYPE_USER 1 Member is an interactive user (human).
MEMBER_TYPE_CLIENT 2 Member is an applicative client (application).
MEMBER_TYPE_GROUP 3 Member is a group of users.

OwnerType

A print profile owner type.

Name Number Description
OWNER_TYPE_UNSPECIFIED 0 Owner type is not specified.
OWNER_TYPE_PERSON 1 Owner type is person.
OWNER_TYPE_FRAUDSTER 2 Owner type is fraudster.

PrintType

The possible print types

Name Number Description
PRINT_TYPE_UNSPECIFIED 0 Use to initialize the fields.
PRINT_TYPE_VOICEPRINT 1 Voiceprint is the print that identifies a voice.
PRINT_TYPE_DEVICEPRINT 2 Deviceprint is the print that identifies a device.
PRINT_TYPE_CONVOPRINT 3 Convoprint is the print that identifies a person in a conversation.

SessionIntent

The session’s main purpose.

Name Number Description
SESSION_INTENT_UNSPECIFIED 0 Intent is not specified.
SESSION_INTENT_OPT_OUT 1 The person status is opted out or an opt out is performed (with or without fraud detection).
SESSION_INTENT_ENROLLMENT 2 Any time prints are enrolled. This remains an enrollment intent, even if other factors are executed.
SESSION_INTENT_ADAPTATION 3 Voiceprint adaptation is performed following a verification match result (note that this context is not set if the verification match audio has insufficient net audio or did not pass an additional verification check).
SESSION_INTENT_VERIFICATION 4 Any time prints are verified or identified. The intent remains verification, even if other non-enrollment factors or detect known fraudsters are performed.
SESSION_INTENT_FRAUD 5 Any time detect known fraudsters (any type) is performed without enrollment, verification, or other factors.
SESSION_INTENT_FRAUD_DETECTION 6 Any time detect known fraudsters (any type) is performed without enrollment, verification, or other factors.
SESSION_INTENT_ORPHAN 998 The context when no claimed identity is provided.
SESSION_INTENT_OTHER 999 The default context when no other context applies (for example, session only processed the audio or transcribed it).

SessionType

The possible session types associated with each session. A session is classified as either online session or offline session. Online session represents a interactive session with the end customer (person). Offline session represents activities done offline by application, system administrator, or fraud analyst. For more information about a session, refer to product specifications.

Name Number Description
SESSION_TYPE_UNSPECIFIED 0 Session type not set.
SESSION_TYPE_CALL_CENTER 1 Call center Session.
SESSION_TYPE_IVR 2 Self service IVR (Interactive Voice Response) session.
SESSION_TYPE_DIGITAL 3 Interactive mobile or web session.
SESSION_TYPE_FRAUD_ANALYST 500 Fraud analyst session. This is for internal use only.
SESSION_TYPE_ADMINISTRATION 501 Administrator session. This is for internal use only.
SESSION_TYPE_OFFLINE_MEDIA_PROCESSING 502 Batch media processing session.
SESSION_TYPE_WEB 503 A web session. This is for internal use only.
SESSION_TYPE_POST_CALL 504 A post call workflow session. This is for internal use only.
SESSION_TYPE_PRE_CALL 505 A pre call workflow session. This is for internal use only.
SESSION_TYPE_OTHER 999 Any other session type doesn’t fall under any of the other categories.

TrainReason

Train operation result.

Name Number Description
TRAIN_REASON_UNSPECIFIED 0 Train status is not set.
TRAIN_REASON_TRAIN_OK 1 Train completed successfully.
TRAIN_REASON_INCONSISTENCY 2 Train failed due to inconsistent audio segments (Segments seem to belong to different people).
TRAIN_REASON_NOT_READY_TO_TRAIN 3 Train failed because the number of segments in the enrollment segments collection is too small, or because the segments do not contain enough usable audio.
TRAIN_REASON_INTERNAL_ERROR 999 An internal error prevented the system from completing the operation.

TrainStatus

Train operation status.

Name Number Description
TRAIN_STATUS_UNSPECIFIED 0 Train status is not set.
TRAIN_STATUS_TRAINED 1 The print is trained successfully.
TRAIN_STATUS_FAILED 2 The training process failed.

error_details.proto

DiagnosticDetail

Diagnostic detail contains a unique code and detailed information for troubleshooting an error

DiagnosticDetail
Field Type Description
code string Required. Unique code linked to a specific issue.
extras repeated DiagnosticDetail.ExtrasEntry Optional. Extra application-specific information provided as map. e.g.: configSetId=abc, watchlistId=xyz

DiagnosticDetail.ExtrasEntry

DiagnosticDetail.ExtrasEntry
Field Type Description
key string  
value string  

FieldViolation

Information about a field or fields containing errors.

FieldViolation
Field Type Description
field string Required. The name of the field in violation as package.type[.type].field.
rel_field repeated string Optional. The names of related fields in violation as: package.type[.type].field.
user_message LocalizedMessage Optional. An error message in a language other than English.
message string Required. An error message in American English.
invalid_value string Optional. The invalid value of the field in violation. (Convert non-string data types to string.)
violation FieldViolation.ViolationType Required. The reason (enum) a field is invalid. Can be used for automated error handling by the client.

HelpInfo

A reference to a help document that may be shown to end users to allow them to take action based on the error or status response. For example, if the request contained a numerical value that is out of range, this message may point to the documentation that states the valid range.

HelpInfo
Field Type Description
links repeated HelpInfo.Hyperlink Optional. Set of links related to the enclosing message.

A link to a help message, including a localized description of the link.

HelpInfo.Hyperlink
Field Type Description
description LocalizedMessage Optional. A description of the link in a specific language (locale). By default, the server handling the URL manages language selection and detection.
url string Mandatory. The URL to offer to the client, containing help information. If a description is present, this URL should use (or offer) the same locale.

LocalizedMessage

A help message in a language other than American English. The default locale is provided by the server, for example the browser’s preferred language or a user-specific locale. All Nuance gRPC APIs that want the server to provide localized errors must accept the HTTP “Accept-Language” header or application-specific language settings, if supported.

LocalizedMessage
Field Type Description
locale string Required. The locale used following the specification defined at https://www.rfc-editor.org/info/rfc5646  . Examples are: “en-US”, “fr-CH”, “es-MX”
message string Required. The message text in the locale specified.
message_resource_id string Optional. A message identifier, allowing related messages to be provided if needed.

RequestInfo

Information about the request that resulted in an error. This information is particularly useful in streaming scenarios, in which the connection between the request and response may not be obvious.

RequestInfo
Field Type Description
request_id string Mandatory. Identifier of the original request, for example its OpenTracing ID.
request_data string Optional. Relevant free format data from the original request, for troubleshooting.
additional_request_data repeated RequestInfo .AdditionalRequestDataEntry Optional. Map of key,value pairs of free format data from the request.

RequestInfo.AdditionalRequestDataEntry

RequestInfo.AdditionalRequestDataEntry
Field Type Description
key string  
value string  

RetryInfo

How quickly clients may retry the request for requests that allow retries. Failure to respect this delay may indicate a misbehaving client.

RetryInfo
Field Type Description
retry_delay_ms int32 Mandatory. Clients should wait at least this long between retrying the same request.

StatusDetail

A status message may have additional details. Usually those details would represent a list of underlying causes for the status (typically an error). These details are different from the field violations. The field violations point to the fields in the original request while these details are usually expected not to be directly connected with the request parameters.

StatusDetail
Field Type Description
message string Optional. US English message.
user_message LocalizedMessage Optional. Localized status detail message.
extras repeated StatusDetail.ExtrasEntry Optional. Extra application-specific information provided as map.

StatusDetail.ExtrasEntry

StatusDetail.ExtrasEntry
Field Type Description
key string  
value string  

FieldViolation.ViolationType

Name Number Description
MANDATORY_FIELD_MISSING 0 A required field was not provided.
FIELD_CONFLICT 1 A field is invalid due to the value of another field.
OUT_OF_RANGE 2 A field value is outside the specified range.
INVALID_FORMAT 3 A field value is not in the correct format.
TOO_SHORT 4 A text field value is too short.
TOO_LONG 5 A text field value is too long.
OTHER 64 Violation type is not otherwise listed.
UNSPECIFIED 99 Violation type was not set.

Scalar value types

The data types in the proto files are mapped to equivalent types in the generated client stub files.

Scalar data types
Proto Notes C++ Java Python
double double double float
float float float float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers. If your field is likely to have negative values, use sint32 instead. int32 int int
int64 Uses variable-length encoding. Inefficient for encoding negative numbers. If your field is likely to have negative values, use sint64 instead. int64 long int/long
uint32 Uses variable-length encoding. uint32 int int/long
uint64 Uses variable-length encoding. uint64 long int/long
sint32 Uses variable-length encoding. Signed int value. These encode negative numbers more efficiently than regular int32s. int32 int int
sint64 Uses variable-length encoding. Signed int value. These encode negative numbers more efficiently than regular int64s. int64 long int/long
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long
sfixed32 Always four bytes. int32 int int
sfixed64 Always eight bytes. int64 long int/long
bool bool boolean boolean
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode
bytes May contain any arbitrary sequence of bytes. string ByteString str

Google variables:

Proto Notes
google.protobuf.Duration A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like “day” or “month”. It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years.
google.protobuf.Int64Value Wrapper message for int64.
google.protobuf.Int32Value Wrapper message for int32.
google.protobuf.BoolValue Wrapper message for bool.
google.protobuf.FloatValue Wrapper message for float.
google.protobuf.FieldMask FieldMask represents a set of symbolic field paths. See Guidelines for using API data types.
google.protobuf.StringValue Wrapper message for a string.
google.protobuf.Timestamp A Timestamp represents a point in time independent of any time zone or calendar, represented as seconds and fractions of seconds at nanosecond resolution in UTC Epoch time.
google.protobuf.UInt32Value Wrapper message for a uint32.

status.proto

Status

Common status message. The status_code field is mandatory, all others are optional.

Status
Field Type Description
status_code StatusCode Mandatory. Status code, enum value from [nuance.rpc.StatusCodes].
status_sub_code int32 Optional. Application-specific status sub-code.
http_trans_code int32 Optional. HTTP status code for the transcoder, if applicable.
request_info RequestInfo Optional. Information about the original request.
status_message LocalizedMessage Optional. Message providing the details of this status.
help_info HelpInfo Optional. Help message providing the possible user action(s).
field_violations repeated FieldViolation Optional. Set of field violations.
retry_info RetryInfo Optional. Retry information, if offered.
status_details repeated StatusDetail Optional. Detailed status messages.
diagnostic_details repeated DiagnosticDetail Optional. Detailed diagnostic info. If more than one is returned, the order does not indicate the order of operations.

status_code.proto

StatusCode

A set of global status codes to be commonly used by compliant Nuance APIs. These codes are purposely misaligned with HTTP status codes to avoid any unwanted associations.

For some of these codes, you may prefer to use a method-specific response. For example, instead of the generic NOT_FOUND or ALREADY_EXISTS, you may return a more specific message.

Name Number Description
UNSPECIFIED 0 Unspecified status.
OK 1 Success.
BAD_REQUEST 2 Invalid message type: the server cannot understand the request.
INVALID_REQUEST 3 The request has an invalid value, is missing a mandatory field, etc.
CANCELLED_CLIENT 4 Operation terminated by client. The remote system may have changed.
CANCELLED_SERVER 5 Operation terminated by server. The remote system may have changed.
DEADLINE_EXCEEDED 6 The deadline set for the operation has expired.
NOT_AUTHORIZED 7 The client does not have authorization to perform the operation.
PERMISSION_DENIED 8 The client does not have authorization to perform the operation on the requested entities.
NOT_FOUND 9 The requested entity was not found.
ALREADY_EXISTS 10 Cannot create entity as it already exists.
NOT_IMPLEMENTED 11 Unsupported operation or parameter, e.g. an unsupported media type.
UNKNOWN 15 Result does not map to any defined status. Other response values may provide request-specific additional information.
TOO_LARGE 51 A field is too large to be processed due to technical limitations e.g. a large audio or other binary block. For arbitrary limitations (e.g. name must be n characters or less), use INVALID_REQUEST.
BUSY 52 Server understood the request but could not process it due to lack of resources. Retry the request as is later.
OBSOLETE 53 A message type in the request is no longer supported.
RATE_EXCEEDED 54 Similar to BUSY. The client has exceeded the limit of operations per time unit. Retry request as is later.
QUOTA_EXCEEDED 55 The client has exceeded quotas related to licensing or payment. See your client representative for additional quotas.
INTERNAL_ERROR 56 An internal system error occurred while processing the request.

Oneof field

The oneof field defines a set of mutually exclusive fields in a protocol buffer message. Only one field from the set can be specified at a time, providing a more efficient way to represent a choice between multiple options in the message.

For example, in the following table that defines the ListCallSessionsRequest method, only agent_id or agent_extension can be set:

ListCallSessionsRequest
Field Type Description
context nuance.biosec.v1.Context Mandatory. General request context. Only the Gatekeeper scope ID is a mandatory field in the context message.
One of agent_selector:
   agent_id string Mandatory. The agent user name as it is used for the single sign-on.
   agent_extension string Mandatory. The agent extension used by the agent during the login to the Web Agent Console.

See https://protobuf.dev/programming-guides/proto3/#oneof  for details.