From 6d1ed805e2ad5e661ea2988a86095ace3ebf1ad7 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 3 Sep 2026 20:35:21 +0800 Subject: [PATCH 01/29] Add realtime voice agent WebSocket support Co-Authored-By: Claude --- sdk/ai/azure-ai-agents/CHANGELOG.md | 2 + sdk/ai/azure-ai-agents/README.md | 35 + .../src/main/java/AgentsCustomizations.java | 590 +++++++---------- sdk/ai/azure-ai-agents/pom.xml | 30 + .../azure/ai/agents/AgentsAsyncClient.java | 4 +- .../com/azure/ai/agents/AgentsClient.java | 4 +- .../azure/ai/agents/AgentsClientBuilder.java | 123 +++- .../BetaVoiceAgentWebSocketAsyncClient.java | 53 ++ .../agents/BetaVoiceAgentWebSocketClient.java | 49 ++ ...VoiceAgentWebSocketSessionAsyncClient.java | 624 ++++++++++++++++++ .../VoiceAgentWebSocketSessionClient.java | 184 ++++++ .../implementation/AgentsClientImpl.java | 30 + .../ai/agents/implementation/AgentsImpl.java | 16 +- ...oiceAgentWebSocketClientConfiguration.java | 97 +++ .../VoiceAgentWebSocketHandshakeHandler.java | 42 ++ .../VoiceAgentWebSocketHttpResponse.java | 87 +++ .../ai/agents/models/AudioTranscription.java | 298 +++++++++ .../models/AudioTranscriptionModel.java | 94 +++ .../CreateTranscriptionResponseJsonUsage.java | 110 +++ ...ateTranscriptionResponseJsonUsageType.java | 58 ++ .../ai/agents/models/FileInputDetail.java | 61 ++ .../azure/ai/agents/models/ImageDetail.java | 66 ++ .../ai/agents/models/InputFileContent.java | 273 ++++++++ .../ai/agents/models/InputImageContent.java | 203 ++++++ .../ai/agents/models/InputTextContent.java | 135 ++++ .../ai/agents/models/LogProbProperties.java | 127 ++++ .../ai/agents/models/NoiseReductionType.java | 57 ++ .../PickPropertiesVoiceAgentAudioConfig.java | 93 +++ .../com/azure/ai/agents/models/Prompt.java | 150 +++++ .../models/PromptCacheBreakpointConfig.java | 78 +++ .../ai/agents/models/RealtimeClientEvent.java | 129 ++++ ...timeClientEventConversationItemCreate.java | 188 ++++++ ...timeClientEventConversationItemDelete.java | 141 ++++ ...meClientEventConversationItemRetrieve.java | 142 ++++ ...meClientEventConversationItemTruncate.java | 196 ++++++ ...timeClientEventInputAudioBufferAppend.java | 150 +++++ ...ltimeClientEventInputAudioBufferClear.java | 112 ++++ ...timeClientEventInputAudioBufferCommit.java | 115 ++++ ...timeClientEventOutputAudioBufferClear.java | 115 ++++ .../RealtimeClientEventResponseCancel.java | 149 +++++ .../RealtimeClientEventResponseCreate.java | 162 +++++ .../RealtimeClientEventSessionUpdate.java | 155 +++++ ...eClientEventSessionUpdateSessionModel.java | 173 +++++ ...entSessionUpdateSessionOutputModality.java | 57 ++ ...ntEventSessionUpdateSessionTruncation.java | 57 ++ ...tEventSessionUpdateSessionTruncation1.java | 136 ++++ .../models/RealtimeClientEventType.java | 123 ++++ .../models/RealtimeConversationItem.java | 118 ++++ .../RealtimeConversationItemMessage.java | 128 ++++ ...ltimeConversationItemMessageAssistant.java | 268 ++++++++ ...nversationItemMessageAssistantContent.java | 187 ++++++ ...sationItemMessageAssistantContentType.java | 57 ++ ...onversationItemMessageAssistantStatus.java | 62 ++ ...RealtimeConversationItemMessageSystem.java | 271 ++++++++ ...eConversationItemMessageSystemContent.java | 124 ++++ ...versationItemMessageSystemContentType.java | 52 ++ ...meConversationItemMessageSystemStatus.java | 61 ++ .../RealtimeConversationItemMessageType.java | 64 ++ .../RealtimeConversationItemMessageUser.java | 267 ++++++++ ...imeConversationItemMessageUserContent.java | 250 +++++++ ...versationItemMessageUserContentDetail.java | 62 ++ ...onversationItemMessageUserContentType.java | 62 ++ ...timeConversationItemMessageUserStatus.java | 61 ++ .../agents/models/RealtimeFunctionTool.java | 194 ++++++ .../ai/agents/models/RealtimeReasoning.java | 92 +++ .../models/RealtimeReasoningEffort.java | 72 ++ .../ai/agents/models/RealtimeServerEvent.java | 231 +++++++ ...ealtimeServerEventConversationCreated.java | 128 ++++ ...rEventConversationCreatedConversation.java | 101 +++ ...ConversationCreatedConversationObject.java | 52 ++ ...ltimeServerEventConversationItemAdded.java | 156 +++++ ...imeServerEventConversationItemCreated.java | 156 +++++ ...imeServerEventConversationItemDeleted.java | 129 ++++ ...altimeServerEventConversationItemDone.java | 150 +++++ ...nItemInputAudioTranscriptionCompleted.java | 277 ++++++++ ...ationItemInputAudioTranscriptionDelta.java | 194 ++++++ ...tionItemInputAudioTranscriptionFailed.java | 177 +++++ ...temInputAudioTranscriptionFailedError.java | 143 ++++ ...ionItemInputAudioTranscriptionSegment.java | 263 ++++++++ ...eServerEventConversationItemRetrieved.java | 129 ++++ ...eServerEventConversationItemTruncated.java | 197 ++++++ .../models/RealtimeServerEventErrorError.java | 169 +++++ ...imeServerEventInputAudioBufferCleared.java | 106 +++ ...eServerEventInputAudioBufferCommitted.java | 151 +++++ ...ventInputAudioBufferDtmfEventReceived.java | 131 ++++ ...verEventInputAudioBufferSpeechStarted.java | 163 +++++ ...verEventInputAudioBufferSpeechStopped.java | 155 +++++ ...EventInputAudioBufferTimeoutTriggered.java | 186 ++++++ ...ltimeServerEventMCPListToolsCompleted.java | 127 ++++ ...RealtimeServerEventMCPListToolsFailed.java | 127 ++++ ...timeServerEventMCPListToolsInProgress.java | 127 ++++ ...meServerEventOutputAudioBufferCleared.java | 131 ++++ ...meServerEventOutputAudioBufferStarted.java | 130 ++++ ...meServerEventOutputAudioBufferStopped.java | 130 ++++ .../RealtimeServerEventRateLimitsUpdated.java | 133 ++++ ...erverEventRateLimitsUpdatedRateLimits.java | 141 ++++ ...rEventRateLimitsUpdatedRateLimitsName.java | 57 ++ ...meServerEventRealtimeServerEventError.java | 129 ++++ ...RealtimeServerEventResponseAudioDelta.java | 218 ++++++ .../RealtimeServerEventResponseAudioDone.java | 195 ++++++ ...rverEventResponseAudioTranscriptDelta.java | 217 ++++++ ...erverEventResponseAudioTranscriptDone.java | 219 ++++++ ...meServerEventResponseContentPartAdded.java | 218 ++++++ ...rverEventResponseContentPartAddedPart.java | 138 ++++ ...EventResponseContentPartAddedPartType.java | 57 ++ ...imeServerEventResponseContentPartDone.java | 218 ++++++ ...erverEventResponseContentPartDonePart.java | 158 +++++ ...rEventResponseContentPartDonePartType.java | 57 ++ .../RealtimeServerEventResponseCreated.java | 128 ++++ .../RealtimeServerEventResponseDone.java | 133 ++++ ...entResponseFunctionCallArgumentsDelta.java | 218 ++++++ ...ventResponseFunctionCallArgumentsDone.java | 241 +++++++ ...verEventResponseMCPCallArgumentsDelta.java | 215 ++++++ ...rverEventResponseMCPCallArgumentsDone.java | 195 ++++++ ...meServerEventResponseMCPCallCompleted.java | 149 +++++ ...ltimeServerEventResponseMCPCallFailed.java | 149 +++++ ...eServerEventResponseMCPCallInProgress.java | 149 +++++ ...imeServerEventResponseOutputItemAdded.java | 172 +++++ ...timeServerEventResponseOutputItemDone.java | 173 +++++ .../RealtimeServerEventResponseTextDelta.java | 217 ++++++ .../RealtimeServerEventResponseTextDone.java | 217 ++++++ .../RealtimeServerEventSessionCreated.java | 154 +++++ .../RealtimeServerEventSessionUpdated.java | 130 ++++ .../models/RealtimeServerEventType.java | 441 +++++++++++++ .../RealtimeSessionCreateRequestGA.java | 582 ++++++++++++++++ .../RealtimeSessionCreateRequestGAAudio.java | 125 ++++ ...ltimeSessionCreateRequestGAAudioInput.java | 189 ++++++ ...eateRequestGAAudioInputNoiseReduction.java | 94 +++ ...timeSessionCreateRequestGAAudioOutput.java | 161 +++++ ...essionCreateRequestGAAudioOutputVoice.java | 83 +++ ...RealtimeSessionCreateRequestGATracing.java | 164 +++++ .../RealtimeSessionCreateRequestUnion.java | 110 +++ ...RealtimeSessionCreateRequestUnionType.java | 58 ++ ...meTranscriptionSessionCreateRequestGA.java | 151 +++++ ...nscriptionSessionCreateRequestGAAudio.java | 94 +++ ...ptionSessionCreateRequestGAAudioInput.java | 191 ++++++ ...eateRequestGAAudioInputNoiseReduction.java | 95 +++ .../agents/models/RealtimeTurnDetection.java | 118 ++++ .../RealtimeTurnDetectionSemanticVad.java | 176 +++++ .../RealtimeTurnDetectionServerVad.java | 270 ++++++++ .../models/RealtimeTurnDetectionType.java | 57 ++ .../models/ResponsePromptVariables.java | 114 ++++ .../azure/ai/agents/models/TokenLimits.java | 90 +++ .../ai/agents/models/ToolChoiceOptions.java | 67 ++ .../models/TranscriptTextUsageDuration.java | 112 ++++ .../models/TranscriptTextUsageTokens.java | 172 +++++ ...criptTextUsageTokensInputTokenDetails.java | 101 +++ .../agents/models/TranscriptionLanguage.java | 82 +++ .../models/VoiceAgentAnimationConfig.java | 125 ++++ .../models/VoiceAgentAnimationOutputType.java | 56 ++ .../models/VoiceAgentAvatarIceServer.java | 150 +++++ ...VoiceAgentClientEventRtcCallSdpCreate.java | 174 +++++ ...eAgentClientEventSessionAvatarConnect.java | 138 ++++ .../models/VoiceAgentFunctionToolType.java | 51 ++ .../models/VoiceAgentRealtimeResponse.java | 319 +++++++++ .../VoiceAgentRealtimeResponseBase.java | 391 +++++++++++ .../VoiceAgentResponseCreateParams.java | 539 +++++++++++++++ ...AgentResponseCreateParamsConversation.java | 58 ++ .../models/VoiceAgentRtcCallErrorDetails.java | 131 ++++ ...ventResponseAnimationBlendshapesDelta.java | 242 +++++++ ...EventResponseAnimationBlendshapesDone.java | 173 +++++ ...rverEventResponseAnimationVisemeDelta.java | 244 +++++++ ...erverEventResponseAnimationVisemeDone.java | 195 ++++++ ...erverEventResponseAudioTimestampDelta.java | 287 ++++++++ ...ServerEventResponseAudioTimestampDone.java | 195 ++++++ ...iceAgentServerEventResponseVideoDelta.java | 171 +++++ .../VoiceAgentServerEventRtcCallError.java | 168 +++++ ...oiceAgentServerEventRtcCallSdpCreated.java | 149 +++++ ...entServerEventSessionAvatarConnecting.java | 127 ++++ ...tServerEventSessionAvatarSwitchToIdle.java | 126 ++++ ...verEventSessionAvatarSwitchToSpeaking.java | 127 ++++ ...gentServerEventSessionSubagentAborted.java | 195 ++++++ ...ntServerEventSessionSubagentCompleted.java | 172 +++++ ...gentServerEventSessionSubagentStarted.java | 172 +++++ .../models/VoiceAgentServerEventWarning.java | 127 ++++ .../VoiceAgentServerEventWarningDetails.java | 127 ++++ .../models/VoiceAgentSessionAvatarConfig.java | 212 ++++++ .../VoiceAgentSessionResponseConfig.java | 496 ++++++++++++++ .../models/VoiceAgentSessionUpdateConfig.java | 564 ++++++++++++++++ .../models/VoiceAgentSubagentAbortReason.java | 81 +++ .../models/VoiceAgentTranscriptionPhrase.java | 201 ++++++ .../models/VoiceAgentTranscriptionWord.java | 135 ++++ .../VoiceAgentWebSocketConnectionOptions.java | 137 ++++ .../ai/agents/models/VoiceIdsShared.java | 105 +++ .../models/VoiceResponseBaseObject1.java | 51 ++ .../src/main/java/module-info.java | 13 +- .../META-INF/azure-ai-agents_metadata.json | 2 +- ...AgentLiveAudioConversationAsyncSample.java | 248 +++++++ .../VoiceAgentLiveFunctionToolSample.java | 165 +++++ ...eAgentLiveTextConversationAsyncSample.java | 142 ++++ .../VoiceAgentLiveTextConversationSample.java | 155 +++++ .../voice/VoiceAgentRealtimeSampleUtils.java | 152 +++++ .../VoiceAgentWebSocketSessionTests.java | 367 ++++++++++ .../resources/websocket-localhost-cert.pem | 19 + .../resources/websocket-localhost-key.pem | 28 + sdk/ai/azure-ai-agents/tsp-location.yaml | 39 +- sdk/ai/cspell.yml | 3 + 197 files changed, 29566 insertions(+), 411 deletions(-) create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaVoiceAgentWebSocketAsyncClient.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaVoiceAgentWebSocketClient.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionAsyncClient.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionClient.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketClientConfiguration.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketHandshakeHandler.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketHttpResponse.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AudioTranscription.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AudioTranscriptionModel.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTranscriptionResponseJsonUsage.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTranscriptionResponseJsonUsageType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/FileInputDetail.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ImageDetail.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/InputFileContent.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/InputImageContent.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/InputTextContent.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/LogProbProperties.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/NoiseReductionType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PickPropertiesVoiceAgentAudioConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/Prompt.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PromptCacheBreakpointConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEvent.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemCreate.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemDelete.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemRetrieve.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemTruncate.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferAppend.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferClear.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferCommit.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventOutputAudioBufferClear.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventResponseCancel.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventResponseCreate.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdate.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionModel.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionOutputModality.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionTruncation.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionTruncation1.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItem.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessage.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistant.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantContent.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantContentType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantStatus.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystem.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemContent.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemContentType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemStatus.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUser.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContent.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContentDetail.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContentType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserStatus.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeFunctionTool.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeReasoning.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeReasoningEffort.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEvent.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreated.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreatedConversation.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreatedConversationObject.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemAdded.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemCreated.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemDeleted.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemDone.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionCompleted.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionDelta.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionFailed.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionFailedError.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionSegment.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemRetrieved.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemTruncated.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventErrorError.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferCleared.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferCommitted.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferDtmfEventReceived.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferSpeechStarted.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferSpeechStopped.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferTimeoutTriggered.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsCompleted.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsFailed.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsInProgress.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferCleared.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferStarted.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferStopped.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdated.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdatedRateLimits.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdatedRateLimitsName.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRealtimeServerEventError.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioDelta.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioDone.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioTranscriptDelta.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioTranscriptDone.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAdded.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAddedPart.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAddedPartType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDone.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDonePart.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDonePartType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseCreated.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseDone.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseFunctionCallArgumentsDelta.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseFunctionCallArgumentsDone.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallArgumentsDelta.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallArgumentsDone.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallCompleted.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallFailed.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallInProgress.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseOutputItemAdded.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseOutputItemDone.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseTextDelta.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseTextDone.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventSessionCreated.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventSessionUpdated.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGA.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudio.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioInput.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioInputNoiseReduction.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioOutput.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioOutputVoice.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGATracing.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestUnion.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestUnionType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGA.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudio.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudioInput.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetection.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionSemanticVad.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionServerVad.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ResponsePromptVariables.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TokenLimits.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceOptions.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptTextUsageDuration.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptTextUsageTokens.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptTextUsageTokensInputTokenDetails.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptionLanguage.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAnimationConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAnimationOutputType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarIceServer.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentClientEventRtcCallSdpCreate.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentClientEventSessionAvatarConnect.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentFunctionToolType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentRealtimeResponse.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentRealtimeResponseBase.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentResponseCreateParams.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentResponseCreateParamsConversation.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentRtcCallErrorDetails.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationBlendshapesDelta.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationBlendshapesDone.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationVisemeDelta.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationVisemeDone.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAudioTimestampDelta.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAudioTimestampDone.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseVideoDelta.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventRtcCallError.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventRtcCallSdpCreated.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarConnecting.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarSwitchToIdle.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarSwitchToSpeaking.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentAborted.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentCompleted.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentStarted.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventWarning.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventWarningDetails.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionAvatarConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionResponseConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionUpdateConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentAbortReason.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTranscriptionPhrase.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTranscriptionWord.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentWebSocketConnectionOptions.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceIdsShared.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseObject1.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveAudioConversationAsyncSample.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveFunctionToolSample.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationAsyncSample.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationSample.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentRealtimeSampleUtils.java create mode 100644 sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/VoiceAgentWebSocketSessionTests.java create mode 100644 sdk/ai/azure-ai-agents/src/test/resources/websocket-localhost-cert.pem create mode 100644 sdk/ai/azure-ai-agents/src/test/resources/websocket-localhost-key.pem diff --git a/sdk/ai/azure-ai-agents/CHANGELOG.md b/sdk/ai/azure-ai-agents/CHANGELOG.md index 207ff3310d7ed..d6ebea8b7dc0b 100644 --- a/sdk/ai/azure-ai-agents/CHANGELOG.md +++ b/sdk/ai/azure-ai-agents/CHANGELOG.md @@ -40,6 +40,8 @@ whether web search can fetch live external content. - Added hosted-agent session defaults through `SessionConfiguration` and `HostedAgentDefinition.setSessionConfiguration(...)`, including configuration of the session idle timeout. +- Added preview synchronous and asynchronous voice-agent WebSocket clients and session APIs with typed realtime events, text and PCM16 audio input, response cancellation, function-call output, persisted-conversation options, and authenticated `wss://` transport. +- Added synchronous and asynchronous live text conversation samples, an asynchronous Java Sound microphone/speaker sample with barge-in, and a live client-executed function-tool sample. ### Breaking Changes diff --git a/sdk/ai/azure-ai-agents/README.md b/sdk/ai/azure-ai-agents/README.md index aee2c3bc97e21..aee6d0cb9d8e6 100644 --- a/sdk/ai/azure-ai-agents/README.md +++ b/sdk/ai/azure-ai-agents/README.md @@ -68,6 +68,8 @@ The Agents client library has the following sub-clients which group the differen - `ResponsesClient` / `ResponsesAsyncClient`: Handle responses operations. See the [OpenAI's Responses API documentation][openai_responses_api_docs] for more information. - `BetaMemoryStoresClient` / `BetaMemoryStoresAsyncClient` **(preview)**: Manage memory stores and individual memory items for agents. - `ToolboxesClient` / `ToolboxesAsyncClient`: Manage toolboxes and toolbox versions. +- `BetaVoiceAgentWebSocketClient` / `BetaVoiceAgentWebSocketAsyncClient` **(preview)**: Open typed realtime WebSocket sessions with voice agents. +- `BetaAgentEndpointConversationsClient` / `BetaAgentEndpointConversationsAsyncClient` **(preview)**: Read persisted voice-agent conversations, transcripts, and audio metadata. Conversation operations are accessed through the [OpenAI Official Java SDK][openai_java_sdk]'s `ConversationService`. See the [OpenAI's Conversation API documentation][openai_conversations_api_docs] for more information. @@ -184,9 +186,42 @@ Build clients whose names start with `Beta` from `AgentsClientBuilder.beta()`. T |---|---| | `BetaAgentsClient` | `WorkflowAgents=V1Preview,ExternalAgents=V1Preview,DraftAgents=V1Preview,AgentsOptimization=V2Preview` | | `BetaMemoryStoresClient` | `MemoryStores=V1Preview` | +| `BetaVoiceAgentWebSocketClient` | `VoiceAgents=V1Preview` | +| `BetaAgentEndpointConversationsClient` | `VoiceAgents=V1Preview` | The async `Beta*AsyncClient` counterparts follow the same behavior. +### Realtime voice-agent sessions + +Use `BetaVoiceAgentWebSocketClient` or `BetaVoiceAgentWebSocketAsyncClient` to connect to a voice agent over WebSocket. The client acquires a token for `https://ai.azure.com/.default`, negotiates the `realtime` subprotocol, and sends the required `VoiceAgents=V1Preview` feature header automatically. + +```java +BetaVoiceAgentWebSocketClient realtimeClient = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .buildBetaVoiceAgentWebSocketClient(); + +try (VoiceAgentWebSocketSessionClient session = realtimeClient.connect(agentName)) { + session.sendText("Hello"); + session.createResponse(); + for (RealtimeServerEvent event : session.receiveEvents()) { + if (event instanceof RealtimeServerEventResponseDone) { + break; + } + } +} +``` + +The session API provides typed client and server events for text, PCM16 audio, response cancellation, and client-executed function tools. Set voice-agent persistence with `VoiceAgentDefinition.setStore(true)` or override it per connection with `VoiceAgentWebSocketConnectionOptions.setStoreEnabled(true)`, then read the resulting conversation through `BetaAgentEndpointConversationsClient`. + +Complete examples are available in the `voice/` samples folder: + +- `VoiceAgentLiveTextConversationSample` and `VoiceAgentLiveTextConversationAsyncSample` demonstrate typed text turns, streamed transcript/audio output, and persisted conversation readback. +- `VoiceAgentLiveAudioConversationAsyncSample` uses Java Sound for 24-kHz mono PCM16 microphone capture and speaker playback with barge-in. +- `VoiceAgentLiveFunctionToolSample` executes a function locally and sends its result back to the active response. + +Java converts HTTPS project endpoints to `wss://` for production sessions. The generated protocol models include WebRTC signaling events, but this library does not provide a WebRTC peer connection or media implementation; use WebSocket transport for Java-managed text and audio sessions. + ### Agent optimization The preview `BetaAgentsClient` and `BetaAgentsAsyncClient` can create and monitor agent optimization jobs. These jobs diff --git a/sdk/ai/azure-ai-agents/customizations/src/main/java/AgentsCustomizations.java b/sdk/ai/azure-ai-agents/customizations/src/main/java/AgentsCustomizations.java index b61d0f98ac682..fdf7600db1d61 100644 --- a/sdk/ai/azure-ai-agents/customizations/src/main/java/AgentsCustomizations.java +++ b/sdk/ai/azure-ai-agents/customizations/src/main/java/AgentsCustomizations.java @@ -2,17 +2,18 @@ import com.azure.autorest.customization.Customization; import com.azure.autorest.customization.LibraryCustomization; import com.github.javaparser.StaticJavaParser; -import com.github.javaparser.ast.Modifier; -import com.github.javaparser.ast.NodeList; +import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; import com.github.javaparser.ast.body.FieldDeclaration; import com.github.javaparser.ast.body.MethodDeclaration; import com.github.javaparser.ast.body.TypeDeclaration; import com.github.javaparser.ast.expr.AnnotationExpr; -import com.github.javaparser.ast.expr.AssignExpr; +import com.github.javaparser.ast.expr.ArrayInitializerExpr; +import com.github.javaparser.ast.expr.Expression; +import com.github.javaparser.ast.expr.MemberValuePair; import com.github.javaparser.ast.expr.NormalAnnotationExpr; import com.github.javaparser.ast.expr.StringLiteralExpr; -import com.github.javaparser.ast.stmt.ExpressionStmt; +import com.github.javaparser.ast.modules.ModuleDeclaration; import java.io.IOException; import java.io.UncheckedIOException; import java.nio.charset.StandardCharsets; @@ -20,7 +21,6 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import org.slf4j.Logger; @@ -32,385 +32,142 @@ public class AgentsCustomizations extends Customization { @Override public void customize(LibraryCustomization libraryCustomization, Logger logger) { + customizeModuleInfo(libraryCustomization); + customizeVoiceAgentWebSocketBuilder(libraryCustomization); + customizeRealtimeMessageDiscriminators(libraryCustomization); + removeGeneratedTrailingWhitespace(libraryCustomization); renameImageGenToolSize(libraryCustomization, logger); modifyPollingStrategies(libraryCustomization, logger); - // makeRealtimeMessageDiscriminatorsFinal(libraryCustomization); - applyUnionTypeWrappers(libraryCustomization, logger); + customizeTimeZoneModels(libraryCustomization); annotateBetaClients(libraryCustomization, logger); annotateBetaFields(libraryCustomization, loadBetaAnnotations(logger), logger); } - private static final String MODELS_PACKAGE = "com.azure.ai.agents.models"; - - private static final String UNION_MARKER = "AI Tooling: union type"; - - private static final String DEDUP_MARKER = "AI Tooling: openai-java de-dup"; - - private static final String OPENAI_JSON_HELPER = "com.azure.ai.agents.implementation.OpenAIJsonHelper"; - - // A union variant is described by a flat String[] rather than a helper type: the customization runner only loads - // the AgentsCustomizations class file, so no nested, local or anonymous class may be introduced here. - private static final int V_SETTER_TYPE = 0; - - private static final int V_GETTER_TYPE = 1; - - private static final int V_TO_OBJECT_ARG = 2; - - private static final int V_SUFFIX = 3; - - private static final int V_FACTORY = 4; - - private static final int V_PARAM_DOC = 5; - - private static final int V_RETURN_DOC = 6; - - private static final int V_TOKEN_GUARD = 7; - - private static final int V_EXTRA_IMPORT = 8; - - private static final int V_SETTER_NULLABLE = 9; - - private static final int V_OPENAI_IMPORT = 10; - - private static final int V_OPENAI_UNION_IMPORT = 11; - - private static final int V_OPENAI_UNION_TYPE = 12; - - private static final int V_OPENAI_METHOD_SUFFIX = 13; - - private static final int V_OPENAI_IS_METHOD = 14; - - private static final int V_OPENAI_AS_METHOD = 15; - - private static final int V_OPENAI_DOC = 16; - - private static final int V_SIZE = 17; - - /** - * Re-applies the typed union accessors on the generated models whose TypeSpec union properties are emitted as - * {@code BinaryData}. The generated {@code BinaryData} accessors are hidden from the public API surface (kept - * package-private for {@code fromJson}/{@code toJson} and tests) and one typed setter/getter pair is added per - * union variant. - */ - private void applyUnionTypeWrappers(LibraryCustomization customization, Logger logger) { - List requireApproval = Arrays.asList( - stringUnionVariant("the approval setting string to set (e.g., \"always\" or \"never\")"), - modelUnionVariant("McpToolRequireApproval", "the {@link McpToolRequireApproval} filter to set")); - List toolChoice = Arrays.asList( - stringUnionVariant( - "the tool-selection mode to set, one of {@code \"none\"}, {@code \"auto\"} or {@code \"required\"}"), - openAiUnionVariant("com.openai.models.responses.ToolChoiceFunction", - "com.openai.models.responses.ResponseCreateParams", "ResponseCreateParams.ToolChoice", - "FunctionToolChoice", "isFunction", "asFunction", "a specific function tool"), - openAiUnionVariant("com.openai.models.responses.ToolChoiceMcp", - "com.openai.models.responses.ResponseCreateParams", "ResponseCreateParams.ToolChoice", - "McpToolChoice", "isMcp", "asMcp", "a specific MCP tool")); - List maxOutputTokens = Arrays.asList( - numberUnionVariant("the maximum number of output tokens to set"), - stringUnionVariant( - "the token-limit string to set, for example {@code \"inf\"} for an unlimited count")); - List allowedTools - = Arrays.asList(stringListUnionVariant("the list of tool name strings to set"), - modelUnionVariant("McpToolFilter", "the {@link McpToolFilter} to set")); - - // customizeUnionProperty(customization, "VoiceAgentDefinition", "maxOutputTokens", - // "The maximum output-token count for one response.", maxOutputTokens, true, false, logger); - // customizeUnionProperty(customization, "VoiceAgentDefinition", "toolChoice", - // "How the model chooses tools for generated responses.", toolChoice, true, false, logger); - // customizeUnionProperty(customization, "VoiceAgentLlmGeneratedGreetingConfig", "toolChoice", - // "The tool-selection policy for the opening response. Defaults to `none`.", toolChoice, true, false, - // logger); - // customizeUnionProperty(customization, "VoiceAgentMcpTool", "allowedTools", "The allowed_tools property.", - // allowedTools, true, false, logger); - // customizeUnionProperty(customization, "VoiceAgentMcpTool", "requireApproval", - // "The require_approval property.", requireApproval, true, false, logger); - customizeUnionProperty(customization, "WebIqPreviewTool", "requireApproval", - "Whether the agent requires approval before executing actions. When omitted, the service defaults to" - + " \"always\".", - requireApproval, true, false, logger); - customizeUnionProperty(customization, "WebIqPreviewToolboxTool", "requireApproval", - "Whether the agent requires approval before executing actions. When omitted, the service defaults to" - + " \"always\".", - requireApproval, true, false, logger); - - // // VoiceResponseBase is an immutable output model: no public setters, and the typed getters read through the - // // (overridable) BinaryData accessor so that VoiceResponse, which shadows the field, is handled by the same - // // inherited public API. - // customizeUnionProperty(customization, "VoiceResponseBase", "maxOutputTokens", - // "Maximum number of output tokens for a single assistant response, inclusive of tool calls, that was used" - // + " in this response.", - // maxOutputTokens, false, true, logger); - // // VoiceResponse only re-declares the shadowed accessor; the typed getters are inherited from - // // VoiceResponseBase, so no public API is duplicated here. - // customizeUnionProperty(customization, "VoiceResponse", "maxOutputTokens", - // "Maximum number of output tokens for a single assistant response, inclusive of tool calls, that was used" - // + " in this response.", - // new ArrayList<>(), false, false, logger); - } - - private void customizeUnionProperty(LibraryCustomization customization, String className, String property, - String description, List variants, boolean addSetters, - boolean readThroughAccessor, Logger logger) { - ClassCustomization classCustomization; - try { - classCustomization = customization.getClass(MODELS_PACKAGE, className); - } catch (IllegalArgumentException ex) { - logger.warn("{}.{} does not exist; skipping union type wrappers.", className, property); - return; - } - - String capitalized = Character.toUpperCase(property.charAt(0)) + property.substring(1); - String getterName = "get" + capitalized; - String setterName = "set" + capitalized; - - classCustomization.customizeAst(ast -> ast.getClassByName(className).ifPresent(clazz -> { - boolean hidAccessor = false; - for (MethodDeclaration method : clazz.getMethodsByName(getterName)) { - if (method.getParameters().isEmpty() && isBinaryData(method.getType().asString())) { - hideAccessor(method); - hidAccessor = true; - } - } - for (MethodDeclaration method : clazz.getMethodsByName(setterName)) { - if (addSetters && method.getParameters().size() == 1 - && isBinaryData(method.getParameter(0).getType().asString())) { - hideAccessor(method); - } - } - - if (!hidAccessor) { - logger.error("Could not find a BinaryData {}() accessor on {}", getterName, className); - throw new IllegalStateException( - "Could not find a BinaryData " + getterName + "() accessor on " + className + "."); - } - - for (String[] variant : variants) { - if (variant[V_OPENAI_UNION_TYPE] != null) { - addOpenAIVariant(clazz, className, property, capitalized, description, variant, addSetters); - continue; - } - if (addSetters) { - // Reference variants must assign null directly: BinaryData.fromObject(null) yields a non-null - // wrapper whose toString() throws and which serializes an explicit JSON null. - String assignment = "true".equals(variant[V_SETTER_NULLABLE]) - ? property + " == null ? null : BinaryData." + variant[V_FACTORY] + "(" + property + ")" - : "BinaryData." + variant[V_FACTORY] + "(" + property + ")"; - addMethod(clazz, - "Set the " + property + " property: " + description + "\n\n@param " + property + " " - + variant[V_PARAM_DOC] + ".\n@return the " + className + " object itself.", - "public " + className + " " + setterName + "(" + variant[V_SETTER_TYPE] + " " + property - + ") {\n" + " // " + UNION_MARKER + "\n" + " this." + property + " = " + assignment - + ";\n" + " return this;\n" + "}"); - } - - String body = readThroughAccessor - ? " BinaryData value = " + getterName + "();\n" + " if (value == null) {\n" - + " return null;\n" + " }\n" + " String json = value.toString().trim();\n" - + " if (!(" + variant[V_TOKEN_GUARD] + ")) {\n" + " return null;\n" + " }\n" - + " return value.toObject(" + variant[V_TO_OBJECT_ARG] + ");\n" - : " if (this." + property + " == null) {\n" + " return null;\n" + " }\n" - + " String json = this." + property + ".toString().trim();\n" + " if (!(" - + variant[V_TOKEN_GUARD] + ")) {\n" + " return null;\n" + " }\n" - + " return this." + property + ".toObject(" + variant[V_TO_OBJECT_ARG] + ");\n"; - if (variant[V_EXTRA_IMPORT] != null) { - ast.addImport(variant[V_EXTRA_IMPORT]); - } - addMethod(clazz, - "Get the " + property + " property: " + description + "\n\n@return the " + property + " value as " - + variant[V_RETURN_DOC] + ".", - "public " + (readThroughAccessor ? "final " : "") + variant[V_GETTER_TYPE] + " " + getterName - + "As" + variant[V_SUFFIX] + "() {\n" + " // " + UNION_MARKER + "\n" + body + "}"); - } - - String[] openAiVariant = null; - for (String[] variant : variants) { - if (variant[V_OPENAI_UNION_TYPE] != null) { - openAiVariant = variant; - } + private void customizeModuleInfo(LibraryCustomization customization) { + String fileName = "src/main/java/module-info.java"; + CompilationUnit moduleInfo = StaticJavaParser.parse(customization.getRawEditor().getFileContent(fileName)); + ModuleDeclaration module = moduleInfo.getModule() + .orElseThrow(() -> new IllegalStateException("Generated module-info.java has no module")); + for (String requiredModule : new String[] { "openai.java.core", "openai.java.client.okhttp" }) { + String directive = "requires transitive " + requiredModule + ";"; + if (module.getDirectives().stream().noneMatch(existing -> directive.equals(existing.toString().trim()))) { + String nonTransitiveDirective = "requires " + requiredModule + ";"; + module.getDirectives() + .removeIf(existing -> nonTransitiveDirective.equals(existing.toString().trim())); + module.addDirective(directive); } - if (openAiVariant != null) { - ast.addImport(openAiVariant[V_OPENAI_UNION_IMPORT]); - addMethod(clazz, null, - "private " + openAiVariant[V_OPENAI_UNION_TYPE] + " getOpenAI" + capitalized + "() {\n" + " // " - + DEDUP_MARKER + "\n" + " if (this." + property + " == null) {\n" - + " return null;\n" + " }\n" + " String json = this." + property - + ".toString().trim();\n" + " if (!json.startsWith(\"{\")) {\n" + " return null;\n" - + " }\n" + " return " + OPENAI_JSON_HELPER + ".fromBinaryData(this." + property + ", " - + openAiVariant[V_OPENAI_UNION_TYPE] + ".class);\n" + "}"); + } + for (String requiredModule : new String[] { "reactor.netty.http", "reactor.netty.core", + "io.netty.codec.http", "io.netty.transport", "io.netty.common", "io.netty.codec" }) { + String directive = "requires " + requiredModule + ";"; + if (module.getDirectives().stream().noneMatch(existing -> directive.equals(existing.toString().trim()))) { + module.addDirective(directive); } - })); - } - - /** - * Adds the distinctly named openai-java accessors for one union variant that is represented by an openai-java - * model (the Azure equivalents are suppressed through {@code @@alternateType} in TypeSpec). Overloads are - * deliberately avoided because {@code null} arguments would be ambiguous between variants. - */ - private static void addOpenAIVariant(ClassOrInterfaceDeclaration clazz, String className, String property, - String capitalized, String description, String[] variant, - boolean addSetters) { - clazz.findCompilationUnit().ifPresent(unit -> unit.addImport(variant[V_OPENAI_IMPORT])); - if (addSetters) { - addMethod(clazz, - "Set the " + property + " property to " + variant[V_OPENAI_DOC] + ": " + description + "\n\n@param " - + property + " " + variant[V_PARAM_DOC] + ".\n@return the " + className + " object itself.", - "public " + className + " set" + variant[V_OPENAI_METHOD_SUFFIX] + "(" + variant[V_SETTER_TYPE] + " " - + property + ") {\n" + " // " + DEDUP_MARKER + "\n" + " this." + property + " = " - + OPENAI_JSON_HELPER + ".toBinaryData(" + property + ");\n" + " return this;\n" + "}"); } - addMethod(clazz, - "Get the " + property + " property as an openai-java {@link " + variant[V_GETTER_TYPE] + "}: " - + description + "\n\n@return the " + property + " value as " + variant[V_RETURN_DOC] - + ", or {@code null} if it is not set or holds another variant.", - "public " + variant[V_GETTER_TYPE] + " get" + variant[V_OPENAI_METHOD_SUFFIX] + "() {\n" + " // " - + DEDUP_MARKER + "\n" + " " + variant[V_OPENAI_UNION_TYPE] + " choice = getOpenAI" + capitalized - + "();\n" + " if (choice == null || !choice." + variant[V_OPENAI_IS_METHOD] + "()) {\n" - + " return null;\n" + " }\n" + " return choice." + variant[V_OPENAI_AS_METHOD] - + "();\n" + "}"); + customization.getRawEditor().replaceFile(fileName, moduleInfo.toString()); } - private static boolean isBinaryData(String type) { - return "BinaryData".equals(type) || "com.azure.core.util.BinaryData".equals(type); + private void removeGeneratedTrailingWhitespace(LibraryCustomization customization) { + String fileName = "src/main/java/com/azure/ai/agents/models/MemoryStoreObjectType.java"; + String content = customization.getRawEditor().getFileContent(fileName); + customization.getRawEditor().replaceFile(fileName, + content.replace(" * \n * @param value", " *\n * @param value")); } - /** - * Removes {@code @Generated}, drops the {@code public} modifier and stamps the union marker comment on a - * generated {@code BinaryData} accessor so that it is no longer part of the published API surface. - */ - private static void hideAccessor(MethodDeclaration method) { - method.getAnnotationByName("Generated").ifPresent(AnnotationExpr::remove); - method.setModifiers(new NodeList<>()); - method.getBody() - .filter(body -> !body.getStatements().isEmpty()) - .ifPresent(body -> body.getStatement(0).setLineComment(" " + UNION_MARKER)); - } - - private static void addMethod(ClassOrInterfaceDeclaration clazz, String javadoc, String methodSource) { - MethodDeclaration method = StaticJavaParser.parseMethodDeclaration(methodSource); - if (javadoc != null) { - method.setJavadocComment(javadoc); + private void customizeRealtimeMessageDiscriminators(LibraryCustomization customization) { + for (String className : new String[] { "RealtimeConversationItemMessage", + "RealtimeConversationItemMessageAssistant", "RealtimeConversationItemMessageSystem", + "RealtimeConversationItemMessageUser", "VoiceAgentSystemTool", "VoiceAgentEndConversationSystemTool" }) { + customization.getClass("com.azure.ai.agents.models", className).customizeAst(ast -> ast + .getClassByName(className) + .orElseThrow(() -> new IllegalStateException("Generated " + className + " was not found.")) + .getFieldByName("type") + .orElseThrow(() -> new IllegalStateException("Generated " + className + ".type was not found.")) + .setFinal(true)); } - clazz.addMember(method); } - /** - * Describes one variant of a TypeSpec union: how it is written to and read back from the backing - * {@code BinaryData} field. The slots are addressed through the {@code V_*} constants. - * - * @param setterType the parameter type of the generated setter. - * @param getterType the return type of the generated getter. - * @param toObjectArg the argument passed to {@code BinaryData.toObject}. - * @param suffix the {@code getAs} accessor suffix. - * @param factory the {@code BinaryData} factory method used by the setter. - * @param paramDoc the setter {@code @param} description. - * @param returnDoc the getter {@code @return} description. - * @param tokenGuard a boolean expression over the local {@code json} variable that is {@code true} only when the - * stored JSON token belongs to this variant, so cross-variant reads return {@code null} instead of throwing. - * @param extraImport an additional import the getter needs, or {@code null}. - * @param setterNullable whether the setter parameter is a reference type, in which case a {@code null} argument - * clears the property instead of being wrapped by {@code BinaryData.fromObject}. - * @return the union variant. - */ - private static String[] unionVariant(String setterType, String getterType, String toObjectArg, String suffix, - String factory, String paramDoc, String returnDoc, String tokenGuard, - String extraImport, boolean setterNullable) { - String[] variant = new String[V_SIZE]; - variant[V_SETTER_TYPE] = setterType; - variant[V_GETTER_TYPE] = getterType; - variant[V_TO_OBJECT_ARG] = toObjectArg; - variant[V_SUFFIX] = suffix; - variant[V_FACTORY] = factory; - variant[V_PARAM_DOC] = paramDoc; - variant[V_RETURN_DOC] = returnDoc; - variant[V_TOKEN_GUARD] = tokenGuard; - variant[V_EXTRA_IMPORT] = extraImport; - variant[V_SETTER_NULLABLE] = String.valueOf(setterNullable); - return variant; - } - - private static String[] stringUnionVariant(String paramDoc) { - // BinaryData.fromObject is used for strings as well: fromString stores raw text, which the matching - // toObject(String.class) read back cannot parse as JSON. Both factories write the same quoted JSON token. - return unionVariant("String", "String", "String.class", "String", "fromObject", paramDoc, - "a String, or {@code null} when it is not set or holds another variant", "json.startsWith(\"\\\"\")", - null, true); - } - - private static String[] numberUnionVariant(String paramDoc) { - return unionVariant("int", "Integer", "Integer.class", "Integer", "fromObject", paramDoc, - "an Integer, or {@code null} when it is not set or holds another variant", - "!json.isEmpty() && (Character.isDigit(json.charAt(0)) || json.charAt(0) == '-')", null, false); - } - - private static String[] stringListUnionVariant(String paramDoc) { - return unionVariant("List", "List", "new TypeReference>() { }", "StringList", - "fromObject", paramDoc, "a list of Strings, or {@code null} when it is not set or holds another variant", - "json.startsWith(\"[\")", "com.azure.core.util.serializer.TypeReference", true); - } + private void customizeVoiceAgentWebSocketBuilder(LibraryCustomization customization) { + customization.getClass("com.azure.ai.agents", "AgentsClientBuilder").customizeAst(ast -> { + ast.addImport("com.azure.ai.agents.implementation.realtime.VoiceAgentWebSocketClientConfiguration"); + ast.addImport("com.azure.core.http.ProxyOptions"); + ast.addImport("com.azure.core.util.UserAgentUtil"); + ast.addImport("java.net.URI"); + + ClassOrInterfaceDeclaration builder = ast.getClassByName("AgentsClientBuilder") + .orElseThrow(() -> new IllegalStateException("Generated AgentsClientBuilder was not found.")); + addServiceClient(builder, "BetaVoiceAgentWebSocketClient.class"); + addServiceClient(builder, "BetaVoiceAgentWebSocketAsyncClient.class"); + + if (builder.getMethodsByName("createVoiceAgentWebSocketConfiguration").isEmpty()) { + builder.addMember(StaticJavaParser.parseMethodDeclaration( + "private VoiceAgentWebSocketClientConfiguration createVoiceAgentWebSocketConfiguration() {" + + " validateClient();" + + " Objects.requireNonNull(tokenCredential, \"'credential' must be configured to build a voice-agent WebSocket client.\");" + + " Configuration buildConfiguration = configuration == null ? Configuration.getGlobalConfiguration() : configuration;" + + " ClientOptions localClientOptions = clientOptions == null ? new ClientOptions() : clientOptions;" + + " HttpLogOptions localLogOptions = httpLogOptions == null ? new HttpLogOptions() : httpLogOptions;" + + " String clientName = PROPERTIES.getOrDefault(SDK_NAME, \"azure-ai-agents\");" + + " String clientVersion = PROPERTIES.getOrDefault(SDK_VERSION, \"unknown\");" + + " String applicationId = CoreUtils.getApplicationId(localClientOptions, localLogOptions);" + + " String userAgent = UserAgentUtil.toUserAgentString(applicationId, clientName, clientVersion, buildConfiguration);" + + " HttpHeaders headers = CoreUtils.createHttpHeadersFromClientOptions(localClientOptions);" + + " ProxyOptions proxyOptions = ProxyOptions.fromConfiguration(buildConfiguration);" + + " AgentsServiceVersion localServiceVersion = serviceVersion == null ? AgentsServiceVersion.getLatest() : serviceVersion;" + + " return new VoiceAgentWebSocketClientConfiguration(URI.create(endpoint), tokenCredential, localServiceVersion.getVersion(), userAgent, headers, proxyOptions);" + + " }")); + } - private static String[] modelUnionVariant(String type, String paramDoc) { - return unionVariant(type, type, type + ".class", type, "fromObject", paramDoc, - "a {@link " + type + "}, or {@code null} when it is not set or holds another variant", - "json.startsWith(\"{\")", null, true); + addVoiceAgentBuildMethods(builder); + customizeAgentEndpointConversationBuildMethods(builder); + }); } - /** - * Declares a union variant that is represented by an openai-java model rather than a generated Azure model. - * Values are bridged through {@code OpenAIJsonHelper} and read back by discriminating on the openai-java - * union wrapper (for example {@code ResponseCreateParams.ToolChoice}). - * - * @param openAiImport the fully qualified openai-java variant class. - * @param unionImport the fully qualified openai-java union class used to discriminate the stored value. - * @param unionType the (possibly nested) name the union class is referenced by in source. - * @param methodSuffix the distinct accessor suffix, e.g. {@code FunctionToolChoice}. - * @param isMethod the union predicate method, e.g. {@code isFunction}. - * @param asMethod the union accessor method, e.g. {@code asFunction}. - * @param doc a short description of the variant used in the generated javadoc. - * @return the union variant. - */ - private static String[] openAiUnionVariant(String openAiImport, String unionImport, String unionType, - String methodSuffix, String isMethod, String asMethod, String doc) { - String simpleName = openAiImport.substring(openAiImport.lastIndexOf('.') + 1); - String[] variant = unionVariant(simpleName, simpleName, simpleName + ".class", simpleName, "fromObject", - "the openai-java {@link " + simpleName + "} to set, or null to clear", "a " + simpleName, - "json.startsWith(\"{\")", null, true); - variant[V_OPENAI_IMPORT] = openAiImport; - variant[V_OPENAI_UNION_IMPORT] = unionImport; - variant[V_OPENAI_UNION_TYPE] = unionType; - variant[V_OPENAI_METHOD_SUFFIX] = methodSuffix; - variant[V_OPENAI_IS_METHOD] = isMethod; - variant[V_OPENAI_AS_METHOD] = asMethod; - variant[V_OPENAI_DOC] = doc; - return variant; + private static void customizeAgentEndpointConversationBuildMethods(ClassOrInterfaceDeclaration builder) { + MethodDeclaration asyncMethod + = getSingleMethod(builder, "buildBetaAgentEndpointConversationsAsyncClient"); + asyncMethod.setBody(StaticJavaParser.parseBlock("{ return new BetaAgentEndpointConversationsAsyncClient(" + + "buildInnerClient(AgentDefinitionOptInKeys.VOICE_AGENTS_V1_PREVIEW.toString())" + + ".getBetaAgentEndpointConversations()); }")); + + MethodDeclaration syncMethod = getSingleMethod(builder, "buildBetaAgentEndpointConversationsClient"); + syncMethod.setBody(StaticJavaParser.parseBlock("{ return new BetaAgentEndpointConversationsClient(" + + "buildInnerClient(AgentDefinitionOptInKeys.VOICE_AGENTS_V1_PREVIEW.toString())" + + ".getBetaAgentEndpointConversations()); }")); } - private void makeRealtimeMessageDiscriminatorsFinal(LibraryCustomization customization) { - for (String className : new String[] { - "RealtimeConversationItemMessage", - "RealtimeConversationItemMessageSystem", - "RealtimeConversationItemMessageUser", - "RealtimeConversationItemMessageAssistant" }) { - customization.getClass("com.azure.ai.agents.models", className) - .customizeAst(ast -> ast.getClassByName(className) - .flatMap(clazz -> clazz.getFieldByName("type")) - .ifPresent(field -> field.setModifiers(Modifier.Keyword.PRIVATE, Modifier.Keyword.FINAL))); + private static void addVoiceAgentBuildMethods(ClassOrInterfaceDeclaration builder) { + if (builder.getMethodsByName("buildBetaVoiceAgentWebSocketAsyncClient").isEmpty()) { + builder.addMember(StaticJavaParser.parseMethodDeclaration( + "@Beta public BetaVoiceAgentWebSocketAsyncClient buildBetaVoiceAgentWebSocketAsyncClient() {" + + " return new BetaVoiceAgentWebSocketAsyncClient(createVoiceAgentWebSocketConfiguration());" + + " }")); + } + if (builder.getMethodsByName("buildBetaVoiceAgentWebSocketClient").isEmpty()) { + builder.addMember(StaticJavaParser.parseMethodDeclaration( + "@Beta public BetaVoiceAgentWebSocketClient buildBetaVoiceAgentWebSocketClient() {" + + " return new BetaVoiceAgentWebSocketClient(createVoiceAgentWebSocketConfiguration());" + + " }")); } + } - for (String className : new String[] { - "RealtimeConversationItemMessageSystem", - "RealtimeConversationItemMessageUser", - "RealtimeConversationItemMessageAssistant" }) { - customization.getClass("com.azure.ai.agents.models", className).customizeAst(ast -> ast - .getClassByName(className) - .ifPresent(clazz -> { - clazz.getFieldByName("role") - .ifPresent(field -> field.setModifiers(Modifier.Keyword.PRIVATE, Modifier.Keyword.FINAL)); - clazz.getMethodsByName("fromJson") - .forEach(method -> method.findAll(AssignExpr.class).stream() - .filter(assignment -> assignment.getTarget().toString().endsWith(".role")) - .forEach(assignment -> assignment.findAncestor(ExpressionStmt.class) - .ifPresent(ExpressionStmt::remove))); - })); + private static void addServiceClient(ClassOrInterfaceDeclaration builder, String serviceClient) { + NormalAnnotationExpr annotation = builder.getAnnotationByName("ServiceClientBuilder") + .filter(AnnotationExpr::isNormalAnnotationExpr) + .map(AnnotationExpr::asNormalAnnotationExpr) + .orElseThrow(() -> new IllegalStateException( + builder.getNameAsString() + " has no normal @ServiceClientBuilder annotation.")); + MemberValuePair pair = annotation.getPairs().stream() + .filter(candidate -> "serviceClients".equals(candidate.getNameAsString())) + .findFirst() + .orElseThrow(() -> new IllegalStateException("@ServiceClientBuilder has no serviceClients value.")); + Expression value = pair.getValue(); + ArrayInitializerExpr clients = value.isArrayInitializerExpr() + ? value.asArrayInitializerExpr() + : new ArrayInitializerExpr(new com.github.javaparser.ast.NodeList<>(value)); + if (!clients.getValues().stream().anyMatch(existing -> serviceClient.equals(existing.toString()))) { + clients.getValues().add(StaticJavaParser.parseExpression(serviceClient)); + pair.setValue(clients); } } @@ -432,13 +189,101 @@ private void renameImageGenToolSize(LibraryCustomization customization, Logger l } private void modifyPollingStrategies(LibraryCustomization customization, Logger logger) { - customization.getClass("com.azure.ai.agents.implementation", "OperationLocationPollingStrategy") - .customizeAst(ast -> ast.getClassByName("OperationLocationPollingStrategy") - .ifPresent(clazz -> clazz.addMember(StaticJavaParser.parseMethodDeclaration("@Override public Mono> poll(PollingContext pollingContext, TypeReference pollResponseType) { return super.poll(pollingContext, pollResponseType).map(AgentsServicePollUtils::remapStatus); }")))); + customizePollingStrategy(customization, "OperationLocationPollingStrategy", + "{ return AgentsServicePollUtils.poll(pollingStrategyOptions, serializer, endpoint, pollingContext, pollResponseType); }"); + customizePollingStrategy(customization, "SyncOperationLocationPollingStrategy", + "{ return AgentsServicePollUtils.pollSync(pollingStrategyOptions, serializer, endpoint, pollingContext, pollResponseType); }"); + } + + private static void customizePollingStrategy(LibraryCustomization customization, String className, + String pollMethodBody) { + customization.getClass("com.azure.ai.agents.implementation", className).customizeAst(ast -> { + ClassOrInterfaceDeclaration clazz = ast.getClassByName(className) + .orElseThrow(() -> new IllegalStateException("Generated " + className + " was not found.")); + if (!clazz.getFieldByName("pollingStrategyOptions").isPresent()) { + clazz.addMember(StaticJavaParser.parseBodyDeclaration( + "private final PollingStrategyOptions pollingStrategyOptions;")); + } + + com.github.javaparser.ast.stmt.BlockStmt constructorBody = clazz.getConstructors().stream() + .filter(constructor -> constructor.getParameters().size() == 2) + .findFirst() + .orElseThrow(() -> new IllegalStateException(className + " two-parameter constructor was not found.")) + .getBody(); + String optionsAssignment = "this.pollingStrategyOptions = pollingStrategyOptions;"; + if (constructorBody.getStatements().stream() + .noneMatch(statement -> optionsAssignment.equals(statement.toString()))) { + constructorBody.addStatement(1, StaticJavaParser.parseStatement(optionsAssignment)); + } - customization.getClass("com.azure.ai.agents.implementation", "SyncOperationLocationPollingStrategy") - .customizeAst(ast -> ast.getClassByName("SyncOperationLocationPollingStrategy") - .ifPresent(clazz -> clazz.addMember(StaticJavaParser.parseMethodDeclaration("@Override public PollResponse poll(PollingContext pollingContext, TypeReference pollResponseType) { return AgentsServicePollUtils.remapStatus(super.poll(pollingContext, pollResponseType)); }")))); + List pollMethods = clazz.getMethodsByName("poll"); + if (pollMethods.isEmpty()) { + String returnType = className.startsWith("Sync") ? "PollResponse" : "Mono>"; + clazz.addMember(StaticJavaParser.parseMethodDeclaration("@Override public " + returnType + + " poll(PollingContext pollingContext, TypeReference pollResponseType) " + + pollMethodBody)); + } else { + pollMethods.get(0).setBody(StaticJavaParser.parseBlock(pollMethodBody)); + } + }); + } + + private void customizeTimeZoneModels(LibraryCustomization customization) { + for (String className : new String[] { "ApproximateLocation", "WebSearchApproximateLocation" }) { + customization.getClass("com.azure.ai.agents.models", className) + .customizeAst(ast -> customizeTimeZoneModel(ast.getClassByName(className) + .orElseThrow(() -> new IllegalStateException("Generated model " + className + " was not found.")))); + } + } + + private static void customizeTimeZoneModel(ClassOrInterfaceDeclaration model) { + MethodDeclaration toJson = getSingleMethod(model, "toJson"); + String toJsonBody = toJson.getBody() + .orElseThrow(() -> new IllegalStateException(model.getNameAsString() + ".toJson has no body.")) + .toString(); + String generatedWriter = "jsonWriter.writeJsonField(\"timezone\", this.timezone);"; + String timeZoneWriter + = "jsonWriter.writeStringField(\"timezone\", this.timezone != null ? this.timezone.getID() : null);"; + if (!toJsonBody.contains(timeZoneWriter)) { + if (!toJsonBody.contains(generatedWriter)) { + throw new IllegalStateException( + model.getNameAsString() + ".toJson no longer uses the expected generated timezone writer."); + } + toJson.setBody(StaticJavaParser.parseBlock(toJsonBody.replace(generatedWriter, timeZoneWriter))); + } + + MethodDeclaration fromJson = getSingleMethod(model, "fromJson"); + String fromJsonBody = fromJson.getBody() + .orElseThrow(() -> new IllegalStateException(model.getNameAsString() + ".fromJson has no body.")) + .toString(); + if (!fromJsonBody.contains("parseTimeZone(")) { + String generatedParser = "TimeZone.fromJson(reader)"; + if (!fromJsonBody.contains(generatedParser)) { + throw new IllegalStateException( + model.getNameAsString() + ".fromJson no longer uses the expected generated timezone parser."); + } + fromJson.setBody(StaticJavaParser.parseBlock( + fromJsonBody.replace(generatedParser, "parseTimeZone(reader.getString())"))); + } + + if (model.getMethodsByName("parseTimeZone").isEmpty()) { + model.addMember(StaticJavaParser.parseMethodDeclaration( + "private static TimeZone parseTimeZone(String timezoneId) {" + + " if (timezoneId == null) { return null; }" + + " TimeZone timezone = TimeZone.getTimeZone(timezoneId);" + + " if (\"GMT\".equals(timezone.getID()) && !\"GMT\".equalsIgnoreCase(timezoneId)) { return null; }" + + " return timezone;" + + " }")); + } + } + + private static MethodDeclaration getSingleMethod(ClassOrInterfaceDeclaration model, String methodName) { + List methods = model.getMethodsByName(methodName); + if (methods.size() != 1) { + throw new IllegalStateException( + "Expected one " + model.getNameAsString() + "." + methodName + " method, found " + methods.size() + "."); + } + return methods.get(0); } private void annotateBetaClients(LibraryCustomization customization, Logger logger) { @@ -626,6 +471,13 @@ private Path locateBetaCsv(Logger logger) { if (Files.isRegularFile(modulePath)) { return modulePath; } + // tsp-client may also launch from the service directory (user.dir = sdk/ai). + Path serviceDirectoryPath + = Paths.get(System.getProperty("user.dir"), "azure-ai-agents", "customizations", CSV_FILE_NAME) + .toAbsolutePath(); + if (Files.isRegularFile(serviceDirectoryPath)) { + return serviceDirectoryPath; + } // spec SDK-generation (spec-gen-sdk) launches from the repo root (user.dir = repo root). Path repoRootPath = Paths.get(System.getProperty("user.dir"), "sdk", "ai", "azure-ai-agents", "customizations", CSV_FILE_NAME) @@ -633,8 +485,8 @@ private Path locateBetaCsv(Logger logger) { if (Files.isRegularFile(repoRootPath)) { return repoRootPath; } - logger.warn("Could not locate {} at {} or {} (user.dir={}); skipping @Beta annotations.", CSV_FILE_NAME, - modulePath, repoRootPath, System.getProperty("user.dir")); + logger.warn("Could not locate {} at {}, {}, or {} (user.dir={}); skipping @Beta annotations.", CSV_FILE_NAME, + modulePath, serviceDirectoryPath, repoRootPath, System.getProperty("user.dir")); return null; } } diff --git a/sdk/ai/azure-ai-agents/pom.xml b/sdk/ai/azure-ai-agents/pom.xml index 2e78ebf4f6817..3485cd2cc1bc3 100644 --- a/sdk/ai/azure-ai-agents/pom.xml +++ b/sdk/ai/azure-ai-agents/pom.xml @@ -68,6 +68,31 @@ azure-core-http-netty 1.16.7 + + io.projectreactor.netty + reactor-netty-http + 1.2.18 + + + io.netty + netty-codec-http + 4.1.137.Final + + + io.netty + netty-transport + 4.1.137.Final + + + io.netty + netty-common + 4.1.137.Final + + + io.netty + netty-codec + 4.1.137.Final + @@ -102,6 +127,11 @@ com.openai:openai-java:[4.45.0] + io.projectreactor.netty:reactor-netty-http:[1.2.18] + io.netty:netty-codec-http:[4.1.137.Final] + io.netty:netty-transport:[4.1.137.Final] + io.netty:netty-common:[4.1.137.Final] + io.netty:netty-codec:[4.1.137.Final] diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java index 04b9d285f8f93..f9f970d226c3d 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java @@ -1776,9 +1776,7 @@ Mono createAgentFromManifest(String agentName, String manifestId, * id: String (Required) * object: String (Required) * metadata (Required): { - * (Optional): { - * String: String (Required) - * } + * String: String (Required) * } * created_at: long (Required) * } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java index 524765040593a..848e00e4f16c1 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java @@ -1723,9 +1723,7 @@ AgentDetails createAgentFromManifest(String agentName, String manifestId, Map, ConfigurationTrait, TokenCredentialTrait, EndpointTrait { @@ -381,6 +391,27 @@ private com.openai.core.http.HttpClient createOpenAIHttpClient(String foundryFea return HttpClientHelper.mapToOpenAIHttpClient(resolvePipeline(foundryFeatures)); } + private VoiceAgentWebSocketClientConfiguration createVoiceAgentWebSocketConfiguration() { + validateClient(); + Objects.requireNonNull(tokenCredential, + "'credential' must be configured to build a voice-agent WebSocket client."); + Configuration buildConfiguration + = configuration == null ? Configuration.getGlobalConfiguration() : configuration; + ClientOptions localClientOptions = clientOptions == null ? new ClientOptions() : clientOptions; + HttpLogOptions localLogOptions = httpLogOptions == null ? new HttpLogOptions() : httpLogOptions; + String clientName = PROPERTIES.getOrDefault(SDK_NAME, "azure-ai-agents"); + String clientVersion = PROPERTIES.getOrDefault(SDK_VERSION, "unknown"); + String applicationId = CoreUtils.getApplicationId(localClientOptions, localLogOptions); + String userAgent + = UserAgentUtil.toUserAgentString(applicationId, clientName, clientVersion, buildConfiguration); + HttpHeaders headers = CoreUtils.createHttpHeadersFromClientOptions(localClientOptions); + ProxyOptions proxyOptions = ProxyOptions.fromConfiguration(buildConfiguration); + AgentsServiceVersion localServiceVersion + = serviceVersion == null ? AgentsServiceVersion.getLatest() : serviceVersion; + return new VoiceAgentWebSocketClientConfiguration(URI.create(endpoint), tokenCredential, + localServiceVersion.getVersion(), userAgent, headers, proxyOptions); + } + /** * Builds an instance of ResponsesClient class with a default setup for OpenAI * @@ -529,7 +560,7 @@ public AgentsClient buildAgentsClient() { * The returned builder uses the configuration set on this builder, including endpoint, credential, HTTP pipeline, * policies, retry settings, logging options, client options, and service version. Use this method * when you want to build a client whose type is prefixed with {@code Beta}, such as {@link BetaAgentsClient}, - * {@link BetaAgentsAsyncClient}, {@link BetaMemoryStoresClient}, {@link BetaMemoryStoresAsyncClient} + * {@link BetaAgentsAsyncClient}, {@link BetaMemoryStoresClient}, or {@link BetaMemoryStoresAsyncClient}. *

* Clients created by this sub-builder automatically opt in to the preview service area they target by adding the * required {@code Foundry-Features} header. Calling {@link #allowPreview(boolean)} is not required for these @@ -554,8 +585,10 @@ public BetaAgentsClientBuilder beta() { serviceClients = { BetaAgentsClient.class, BetaMemoryStoresClient.class, + BetaVoiceAgentWebSocketClient.class, BetaAgentsAsyncClient.class, - BetaMemoryStoresAsyncClient.class }) + BetaMemoryStoresAsyncClient.class, + BetaVoiceAgentWebSocketAsyncClient.class }) public final class BetaAgentsClientBuilder { /** @@ -624,6 +657,26 @@ public BetaAgentsClient buildBetaAgentsClient() { public BetaMemoryStoresClient buildBetaMemoryStoresClient() { return new BetaMemoryStoresClient(buildInnerClient(MEMORY_STORES_PREVIEW_FEATURES).getBetaMemoryStores()); } + + /** + * Builds an asynchronous client for realtime voice-agent WebSocket sessions. + * + * @return an asynchronous voice-agent WebSocket client. + */ + @Beta + public BetaVoiceAgentWebSocketAsyncClient buildBetaVoiceAgentWebSocketAsyncClient() { + return new BetaVoiceAgentWebSocketAsyncClient(createVoiceAgentWebSocketConfiguration()); + } + + /** + * Builds a synchronous client for realtime voice-agent WebSocket sessions. + * + * @return a synchronous voice-agent WebSocket client. + */ + @Beta + public BetaVoiceAgentWebSocketClient buildBetaVoiceAgentWebSocketClient() { + return new BetaVoiceAgentWebSocketClient(createVoiceAgentWebSocketConfiguration()); + } } /** @@ -681,4 +734,68 @@ public ToolboxesAsyncClient buildToolboxesAsyncClient() { public ToolboxesClient buildToolboxesClient() { return new ToolboxesClient(buildInnerClient().getToolboxes()); } + + /** + * Builds an asynchronous client for realtime voice-agent WebSocket sessions. + * + * @return an asynchronous voice-agent WebSocket client. + */ + @Beta + public BetaVoiceAgentWebSocketAsyncClient buildBetaVoiceAgentWebSocketAsyncClient() { + return new BetaVoiceAgentWebSocketAsyncClient(createVoiceAgentWebSocketConfiguration()); + } + + /** + * Builds a synchronous client for realtime voice-agent WebSocket sessions. + * + * @return a synchronous voice-agent WebSocket client. + */ + @Beta + public BetaVoiceAgentWebSocketClient buildBetaVoiceAgentWebSocketClient() { + return new BetaVoiceAgentWebSocketClient(createVoiceAgentWebSocketConfiguration()); + } + + /** + * Builds an instance of BetaAgentEndpointConversationsAsyncClient class. + * + * @return an instance of BetaAgentEndpointConversationsAsyncClient. + */ + @Generated + public BetaAgentEndpointConversationsAsyncClient buildBetaAgentEndpointConversationsAsyncClient() { + return new BetaAgentEndpointConversationsAsyncClient( + buildInnerClient(AgentDefinitionOptInKeys.VOICE_AGENTS_V1_PREVIEW.toString()) + .getBetaAgentEndpointConversations()); + } + + /** + * Builds an instance of BetaAgentEndpointConversationsClient class. + * + * @return an instance of BetaAgentEndpointConversationsClient. + */ + @Generated + public BetaAgentEndpointConversationsClient buildBetaAgentEndpointConversationsClient() { + return new BetaAgentEndpointConversationsClient( + buildInnerClient(AgentDefinitionOptInKeys.VOICE_AGENTS_V1_PREVIEW.toString()) + .getBetaAgentEndpointConversations()); + } + + /** + * Builds an instance of AgentTelephonyAsyncClient class. + * + * @return an instance of AgentTelephonyAsyncClient. + */ + @Generated + public AgentTelephonyAsyncClient buildAgentTelephonyAsyncClient() { + return new AgentTelephonyAsyncClient(buildInnerClient().getAgentTelephonies()); + } + + /** + * Builds an instance of AgentTelephonyClient class. + * + * @return an instance of AgentTelephonyClient. + */ + @Generated + public AgentTelephonyClient buildAgentTelephonyClient() { + return new AgentTelephonyClient(buildInnerClient().getAgentTelephonies()); + } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaVoiceAgentWebSocketAsyncClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaVoiceAgentWebSocketAsyncClient.java new file mode 100644 index 0000000000000..54674c48b1fe6 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaVoiceAgentWebSocketAsyncClient.java @@ -0,0 +1,53 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents; + +import com.azure.ai.agents.implementation.realtime.VoiceAgentWebSocketClientConfiguration; +import com.azure.ai.agents.implementation.utils.Beta; +import com.azure.ai.agents.models.VoiceAgentWebSocketConnectionOptions; +import com.azure.core.annotation.ServiceClient; +import reactor.core.publisher.Mono; + +import java.util.Objects; + +/** + * An asynchronous client for opening realtime WebSocket sessions with Foundry voice agents. + */ +@ServiceClient(builder = AgentsClientBuilder.class, isAsync = true) +@Beta(warningText = "This class is in preview and may change in future releases.") +public final class BetaVoiceAgentWebSocketAsyncClient { + private final VoiceAgentWebSocketClientConfiguration configuration; + + BetaVoiceAgentWebSocketAsyncClient(VoiceAgentWebSocketClientConfiguration configuration) { + this.configuration = Objects.requireNonNull(configuration, "'configuration' cannot be null."); + } + + /** + * Opens a realtime WebSocket session using the voice agent's persisted configuration. + * + * @param agentName the voice agent name. + * @return a connected session. + */ + public Mono connect(String agentName) { + return connect(agentName, new VoiceAgentWebSocketConnectionOptions()); + } + + /** + * Opens a realtime WebSocket session. + * + * @param agentName the voice agent name. + * @param options connection options. + * @return a connected session. + */ + public Mono connect(String agentName, + VoiceAgentWebSocketConnectionOptions options) { + Objects.requireNonNull(agentName, "'agentName' cannot be null."); + Objects.requireNonNull(options, "'options' cannot be null."); + return Mono.defer(() -> { + VoiceAgentWebSocketSessionAsyncClient session + = new VoiceAgentWebSocketSessionAsyncClient(configuration, agentName, options); + return session.connect().thenReturn(session); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaVoiceAgentWebSocketClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaVoiceAgentWebSocketClient.java new file mode 100644 index 0000000000000..67508619fced7 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaVoiceAgentWebSocketClient.java @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents; + +import com.azure.ai.agents.implementation.realtime.VoiceAgentWebSocketClientConfiguration; +import com.azure.ai.agents.implementation.utils.Beta; +import com.azure.ai.agents.models.VoiceAgentWebSocketConnectionOptions; +import com.azure.core.annotation.ServiceClient; + +import java.util.Objects; + +/** + * A synchronous client for opening realtime WebSocket sessions with Foundry voice agents. + */ +@ServiceClient(builder = AgentsClientBuilder.class) +@Beta(warningText = "This class is in preview and may change in future releases.") +public final class BetaVoiceAgentWebSocketClient { + private final BetaVoiceAgentWebSocketAsyncClient asyncClient; + + BetaVoiceAgentWebSocketClient(VoiceAgentWebSocketClientConfiguration configuration) { + this.asyncClient = new BetaVoiceAgentWebSocketAsyncClient( + Objects.requireNonNull(configuration, "'configuration' cannot be null.")); + } + + /** + * Opens a realtime WebSocket session using the voice agent's persisted configuration. + * + * @param agentName the voice agent name. + * @return a connected session. + */ + public VoiceAgentWebSocketSessionClient connect(String agentName) { + return connect(agentName, new VoiceAgentWebSocketConnectionOptions()); + } + + /** + * Opens a realtime WebSocket session. + * + * @param agentName the voice agent name. + * @param options connection options. + * @return a connected session. + */ + public VoiceAgentWebSocketSessionClient connect(String agentName, VoiceAgentWebSocketConnectionOptions options) { + Objects.requireNonNull(options, "'options' cannot be null."); + VoiceAgentWebSocketSessionAsyncClient session + = asyncClient.connect(agentName, options).block(options.getHandshakeTimeout().plusSeconds(1)); + return new VoiceAgentWebSocketSessionClient(session); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionAsyncClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionAsyncClient.java new file mode 100644 index 0000000000000..b4802c16fa98b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionAsyncClient.java @@ -0,0 +1,624 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents; + +import com.azure.ai.agents.implementation.realtime.VoiceAgentWebSocketClientConfiguration; +import com.azure.ai.agents.implementation.realtime.VoiceAgentWebSocketHandshakeHandler; +import com.azure.ai.agents.implementation.realtime.VoiceAgentWebSocketHttpResponse; +import com.azure.ai.agents.implementation.utils.Beta; +import com.azure.ai.agents.models.RealtimeClientEvent; +import com.azure.ai.agents.models.RealtimeClientEventConversationItemCreate; +import com.azure.ai.agents.models.RealtimeClientEventInputAudioBufferAppend; +import com.azure.ai.agents.models.RealtimeClientEventInputAudioBufferClear; +import com.azure.ai.agents.models.RealtimeClientEventInputAudioBufferCommit; +import com.azure.ai.agents.models.RealtimeClientEventResponseCancel; +import com.azure.ai.agents.models.RealtimeClientEventResponseCreate; +import com.azure.ai.agents.models.RealtimeConversationItem; +import com.azure.ai.agents.models.RealtimeConversationItemFunctionCallOutput; +import com.azure.ai.agents.models.RealtimeConversationItemMessageUser; +import com.azure.ai.agents.models.RealtimeConversationItemMessageUserContent; +import com.azure.ai.agents.models.RealtimeConversationItemMessageUserContentType; +import com.azure.ai.agents.models.RealtimeServerEvent; +import com.azure.ai.agents.models.VoiceAgentResponseCreateParams; +import com.azure.ai.agents.models.VoiceAgentTransport; +import com.azure.ai.agents.models.VoiceAgentWebSocketConnectionOptions; +import com.azure.core.credential.AccessToken; +import com.azure.core.credential.TokenRequestContext; +import com.azure.core.exception.ClientAuthenticationException; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.HttpHeader; +import com.azure.core.http.HttpHeaderName; +import com.azure.core.http.ProxyOptions; +import com.azure.core.util.AsyncCloseable; +import com.azure.core.util.BinaryData; +import com.azure.core.util.logging.ClientLogger; +import com.azure.json.JsonProviders; +import com.azure.json.JsonWriter; +import io.netty.channel.Channel; +import io.netty.handler.codec.http.websocketx.BinaryWebSocketFrame; +import io.netty.handler.codec.http.websocketx.WebSocketClientHandshakeException; +import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; +import io.netty.handler.codec.http.websocketx.WebSocketFrame; +import reactor.core.Disposable; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.core.publisher.Sinks; +import reactor.netty.Connection; +import reactor.netty.http.client.HttpClient; +import reactor.netty.http.client.WebsocketClientSpec; +import reactor.netty.http.websocket.WebsocketInbound; +import reactor.netty.http.websocket.WebsocketOutbound; +import reactor.netty.transport.ProxyProvider; +import reactor.util.concurrent.Queues; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.net.URI; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.Base64; +import java.util.Collections; +import java.util.Locale; +import java.util.Objects; +import java.util.concurrent.Semaphore; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; + +/** + * An asynchronous bidirectional realtime session connected to a Foundry voice agent. + * + *

Instances are created by {@link BetaVoiceAgentWebSocketAsyncClient#connect(String)}. A session supports one + * subscriber to {@link #receiveEvents()}. Close the session when it is no longer needed.

+ */ +@Beta(warningText = "This class is in preview and may change in future releases.") +public final class VoiceAgentWebSocketSessionAsyncClient implements AsyncCloseable, AutoCloseable { + private static final ClientLogger LOGGER = new ClientLogger(VoiceAgentWebSocketSessionAsyncClient.class); + private static final String TOKEN_SCOPE = "https://ai.azure.com/.default"; + private static final String PREVIEW_FEATURE = "VoiceAgents=V1Preview"; + private static final String SUBPROTOCOL = "realtime"; + private static final int MAX_FRAME_SIZE = 32 * 1024 * 1024; + private static final int INBOUND_CAPACITY = 256; + private static final int MAX_OUTSTANDING_SENDS = 256; + + private final VoiceAgentWebSocketClientConfiguration configuration; + private final VoiceAgentWebSocketConnectionOptions options; + private final HttpClient httpClient; + private final URI websocketUri; + private final AtomicReference state = new AtomicReference<>(State.NEW); + private final AtomicReference channel = new AtomicReference<>(); + private final AtomicReference outbound = new AtomicReference<>(); + private final AtomicReference lifecycle = new AtomicReference<>(); + private final AtomicBoolean receiveClaimed = new AtomicBoolean(); + private final Semaphore sendPermits = new Semaphore(MAX_OUTSTANDING_SENDS); + private final Sinks.Many events + = Sinks.many().unicast().onBackpressureBuffer(Queues.get(INBOUND_CAPACITY).get()); + private final Sinks.One ready = Sinks.one(); + private final Sinks.One closeSignal = Sinks.one(); + private final AtomicReference> closeOperation = new AtomicReference<>(); + + private volatile Integer closeCode; + private volatile String closeReason; + + VoiceAgentWebSocketSessionAsyncClient(VoiceAgentWebSocketClientConfiguration configuration, String agentName, + VoiceAgentWebSocketConnectionOptions options) { + this(configuration, agentName, options, HttpClient.create()); + } + + VoiceAgentWebSocketSessionAsyncClient(VoiceAgentWebSocketClientConfiguration configuration, String agentName, + VoiceAgentWebSocketConnectionOptions options, HttpClient httpClient) { + this.configuration = Objects.requireNonNull(configuration, "'configuration' cannot be null."); + Objects.requireNonNull(agentName, "'agentName' cannot be null."); + if (agentName.isEmpty()) { + throw new IllegalArgumentException("'agentName' cannot be empty."); + } + this.options = options == null ? new VoiceAgentWebSocketConnectionOptions() : options; + this.httpClient = Objects.requireNonNull(httpClient, "'httpClient' cannot be null."); + this.websocketUri = buildWebSocketUri(configuration, agentName, this.options); + } + + Mono connect() { + return Mono.defer(() -> { + if (!state.compareAndSet(State.NEW, State.CONNECTING)) { + return Mono.error(new IllegalStateException("The voice-agent session has already been started.")); + } + + TokenRequestContext tokenContext = new TokenRequestContext().addScopes(TOKEN_SCOPE); + configuration.getCredential() + .getToken(tokenContext) + .map(AccessToken::getToken) + .flatMap(this::openWebSocket) + .subscribe(unused -> { + }, this::terminateWithError, this::terminateNormally); + return ready.asMono().timeout(options.getHandshakeTimeout()); + }); + } + + /** + * Gets the WebSocket endpoint used by this session. + * + * @return the WebSocket endpoint. + */ + public URI getEndpoint() { + return websocketUri; + } + + /** + * Determines whether the WebSocket session is open. + * + * @return {@code true} when the session is open. + */ + public boolean isOpen() { + Channel current = channel.get(); + return state.get() == State.OPEN && current != null && current.isActive(); + } + + /** + * Gets the peer close code after the session closes. + * + * @return the close code, or {@code null} when no close frame has been received. + */ + public Integer getCloseCode() { + return closeCode; + } + + /** + * Gets the peer close reason after the session closes. + * + * @return the close reason, or {@code null} when no close frame has been received. + */ + public String getCloseReason() { + return closeReason; + } + + /** + * Receives typed server events in wire order. Only one subscriber is supported per session. + * + * @return the server event stream. + */ + public Flux receiveEvents() { + return Flux.defer(() -> receiveClaimed.compareAndSet(false, true) + ? events.asFlux() + : Flux.error(new IllegalStateException("Only one receiveEvents subscriber is supported per session."))); + } + + /** + * Sends a typed realtime client event. + * + * @param event the event to send. + * @return a completion signal emitted after the frame is written. + */ + public Mono sendEvent(RealtimeClientEvent event) { + Objects.requireNonNull(event, "'event' cannot be null."); + return Mono.defer(() -> { + Channel current = requireOpenChannel(); + if (!sendPermits.tryAcquire()) { + return Mono.error(new IllegalStateException("Too many voice-agent WebSocket sends are outstanding.")); + } + + final String json; + try { + json = serialize(event); + } catch (IOException error) { + sendPermits.release(); + return Mono + .error(new IllegalArgumentException("Failed to serialize the realtime client event.", error)); + } + + return Mono.create(sink -> current.writeAndFlush(new TextWebSocketFrame(json)).addListener(result -> { + sendPermits.release(); + if (result.isSuccess()) { + sink.success(); + } else { + sink.error(result.cause()); + } + })); + }); + } + + /** + * Adds an item to the session conversation. + * + * @param item the item to add. + * @return a completion signal emitted after the event is written. + */ + public Mono createConversationItem(RealtimeConversationItem item) { + return createConversationItem(item, null); + } + + /** + * Adds an item after a specific conversation item. + * + * @param item the item to add. + * @param previousItemId the preceding item identifier, or {@code null} to append. + * @return a completion signal emitted after the event is written. + */ + public Mono createConversationItem(RealtimeConversationItem item, String previousItemId) { + Objects.requireNonNull(item, "'item' cannot be null."); + return sendEvent(new RealtimeClientEventConversationItemCreate(item).setPreviousItemId(previousItemId)); + } + + /** + * Adds a user text message to the session conversation. + * + * @param text the user message. + * @return a completion signal emitted after the event is written. + */ + public Mono sendText(String text) { + Objects.requireNonNull(text, "'text' cannot be null."); + RealtimeConversationItemMessageUserContent content = new RealtimeConversationItemMessageUserContent() + .setType(RealtimeConversationItemMessageUserContentType.INPUT_TEXT) + .setText(text); + return createConversationItem(new RealtimeConversationItemMessageUser(Collections.singletonList(content))); + } + + /** + * Appends PCM or encoded audio bytes to the input audio buffer. + * + * @param audio the bytes in the input format configured by the voice agent. + * @return a completion signal emitted after the event is written. + */ + public Mono appendInputAudio(BinaryData audio) { + Objects.requireNonNull(audio, "'audio' cannot be null."); + String encoded = Base64.getEncoder().encodeToString(audio.toBytes()); + return sendEvent(new RealtimeClientEventInputAudioBufferAppend(encoded)); + } + + /** + * Clears the input audio buffer. + * + * @return a completion signal emitted after the event is written. + */ + public Mono clearInputAudio() { + return sendEvent(new RealtimeClientEventInputAudioBufferClear()); + } + + /** + * Commits the input audio buffer. + * + * @return a completion signal emitted after the event is written. + */ + public Mono commitInputAudio() { + return sendEvent(new RealtimeClientEventInputAudioBufferCommit()); + } + + /** + * Requests a response using the persisted voice-agent configuration. + * + * @return a completion signal emitted after the event is written. + */ + public Mono createResponse() { + return sendEvent(new RealtimeClientEventResponseCreate()); + } + + /** + * Requests a response with per-response options. + * + * @param responseOptions the response options. + * @return a completion signal emitted after the event is written. + */ + public Mono createResponse(VoiceAgentResponseCreateParams responseOptions) { + Objects.requireNonNull(responseOptions, "'responseOptions' cannot be null."); + return sendEvent(new RealtimeClientEventResponseCreate().setResponse(responseOptions)); + } + + /** + * Cancels the response currently writing to the default conversation. + * + * @return a completion signal emitted after the event is written. + */ + public Mono cancelResponse() { + return sendEvent(new RealtimeClientEventResponseCancel()); + } + + /** + * Cancels a specific response. + * + * @param responseId the response identifier. + * @return a completion signal emitted after the event is written. + */ + public Mono cancelResponse(String responseId) { + Objects.requireNonNull(responseId, "'responseId' cannot be null."); + return sendEvent(new RealtimeClientEventResponseCancel().setResponseId(responseId)); + } + + /** + * Sends a function-call result and requests the next response. + * + * @param callId the function call identifier. + * @param output the serialized function result. + * @return a completion signal emitted after both events are written. + */ + public Mono sendFunctionCallOutput(String callId, String output) { + RealtimeConversationItemFunctionCallOutput item + = new RealtimeConversationItemFunctionCallOutput(callId, output); + return createConversationItem(item).then(createResponse()); + } + + /** + * Closes the WebSocket session. + * + * @return a completion signal for closing the session. + */ + @Override + public Mono closeAsync() { + Mono existing = closeOperation.get(); + if (existing != null) { + return existing; + } + + Mono created = Mono.defer(() -> { + State current = state.get(); + if (current == State.CLOSED || current == State.NEW) { + state.set(State.CLOSED); + events.tryEmitComplete(); + return Mono.empty(); + } + state.set(State.CLOSING); + WebsocketOutbound currentOutbound = outbound.get(); + Channel currentChannel = channel.get(); + Mono graceful = currentOutbound == null ? Mono.empty() : currentOutbound.sendClose(1000, ""); + Mono disposed = currentChannel == null ? Mono.empty() : Connection.from(currentChannel).onDispose(); + return graceful.then(disposed).timeout(options.getCloseTimeout()).onErrorResume(error -> { + if (currentChannel != null) { + currentChannel.close(); + } + return Mono.empty(); + }).doFinally(signal -> terminateNormally()); + }).cache(); + + if (closeOperation.compareAndSet(null, created)) { + return created; + } + return closeOperation.get(); + } + + /** + * Closes the WebSocket session synchronously. + */ + @Override + public void close() { + closeAsync().block(options.getCloseTimeout().plusSeconds(1)); + } + + private Mono openWebSocket(String token) { + HttpClient client = configureProxy(httpClient).followRedirect(false) + .responseTimeout(options.getHandshakeTimeout()) + .doOnConnected(connection -> connection.addHandlerLast("voiceAgentHandshakeResponseObserver", + new VoiceAgentWebSocketHandshakeHandler(this::terminateWithError))) + .headers(headers -> { + for (HttpHeader header : configuration.getHeaders()) { + if (!isProtectedHeader(header.getName())) { + headers.set(header.getName(), header.getValue()); + } + } + headers.set(HttpHeaderName.AUTHORIZATION.getCaseInsensitiveName(), "Bearer " + token); + headers.set(HttpHeaderName.USER_AGENT.getCaseInsensitiveName(), configuration.getUserAgent()); + headers.set("Foundry-Features", PREVIEW_FEATURE); + }); + WebsocketClientSpec spec = WebsocketClientSpec.builder() + .protocols(SUBPROTOCOL) + .maxFramePayloadLength(MAX_FRAME_SIZE) + .handlePing(false) + .build(); + + return client.websocket(spec).uri(websocketUri.toString()).connect().flatMap(connection -> { + if (!(connection instanceof WebsocketInbound) || !(connection instanceof WebsocketOutbound)) { + return Mono.error(new IllegalStateException("The WebSocket transport returned an invalid connection.")); + } + return handleConnection((WebsocketInbound) connection, (WebsocketOutbound) connection); + }); + } + + private Mono handleConnection(WebsocketInbound inbound, WebsocketOutbound outbound) { + this.outbound.set(outbound); + inbound.withConnection(connection -> channel.set(connection.channel())); + state.set(State.OPEN); + ready.tryEmitEmpty(); + + inbound.receiveCloseStatus().subscribe(status -> { + closeCode = status.code(); + closeReason = status.reasonText(); + }, error -> LOGGER.atVerbose().addKeyValue("error", error.getMessage()).log("Close status unavailable.")); + + Disposable receive = inbound.aggregateFrames(MAX_FRAME_SIZE) + .receiveFrames() + .subscribe(this::handleFrame, this::terminateWithError, this::terminateNormally); + lifecycle.set(receive); + return closeSignal.asMono(); + } + + private void handleFrame(WebSocketFrame frame) { + if (frame instanceof TextWebSocketFrame) { + try { + RealtimeServerEvent event + = RealtimeServerEvent.fromJson(JsonProviders.createReader(((TextWebSocketFrame) frame).text())); + Sinks.EmitResult result = events.tryEmitNext(event); + if (result.isFailure()) { + terminateWithError(new IllegalStateException("Voice-agent receive buffer overflow: " + result)); + } + } catch (IOException | RuntimeException error) { + closeWithProtocolError(1007, "Invalid JSON event", error); + } + } else if (frame instanceof BinaryWebSocketFrame) { + closeWithProtocolError(1003, "Binary frames are not supported", + new IllegalArgumentException("The voice-agent protocol requires JSON text frames.")); + } + } + + private void closeWithProtocolError(int code, String reason, Throwable error) { + WebsocketOutbound current = outbound.get(); + terminateWithError(error); + if (current != null) { + current.sendClose(code, reason).subscribe(unused -> { + }, ignored -> { + }); + } + } + + private void terminateWithError(Throwable error) { + Throwable mappedError = mapHandshakeError(error); + State previous = state.getAndSet(State.CLOSED); + if (previous == State.CLOSED) { + return; + } + ready.tryEmitError(mappedError); + events.tryEmitError(mappedError); + closeSignal.tryEmitError(mappedError); + disposeReceive(); + } + + private Throwable mapHandshakeError(Throwable error) { + Throwable current = error; + while (current != null && !(current instanceof WebSocketClientHandshakeException)) { + current = current.getCause(); + } + if (!(current instanceof WebSocketClientHandshakeException)) { + return error; + } + WebSocketClientHandshakeException handshakeError = (WebSocketClientHandshakeException) current; + if (handshakeError.response() == null) { + return error; + } + VoiceAgentWebSocketHttpResponse response + = new VoiceAgentWebSocketHttpResponse(websocketUri, handshakeError.response()); + String message = "Voice-agent WebSocket handshake failed with status " + response.getStatusCode() + "."; + switch (response.getStatusCode()) { + case 401: + return new ClientAuthenticationException(message, response, error); + + case 404: + return new ResourceNotFoundException(message, response, error); + + case 409: + return new ResourceModifiedException(message, response, error); + + default: + return new HttpResponseException(message, response, error); + } + } + + private void terminateNormally() { + State previous = state.getAndSet(State.CLOSED); + if (previous == State.CLOSED) { + return; + } + if (previous == State.CONNECTING) { + ready.tryEmitError(new IllegalStateException("The WebSocket closed before the handshake completed.")); + } + events.tryEmitComplete(); + closeSignal.tryEmitEmpty(); + disposeReceive(); + } + + private void disposeReceive() { + Disposable receive = lifecycle.getAndSet(null); + if (receive != null && !receive.isDisposed()) { + receive.dispose(); + } + } + + private Channel requireOpenChannel() { + Channel current = channel.get(); + if (state.get() != State.OPEN || current == null || !current.isActive()) { + throw LOGGER + .logExceptionAsError(new IllegalStateException("The voice-agent WebSocket session is not open.")); + } + return current; + } + + private HttpClient configureProxy(HttpClient client) { + ProxyOptions proxy = configuration.getProxyOptions(); + if (proxy == null) { + return client; + } + return client.proxy(typeSpec -> { + ProxyProvider.Proxy proxyType; + switch (proxy.getType()) { + case SOCKS4: + proxyType = ProxyProvider.Proxy.SOCKS4; + break; + + case SOCKS5: + proxyType = ProxyProvider.Proxy.SOCKS5; + break; + + default: + proxyType = ProxyProvider.Proxy.HTTP; + break; + } + ProxyProvider.Builder builder = typeSpec.type(proxyType).socketAddress(proxy.getAddress()); + if (proxy.getUsername() != null) { + builder.username(proxy.getUsername()).password(ignored -> proxy.getPassword()); + } + if (proxy.getNonProxyHosts() != null) { + builder.nonProxyHosts(proxy.getNonProxyHosts()); + } + }); + } + + private static boolean isProtectedHeader(String name) { + String lower = name.toLowerCase(Locale.ROOT); + return "authorization".equals(lower) + || "host".equals(lower) + || "upgrade".equals(lower) + || "connection".equals(lower) + || "foundry-features".equals(lower) + || "sec-websocket-protocol".equals(lower) + || lower.startsWith("sec-websocket-"); + } + + private static String serialize(RealtimeClientEvent event) throws IOException { + ByteArrayOutputStream output = new ByteArrayOutputStream(); + try (JsonWriter writer = JsonProviders.createWriter(output)) { + event.toJson(writer); + } + return output.toString(StandardCharsets.UTF_8.name()); + } + + private static URI buildWebSocketUri(VoiceAgentWebSocketClientConfiguration configuration, String agentName, + VoiceAgentWebSocketConnectionOptions options) { + URI endpoint = configuration.getEndpoint(); + String scheme; + if ("https".equalsIgnoreCase(endpoint.getScheme()) || "wss".equalsIgnoreCase(endpoint.getScheme())) { + scheme = "wss"; + } else if ("http".equalsIgnoreCase(endpoint.getScheme()) || "ws".equalsIgnoreCase(endpoint.getScheme())) { + scheme = "ws"; + } else { + throw new IllegalArgumentException("Unsupported endpoint scheme: " + endpoint.getScheme()); + } + + String basePath = endpoint.getRawPath() == null ? "" : endpoint.getRawPath().replaceAll("/$", ""); + String path = basePath + "/agents/" + encode(agentName) + "/endpoint/protocols/voice"; + StringBuilder query = new StringBuilder("api-version=").append(encode(configuration.getApiVersion())) + .append("&x-ms-client-sdk=") + .append(encode(configuration.getUserAgent())); + VoiceAgentTransport transport = options.getTransport(); + if (transport != null) { + query.append("&transport=").append(encode(transport.toString())); + } + if (options.isStoreEnabled() != null) { + query.append("&store=").append(options.isStoreEnabled()); + } + if (options.getAgentVersionOverride() != null) { + query.append("&x-agent-version-override=").append(encode(options.getAgentVersionOverride())); + } + + String authority = endpoint.getRawAuthority(); + return URI.create(scheme + "://" + authority + path + "?" + query); + } + + private static String encode(String value) { + try { + return URLEncoder.encode(value, StandardCharsets.UTF_8.name()).replace("+", "%20"); + } catch (Exception error) { + throw new IllegalStateException("UTF-8 encoding is unavailable.", error); + } + } + + private enum State { + NEW, CONNECTING, OPEN, CLOSING, CLOSED + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionClient.java new file mode 100644 index 0000000000000..43983c8869014 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionClient.java @@ -0,0 +1,184 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents; + +import com.azure.ai.agents.implementation.utils.Beta; +import com.azure.ai.agents.models.RealtimeClientEvent; +import com.azure.ai.agents.models.RealtimeConversationItem; +import com.azure.ai.agents.models.RealtimeServerEvent; +import com.azure.ai.agents.models.VoiceAgentResponseCreateParams; +import com.azure.core.util.BinaryData; +import com.azure.core.util.IterableStream; + +import java.net.URI; +import java.time.Duration; +import java.util.Objects; + +/** + * A synchronous bidirectional realtime session connected to a Foundry voice agent. + */ +@Beta(warningText = "This class is in preview and may change in future releases.") +public final class VoiceAgentWebSocketSessionClient implements AutoCloseable { + private static final Duration OPERATION_TIMEOUT = Duration.ofSeconds(30); + private final VoiceAgentWebSocketSessionAsyncClient asyncClient; + + VoiceAgentWebSocketSessionClient(VoiceAgentWebSocketSessionAsyncClient asyncClient) { + this.asyncClient = Objects.requireNonNull(asyncClient, "'asyncClient' cannot be null."); + } + + /** + * Gets the WebSocket endpoint used by this session. + * + * @return the WebSocket endpoint. + */ + public URI getEndpoint() { + return asyncClient.getEndpoint(); + } + + /** + * Determines whether the session is open. + * + * @return {@code true} when the session is open. + */ + public boolean isOpen() { + return asyncClient.isOpen(); + } + + /** + * Gets the peer close code. + * + * @return the close code, or {@code null}. + */ + public Integer getCloseCode() { + return asyncClient.getCloseCode(); + } + + /** + * Gets the peer close reason. + * + * @return the close reason, or {@code null}. + */ + public String getCloseReason() { + return asyncClient.getCloseReason(); + } + + /** + * Receives typed server events in wire order. The returned stream may be iterated once. + * + * @return the server event stream. + */ + public IterableStream receiveEvents() { + return new IterableStream<>(asyncClient.receiveEvents()); + } + + /** + * Sends a typed realtime client event. + * + * @param event the event to send. + */ + public void sendEvent(RealtimeClientEvent event) { + asyncClient.sendEvent(event).block(OPERATION_TIMEOUT); + } + + /** + * Adds a conversation item. + * + * @param item the item to add. + */ + public void createConversationItem(RealtimeConversationItem item) { + asyncClient.createConversationItem(item).block(OPERATION_TIMEOUT); + } + + /** + * Adds a conversation item after another item. + * + * @param item the item to add. + * @param previousItemId the preceding item identifier. + */ + public void createConversationItem(RealtimeConversationItem item, String previousItemId) { + asyncClient.createConversationItem(item, previousItemId).block(OPERATION_TIMEOUT); + } + + /** + * Adds a user text message. + * + * @param text the user message. + */ + public void sendText(String text) { + asyncClient.sendText(text).block(OPERATION_TIMEOUT); + } + + /** + * Appends audio to the input buffer. + * + * @param audio the audio bytes. + */ + public void appendInputAudio(BinaryData audio) { + asyncClient.appendInputAudio(audio).block(OPERATION_TIMEOUT); + } + + /** + * Clears the input audio buffer. + */ + public void clearInputAudio() { + asyncClient.clearInputAudio().block(OPERATION_TIMEOUT); + } + + /** + * Commits the input audio buffer. + */ + public void commitInputAudio() { + asyncClient.commitInputAudio().block(OPERATION_TIMEOUT); + } + + /** + * Requests a response using the voice agent's configuration. + */ + public void createResponse() { + asyncClient.createResponse().block(OPERATION_TIMEOUT); + } + + /** + * Requests a response with per-response options. + * + * @param responseOptions response options. + */ + public void createResponse(VoiceAgentResponseCreateParams responseOptions) { + asyncClient.createResponse(responseOptions).block(OPERATION_TIMEOUT); + } + + /** + * Cancels the active response. + */ + public void cancelResponse() { + asyncClient.cancelResponse().block(OPERATION_TIMEOUT); + } + + /** + * Cancels a specific response. + * + * @param responseId the response identifier. + */ + public void cancelResponse(String responseId) { + asyncClient.cancelResponse(responseId).block(OPERATION_TIMEOUT); + } + + /** + * Sends a function-call result and requests the next response. + * + * @param callId the function call identifier. + * @param output the serialized function output. + */ + public void sendFunctionCallOutput(String callId, String output) { + asyncClient.sendFunctionCallOutput(callId, output).block(OPERATION_TIMEOUT); + } + + /** + * Closes the session. + */ + @Override + public void close() { + asyncClient.close(); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsClientImpl.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsClientImpl.java index d5d107362708b..5bdc71f02a492 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsClientImpl.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsClientImpl.java @@ -80,6 +80,20 @@ public SerializerAdapter getSerializerAdapter() { return this.serializerAdapter; } + /** + * The BetaAgentEndpointConversationsImpl object to access its operations. + */ + private final BetaAgentEndpointConversationsImpl betaAgentEndpointConversations; + + /** + * Gets the BetaAgentEndpointConversationsImpl object to access its operations. + * + * @return the BetaAgentEndpointConversationsImpl object. + */ + public BetaAgentEndpointConversationsImpl getBetaAgentEndpointConversations() { + return this.betaAgentEndpointConversations; + } + /** * The BetaMemoryStoresImpl object to access its operations. */ @@ -122,6 +136,20 @@ public AgentsImpl getAgents() { return this.agents; } + /** + * The AgentTelephoniesImpl object to access its operations. + */ + private final AgentTelephoniesImpl agentTelephonies; + + /** + * Gets the AgentTelephoniesImpl object to access its operations. + * + * @return the AgentTelephoniesImpl object. + */ + public AgentTelephoniesImpl getAgentTelephonies() { + return this.agentTelephonies; + } + /** * The ToolboxesImpl object to access its operations. */ @@ -184,9 +212,11 @@ public AgentsClientImpl(HttpPipeline httpPipeline, SerializerAdapter serializerA this.serializerAdapter = serializerAdapter; this.endpoint = endpoint; this.serviceVersion = serviceVersion; + this.betaAgentEndpointConversations = new BetaAgentEndpointConversationsImpl(this); this.betaMemoryStores = new BetaMemoryStoresImpl(this); this.betaAgents = new BetaAgentsImpl(this); this.agents = new AgentsImpl(this); + this.agentTelephonies = new AgentTelephoniesImpl(this); this.toolboxes = new ToolboxesImpl(this); } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java index 60d95512de9c3..948367d828f4b 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java @@ -6526,9 +6526,7 @@ public Response getMicrosoft365PublishDefaultsWithResponse(String ag * id: String (Required) * object: String (Required) * metadata (Required): { - * (Optional): { - * String: String (Required) - * } + * String: String (Required) * } * created_at: long (Required) * } @@ -6598,9 +6596,7 @@ private Mono> listAgentConversationsSinglePageAsync(Re * id: String (Required) * object: String (Required) * metadata (Required): { - * (Optional): { - * String: String (Required) - * } + * String: String (Required) * } * created_at: long (Required) * } @@ -6664,9 +6660,7 @@ public PagedFlux listAgentConversationsAsync(RequestOptions requestO * id: String (Required) * object: String (Required) * metadata (Required): { - * (Optional): { - * String: String (Required) - * } + * String: String (Required) * } * created_at: long (Required) * } @@ -6734,9 +6728,7 @@ private PagedResponse listAgentConversationsSinglePage(RequestOption * id: String (Required) * object: String (Required) * metadata (Required): { - * (Optional): { - * String: String (Required) - * } + * String: String (Required) * } * created_at: long (Required) * } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketClientConfiguration.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketClientConfiguration.java new file mode 100644 index 0000000000000..63a8758e15a44 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketClientConfiguration.java @@ -0,0 +1,97 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.implementation.realtime; + +import com.azure.core.credential.TokenCredential; +import com.azure.core.http.HttpHeaders; +import com.azure.core.http.ProxyOptions; + +import java.net.URI; +import java.util.Objects; + +/** + * Immutable configuration used by the voice-agent WebSocket clients. + */ +public final class VoiceAgentWebSocketClientConfiguration { + private final URI endpoint; + private final TokenCredential credential; + private final String apiVersion; + private final String userAgent; + private final HttpHeaders headers; + private final ProxyOptions proxyOptions; + + /** + * Creates the connection configuration. + * + * @param endpoint the Foundry project endpoint. + * @param credential the credential used for authentication. + * @param apiVersion the service API version. + * @param userAgent the SDK user agent. + * @param headers safe additional handshake headers. + * @param proxyOptions proxy settings loaded from configuration. + */ + public VoiceAgentWebSocketClientConfiguration(URI endpoint, TokenCredential credential, String apiVersion, + String userAgent, HttpHeaders headers, ProxyOptions proxyOptions) { + this.endpoint = Objects.requireNonNull(endpoint, "'endpoint' cannot be null."); + this.credential = Objects.requireNonNull(credential, "'credential' cannot be null."); + this.apiVersion = Objects.requireNonNull(apiVersion, "'apiVersion' cannot be null."); + this.userAgent = Objects.requireNonNull(userAgent, "'userAgent' cannot be null."); + this.headers = headers == null ? new HttpHeaders() : headers; + this.proxyOptions = proxyOptions; + } + + /** + * Gets the endpoint. + * + * @return the endpoint. + */ + public URI getEndpoint() { + return endpoint; + } + + /** + * Gets the credential. + * + * @return the credential. + */ + public TokenCredential getCredential() { + return credential; + } + + /** + * Gets the API version. + * + * @return the API version. + */ + public String getApiVersion() { + return apiVersion; + } + + /** + * Gets the user agent. + * + * @return the user agent. + */ + public String getUserAgent() { + return userAgent; + } + + /** + * Gets safe additional headers. + * + * @return safe additional headers. + */ + public HttpHeaders getHeaders() { + return headers; + } + + /** + * Gets proxy settings. + * + * @return proxy settings, or {@code null}. + */ + public ProxyOptions getProxyOptions() { + return proxyOptions; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketHandshakeHandler.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketHandshakeHandler.java new file mode 100644 index 0000000000000..b9fb4e44dd62e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketHandshakeHandler.java @@ -0,0 +1,42 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.implementation.realtime; + +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelInboundHandlerAdapter; +import io.netty.handler.codec.http.HttpResponse; +import io.netty.handler.codec.http.HttpResponseStatus; +import io.netty.handler.codec.http.websocketx.WebSocketClientHandshakeException; + +import java.util.Objects; +import java.util.function.Consumer; + +/** + * Observes the HTTP response used for a WebSocket upgrade and reports rejected handshakes. + */ +public final class VoiceAgentWebSocketHandshakeHandler extends ChannelInboundHandlerAdapter { + private final Consumer errorConsumer; + + /** + * Creates a handshake response observer. + * + * @param errorConsumer consumer invoked when the server rejects the upgrade. + */ + public VoiceAgentWebSocketHandshakeHandler(Consumer errorConsumer) { + this.errorConsumer = Objects.requireNonNull(errorConsumer, "'errorConsumer' cannot be null."); + } + + @Override + public void channelRead(ChannelHandlerContext context, Object message) { + if (message instanceof HttpResponse) { + HttpResponse response = (HttpResponse) message; + if (!HttpResponseStatus.SWITCHING_PROTOCOLS.equals(response.status())) { + errorConsumer + .accept(new WebSocketClientHandshakeException("Voice-agent WebSocket handshake failed.", response)); + context.close(); + } + } + context.fireChannelRead(message); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketHttpResponse.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketHttpResponse.java new file mode 100644 index 0000000000000..b1a2d50f20b76 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketHttpResponse.java @@ -0,0 +1,87 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.implementation.realtime; + +import com.azure.core.http.HttpHeaderName; +import com.azure.core.http.HttpHeaders; +import com.azure.core.http.HttpMethod; +import com.azure.core.http.HttpRequest; +import com.azure.core.http.HttpResponse; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.net.URI; +import java.nio.ByteBuffer; +import java.nio.charset.Charset; +import java.util.Map; + +/** + * Azure Core response adapter for a rejected WebSocket handshake. + */ +public final class VoiceAgentWebSocketHttpResponse extends HttpResponse { + private final int statusCode; + private final HttpHeaders headers; + + /** + * Creates a response adapter. + * + * @param endpoint the WebSocket endpoint. + * @param response the rejected Netty handshake response. + */ + public VoiceAgentWebSocketHttpResponse(URI endpoint, io.netty.handler.codec.http.HttpResponse response) { + super(new HttpRequest(HttpMethod.GET, toHttpUrl(endpoint))); + this.statusCode = response.status().code(); + this.headers = new HttpHeaders(); + for (Map.Entry header : response.headers()) { + this.headers.set(com.azure.core.http.HttpHeaderName.fromString(header.getKey()), header.getValue()); + } + } + + private static String toHttpUrl(URI endpoint) { + String endpointUrl = endpoint.toString(); + if ("wss".equalsIgnoreCase(endpoint.getScheme())) { + return "https" + endpointUrl.substring(endpoint.getScheme().length()); + } + if ("ws".equalsIgnoreCase(endpoint.getScheme())) { + return "http" + endpointUrl.substring(endpoint.getScheme().length()); + } + return endpointUrl; + } + + @Override + public int getStatusCode() { + return statusCode; + } + + @Override + @SuppressWarnings("deprecation") + public String getHeaderValue(String name) { + return headers.getValue(HttpHeaderName.fromString(name)); + } + + @Override + public HttpHeaders getHeaders() { + return headers; + } + + @Override + public Flux getBody() { + return Flux.empty(); + } + + @Override + public Mono getBodyAsByteArray() { + return Mono.just(new byte[0]); + } + + @Override + public Mono getBodyAsString() { + return Mono.just(""); + } + + @Override + public Mono getBodyAsString(Charset charset) { + return Mono.just(""); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AudioTranscription.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AudioTranscription.java new file mode 100644 index 0000000000000..e8dedb092f651 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AudioTranscription.java @@ -0,0 +1,298 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * The AudioTranscription model. + */ +@Fluent +public final class AudioTranscription implements JsonSerializable { + + /* + * The model to use for transcription. Current options are `whisper-1`, `gpt-transcribe`, `gpt-live-transcribe`, + * `gpt-4o-mini-transcribe`, `gpt-4o-mini-transcribe-2025-12-15`, `gpt-4o-transcribe`, `gpt-4o-transcribe-diarize`, + * and `gpt-realtime-whisper`. Use `gpt-4o-transcribe-diarize` when you need diarization with speaker labels. + */ + @Generated + private AudioTranscriptionModel model; + + /* + * + * The language of the input audio. Supplying the input language in + * [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) (e.g. `en`) format + * will improve accuracy and latency. + */ + @Generated + private String language; + + /* + * Possible languages of the input audio, in [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) + * format. Supported by `gpt-transcribe` and `gpt-live-transcribe`. + */ + @Generated + private List languages; + + /* + * Words or phrases to guide transcription of the input audio. Supported by `gpt-transcribe` and + * `gpt-live-transcribe`. + */ + @Generated + private List keywords; + + /* + * + * An optional text to guide the model's style or continue a previous audio + * segment. + * For `whisper-1`, the [prompt is a list of keywords](/docs/guides/speech-to-text#prompting). + * For `gpt-4o-transcribe` models (excluding `gpt-4o-transcribe-diarize`), the prompt is a free text string, for + * example "expect words related to technology". + * Prompt is not supported with `gpt-realtime-whisper` in GA Realtime sessions. + */ + @Generated + private String prompt; + + /* + * Controls how long the model waits before emitting transcription text. + * Higher values can improve transcription accuracy at the cost of latency. + * Only supported with `gpt-realtime-whisper` in GA Realtime sessions. + */ + @Generated + private VoiceAgentAudioInputConfigTranscriptionDelay delay; + + /** + * Creates an instance of AudioTranscription class. + */ + @Generated + public AudioTranscription() { + } + + /** + * Get the model property: The model to use for transcription. Current options are `whisper-1`, `gpt-transcribe`, + * `gpt-live-transcribe`, `gpt-4o-mini-transcribe`, `gpt-4o-mini-transcribe-2025-12-15`, `gpt-4o-transcribe`, + * `gpt-4o-transcribe-diarize`, and `gpt-realtime-whisper`. Use `gpt-4o-transcribe-diarize` when you need + * diarization with speaker labels. + * + * @return the model value. + */ + @Generated + public AudioTranscriptionModel getModel() { + return this.model; + } + + /** + * Set the model property: The model to use for transcription. Current options are `whisper-1`, `gpt-transcribe`, + * `gpt-live-transcribe`, `gpt-4o-mini-transcribe`, `gpt-4o-mini-transcribe-2025-12-15`, `gpt-4o-transcribe`, + * `gpt-4o-transcribe-diarize`, and `gpt-realtime-whisper`. Use `gpt-4o-transcribe-diarize` when you need + * diarization with speaker labels. + * + * @param model the model value to set. + * @return the AudioTranscription object itself. + */ + @Generated + public AudioTranscription setModel(AudioTranscriptionModel model) { + this.model = model; + return this; + } + + /** + * Get the language property: + * The language of the input audio. Supplying the input language in + * [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) (e.g. `en`) format + * will improve accuracy and latency. + * + * @return the language value. + */ + @Generated + public String getLanguage() { + return this.language; + } + + /** + * Set the language property: + * The language of the input audio. Supplying the input language in + * [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) (e.g. `en`) format + * will improve accuracy and latency. + * + * @param language the language value to set. + * @return the AudioTranscription object itself. + */ + @Generated + public AudioTranscription setLanguage(String language) { + this.language = language; + return this; + } + + /** + * Get the languages property: Possible languages of the input audio, in + * [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format. Supported by `gpt-transcribe` and + * `gpt-live-transcribe`. + * + * @return the languages value. + */ + @Generated + public List getLanguages() { + return this.languages; + } + + /** + * Set the languages property: Possible languages of the input audio, in + * [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format. Supported by `gpt-transcribe` and + * `gpt-live-transcribe`. + * + * @param languages the languages value to set. + * @return the AudioTranscription object itself. + */ + @Generated + public AudioTranscription setLanguages(List languages) { + this.languages = languages; + return this; + } + + /** + * Get the keywords property: Words or phrases to guide transcription of the input audio. Supported by + * `gpt-transcribe` and `gpt-live-transcribe`. + * + * @return the keywords value. + */ + @Generated + public List getKeywords() { + return this.keywords; + } + + /** + * Set the keywords property: Words or phrases to guide transcription of the input audio. Supported by + * `gpt-transcribe` and `gpt-live-transcribe`. + * + * @param keywords the keywords value to set. + * @return the AudioTranscription object itself. + */ + @Generated + public AudioTranscription setKeywords(List keywords) { + this.keywords = keywords; + return this; + } + + /** + * Get the prompt property: + * An optional text to guide the model's style or continue a previous audio + * segment. + * For `whisper-1`, the [prompt is a list of keywords](/docs/guides/speech-to-text#prompting). + * For `gpt-4o-transcribe` models (excluding `gpt-4o-transcribe-diarize`), the prompt is a free text string, for + * example "expect words related to technology". + * Prompt is not supported with `gpt-realtime-whisper` in GA Realtime sessions. + * + * @return the prompt value. + */ + @Generated + public String getPrompt() { + return this.prompt; + } + + /** + * Set the prompt property: + * An optional text to guide the model's style or continue a previous audio + * segment. + * For `whisper-1`, the [prompt is a list of keywords](/docs/guides/speech-to-text#prompting). + * For `gpt-4o-transcribe` models (excluding `gpt-4o-transcribe-diarize`), the prompt is a free text string, for + * example "expect words related to technology". + * Prompt is not supported with `gpt-realtime-whisper` in GA Realtime sessions. + * + * @param prompt the prompt value to set. + * @return the AudioTranscription object itself. + */ + @Generated + public AudioTranscription setPrompt(String prompt) { + this.prompt = prompt; + return this; + } + + /** + * Get the delay property: Controls how long the model waits before emitting transcription text. + * Higher values can improve transcription accuracy at the cost of latency. + * Only supported with `gpt-realtime-whisper` in GA Realtime sessions. + * + * @return the delay value. + */ + @Generated + public VoiceAgentAudioInputConfigTranscriptionDelay getDelay() { + return this.delay; + } + + /** + * Set the delay property: Controls how long the model waits before emitting transcription text. + * Higher values can improve transcription accuracy at the cost of latency. + * Only supported with `gpt-realtime-whisper` in GA Realtime sessions. + * + * @param delay the delay value to set. + * @return the AudioTranscription object itself. + */ + @Generated + public AudioTranscription setDelay(VoiceAgentAudioInputConfigTranscriptionDelay delay) { + this.delay = delay; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("model", this.model == null ? null : this.model.toString()); + jsonWriter.writeStringField("language", this.language); + jsonWriter.writeArrayField("languages", this.languages, (writer, element) -> writer.writeString(element)); + jsonWriter.writeArrayField("keywords", this.keywords, (writer, element) -> writer.writeString(element)); + jsonWriter.writeStringField("prompt", this.prompt); + jsonWriter.writeStringField("delay", this.delay == null ? null : this.delay.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of AudioTranscription from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of AudioTranscription if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the AudioTranscription. + */ + @Generated + public static AudioTranscription fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + AudioTranscription deserializedAudioTranscription = new AudioTranscription(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("model".equals(fieldName)) { + deserializedAudioTranscription.model = AudioTranscriptionModel.fromString(reader.getString()); + } else if ("language".equals(fieldName)) { + deserializedAudioTranscription.language = reader.getString(); + } else if ("languages".equals(fieldName)) { + List languages = reader.readArray(reader1 -> reader1.getString()); + deserializedAudioTranscription.languages = languages; + } else if ("keywords".equals(fieldName)) { + List keywords = reader.readArray(reader1 -> reader1.getString()); + deserializedAudioTranscription.keywords = keywords; + } else if ("prompt".equals(fieldName)) { + deserializedAudioTranscription.prompt = reader.getString(); + } else if ("delay".equals(fieldName)) { + deserializedAudioTranscription.delay + = VoiceAgentAudioInputConfigTranscriptionDelay.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedAudioTranscription; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AudioTranscriptionModel.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AudioTranscriptionModel.java new file mode 100644 index 0000000000000..d2b925e7679c0 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AudioTranscriptionModel.java @@ -0,0 +1,94 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Defines values for AudioTranscriptionModel. + */ +public final class AudioTranscriptionModel extends ExpandableStringEnum { + + /** + * Static value whisper-1 for AudioTranscriptionModel. + */ + @Generated + public static final AudioTranscriptionModel WHISPER_1 = fromString("whisper-1"); + + /** + * Static value gpt-transcribe for AudioTranscriptionModel. + */ + @Generated + public static final AudioTranscriptionModel GPT_TRANSCRIBE = fromString("gpt-transcribe"); + + /** + * Static value gpt-live-transcribe for AudioTranscriptionModel. + */ + @Generated + public static final AudioTranscriptionModel GPT_LIVE_TRANSCRIBE = fromString("gpt-live-transcribe"); + + /** + * Static value gpt-4o-mini-transcribe for AudioTranscriptionModel. + */ + @Generated + public static final AudioTranscriptionModel GPT_4O_MINI_TRANSCRIBE = fromString("gpt-4o-mini-transcribe"); + + /** + * Static value gpt-4o-mini-transcribe-2025-12-15 for AudioTranscriptionModel. + */ + @Generated + public static final AudioTranscriptionModel GPT_4O_MINI_TRANSCRIBE_2025_12_15 + = fromString("gpt-4o-mini-transcribe-2025-12-15"); + + /** + * Static value gpt-4o-transcribe for AudioTranscriptionModel. + */ + @Generated + public static final AudioTranscriptionModel GPT_4O_TRANSCRIBE = fromString("gpt-4o-transcribe"); + + /** + * Static value gpt-4o-transcribe-diarize for AudioTranscriptionModel. + */ + @Generated + public static final AudioTranscriptionModel GPT_4O_TRANSCRIBE_DIARIZE = fromString("gpt-4o-transcribe-diarize"); + + /** + * Static value gpt-realtime-whisper for AudioTranscriptionModel. + */ + @Generated + public static final AudioTranscriptionModel GPT_REALTIME_WHISPER = fromString("gpt-realtime-whisper"); + + /** + * Creates a new instance of AudioTranscriptionModel value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public AudioTranscriptionModel() { + } + + /** + * Creates or finds a AudioTranscriptionModel from its string representation. + * + * @param name a name to look for. + * @return the corresponding AudioTranscriptionModel. + */ + @Generated + public static AudioTranscriptionModel fromString(String name) { + return fromString(name, AudioTranscriptionModel.class); + } + + /** + * Gets known AudioTranscriptionModel values. + * + * @return known AudioTranscriptionModel values. + */ + @Generated + public static Collection values() { + return values(AudioTranscriptionModel.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTranscriptionResponseJsonUsage.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTranscriptionResponseJsonUsage.java new file mode 100644 index 0000000000000..65ec14f25ec4e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTranscriptionResponseJsonUsage.java @@ -0,0 +1,110 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Token usage statistics for the request. + */ +@Immutable +public class CreateTranscriptionResponseJsonUsage implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private CreateTranscriptionResponseJsonUsageType type + = CreateTranscriptionResponseJsonUsageType.fromString("CreateTranscriptionResponseJsonUsage"); + + /** + * Creates an instance of CreateTranscriptionResponseJsonUsage class. + */ + @Generated + protected CreateTranscriptionResponseJsonUsage() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public CreateTranscriptionResponseJsonUsageType getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of CreateTranscriptionResponseJsonUsage from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of CreateTranscriptionResponseJsonUsage if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the CreateTranscriptionResponseJsonUsage. + */ + @Generated + public static CreateTranscriptionResponseJsonUsage fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("duration".equals(discriminatorValue)) { + return TranscriptTextUsageDuration.fromJson(readerToUse.reset()); + } else if ("tokens".equals(discriminatorValue)) { + return TranscriptTextUsageTokens.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static CreateTranscriptionResponseJsonUsage fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + CreateTranscriptionResponseJsonUsage deserializedCreateTranscriptionResponseJsonUsage + = new CreateTranscriptionResponseJsonUsage(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedCreateTranscriptionResponseJsonUsage.type + = CreateTranscriptionResponseJsonUsageType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedCreateTranscriptionResponseJsonUsage; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTranscriptionResponseJsonUsageType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTranscriptionResponseJsonUsageType.java new file mode 100644 index 0000000000000..30c46abb17798 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTranscriptionResponseJsonUsageType.java @@ -0,0 +1,58 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Defines values for CreateTranscriptionResponseJsonUsageType. + */ +public final class CreateTranscriptionResponseJsonUsageType + extends ExpandableStringEnum { + + /** + * Static value tokens for CreateTranscriptionResponseJsonUsageType. + */ + @Generated + public static final CreateTranscriptionResponseJsonUsageType TOKENS = fromString("tokens"); + + /** + * Static value duration for CreateTranscriptionResponseJsonUsageType. + */ + @Generated + public static final CreateTranscriptionResponseJsonUsageType DURATION = fromString("duration"); + + /** + * Creates a new instance of CreateTranscriptionResponseJsonUsageType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public CreateTranscriptionResponseJsonUsageType() { + } + + /** + * Creates or finds a CreateTranscriptionResponseJsonUsageType from its string representation. + * + * @param name a name to look for. + * @return the corresponding CreateTranscriptionResponseJsonUsageType. + */ + @Generated + public static CreateTranscriptionResponseJsonUsageType fromString(String name) { + return fromString(name, CreateTranscriptionResponseJsonUsageType.class); + } + + /** + * Gets known CreateTranscriptionResponseJsonUsageType values. + * + * @return known CreateTranscriptionResponseJsonUsageType values. + */ + @Generated + public static Collection values() { + return values(CreateTranscriptionResponseJsonUsageType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/FileInputDetail.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/FileInputDetail.java new file mode 100644 index 0000000000000..73ac05beae975 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/FileInputDetail.java @@ -0,0 +1,61 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for FileInputDetail. + */ +public enum FileInputDetail { + /** + * Enum value auto. + */ + AUTO("auto"), + + /** + * Enum value low. + */ + LOW("low"), + + /** + * Enum value high. + */ + HIGH("high"); + + /** + * The actual serialized value for a FileInputDetail instance. + */ + private final String value; + + FileInputDetail(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a FileInputDetail instance. + * + * @param value the serialized value to parse. + * @return the parsed FileInputDetail object, or null if unable to parse. + */ + public static FileInputDetail fromString(String value) { + if (value == null) { + return null; + } + FileInputDetail[] items = FileInputDetail.values(); + for (FileInputDetail item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ImageDetail.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ImageDetail.java new file mode 100644 index 0000000000000..8397b4e3d1dd7 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ImageDetail.java @@ -0,0 +1,66 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for ImageDetail. + */ +public enum ImageDetail { + /** + * Enum value low. + */ + LOW("low"), + + /** + * Enum value high. + */ + HIGH("high"), + + /** + * Enum value auto. + */ + AUTO("auto"), + + /** + * Enum value original. + */ + ORIGINAL("original"); + + /** + * The actual serialized value for a ImageDetail instance. + */ + private final String value; + + ImageDetail(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a ImageDetail instance. + * + * @param value the serialized value to parse. + * @return the parsed ImageDetail object, or null if unable to parse. + */ + public static ImageDetail fromString(String value) { + if (value == null) { + return null; + } + ImageDetail[] items = ImageDetail.values(); + for (ImageDetail item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/InputFileContent.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/InputFileContent.java new file mode 100644 index 0000000000000..e1bb1163de0e7 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/InputFileContent.java @@ -0,0 +1,273 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Input file + * + * A file input to the model. + */ +@Fluent +public final class InputFileContent implements JsonSerializable { + + /* + * The type of the input item. Always `input_file`. + */ + @Generated + private final String type = "input_file"; + + /* + * The file_id property. + */ + @Generated + private String fileId; + + /* + * The name of the file to be sent to the model. + */ + @Generated + private String filename; + + /* + * The content of the file to be sent to the model. + */ + @Generated + private String fileData; + + /* + * The prompt_cache_breakpoint property. + */ + @Generated + private PromptCacheBreakpointConfig promptCacheBreakpoint; + + /* + * The URL of the file to be sent to the model. + */ + @Generated + private String fileUrl; + + /* + * The detail level of the file to be sent to the model. Use `auto` to let the system select the detail level; for + * GPT-5.6 and later models, `auto` uses high-quality rendering, which may increase input token usage. Use `low` for + * lower-cost rendering, or `high` to render the file at higher quality. Defaults to `auto`. + */ + @Generated + private FileInputDetail detail; + + /** + * Creates an instance of InputFileContent class. + */ + @Generated + public InputFileContent() { + } + + /** + * Get the type property: The type of the input item. Always `input_file`. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * Get the fileId property: The file_id property. + * + * @return the fileId value. + */ + @Generated + public String getFileId() { + return this.fileId; + } + + /** + * Set the fileId property: The file_id property. + * + * @param fileId the fileId value to set. + * @return the InputFileContent object itself. + */ + @Generated + public InputFileContent setFileId(String fileId) { + this.fileId = fileId; + return this; + } + + /** + * Get the filename property: The name of the file to be sent to the model. + * + * @return the filename value. + */ + @Generated + public String getFilename() { + return this.filename; + } + + /** + * Set the filename property: The name of the file to be sent to the model. + * + * @param filename the filename value to set. + * @return the InputFileContent object itself. + */ + @Generated + public InputFileContent setFilename(String filename) { + this.filename = filename; + return this; + } + + /** + * Get the fileData property: The content of the file to be sent to the model. + * + * @return the fileData value. + */ + @Generated + public String getFileData() { + return this.fileData; + } + + /** + * Set the fileData property: The content of the file to be sent to the model. + * + * @param fileData the fileData value to set. + * @return the InputFileContent object itself. + */ + @Generated + public InputFileContent setFileData(String fileData) { + this.fileData = fileData; + return this; + } + + /** + * Get the promptCacheBreakpoint property: The prompt_cache_breakpoint property. + * + * @return the promptCacheBreakpoint value. + */ + @Generated + public PromptCacheBreakpointConfig getPromptCacheBreakpoint() { + return this.promptCacheBreakpoint; + } + + /** + * Set the promptCacheBreakpoint property: The prompt_cache_breakpoint property. + * + * @param promptCacheBreakpoint the promptCacheBreakpoint value to set. + * @return the InputFileContent object itself. + */ + @Generated + public InputFileContent setPromptCacheBreakpoint(PromptCacheBreakpointConfig promptCacheBreakpoint) { + this.promptCacheBreakpoint = promptCacheBreakpoint; + return this; + } + + /** + * Get the fileUrl property: The URL of the file to be sent to the model. + * + * @return the fileUrl value. + */ + @Generated + public String getFileUrl() { + return this.fileUrl; + } + + /** + * Set the fileUrl property: The URL of the file to be sent to the model. + * + * @param fileUrl the fileUrl value to set. + * @return the InputFileContent object itself. + */ + @Generated + public InputFileContent setFileUrl(String fileUrl) { + this.fileUrl = fileUrl; + return this; + } + + /** + * Get the detail property: The detail level of the file to be sent to the model. Use `auto` to let the system + * select the detail level; for GPT-5.6 and later models, `auto` uses high-quality rendering, which may increase + * input token usage. Use `low` for lower-cost rendering, or `high` to render the file at higher quality. Defaults + * to `auto`. + * + * @return the detail value. + */ + @Generated + public FileInputDetail getDetail() { + return this.detail; + } + + /** + * Set the detail property: The detail level of the file to be sent to the model. Use `auto` to let the system + * select the detail level; for GPT-5.6 and later models, `auto` uses high-quality rendering, which may increase + * input token usage. Use `low` for lower-cost rendering, or `high` to render the file at higher quality. Defaults + * to `auto`. + * + * @param detail the detail value to set. + * @return the InputFileContent object itself. + */ + @Generated + public InputFileContent setDetail(FileInputDetail detail) { + this.detail = detail; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("file_id", this.fileId); + jsonWriter.writeStringField("filename", this.filename); + jsonWriter.writeStringField("file_data", this.fileData); + jsonWriter.writeJsonField("prompt_cache_breakpoint", this.promptCacheBreakpoint); + jsonWriter.writeStringField("file_url", this.fileUrl); + jsonWriter.writeStringField("detail", this.detail == null ? null : this.detail.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of InputFileContent from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of InputFileContent if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the InputFileContent. + */ + @Generated + public static InputFileContent fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + InputFileContent deserializedInputFileContent = new InputFileContent(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("file_id".equals(fieldName)) { + deserializedInputFileContent.fileId = reader.getString(); + } else if ("filename".equals(fieldName)) { + deserializedInputFileContent.filename = reader.getString(); + } else if ("file_data".equals(fieldName)) { + deserializedInputFileContent.fileData = reader.getString(); + } else if ("prompt_cache_breakpoint".equals(fieldName)) { + deserializedInputFileContent.promptCacheBreakpoint = PromptCacheBreakpointConfig.fromJson(reader); + } else if ("file_url".equals(fieldName)) { + deserializedInputFileContent.fileUrl = reader.getString(); + } else if ("detail".equals(fieldName)) { + deserializedInputFileContent.detail = FileInputDetail.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedInputFileContent; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/InputImageContent.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/InputImageContent.java new file mode 100644 index 0000000000000..73c1890a8bda9 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/InputImageContent.java @@ -0,0 +1,203 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Input image + * + * An image input to the model. Learn about [image inputs](/docs/guides/vision). + */ +@Fluent +public final class InputImageContent implements JsonSerializable { + + /* + * The type of the input item. Always `input_image`. + */ + @Generated + private final String type = "input_image"; + + /* + * The image_url property. + */ + @Generated + private String imageUrl; + + /* + * The file_id property. + */ + @Generated + private String fileId; + + /* + * The detail level of the image to be sent to the model. One of `high`, `low`, `auto`, or `original`. Defaults to + * `auto`. + */ + @Generated + private final ImageDetail detail; + + /* + * The prompt_cache_breakpoint property. + */ + @Generated + private PromptCacheBreakpointConfig promptCacheBreakpoint; + + /** + * Creates an instance of InputImageContent class. + * + * @param detail the detail value to set. + */ + @Generated + public InputImageContent(ImageDetail detail) { + this.detail = detail; + } + + /** + * Get the type property: The type of the input item. Always `input_image`. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * Get the imageUrl property: The image_url property. + * + * @return the imageUrl value. + */ + @Generated + public String getImageUrl() { + return this.imageUrl; + } + + /** + * Set the imageUrl property: The image_url property. + * + * @param imageUrl the imageUrl value to set. + * @return the InputImageContent object itself. + */ + @Generated + public InputImageContent setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + return this; + } + + /** + * Get the fileId property: The file_id property. + * + * @return the fileId value. + */ + @Generated + public String getFileId() { + return this.fileId; + } + + /** + * Set the fileId property: The file_id property. + * + * @param fileId the fileId value to set. + * @return the InputImageContent object itself. + */ + @Generated + public InputImageContent setFileId(String fileId) { + this.fileId = fileId; + return this; + } + + /** + * Get the detail property: The detail level of the image to be sent to the model. One of `high`, `low`, `auto`, or + * `original`. Defaults to `auto`. + * + * @return the detail value. + */ + @Generated + public ImageDetail getDetail() { + return this.detail; + } + + /** + * Get the promptCacheBreakpoint property: The prompt_cache_breakpoint property. + * + * @return the promptCacheBreakpoint value. + */ + @Generated + public PromptCacheBreakpointConfig getPromptCacheBreakpoint() { + return this.promptCacheBreakpoint; + } + + /** + * Set the promptCacheBreakpoint property: The prompt_cache_breakpoint property. + * + * @param promptCacheBreakpoint the promptCacheBreakpoint value to set. + * @return the InputImageContent object itself. + */ + @Generated + public InputImageContent setPromptCacheBreakpoint(PromptCacheBreakpointConfig promptCacheBreakpoint) { + this.promptCacheBreakpoint = promptCacheBreakpoint; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("detail", this.detail == null ? null : this.detail.toString()); + jsonWriter.writeStringField("image_url", this.imageUrl); + jsonWriter.writeStringField("file_id", this.fileId); + jsonWriter.writeJsonField("prompt_cache_breakpoint", this.promptCacheBreakpoint); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of InputImageContent from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of InputImageContent if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the InputImageContent. + */ + @Generated + public static InputImageContent fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ImageDetail detail = null; + String imageUrl = null; + String fileId = null; + PromptCacheBreakpointConfig promptCacheBreakpoint = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("detail".equals(fieldName)) { + detail = ImageDetail.fromString(reader.getString()); + } else if ("image_url".equals(fieldName)) { + imageUrl = reader.getString(); + } else if ("file_id".equals(fieldName)) { + fileId = reader.getString(); + } else if ("prompt_cache_breakpoint".equals(fieldName)) { + promptCacheBreakpoint = PromptCacheBreakpointConfig.fromJson(reader); + } else { + reader.skipChildren(); + } + } + InputImageContent deserializedInputImageContent = new InputImageContent(detail); + deserializedInputImageContent.imageUrl = imageUrl; + deserializedInputImageContent.fileId = fileId; + deserializedInputImageContent.promptCacheBreakpoint = promptCacheBreakpoint; + return deserializedInputImageContent; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/InputTextContent.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/InputTextContent.java new file mode 100644 index 0000000000000..b15a334f9318b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/InputTextContent.java @@ -0,0 +1,135 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Input text + * + * A text input to the model. + */ +@Fluent +public final class InputTextContent implements JsonSerializable { + + /* + * The type of the input item. Always `input_text`. + */ + @Generated + private final String type = "input_text"; + + /* + * The text input to the model. + */ + @Generated + private final String text; + + /* + * The prompt_cache_breakpoint property. + */ + @Generated + private PromptCacheBreakpointConfig promptCacheBreakpoint; + + /** + * Creates an instance of InputTextContent class. + * + * @param text the text value to set. + */ + @Generated + public InputTextContent(String text) { + this.text = text; + } + + /** + * Get the type property: The type of the input item. Always `input_text`. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * Get the text property: The text input to the model. + * + * @return the text value. + */ + @Generated + public String getText() { + return this.text; + } + + /** + * Get the promptCacheBreakpoint property: The prompt_cache_breakpoint property. + * + * @return the promptCacheBreakpoint value. + */ + @Generated + public PromptCacheBreakpointConfig getPromptCacheBreakpoint() { + return this.promptCacheBreakpoint; + } + + /** + * Set the promptCacheBreakpoint property: The prompt_cache_breakpoint property. + * + * @param promptCacheBreakpoint the promptCacheBreakpoint value to set. + * @return the InputTextContent object itself. + */ + @Generated + public InputTextContent setPromptCacheBreakpoint(PromptCacheBreakpointConfig promptCacheBreakpoint) { + this.promptCacheBreakpoint = promptCacheBreakpoint; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("text", this.text); + jsonWriter.writeJsonField("prompt_cache_breakpoint", this.promptCacheBreakpoint); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of InputTextContent from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of InputTextContent if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the InputTextContent. + */ + @Generated + public static InputTextContent fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String text = null; + PromptCacheBreakpointConfig promptCacheBreakpoint = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("text".equals(fieldName)) { + text = reader.getString(); + } else if ("prompt_cache_breakpoint".equals(fieldName)) { + promptCacheBreakpoint = PromptCacheBreakpointConfig.fromJson(reader); + } else { + reader.skipChildren(); + } + } + InputTextContent deserializedInputTextContent = new InputTextContent(text); + deserializedInputTextContent.promptCacheBreakpoint = promptCacheBreakpoint; + return deserializedInputTextContent; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/LogProbProperties.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/LogProbProperties.java new file mode 100644 index 0000000000000..850b072923229 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/LogProbProperties.java @@ -0,0 +1,127 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * A log probability object. + */ +@Immutable +public final class LogProbProperties implements JsonSerializable { + + /* + * The token that was used to generate the log probability. + */ + @Generated + private final String token; + + /* + * The log probability of the token. + */ + @Generated + private final double logprob; + + /* + * The bytes that were used to generate the log probability. + */ + @Generated + private final List bytes; + + /** + * Creates an instance of LogProbProperties class. + * + * @param token the token value to set. + * @param logprob the logprob value to set. + * @param bytes the bytes value to set. + */ + @Generated + private LogProbProperties(String token, double logprob, List bytes) { + this.token = token; + this.logprob = logprob; + this.bytes = bytes; + } + + /** + * Get the token property: The token that was used to generate the log probability. + * + * @return the token value. + */ + @Generated + public String getToken() { + return this.token; + } + + /** + * Get the logprob property: The log probability of the token. + * + * @return the logprob value. + */ + @Generated + public double getLogprob() { + return this.logprob; + } + + /** + * Get the bytes property: The bytes that were used to generate the log probability. + * + * @return the bytes value. + */ + @Generated + public List getBytes() { + return this.bytes; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("token", this.token); + jsonWriter.writeDoubleField("logprob", this.logprob); + jsonWriter.writeArrayField("bytes", this.bytes, (writer, element) -> writer.writeLong(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of LogProbProperties from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of LogProbProperties if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the LogProbProperties. + */ + @Generated + public static LogProbProperties fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String token = null; + double logprob = 0.0; + List bytes = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("token".equals(fieldName)) { + token = reader.getString(); + } else if ("logprob".equals(fieldName)) { + logprob = reader.getDouble(); + } else if ("bytes".equals(fieldName)) { + bytes = reader.readArray(reader1 -> reader1.getLong()); + } else { + reader.skipChildren(); + } + } + return new LogProbProperties(token, logprob, bytes); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/NoiseReductionType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/NoiseReductionType.java new file mode 100644 index 0000000000000..0fe96c72a4929 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/NoiseReductionType.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Type of noise reduction. `near_field` is for close-talking microphones such as headphones, `far_field` is for + * far-field microphones such as laptop or conference room microphones. + */ +public enum NoiseReductionType { + /** + * Enum value near_field. + */ + NEAR_FIELD("near_field"), + + /** + * Enum value far_field. + */ + FAR_FIELD("far_field"); + + /** + * The actual serialized value for a NoiseReductionType instance. + */ + private final String value; + + NoiseReductionType(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a NoiseReductionType instance. + * + * @param value the serialized value to parse. + * @return the parsed NoiseReductionType object, or null if unable to parse. + */ + public static NoiseReductionType fromString(String value) { + if (value == null) { + return null; + } + NoiseReductionType[] items = NoiseReductionType.values(); + for (NoiseReductionType item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PickPropertiesVoiceAgentAudioConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PickPropertiesVoiceAgentAudioConfig.java new file mode 100644 index 0000000000000..e4d82e082ba29 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PickPropertiesVoiceAgentAudioConfig.java @@ -0,0 +1,93 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The template for picking properties. + */ +@Fluent +public final class PickPropertiesVoiceAgentAudioConfig + implements JsonSerializable { + + /* + * Output (agent speech) audio configuration. + */ + @Generated + private VoiceAgentAudioOutputConfig output; + + /** + * Creates an instance of PickPropertiesVoiceAgentAudioConfig class. + */ + @Generated + public PickPropertiesVoiceAgentAudioConfig() { + } + + /** + * Get the output property: Output (agent speech) audio configuration. + * + * @return the output value. + */ + @Generated + public VoiceAgentAudioOutputConfig getOutput() { + return this.output; + } + + /** + * Set the output property: Output (agent speech) audio configuration. + * + * @param output the output value to set. + * @return the PickPropertiesVoiceAgentAudioConfig object itself. + */ + @Generated + public PickPropertiesVoiceAgentAudioConfig setOutput(VoiceAgentAudioOutputConfig output) { + this.output = output; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("output", this.output); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of PickPropertiesVoiceAgentAudioConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of PickPropertiesVoiceAgentAudioConfig if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the PickPropertiesVoiceAgentAudioConfig. + */ + @Generated + public static PickPropertiesVoiceAgentAudioConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + PickPropertiesVoiceAgentAudioConfig deserializedPickPropertiesVoiceAgentAudioConfig + = new PickPropertiesVoiceAgentAudioConfig(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("output".equals(fieldName)) { + deserializedPickPropertiesVoiceAgentAudioConfig.output + = VoiceAgentAudioOutputConfig.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedPickPropertiesVoiceAgentAudioConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/Prompt.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/Prompt.java new file mode 100644 index 0000000000000..9aa2d334e6a5c --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/Prompt.java @@ -0,0 +1,150 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Reference to a prompt template and its variables. + * [Learn more](/docs/guides/text?api-mode=responses#reusable-prompts). + */ +@Fluent +public final class Prompt implements JsonSerializable { + + /* + * The unique identifier of the prompt template to use. + */ + @Generated + private final String id; + + /* + * The version property. + */ + @Generated + private String version; + + /* + * The variables property. + */ + @Generated + private ResponsePromptVariables variables; + + /** + * Creates an instance of Prompt class. + * + * @param id the id value to set. + */ + @Generated + public Prompt(String id) { + this.id = id; + } + + /** + * Get the id property: The unique identifier of the prompt template to use. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the version property: The version property. + * + * @return the version value. + */ + @Generated + public String getVersion() { + return this.version; + } + + /** + * Set the version property: The version property. + * + * @param version the version value to set. + * @return the Prompt object itself. + */ + @Generated + public Prompt setVersion(String version) { + this.version = version; + return this; + } + + /** + * Get the variables property: The variables property. + * + * @return the variables value. + */ + @Generated + public ResponsePromptVariables getVariables() { + return this.variables; + } + + /** + * Set the variables property: The variables property. + * + * @param variables the variables value to set. + * @return the Prompt object itself. + */ + @Generated + public Prompt setVariables(ResponsePromptVariables variables) { + this.variables = variables; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("version", this.version); + jsonWriter.writeJsonField("variables", this.variables); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of Prompt from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of Prompt if the JsonReader was pointing to an instance of it, or null if it was pointing to + * JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the Prompt. + */ + @Generated + public static Prompt fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + String version = null; + ResponsePromptVariables variables = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("version".equals(fieldName)) { + version = reader.getString(); + } else if ("variables".equals(fieldName)) { + variables = ResponsePromptVariables.fromJson(reader); + } else { + reader.skipChildren(); + } + } + Prompt deserializedPrompt = new Prompt(id); + deserializedPrompt.version = version; + deserializedPrompt.variables = variables; + return deserializedPrompt; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PromptCacheBreakpointConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PromptCacheBreakpointConfig.java new file mode 100644 index 0000000000000..7536bb4038d36 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PromptCacheBreakpointConfig.java @@ -0,0 +1,78 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Prompt cache breakpoint + * + * Marks the exact end of a reusable prompt prefix. The breakpoint inherits its TTL from the request's + * `prompt_cache_options.ttl`; the boundary is not rounded to a token block. + */ +@Immutable +public final class PromptCacheBreakpointConfig implements JsonSerializable { + + /* + * The breakpoint mode. Always `explicit`. + */ + @Generated + private final String mode = "explicit"; + + /** + * Creates an instance of PromptCacheBreakpointConfig class. + */ + @Generated + public PromptCacheBreakpointConfig() { + } + + /** + * Get the mode property: The breakpoint mode. Always `explicit`. + * + * @return the mode value. + */ + @Generated + public String getMode() { + return this.mode; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("mode", this.mode); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of PromptCacheBreakpointConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of PromptCacheBreakpointConfig if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the PromptCacheBreakpointConfig. + */ + @Generated + public static PromptCacheBreakpointConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + PromptCacheBreakpointConfig deserializedPromptCacheBreakpointConfig = new PromptCacheBreakpointConfig(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + reader.skipChildren(); + } + return deserializedPromptCacheBreakpointConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEvent.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEvent.java new file mode 100644 index 0000000000000..c8a2189af1064 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEvent.java @@ -0,0 +1,129 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A realtime client event. + */ +@Immutable +public class RealtimeClientEvent implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private RealtimeClientEventType type = RealtimeClientEventType.fromString("RealtimeClientEvent"); + + /** + * Creates an instance of RealtimeClientEvent class. + */ + @Generated + public RealtimeClientEvent() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public RealtimeClientEventType getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeClientEvent from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeClientEvent if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeClientEvent. + */ + @Generated + public static RealtimeClientEvent fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("conversation.item.create".equals(discriminatorValue)) { + return RealtimeClientEventConversationItemCreate.fromJson(readerToUse.reset()); + } else if ("conversation.item.delete".equals(discriminatorValue)) { + return RealtimeClientEventConversationItemDelete.fromJson(readerToUse.reset()); + } else if ("conversation.item.retrieve".equals(discriminatorValue)) { + return RealtimeClientEventConversationItemRetrieve.fromJson(readerToUse.reset()); + } else if ("conversation.item.truncate".equals(discriminatorValue)) { + return RealtimeClientEventConversationItemTruncate.fromJson(readerToUse.reset()); + } else if ("input_audio_buffer.append".equals(discriminatorValue)) { + return RealtimeClientEventInputAudioBufferAppend.fromJson(readerToUse.reset()); + } else if ("input_audio_buffer.clear".equals(discriminatorValue)) { + return RealtimeClientEventInputAudioBufferClear.fromJson(readerToUse.reset()); + } else if ("output_audio_buffer.clear".equals(discriminatorValue)) { + return RealtimeClientEventOutputAudioBufferClear.fromJson(readerToUse.reset()); + } else if ("input_audio_buffer.commit".equals(discriminatorValue)) { + return RealtimeClientEventInputAudioBufferCommit.fromJson(readerToUse.reset()); + } else if ("response.cancel".equals(discriminatorValue)) { + return RealtimeClientEventResponseCancel.fromJson(readerToUse.reset()); + } else if ("response.create".equals(discriminatorValue)) { + return RealtimeClientEventResponseCreate.fromJson(readerToUse.reset()); + } else if ("session.update".equals(discriminatorValue)) { + return RealtimeClientEventSessionUpdate.fromJson(readerToUse.reset()); + } else if ("rtc.call.sdp.create".equals(discriminatorValue)) { + return VoiceAgentClientEventRtcCallSdpCreate.fromJson(readerToUse.reset()); + } else if ("session.avatar.connect".equals(discriminatorValue)) { + return VoiceAgentClientEventSessionAvatarConnect.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static RealtimeClientEvent fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeClientEvent deserializedRealtimeClientEvent = new RealtimeClientEvent(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeClientEvent.type = RealtimeClientEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeClientEvent; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemCreate.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemCreate.java new file mode 100644 index 0000000000000..3f71c8f0aa05f --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemCreate.java @@ -0,0 +1,188 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Add a new Item to the Conversation's context, including messages, function + * calls, and function call responses. This event can be used both to populate a + * "history" of the conversation and to add new items mid-stream, but has the + * current limitation that it cannot populate assistant audio messages. + * If successful, the server will respond with a `conversation.item.created` + * event, otherwise an `error` event will be sent. + */ +@Fluent +public final class RealtimeClientEventConversationItemCreate extends RealtimeClientEvent { + + /* + * The type property. + */ + @Generated + private RealtimeClientEventType type = RealtimeClientEventType.CONVERSATION_ITEM_CREATE; + + /* + * Optional client-generated ID used to identify this event. + */ + @Generated + private String eventId; + + /* + * The ID of the preceding item after which the new item will be inserted. If not set, the new item will be appended + * to the end of the conversation. + * If set to `root`, the new item will be added to the beginning of the conversation. + * If set to an existing ID, it allows an item to be inserted mid-conversation. If the ID cannot be found, an error + * will be returned and the item will not be added. + */ + @Generated + private String previousItemId; + + /* + * The item property. + */ + @Generated + private final RealtimeConversationItem item; + + /** + * Creates an instance of RealtimeClientEventConversationItemCreate class. + * + * @param item the item value to set. + */ + @Generated + public RealtimeClientEventConversationItemCreate(RealtimeConversationItem item) { + this.item = item; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeClientEventType getType() { + return this.type; + } + + /** + * Get the eventId property: Optional client-generated ID used to identify this event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Set the eventId property: Optional client-generated ID used to identify this event. + * + * @param eventId the eventId value to set. + * @return the RealtimeClientEventConversationItemCreate object itself. + */ + @Generated + public RealtimeClientEventConversationItemCreate setEventId(String eventId) { + this.eventId = eventId; + return this; + } + + /** + * Get the previousItemId property: The ID of the preceding item after which the new item will be inserted. If not + * set, the new item will be appended to the end of the conversation. + * If set to `root`, the new item will be added to the beginning of the conversation. + * If set to an existing ID, it allows an item to be inserted mid-conversation. If the ID cannot be found, an error + * will be returned and the item will not be added. + * + * @return the previousItemId value. + */ + @Generated + public String getPreviousItemId() { + return this.previousItemId; + } + + /** + * Set the previousItemId property: The ID of the preceding item after which the new item will be inserted. If not + * set, the new item will be appended to the end of the conversation. + * If set to `root`, the new item will be added to the beginning of the conversation. + * If set to an existing ID, it allows an item to be inserted mid-conversation. If the ID cannot be found, an error + * will be returned and the item will not be added. + * + * @param previousItemId the previousItemId value to set. + * @return the RealtimeClientEventConversationItemCreate object itself. + */ + @Generated + public RealtimeClientEventConversationItemCreate setPreviousItemId(String previousItemId) { + this.previousItemId = previousItemId; + return this; + } + + /** + * Get the item property: The item property. + * + * @return the item value. + */ + @Generated + public RealtimeConversationItem getItem() { + return this.item; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("item", this.item); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("previous_item_id", this.previousItemId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeClientEventConversationItemCreate from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeClientEventConversationItemCreate if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeClientEventConversationItemCreate. + */ + @Generated + public static RealtimeClientEventConversationItemCreate fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeConversationItem item = null; + RealtimeClientEventType type = RealtimeClientEventType.CONVERSATION_ITEM_CREATE; + String eventId = null; + String previousItemId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("item".equals(fieldName)) { + item = RealtimeConversationItem.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeClientEventType.fromString(reader.getString()); + } else if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("previous_item_id".equals(fieldName)) { + previousItemId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeClientEventConversationItemCreate deserializedRealtimeClientEventConversationItemCreate + = new RealtimeClientEventConversationItemCreate(item); + deserializedRealtimeClientEventConversationItemCreate.type = type; + deserializedRealtimeClientEventConversationItemCreate.eventId = eventId; + deserializedRealtimeClientEventConversationItemCreate.previousItemId = previousItemId; + return deserializedRealtimeClientEventConversationItemCreate; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemDelete.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemDelete.java new file mode 100644 index 0000000000000..e815c97c21f81 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemDelete.java @@ -0,0 +1,141 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Send this event when you want to remove any item from the conversation + * history. The server will respond with a `conversation.item.deleted` event, + * unless the item does not exist in the conversation history, in which case the + * server will respond with an error. + */ +@Fluent +public final class RealtimeClientEventConversationItemDelete extends RealtimeClientEvent { + + /* + * The type property. + */ + @Generated + private RealtimeClientEventType type = RealtimeClientEventType.CONVERSATION_ITEM_DELETE; + + /* + * Optional client-generated ID used to identify this event. + */ + @Generated + private String eventId; + + /* + * The ID of the item to delete. + */ + @Generated + private final String itemId; + + /** + * Creates an instance of RealtimeClientEventConversationItemDelete class. + * + * @param itemId the itemId value to set. + */ + @Generated + public RealtimeClientEventConversationItemDelete(String itemId) { + this.itemId = itemId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeClientEventType getType() { + return this.type; + } + + /** + * Get the eventId property: Optional client-generated ID used to identify this event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Set the eventId property: Optional client-generated ID used to identify this event. + * + * @param eventId the eventId value to set. + * @return the RealtimeClientEventConversationItemDelete object itself. + */ + @Generated + public RealtimeClientEventConversationItemDelete setEventId(String eventId) { + this.eventId = eventId; + return this; + } + + /** + * Get the itemId property: The ID of the item to delete. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("event_id", this.eventId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeClientEventConversationItemDelete from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeClientEventConversationItemDelete if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeClientEventConversationItemDelete. + */ + @Generated + public static RealtimeClientEventConversationItemDelete fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String itemId = null; + RealtimeClientEventType type = RealtimeClientEventType.CONVERSATION_ITEM_DELETE; + String eventId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeClientEventType.fromString(reader.getString()); + } else if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeClientEventConversationItemDelete deserializedRealtimeClientEventConversationItemDelete + = new RealtimeClientEventConversationItemDelete(itemId); + deserializedRealtimeClientEventConversationItemDelete.type = type; + deserializedRealtimeClientEventConversationItemDelete.eventId = eventId; + return deserializedRealtimeClientEventConversationItemDelete; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemRetrieve.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemRetrieve.java new file mode 100644 index 0000000000000..72e3c1050db83 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemRetrieve.java @@ -0,0 +1,142 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Send this event when you want to retrieve the server's representation of a specific item in the conversation history. + * This is useful, for example, to inspect user audio after noise cancellation and VAD. + * The server will respond with a `conversation.item.retrieved` event, + * unless the item does not exist in the conversation history, in which case the + * server will respond with an error. + */ +@Fluent +public final class RealtimeClientEventConversationItemRetrieve extends RealtimeClientEvent { + + /* + * The type property. + */ + @Generated + private RealtimeClientEventType type = RealtimeClientEventType.CONVERSATION_ITEM_RETRIEVE; + + /* + * Optional client-generated ID used to identify this event. + */ + @Generated + private String eventId; + + /* + * The ID of the item to retrieve. + */ + @Generated + private final String itemId; + + /** + * Creates an instance of RealtimeClientEventConversationItemRetrieve class. + * + * @param itemId the itemId value to set. + */ + @Generated + public RealtimeClientEventConversationItemRetrieve(String itemId) { + this.itemId = itemId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeClientEventType getType() { + return this.type; + } + + /** + * Get the eventId property: Optional client-generated ID used to identify this event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Set the eventId property: Optional client-generated ID used to identify this event. + * + * @param eventId the eventId value to set. + * @return the RealtimeClientEventConversationItemRetrieve object itself. + */ + @Generated + public RealtimeClientEventConversationItemRetrieve setEventId(String eventId) { + this.eventId = eventId; + return this; + } + + /** + * Get the itemId property: The ID of the item to retrieve. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("event_id", this.eventId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeClientEventConversationItemRetrieve from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeClientEventConversationItemRetrieve if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeClientEventConversationItemRetrieve. + */ + @Generated + public static RealtimeClientEventConversationItemRetrieve fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String itemId = null; + RealtimeClientEventType type = RealtimeClientEventType.CONVERSATION_ITEM_RETRIEVE; + String eventId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeClientEventType.fromString(reader.getString()); + } else if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeClientEventConversationItemRetrieve deserializedRealtimeClientEventConversationItemRetrieve + = new RealtimeClientEventConversationItemRetrieve(itemId); + deserializedRealtimeClientEventConversationItemRetrieve.type = type; + deserializedRealtimeClientEventConversationItemRetrieve.eventId = eventId; + return deserializedRealtimeClientEventConversationItemRetrieve; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemTruncate.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemTruncate.java new file mode 100644 index 0000000000000..2ad1b5ae35208 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemTruncate.java @@ -0,0 +1,196 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Send this event to truncate a previous assistant message’s audio. The server + * will produce audio faster than realtime, so this event is useful when the user + * interrupts to truncate audio that has already been sent to the client but not + * yet played. This will synchronize the server's understanding of the audio with + * the client's playback. + * Truncating audio will delete the server-side text transcript to ensure there + * is not text in the context that hasn't been heard by the user. + * If successful, the server will respond with a `conversation.item.truncated` + * event. + */ +@Fluent +public final class RealtimeClientEventConversationItemTruncate extends RealtimeClientEvent { + + /* + * The type property. + */ + @Generated + private RealtimeClientEventType type = RealtimeClientEventType.CONVERSATION_ITEM_TRUNCATE; + + /* + * Optional client-generated ID used to identify this event. + */ + @Generated + private String eventId; + + /* + * The ID of the assistant message item to truncate. Only assistant message + * items can be truncated. + */ + @Generated + private final String itemId; + + /* + * The index of the content part to truncate. Set this to `0`. + */ + @Generated + private final long contentIndex; + + /* + * Inclusive duration up to which audio is truncated, in milliseconds. If + * the audio_end_ms is greater than the actual audio duration, the server + * will respond with an error. + */ + @Generated + private final long audioEndMs; + + /** + * Creates an instance of RealtimeClientEventConversationItemTruncate class. + * + * @param itemId the itemId value to set. + * @param contentIndex the contentIndex value to set. + * @param audioEndMs the audioEndMs value to set. + */ + @Generated + public RealtimeClientEventConversationItemTruncate(String itemId, long contentIndex, long audioEndMs) { + this.itemId = itemId; + this.contentIndex = contentIndex; + this.audioEndMs = audioEndMs; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeClientEventType getType() { + return this.type; + } + + /** + * Get the eventId property: Optional client-generated ID used to identify this event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Set the eventId property: Optional client-generated ID used to identify this event. + * + * @param eventId the eventId value to set. + * @return the RealtimeClientEventConversationItemTruncate object itself. + */ + @Generated + public RealtimeClientEventConversationItemTruncate setEventId(String eventId) { + this.eventId = eventId; + return this; + } + + /** + * Get the itemId property: The ID of the assistant message item to truncate. Only assistant message + * items can be truncated. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the contentIndex property: The index of the content part to truncate. Set this to `0`. + * + * @return the contentIndex value. + */ + @Generated + public long getContentIndex() { + return this.contentIndex; + } + + /** + * Get the audioEndMs property: Inclusive duration up to which audio is truncated, in milliseconds. If + * the audio_end_ms is greater than the actual audio duration, the server + * will respond with an error. + * + * @return the audioEndMs value. + */ + @Generated + public long getAudioEndMs() { + return this.audioEndMs; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("content_index", this.contentIndex); + jsonWriter.writeLongField("audio_end_ms", this.audioEndMs); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("event_id", this.eventId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeClientEventConversationItemTruncate from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeClientEventConversationItemTruncate if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeClientEventConversationItemTruncate. + */ + @Generated + public static RealtimeClientEventConversationItemTruncate fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String itemId = null; + long contentIndex = 0L; + long audioEndMs = 0L; + RealtimeClientEventType type = RealtimeClientEventType.CONVERSATION_ITEM_TRUNCATE; + String eventId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getLong(); + } else if ("audio_end_ms".equals(fieldName)) { + audioEndMs = reader.getLong(); + } else if ("type".equals(fieldName)) { + type = RealtimeClientEventType.fromString(reader.getString()); + } else if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeClientEventConversationItemTruncate deserializedRealtimeClientEventConversationItemTruncate + = new RealtimeClientEventConversationItemTruncate(itemId, contentIndex, audioEndMs); + deserializedRealtimeClientEventConversationItemTruncate.type = type; + deserializedRealtimeClientEventConversationItemTruncate.eventId = eventId; + return deserializedRealtimeClientEventConversationItemTruncate; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferAppend.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferAppend.java new file mode 100644 index 0000000000000..aa73b2bd97164 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferAppend.java @@ -0,0 +1,150 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Send this event to append audio bytes to the input audio buffer. The audio + * buffer is temporary storage you can write to and later commit. A "commit" will create a new + * user message item in the conversation history from the buffer content and clear the buffer. + * Input audio transcription (if enabled) will be generated when the buffer is committed. + * If VAD is enabled the audio buffer is used to detect speech and the server will decide + * when to commit. When Server VAD is disabled, you must commit the audio buffer + * manually. Input audio noise reduction operates on writes to the audio buffer. + * The client may choose how much audio to place in each event up to a maximum + * of 15 MiB, for example streaming smaller chunks from the client may allow the + * VAD to be more responsive. Unlike most other client events, the server will + * not send a confirmation response to this event. + */ +@Fluent +public final class RealtimeClientEventInputAudioBufferAppend extends RealtimeClientEvent { + + /* + * The type property. + */ + @Generated + private RealtimeClientEventType type = RealtimeClientEventType.INPUT_AUDIO_BUFFER_APPEND; + + /* + * Optional client-generated ID used to identify this event. + */ + @Generated + private String eventId; + + /* + * Base64-encoded audio bytes. This must be in the format specified by the + * `input_audio_format` field in the session configuration. + */ + @Generated + private final String audio; + + /** + * Creates an instance of RealtimeClientEventInputAudioBufferAppend class. + * + * @param audio the audio value to set. + */ + @Generated + public RealtimeClientEventInputAudioBufferAppend(String audio) { + this.audio = audio; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeClientEventType getType() { + return this.type; + } + + /** + * Get the eventId property: Optional client-generated ID used to identify this event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Set the eventId property: Optional client-generated ID used to identify this event. + * + * @param eventId the eventId value to set. + * @return the RealtimeClientEventInputAudioBufferAppend object itself. + */ + @Generated + public RealtimeClientEventInputAudioBufferAppend setEventId(String eventId) { + this.eventId = eventId; + return this; + } + + /** + * Get the audio property: Base64-encoded audio bytes. This must be in the format specified by the + * `input_audio_format` field in the session configuration. + * + * @return the audio value. + */ + @Generated + public String getAudio() { + return this.audio; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("audio", this.audio); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("event_id", this.eventId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeClientEventInputAudioBufferAppend from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeClientEventInputAudioBufferAppend if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeClientEventInputAudioBufferAppend. + */ + @Generated + public static RealtimeClientEventInputAudioBufferAppend fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String audio = null; + RealtimeClientEventType type = RealtimeClientEventType.INPUT_AUDIO_BUFFER_APPEND; + String eventId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("audio".equals(fieldName)) { + audio = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeClientEventType.fromString(reader.getString()); + } else if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeClientEventInputAudioBufferAppend deserializedRealtimeClientEventInputAudioBufferAppend + = new RealtimeClientEventInputAudioBufferAppend(audio); + deserializedRealtimeClientEventInputAudioBufferAppend.type = type; + deserializedRealtimeClientEventInputAudioBufferAppend.eventId = eventId; + return deserializedRealtimeClientEventInputAudioBufferAppend; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferClear.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferClear.java new file mode 100644 index 0000000000000..5dbd20c81e0c6 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferClear.java @@ -0,0 +1,112 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Send this event to clear the audio bytes in the buffer. The server will + * respond with an `input_audio_buffer.cleared` event. + */ +@Fluent +public final class RealtimeClientEventInputAudioBufferClear extends RealtimeClientEvent { + + /* + * The type property. + */ + @Generated + private RealtimeClientEventType type = RealtimeClientEventType.INPUT_AUDIO_BUFFER_CLEAR; + + /* + * Optional client-generated ID used to identify this event. + */ + @Generated + private String eventId; + + /** + * Creates an instance of RealtimeClientEventInputAudioBufferClear class. + */ + @Generated + public RealtimeClientEventInputAudioBufferClear() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeClientEventType getType() { + return this.type; + } + + /** + * Get the eventId property: Optional client-generated ID used to identify this event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Set the eventId property: Optional client-generated ID used to identify this event. + * + * @param eventId the eventId value to set. + * @return the RealtimeClientEventInputAudioBufferClear object itself. + */ + @Generated + public RealtimeClientEventInputAudioBufferClear setEventId(String eventId) { + this.eventId = eventId; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("event_id", this.eventId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeClientEventInputAudioBufferClear from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeClientEventInputAudioBufferClear if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeClientEventInputAudioBufferClear. + */ + @Generated + public static RealtimeClientEventInputAudioBufferClear fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeClientEventInputAudioBufferClear deserializedRealtimeClientEventInputAudioBufferClear + = new RealtimeClientEventInputAudioBufferClear(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeClientEventInputAudioBufferClear.type + = RealtimeClientEventType.fromString(reader.getString()); + } else if ("event_id".equals(fieldName)) { + deserializedRealtimeClientEventInputAudioBufferClear.eventId = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeClientEventInputAudioBufferClear; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferCommit.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferCommit.java new file mode 100644 index 0000000000000..276fc0433ae01 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferCommit.java @@ -0,0 +1,115 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Send this event to commit the user input audio buffer, which will create a new user message item in the conversation. + * This event will produce an error if the input audio buffer is empty. When in Server VAD mode, the client does not + * need to send this event, the server will commit the audio buffer automatically. + * Committing the input audio buffer will trigger input audio transcription (if enabled in session configuration), but + * it will not create a response from the model. The server will respond with an `input_audio_buffer.committed` event. + */ +@Fluent +public final class RealtimeClientEventInputAudioBufferCommit extends RealtimeClientEvent { + + /* + * The type property. + */ + @Generated + private RealtimeClientEventType type = RealtimeClientEventType.INPUT_AUDIO_BUFFER_COMMIT; + + /* + * Optional client-generated ID used to identify this event. + */ + @Generated + private String eventId; + + /** + * Creates an instance of RealtimeClientEventInputAudioBufferCommit class. + */ + @Generated + public RealtimeClientEventInputAudioBufferCommit() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeClientEventType getType() { + return this.type; + } + + /** + * Get the eventId property: Optional client-generated ID used to identify this event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Set the eventId property: Optional client-generated ID used to identify this event. + * + * @param eventId the eventId value to set. + * @return the RealtimeClientEventInputAudioBufferCommit object itself. + */ + @Generated + public RealtimeClientEventInputAudioBufferCommit setEventId(String eventId) { + this.eventId = eventId; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("event_id", this.eventId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeClientEventInputAudioBufferCommit from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeClientEventInputAudioBufferCommit if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeClientEventInputAudioBufferCommit. + */ + @Generated + public static RealtimeClientEventInputAudioBufferCommit fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeClientEventInputAudioBufferCommit deserializedRealtimeClientEventInputAudioBufferCommit + = new RealtimeClientEventInputAudioBufferCommit(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeClientEventInputAudioBufferCommit.type + = RealtimeClientEventType.fromString(reader.getString()); + } else if ("event_id".equals(fieldName)) { + deserializedRealtimeClientEventInputAudioBufferCommit.eventId = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeClientEventInputAudioBufferCommit; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventOutputAudioBufferClear.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventOutputAudioBufferClear.java new file mode 100644 index 0000000000000..2588906c886ed --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventOutputAudioBufferClear.java @@ -0,0 +1,115 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * **WebRTC/SIP Only:** Emit to cut off the current audio response. This will trigger the server to + * stop generating audio and emit a `output_audio_buffer.cleared` event. This + * event should be preceded by a `response.cancel` client event to stop the + * generation of the current response. + * [Learn more](/docs/guides/realtime-conversations#client-and-server-events-for-audio-in-webrtc). + */ +@Fluent +public final class RealtimeClientEventOutputAudioBufferClear extends RealtimeClientEvent { + + /* + * The type property. + */ + @Generated + private RealtimeClientEventType type = RealtimeClientEventType.OUTPUT_AUDIO_BUFFER_CLEAR; + + /* + * The unique ID of the client event used for error handling. + */ + @Generated + private String eventId; + + /** + * Creates an instance of RealtimeClientEventOutputAudioBufferClear class. + */ + @Generated + public RealtimeClientEventOutputAudioBufferClear() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeClientEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the client event used for error handling. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Set the eventId property: The unique ID of the client event used for error handling. + * + * @param eventId the eventId value to set. + * @return the RealtimeClientEventOutputAudioBufferClear object itself. + */ + @Generated + public RealtimeClientEventOutputAudioBufferClear setEventId(String eventId) { + this.eventId = eventId; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("event_id", this.eventId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeClientEventOutputAudioBufferClear from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeClientEventOutputAudioBufferClear if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeClientEventOutputAudioBufferClear. + */ + @Generated + public static RealtimeClientEventOutputAudioBufferClear fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeClientEventOutputAudioBufferClear deserializedRealtimeClientEventOutputAudioBufferClear + = new RealtimeClientEventOutputAudioBufferClear(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeClientEventOutputAudioBufferClear.type + = RealtimeClientEventType.fromString(reader.getString()); + } else if ("event_id".equals(fieldName)) { + deserializedRealtimeClientEventOutputAudioBufferClear.eventId = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeClientEventOutputAudioBufferClear; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventResponseCancel.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventResponseCancel.java new file mode 100644 index 0000000000000..667effd1b314b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventResponseCancel.java @@ -0,0 +1,149 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Send this event to cancel an in-progress response. The server will respond + * with a `response.done` event with a status of `response.status=cancelled`. If + * there is no response to cancel, the server will respond with an error. It's safe + * to call `response.cancel` even if no response is in progress, an error will be + * returned the session will remain unaffected. + */ +@Fluent +public final class RealtimeClientEventResponseCancel extends RealtimeClientEvent { + + /* + * The type property. + */ + @Generated + private RealtimeClientEventType type = RealtimeClientEventType.RESPONSE_CANCEL; + + /* + * Optional client-generated ID used to identify this event. + */ + @Generated + private String eventId; + + /* + * A specific response ID to cancel - if not provided, will cancel an + * in-progress response in the default conversation. + */ + @Generated + private String responseId; + + /** + * Creates an instance of RealtimeClientEventResponseCancel class. + */ + @Generated + public RealtimeClientEventResponseCancel() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeClientEventType getType() { + return this.type; + } + + /** + * Get the eventId property: Optional client-generated ID used to identify this event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Set the eventId property: Optional client-generated ID used to identify this event. + * + * @param eventId the eventId value to set. + * @return the RealtimeClientEventResponseCancel object itself. + */ + @Generated + public RealtimeClientEventResponseCancel setEventId(String eventId) { + this.eventId = eventId; + return this; + } + + /** + * Get the responseId property: A specific response ID to cancel - if not provided, will cancel an + * in-progress response in the default conversation. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Set the responseId property: A specific response ID to cancel - if not provided, will cancel an + * in-progress response in the default conversation. + * + * @param responseId the responseId value to set. + * @return the RealtimeClientEventResponseCancel object itself. + */ + @Generated + public RealtimeClientEventResponseCancel setResponseId(String responseId) { + this.responseId = responseId; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeClientEventResponseCancel from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeClientEventResponseCancel if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeClientEventResponseCancel. + */ + @Generated + public static RealtimeClientEventResponseCancel fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeClientEventResponseCancel deserializedRealtimeClientEventResponseCancel + = new RealtimeClientEventResponseCancel(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeClientEventResponseCancel.type + = RealtimeClientEventType.fromString(reader.getString()); + } else if ("event_id".equals(fieldName)) { + deserializedRealtimeClientEventResponseCancel.eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + deserializedRealtimeClientEventResponseCancel.responseId = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeClientEventResponseCancel; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventResponseCreate.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventResponseCreate.java new file mode 100644 index 0000000000000..e35d4ce415b71 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventResponseCreate.java @@ -0,0 +1,162 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * This event instructs the server to create a Response, which means triggering + * model inference. When in Server VAD mode, the server will create Responses + * automatically. + * A Response will include at least one Item, and may have two, in which case + * the second will be a function call. These Items will be appended to the + * conversation history by default. + * The server will respond with a `response.created` event, events for Items + * and content created, and finally a `response.done` event to indicate the + * Response is complete. + * The `response.create` event includes inference configuration like + * `instructions` and `tools`. If these are set, they will override the Session's + * configuration for this Response only. + * Responses can be created out-of-band of the default Conversation, meaning that they can + * have arbitrary input, and it's possible to disable writing the output to the Conversation. + * Only one Response can write to the default Conversation at a time, but otherwise multiple + * Responses can be created in parallel. The `metadata` field is a good way to disambiguate + * multiple simultaneous Responses. + * Clients can set `conversation` to `none` to create a Response that does not write to the default + * Conversation. Arbitrary input can be provided with the `input` field, which is an array accepting + * raw Items and references to existing Items. + */ +@Fluent +public final class RealtimeClientEventResponseCreate extends RealtimeClientEvent { + + /* + * The type property. + */ + @Generated + private RealtimeClientEventType type = RealtimeClientEventType.RESPONSE_CREATE; + + /* + * Optional client-generated ID used to identify this event. + */ + @Generated + private String eventId; + + /* + * The response property. + */ + @Generated + private VoiceAgentResponseCreateParams response; + + /** + * Creates an instance of RealtimeClientEventResponseCreate class. + */ + @Generated + public RealtimeClientEventResponseCreate() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeClientEventType getType() { + return this.type; + } + + /** + * Get the eventId property: Optional client-generated ID used to identify this event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Set the eventId property: Optional client-generated ID used to identify this event. + * + * @param eventId the eventId value to set. + * @return the RealtimeClientEventResponseCreate object itself. + */ + @Generated + public RealtimeClientEventResponseCreate setEventId(String eventId) { + this.eventId = eventId; + return this; + } + + /** + * Get the response property: The response property. + * + * @return the response value. + */ + @Generated + public VoiceAgentResponseCreateParams getResponse() { + return this.response; + } + + /** + * Set the response property: The response property. + * + * @param response the response value to set. + * @return the RealtimeClientEventResponseCreate object itself. + */ + @Generated + public RealtimeClientEventResponseCreate setResponse(VoiceAgentResponseCreateParams response) { + this.response = response; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeJsonField("response", this.response); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeClientEventResponseCreate from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeClientEventResponseCreate if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeClientEventResponseCreate. + */ + @Generated + public static RealtimeClientEventResponseCreate fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeClientEventResponseCreate deserializedRealtimeClientEventResponseCreate + = new RealtimeClientEventResponseCreate(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeClientEventResponseCreate.type + = RealtimeClientEventType.fromString(reader.getString()); + } else if ("event_id".equals(fieldName)) { + deserializedRealtimeClientEventResponseCreate.eventId = reader.getString(); + } else if ("response".equals(fieldName)) { + deserializedRealtimeClientEventResponseCreate.response + = VoiceAgentResponseCreateParams.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeClientEventResponseCreate; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdate.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdate.java new file mode 100644 index 0000000000000..72e237ee6d509 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdate.java @@ -0,0 +1,155 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Send this event to update the session’s configuration. + * The client may send this event at any time to update any field + * except for `voice` and `model`. `voice` can be updated only if there have been no other audio outputs yet. + * When the server receives a `session.update`, it will respond + * with a `session.updated` event showing the full, effective configuration. + * Only the fields that are present in the `session.update` are updated. To clear a field like + * `instructions`, pass an empty string. To clear a field like `tools`, pass an empty array. + * To clear a field like `turn_detection`, pass `null`. + */ +@Fluent +public final class RealtimeClientEventSessionUpdate extends RealtimeClientEvent { + + /* + * The type property. + */ + @Generated + private RealtimeClientEventType type = RealtimeClientEventType.SESSION_UPDATE; + + /* + * Optional client-generated ID used to identify this event. This is an arbitrary string that a client may assign. + * It will be passed back if there is an error with the event, but the corresponding `session.updated` event will + * not include it. + */ + @Generated + private String eventId; + + /* + * Update the Realtime session. Choose either a realtime + * session or a transcription session. + */ + @Generated + private final BinaryData session; + + /** + * Creates an instance of RealtimeClientEventSessionUpdate class. + * + * @param session the session value to set. + */ + @Generated + public RealtimeClientEventSessionUpdate(BinaryData session) { + this.session = session; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeClientEventType getType() { + return this.type; + } + + /** + * Get the eventId property: Optional client-generated ID used to identify this event. This is an arbitrary string + * that a client may assign. It will be passed back if there is an error with the event, but the corresponding + * `session.updated` event will not include it. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Set the eventId property: Optional client-generated ID used to identify this event. This is an arbitrary string + * that a client may assign. It will be passed back if there is an error with the event, but the corresponding + * `session.updated` event will not include it. + * + * @param eventId the eventId value to set. + * @return the RealtimeClientEventSessionUpdate object itself. + */ + @Generated + public RealtimeClientEventSessionUpdate setEventId(String eventId) { + this.eventId = eventId; + return this; + } + + /** + * Get the session property: Update the Realtime session. Choose either a realtime + * session or a transcription session. + * + * @return the session value. + */ + @Generated + public BinaryData getSession() { + return this.session; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeFieldName("session"); + this.session.writeTo(jsonWriter); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("event_id", this.eventId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeClientEventSessionUpdate from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeClientEventSessionUpdate if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeClientEventSessionUpdate. + */ + @Generated + public static RealtimeClientEventSessionUpdate fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + BinaryData session = null; + RealtimeClientEventType type = RealtimeClientEventType.SESSION_UPDATE; + String eventId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("session".equals(fieldName)) { + session = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("type".equals(fieldName)) { + type = RealtimeClientEventType.fromString(reader.getString()); + } else if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeClientEventSessionUpdate deserializedRealtimeClientEventSessionUpdate + = new RealtimeClientEventSessionUpdate(session); + deserializedRealtimeClientEventSessionUpdate.type = type; + deserializedRealtimeClientEventSessionUpdate.eventId = eventId; + return deserializedRealtimeClientEventSessionUpdate; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionModel.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionModel.java new file mode 100644 index 0000000000000..3a4cb0991a458 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionModel.java @@ -0,0 +1,173 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Defines values for RealtimeClientEventSessionUpdateSessionModel. + */ +public final class RealtimeClientEventSessionUpdateSessionModel + extends ExpandableStringEnum { + + /** + * Static value gpt-realtime for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_REALTIME = fromString("gpt-realtime"); + + /** + * Static value gpt-realtime-1.5 for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_REALTIME_1_5 = fromString("gpt-realtime-1.5"); + + /** + * Static value gpt-realtime-2 for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_REALTIME_2 = fromString("gpt-realtime-2"); + + /** + * Static value gpt-realtime-2.1 for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_REALTIME_2_1 = fromString("gpt-realtime-2.1"); + + /** + * Static value gpt-realtime-2.1-mini for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_REALTIME_2_1_MINI + = fromString("gpt-realtime-2.1-mini"); + + /** + * Static value gpt-realtime-2025-08-28 for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_REALTIME_2025_08_28 + = fromString("gpt-realtime-2025-08-28"); + + /** + * Static value gpt-4o-realtime-preview for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_4O_REALTIME_PREVIEW + = fromString("gpt-4o-realtime-preview"); + + /** + * Static value gpt-4o-realtime-preview-2024-10-01 for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_4O_REALTIME_PREVIEW_2024_10_01 + = fromString("gpt-4o-realtime-preview-2024-10-01"); + + /** + * Static value gpt-4o-realtime-preview-2024-12-17 for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_4O_REALTIME_PREVIEW_2024_12_17 + = fromString("gpt-4o-realtime-preview-2024-12-17"); + + /** + * Static value gpt-4o-realtime-preview-2025-06-03 for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_4O_REALTIME_PREVIEW_2025_06_03 + = fromString("gpt-4o-realtime-preview-2025-06-03"); + + /** + * Static value gpt-4o-mini-realtime-preview for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_4O_MINI_REALTIME_PREVIEW + = fromString("gpt-4o-mini-realtime-preview"); + + /** + * Static value gpt-4o-mini-realtime-preview-2024-12-17 for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_4O_MINI_REALTIME_PREVIEW_2024_12_17 + = fromString("gpt-4o-mini-realtime-preview-2024-12-17"); + + /** + * Static value gpt-realtime-mini for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_REALTIME_MINI + = fromString("gpt-realtime-mini"); + + /** + * Static value gpt-realtime-mini-2025-10-06 for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_REALTIME_MINI_2025_10_06 + = fromString("gpt-realtime-mini-2025-10-06"); + + /** + * Static value gpt-realtime-mini-2025-12-15 for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_REALTIME_MINI_2025_12_15 + = fromString("gpt-realtime-mini-2025-12-15"); + + /** + * Static value gpt-audio-1.5 for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_AUDIO_1_5 = fromString("gpt-audio-1.5"); + + /** + * Static value gpt-audio-mini for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_AUDIO_MINI = fromString("gpt-audio-mini"); + + /** + * Static value gpt-audio-mini-2025-10-06 for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_AUDIO_MINI_2025_10_06 + = fromString("gpt-audio-mini-2025-10-06"); + + /** + * Static value gpt-audio-mini-2025-12-15 for RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static final RealtimeClientEventSessionUpdateSessionModel GPT_AUDIO_MINI_2025_12_15 + = fromString("gpt-audio-mini-2025-12-15"); + + /** + * Creates a new instance of RealtimeClientEventSessionUpdateSessionModel value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public RealtimeClientEventSessionUpdateSessionModel() { + } + + /** + * Creates or finds a RealtimeClientEventSessionUpdateSessionModel from its string representation. + * + * @param name a name to look for. + * @return the corresponding RealtimeClientEventSessionUpdateSessionModel. + */ + @Generated + public static RealtimeClientEventSessionUpdateSessionModel fromString(String name) { + return fromString(name, RealtimeClientEventSessionUpdateSessionModel.class); + } + + /** + * Gets known RealtimeClientEventSessionUpdateSessionModel values. + * + * @return known RealtimeClientEventSessionUpdateSessionModel values. + */ + @Generated + public static Collection values() { + return values(RealtimeClientEventSessionUpdateSessionModel.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionOutputModality.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionOutputModality.java new file mode 100644 index 0000000000000..441e947b998c6 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionOutputModality.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeClientEventSessionUpdateSessionOutputModality. + */ +public enum RealtimeClientEventSessionUpdateSessionOutputModality { + /** + * Enum value text. + */ + TEXT("text"), + + /** + * Enum value audio. + */ + AUDIO("audio"); + + /** + * The actual serialized value for a RealtimeClientEventSessionUpdateSessionOutputModality instance. + */ + private final String value; + + RealtimeClientEventSessionUpdateSessionOutputModality(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeClientEventSessionUpdateSessionOutputModality instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeClientEventSessionUpdateSessionOutputModality object, or null if unable to parse. + */ + public static RealtimeClientEventSessionUpdateSessionOutputModality fromString(String value) { + if (value == null) { + return null; + } + RealtimeClientEventSessionUpdateSessionOutputModality[] items + = RealtimeClientEventSessionUpdateSessionOutputModality.values(); + for (RealtimeClientEventSessionUpdateSessionOutputModality item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionTruncation.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionTruncation.java new file mode 100644 index 0000000000000..bdea1f0060a63 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionTruncation.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeClientEventSessionUpdateSessionTruncation. + */ +public enum RealtimeClientEventSessionUpdateSessionTruncation { + /** + * Enum value auto. + */ + AUTO("auto"), + + /** + * Enum value disabled. + */ + DISABLED("disabled"); + + /** + * The actual serialized value for a RealtimeClientEventSessionUpdateSessionTruncation instance. + */ + private final String value; + + RealtimeClientEventSessionUpdateSessionTruncation(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeClientEventSessionUpdateSessionTruncation instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeClientEventSessionUpdateSessionTruncation object, or null if unable to parse. + */ + public static RealtimeClientEventSessionUpdateSessionTruncation fromString(String value) { + if (value == null) { + return null; + } + RealtimeClientEventSessionUpdateSessionTruncation[] items + = RealtimeClientEventSessionUpdateSessionTruncation.values(); + for (RealtimeClientEventSessionUpdateSessionTruncation item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionTruncation1.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionTruncation1.java new file mode 100644 index 0000000000000..7ef2c1fe644f9 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionTruncation1.java @@ -0,0 +1,136 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeClientEventSessionUpdateSessionTruncation1 model. + */ +@Fluent +public final class RealtimeClientEventSessionUpdateSessionTruncation1 + implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private final String type = "retention_ratio"; + + /* + * The retention_ratio property. + */ + @Generated + private final double retentionRatio; + + /* + * The token_limits property. + */ + @Generated + private TokenLimits tokenLimits; + + /** + * Creates an instance of RealtimeClientEventSessionUpdateSessionTruncation1 class. + * + * @param retentionRatio the retentionRatio value to set. + */ + @Generated + public RealtimeClientEventSessionUpdateSessionTruncation1(double retentionRatio) { + this.retentionRatio = retentionRatio; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * Get the retentionRatio property: The retention_ratio property. + * + * @return the retentionRatio value. + */ + @Generated + public double getRetentionRatio() { + return this.retentionRatio; + } + + /** + * Get the tokenLimits property: The token_limits property. + * + * @return the tokenLimits value. + */ + @Generated + public TokenLimits getTokenLimits() { + return this.tokenLimits; + } + + /** + * Set the tokenLimits property: The token_limits property. + * + * @param tokenLimits the tokenLimits value to set. + * @return the RealtimeClientEventSessionUpdateSessionTruncation1 object itself. + */ + @Generated + public RealtimeClientEventSessionUpdateSessionTruncation1 setTokenLimits(TokenLimits tokenLimits) { + this.tokenLimits = tokenLimits; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeDoubleField("retention_ratio", this.retentionRatio); + jsonWriter.writeJsonField("token_limits", this.tokenLimits); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeClientEventSessionUpdateSessionTruncation1 from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeClientEventSessionUpdateSessionTruncation1 if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeClientEventSessionUpdateSessionTruncation1. + */ + @Generated + public static RealtimeClientEventSessionUpdateSessionTruncation1 fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + double retentionRatio = 0.0; + TokenLimits tokenLimits = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("retention_ratio".equals(fieldName)) { + retentionRatio = reader.getDouble(); + } else if ("token_limits".equals(fieldName)) { + tokenLimits = TokenLimits.fromJson(reader); + } else { + reader.skipChildren(); + } + } + RealtimeClientEventSessionUpdateSessionTruncation1 deserializedRealtimeClientEventSessionUpdateSessionTruncation1 + = new RealtimeClientEventSessionUpdateSessionTruncation1(retentionRatio); + deserializedRealtimeClientEventSessionUpdateSessionTruncation1.tokenLimits = tokenLimits; + return deserializedRealtimeClientEventSessionUpdateSessionTruncation1; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventType.java new file mode 100644 index 0000000000000..c48e895660401 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeClientEventType.java @@ -0,0 +1,123 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Defines values for RealtimeClientEventType. + */ +public final class RealtimeClientEventType extends ExpandableStringEnum { + + /** + * Static value conversation.item.create for RealtimeClientEventType. + */ + @Generated + public static final RealtimeClientEventType CONVERSATION_ITEM_CREATE = fromString("conversation.item.create"); + + /** + * Static value conversation.item.delete for RealtimeClientEventType. + */ + @Generated + public static final RealtimeClientEventType CONVERSATION_ITEM_DELETE = fromString("conversation.item.delete"); + + /** + * Static value conversation.item.retrieve for RealtimeClientEventType. + */ + @Generated + public static final RealtimeClientEventType CONVERSATION_ITEM_RETRIEVE = fromString("conversation.item.retrieve"); + + /** + * Static value conversation.item.truncate for RealtimeClientEventType. + */ + @Generated + public static final RealtimeClientEventType CONVERSATION_ITEM_TRUNCATE = fromString("conversation.item.truncate"); + + /** + * Static value input_audio_buffer.append for RealtimeClientEventType. + */ + @Generated + public static final RealtimeClientEventType INPUT_AUDIO_BUFFER_APPEND = fromString("input_audio_buffer.append"); + + /** + * Static value input_audio_buffer.clear for RealtimeClientEventType. + */ + @Generated + public static final RealtimeClientEventType INPUT_AUDIO_BUFFER_CLEAR = fromString("input_audio_buffer.clear"); + + /** + * Static value output_audio_buffer.clear for RealtimeClientEventType. + */ + @Generated + public static final RealtimeClientEventType OUTPUT_AUDIO_BUFFER_CLEAR = fromString("output_audio_buffer.clear"); + + /** + * Static value input_audio_buffer.commit for RealtimeClientEventType. + */ + @Generated + public static final RealtimeClientEventType INPUT_AUDIO_BUFFER_COMMIT = fromString("input_audio_buffer.commit"); + + /** + * Static value response.cancel for RealtimeClientEventType. + */ + @Generated + public static final RealtimeClientEventType RESPONSE_CANCEL = fromString("response.cancel"); + + /** + * Static value response.create for RealtimeClientEventType. + */ + @Generated + public static final RealtimeClientEventType RESPONSE_CREATE = fromString("response.create"); + + /** + * Static value session.update for RealtimeClientEventType. + */ + @Generated + public static final RealtimeClientEventType SESSION_UPDATE = fromString("session.update"); + + /** + * Static value session.avatar.connect for RealtimeClientEventType. + */ + @Generated + public static final RealtimeClientEventType SESSION_AVATAR_CONNECT = fromString("session.avatar.connect"); + + /** + * Static value rtc.call.sdp.create for RealtimeClientEventType. + */ + @Generated + public static final RealtimeClientEventType RTC_CALL_SDP_CREATE = fromString("rtc.call.sdp.create"); + + /** + * Creates a new instance of RealtimeClientEventType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public RealtimeClientEventType() { + } + + /** + * Creates or finds a RealtimeClientEventType from its string representation. + * + * @param name a name to look for. + * @return the corresponding RealtimeClientEventType. + */ + @Generated + public static RealtimeClientEventType fromString(String name) { + return fromString(name, RealtimeClientEventType.class); + } + + /** + * Gets known RealtimeClientEventType values. + * + * @return known RealtimeClientEventType values. + */ + @Generated + public static Collection values() { + return values(RealtimeClientEventType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItem.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItem.java new file mode 100644 index 0000000000000..0d9da25f1664b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItem.java @@ -0,0 +1,118 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A single item within a Realtime conversation. + */ +@Immutable +public class RealtimeConversationItem implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private RealtimeConversationItemType type = RealtimeConversationItemType.fromString("RealtimeConversationItem"); + + /** + * Creates an instance of RealtimeConversationItem class. + */ + @Generated + public RealtimeConversationItem() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public RealtimeConversationItemType getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeConversationItem from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeConversationItem if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeConversationItem. + */ + @Generated + public static RealtimeConversationItem fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("message".equals(discriminatorValue)) { + return RealtimeConversationItemMessage.fromJson(readerToUse.reset()); + } else if ("function_call".equals(discriminatorValue)) { + return RealtimeConversationItemFunctionCall.fromJson(readerToUse.reset()); + } else if ("function_call_output".equals(discriminatorValue)) { + return RealtimeConversationItemFunctionCallOutput.fromJson(readerToUse.reset()); + } else if ("mcp_approval_response".equals(discriminatorValue)) { + return RealtimeMCPApprovalResponse.fromJson(readerToUse.reset()); + } else if ("mcp_list_tools".equals(discriminatorValue)) { + return RealtimeMCPListTools.fromJson(readerToUse.reset()); + } else if ("mcp_call".equals(discriminatorValue)) { + return RealtimeMCPToolCall.fromJson(readerToUse.reset()); + } else if ("mcp_approval_request".equals(discriminatorValue)) { + return RealtimeMCPApprovalRequest.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static RealtimeConversationItem fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeConversationItem deserializedRealtimeConversationItem = new RealtimeConversationItem(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeConversationItem.type + = RealtimeConversationItemType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeConversationItem; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessage.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessage.java new file mode 100644 index 0000000000000..6d4cbe0e4f208 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessage.java @@ -0,0 +1,128 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeConversationItemMessage model. + */ +@Immutable +public class RealtimeConversationItemMessage extends RealtimeConversationItem { + + /* + * The type property. + */ + @Generated + private final RealtimeConversationItemType type = RealtimeConversationItemType.MESSAGE; + + /* + * The role property. + */ + @Generated + private RealtimeConversationItemMessageType role = RealtimeConversationItemMessageType.fromString("message"); + + /** + * Creates an instance of RealtimeConversationItemMessage class. + */ + @Generated + public RealtimeConversationItemMessage() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeConversationItemType getType() { + return this.type; + } + + /** + * Get the role property: The role property. + * + * @return the role value. + */ + @Generated + public RealtimeConversationItemMessageType getRole() { + return this.role; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("role", this.role == null ? null : this.role.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeConversationItemMessage from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeConversationItemMessage if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeConversationItemMessage. + */ + @Generated + public static RealtimeConversationItemMessage fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("role".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("system".equals(discriminatorValue)) { + return RealtimeConversationItemMessageSystem.fromJson(readerToUse.reset()); + } else if ("user".equals(discriminatorValue)) { + return RealtimeConversationItemMessageUser.fromJson(readerToUse.reset()); + } else if ("assistant".equals(discriminatorValue)) { + return RealtimeConversationItemMessageAssistant.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static RealtimeConversationItemMessage fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeConversationItemMessage deserializedRealtimeConversationItemMessage + = new RealtimeConversationItemMessage(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("role".equals(fieldName)) { + deserializedRealtimeConversationItemMessage.role + = RealtimeConversationItemMessageType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeConversationItemMessage; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistant.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistant.java new file mode 100644 index 0000000000000..6a4f90511f5e6 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistant.java @@ -0,0 +1,268 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Realtime assistant message item + * + * An assistant message item in a Realtime conversation. + */ +@Fluent +public final class RealtimeConversationItemMessageAssistant extends RealtimeConversationItemMessage { + + /* + * The type property. + */ + @Generated + private final RealtimeConversationItemType type = RealtimeConversationItemType.MESSAGE; + + /* + * The role property. + */ + @Generated + private RealtimeConversationItemMessageType role = RealtimeConversationItemMessageType.ASSISTANT; + + /* + * The unique ID of the item. This may be provided by the client or generated by the server. + */ + @Generated + private String id; + + /* + * Identifier for the API object being returned - always `realtime.item`. Optional when creating a new item. + */ + @Generated + private RealtimeConversationItemObject object; + + /* + * The status of the item. Has no effect on the conversation. + */ + @Generated + private RealtimeConversationItemMessageAssistantStatus status; + + /* + * The content of the message. + */ + @Generated + private final List content; + + /* + * The Unix timestamp (in seconds) for when the item was persisted. + */ + @Generated + private Long createdAt; + + /* + * The id of the response that produced this item, when applicable. + */ + @Generated + private String responseId; + + /** + * Creates an instance of RealtimeConversationItemMessageAssistant class. + * + * @param content the content value to set. + */ + @Generated + public RealtimeConversationItemMessageAssistant(List content) { + this.content = content; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeConversationItemType getType() { + return this.type; + } + + /** + * Get the role property: The role property. + * + * @return the role value. + */ + @Generated + @Override + public RealtimeConversationItemMessageType getRole() { + return this.role; + } + + /** + * Get the id property: The unique ID of the item. This may be provided by the client or generated by the server. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Set the id property: The unique ID of the item. This may be provided by the client or generated by the server. + * + * @param id the id value to set. + * @return the RealtimeConversationItemMessageAssistant object itself. + */ + @Generated + public RealtimeConversationItemMessageAssistant setId(String id) { + this.id = id; + return this; + } + + /** + * Get the object property: Identifier for the API object being returned - always `realtime.item`. Optional when + * creating a new item. + * + * @return the object value. + */ + @Generated + public RealtimeConversationItemObject getObject() { + return this.object; + } + + /** + * Set the object property: Identifier for the API object being returned - always `realtime.item`. Optional when + * creating a new item. + * + * @param object the object value to set. + * @return the RealtimeConversationItemMessageAssistant object itself. + */ + @Generated + public RealtimeConversationItemMessageAssistant setObject(RealtimeConversationItemObject object) { + this.object = object; + return this; + } + + /** + * Get the status property: The status of the item. Has no effect on the conversation. + * + * @return the status value. + */ + @Generated + public RealtimeConversationItemMessageAssistantStatus getStatus() { + return this.status; + } + + /** + * Set the status property: The status of the item. Has no effect on the conversation. + * + * @param status the status value to set. + * @return the RealtimeConversationItemMessageAssistant object itself. + */ + @Generated + public RealtimeConversationItemMessageAssistant setStatus(RealtimeConversationItemMessageAssistantStatus status) { + this.status = status; + return this; + } + + /** + * Get the content property: The content of the message. + * + * @return the content value. + */ + @Generated + public List getContent() { + return this.content; + } + + /** + * Get the createdAt property: The Unix timestamp (in seconds) for when the item was persisted. + * + * @return the createdAt value. + */ + @Generated + public Long getCreatedAt() { + return this.createdAt; + } + + /** + * Get the responseId property: The id of the response that produced this item, when applicable. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeArrayField("content", this.content, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeStringField("role", this.role == null ? null : this.role.toString()); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("object", this.object == null ? null : this.object.toString()); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeConversationItemMessageAssistant from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeConversationItemMessageAssistant if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeConversationItemMessageAssistant. + */ + @Generated + public static RealtimeConversationItemMessageAssistant fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + List content = null; + RealtimeConversationItemMessageType role = RealtimeConversationItemMessageType.ASSISTANT; + String id = null; + RealtimeConversationItemObject object = null; + RealtimeConversationItemMessageAssistantStatus status = null; + Long createdAt = null; + String responseId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("content".equals(fieldName)) { + content = reader + .readArray(reader1 -> RealtimeConversationItemMessageAssistantContent.fromJson(reader1)); + } else if ("role".equals(fieldName)) { + role = RealtimeConversationItemMessageType.fromString(reader.getString()); + } else if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("object".equals(fieldName)) { + object = RealtimeConversationItemObject.fromString(reader.getString()); + } else if ("status".equals(fieldName)) { + status = RealtimeConversationItemMessageAssistantStatus.fromString(reader.getString()); + } else if ("created_at".equals(fieldName)) { + createdAt = reader.getNullable(JsonReader::getLong); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeConversationItemMessageAssistant deserializedRealtimeConversationItemMessageAssistant + = new RealtimeConversationItemMessageAssistant(content); + deserializedRealtimeConversationItemMessageAssistant.role = role; + deserializedRealtimeConversationItemMessageAssistant.id = id; + deserializedRealtimeConversationItemMessageAssistant.object = object; + deserializedRealtimeConversationItemMessageAssistant.status = status; + deserializedRealtimeConversationItemMessageAssistant.createdAt = createdAt; + deserializedRealtimeConversationItemMessageAssistant.responseId = responseId; + return deserializedRealtimeConversationItemMessageAssistant; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantContent.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantContent.java new file mode 100644 index 0000000000000..37e96e2b7270e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantContent.java @@ -0,0 +1,187 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeConversationItemMessageAssistantContent model. + */ +@Fluent +public final class RealtimeConversationItemMessageAssistantContent + implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private RealtimeConversationItemMessageAssistantContentType type; + + /* + * The text property. + */ + @Generated + private String text; + + /* + * The audio property. + */ + @Generated + private String audio; + + /* + * The transcript property. + */ + @Generated + private String transcript; + + /** + * Creates an instance of RealtimeConversationItemMessageAssistantContent class. + */ + @Generated + public RealtimeConversationItemMessageAssistantContent() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public RealtimeConversationItemMessageAssistantContentType getType() { + return this.type; + } + + /** + * Set the type property: The type property. + * + * @param type the type value to set. + * @return the RealtimeConversationItemMessageAssistantContent object itself. + */ + @Generated + public RealtimeConversationItemMessageAssistantContent + setType(RealtimeConversationItemMessageAssistantContentType type) { + this.type = type; + return this; + } + + /** + * Get the text property: The text property. + * + * @return the text value. + */ + @Generated + public String getText() { + return this.text; + } + + /** + * Set the text property: The text property. + * + * @param text the text value to set. + * @return the RealtimeConversationItemMessageAssistantContent object itself. + */ + @Generated + public RealtimeConversationItemMessageAssistantContent setText(String text) { + this.text = text; + return this; + } + + /** + * Get the audio property: The audio property. + * + * @return the audio value. + */ + @Generated + public String getAudio() { + return this.audio; + } + + /** + * Set the audio property: The audio property. + * + * @param audio the audio value to set. + * @return the RealtimeConversationItemMessageAssistantContent object itself. + */ + @Generated + public RealtimeConversationItemMessageAssistantContent setAudio(String audio) { + this.audio = audio; + return this; + } + + /** + * Get the transcript property: The transcript property. + * + * @return the transcript value. + */ + @Generated + public String getTranscript() { + return this.transcript; + } + + /** + * Set the transcript property: The transcript property. + * + * @param transcript the transcript value to set. + * @return the RealtimeConversationItemMessageAssistantContent object itself. + */ + @Generated + public RealtimeConversationItemMessageAssistantContent setTranscript(String transcript) { + this.transcript = transcript; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("text", this.text); + jsonWriter.writeStringField("audio", this.audio); + jsonWriter.writeStringField("transcript", this.transcript); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeConversationItemMessageAssistantContent from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeConversationItemMessageAssistantContent if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeConversationItemMessageAssistantContent. + */ + @Generated + public static RealtimeConversationItemMessageAssistantContent fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeConversationItemMessageAssistantContent deserializedRealtimeConversationItemMessageAssistantContent + = new RealtimeConversationItemMessageAssistantContent(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeConversationItemMessageAssistantContent.type + = RealtimeConversationItemMessageAssistantContentType.fromString(reader.getString()); + } else if ("text".equals(fieldName)) { + deserializedRealtimeConversationItemMessageAssistantContent.text = reader.getString(); + } else if ("audio".equals(fieldName)) { + deserializedRealtimeConversationItemMessageAssistantContent.audio = reader.getString(); + } else if ("transcript".equals(fieldName)) { + deserializedRealtimeConversationItemMessageAssistantContent.transcript = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeConversationItemMessageAssistantContent; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantContentType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantContentType.java new file mode 100644 index 0000000000000..f4dd3c47ca8c3 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantContentType.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeConversationItemMessageAssistantContentType. + */ +public enum RealtimeConversationItemMessageAssistantContentType { + /** + * Enum value output_text. + */ + OUTPUT_TEXT("output_text"), + + /** + * Enum value output_audio. + */ + OUTPUT_AUDIO("output_audio"); + + /** + * The actual serialized value for a RealtimeConversationItemMessageAssistantContentType instance. + */ + private final String value; + + RealtimeConversationItemMessageAssistantContentType(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeConversationItemMessageAssistantContentType instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeConversationItemMessageAssistantContentType object, or null if unable to parse. + */ + public static RealtimeConversationItemMessageAssistantContentType fromString(String value) { + if (value == null) { + return null; + } + RealtimeConversationItemMessageAssistantContentType[] items + = RealtimeConversationItemMessageAssistantContentType.values(); + for (RealtimeConversationItemMessageAssistantContentType item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantStatus.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantStatus.java new file mode 100644 index 0000000000000..abcdeedf807e0 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantStatus.java @@ -0,0 +1,62 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeConversationItemMessageAssistantStatus. + */ +public enum RealtimeConversationItemMessageAssistantStatus { + /** + * Enum value completed. + */ + COMPLETED("completed"), + + /** + * Enum value incomplete. + */ + INCOMPLETE("incomplete"), + + /** + * Enum value in_progress. + */ + IN_PROGRESS("in_progress"); + + /** + * The actual serialized value for a RealtimeConversationItemMessageAssistantStatus instance. + */ + private final String value; + + RealtimeConversationItemMessageAssistantStatus(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeConversationItemMessageAssistantStatus instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeConversationItemMessageAssistantStatus object, or null if unable to parse. + */ + public static RealtimeConversationItemMessageAssistantStatus fromString(String value) { + if (value == null) { + return null; + } + RealtimeConversationItemMessageAssistantStatus[] items + = RealtimeConversationItemMessageAssistantStatus.values(); + for (RealtimeConversationItemMessageAssistantStatus item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystem.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystem.java new file mode 100644 index 0000000000000..5a60bcf83c3be --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystem.java @@ -0,0 +1,271 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Realtime system message item + * + * A system message in a Realtime conversation can be used to provide additional context or instructions to the model. + * This is similar but distinct from the instruction prompt provided at the start of a conversation, as system messages + * can be added at any point in the conversation. For major changes to the conversation's behavior, use instructions, + * but for smaller updates (e.g. "the user is now asking about a different topic"), use system messages. + */ +@Fluent +public final class RealtimeConversationItemMessageSystem extends RealtimeConversationItemMessage { + + /* + * The type property. + */ + @Generated + private final RealtimeConversationItemType type = RealtimeConversationItemType.MESSAGE; + + /* + * The role property. + */ + @Generated + private RealtimeConversationItemMessageType role = RealtimeConversationItemMessageType.SYSTEM; + + /* + * The unique ID of the item. This may be provided by the client or generated by the server. + */ + @Generated + private String id; + + /* + * Identifier for the API object being returned - always `realtime.item`. Optional when creating a new item. + */ + @Generated + private RealtimeConversationItemObject object; + + /* + * The status of the item. Has no effect on the conversation. + */ + @Generated + private RealtimeConversationItemMessageSystemStatus status; + + /* + * The content of the message. + */ + @Generated + private final List content; + + /* + * The Unix timestamp (in seconds) for when the item was persisted. + */ + @Generated + private Long createdAt; + + /* + * The id of the response that produced this item, when applicable. + */ + @Generated + private String responseId; + + /** + * Creates an instance of RealtimeConversationItemMessageSystem class. + * + * @param content the content value to set. + */ + @Generated + public RealtimeConversationItemMessageSystem(List content) { + this.content = content; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeConversationItemType getType() { + return this.type; + } + + /** + * Get the role property: The role property. + * + * @return the role value. + */ + @Generated + @Override + public RealtimeConversationItemMessageType getRole() { + return this.role; + } + + /** + * Get the id property: The unique ID of the item. This may be provided by the client or generated by the server. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Set the id property: The unique ID of the item. This may be provided by the client or generated by the server. + * + * @param id the id value to set. + * @return the RealtimeConversationItemMessageSystem object itself. + */ + @Generated + public RealtimeConversationItemMessageSystem setId(String id) { + this.id = id; + return this; + } + + /** + * Get the object property: Identifier for the API object being returned - always `realtime.item`. Optional when + * creating a new item. + * + * @return the object value. + */ + @Generated + public RealtimeConversationItemObject getObject() { + return this.object; + } + + /** + * Set the object property: Identifier for the API object being returned - always `realtime.item`. Optional when + * creating a new item. + * + * @param object the object value to set. + * @return the RealtimeConversationItemMessageSystem object itself. + */ + @Generated + public RealtimeConversationItemMessageSystem setObject(RealtimeConversationItemObject object) { + this.object = object; + return this; + } + + /** + * Get the status property: The status of the item. Has no effect on the conversation. + * + * @return the status value. + */ + @Generated + public RealtimeConversationItemMessageSystemStatus getStatus() { + return this.status; + } + + /** + * Set the status property: The status of the item. Has no effect on the conversation. + * + * @param status the status value to set. + * @return the RealtimeConversationItemMessageSystem object itself. + */ + @Generated + public RealtimeConversationItemMessageSystem setStatus(RealtimeConversationItemMessageSystemStatus status) { + this.status = status; + return this; + } + + /** + * Get the content property: The content of the message. + * + * @return the content value. + */ + @Generated + public List getContent() { + return this.content; + } + + /** + * Get the createdAt property: The Unix timestamp (in seconds) for when the item was persisted. + * + * @return the createdAt value. + */ + @Generated + public Long getCreatedAt() { + return this.createdAt; + } + + /** + * Get the responseId property: The id of the response that produced this item, when applicable. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeArrayField("content", this.content, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeStringField("role", this.role == null ? null : this.role.toString()); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("object", this.object == null ? null : this.object.toString()); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeConversationItemMessageSystem from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeConversationItemMessageSystem if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeConversationItemMessageSystem. + */ + @Generated + public static RealtimeConversationItemMessageSystem fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + List content = null; + RealtimeConversationItemMessageType role = RealtimeConversationItemMessageType.SYSTEM; + String id = null; + RealtimeConversationItemObject object = null; + RealtimeConversationItemMessageSystemStatus status = null; + Long createdAt = null; + String responseId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("content".equals(fieldName)) { + content + = reader.readArray(reader1 -> RealtimeConversationItemMessageSystemContent.fromJson(reader1)); + } else if ("role".equals(fieldName)) { + role = RealtimeConversationItemMessageType.fromString(reader.getString()); + } else if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("object".equals(fieldName)) { + object = RealtimeConversationItemObject.fromString(reader.getString()); + } else if ("status".equals(fieldName)) { + status = RealtimeConversationItemMessageSystemStatus.fromString(reader.getString()); + } else if ("created_at".equals(fieldName)) { + createdAt = reader.getNullable(JsonReader::getLong); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeConversationItemMessageSystem deserializedRealtimeConversationItemMessageSystem + = new RealtimeConversationItemMessageSystem(content); + deserializedRealtimeConversationItemMessageSystem.role = role; + deserializedRealtimeConversationItemMessageSystem.id = id; + deserializedRealtimeConversationItemMessageSystem.object = object; + deserializedRealtimeConversationItemMessageSystem.status = status; + deserializedRealtimeConversationItemMessageSystem.createdAt = createdAt; + deserializedRealtimeConversationItemMessageSystem.responseId = responseId; + return deserializedRealtimeConversationItemMessageSystem; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemContent.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemContent.java new file mode 100644 index 0000000000000..ddbe77e8dcaaa --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemContent.java @@ -0,0 +1,124 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeConversationItemMessageSystemContent model. + */ +@Fluent +public final class RealtimeConversationItemMessageSystemContent + implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private RealtimeConversationItemMessageSystemContentType type; + + /* + * The text property. + */ + @Generated + private String text; + + /** + * Creates an instance of RealtimeConversationItemMessageSystemContent class. + */ + @Generated + public RealtimeConversationItemMessageSystemContent() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public RealtimeConversationItemMessageSystemContentType getType() { + return this.type; + } + + /** + * Set the type property: The type property. + * + * @param type the type value to set. + * @return the RealtimeConversationItemMessageSystemContent object itself. + */ + @Generated + public RealtimeConversationItemMessageSystemContent setType(RealtimeConversationItemMessageSystemContentType type) { + this.type = type; + return this; + } + + /** + * Get the text property: The text property. + * + * @return the text value. + */ + @Generated + public String getText() { + return this.text; + } + + /** + * Set the text property: The text property. + * + * @param text the text value to set. + * @return the RealtimeConversationItemMessageSystemContent object itself. + */ + @Generated + public RealtimeConversationItemMessageSystemContent setText(String text) { + this.text = text; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("text", this.text); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeConversationItemMessageSystemContent from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeConversationItemMessageSystemContent if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeConversationItemMessageSystemContent. + */ + @Generated + public static RealtimeConversationItemMessageSystemContent fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeConversationItemMessageSystemContent deserializedRealtimeConversationItemMessageSystemContent + = new RealtimeConversationItemMessageSystemContent(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeConversationItemMessageSystemContent.type + = RealtimeConversationItemMessageSystemContentType.fromString(reader.getString()); + } else if ("text".equals(fieldName)) { + deserializedRealtimeConversationItemMessageSystemContent.text = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeConversationItemMessageSystemContent; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemContentType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemContentType.java new file mode 100644 index 0000000000000..ca1aa3e3beee4 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemContentType.java @@ -0,0 +1,52 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeConversationItemMessageSystemContentType. + */ +public enum RealtimeConversationItemMessageSystemContentType { + /** + * Enum value input_text. + */ + INPUT_TEXT("input_text"); + + /** + * The actual serialized value for a RealtimeConversationItemMessageSystemContentType instance. + */ + private final String value; + + RealtimeConversationItemMessageSystemContentType(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeConversationItemMessageSystemContentType instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeConversationItemMessageSystemContentType object, or null if unable to parse. + */ + public static RealtimeConversationItemMessageSystemContentType fromString(String value) { + if (value == null) { + return null; + } + RealtimeConversationItemMessageSystemContentType[] items + = RealtimeConversationItemMessageSystemContentType.values(); + for (RealtimeConversationItemMessageSystemContentType item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemStatus.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemStatus.java new file mode 100644 index 0000000000000..1ce2b5e7029ca --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemStatus.java @@ -0,0 +1,61 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeConversationItemMessageSystemStatus. + */ +public enum RealtimeConversationItemMessageSystemStatus { + /** + * Enum value completed. + */ + COMPLETED("completed"), + + /** + * Enum value incomplete. + */ + INCOMPLETE("incomplete"), + + /** + * Enum value in_progress. + */ + IN_PROGRESS("in_progress"); + + /** + * The actual serialized value for a RealtimeConversationItemMessageSystemStatus instance. + */ + private final String value; + + RealtimeConversationItemMessageSystemStatus(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeConversationItemMessageSystemStatus instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeConversationItemMessageSystemStatus object, or null if unable to parse. + */ + public static RealtimeConversationItemMessageSystemStatus fromString(String value) { + if (value == null) { + return null; + } + RealtimeConversationItemMessageSystemStatus[] items = RealtimeConversationItemMessageSystemStatus.values(); + for (RealtimeConversationItemMessageSystemStatus item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageType.java new file mode 100644 index 0000000000000..9e63f0986d68d --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageType.java @@ -0,0 +1,64 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Defines values for RealtimeConversationItemMessageType. + */ +public final class RealtimeConversationItemMessageType + extends ExpandableStringEnum { + + /** + * Static value system for RealtimeConversationItemMessageType. + */ + @Generated + public static final RealtimeConversationItemMessageType SYSTEM = fromString("system"); + + /** + * Static value user for RealtimeConversationItemMessageType. + */ + @Generated + public static final RealtimeConversationItemMessageType USER = fromString("user"); + + /** + * Static value assistant for RealtimeConversationItemMessageType. + */ + @Generated + public static final RealtimeConversationItemMessageType ASSISTANT = fromString("assistant"); + + /** + * Creates a new instance of RealtimeConversationItemMessageType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public RealtimeConversationItemMessageType() { + } + + /** + * Creates or finds a RealtimeConversationItemMessageType from its string representation. + * + * @param name a name to look for. + * @return the corresponding RealtimeConversationItemMessageType. + */ + @Generated + public static RealtimeConversationItemMessageType fromString(String name) { + return fromString(name, RealtimeConversationItemMessageType.class); + } + + /** + * Gets known RealtimeConversationItemMessageType values. + * + * @return known RealtimeConversationItemMessageType values. + */ + @Generated + public static Collection values() { + return values(RealtimeConversationItemMessageType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUser.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUser.java new file mode 100644 index 0000000000000..7e81eb024b564 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUser.java @@ -0,0 +1,267 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Realtime user message item + * + * A user message item in a Realtime conversation. + */ +@Fluent +public final class RealtimeConversationItemMessageUser extends RealtimeConversationItemMessage { + + /* + * The type property. + */ + @Generated + private final RealtimeConversationItemType type = RealtimeConversationItemType.MESSAGE; + + /* + * The role property. + */ + @Generated + private RealtimeConversationItemMessageType role = RealtimeConversationItemMessageType.USER; + + /* + * The unique ID of the item. This may be provided by the client or generated by the server. + */ + @Generated + private String id; + + /* + * Identifier for the API object being returned - always `realtime.item`. Optional when creating a new item. + */ + @Generated + private RealtimeConversationItemObject object; + + /* + * The status of the item. Has no effect on the conversation. + */ + @Generated + private RealtimeConversationItemMessageUserStatus status; + + /* + * The content of the message. + */ + @Generated + private final List content; + + /* + * The Unix timestamp (in seconds) for when the item was persisted. + */ + @Generated + private Long createdAt; + + /* + * The id of the response that produced this item, when applicable. + */ + @Generated + private String responseId; + + /** + * Creates an instance of RealtimeConversationItemMessageUser class. + * + * @param content the content value to set. + */ + @Generated + public RealtimeConversationItemMessageUser(List content) { + this.content = content; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeConversationItemType getType() { + return this.type; + } + + /** + * Get the role property: The role property. + * + * @return the role value. + */ + @Generated + @Override + public RealtimeConversationItemMessageType getRole() { + return this.role; + } + + /** + * Get the id property: The unique ID of the item. This may be provided by the client or generated by the server. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Set the id property: The unique ID of the item. This may be provided by the client or generated by the server. + * + * @param id the id value to set. + * @return the RealtimeConversationItemMessageUser object itself. + */ + @Generated + public RealtimeConversationItemMessageUser setId(String id) { + this.id = id; + return this; + } + + /** + * Get the object property: Identifier for the API object being returned - always `realtime.item`. Optional when + * creating a new item. + * + * @return the object value. + */ + @Generated + public RealtimeConversationItemObject getObject() { + return this.object; + } + + /** + * Set the object property: Identifier for the API object being returned - always `realtime.item`. Optional when + * creating a new item. + * + * @param object the object value to set. + * @return the RealtimeConversationItemMessageUser object itself. + */ + @Generated + public RealtimeConversationItemMessageUser setObject(RealtimeConversationItemObject object) { + this.object = object; + return this; + } + + /** + * Get the status property: The status of the item. Has no effect on the conversation. + * + * @return the status value. + */ + @Generated + public RealtimeConversationItemMessageUserStatus getStatus() { + return this.status; + } + + /** + * Set the status property: The status of the item. Has no effect on the conversation. + * + * @param status the status value to set. + * @return the RealtimeConversationItemMessageUser object itself. + */ + @Generated + public RealtimeConversationItemMessageUser setStatus(RealtimeConversationItemMessageUserStatus status) { + this.status = status; + return this; + } + + /** + * Get the content property: The content of the message. + * + * @return the content value. + */ + @Generated + public List getContent() { + return this.content; + } + + /** + * Get the createdAt property: The Unix timestamp (in seconds) for when the item was persisted. + * + * @return the createdAt value. + */ + @Generated + public Long getCreatedAt() { + return this.createdAt; + } + + /** + * Get the responseId property: The id of the response that produced this item, when applicable. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeArrayField("content", this.content, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeStringField("role", this.role == null ? null : this.role.toString()); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("object", this.object == null ? null : this.object.toString()); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeConversationItemMessageUser from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeConversationItemMessageUser if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeConversationItemMessageUser. + */ + @Generated + public static RealtimeConversationItemMessageUser fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + List content = null; + RealtimeConversationItemMessageType role = RealtimeConversationItemMessageType.USER; + String id = null; + RealtimeConversationItemObject object = null; + RealtimeConversationItemMessageUserStatus status = null; + Long createdAt = null; + String responseId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("content".equals(fieldName)) { + content = reader.readArray(reader1 -> RealtimeConversationItemMessageUserContent.fromJson(reader1)); + } else if ("role".equals(fieldName)) { + role = RealtimeConversationItemMessageType.fromString(reader.getString()); + } else if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("object".equals(fieldName)) { + object = RealtimeConversationItemObject.fromString(reader.getString()); + } else if ("status".equals(fieldName)) { + status = RealtimeConversationItemMessageUserStatus.fromString(reader.getString()); + } else if ("created_at".equals(fieldName)) { + createdAt = reader.getNullable(JsonReader::getLong); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeConversationItemMessageUser deserializedRealtimeConversationItemMessageUser + = new RealtimeConversationItemMessageUser(content); + deserializedRealtimeConversationItemMessageUser.role = role; + deserializedRealtimeConversationItemMessageUser.id = id; + deserializedRealtimeConversationItemMessageUser.object = object; + deserializedRealtimeConversationItemMessageUser.status = status; + deserializedRealtimeConversationItemMessageUser.createdAt = createdAt; + deserializedRealtimeConversationItemMessageUser.responseId = responseId; + return deserializedRealtimeConversationItemMessageUser; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContent.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContent.java new file mode 100644 index 0000000000000..b0b225a5c7309 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContent.java @@ -0,0 +1,250 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeConversationItemMessageUserContent model. + */ +@Fluent +public final class RealtimeConversationItemMessageUserContent + implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private RealtimeConversationItemMessageUserContentType type; + + /* + * The text property. + */ + @Generated + private String text; + + /* + * The audio property. + */ + @Generated + private String audio; + + /* + * The image_url property. + */ + @Generated + private String imageUrl; + + /* + * The detail property. + */ + @Generated + private RealtimeConversationItemMessageUserContentDetail detail; + + /* + * The transcript property. + */ + @Generated + private String transcript; + + /** + * Creates an instance of RealtimeConversationItemMessageUserContent class. + */ + @Generated + public RealtimeConversationItemMessageUserContent() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public RealtimeConversationItemMessageUserContentType getType() { + return this.type; + } + + /** + * Set the type property: The type property. + * + * @param type the type value to set. + * @return the RealtimeConversationItemMessageUserContent object itself. + */ + @Generated + public RealtimeConversationItemMessageUserContent setType(RealtimeConversationItemMessageUserContentType type) { + this.type = type; + return this; + } + + /** + * Get the text property: The text property. + * + * @return the text value. + */ + @Generated + public String getText() { + return this.text; + } + + /** + * Set the text property: The text property. + * + * @param text the text value to set. + * @return the RealtimeConversationItemMessageUserContent object itself. + */ + @Generated + public RealtimeConversationItemMessageUserContent setText(String text) { + this.text = text; + return this; + } + + /** + * Get the audio property: The audio property. + * + * @return the audio value. + */ + @Generated + public String getAudio() { + return this.audio; + } + + /** + * Set the audio property: The audio property. + * + * @param audio the audio value to set. + * @return the RealtimeConversationItemMessageUserContent object itself. + */ + @Generated + public RealtimeConversationItemMessageUserContent setAudio(String audio) { + this.audio = audio; + return this; + } + + /** + * Get the imageUrl property: The image_url property. + * + * @return the imageUrl value. + */ + @Generated + public String getImageUrl() { + return this.imageUrl; + } + + /** + * Set the imageUrl property: The image_url property. + * + * @param imageUrl the imageUrl value to set. + * @return the RealtimeConversationItemMessageUserContent object itself. + */ + @Generated + public RealtimeConversationItemMessageUserContent setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + return this; + } + + /** + * Get the detail property: The detail property. + * + * @return the detail value. + */ + @Generated + public RealtimeConversationItemMessageUserContentDetail getDetail() { + return this.detail; + } + + /** + * Set the detail property: The detail property. + * + * @param detail the detail value to set. + * @return the RealtimeConversationItemMessageUserContent object itself. + */ + @Generated + public RealtimeConversationItemMessageUserContent + setDetail(RealtimeConversationItemMessageUserContentDetail detail) { + this.detail = detail; + return this; + } + + /** + * Get the transcript property: The transcript property. + * + * @return the transcript value. + */ + @Generated + public String getTranscript() { + return this.transcript; + } + + /** + * Set the transcript property: The transcript property. + * + * @param transcript the transcript value to set. + * @return the RealtimeConversationItemMessageUserContent object itself. + */ + @Generated + public RealtimeConversationItemMessageUserContent setTranscript(String transcript) { + this.transcript = transcript; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("text", this.text); + jsonWriter.writeStringField("audio", this.audio); + jsonWriter.writeStringField("image_url", this.imageUrl); + jsonWriter.writeStringField("detail", this.detail == null ? null : this.detail.toString()); + jsonWriter.writeStringField("transcript", this.transcript); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeConversationItemMessageUserContent from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeConversationItemMessageUserContent if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeConversationItemMessageUserContent. + */ + @Generated + public static RealtimeConversationItemMessageUserContent fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeConversationItemMessageUserContent deserializedRealtimeConversationItemMessageUserContent + = new RealtimeConversationItemMessageUserContent(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeConversationItemMessageUserContent.type + = RealtimeConversationItemMessageUserContentType.fromString(reader.getString()); + } else if ("text".equals(fieldName)) { + deserializedRealtimeConversationItemMessageUserContent.text = reader.getString(); + } else if ("audio".equals(fieldName)) { + deserializedRealtimeConversationItemMessageUserContent.audio = reader.getString(); + } else if ("image_url".equals(fieldName)) { + deserializedRealtimeConversationItemMessageUserContent.imageUrl = reader.getString(); + } else if ("detail".equals(fieldName)) { + deserializedRealtimeConversationItemMessageUserContent.detail + = RealtimeConversationItemMessageUserContentDetail.fromString(reader.getString()); + } else if ("transcript".equals(fieldName)) { + deserializedRealtimeConversationItemMessageUserContent.transcript = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeConversationItemMessageUserContent; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContentDetail.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContentDetail.java new file mode 100644 index 0000000000000..606c0f1313997 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContentDetail.java @@ -0,0 +1,62 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeConversationItemMessageUserContentDetail. + */ +public enum RealtimeConversationItemMessageUserContentDetail { + /** + * Enum value auto. + */ + AUTO("auto"), + + /** + * Enum value low. + */ + LOW("low"), + + /** + * Enum value high. + */ + HIGH("high"); + + /** + * The actual serialized value for a RealtimeConversationItemMessageUserContentDetail instance. + */ + private final String value; + + RealtimeConversationItemMessageUserContentDetail(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeConversationItemMessageUserContentDetail instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeConversationItemMessageUserContentDetail object, or null if unable to parse. + */ + public static RealtimeConversationItemMessageUserContentDetail fromString(String value) { + if (value == null) { + return null; + } + RealtimeConversationItemMessageUserContentDetail[] items + = RealtimeConversationItemMessageUserContentDetail.values(); + for (RealtimeConversationItemMessageUserContentDetail item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContentType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContentType.java new file mode 100644 index 0000000000000..2d9f9a658c564 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContentType.java @@ -0,0 +1,62 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeConversationItemMessageUserContentType. + */ +public enum RealtimeConversationItemMessageUserContentType { + /** + * Enum value input_text. + */ + INPUT_TEXT("input_text"), + + /** + * Enum value input_audio. + */ + INPUT_AUDIO("input_audio"), + + /** + * Enum value input_image. + */ + INPUT_IMAGE("input_image"); + + /** + * The actual serialized value for a RealtimeConversationItemMessageUserContentType instance. + */ + private final String value; + + RealtimeConversationItemMessageUserContentType(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeConversationItemMessageUserContentType instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeConversationItemMessageUserContentType object, or null if unable to parse. + */ + public static RealtimeConversationItemMessageUserContentType fromString(String value) { + if (value == null) { + return null; + } + RealtimeConversationItemMessageUserContentType[] items + = RealtimeConversationItemMessageUserContentType.values(); + for (RealtimeConversationItemMessageUserContentType item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserStatus.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserStatus.java new file mode 100644 index 0000000000000..5254358fbae81 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserStatus.java @@ -0,0 +1,61 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeConversationItemMessageUserStatus. + */ +public enum RealtimeConversationItemMessageUserStatus { + /** + * Enum value completed. + */ + COMPLETED("completed"), + + /** + * Enum value incomplete. + */ + INCOMPLETE("incomplete"), + + /** + * Enum value in_progress. + */ + IN_PROGRESS("in_progress"); + + /** + * The actual serialized value for a RealtimeConversationItemMessageUserStatus instance. + */ + private final String value; + + RealtimeConversationItemMessageUserStatus(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeConversationItemMessageUserStatus instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeConversationItemMessageUserStatus object, or null if unable to parse. + */ + public static RealtimeConversationItemMessageUserStatus fromString(String value) { + if (value == null) { + return null; + } + RealtimeConversationItemMessageUserStatus[] items = RealtimeConversationItemMessageUserStatus.values(); + for (RealtimeConversationItemMessageUserStatus item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeFunctionTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeFunctionTool.java new file mode 100644 index 0000000000000..4b718b7970ed9 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeFunctionTool.java @@ -0,0 +1,194 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Function tool. + */ +@Fluent +public final class RealtimeFunctionTool implements JsonSerializable { + + /* + * The type of the tool, i.e. `function`. + */ + @Generated + private VoiceAgentFunctionToolType type; + + /* + * The name of the function. + */ + @Generated + private String name; + + /* + * The description of the function, including guidance on when and how + * to call it, and guidance about what to tell the user when calling + * (if anything). + */ + @Generated + private String description; + + /* + * Parameters of the function in JSON Schema. + */ + @Generated + private BinaryData parameters; + + /** + * Creates an instance of RealtimeFunctionTool class. + */ + @Generated + public RealtimeFunctionTool() { + } + + /** + * Get the type property: The type of the tool, i.e. `function`. + * + * @return the type value. + */ + @Generated + public VoiceAgentFunctionToolType getType() { + return this.type; + } + + /** + * Set the type property: The type of the tool, i.e. `function`. + * + * @param type the type value to set. + * @return the RealtimeFunctionTool object itself. + */ + @Generated + public RealtimeFunctionTool setType(VoiceAgentFunctionToolType type) { + this.type = type; + return this; + } + + /** + * Get the name property: The name of the function. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * Set the name property: The name of the function. + * + * @param name the name value to set. + * @return the RealtimeFunctionTool object itself. + */ + @Generated + public RealtimeFunctionTool setName(String name) { + this.name = name; + return this; + } + + /** + * Get the description property: The description of the function, including guidance on when and how + * to call it, and guidance about what to tell the user when calling + * (if anything). + * + * @return the description value. + */ + @Generated + public String getDescription() { + return this.description; + } + + /** + * Set the description property: The description of the function, including guidance on when and how + * to call it, and guidance about what to tell the user when calling + * (if anything). + * + * @param description the description value to set. + * @return the RealtimeFunctionTool object itself. + */ + @Generated + public RealtimeFunctionTool setDescription(String description) { + this.description = description; + return this; + } + + /** + * Get the parameters property: Parameters of the function in JSON Schema. + * + * @return the parameters value. + */ + @Generated + public BinaryData getParameters() { + return this.parameters; + } + + /** + * Set the parameters property: Parameters of the function in JSON Schema. + * + * @param parameters the parameters value to set. + * @return the RealtimeFunctionTool object itself. + */ + @Generated + public RealtimeFunctionTool setParameters(BinaryData parameters) { + this.parameters = parameters; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeStringField("description", this.description); + if (this.parameters != null) { + jsonWriter.writeFieldName("parameters"); + this.parameters.writeTo(jsonWriter); + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeFunctionTool from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeFunctionTool if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeFunctionTool. + */ + @Generated + public static RealtimeFunctionTool fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeFunctionTool deserializedRealtimeFunctionTool = new RealtimeFunctionTool(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeFunctionTool.type = VoiceAgentFunctionToolType.fromString(reader.getString()); + } else if ("name".equals(fieldName)) { + deserializedRealtimeFunctionTool.name = reader.getString(); + } else if ("description".equals(fieldName)) { + deserializedRealtimeFunctionTool.description = reader.getString(); + } else if ("parameters".equals(fieldName)) { + deserializedRealtimeFunctionTool.parameters + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeFunctionTool; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeReasoning.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeReasoning.java new file mode 100644 index 0000000000000..6e8632f78c0fe --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeReasoning.java @@ -0,0 +1,92 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Realtime reasoning configuration + * + * Configuration for reasoning-capable Realtime models such as `gpt-realtime-2`. + */ +@Fluent +public final class RealtimeReasoning implements JsonSerializable { + + /* + * The effort property. + */ + @Generated + private RealtimeReasoningEffort effort; + + /** + * Creates an instance of RealtimeReasoning class. + */ + @Generated + public RealtimeReasoning() { + } + + /** + * Get the effort property: The effort property. + * + * @return the effort value. + */ + @Generated + public RealtimeReasoningEffort getEffort() { + return this.effort; + } + + /** + * Set the effort property: The effort property. + * + * @param effort the effort value to set. + * @return the RealtimeReasoning object itself. + */ + @Generated + public RealtimeReasoning setEffort(RealtimeReasoningEffort effort) { + this.effort = effort; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("effort", this.effort == null ? null : this.effort.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeReasoning from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeReasoning if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeReasoning. + */ + @Generated + public static RealtimeReasoning fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeReasoning deserializedRealtimeReasoning = new RealtimeReasoning(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("effort".equals(fieldName)) { + deserializedRealtimeReasoning.effort = RealtimeReasoningEffort.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeReasoning; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeReasoningEffort.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeReasoningEffort.java new file mode 100644 index 0000000000000..707d7ac7d08a8 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeReasoningEffort.java @@ -0,0 +1,72 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Constrains effort on reasoning for reasoning-capable Realtime models such as + * `gpt-realtime-2`. + */ +public enum RealtimeReasoningEffort { + /** + * Enum value minimal. + */ + MINIMAL("minimal"), + + /** + * Enum value low. + */ + LOW("low"), + + /** + * Enum value medium. + */ + MEDIUM("medium"), + + /** + * Enum value high. + */ + HIGH("high"), + + /** + * Enum value xhigh. + */ + XHIGH("xhigh"); + + /** + * The actual serialized value for a RealtimeReasoningEffort instance. + */ + private final String value; + + RealtimeReasoningEffort(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeReasoningEffort instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeReasoningEffort object, or null if unable to parse. + */ + public static RealtimeReasoningEffort fromString(String value) { + if (value == null) { + return null; + } + RealtimeReasoningEffort[] items = RealtimeReasoningEffort.values(); + for (RealtimeReasoningEffort item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEvent.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEvent.java new file mode 100644 index 0000000000000..85a978ccef2d5 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEvent.java @@ -0,0 +1,231 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A realtime server event. + */ +@Immutable +public class RealtimeServerEvent implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.fromString("RealtimeServerEvent"); + + /** + * Creates an instance of RealtimeServerEvent class. + */ + @Generated + protected RealtimeServerEvent() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEvent from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEvent if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeServerEvent. + */ + @Generated + public static RealtimeServerEvent fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("conversation.created".equals(discriminatorValue)) { + return RealtimeServerEventConversationCreated.fromJson(readerToUse.reset()); + } else if ("conversation.item.created".equals(discriminatorValue)) { + return RealtimeServerEventConversationItemCreated.fromJson(readerToUse.reset()); + } else if ("conversation.item.deleted".equals(discriminatorValue)) { + return RealtimeServerEventConversationItemDeleted.fromJson(readerToUse.reset()); + } else if ("conversation.item.input_audio_transcription.completed".equals(discriminatorValue)) { + return RealtimeServerEventConversationItemInputAudioTranscriptionCompleted + .fromJson(readerToUse.reset()); + } else if ("conversation.item.input_audio_transcription.delta".equals(discriminatorValue)) { + return RealtimeServerEventConversationItemInputAudioTranscriptionDelta + .fromJson(readerToUse.reset()); + } else if ("conversation.item.input_audio_transcription.failed".equals(discriminatorValue)) { + return RealtimeServerEventConversationItemInputAudioTranscriptionFailed + .fromJson(readerToUse.reset()); + } else if ("conversation.item.retrieved".equals(discriminatorValue)) { + return RealtimeServerEventConversationItemRetrieved.fromJson(readerToUse.reset()); + } else if ("conversation.item.truncated".equals(discriminatorValue)) { + return RealtimeServerEventConversationItemTruncated.fromJson(readerToUse.reset()); + } else if ("input_audio_buffer.cleared".equals(discriminatorValue)) { + return RealtimeServerEventInputAudioBufferCleared.fromJson(readerToUse.reset()); + } else if ("input_audio_buffer.committed".equals(discriminatorValue)) { + return RealtimeServerEventInputAudioBufferCommitted.fromJson(readerToUse.reset()); + } else if ("input_audio_buffer.dtmf_event_received".equals(discriminatorValue)) { + return RealtimeServerEventInputAudioBufferDtmfEventReceived.fromJson(readerToUse.reset()); + } else if ("input_audio_buffer.speech_started".equals(discriminatorValue)) { + return RealtimeServerEventInputAudioBufferSpeechStarted.fromJson(readerToUse.reset()); + } else if ("input_audio_buffer.speech_stopped".equals(discriminatorValue)) { + return RealtimeServerEventInputAudioBufferSpeechStopped.fromJson(readerToUse.reset()); + } else if ("rate_limits.updated".equals(discriminatorValue)) { + return RealtimeServerEventRateLimitsUpdated.fromJson(readerToUse.reset()); + } else if ("response.output_audio.delta".equals(discriminatorValue)) { + return RealtimeServerEventResponseAudioDelta.fromJson(readerToUse.reset()); + } else if ("response.output_audio.done".equals(discriminatorValue)) { + return RealtimeServerEventResponseAudioDone.fromJson(readerToUse.reset()); + } else if ("response.output_audio_transcript.delta".equals(discriminatorValue)) { + return RealtimeServerEventResponseAudioTranscriptDelta.fromJson(readerToUse.reset()); + } else if ("response.output_audio_transcript.done".equals(discriminatorValue)) { + return RealtimeServerEventResponseAudioTranscriptDone.fromJson(readerToUse.reset()); + } else if ("response.content_part.added".equals(discriminatorValue)) { + return RealtimeServerEventResponseContentPartAdded.fromJson(readerToUse.reset()); + } else if ("response.content_part.done".equals(discriminatorValue)) { + return RealtimeServerEventResponseContentPartDone.fromJson(readerToUse.reset()); + } else if ("response.created".equals(discriminatorValue)) { + return RealtimeServerEventResponseCreated.fromJson(readerToUse.reset()); + } else if ("response.done".equals(discriminatorValue)) { + return RealtimeServerEventResponseDone.fromJson(readerToUse.reset()); + } else if ("response.function_call_arguments.delta".equals(discriminatorValue)) { + return RealtimeServerEventResponseFunctionCallArgumentsDelta.fromJson(readerToUse.reset()); + } else if ("response.function_call_arguments.done".equals(discriminatorValue)) { + return RealtimeServerEventResponseFunctionCallArgumentsDone.fromJson(readerToUse.reset()); + } else if ("response.output_item.added".equals(discriminatorValue)) { + return RealtimeServerEventResponseOutputItemAdded.fromJson(readerToUse.reset()); + } else if ("response.output_item.done".equals(discriminatorValue)) { + return RealtimeServerEventResponseOutputItemDone.fromJson(readerToUse.reset()); + } else if ("response.output_text.delta".equals(discriminatorValue)) { + return RealtimeServerEventResponseTextDelta.fromJson(readerToUse.reset()); + } else if ("response.output_text.done".equals(discriminatorValue)) { + return RealtimeServerEventResponseTextDone.fromJson(readerToUse.reset()); + } else if ("session.created".equals(discriminatorValue)) { + return RealtimeServerEventSessionCreated.fromJson(readerToUse.reset()); + } else if ("session.updated".equals(discriminatorValue)) { + return RealtimeServerEventSessionUpdated.fromJson(readerToUse.reset()); + } else if ("output_audio_buffer.started".equals(discriminatorValue)) { + return RealtimeServerEventOutputAudioBufferStarted.fromJson(readerToUse.reset()); + } else if ("output_audio_buffer.stopped".equals(discriminatorValue)) { + return RealtimeServerEventOutputAudioBufferStopped.fromJson(readerToUse.reset()); + } else if ("output_audio_buffer.cleared".equals(discriminatorValue)) { + return RealtimeServerEventOutputAudioBufferCleared.fromJson(readerToUse.reset()); + } else if ("conversation.item.added".equals(discriminatorValue)) { + return RealtimeServerEventConversationItemAdded.fromJson(readerToUse.reset()); + } else if ("conversation.item.done".equals(discriminatorValue)) { + return RealtimeServerEventConversationItemDone.fromJson(readerToUse.reset()); + } else if ("input_audio_buffer.timeout_triggered".equals(discriminatorValue)) { + return RealtimeServerEventInputAudioBufferTimeoutTriggered.fromJson(readerToUse.reset()); + } else if ("conversation.item.input_audio_transcription.segment".equals(discriminatorValue)) { + return RealtimeServerEventConversationItemInputAudioTranscriptionSegment + .fromJson(readerToUse.reset()); + } else if ("mcp_list_tools.in_progress".equals(discriminatorValue)) { + return RealtimeServerEventMCPListToolsInProgress.fromJson(readerToUse.reset()); + } else if ("mcp_list_tools.completed".equals(discriminatorValue)) { + return RealtimeServerEventMCPListToolsCompleted.fromJson(readerToUse.reset()); + } else if ("mcp_list_tools.failed".equals(discriminatorValue)) { + return RealtimeServerEventMCPListToolsFailed.fromJson(readerToUse.reset()); + } else if ("response.mcp_call_arguments.delta".equals(discriminatorValue)) { + return RealtimeServerEventResponseMCPCallArgumentsDelta.fromJson(readerToUse.reset()); + } else if ("response.mcp_call_arguments.done".equals(discriminatorValue)) { + return RealtimeServerEventResponseMCPCallArgumentsDone.fromJson(readerToUse.reset()); + } else if ("response.mcp_call.in_progress".equals(discriminatorValue)) { + return RealtimeServerEventResponseMCPCallInProgress.fromJson(readerToUse.reset()); + } else if ("response.mcp_call.completed".equals(discriminatorValue)) { + return RealtimeServerEventResponseMCPCallCompleted.fromJson(readerToUse.reset()); + } else if ("response.mcp_call.failed".equals(discriminatorValue)) { + return RealtimeServerEventResponseMCPCallFailed.fromJson(readerToUse.reset()); + } else if ("error".equals(discriminatorValue)) { + return RealtimeServerEventRealtimeServerEventError.fromJson(readerToUse.reset()); + } else if ("session.subagent.started".equals(discriminatorValue)) { + return VoiceAgentServerEventSessionSubagentStarted.fromJson(readerToUse.reset()); + } else if ("session.subagent.aborted".equals(discriminatorValue)) { + return VoiceAgentServerEventSessionSubagentAborted.fromJson(readerToUse.reset()); + } else if ("warning".equals(discriminatorValue)) { + return VoiceAgentServerEventWarning.fromJson(readerToUse.reset()); + } else if ("session.avatar.connecting".equals(discriminatorValue)) { + return VoiceAgentServerEventSessionAvatarConnecting.fromJson(readerToUse.reset()); + } else if ("rtc.call.sdp.created".equals(discriminatorValue)) { + return VoiceAgentServerEventRtcCallSdpCreated.fromJson(readerToUse.reset()); + } else if ("rtc.call.error".equals(discriminatorValue)) { + return VoiceAgentServerEventRtcCallError.fromJson(readerToUse.reset()); + } else if ("session.avatar.switch_to_speaking".equals(discriminatorValue)) { + return VoiceAgentServerEventSessionAvatarSwitchToSpeaking.fromJson(readerToUse.reset()); + } else if ("session.avatar.switch_to_idle".equals(discriminatorValue)) { + return VoiceAgentServerEventSessionAvatarSwitchToIdle.fromJson(readerToUse.reset()); + } else if ("response.audio_timestamp.delta".equals(discriminatorValue)) { + return VoiceAgentServerEventResponseAudioTimestampDelta.fromJson(readerToUse.reset()); + } else if ("response.audio_timestamp.done".equals(discriminatorValue)) { + return VoiceAgentServerEventResponseAudioTimestampDone.fromJson(readerToUse.reset()); + } else if ("response.animation_blendshapes.delta".equals(discriminatorValue)) { + return VoiceAgentServerEventResponseAnimationBlendshapesDelta.fromJson(readerToUse.reset()); + } else if ("response.animation_blendshapes.done".equals(discriminatorValue)) { + return VoiceAgentServerEventResponseAnimationBlendshapesDone.fromJson(readerToUse.reset()); + } else if ("response.animation_viseme.delta".equals(discriminatorValue)) { + return VoiceAgentServerEventResponseAnimationVisemeDelta.fromJson(readerToUse.reset()); + } else if ("response.animation_viseme.done".equals(discriminatorValue)) { + return VoiceAgentServerEventResponseAnimationVisemeDone.fromJson(readerToUse.reset()); + } else if ("response.video.delta".equals(discriminatorValue)) { + return VoiceAgentServerEventResponseVideoDelta.fromJson(readerToUse.reset()); + } else if ("session.subagent.completed".equals(discriminatorValue)) { + return VoiceAgentServerEventSessionSubagentCompleted.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static RealtimeServerEvent fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeServerEvent deserializedRealtimeServerEvent = new RealtimeServerEvent(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeServerEvent.type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeServerEvent; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreated.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreated.java new file mode 100644 index 0000000000000..de7e10760453e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreated.java @@ -0,0 +1,128 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when a conversation is created. Emitted right after session creation. + */ +@Immutable +public final class RealtimeServerEventConversationCreated extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_CREATED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The conversation resource. + */ + @Generated + private final RealtimeServerEventConversationCreatedConversation conversation; + + /** + * Creates an instance of RealtimeServerEventConversationCreated class. + * + * @param eventId the eventId value to set. + * @param conversation the conversation value to set. + */ + @Generated + private RealtimeServerEventConversationCreated(String eventId, + RealtimeServerEventConversationCreatedConversation conversation) { + this.eventId = eventId; + this.conversation = conversation; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the conversation property: The conversation resource. + * + * @return the conversation value. + */ + @Generated + public RealtimeServerEventConversationCreatedConversation getConversation() { + return this.conversation; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeJsonField("conversation", this.conversation); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventConversationCreated from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventConversationCreated if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventConversationCreated. + */ + @Generated + public static RealtimeServerEventConversationCreated fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + RealtimeServerEventConversationCreatedConversation conversation = null; + RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_CREATED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("conversation".equals(fieldName)) { + conversation = RealtimeServerEventConversationCreatedConversation.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventConversationCreated deserializedRealtimeServerEventConversationCreated + = new RealtimeServerEventConversationCreated(eventId, conversation); + deserializedRealtimeServerEventConversationCreated.type = type; + return deserializedRealtimeServerEventConversationCreated; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreatedConversation.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreatedConversation.java new file mode 100644 index 0000000000000..5b91a892af1ca --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreatedConversation.java @@ -0,0 +1,101 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeServerEventConversationCreatedConversation model. + */ +@Immutable +public final class RealtimeServerEventConversationCreatedConversation + implements JsonSerializable { + + /* + * The id property. + */ + @Generated + private String id; + + /* + * The object property. + */ + @Generated + private RealtimeServerEventConversationCreatedConversationObject object; + + /** + * Creates an instance of RealtimeServerEventConversationCreatedConversation class. + */ + @Generated + private RealtimeServerEventConversationCreatedConversation() { + } + + /** + * Get the id property: The id property. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the object property: The object property. + * + * @return the object value. + */ + @Generated + public RealtimeServerEventConversationCreatedConversationObject getObject() { + return this.object; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("object", this.object == null ? null : this.object.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventConversationCreatedConversation from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventConversationCreatedConversation if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeServerEventConversationCreatedConversation. + */ + @Generated + public static RealtimeServerEventConversationCreatedConversation fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + RealtimeServerEventConversationCreatedConversation deserializedRealtimeServerEventConversationCreatedConversation + = new RealtimeServerEventConversationCreatedConversation(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + deserializedRealtimeServerEventConversationCreatedConversation.id = reader.getString(); + } else if ("object".equals(fieldName)) { + deserializedRealtimeServerEventConversationCreatedConversation.object + = RealtimeServerEventConversationCreatedConversationObject.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeServerEventConversationCreatedConversation; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreatedConversationObject.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreatedConversationObject.java new file mode 100644 index 0000000000000..beba9bbbeaf5c --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreatedConversationObject.java @@ -0,0 +1,52 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeServerEventConversationCreatedConversationObject. + */ +public enum RealtimeServerEventConversationCreatedConversationObject { + /** + * Enum value realtime.conversation. + */ + REALTIME_CONVERSATION("realtime.conversation"); + + /** + * The actual serialized value for a RealtimeServerEventConversationCreatedConversationObject instance. + */ + private final String value; + + RealtimeServerEventConversationCreatedConversationObject(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeServerEventConversationCreatedConversationObject instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeServerEventConversationCreatedConversationObject object, or null if unable to parse. + */ + public static RealtimeServerEventConversationCreatedConversationObject fromString(String value) { + if (value == null) { + return null; + } + RealtimeServerEventConversationCreatedConversationObject[] items + = RealtimeServerEventConversationCreatedConversationObject.values(); + for (RealtimeServerEventConversationCreatedConversationObject item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemAdded.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemAdded.java new file mode 100644 index 0000000000000..af63e62711756 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemAdded.java @@ -0,0 +1,156 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Sent by the server when an Item is added to the default Conversation. This can happen in several cases: + * - When the client sends a `conversation.item.create` event. + * - When the input audio buffer is committed. In this case the item will be a user message containing the audio from + * the buffer. + * - When the model is generating a Response. In this case the `conversation.item.added` event will be sent when the + * model starts generating a specific Item, and thus it will not yet have any content (and `status` will be + * `in_progress`). + * The event will include the full content of the Item (except when model is generating a Response) except for audio + * data, which can be retrieved separately with a `conversation.item.retrieve` event if necessary. + */ +@Immutable +public final class RealtimeServerEventConversationItemAdded extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_ADDED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The previous_item_id property. + */ + @Generated + private String previousItemId; + + /* + * The item property. + */ + @Generated + private final RealtimeConversationItem item; + + /** + * Creates an instance of RealtimeServerEventConversationItemAdded class. + * + * @param eventId the eventId value to set. + * @param item the item value to set. + */ + @Generated + private RealtimeServerEventConversationItemAdded(String eventId, RealtimeConversationItem item) { + this.eventId = eventId; + this.item = item; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the previousItemId property: The previous_item_id property. + * + * @return the previousItemId value. + */ + @Generated + public String getPreviousItemId() { + return this.previousItemId; + } + + /** + * Get the item property: The item property. + * + * @return the item value. + */ + @Generated + public RealtimeConversationItem getItem() { + return this.item; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeJsonField("item", this.item); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("previous_item_id", this.previousItemId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventConversationItemAdded from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventConversationItemAdded if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventConversationItemAdded. + */ + @Generated + public static RealtimeServerEventConversationItemAdded fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + RealtimeConversationItem item = null; + RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_ADDED; + String previousItemId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("item".equals(fieldName)) { + item = RealtimeConversationItem.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else if ("previous_item_id".equals(fieldName)) { + previousItemId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventConversationItemAdded deserializedRealtimeServerEventConversationItemAdded + = new RealtimeServerEventConversationItemAdded(eventId, item); + deserializedRealtimeServerEventConversationItemAdded.type = type; + deserializedRealtimeServerEventConversationItemAdded.previousItemId = previousItemId; + return deserializedRealtimeServerEventConversationItemAdded; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemCreated.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemCreated.java new file mode 100644 index 0000000000000..168cbbf22adac --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemCreated.java @@ -0,0 +1,156 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when a conversation item is created. There are several scenarios that produce this event: + * - The server is generating a Response, which if successful will produce + * either one or two Items, which will be of type `message` + * (role `assistant`) or type `function_call`. + * - The input audio buffer has been committed, either by the client or the + * server (in `server_vad` mode). The server will take the content of the + * input audio buffer and add it to a new user message Item. + * - The client has sent a `conversation.item.create` event to add a new Item + * to the Conversation. + */ +@Immutable +public final class RealtimeServerEventConversationItemCreated extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_CREATED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The previous_item_id property. + */ + @Generated + private String previousItemId; + + /* + * The item property. + */ + @Generated + private final RealtimeConversationItem item; + + /** + * Creates an instance of RealtimeServerEventConversationItemCreated class. + * + * @param eventId the eventId value to set. + * @param item the item value to set. + */ + @Generated + private RealtimeServerEventConversationItemCreated(String eventId, RealtimeConversationItem item) { + this.eventId = eventId; + this.item = item; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the previousItemId property: The previous_item_id property. + * + * @return the previousItemId value. + */ + @Generated + public String getPreviousItemId() { + return this.previousItemId; + } + + /** + * Get the item property: The item property. + * + * @return the item value. + */ + @Generated + public RealtimeConversationItem getItem() { + return this.item; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeJsonField("item", this.item); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("previous_item_id", this.previousItemId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventConversationItemCreated from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventConversationItemCreated if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventConversationItemCreated. + */ + @Generated + public static RealtimeServerEventConversationItemCreated fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + RealtimeConversationItem item = null; + RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_CREATED; + String previousItemId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("item".equals(fieldName)) { + item = RealtimeConversationItem.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else if ("previous_item_id".equals(fieldName)) { + previousItemId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventConversationItemCreated deserializedRealtimeServerEventConversationItemCreated + = new RealtimeServerEventConversationItemCreated(eventId, item); + deserializedRealtimeServerEventConversationItemCreated.type = type; + deserializedRealtimeServerEventConversationItemCreated.previousItemId = previousItemId; + return deserializedRealtimeServerEventConversationItemCreated; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemDeleted.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemDeleted.java new file mode 100644 index 0000000000000..226e05722333a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemDeleted.java @@ -0,0 +1,129 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when an item in the conversation is deleted by the client with a + * `conversation.item.delete` event. This event is used to synchronize the + * server's understanding of the conversation history with the client's view. + */ +@Immutable +public final class RealtimeServerEventConversationItemDeleted extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_DELETED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the item that was deleted. + */ + @Generated + private final String itemId; + + /** + * Creates an instance of RealtimeServerEventConversationItemDeleted class. + * + * @param eventId the eventId value to set. + * @param itemId the itemId value to set. + */ + @Generated + private RealtimeServerEventConversationItemDeleted(String eventId, String itemId) { + this.eventId = eventId; + this.itemId = itemId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the itemId property: The ID of the item that was deleted. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventConversationItemDeleted from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventConversationItemDeleted if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventConversationItemDeleted. + */ + @Generated + public static RealtimeServerEventConversationItemDeleted fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String itemId = null; + RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_DELETED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventConversationItemDeleted deserializedRealtimeServerEventConversationItemDeleted + = new RealtimeServerEventConversationItemDeleted(eventId, itemId); + deserializedRealtimeServerEventConversationItemDeleted.type = type; + return deserializedRealtimeServerEventConversationItemDeleted; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemDone.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemDone.java new file mode 100644 index 0000000000000..bc97c862ebd84 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemDone.java @@ -0,0 +1,150 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when a conversation item is finalized. + * The event will include the full content of the Item except for audio data, which can be retrieved separately with a + * `conversation.item.retrieve` event if needed. + */ +@Immutable +public final class RealtimeServerEventConversationItemDone extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_DONE; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The previous_item_id property. + */ + @Generated + private String previousItemId; + + /* + * The item property. + */ + @Generated + private final RealtimeConversationItem item; + + /** + * Creates an instance of RealtimeServerEventConversationItemDone class. + * + * @param eventId the eventId value to set. + * @param item the item value to set. + */ + @Generated + private RealtimeServerEventConversationItemDone(String eventId, RealtimeConversationItem item) { + this.eventId = eventId; + this.item = item; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the previousItemId property: The previous_item_id property. + * + * @return the previousItemId value. + */ + @Generated + public String getPreviousItemId() { + return this.previousItemId; + } + + /** + * Get the item property: The item property. + * + * @return the item value. + */ + @Generated + public RealtimeConversationItem getItem() { + return this.item; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeJsonField("item", this.item); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("previous_item_id", this.previousItemId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventConversationItemDone from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventConversationItemDone if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventConversationItemDone. + */ + @Generated + public static RealtimeServerEventConversationItemDone fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + RealtimeConversationItem item = null; + RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_DONE; + String previousItemId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("item".equals(fieldName)) { + item = RealtimeConversationItem.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else if ("previous_item_id".equals(fieldName)) { + previousItemId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventConversationItemDone deserializedRealtimeServerEventConversationItemDone + = new RealtimeServerEventConversationItemDone(eventId, item); + deserializedRealtimeServerEventConversationItemDone.type = type; + deserializedRealtimeServerEventConversationItemDone.previousItemId = previousItemId; + return deserializedRealtimeServerEventConversationItemDone; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionCompleted.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionCompleted.java new file mode 100644 index 0000000000000..f4eda17bdde5c --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionCompleted.java @@ -0,0 +1,277 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * This event is the output of audio transcription for user audio written to the + * user audio buffer. Transcription begins when the input audio buffer is + * committed by the client or server (when VAD is enabled). Transcription runs + * asynchronously with Response creation, so this event may come before or after + * the Response events. + * Realtime API models accept audio natively, and thus input transcription is a + * separate process run on a separate ASR (Automatic Speech Recognition) model. + * The transcript may diverge somewhat from the model's interpretation, and + * should be treated as a rough guide. + */ +@Immutable +public final class RealtimeServerEventConversationItemInputAudioTranscriptionCompleted extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type + = RealtimeServerEventType.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_COMPLETED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the item containing the audio that is being transcribed. + */ + @Generated + private final String itemId; + + /* + * The index of the content part containing the audio. + */ + @Generated + private final long contentIndex; + + /* + * The transcribed text. + */ + @Generated + private final String transcript; + + /* + * The languages detected in the audio. Returned by `gpt-transcribe`. An empty array indicates that no language + * could be reliably detected. + */ + @Generated + private List languages; + + /* + * The logprobs property. + */ + @Generated + private List logprobs; + + /* + * Usage statistics for the transcription, this is billed according to the ASR model's pricing rather than the + * realtime model's pricing. + */ + @Generated + private final BinaryData usage; + + /* + * Phrase-level transcription timing and confidence details. + */ + @Generated + private List phrases; + + /** + * Creates an instance of RealtimeServerEventConversationItemInputAudioTranscriptionCompleted class. + * + * @param eventId the eventId value to set. + * @param itemId the itemId value to set. + * @param contentIndex the contentIndex value to set. + * @param transcript the transcript value to set. + * @param usage the usage value to set. + */ + @Generated + private RealtimeServerEventConversationItemInputAudioTranscriptionCompleted(String eventId, String itemId, + long contentIndex, String transcript, BinaryData usage) { + this.eventId = eventId; + this.itemId = itemId; + this.contentIndex = contentIndex; + this.transcript = transcript; + this.usage = usage; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the itemId property: The ID of the item containing the audio that is being transcribed. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the contentIndex property: The index of the content part containing the audio. + * + * @return the contentIndex value. + */ + @Generated + public long getContentIndex() { + return this.contentIndex; + } + + /** + * Get the transcript property: The transcribed text. + * + * @return the transcript value. + */ + @Generated + public String getTranscript() { + return this.transcript; + } + + /** + * Get the languages property: The languages detected in the audio. Returned by `gpt-transcribe`. An empty array + * indicates that no language could be reliably detected. + * + * @return the languages value. + */ + @Generated + public List getLanguages() { + return this.languages; + } + + /** + * Get the logprobs property: The logprobs property. + * + * @return the logprobs value. + */ + @Generated + public List getLogprobs() { + return this.logprobs; + } + + /** + * Get the usage property: Usage statistics for the transcription, this is billed according to the ASR model's + * pricing rather than the realtime model's pricing. + * + * @return the usage value. + */ + @Generated + public BinaryData getUsage() { + return this.usage; + } + + /** + * Get the phrases property: Phrase-level transcription timing and confidence details. + * + * @return the phrases value. + */ + @Generated + public List getPhrases() { + return this.phrases; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("content_index", this.contentIndex); + jsonWriter.writeStringField("transcript", this.transcript); + jsonWriter.writeFieldName("usage"); + this.usage.writeTo(jsonWriter); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeArrayField("languages", this.languages, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeArrayField("logprobs", this.logprobs, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeArrayField("phrases", this.phrases, (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventConversationItemInputAudioTranscriptionCompleted from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventConversationItemInputAudioTranscriptionCompleted if the JsonReader was + * pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the + * RealtimeServerEventConversationItemInputAudioTranscriptionCompleted. + */ + @Generated + public static RealtimeServerEventConversationItemInputAudioTranscriptionCompleted fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String itemId = null; + long contentIndex = 0L; + String transcript = null; + BinaryData usage = null; + RealtimeServerEventType type + = RealtimeServerEventType.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_COMPLETED; + List languages = null; + List logprobs = null; + List phrases = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getLong(); + } else if ("transcript".equals(fieldName)) { + transcript = reader.getString(); + } else if ("usage".equals(fieldName)) { + usage = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else if ("languages".equals(fieldName)) { + languages = reader.readArray(reader1 -> TranscriptionLanguage.fromJson(reader1)); + } else if ("logprobs".equals(fieldName)) { + logprobs = reader.readArray(reader1 -> LogProbProperties.fromJson(reader1)); + } else if ("phrases".equals(fieldName)) { + phrases = reader.readArray(reader1 -> VoiceAgentTranscriptionPhrase.fromJson(reader1)); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventConversationItemInputAudioTranscriptionCompleted deserializedRealtimeServerEventConversationItemInputAudioTranscriptionCompleted + = new RealtimeServerEventConversationItemInputAudioTranscriptionCompleted(eventId, itemId, contentIndex, + transcript, usage); + deserializedRealtimeServerEventConversationItemInputAudioTranscriptionCompleted.type = type; + deserializedRealtimeServerEventConversationItemInputAudioTranscriptionCompleted.languages = languages; + deserializedRealtimeServerEventConversationItemInputAudioTranscriptionCompleted.logprobs = logprobs; + deserializedRealtimeServerEventConversationItemInputAudioTranscriptionCompleted.phrases = phrases; + return deserializedRealtimeServerEventConversationItemInputAudioTranscriptionCompleted; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionDelta.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionDelta.java new file mode 100644 index 0000000000000..c4d8885956554 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionDelta.java @@ -0,0 +1,194 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Returned when the text value of an input audio transcription content part is updated with incremental transcription + * results. + */ +@Immutable +public final class RealtimeServerEventConversationItemInputAudioTranscriptionDelta extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_DELTA; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the item containing the audio that is being transcribed. + */ + @Generated + private final String itemId; + + /* + * The index of the content part in the item's content array. + */ + @Generated + private Long contentIndex; + + /* + * The text delta. + */ + @Generated + private String delta; + + /* + * The logprobs property. + */ + @Generated + private List logprobs; + + /** + * Creates an instance of RealtimeServerEventConversationItemInputAudioTranscriptionDelta class. + * + * @param eventId the eventId value to set. + * @param itemId the itemId value to set. + */ + @Generated + private RealtimeServerEventConversationItemInputAudioTranscriptionDelta(String eventId, String itemId) { + this.eventId = eventId; + this.itemId = itemId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the itemId property: The ID of the item containing the audio that is being transcribed. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the contentIndex property: The index of the content part in the item's content array. + * + * @return the contentIndex value. + */ + @Generated + public Long getContentIndex() { + return this.contentIndex; + } + + /** + * Get the delta property: The text delta. + * + * @return the delta value. + */ + @Generated + public String getDelta() { + return this.delta; + } + + /** + * Get the logprobs property: The logprobs property. + * + * @return the logprobs value. + */ + @Generated + public List getLogprobs() { + return this.logprobs; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeNumberField("content_index", this.contentIndex); + jsonWriter.writeStringField("delta", this.delta); + jsonWriter.writeArrayField("logprobs", this.logprobs, (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventConversationItemInputAudioTranscriptionDelta from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventConversationItemInputAudioTranscriptionDelta if the JsonReader was + * pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the + * RealtimeServerEventConversationItemInputAudioTranscriptionDelta. + */ + @Generated + public static RealtimeServerEventConversationItemInputAudioTranscriptionDelta fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String itemId = null; + RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_DELTA; + Long contentIndex = null; + String delta = null; + List logprobs = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getNullable(JsonReader::getLong); + } else if ("delta".equals(fieldName)) { + delta = reader.getString(); + } else if ("logprobs".equals(fieldName)) { + logprobs = reader.readArray(reader1 -> LogProbProperties.fromJson(reader1)); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventConversationItemInputAudioTranscriptionDelta deserializedRealtimeServerEventConversationItemInputAudioTranscriptionDelta + = new RealtimeServerEventConversationItemInputAudioTranscriptionDelta(eventId, itemId); + deserializedRealtimeServerEventConversationItemInputAudioTranscriptionDelta.type = type; + deserializedRealtimeServerEventConversationItemInputAudioTranscriptionDelta.contentIndex = contentIndex; + deserializedRealtimeServerEventConversationItemInputAudioTranscriptionDelta.delta = delta; + deserializedRealtimeServerEventConversationItemInputAudioTranscriptionDelta.logprobs = logprobs; + return deserializedRealtimeServerEventConversationItemInputAudioTranscriptionDelta; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionFailed.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionFailed.java new file mode 100644 index 0000000000000..40e001cd8ba5b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionFailed.java @@ -0,0 +1,177 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when input audio transcription is configured, and a transcription + * request for a user message failed. These events are separate from other + * `error` events so that the client can identify the related Item. + */ +@Immutable +public final class RealtimeServerEventConversationItemInputAudioTranscriptionFailed extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_FAILED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the user message item. + */ + @Generated + private final String itemId; + + /* + * The index of the content part containing the audio. + */ + @Generated + private final long contentIndex; + + /* + * Details of the transcription error. + */ + @Generated + private final RealtimeServerEventConversationItemInputAudioTranscriptionFailedError error; + + /** + * Creates an instance of RealtimeServerEventConversationItemInputAudioTranscriptionFailed class. + * + * @param eventId the eventId value to set. + * @param itemId the itemId value to set. + * @param contentIndex the contentIndex value to set. + * @param error the error value to set. + */ + @Generated + private RealtimeServerEventConversationItemInputAudioTranscriptionFailed(String eventId, String itemId, + long contentIndex, RealtimeServerEventConversationItemInputAudioTranscriptionFailedError error) { + this.eventId = eventId; + this.itemId = itemId; + this.contentIndex = contentIndex; + this.error = error; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the itemId property: The ID of the user message item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the contentIndex property: The index of the content part containing the audio. + * + * @return the contentIndex value. + */ + @Generated + public long getContentIndex() { + return this.contentIndex; + } + + /** + * Get the error property: Details of the transcription error. + * + * @return the error value. + */ + @Generated + public RealtimeServerEventConversationItemInputAudioTranscriptionFailedError getError() { + return this.error; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("content_index", this.contentIndex); + jsonWriter.writeJsonField("error", this.error); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventConversationItemInputAudioTranscriptionFailed from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventConversationItemInputAudioTranscriptionFailed if the JsonReader was + * pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the + * RealtimeServerEventConversationItemInputAudioTranscriptionFailed. + */ + @Generated + public static RealtimeServerEventConversationItemInputAudioTranscriptionFailed fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String itemId = null; + long contentIndex = 0L; + RealtimeServerEventConversationItemInputAudioTranscriptionFailedError error = null; + RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_FAILED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getLong(); + } else if ("error".equals(fieldName)) { + error = RealtimeServerEventConversationItemInputAudioTranscriptionFailedError.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventConversationItemInputAudioTranscriptionFailed deserializedRealtimeServerEventConversationItemInputAudioTranscriptionFailed + = new RealtimeServerEventConversationItemInputAudioTranscriptionFailed(eventId, itemId, contentIndex, + error); + deserializedRealtimeServerEventConversationItemInputAudioTranscriptionFailed.type = type; + return deserializedRealtimeServerEventConversationItemInputAudioTranscriptionFailed; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionFailedError.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionFailedError.java new file mode 100644 index 0000000000000..a2a5c054c6070 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionFailedError.java @@ -0,0 +1,143 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeServerEventConversationItemInputAudioTranscriptionFailedError model. + */ +@Immutable +public final class RealtimeServerEventConversationItemInputAudioTranscriptionFailedError + implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private String type; + + /* + * The code property. + */ + @Generated + private String code; + + /* + * The message property. + */ + @Generated + private String message; + + /* + * The param property. + */ + @Generated + private String param; + + /** + * Creates an instance of RealtimeServerEventConversationItemInputAudioTranscriptionFailedError class. + */ + @Generated + private RealtimeServerEventConversationItemInputAudioTranscriptionFailedError() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * Get the code property: The code property. + * + * @return the code value. + */ + @Generated + public String getCode() { + return this.code; + } + + /** + * Get the message property: The message property. + * + * @return the message value. + */ + @Generated + public String getMessage() { + return this.message; + } + + /** + * Get the param property: The param property. + * + * @return the param value. + */ + @Generated + public String getParam() { + return this.param; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("code", this.code); + jsonWriter.writeStringField("message", this.message); + jsonWriter.writeStringField("param", this.param); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventConversationItemInputAudioTranscriptionFailedError from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventConversationItemInputAudioTranscriptionFailedError if the JsonReader + * was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the + * RealtimeServerEventConversationItemInputAudioTranscriptionFailedError. + */ + @Generated + public static RealtimeServerEventConversationItemInputAudioTranscriptionFailedError fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + RealtimeServerEventConversationItemInputAudioTranscriptionFailedError deserializedRealtimeServerEventConversationItemInputAudioTranscriptionFailedError + = new RealtimeServerEventConversationItemInputAudioTranscriptionFailedError(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeServerEventConversationItemInputAudioTranscriptionFailedError.type + = reader.getString(); + } else if ("code".equals(fieldName)) { + deserializedRealtimeServerEventConversationItemInputAudioTranscriptionFailedError.code + = reader.getString(); + } else if ("message".equals(fieldName)) { + deserializedRealtimeServerEventConversationItemInputAudioTranscriptionFailedError.message + = reader.getString(); + } else if ("param".equals(fieldName)) { + deserializedRealtimeServerEventConversationItemInputAudioTranscriptionFailedError.param + = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeServerEventConversationItemInputAudioTranscriptionFailedError; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionSegment.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionSegment.java new file mode 100644 index 0000000000000..c772bcb028f5d --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionSegment.java @@ -0,0 +1,263 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when an input audio transcription segment is identified for an item. + */ +@Immutable +public final class RealtimeServerEventConversationItemInputAudioTranscriptionSegment extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_SEGMENT; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the item containing the input audio content. + */ + @Generated + private final String itemId; + + /* + * The index of the input audio content part within the item. + */ + @Generated + private final long contentIndex; + + /* + * The text for this segment. + */ + @Generated + private final String text; + + /* + * The segment identifier. + */ + @Generated + private final String id; + + /* + * The detected speaker label for this segment. + */ + @Generated + private final String speaker; + + /* + * Start time of the segment in seconds. + */ + @Generated + private final double start; + + /* + * End time of the segment in seconds. + */ + @Generated + private final double end; + + /** + * Creates an instance of RealtimeServerEventConversationItemInputAudioTranscriptionSegment class. + * + * @param eventId the eventId value to set. + * @param itemId the itemId value to set. + * @param contentIndex the contentIndex value to set. + * @param text the text value to set. + * @param id the id value to set. + * @param speaker the speaker value to set. + * @param start the start value to set. + * @param end the end value to set. + */ + @Generated + private RealtimeServerEventConversationItemInputAudioTranscriptionSegment(String eventId, String itemId, + long contentIndex, String text, String id, String speaker, double start, double end) { + this.eventId = eventId; + this.itemId = itemId; + this.contentIndex = contentIndex; + this.text = text; + this.id = id; + this.speaker = speaker; + this.start = start; + this.end = end; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the itemId property: The ID of the item containing the input audio content. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the contentIndex property: The index of the input audio content part within the item. + * + * @return the contentIndex value. + */ + @Generated + public long getContentIndex() { + return this.contentIndex; + } + + /** + * Get the text property: The text for this segment. + * + * @return the text value. + */ + @Generated + public String getText() { + return this.text; + } + + /** + * Get the id property: The segment identifier. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the speaker property: The detected speaker label for this segment. + * + * @return the speaker value. + */ + @Generated + public String getSpeaker() { + return this.speaker; + } + + /** + * Get the start property: Start time of the segment in seconds. + * + * @return the start value. + */ + @Generated + public double getStart() { + return this.start; + } + + /** + * Get the end property: End time of the segment in seconds. + * + * @return the end value. + */ + @Generated + public double getEnd() { + return this.end; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("content_index", this.contentIndex); + jsonWriter.writeStringField("text", this.text); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("speaker", this.speaker); + jsonWriter.writeDoubleField("start", this.start); + jsonWriter.writeDoubleField("end", this.end); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventConversationItemInputAudioTranscriptionSegment from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventConversationItemInputAudioTranscriptionSegment if the JsonReader was + * pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the + * RealtimeServerEventConversationItemInputAudioTranscriptionSegment. + */ + @Generated + public static RealtimeServerEventConversationItemInputAudioTranscriptionSegment fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String itemId = null; + long contentIndex = 0L; + String text = null; + String id = null; + String speaker = null; + double start = 0.0; + double end = 0.0; + RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_SEGMENT; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getLong(); + } else if ("text".equals(fieldName)) { + text = reader.getString(); + } else if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("speaker".equals(fieldName)) { + speaker = reader.getString(); + } else if ("start".equals(fieldName)) { + start = reader.getDouble(); + } else if ("end".equals(fieldName)) { + end = reader.getDouble(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventConversationItemInputAudioTranscriptionSegment deserializedRealtimeServerEventConversationItemInputAudioTranscriptionSegment + = new RealtimeServerEventConversationItemInputAudioTranscriptionSegment(eventId, itemId, contentIndex, + text, id, speaker, start, end); + deserializedRealtimeServerEventConversationItemInputAudioTranscriptionSegment.type = type; + return deserializedRealtimeServerEventConversationItemInputAudioTranscriptionSegment; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemRetrieved.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemRetrieved.java new file mode 100644 index 0000000000000..a1f4d29c003bf --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemRetrieved.java @@ -0,0 +1,129 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when a conversation item is retrieved with `conversation.item.retrieve`. This is provided as a way to fetch + * the server's representation of an item, for example to get access to the post-processed audio data after noise + * cancellation and VAD. It includes the full content of the Item, including audio data. + */ +@Immutable +public final class RealtimeServerEventConversationItemRetrieved extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_RETRIEVED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The item property. + */ + @Generated + private final RealtimeConversationItem item; + + /** + * Creates an instance of RealtimeServerEventConversationItemRetrieved class. + * + * @param eventId the eventId value to set. + * @param item the item value to set. + */ + @Generated + private RealtimeServerEventConversationItemRetrieved(String eventId, RealtimeConversationItem item) { + this.eventId = eventId; + this.item = item; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the item property: The item property. + * + * @return the item value. + */ + @Generated + public RealtimeConversationItem getItem() { + return this.item; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeJsonField("item", this.item); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventConversationItemRetrieved from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventConversationItemRetrieved if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventConversationItemRetrieved. + */ + @Generated + public static RealtimeServerEventConversationItemRetrieved fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + RealtimeConversationItem item = null; + RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_RETRIEVED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("item".equals(fieldName)) { + item = RealtimeConversationItem.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventConversationItemRetrieved deserializedRealtimeServerEventConversationItemRetrieved + = new RealtimeServerEventConversationItemRetrieved(eventId, item); + deserializedRealtimeServerEventConversationItemRetrieved.type = type; + return deserializedRealtimeServerEventConversationItemRetrieved; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemTruncated.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemTruncated.java new file mode 100644 index 0000000000000..42b3ed80c21a8 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemTruncated.java @@ -0,0 +1,197 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when an earlier assistant audio message item is truncated by the + * client with a `conversation.item.truncate` event. This event is used to + * synchronize the server's understanding of the audio with the client's playback. + * This action will truncate the audio and remove the server-side text transcript + * to ensure there is no text in the context that hasn't been heard by the user. + */ +@Immutable +public final class RealtimeServerEventConversationItemTruncated extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_TRUNCATED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the assistant message item that was truncated. + */ + @Generated + private final String itemId; + + /* + * The index of the content part that was truncated. + */ + @Generated + private final long contentIndex; + + /* + * The duration up to which the audio was truncated, in milliseconds. + */ + @Generated + private final long audioEndMs; + + /* + * The assistant message after truncation, when the service returns the updated item. + */ + @Generated + private RealtimeConversationItem item; + + /** + * Creates an instance of RealtimeServerEventConversationItemTruncated class. + * + * @param eventId the eventId value to set. + * @param itemId the itemId value to set. + * @param contentIndex the contentIndex value to set. + * @param audioEndMs the audioEndMs value to set. + */ + @Generated + private RealtimeServerEventConversationItemTruncated(String eventId, String itemId, long contentIndex, + long audioEndMs) { + this.eventId = eventId; + this.itemId = itemId; + this.contentIndex = contentIndex; + this.audioEndMs = audioEndMs; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the itemId property: The ID of the assistant message item that was truncated. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the contentIndex property: The index of the content part that was truncated. + * + * @return the contentIndex value. + */ + @Generated + public long getContentIndex() { + return this.contentIndex; + } + + /** + * Get the audioEndMs property: The duration up to which the audio was truncated, in milliseconds. + * + * @return the audioEndMs value. + */ + @Generated + public long getAudioEndMs() { + return this.audioEndMs; + } + + /** + * Get the item property: The assistant message after truncation, when the service returns the updated item. + * + * @return the item value. + */ + @Generated + public RealtimeConversationItem getItem() { + return this.item; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("content_index", this.contentIndex); + jsonWriter.writeLongField("audio_end_ms", this.audioEndMs); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeJsonField("item", this.item); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventConversationItemTruncated from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventConversationItemTruncated if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventConversationItemTruncated. + */ + @Generated + public static RealtimeServerEventConversationItemTruncated fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String itemId = null; + long contentIndex = 0L; + long audioEndMs = 0L; + RealtimeServerEventType type = RealtimeServerEventType.CONVERSATION_ITEM_TRUNCATED; + RealtimeConversationItem item = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getLong(); + } else if ("audio_end_ms".equals(fieldName)) { + audioEndMs = reader.getLong(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else if ("item".equals(fieldName)) { + item = RealtimeConversationItem.fromJson(reader); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventConversationItemTruncated deserializedRealtimeServerEventConversationItemTruncated + = new RealtimeServerEventConversationItemTruncated(eventId, itemId, contentIndex, audioEndMs); + deserializedRealtimeServerEventConversationItemTruncated.type = type; + deserializedRealtimeServerEventConversationItemTruncated.item = item; + return deserializedRealtimeServerEventConversationItemTruncated; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventErrorError.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventErrorError.java new file mode 100644 index 0000000000000..cbc909303d178 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventErrorError.java @@ -0,0 +1,169 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeServerEventErrorError model. + */ +@Immutable +public final class RealtimeServerEventErrorError implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private final String type; + + /* + * The code property. + */ + @Generated + private String code; + + /* + * The message property. + */ + @Generated + private final String message; + + /* + * The param property. + */ + @Generated + private String param; + + /* + * The event_id property. + */ + @Generated + private String eventId; + + /** + * Creates an instance of RealtimeServerEventErrorError class. + * + * @param type the type value to set. + * @param message the message value to set. + */ + @Generated + private RealtimeServerEventErrorError(String type, String message) { + this.type = type; + this.message = message; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * Get the code property: The code property. + * + * @return the code value. + */ + @Generated + public String getCode() { + return this.code; + } + + /** + * Get the message property: The message property. + * + * @return the message value. + */ + @Generated + public String getMessage() { + return this.message; + } + + /** + * Get the param property: The param property. + * + * @return the param value. + */ + @Generated + public String getParam() { + return this.param; + } + + /** + * Get the eventId property: The event_id property. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("message", this.message); + jsonWriter.writeStringField("code", this.code); + jsonWriter.writeStringField("param", this.param); + jsonWriter.writeStringField("event_id", this.eventId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventErrorError from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventErrorError if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventErrorError. + */ + @Generated + public static RealtimeServerEventErrorError fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String type = null; + String message = null; + String code = null; + String param = null; + String eventId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + type = reader.getString(); + } else if ("message".equals(fieldName)) { + message = reader.getString(); + } else if ("code".equals(fieldName)) { + code = reader.getString(); + } else if ("param".equals(fieldName)) { + param = reader.getString(); + } else if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventErrorError deserializedRealtimeServerEventErrorError + = new RealtimeServerEventErrorError(type, message); + deserializedRealtimeServerEventErrorError.code = code; + deserializedRealtimeServerEventErrorError.param = param; + deserializedRealtimeServerEventErrorError.eventId = eventId; + return deserializedRealtimeServerEventErrorError; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferCleared.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferCleared.java new file mode 100644 index 0000000000000..b3543583fb8c8 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferCleared.java @@ -0,0 +1,106 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when the input audio buffer is cleared by the client with a + * `input_audio_buffer.clear` event. + */ +@Immutable +public final class RealtimeServerEventInputAudioBufferCleared extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.INPUT_AUDIO_BUFFER_CLEARED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /** + * Creates an instance of RealtimeServerEventInputAudioBufferCleared class. + * + * @param eventId the eventId value to set. + */ + @Generated + private RealtimeServerEventInputAudioBufferCleared(String eventId) { + this.eventId = eventId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventInputAudioBufferCleared from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventInputAudioBufferCleared if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventInputAudioBufferCleared. + */ + @Generated + public static RealtimeServerEventInputAudioBufferCleared fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + RealtimeServerEventType type = RealtimeServerEventType.INPUT_AUDIO_BUFFER_CLEARED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventInputAudioBufferCleared deserializedRealtimeServerEventInputAudioBufferCleared + = new RealtimeServerEventInputAudioBufferCleared(eventId); + deserializedRealtimeServerEventInputAudioBufferCleared.type = type; + return deserializedRealtimeServerEventInputAudioBufferCleared; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferCommitted.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferCommitted.java new file mode 100644 index 0000000000000..7281dc960c8de --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferCommitted.java @@ -0,0 +1,151 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when an input audio buffer is committed, either by the client or + * automatically in server VAD mode. The `item_id` property is the ID of the user + * message item that will be created, thus a `conversation.item.created` event + * will also be sent to the client. + */ +@Immutable +public final class RealtimeServerEventInputAudioBufferCommitted extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.INPUT_AUDIO_BUFFER_COMMITTED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The previous_item_id property. + */ + @Generated + private String previousItemId; + + /* + * The ID of the user message item that will be created. + */ + @Generated + private final String itemId; + + /** + * Creates an instance of RealtimeServerEventInputAudioBufferCommitted class. + * + * @param eventId the eventId value to set. + * @param itemId the itemId value to set. + */ + @Generated + private RealtimeServerEventInputAudioBufferCommitted(String eventId, String itemId) { + this.eventId = eventId; + this.itemId = itemId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the previousItemId property: The previous_item_id property. + * + * @return the previousItemId value. + */ + @Generated + public String getPreviousItemId() { + return this.previousItemId; + } + + /** + * Get the itemId property: The ID of the user message item that will be created. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("previous_item_id", this.previousItemId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventInputAudioBufferCommitted from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventInputAudioBufferCommitted if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventInputAudioBufferCommitted. + */ + @Generated + public static RealtimeServerEventInputAudioBufferCommitted fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String itemId = null; + RealtimeServerEventType type = RealtimeServerEventType.INPUT_AUDIO_BUFFER_COMMITTED; + String previousItemId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else if ("previous_item_id".equals(fieldName)) { + previousItemId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventInputAudioBufferCommitted deserializedRealtimeServerEventInputAudioBufferCommitted + = new RealtimeServerEventInputAudioBufferCommitted(eventId, itemId); + deserializedRealtimeServerEventInputAudioBufferCommitted.type = type; + deserializedRealtimeServerEventInputAudioBufferCommitted.previousItemId = previousItemId; + return deserializedRealtimeServerEventInputAudioBufferCommitted; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferDtmfEventReceived.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferDtmfEventReceived.java new file mode 100644 index 0000000000000..3863a919c3ae5 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferDtmfEventReceived.java @@ -0,0 +1,131 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * **SIP Only:** Returned when an DTMF event is received. A DTMF event is a message that + * represents a telephone keypad press (0–9, *, #, A–D). The `event` property + * is the keypad that the user press. The `received_at` is the UTC Unix Timestamp + * that the server received the event. + */ +@Immutable +public final class RealtimeServerEventInputAudioBufferDtmfEventReceived extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.INPUT_AUDIO_BUFFER_DTMF_EVENT_RECEIVED; + + /* + * The telephone keypad that was pressed by the user. + */ + @Generated + private final String event; + + /* + * UTC Unix Timestamp when DTMF Event was received by server. + */ + @Generated + private final long receivedAt; + + /** + * Creates an instance of RealtimeServerEventInputAudioBufferDtmfEventReceived class. + * + * @param event the event value to set. + * @param receivedAt the receivedAt value to set. + */ + @Generated + private RealtimeServerEventInputAudioBufferDtmfEventReceived(String event, long receivedAt) { + this.event = event; + this.receivedAt = receivedAt; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the event property: The telephone keypad that was pressed by the user. + * + * @return the event value. + */ + @Generated + public String getEvent() { + return this.event; + } + + /** + * Get the receivedAt property: UTC Unix Timestamp when DTMF Event was received by server. + * + * @return the receivedAt value. + */ + @Generated + public long getReceivedAt() { + return this.receivedAt; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event", this.event); + jsonWriter.writeLongField("received_at", this.receivedAt); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventInputAudioBufferDtmfEventReceived from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventInputAudioBufferDtmfEventReceived if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventInputAudioBufferDtmfEventReceived. + */ + @Generated + public static RealtimeServerEventInputAudioBufferDtmfEventReceived fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + String event = null; + long receivedAt = 0L; + RealtimeServerEventType type = RealtimeServerEventType.INPUT_AUDIO_BUFFER_DTMF_EVENT_RECEIVED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event".equals(fieldName)) { + event = reader.getString(); + } else if ("received_at".equals(fieldName)) { + receivedAt = reader.getLong(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventInputAudioBufferDtmfEventReceived deserializedRealtimeServerEventInputAudioBufferDtmfEventReceived + = new RealtimeServerEventInputAudioBufferDtmfEventReceived(event, receivedAt); + deserializedRealtimeServerEventInputAudioBufferDtmfEventReceived.type = type; + return deserializedRealtimeServerEventInputAudioBufferDtmfEventReceived; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferSpeechStarted.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferSpeechStarted.java new file mode 100644 index 0000000000000..d9a1086d88610 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferSpeechStarted.java @@ -0,0 +1,163 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Sent by the server when in `server_vad` mode to indicate that speech has been + * detected in the audio buffer. This can happen any time audio is added to the + * buffer (unless speech is already detected). The client may want to use this + * event to interrupt audio playback or provide visual feedback to the user. + * The client should expect to receive a `input_audio_buffer.speech_stopped` event + * when speech stops. The `item_id` property is the ID of the user message item + * that will be created when speech stops and will also be included in the + * `input_audio_buffer.speech_stopped` event (unless the client manually commits + * the audio buffer during VAD activation). + */ +@Immutable +public final class RealtimeServerEventInputAudioBufferSpeechStarted extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.INPUT_AUDIO_BUFFER_SPEECH_STARTED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * Milliseconds from the start of all audio written to the buffer during the + * session when speech was first detected. This will correspond to the + * beginning of audio sent to the model, and thus includes the + * `prefix_padding_ms` configured in the Session. + */ + @Generated + private final long audioStartMs; + + /* + * The ID of the user message item that will be created when speech stops. + */ + @Generated + private final String itemId; + + /** + * Creates an instance of RealtimeServerEventInputAudioBufferSpeechStarted class. + * + * @param eventId the eventId value to set. + * @param audioStartMs the audioStartMs value to set. + * @param itemId the itemId value to set. + */ + @Generated + private RealtimeServerEventInputAudioBufferSpeechStarted(String eventId, long audioStartMs, String itemId) { + this.eventId = eventId; + this.audioStartMs = audioStartMs; + this.itemId = itemId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the audioStartMs property: Milliseconds from the start of all audio written to the buffer during the + * session when speech was first detected. This will correspond to the + * beginning of audio sent to the model, and thus includes the + * `prefix_padding_ms` configured in the Session. + * + * @return the audioStartMs value. + */ + @Generated + public long getAudioStartMs() { + return this.audioStartMs; + } + + /** + * Get the itemId property: The ID of the user message item that will be created when speech stops. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeLongField("audio_start_ms", this.audioStartMs); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventInputAudioBufferSpeechStarted from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventInputAudioBufferSpeechStarted if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventInputAudioBufferSpeechStarted. + */ + @Generated + public static RealtimeServerEventInputAudioBufferSpeechStarted fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + long audioStartMs = 0L; + String itemId = null; + RealtimeServerEventType type = RealtimeServerEventType.INPUT_AUDIO_BUFFER_SPEECH_STARTED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("audio_start_ms".equals(fieldName)) { + audioStartMs = reader.getLong(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventInputAudioBufferSpeechStarted deserializedRealtimeServerEventInputAudioBufferSpeechStarted + = new RealtimeServerEventInputAudioBufferSpeechStarted(eventId, audioStartMs, itemId); + deserializedRealtimeServerEventInputAudioBufferSpeechStarted.type = type; + return deserializedRealtimeServerEventInputAudioBufferSpeechStarted; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferSpeechStopped.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferSpeechStopped.java new file mode 100644 index 0000000000000..a1fbc89b3345e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferSpeechStopped.java @@ -0,0 +1,155 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned in `server_vad` mode when the server detects the end of speech in + * the audio buffer. The server will also send an `conversation.item.created` + * event with the user message item that is created from the audio buffer. + */ +@Immutable +public final class RealtimeServerEventInputAudioBufferSpeechStopped extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.INPUT_AUDIO_BUFFER_SPEECH_STOPPED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * Milliseconds since the session started when speech stopped. This will + * correspond to the end of audio sent to the model, and thus includes the + * `min_silence_duration_ms` configured in the Session. + */ + @Generated + private final long audioEndMs; + + /* + * The ID of the user message item that will be created. + */ + @Generated + private final String itemId; + + /** + * Creates an instance of RealtimeServerEventInputAudioBufferSpeechStopped class. + * + * @param eventId the eventId value to set. + * @param audioEndMs the audioEndMs value to set. + * @param itemId the itemId value to set. + */ + @Generated + private RealtimeServerEventInputAudioBufferSpeechStopped(String eventId, long audioEndMs, String itemId) { + this.eventId = eventId; + this.audioEndMs = audioEndMs; + this.itemId = itemId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the audioEndMs property: Milliseconds since the session started when speech stopped. This will + * correspond to the end of audio sent to the model, and thus includes the + * `min_silence_duration_ms` configured in the Session. + * + * @return the audioEndMs value. + */ + @Generated + public long getAudioEndMs() { + return this.audioEndMs; + } + + /** + * Get the itemId property: The ID of the user message item that will be created. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeLongField("audio_end_ms", this.audioEndMs); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventInputAudioBufferSpeechStopped from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventInputAudioBufferSpeechStopped if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventInputAudioBufferSpeechStopped. + */ + @Generated + public static RealtimeServerEventInputAudioBufferSpeechStopped fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + long audioEndMs = 0L; + String itemId = null; + RealtimeServerEventType type = RealtimeServerEventType.INPUT_AUDIO_BUFFER_SPEECH_STOPPED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("audio_end_ms".equals(fieldName)) { + audioEndMs = reader.getLong(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventInputAudioBufferSpeechStopped deserializedRealtimeServerEventInputAudioBufferSpeechStopped + = new RealtimeServerEventInputAudioBufferSpeechStopped(eventId, audioEndMs, itemId); + deserializedRealtimeServerEventInputAudioBufferSpeechStopped.type = type; + return deserializedRealtimeServerEventInputAudioBufferSpeechStopped; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferTimeoutTriggered.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferTimeoutTriggered.java new file mode 100644 index 0000000000000..a1a895b4d0ff7 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferTimeoutTriggered.java @@ -0,0 +1,186 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when the Server VAD timeout is triggered for the input audio buffer. This is configured + * with `idle_timeout_ms` in the `turn_detection` settings of the session, and it indicates that + * there hasn't been any speech detected for the configured duration. + * The `audio_start_ms` and `audio_end_ms` fields indicate the segment of audio after the last + * model response up to the triggering time, as an offset from the beginning of audio written + * to the input audio buffer. This means it demarcates the segment of audio that was silent and + * the difference between the start and end values will roughly match the configured timeout. + * The empty audio will be committed to the conversation as an `input_audio` item (there will be a + * `input_audio_buffer.committed` event) and a model response will be generated. There may be speech + * that didn't trigger VAD but is still detected by the model, so the model may respond with + * something relevant to the conversation or a prompt to continue speaking. + */ +@Immutable +public final class RealtimeServerEventInputAudioBufferTimeoutTriggered extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.INPUT_AUDIO_BUFFER_TIMEOUT_TRIGGERED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * Millisecond offset of audio written to the input audio buffer that was after the playback time of the last model + * response. + */ + @Generated + private final long audioStartMs; + + /* + * Millisecond offset of audio written to the input audio buffer at the time the timeout was triggered. + */ + @Generated + private final long audioEndMs; + + /* + * The ID of the item associated with this segment. + */ + @Generated + private final String itemId; + + /** + * Creates an instance of RealtimeServerEventInputAudioBufferTimeoutTriggered class. + * + * @param eventId the eventId value to set. + * @param audioStartMs the audioStartMs value to set. + * @param audioEndMs the audioEndMs value to set. + * @param itemId the itemId value to set. + */ + @Generated + private RealtimeServerEventInputAudioBufferTimeoutTriggered(String eventId, long audioStartMs, long audioEndMs, + String itemId) { + this.eventId = eventId; + this.audioStartMs = audioStartMs; + this.audioEndMs = audioEndMs; + this.itemId = itemId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the audioStartMs property: Millisecond offset of audio written to the input audio buffer that was after the + * playback time of the last model response. + * + * @return the audioStartMs value. + */ + @Generated + public long getAudioStartMs() { + return this.audioStartMs; + } + + /** + * Get the audioEndMs property: Millisecond offset of audio written to the input audio buffer at the time the + * timeout was triggered. + * + * @return the audioEndMs value. + */ + @Generated + public long getAudioEndMs() { + return this.audioEndMs; + } + + /** + * Get the itemId property: The ID of the item associated with this segment. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeLongField("audio_start_ms", this.audioStartMs); + jsonWriter.writeLongField("audio_end_ms", this.audioEndMs); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventInputAudioBufferTimeoutTriggered from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventInputAudioBufferTimeoutTriggered if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventInputAudioBufferTimeoutTriggered. + */ + @Generated + public static RealtimeServerEventInputAudioBufferTimeoutTriggered fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + long audioStartMs = 0L; + long audioEndMs = 0L; + String itemId = null; + RealtimeServerEventType type = RealtimeServerEventType.INPUT_AUDIO_BUFFER_TIMEOUT_TRIGGERED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("audio_start_ms".equals(fieldName)) { + audioStartMs = reader.getLong(); + } else if ("audio_end_ms".equals(fieldName)) { + audioEndMs = reader.getLong(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventInputAudioBufferTimeoutTriggered deserializedRealtimeServerEventInputAudioBufferTimeoutTriggered + = new RealtimeServerEventInputAudioBufferTimeoutTriggered(eventId, audioStartMs, audioEndMs, itemId); + deserializedRealtimeServerEventInputAudioBufferTimeoutTriggered.type = type; + return deserializedRealtimeServerEventInputAudioBufferTimeoutTriggered; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsCompleted.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsCompleted.java new file mode 100644 index 0000000000000..b769b926e133a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsCompleted.java @@ -0,0 +1,127 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when listing MCP tools has completed for an item. + */ +@Immutable +public final class RealtimeServerEventMCPListToolsCompleted extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.MCP_LIST_TOOLS_COMPLETED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the MCP list tools item. + */ + @Generated + private final String itemId; + + /** + * Creates an instance of RealtimeServerEventMCPListToolsCompleted class. + * + * @param eventId the eventId value to set. + * @param itemId the itemId value to set. + */ + @Generated + private RealtimeServerEventMCPListToolsCompleted(String eventId, String itemId) { + this.eventId = eventId; + this.itemId = itemId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the itemId property: The ID of the MCP list tools item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventMCPListToolsCompleted from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventMCPListToolsCompleted if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventMCPListToolsCompleted. + */ + @Generated + public static RealtimeServerEventMCPListToolsCompleted fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String itemId = null; + RealtimeServerEventType type = RealtimeServerEventType.MCP_LIST_TOOLS_COMPLETED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventMCPListToolsCompleted deserializedRealtimeServerEventMCPListToolsCompleted + = new RealtimeServerEventMCPListToolsCompleted(eventId, itemId); + deserializedRealtimeServerEventMCPListToolsCompleted.type = type; + return deserializedRealtimeServerEventMCPListToolsCompleted; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsFailed.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsFailed.java new file mode 100644 index 0000000000000..b1c17d30d1cd2 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsFailed.java @@ -0,0 +1,127 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when listing MCP tools has failed for an item. + */ +@Immutable +public final class RealtimeServerEventMCPListToolsFailed extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.MCP_LIST_TOOLS_FAILED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the MCP list tools item. + */ + @Generated + private final String itemId; + + /** + * Creates an instance of RealtimeServerEventMCPListToolsFailed class. + * + * @param eventId the eventId value to set. + * @param itemId the itemId value to set. + */ + @Generated + private RealtimeServerEventMCPListToolsFailed(String eventId, String itemId) { + this.eventId = eventId; + this.itemId = itemId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the itemId property: The ID of the MCP list tools item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventMCPListToolsFailed from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventMCPListToolsFailed if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventMCPListToolsFailed. + */ + @Generated + public static RealtimeServerEventMCPListToolsFailed fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String itemId = null; + RealtimeServerEventType type = RealtimeServerEventType.MCP_LIST_TOOLS_FAILED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventMCPListToolsFailed deserializedRealtimeServerEventMCPListToolsFailed + = new RealtimeServerEventMCPListToolsFailed(eventId, itemId); + deserializedRealtimeServerEventMCPListToolsFailed.type = type; + return deserializedRealtimeServerEventMCPListToolsFailed; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsInProgress.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsInProgress.java new file mode 100644 index 0000000000000..b0fe2c8400490 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsInProgress.java @@ -0,0 +1,127 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when listing MCP tools is in progress for an item. + */ +@Immutable +public final class RealtimeServerEventMCPListToolsInProgress extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.MCP_LIST_TOOLS_IN_PROGRESS; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the MCP list tools item. + */ + @Generated + private final String itemId; + + /** + * Creates an instance of RealtimeServerEventMCPListToolsInProgress class. + * + * @param eventId the eventId value to set. + * @param itemId the itemId value to set. + */ + @Generated + private RealtimeServerEventMCPListToolsInProgress(String eventId, String itemId) { + this.eventId = eventId; + this.itemId = itemId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the itemId property: The ID of the MCP list tools item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventMCPListToolsInProgress from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventMCPListToolsInProgress if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventMCPListToolsInProgress. + */ + @Generated + public static RealtimeServerEventMCPListToolsInProgress fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String itemId = null; + RealtimeServerEventType type = RealtimeServerEventType.MCP_LIST_TOOLS_IN_PROGRESS; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventMCPListToolsInProgress deserializedRealtimeServerEventMCPListToolsInProgress + = new RealtimeServerEventMCPListToolsInProgress(eventId, itemId); + deserializedRealtimeServerEventMCPListToolsInProgress.type = type; + return deserializedRealtimeServerEventMCPListToolsInProgress; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferCleared.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferCleared.java new file mode 100644 index 0000000000000..0bcd60e369aa0 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferCleared.java @@ -0,0 +1,131 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * **WebRTC/SIP Only:** Emitted when the output audio buffer is cleared. This happens either in VAD + * mode when the user has interrupted (`input_audio_buffer.speech_started`), + * or when the client has emitted the `output_audio_buffer.clear` event to manually + * cut off the current audio response. + * [Learn more](/docs/guides/realtime-conversations#client-and-server-events-for-audio-in-webrtc). + */ +@Immutable +public final class RealtimeServerEventOutputAudioBufferCleared extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.OUTPUT_AUDIO_BUFFER_CLEARED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The unique ID of the response that produced the audio. + */ + @Generated + private final String responseId; + + /** + * Creates an instance of RealtimeServerEventOutputAudioBufferCleared class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + */ + @Generated + private RealtimeServerEventOutputAudioBufferCleared(String eventId, String responseId) { + this.eventId = eventId; + this.responseId = responseId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The unique ID of the response that produced the audio. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventOutputAudioBufferCleared from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventOutputAudioBufferCleared if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventOutputAudioBufferCleared. + */ + @Generated + public static RealtimeServerEventOutputAudioBufferCleared fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + RealtimeServerEventType type = RealtimeServerEventType.OUTPUT_AUDIO_BUFFER_CLEARED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventOutputAudioBufferCleared deserializedRealtimeServerEventOutputAudioBufferCleared + = new RealtimeServerEventOutputAudioBufferCleared(eventId, responseId); + deserializedRealtimeServerEventOutputAudioBufferCleared.type = type; + return deserializedRealtimeServerEventOutputAudioBufferCleared; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferStarted.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferStarted.java new file mode 100644 index 0000000000000..57e5f8a821171 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferStarted.java @@ -0,0 +1,130 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * **WebRTC/SIP Only:** Emitted when the server begins streaming audio to the client. This event is + * emitted after an audio content part has been added (`response.content_part.added`) + * to the response. + * [Learn more](/docs/guides/realtime-conversations#client-and-server-events-for-audio-in-webrtc). + */ +@Immutable +public final class RealtimeServerEventOutputAudioBufferStarted extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.OUTPUT_AUDIO_BUFFER_STARTED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The unique ID of the response that produced the audio. + */ + @Generated + private final String responseId; + + /** + * Creates an instance of RealtimeServerEventOutputAudioBufferStarted class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + */ + @Generated + private RealtimeServerEventOutputAudioBufferStarted(String eventId, String responseId) { + this.eventId = eventId; + this.responseId = responseId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The unique ID of the response that produced the audio. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventOutputAudioBufferStarted from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventOutputAudioBufferStarted if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventOutputAudioBufferStarted. + */ + @Generated + public static RealtimeServerEventOutputAudioBufferStarted fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + RealtimeServerEventType type = RealtimeServerEventType.OUTPUT_AUDIO_BUFFER_STARTED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventOutputAudioBufferStarted deserializedRealtimeServerEventOutputAudioBufferStarted + = new RealtimeServerEventOutputAudioBufferStarted(eventId, responseId); + deserializedRealtimeServerEventOutputAudioBufferStarted.type = type; + return deserializedRealtimeServerEventOutputAudioBufferStarted; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferStopped.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferStopped.java new file mode 100644 index 0000000000000..477e8a58202fc --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferStopped.java @@ -0,0 +1,130 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * **WebRTC/SIP Only:** Emitted when the output audio buffer has been completely drained on the server, + * and no more audio is forthcoming. This event is emitted after the full response + * data has been sent to the client (`response.done`). + * [Learn more](/docs/guides/realtime-conversations#client-and-server-events-for-audio-in-webrtc). + */ +@Immutable +public final class RealtimeServerEventOutputAudioBufferStopped extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.OUTPUT_AUDIO_BUFFER_STOPPED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The unique ID of the response that produced the audio. + */ + @Generated + private final String responseId; + + /** + * Creates an instance of RealtimeServerEventOutputAudioBufferStopped class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + */ + @Generated + private RealtimeServerEventOutputAudioBufferStopped(String eventId, String responseId) { + this.eventId = eventId; + this.responseId = responseId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The unique ID of the response that produced the audio. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventOutputAudioBufferStopped from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventOutputAudioBufferStopped if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventOutputAudioBufferStopped. + */ + @Generated + public static RealtimeServerEventOutputAudioBufferStopped fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + RealtimeServerEventType type = RealtimeServerEventType.OUTPUT_AUDIO_BUFFER_STOPPED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventOutputAudioBufferStopped deserializedRealtimeServerEventOutputAudioBufferStopped + = new RealtimeServerEventOutputAudioBufferStopped(eventId, responseId); + deserializedRealtimeServerEventOutputAudioBufferStopped.type = type; + return deserializedRealtimeServerEventOutputAudioBufferStopped; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdated.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdated.java new file mode 100644 index 0000000000000..73d57befae8f5 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdated.java @@ -0,0 +1,133 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Emitted at the beginning of a Response to indicate the updated rate limits. + * When a Response is created some tokens will be "reserved" for the output + * tokens, the rate limits shown here reflect that reservation, which is then + * adjusted accordingly once the Response is completed. + */ +@Immutable +public final class RealtimeServerEventRateLimitsUpdated extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RATE_LIMITS_UPDATED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * List of rate limit information. + */ + @Generated + private final List rateLimits; + + /** + * Creates an instance of RealtimeServerEventRateLimitsUpdated class. + * + * @param eventId the eventId value to set. + * @param rateLimits the rateLimits value to set. + */ + @Generated + private RealtimeServerEventRateLimitsUpdated(String eventId, + List rateLimits) { + this.eventId = eventId; + this.rateLimits = rateLimits; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the rateLimits property: List of rate limit information. + * + * @return the rateLimits value. + */ + @Generated + public List getRateLimits() { + return this.rateLimits; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeArrayField("rate_limits", this.rateLimits, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventRateLimitsUpdated from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventRateLimitsUpdated if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventRateLimitsUpdated. + */ + @Generated + public static RealtimeServerEventRateLimitsUpdated fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + List rateLimits = null; + RealtimeServerEventType type = RealtimeServerEventType.RATE_LIMITS_UPDATED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("rate_limits".equals(fieldName)) { + rateLimits + = reader.readArray(reader1 -> RealtimeServerEventRateLimitsUpdatedRateLimits.fromJson(reader1)); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventRateLimitsUpdated deserializedRealtimeServerEventRateLimitsUpdated + = new RealtimeServerEventRateLimitsUpdated(eventId, rateLimits); + deserializedRealtimeServerEventRateLimitsUpdated.type = type; + return deserializedRealtimeServerEventRateLimitsUpdated; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdatedRateLimits.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdatedRateLimits.java new file mode 100644 index 0000000000000..83d6b2a9bf578 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdatedRateLimits.java @@ -0,0 +1,141 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeServerEventRateLimitsUpdatedRateLimits model. + */ +@Immutable +public final class RealtimeServerEventRateLimitsUpdatedRateLimits + implements JsonSerializable { + + /* + * The name property. + */ + @Generated + private RealtimeServerEventRateLimitsUpdatedRateLimitsName name; + + /* + * The limit property. + */ + @Generated + private Long limit; + + /* + * The remaining property. + */ + @Generated + private Long remaining; + + /* + * The reset_seconds property. + */ + @Generated + private Double resetSeconds; + + /** + * Creates an instance of RealtimeServerEventRateLimitsUpdatedRateLimits class. + */ + @Generated + private RealtimeServerEventRateLimitsUpdatedRateLimits() { + } + + /** + * Get the name property: The name property. + * + * @return the name value. + */ + @Generated + public RealtimeServerEventRateLimitsUpdatedRateLimitsName getName() { + return this.name; + } + + /** + * Get the limit property: The limit property. + * + * @return the limit value. + */ + @Generated + public Long getLimit() { + return this.limit; + } + + /** + * Get the remaining property: The remaining property. + * + * @return the remaining value. + */ + @Generated + public Long getRemaining() { + return this.remaining; + } + + /** + * Get the resetSeconds property: The reset_seconds property. + * + * @return the resetSeconds value. + */ + @Generated + public Double getResetSeconds() { + return this.resetSeconds; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name == null ? null : this.name.toString()); + jsonWriter.writeNumberField("limit", this.limit); + jsonWriter.writeNumberField("remaining", this.remaining); + jsonWriter.writeNumberField("reset_seconds", this.resetSeconds); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventRateLimitsUpdatedRateLimits from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventRateLimitsUpdatedRateLimits if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeServerEventRateLimitsUpdatedRateLimits. + */ + @Generated + public static RealtimeServerEventRateLimitsUpdatedRateLimits fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeServerEventRateLimitsUpdatedRateLimits deserializedRealtimeServerEventRateLimitsUpdatedRateLimits + = new RealtimeServerEventRateLimitsUpdatedRateLimits(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + deserializedRealtimeServerEventRateLimitsUpdatedRateLimits.name + = RealtimeServerEventRateLimitsUpdatedRateLimitsName.fromString(reader.getString()); + } else if ("limit".equals(fieldName)) { + deserializedRealtimeServerEventRateLimitsUpdatedRateLimits.limit + = reader.getNullable(JsonReader::getLong); + } else if ("remaining".equals(fieldName)) { + deserializedRealtimeServerEventRateLimitsUpdatedRateLimits.remaining + = reader.getNullable(JsonReader::getLong); + } else if ("reset_seconds".equals(fieldName)) { + deserializedRealtimeServerEventRateLimitsUpdatedRateLimits.resetSeconds + = reader.getNullable(JsonReader::getDouble); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeServerEventRateLimitsUpdatedRateLimits; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdatedRateLimitsName.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdatedRateLimitsName.java new file mode 100644 index 0000000000000..e0e44f6894b45 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdatedRateLimitsName.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeServerEventRateLimitsUpdatedRateLimitsName. + */ +public enum RealtimeServerEventRateLimitsUpdatedRateLimitsName { + /** + * Enum value requests. + */ + REQUESTS("requests"), + + /** + * Enum value tokens. + */ + TOKENS("tokens"); + + /** + * The actual serialized value for a RealtimeServerEventRateLimitsUpdatedRateLimitsName instance. + */ + private final String value; + + RealtimeServerEventRateLimitsUpdatedRateLimitsName(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeServerEventRateLimitsUpdatedRateLimitsName instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeServerEventRateLimitsUpdatedRateLimitsName object, or null if unable to parse. + */ + public static RealtimeServerEventRateLimitsUpdatedRateLimitsName fromString(String value) { + if (value == null) { + return null; + } + RealtimeServerEventRateLimitsUpdatedRateLimitsName[] items + = RealtimeServerEventRateLimitsUpdatedRateLimitsName.values(); + for (RealtimeServerEventRateLimitsUpdatedRateLimitsName item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRealtimeServerEventError.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRealtimeServerEventError.java new file mode 100644 index 0000000000000..e8be27d80b630 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventRealtimeServerEventError.java @@ -0,0 +1,129 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when an error occurs, which could be a client problem or a server + * problem. Most errors are recoverable and the session will stay open, we + * recommend to implementors to monitor and log error messages by default. + */ +@Immutable +public final class RealtimeServerEventRealtimeServerEventError extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.ERROR; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * Details of the error. + */ + @Generated + private final RealtimeServerEventErrorError error; + + /** + * Creates an instance of RealtimeServerEventRealtimeServerEventError class. + * + * @param eventId the eventId value to set. + * @param error the error value to set. + */ + @Generated + private RealtimeServerEventRealtimeServerEventError(String eventId, RealtimeServerEventErrorError error) { + this.eventId = eventId; + this.error = error; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the error property: Details of the error. + * + * @return the error value. + */ + @Generated + public RealtimeServerEventErrorError getError() { + return this.error; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeJsonField("error", this.error); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventRealtimeServerEventError from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventRealtimeServerEventError if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventRealtimeServerEventError. + */ + @Generated + public static RealtimeServerEventRealtimeServerEventError fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + RealtimeServerEventErrorError error = null; + RealtimeServerEventType type = RealtimeServerEventType.ERROR; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("error".equals(fieldName)) { + error = RealtimeServerEventErrorError.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventRealtimeServerEventError deserializedRealtimeServerEventRealtimeServerEventError + = new RealtimeServerEventRealtimeServerEventError(eventId, error); + deserializedRealtimeServerEventRealtimeServerEventError.type = type; + return deserializedRealtimeServerEventRealtimeServerEventError; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioDelta.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioDelta.java new file mode 100644 index 0000000000000..40919dfe9364e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioDelta.java @@ -0,0 +1,218 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.core.util.CoreUtils; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when the model-generated audio is updated. + */ +@Immutable +public final class RealtimeServerEventResponseAudioDelta extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_AUDIO_DELTA; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the response. + */ + @Generated + private final String responseId; + + /* + * The ID of the item. + */ + @Generated + private final String itemId; + + /* + * The index of the output item in the response. + */ + @Generated + private final long outputIndex; + + /* + * The index of the content part in the item's content array. + */ + @Generated + private final long contentIndex; + + /* + * Base64-encoded audio data delta. + */ + @Generated + private final byte[] delta; + + /** + * Creates an instance of RealtimeServerEventResponseAudioDelta class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param contentIndex the contentIndex value to set. + * @param delta the delta value to set. + */ + @Generated + private RealtimeServerEventResponseAudioDelta(String eventId, String responseId, String itemId, long outputIndex, + long contentIndex, byte[] delta) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.contentIndex = contentIndex; + this.delta = delta; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The ID of the response. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The ID of the item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The index of the output item in the response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the contentIndex property: The index of the content part in the item's content array. + * + * @return the contentIndex value. + */ + @Generated + public long getContentIndex() { + return this.contentIndex; + } + + /** + * Get the delta property: Base64-encoded audio data delta. + * + * @return the delta value. + */ + @Generated + public byte[] getDelta() { + return CoreUtils.clone(this.delta); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeLongField("content_index", this.contentIndex); + jsonWriter.writeBinaryField("delta", this.delta); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseAudioDelta from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseAudioDelta if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseAudioDelta. + */ + @Generated + public static RealtimeServerEventResponseAudioDelta fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + long outputIndex = 0L; + long contentIndex = 0L; + byte[] delta = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_AUDIO_DELTA; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getLong(); + } else if ("delta".equals(fieldName)) { + delta = reader.getBinary(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseAudioDelta deserializedRealtimeServerEventResponseAudioDelta + = new RealtimeServerEventResponseAudioDelta(eventId, responseId, itemId, outputIndex, contentIndex, + delta); + deserializedRealtimeServerEventResponseAudioDelta.type = type; + return deserializedRealtimeServerEventResponseAudioDelta; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioDone.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioDone.java new file mode 100644 index 0000000000000..92f3854c6713e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioDone.java @@ -0,0 +1,195 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when the model-generated audio is done. Also emitted when a Response + * is interrupted, incomplete, or cancelled. + */ +@Immutable +public final class RealtimeServerEventResponseAudioDone extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_AUDIO_DONE; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the response. + */ + @Generated + private final String responseId; + + /* + * The ID of the item. + */ + @Generated + private final String itemId; + + /* + * The index of the output item in the response. + */ + @Generated + private final long outputIndex; + + /* + * The index of the content part in the item's content array. + */ + @Generated + private final long contentIndex; + + /** + * Creates an instance of RealtimeServerEventResponseAudioDone class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param contentIndex the contentIndex value to set. + */ + @Generated + private RealtimeServerEventResponseAudioDone(String eventId, String responseId, String itemId, long outputIndex, + long contentIndex) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.contentIndex = contentIndex; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The ID of the response. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The ID of the item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The index of the output item in the response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the contentIndex property: The index of the content part in the item's content array. + * + * @return the contentIndex value. + */ + @Generated + public long getContentIndex() { + return this.contentIndex; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeLongField("content_index", this.contentIndex); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseAudioDone from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseAudioDone if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseAudioDone. + */ + @Generated + public static RealtimeServerEventResponseAudioDone fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + long outputIndex = 0L; + long contentIndex = 0L; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_AUDIO_DONE; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getLong(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseAudioDone deserializedRealtimeServerEventResponseAudioDone + = new RealtimeServerEventResponseAudioDone(eventId, responseId, itemId, outputIndex, contentIndex); + deserializedRealtimeServerEventResponseAudioDone.type = type; + return deserializedRealtimeServerEventResponseAudioDone; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioTranscriptDelta.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioTranscriptDelta.java new file mode 100644 index 0000000000000..69e678dbdf2ee --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioTranscriptDelta.java @@ -0,0 +1,217 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when the model-generated transcription of audio output is updated. + */ +@Immutable +public final class RealtimeServerEventResponseAudioTranscriptDelta extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_AUDIO_TRANSCRIPT_DELTA; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the response. + */ + @Generated + private final String responseId; + + /* + * The ID of the item. + */ + @Generated + private final String itemId; + + /* + * The index of the output item in the response. + */ + @Generated + private final long outputIndex; + + /* + * The index of the content part in the item's content array. + */ + @Generated + private final long contentIndex; + + /* + * The transcript delta. + */ + @Generated + private final String delta; + + /** + * Creates an instance of RealtimeServerEventResponseAudioTranscriptDelta class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param contentIndex the contentIndex value to set. + * @param delta the delta value to set. + */ + @Generated + private RealtimeServerEventResponseAudioTranscriptDelta(String eventId, String responseId, String itemId, + long outputIndex, long contentIndex, String delta) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.contentIndex = contentIndex; + this.delta = delta; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The ID of the response. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The ID of the item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The index of the output item in the response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the contentIndex property: The index of the content part in the item's content array. + * + * @return the contentIndex value. + */ + @Generated + public long getContentIndex() { + return this.contentIndex; + } + + /** + * Get the delta property: The transcript delta. + * + * @return the delta value. + */ + @Generated + public String getDelta() { + return this.delta; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeLongField("content_index", this.contentIndex); + jsonWriter.writeStringField("delta", this.delta); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseAudioTranscriptDelta from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseAudioTranscriptDelta if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseAudioTranscriptDelta. + */ + @Generated + public static RealtimeServerEventResponseAudioTranscriptDelta fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + long outputIndex = 0L; + long contentIndex = 0L; + String delta = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_AUDIO_TRANSCRIPT_DELTA; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getLong(); + } else if ("delta".equals(fieldName)) { + delta = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseAudioTranscriptDelta deserializedRealtimeServerEventResponseAudioTranscriptDelta + = new RealtimeServerEventResponseAudioTranscriptDelta(eventId, responseId, itemId, outputIndex, + contentIndex, delta); + deserializedRealtimeServerEventResponseAudioTranscriptDelta.type = type; + return deserializedRealtimeServerEventResponseAudioTranscriptDelta; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioTranscriptDone.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioTranscriptDone.java new file mode 100644 index 0000000000000..dd294370d0f14 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioTranscriptDone.java @@ -0,0 +1,219 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when the model-generated transcription of audio output is done + * streaming. Also emitted when a Response is interrupted, incomplete, or + * cancelled. + */ +@Immutable +public final class RealtimeServerEventResponseAudioTranscriptDone extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_AUDIO_TRANSCRIPT_DONE; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the response. + */ + @Generated + private final String responseId; + + /* + * The ID of the item. + */ + @Generated + private final String itemId; + + /* + * The index of the output item in the response. + */ + @Generated + private final long outputIndex; + + /* + * The index of the content part in the item's content array. + */ + @Generated + private final long contentIndex; + + /* + * The final transcript of the audio. + */ + @Generated + private final String transcript; + + /** + * Creates an instance of RealtimeServerEventResponseAudioTranscriptDone class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param contentIndex the contentIndex value to set. + * @param transcript the transcript value to set. + */ + @Generated + private RealtimeServerEventResponseAudioTranscriptDone(String eventId, String responseId, String itemId, + long outputIndex, long contentIndex, String transcript) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.contentIndex = contentIndex; + this.transcript = transcript; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The ID of the response. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The ID of the item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The index of the output item in the response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the contentIndex property: The index of the content part in the item's content array. + * + * @return the contentIndex value. + */ + @Generated + public long getContentIndex() { + return this.contentIndex; + } + + /** + * Get the transcript property: The final transcript of the audio. + * + * @return the transcript value. + */ + @Generated + public String getTranscript() { + return this.transcript; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeLongField("content_index", this.contentIndex); + jsonWriter.writeStringField("transcript", this.transcript); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseAudioTranscriptDone from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseAudioTranscriptDone if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseAudioTranscriptDone. + */ + @Generated + public static RealtimeServerEventResponseAudioTranscriptDone fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + long outputIndex = 0L; + long contentIndex = 0L; + String transcript = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_AUDIO_TRANSCRIPT_DONE; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getLong(); + } else if ("transcript".equals(fieldName)) { + transcript = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseAudioTranscriptDone deserializedRealtimeServerEventResponseAudioTranscriptDone + = new RealtimeServerEventResponseAudioTranscriptDone(eventId, responseId, itemId, outputIndex, + contentIndex, transcript); + deserializedRealtimeServerEventResponseAudioTranscriptDone.type = type; + return deserializedRealtimeServerEventResponseAudioTranscriptDone; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAdded.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAdded.java new file mode 100644 index 0000000000000..a93525c91a441 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAdded.java @@ -0,0 +1,218 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when a new content part is added to an assistant message item during + * response generation. + */ +@Immutable +public final class RealtimeServerEventResponseContentPartAdded extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_CONTENT_PART_ADDED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the response. + */ + @Generated + private final String responseId; + + /* + * The ID of the item to which the content part was added. + */ + @Generated + private final String itemId; + + /* + * The index of the output item in the response. + */ + @Generated + private final long outputIndex; + + /* + * The index of the content part in the item's content array. + */ + @Generated + private final long contentIndex; + + /* + * The content part that was added. + */ + @Generated + private final RealtimeServerEventResponseContentPartAddedPart part; + + /** + * Creates an instance of RealtimeServerEventResponseContentPartAdded class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param contentIndex the contentIndex value to set. + * @param part the part value to set. + */ + @Generated + private RealtimeServerEventResponseContentPartAdded(String eventId, String responseId, String itemId, + long outputIndex, long contentIndex, RealtimeServerEventResponseContentPartAddedPart part) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.contentIndex = contentIndex; + this.part = part; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The ID of the response. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The ID of the item to which the content part was added. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The index of the output item in the response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the contentIndex property: The index of the content part in the item's content array. + * + * @return the contentIndex value. + */ + @Generated + public long getContentIndex() { + return this.contentIndex; + } + + /** + * Get the part property: The content part that was added. + * + * @return the part value. + */ + @Generated + public RealtimeServerEventResponseContentPartAddedPart getPart() { + return this.part; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeLongField("content_index", this.contentIndex); + jsonWriter.writeJsonField("part", this.part); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseContentPartAdded from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseContentPartAdded if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseContentPartAdded. + */ + @Generated + public static RealtimeServerEventResponseContentPartAdded fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + long outputIndex = 0L; + long contentIndex = 0L; + RealtimeServerEventResponseContentPartAddedPart part = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_CONTENT_PART_ADDED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getLong(); + } else if ("part".equals(fieldName)) { + part = RealtimeServerEventResponseContentPartAddedPart.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseContentPartAdded deserializedRealtimeServerEventResponseContentPartAdded + = new RealtimeServerEventResponseContentPartAdded(eventId, responseId, itemId, outputIndex, + contentIndex, part); + deserializedRealtimeServerEventResponseContentPartAdded.type = type; + return deserializedRealtimeServerEventResponseContentPartAdded; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAddedPart.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAddedPart.java new file mode 100644 index 0000000000000..4ba0919035f5b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAddedPart.java @@ -0,0 +1,138 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeServerEventResponseContentPartAddedPart model. + */ +@Immutable +public final class RealtimeServerEventResponseContentPartAddedPart + implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventResponseContentPartAddedPartType type; + + /* + * The text property. + */ + @Generated + private String text; + + /* + * The audio property. + */ + @Generated + private String audio; + + /* + * The transcript property. + */ + @Generated + private String transcript; + + /** + * Creates an instance of RealtimeServerEventResponseContentPartAddedPart class. + */ + @Generated + private RealtimeServerEventResponseContentPartAddedPart() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public RealtimeServerEventResponseContentPartAddedPartType getType() { + return this.type; + } + + /** + * Get the text property: The text property. + * + * @return the text value. + */ + @Generated + public String getText() { + return this.text; + } + + /** + * Get the audio property: The audio property. + * + * @return the audio value. + */ + @Generated + public String getAudio() { + return this.audio; + } + + /** + * Get the transcript property: The transcript property. + * + * @return the transcript value. + */ + @Generated + public String getTranscript() { + return this.transcript; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("text", this.text); + jsonWriter.writeStringField("audio", this.audio); + jsonWriter.writeStringField("transcript", this.transcript); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseContentPartAddedPart from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseContentPartAddedPart if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseContentPartAddedPart. + */ + @Generated + public static RealtimeServerEventResponseContentPartAddedPart fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeServerEventResponseContentPartAddedPart deserializedRealtimeServerEventResponseContentPartAddedPart + = new RealtimeServerEventResponseContentPartAddedPart(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeServerEventResponseContentPartAddedPart.type + = RealtimeServerEventResponseContentPartAddedPartType.fromString(reader.getString()); + } else if ("text".equals(fieldName)) { + deserializedRealtimeServerEventResponseContentPartAddedPart.text = reader.getString(); + } else if ("audio".equals(fieldName)) { + deserializedRealtimeServerEventResponseContentPartAddedPart.audio = reader.getString(); + } else if ("transcript".equals(fieldName)) { + deserializedRealtimeServerEventResponseContentPartAddedPart.transcript = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeServerEventResponseContentPartAddedPart; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAddedPartType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAddedPartType.java new file mode 100644 index 0000000000000..ed5899ecf492f --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAddedPartType.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeServerEventResponseContentPartAddedPartType. + */ +public enum RealtimeServerEventResponseContentPartAddedPartType { + /** + * Enum value audio. + */ + AUDIO("audio"), + + /** + * Enum value text. + */ + TEXT("text"); + + /** + * The actual serialized value for a RealtimeServerEventResponseContentPartAddedPartType instance. + */ + private final String value; + + RealtimeServerEventResponseContentPartAddedPartType(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeServerEventResponseContentPartAddedPartType instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeServerEventResponseContentPartAddedPartType object, or null if unable to parse. + */ + public static RealtimeServerEventResponseContentPartAddedPartType fromString(String value) { + if (value == null) { + return null; + } + RealtimeServerEventResponseContentPartAddedPartType[] items + = RealtimeServerEventResponseContentPartAddedPartType.values(); + for (RealtimeServerEventResponseContentPartAddedPartType item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDone.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDone.java new file mode 100644 index 0000000000000..0c6d78781251a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDone.java @@ -0,0 +1,218 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when a content part is done streaming in an assistant message item. + * Also emitted when a Response is interrupted, incomplete, or cancelled. + */ +@Immutable +public final class RealtimeServerEventResponseContentPartDone extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_CONTENT_PART_DONE; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the response. + */ + @Generated + private final String responseId; + + /* + * The ID of the item. + */ + @Generated + private final String itemId; + + /* + * The index of the output item in the response. + */ + @Generated + private final long outputIndex; + + /* + * The index of the content part in the item's content array. + */ + @Generated + private final long contentIndex; + + /* + * The content part that is done. + */ + @Generated + private final RealtimeServerEventResponseContentPartDonePart part; + + /** + * Creates an instance of RealtimeServerEventResponseContentPartDone class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param contentIndex the contentIndex value to set. + * @param part the part value to set. + */ + @Generated + private RealtimeServerEventResponseContentPartDone(String eventId, String responseId, String itemId, + long outputIndex, long contentIndex, RealtimeServerEventResponseContentPartDonePart part) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.contentIndex = contentIndex; + this.part = part; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The ID of the response. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The ID of the item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The index of the output item in the response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the contentIndex property: The index of the content part in the item's content array. + * + * @return the contentIndex value. + */ + @Generated + public long getContentIndex() { + return this.contentIndex; + } + + /** + * Get the part property: The content part that is done. + * + * @return the part value. + */ + @Generated + public RealtimeServerEventResponseContentPartDonePart getPart() { + return this.part; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeLongField("content_index", this.contentIndex); + jsonWriter.writeJsonField("part", this.part); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseContentPartDone from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseContentPartDone if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseContentPartDone. + */ + @Generated + public static RealtimeServerEventResponseContentPartDone fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + long outputIndex = 0L; + long contentIndex = 0L; + RealtimeServerEventResponseContentPartDonePart part = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_CONTENT_PART_DONE; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getLong(); + } else if ("part".equals(fieldName)) { + part = RealtimeServerEventResponseContentPartDonePart.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseContentPartDone deserializedRealtimeServerEventResponseContentPartDone + = new RealtimeServerEventResponseContentPartDone(eventId, responseId, itemId, outputIndex, contentIndex, + part); + deserializedRealtimeServerEventResponseContentPartDone.type = type; + return deserializedRealtimeServerEventResponseContentPartDone; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDonePart.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDonePart.java new file mode 100644 index 0000000000000..50020f30b86a9 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDonePart.java @@ -0,0 +1,158 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeServerEventResponseContentPartDonePart model. + */ +@Immutable +public final class RealtimeServerEventResponseContentPartDonePart + implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventResponseContentPartDonePartType type; + + /* + * The text property. + */ + @Generated + private String text; + + /* + * The audio property. + */ + @Generated + private String audio; + + /* + * The transcript property. + */ + @Generated + private String transcript; + + /* + * The audio format, when this is an audio content part. + */ + @Generated + private RealtimeAudioFormats format; + + /** + * Creates an instance of RealtimeServerEventResponseContentPartDonePart class. + */ + @Generated + private RealtimeServerEventResponseContentPartDonePart() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public RealtimeServerEventResponseContentPartDonePartType getType() { + return this.type; + } + + /** + * Get the text property: The text property. + * + * @return the text value. + */ + @Generated + public String getText() { + return this.text; + } + + /** + * Get the audio property: The audio property. + * + * @return the audio value. + */ + @Generated + public String getAudio() { + return this.audio; + } + + /** + * Get the transcript property: The transcript property. + * + * @return the transcript value. + */ + @Generated + public String getTranscript() { + return this.transcript; + } + + /** + * Get the format property: The audio format, when this is an audio content part. + * + * @return the format value. + */ + @Generated + public RealtimeAudioFormats getFormat() { + return this.format; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("text", this.text); + jsonWriter.writeStringField("audio", this.audio); + jsonWriter.writeStringField("transcript", this.transcript); + jsonWriter.writeJsonField("format", this.format); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseContentPartDonePart from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseContentPartDonePart if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseContentPartDonePart. + */ + @Generated + public static RealtimeServerEventResponseContentPartDonePart fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeServerEventResponseContentPartDonePart deserializedRealtimeServerEventResponseContentPartDonePart + = new RealtimeServerEventResponseContentPartDonePart(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeServerEventResponseContentPartDonePart.type + = RealtimeServerEventResponseContentPartDonePartType.fromString(reader.getString()); + } else if ("text".equals(fieldName)) { + deserializedRealtimeServerEventResponseContentPartDonePart.text = reader.getString(); + } else if ("audio".equals(fieldName)) { + deserializedRealtimeServerEventResponseContentPartDonePart.audio = reader.getString(); + } else if ("transcript".equals(fieldName)) { + deserializedRealtimeServerEventResponseContentPartDonePart.transcript = reader.getString(); + } else if ("format".equals(fieldName)) { + deserializedRealtimeServerEventResponseContentPartDonePart.format + = RealtimeAudioFormats.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeServerEventResponseContentPartDonePart; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDonePartType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDonePartType.java new file mode 100644 index 0000000000000..1aafca4076aa7 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDonePartType.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeServerEventResponseContentPartDonePartType. + */ +public enum RealtimeServerEventResponseContentPartDonePartType { + /** + * Enum value audio. + */ + AUDIO("audio"), + + /** + * Enum value text. + */ + TEXT("text"); + + /** + * The actual serialized value for a RealtimeServerEventResponseContentPartDonePartType instance. + */ + private final String value; + + RealtimeServerEventResponseContentPartDonePartType(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeServerEventResponseContentPartDonePartType instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeServerEventResponseContentPartDonePartType object, or null if unable to parse. + */ + public static RealtimeServerEventResponseContentPartDonePartType fromString(String value) { + if (value == null) { + return null; + } + RealtimeServerEventResponseContentPartDonePartType[] items + = RealtimeServerEventResponseContentPartDonePartType.values(); + for (RealtimeServerEventResponseContentPartDonePartType item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseCreated.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseCreated.java new file mode 100644 index 0000000000000..569b254deaa03 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseCreated.java @@ -0,0 +1,128 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when a new Response is created. The first event of response creation, + * where the response is in an initial state of `in_progress`. + */ +@Immutable +public final class RealtimeServerEventResponseCreated extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_CREATED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The response property. + */ + @Generated + private final VoiceAgentRealtimeResponse response; + + /** + * Creates an instance of RealtimeServerEventResponseCreated class. + * + * @param eventId the eventId value to set. + * @param response the response value to set. + */ + @Generated + private RealtimeServerEventResponseCreated(String eventId, VoiceAgentRealtimeResponse response) { + this.eventId = eventId; + this.response = response; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the response property: The response property. + * + * @return the response value. + */ + @Generated + public VoiceAgentRealtimeResponse getResponse() { + return this.response; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeJsonField("response", this.response); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseCreated from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseCreated if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseCreated. + */ + @Generated + public static RealtimeServerEventResponseCreated fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + VoiceAgentRealtimeResponse response = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_CREATED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response".equals(fieldName)) { + response = VoiceAgentRealtimeResponse.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseCreated deserializedRealtimeServerEventResponseCreated + = new RealtimeServerEventResponseCreated(eventId, response); + deserializedRealtimeServerEventResponseCreated.type = type; + return deserializedRealtimeServerEventResponseCreated; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseDone.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseDone.java new file mode 100644 index 0000000000000..a2f9304055fab --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseDone.java @@ -0,0 +1,133 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when a Response is done streaming. Always emitted, no matter the + * final state. The Response object included in the `response.done` event will + * include all output Items in the Response but will omit the raw audio data. + * Clients should check the `status` field of the Response to determine if it was successful + * (`completed`) or if there was another outcome: `cancelled`, `failed`, or `incomplete`. + * A response will contain all output items that were generated during the response, excluding + * any audio content. + */ +@Immutable +public final class RealtimeServerEventResponseDone extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_DONE; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The response property. + */ + @Generated + private final VoiceAgentRealtimeResponse response; + + /** + * Creates an instance of RealtimeServerEventResponseDone class. + * + * @param eventId the eventId value to set. + * @param response the response value to set. + */ + @Generated + private RealtimeServerEventResponseDone(String eventId, VoiceAgentRealtimeResponse response) { + this.eventId = eventId; + this.response = response; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the response property: The response property. + * + * @return the response value. + */ + @Generated + public VoiceAgentRealtimeResponse getResponse() { + return this.response; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeJsonField("response", this.response); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseDone from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseDone if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseDone. + */ + @Generated + public static RealtimeServerEventResponseDone fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + VoiceAgentRealtimeResponse response = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_DONE; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response".equals(fieldName)) { + response = VoiceAgentRealtimeResponse.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseDone deserializedRealtimeServerEventResponseDone + = new RealtimeServerEventResponseDone(eventId, response); + deserializedRealtimeServerEventResponseDone.type = type; + return deserializedRealtimeServerEventResponseDone; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseFunctionCallArgumentsDelta.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseFunctionCallArgumentsDelta.java new file mode 100644 index 0000000000000..ea149b755b9d7 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseFunctionCallArgumentsDelta.java @@ -0,0 +1,218 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when the model-generated function call arguments are updated. + */ +@Immutable +public final class RealtimeServerEventResponseFunctionCallArgumentsDelta extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the response. + */ + @Generated + private final String responseId; + + /* + * The ID of the function call item. + */ + @Generated + private final String itemId; + + /* + * The index of the output item in the response. + */ + @Generated + private final long outputIndex; + + /* + * The ID of the function call. + */ + @Generated + private final String callId; + + /* + * The arguments delta as a JSON string. + */ + @Generated + private final String delta; + + /** + * Creates an instance of RealtimeServerEventResponseFunctionCallArgumentsDelta class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param callId the callId value to set. + * @param delta the delta value to set. + */ + @Generated + private RealtimeServerEventResponseFunctionCallArgumentsDelta(String eventId, String responseId, String itemId, + long outputIndex, String callId, String delta) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.callId = callId; + this.delta = delta; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The ID of the response. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The ID of the function call item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The index of the output item in the response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the callId property: The ID of the function call. + * + * @return the callId value. + */ + @Generated + public String getCallId() { + return this.callId; + } + + /** + * Get the delta property: The arguments delta as a JSON string. + * + * @return the delta value. + */ + @Generated + public String getDelta() { + return this.delta; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeStringField("call_id", this.callId); + jsonWriter.writeStringField("delta", this.delta); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseFunctionCallArgumentsDelta from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseFunctionCallArgumentsDelta if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseFunctionCallArgumentsDelta. + */ + @Generated + public static RealtimeServerEventResponseFunctionCallArgumentsDelta fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + long outputIndex = 0L; + String callId = null; + String delta = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("call_id".equals(fieldName)) { + callId = reader.getString(); + } else if ("delta".equals(fieldName)) { + delta = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseFunctionCallArgumentsDelta deserializedRealtimeServerEventResponseFunctionCallArgumentsDelta + = new RealtimeServerEventResponseFunctionCallArgumentsDelta(eventId, responseId, itemId, outputIndex, + callId, delta); + deserializedRealtimeServerEventResponseFunctionCallArgumentsDelta.type = type; + return deserializedRealtimeServerEventResponseFunctionCallArgumentsDelta; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseFunctionCallArgumentsDone.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseFunctionCallArgumentsDone.java new file mode 100644 index 0000000000000..1c52f5c67bb27 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseFunctionCallArgumentsDone.java @@ -0,0 +1,241 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when the model-generated function call arguments are done streaming. + * Also emitted when a Response is interrupted, incomplete, or cancelled. + */ +@Immutable +public final class RealtimeServerEventResponseFunctionCallArgumentsDone extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the response. + */ + @Generated + private final String responseId; + + /* + * The ID of the function call item. + */ + @Generated + private final String itemId; + + /* + * The index of the output item in the response. + */ + @Generated + private final long outputIndex; + + /* + * The ID of the function call. + */ + @Generated + private final String callId; + + /* + * The name of the function that was called. + */ + @Generated + private final String name; + + /* + * The final arguments as a JSON string. + */ + @Generated + private final String arguments; + + /** + * Creates an instance of RealtimeServerEventResponseFunctionCallArgumentsDone class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param callId the callId value to set. + * @param name the name value to set. + * @param arguments the arguments value to set. + */ + @Generated + private RealtimeServerEventResponseFunctionCallArgumentsDone(String eventId, String responseId, String itemId, + long outputIndex, String callId, String name, String arguments) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.callId = callId; + this.name = name; + this.arguments = arguments; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The ID of the response. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The ID of the function call item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The index of the output item in the response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the callId property: The ID of the function call. + * + * @return the callId value. + */ + @Generated + public String getCallId() { + return this.callId; + } + + /** + * Get the name property: The name of the function that was called. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * Get the arguments property: The final arguments as a JSON string. + * + * @return the arguments value. + */ + @Generated + public String getArguments() { + return this.arguments; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeStringField("call_id", this.callId); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeStringField("arguments", this.arguments); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseFunctionCallArgumentsDone from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseFunctionCallArgumentsDone if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseFunctionCallArgumentsDone. + */ + @Generated + public static RealtimeServerEventResponseFunctionCallArgumentsDone fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + long outputIndex = 0L; + String callId = null; + String name = null; + String arguments = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("call_id".equals(fieldName)) { + callId = reader.getString(); + } else if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("arguments".equals(fieldName)) { + arguments = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseFunctionCallArgumentsDone deserializedRealtimeServerEventResponseFunctionCallArgumentsDone + = new RealtimeServerEventResponseFunctionCallArgumentsDone(eventId, responseId, itemId, outputIndex, + callId, name, arguments); + deserializedRealtimeServerEventResponseFunctionCallArgumentsDone.type = type; + return deserializedRealtimeServerEventResponseFunctionCallArgumentsDone; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallArgumentsDelta.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallArgumentsDelta.java new file mode 100644 index 0000000000000..f5cc8c9ae1c94 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallArgumentsDelta.java @@ -0,0 +1,215 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when MCP tool call arguments are updated during response generation. + */ +@Immutable +public final class RealtimeServerEventResponseMCPCallArgumentsDelta extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_MCP_CALL_ARGUMENTS_DELTA; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the response. + */ + @Generated + private final String responseId; + + /* + * The ID of the MCP tool call item. + */ + @Generated + private final String itemId; + + /* + * The index of the output item in the response. + */ + @Generated + private final long outputIndex; + + /* + * The JSON-encoded arguments delta. + */ + @Generated + private final String delta; + + /* + * The obfuscation property. + */ + @Generated + private String obfuscation; + + /** + * Creates an instance of RealtimeServerEventResponseMCPCallArgumentsDelta class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param delta the delta value to set. + */ + @Generated + private RealtimeServerEventResponseMCPCallArgumentsDelta(String eventId, String responseId, String itemId, + long outputIndex, String delta) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.delta = delta; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The ID of the response. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The ID of the MCP tool call item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The index of the output item in the response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the delta property: The JSON-encoded arguments delta. + * + * @return the delta value. + */ + @Generated + public String getDelta() { + return this.delta; + } + + /** + * Get the obfuscation property: The obfuscation property. + * + * @return the obfuscation value. + */ + @Generated + public String getObfuscation() { + return this.obfuscation; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeStringField("delta", this.delta); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("obfuscation", this.obfuscation); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseMCPCallArgumentsDelta from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseMCPCallArgumentsDelta if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseMCPCallArgumentsDelta. + */ + @Generated + public static RealtimeServerEventResponseMCPCallArgumentsDelta fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + long outputIndex = 0L; + String delta = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_MCP_CALL_ARGUMENTS_DELTA; + String obfuscation = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("delta".equals(fieldName)) { + delta = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else if ("obfuscation".equals(fieldName)) { + obfuscation = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseMCPCallArgumentsDelta deserializedRealtimeServerEventResponseMCPCallArgumentsDelta + = new RealtimeServerEventResponseMCPCallArgumentsDelta(eventId, responseId, itemId, outputIndex, delta); + deserializedRealtimeServerEventResponseMCPCallArgumentsDelta.type = type; + deserializedRealtimeServerEventResponseMCPCallArgumentsDelta.obfuscation = obfuscation; + return deserializedRealtimeServerEventResponseMCPCallArgumentsDelta; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallArgumentsDone.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallArgumentsDone.java new file mode 100644 index 0000000000000..8c9e1c6733416 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallArgumentsDone.java @@ -0,0 +1,195 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when MCP tool call arguments are finalized during response generation. + */ +@Immutable +public final class RealtimeServerEventResponseMCPCallArgumentsDone extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_MCP_CALL_ARGUMENTS_DONE; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the response. + */ + @Generated + private final String responseId; + + /* + * The ID of the MCP tool call item. + */ + @Generated + private final String itemId; + + /* + * The index of the output item in the response. + */ + @Generated + private final long outputIndex; + + /* + * The final JSON-encoded arguments string. + */ + @Generated + private final String arguments; + + /** + * Creates an instance of RealtimeServerEventResponseMCPCallArgumentsDone class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param arguments the arguments value to set. + */ + @Generated + private RealtimeServerEventResponseMCPCallArgumentsDone(String eventId, String responseId, String itemId, + long outputIndex, String arguments) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.arguments = arguments; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The ID of the response. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The ID of the MCP tool call item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The index of the output item in the response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the arguments property: The final JSON-encoded arguments string. + * + * @return the arguments value. + */ + @Generated + public String getArguments() { + return this.arguments; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeStringField("arguments", this.arguments); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseMCPCallArgumentsDone from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseMCPCallArgumentsDone if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseMCPCallArgumentsDone. + */ + @Generated + public static RealtimeServerEventResponseMCPCallArgumentsDone fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + long outputIndex = 0L; + String arguments = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_MCP_CALL_ARGUMENTS_DONE; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("arguments".equals(fieldName)) { + arguments = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseMCPCallArgumentsDone deserializedRealtimeServerEventResponseMCPCallArgumentsDone + = new RealtimeServerEventResponseMCPCallArgumentsDone(eventId, responseId, itemId, outputIndex, + arguments); + deserializedRealtimeServerEventResponseMCPCallArgumentsDone.type = type; + return deserializedRealtimeServerEventResponseMCPCallArgumentsDone; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallCompleted.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallCompleted.java new file mode 100644 index 0000000000000..889a36b2c1941 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallCompleted.java @@ -0,0 +1,149 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when an MCP tool call has completed successfully. + */ +@Immutable +public final class RealtimeServerEventResponseMCPCallCompleted extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_MCP_CALL_COMPLETED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The index of the output item in the response. + */ + @Generated + private final long outputIndex; + + /* + * The ID of the MCP tool call item. + */ + @Generated + private final String itemId; + + /** + * Creates an instance of RealtimeServerEventResponseMCPCallCompleted class. + * + * @param eventId the eventId value to set. + * @param outputIndex the outputIndex value to set. + * @param itemId the itemId value to set. + */ + @Generated + private RealtimeServerEventResponseMCPCallCompleted(String eventId, long outputIndex, String itemId) { + this.eventId = eventId; + this.outputIndex = outputIndex; + this.itemId = itemId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the outputIndex property: The index of the output item in the response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the itemId property: The ID of the MCP tool call item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseMCPCallCompleted from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseMCPCallCompleted if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseMCPCallCompleted. + */ + @Generated + public static RealtimeServerEventResponseMCPCallCompleted fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + long outputIndex = 0L; + String itemId = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_MCP_CALL_COMPLETED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseMCPCallCompleted deserializedRealtimeServerEventResponseMCPCallCompleted + = new RealtimeServerEventResponseMCPCallCompleted(eventId, outputIndex, itemId); + deserializedRealtimeServerEventResponseMCPCallCompleted.type = type; + return deserializedRealtimeServerEventResponseMCPCallCompleted; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallFailed.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallFailed.java new file mode 100644 index 0000000000000..502d7cfe2db35 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallFailed.java @@ -0,0 +1,149 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when an MCP tool call has failed. + */ +@Immutable +public final class RealtimeServerEventResponseMCPCallFailed extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_MCP_CALL_FAILED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The index of the output item in the response. + */ + @Generated + private final long outputIndex; + + /* + * The ID of the MCP tool call item. + */ + @Generated + private final String itemId; + + /** + * Creates an instance of RealtimeServerEventResponseMCPCallFailed class. + * + * @param eventId the eventId value to set. + * @param outputIndex the outputIndex value to set. + * @param itemId the itemId value to set. + */ + @Generated + private RealtimeServerEventResponseMCPCallFailed(String eventId, long outputIndex, String itemId) { + this.eventId = eventId; + this.outputIndex = outputIndex; + this.itemId = itemId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the outputIndex property: The index of the output item in the response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the itemId property: The ID of the MCP tool call item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseMCPCallFailed from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseMCPCallFailed if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseMCPCallFailed. + */ + @Generated + public static RealtimeServerEventResponseMCPCallFailed fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + long outputIndex = 0L; + String itemId = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_MCP_CALL_FAILED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseMCPCallFailed deserializedRealtimeServerEventResponseMCPCallFailed + = new RealtimeServerEventResponseMCPCallFailed(eventId, outputIndex, itemId); + deserializedRealtimeServerEventResponseMCPCallFailed.type = type; + return deserializedRealtimeServerEventResponseMCPCallFailed; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallInProgress.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallInProgress.java new file mode 100644 index 0000000000000..d50a0e6a8f782 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallInProgress.java @@ -0,0 +1,149 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when an MCP tool call has started and is in progress. + */ +@Immutable +public final class RealtimeServerEventResponseMCPCallInProgress extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_MCP_CALL_IN_PROGRESS; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The index of the output item in the response. + */ + @Generated + private final long outputIndex; + + /* + * The ID of the MCP tool call item. + */ + @Generated + private final String itemId; + + /** + * Creates an instance of RealtimeServerEventResponseMCPCallInProgress class. + * + * @param eventId the eventId value to set. + * @param outputIndex the outputIndex value to set. + * @param itemId the itemId value to set. + */ + @Generated + private RealtimeServerEventResponseMCPCallInProgress(String eventId, long outputIndex, String itemId) { + this.eventId = eventId; + this.outputIndex = outputIndex; + this.itemId = itemId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the outputIndex property: The index of the output item in the response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the itemId property: The ID of the MCP tool call item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseMCPCallInProgress from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseMCPCallInProgress if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseMCPCallInProgress. + */ + @Generated + public static RealtimeServerEventResponseMCPCallInProgress fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + long outputIndex = 0L; + String itemId = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_MCP_CALL_IN_PROGRESS; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseMCPCallInProgress deserializedRealtimeServerEventResponseMCPCallInProgress + = new RealtimeServerEventResponseMCPCallInProgress(eventId, outputIndex, itemId); + deserializedRealtimeServerEventResponseMCPCallInProgress.type = type; + return deserializedRealtimeServerEventResponseMCPCallInProgress; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseOutputItemAdded.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseOutputItemAdded.java new file mode 100644 index 0000000000000..acf9a53a1f6db --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseOutputItemAdded.java @@ -0,0 +1,172 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when a new Item is created during Response generation. + */ +@Immutable +public final class RealtimeServerEventResponseOutputItemAdded extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_ITEM_ADDED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the Response to which the item belongs. + */ + @Generated + private final String responseId; + + /* + * The index of the output item in the Response. + */ + @Generated + private final long outputIndex; + + /* + * The item property. + */ + @Generated + private final RealtimeConversationItem item; + + /** + * Creates an instance of RealtimeServerEventResponseOutputItemAdded class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param outputIndex the outputIndex value to set. + * @param item the item value to set. + */ + @Generated + private RealtimeServerEventResponseOutputItemAdded(String eventId, String responseId, long outputIndex, + RealtimeConversationItem item) { + this.eventId = eventId; + this.responseId = responseId; + this.outputIndex = outputIndex; + this.item = item; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The ID of the Response to which the item belongs. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the outputIndex property: The index of the output item in the Response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the item property: The item property. + * + * @return the item value. + */ + @Generated + public RealtimeConversationItem getItem() { + return this.item; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeJsonField("item", this.item); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseOutputItemAdded from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseOutputItemAdded if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseOutputItemAdded. + */ + @Generated + public static RealtimeServerEventResponseOutputItemAdded fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + long outputIndex = 0L; + RealtimeConversationItem item = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_ITEM_ADDED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("item".equals(fieldName)) { + item = RealtimeConversationItem.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseOutputItemAdded deserializedRealtimeServerEventResponseOutputItemAdded + = new RealtimeServerEventResponseOutputItemAdded(eventId, responseId, outputIndex, item); + deserializedRealtimeServerEventResponseOutputItemAdded.type = type; + return deserializedRealtimeServerEventResponseOutputItemAdded; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseOutputItemDone.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseOutputItemDone.java new file mode 100644 index 0000000000000..c38a91ff84f57 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseOutputItemDone.java @@ -0,0 +1,173 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when an Item is done streaming. Also emitted when a Response is + * interrupted, incomplete, or cancelled. + */ +@Immutable +public final class RealtimeServerEventResponseOutputItemDone extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_ITEM_DONE; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the Response to which the item belongs. + */ + @Generated + private final String responseId; + + /* + * The index of the output item in the Response. + */ + @Generated + private final long outputIndex; + + /* + * The item property. + */ + @Generated + private final RealtimeConversationItem item; + + /** + * Creates an instance of RealtimeServerEventResponseOutputItemDone class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param outputIndex the outputIndex value to set. + * @param item the item value to set. + */ + @Generated + private RealtimeServerEventResponseOutputItemDone(String eventId, String responseId, long outputIndex, + RealtimeConversationItem item) { + this.eventId = eventId; + this.responseId = responseId; + this.outputIndex = outputIndex; + this.item = item; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The ID of the Response to which the item belongs. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the outputIndex property: The index of the output item in the Response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the item property: The item property. + * + * @return the item value. + */ + @Generated + public RealtimeConversationItem getItem() { + return this.item; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeJsonField("item", this.item); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseOutputItemDone from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseOutputItemDone if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseOutputItemDone. + */ + @Generated + public static RealtimeServerEventResponseOutputItemDone fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + long outputIndex = 0L; + RealtimeConversationItem item = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_ITEM_DONE; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("item".equals(fieldName)) { + item = RealtimeConversationItem.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseOutputItemDone deserializedRealtimeServerEventResponseOutputItemDone + = new RealtimeServerEventResponseOutputItemDone(eventId, responseId, outputIndex, item); + deserializedRealtimeServerEventResponseOutputItemDone.type = type; + return deserializedRealtimeServerEventResponseOutputItemDone; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseTextDelta.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseTextDelta.java new file mode 100644 index 0000000000000..cb1629a311178 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseTextDelta.java @@ -0,0 +1,217 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when the text value of an "output_text" content part is updated. + */ +@Immutable +public final class RealtimeServerEventResponseTextDelta extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_TEXT_DELTA; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the response. + */ + @Generated + private final String responseId; + + /* + * The ID of the item. + */ + @Generated + private final String itemId; + + /* + * The index of the output item in the response. + */ + @Generated + private final long outputIndex; + + /* + * The index of the content part in the item's content array. + */ + @Generated + private final long contentIndex; + + /* + * The text delta. + */ + @Generated + private final String delta; + + /** + * Creates an instance of RealtimeServerEventResponseTextDelta class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param contentIndex the contentIndex value to set. + * @param delta the delta value to set. + */ + @Generated + private RealtimeServerEventResponseTextDelta(String eventId, String responseId, String itemId, long outputIndex, + long contentIndex, String delta) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.contentIndex = contentIndex; + this.delta = delta; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The ID of the response. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The ID of the item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The index of the output item in the response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the contentIndex property: The index of the content part in the item's content array. + * + * @return the contentIndex value. + */ + @Generated + public long getContentIndex() { + return this.contentIndex; + } + + /** + * Get the delta property: The text delta. + * + * @return the delta value. + */ + @Generated + public String getDelta() { + return this.delta; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeLongField("content_index", this.contentIndex); + jsonWriter.writeStringField("delta", this.delta); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseTextDelta from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseTextDelta if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseTextDelta. + */ + @Generated + public static RealtimeServerEventResponseTextDelta fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + long outputIndex = 0L; + long contentIndex = 0L; + String delta = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_TEXT_DELTA; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getLong(); + } else if ("delta".equals(fieldName)) { + delta = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseTextDelta deserializedRealtimeServerEventResponseTextDelta + = new RealtimeServerEventResponseTextDelta(eventId, responseId, itemId, outputIndex, contentIndex, + delta); + deserializedRealtimeServerEventResponseTextDelta.type = type; + return deserializedRealtimeServerEventResponseTextDelta; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseTextDone.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseTextDone.java new file mode 100644 index 0000000000000..d78dd26c3ee88 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseTextDone.java @@ -0,0 +1,217 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when the text value of an "output_text" content part is done streaming. Also + * emitted when a Response is interrupted, incomplete, or cancelled. + */ +@Immutable +public final class RealtimeServerEventResponseTextDone extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_TEXT_DONE; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The ID of the response. + */ + @Generated + private final String responseId; + + /* + * The ID of the item. + */ + @Generated + private final String itemId; + + /* + * The index of the output item in the response. + */ + @Generated + private final long outputIndex; + + /* + * The index of the content part in the item's content array. + */ + @Generated + private final long contentIndex; + + /* + * The final text content. + */ + @Generated + private final String text; + + /** + * Creates an instance of RealtimeServerEventResponseTextDone class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param contentIndex the contentIndex value to set. + * @param text the text value to set. + */ + @Generated + private RealtimeServerEventResponseTextDone(String eventId, String responseId, String itemId, long outputIndex, + long contentIndex, String text) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.contentIndex = contentIndex; + this.text = text; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The ID of the response. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The ID of the item. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The index of the output item in the response. + * + * @return the outputIndex value. + */ + @Generated + public long getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the contentIndex property: The index of the content part in the item's content array. + * + * @return the contentIndex value. + */ + @Generated + public long getContentIndex() { + return this.contentIndex; + } + + /** + * Get the text property: The final text content. + * + * @return the text value. + */ + @Generated + public String getText() { + return this.text; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeLongField("output_index", this.outputIndex); + jsonWriter.writeLongField("content_index", this.contentIndex); + jsonWriter.writeStringField("text", this.text); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventResponseTextDone from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventResponseTextDone if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventResponseTextDone. + */ + @Generated + public static RealtimeServerEventResponseTextDone fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + long outputIndex = 0L; + long contentIndex = 0L; + String text = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_OUTPUT_TEXT_DONE; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getLong(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getLong(); + } else if ("text".equals(fieldName)) { + text = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventResponseTextDone deserializedRealtimeServerEventResponseTextDone + = new RealtimeServerEventResponseTextDone(eventId, responseId, itemId, outputIndex, contentIndex, text); + deserializedRealtimeServerEventResponseTextDone.type = type; + return deserializedRealtimeServerEventResponseTextDone; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventSessionCreated.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventSessionCreated.java new file mode 100644 index 0000000000000..1194f8ce7b698 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventSessionCreated.java @@ -0,0 +1,154 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when a Session is created. Emitted automatically when a new + * connection is established as the first server event. This event will contain + * the default Session configuration. + */ +@Immutable +public final class RealtimeServerEventSessionCreated extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.SESSION_CREATED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The session configuration. + */ + @Generated + private final BinaryData session; + + /* + * The session-scoped conversation id. When present, responses attached to the session conversation use the same + * value in `response.created` and `response.done`. + */ + @Generated + private String conversationId; + + /** + * Creates an instance of RealtimeServerEventSessionCreated class. + * + * @param eventId the eventId value to set. + * @param session the session value to set. + */ + @Generated + private RealtimeServerEventSessionCreated(String eventId, BinaryData session) { + this.eventId = eventId; + this.session = session; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the session property: The session configuration. + * + * @return the session value. + */ + @Generated + public BinaryData getSession() { + return this.session; + } + + /** + * Get the conversationId property: The session-scoped conversation id. When present, responses attached to the + * session conversation use the same value in `response.created` and `response.done`. + * + * @return the conversationId value. + */ + @Generated + public String getConversationId() { + return this.conversationId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeFieldName("session"); + this.session.writeTo(jsonWriter); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("conversation_id", this.conversationId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventSessionCreated from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventSessionCreated if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventSessionCreated. + */ + @Generated + public static RealtimeServerEventSessionCreated fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + BinaryData session = null; + RealtimeServerEventType type = RealtimeServerEventType.SESSION_CREATED; + String conversationId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("session".equals(fieldName)) { + session = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else if ("conversation_id".equals(fieldName)) { + conversationId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventSessionCreated deserializedRealtimeServerEventSessionCreated + = new RealtimeServerEventSessionCreated(eventId, session); + deserializedRealtimeServerEventSessionCreated.type = type; + deserializedRealtimeServerEventSessionCreated.conversationId = conversationId; + return deserializedRealtimeServerEventSessionCreated; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventSessionUpdated.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventSessionUpdated.java new file mode 100644 index 0000000000000..da93e24c7c8e3 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventSessionUpdated.java @@ -0,0 +1,130 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Returned when a session is updated with a `session.update` event, unless + * there is an error. + */ +@Immutable +public final class RealtimeServerEventSessionUpdated extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.SESSION_UPDATED; + + /* + * The unique ID of the server event. + */ + @Generated + private final String eventId; + + /* + * The session configuration. + */ + @Generated + private final BinaryData session; + + /** + * Creates an instance of RealtimeServerEventSessionUpdated class. + * + * @param eventId the eventId value to set. + * @param session the session value to set. + */ + @Generated + private RealtimeServerEventSessionUpdated(String eventId, BinaryData session) { + this.eventId = eventId; + this.session = session; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The unique ID of the server event. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the session property: The session configuration. + * + * @return the session value. + */ + @Generated + public BinaryData getSession() { + return this.session; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeFieldName("session"); + this.session.writeTo(jsonWriter); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeServerEventSessionUpdated from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeServerEventSessionUpdated if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeServerEventSessionUpdated. + */ + @Generated + public static RealtimeServerEventSessionUpdated fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + BinaryData session = null; + RealtimeServerEventType type = RealtimeServerEventType.SESSION_UPDATED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("session".equals(fieldName)) { + session = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeServerEventSessionUpdated deserializedRealtimeServerEventSessionUpdated + = new RealtimeServerEventSessionUpdated(eventId, session); + deserializedRealtimeServerEventSessionUpdated.type = type; + return deserializedRealtimeServerEventSessionUpdated; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventType.java new file mode 100644 index 0000000000000..16bbe9825b7c2 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeServerEventType.java @@ -0,0 +1,441 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Defines values for RealtimeServerEventType. + */ +public final class RealtimeServerEventType extends ExpandableStringEnum { + + /** + * Static value conversation.created for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType CONVERSATION_CREATED = fromString("conversation.created"); + + /** + * Static value conversation.item.created for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType CONVERSATION_ITEM_CREATED = fromString("conversation.item.created"); + + /** + * Static value conversation.item.deleted for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType CONVERSATION_ITEM_DELETED = fromString("conversation.item.deleted"); + + /** + * Static value conversation.item.input_audio_transcription.completed for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_COMPLETED + = fromString("conversation.item.input_audio_transcription.completed"); + + /** + * Static value conversation.item.input_audio_transcription.delta for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_DELTA + = fromString("conversation.item.input_audio_transcription.delta"); + + /** + * Static value conversation.item.input_audio_transcription.failed for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_FAILED + = fromString("conversation.item.input_audio_transcription.failed"); + + /** + * Static value conversation.item.retrieved for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType CONVERSATION_ITEM_RETRIEVED = fromString("conversation.item.retrieved"); + + /** + * Static value conversation.item.truncated for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType CONVERSATION_ITEM_TRUNCATED = fromString("conversation.item.truncated"); + + /** + * Static value error for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType ERROR = fromString("error"); + + /** + * Static value input_audio_buffer.cleared for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType INPUT_AUDIO_BUFFER_CLEARED = fromString("input_audio_buffer.cleared"); + + /** + * Static value input_audio_buffer.committed for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType INPUT_AUDIO_BUFFER_COMMITTED + = fromString("input_audio_buffer.committed"); + + /** + * Static value input_audio_buffer.dtmf_event_received for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType INPUT_AUDIO_BUFFER_DTMF_EVENT_RECEIVED + = fromString("input_audio_buffer.dtmf_event_received"); + + /** + * Static value input_audio_buffer.speech_started for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType INPUT_AUDIO_BUFFER_SPEECH_STARTED + = fromString("input_audio_buffer.speech_started"); + + /** + * Static value input_audio_buffer.speech_stopped for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType INPUT_AUDIO_BUFFER_SPEECH_STOPPED + = fromString("input_audio_buffer.speech_stopped"); + + /** + * Static value rate_limits.updated for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RATE_LIMITS_UPDATED = fromString("rate_limits.updated"); + + /** + * Static value response.output_audio.delta for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_OUTPUT_AUDIO_DELTA = fromString("response.output_audio.delta"); + + /** + * Static value response.output_audio.done for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_OUTPUT_AUDIO_DONE = fromString("response.output_audio.done"); + + /** + * Static value response.output_audio_transcript.delta for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_OUTPUT_AUDIO_TRANSCRIPT_DELTA + = fromString("response.output_audio_transcript.delta"); + + /** + * Static value response.output_audio_transcript.done for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_OUTPUT_AUDIO_TRANSCRIPT_DONE + = fromString("response.output_audio_transcript.done"); + + /** + * Static value response.content_part.added for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_CONTENT_PART_ADDED = fromString("response.content_part.added"); + + /** + * Static value response.content_part.done for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_CONTENT_PART_DONE = fromString("response.content_part.done"); + + /** + * Static value response.created for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_CREATED = fromString("response.created"); + + /** + * Static value response.done for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_DONE = fromString("response.done"); + + /** + * Static value response.function_call_arguments.delta for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_FUNCTION_CALL_ARGUMENTS_DELTA + = fromString("response.function_call_arguments.delta"); + + /** + * Static value response.function_call_arguments.done for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_FUNCTION_CALL_ARGUMENTS_DONE + = fromString("response.function_call_arguments.done"); + + /** + * Static value response.output_item.added for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_OUTPUT_ITEM_ADDED = fromString("response.output_item.added"); + + /** + * Static value response.output_item.done for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_OUTPUT_ITEM_DONE = fromString("response.output_item.done"); + + /** + * Static value response.output_text.delta for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_OUTPUT_TEXT_DELTA = fromString("response.output_text.delta"); + + /** + * Static value response.output_text.done for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_OUTPUT_TEXT_DONE = fromString("response.output_text.done"); + + /** + * Static value session.created for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType SESSION_CREATED = fromString("session.created"); + + /** + * Static value session.updated for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType SESSION_UPDATED = fromString("session.updated"); + + /** + * Static value output_audio_buffer.started for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType OUTPUT_AUDIO_BUFFER_STARTED = fromString("output_audio_buffer.started"); + + /** + * Static value output_audio_buffer.stopped for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType OUTPUT_AUDIO_BUFFER_STOPPED = fromString("output_audio_buffer.stopped"); + + /** + * Static value output_audio_buffer.cleared for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType OUTPUT_AUDIO_BUFFER_CLEARED = fromString("output_audio_buffer.cleared"); + + /** + * Static value conversation.item.added for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType CONVERSATION_ITEM_ADDED = fromString("conversation.item.added"); + + /** + * Static value conversation.item.done for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType CONVERSATION_ITEM_DONE = fromString("conversation.item.done"); + + /** + * Static value input_audio_buffer.timeout_triggered for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType INPUT_AUDIO_BUFFER_TIMEOUT_TRIGGERED + = fromString("input_audio_buffer.timeout_triggered"); + + /** + * Static value conversation.item.input_audio_transcription.segment for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_SEGMENT + = fromString("conversation.item.input_audio_transcription.segment"); + + /** + * Static value mcp_list_tools.in_progress for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType MCP_LIST_TOOLS_IN_PROGRESS = fromString("mcp_list_tools.in_progress"); + + /** + * Static value mcp_list_tools.completed for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType MCP_LIST_TOOLS_COMPLETED = fromString("mcp_list_tools.completed"); + + /** + * Static value mcp_list_tools.failed for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType MCP_LIST_TOOLS_FAILED = fromString("mcp_list_tools.failed"); + + /** + * Static value response.mcp_call_arguments.delta for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_MCP_CALL_ARGUMENTS_DELTA + = fromString("response.mcp_call_arguments.delta"); + + /** + * Static value response.mcp_call_arguments.done for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_MCP_CALL_ARGUMENTS_DONE + = fromString("response.mcp_call_arguments.done"); + + /** + * Static value response.mcp_call.in_progress for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_MCP_CALL_IN_PROGRESS + = fromString("response.mcp_call.in_progress"); + + /** + * Static value response.mcp_call.completed for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_MCP_CALL_COMPLETED = fromString("response.mcp_call.completed"); + + /** + * Static value response.mcp_call.failed for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_MCP_CALL_FAILED = fromString("response.mcp_call.failed"); + + /** + * Static value warning for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType WARNING = fromString("warning"); + + /** + * Static value session.subagent.started for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType SESSION_SUBAGENT_STARTED = fromString("session.subagent.started"); + + /** + * Static value session.subagent.completed for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType SESSION_SUBAGENT_COMPLETED = fromString("session.subagent.completed"); + + /** + * Static value session.subagent.aborted for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType SESSION_SUBAGENT_ABORTED = fromString("session.subagent.aborted"); + + /** + * Static value session.avatar.connecting for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType SESSION_AVATAR_CONNECTING = fromString("session.avatar.connecting"); + + /** + * Static value session.avatar.switch_to_speaking for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType SESSION_AVATAR_SWITCH_TO_SPEAKING + = fromString("session.avatar.switch_to_speaking"); + + /** + * Static value session.avatar.switch_to_idle for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType SESSION_AVATAR_SWITCH_TO_IDLE + = fromString("session.avatar.switch_to_idle"); + + /** + * Static value rtc.call.sdp.created for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RTC_CALL_SDP_CREATED = fromString("rtc.call.sdp.created"); + + /** + * Static value rtc.call.error for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RTC_CALL_ERROR = fromString("rtc.call.error"); + + /** + * Static value response.audio_timestamp.delta for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_AUDIO_TIMESTAMP_DELTA + = fromString("response.audio_timestamp.delta"); + + /** + * Static value response.audio_timestamp.done for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_AUDIO_TIMESTAMP_DONE + = fromString("response.audio_timestamp.done"); + + /** + * Static value response.animation_blendshapes.delta for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_ANIMATION_BLENDSHAPES_DELTA + = fromString("response.animation_blendshapes.delta"); + + /** + * Static value response.animation_blendshapes.done for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_ANIMATION_BLENDSHAPES_DONE + = fromString("response.animation_blendshapes.done"); + + /** + * Static value response.animation_viseme.delta for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_ANIMATION_VISEME_DELTA + = fromString("response.animation_viseme.delta"); + + /** + * Static value response.animation_viseme.done for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_ANIMATION_VISEME_DONE + = fromString("response.animation_viseme.done"); + + /** + * Static value response.video.delta for RealtimeServerEventType. + */ + @Generated + public static final RealtimeServerEventType RESPONSE_VIDEO_DELTA = fromString("response.video.delta"); + + /** + * Creates a new instance of RealtimeServerEventType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public RealtimeServerEventType() { + } + + /** + * Creates or finds a RealtimeServerEventType from its string representation. + * + * @param name a name to look for. + * @return the corresponding RealtimeServerEventType. + */ + @Generated + public static RealtimeServerEventType fromString(String name) { + return fromString(name, RealtimeServerEventType.class); + } + + /** + * Gets known RealtimeServerEventType values. + * + * @return known RealtimeServerEventType values. + */ + @Generated + public static Collection values() { + return values(RealtimeServerEventType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGA.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGA.java new file mode 100644 index 0000000000000..cff16fe396359 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGA.java @@ -0,0 +1,582 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Realtime session configuration + * + * Realtime session object configuration. + */ +@Fluent +public final class RealtimeSessionCreateRequestGA extends RealtimeSessionCreateRequestUnion { + + /* + * The type property. + */ + @Generated + private RealtimeSessionCreateRequestUnionType type = RealtimeSessionCreateRequestUnionType.REALTIME; + + /* + * The set of modalities the model can respond with. It defaults to `["audio"]`, indicating + * that the model will respond with audio plus a transcript. `["text"]` can be used to make + * the model respond with text only. It is not possible to request both `text` and `audio` at the same time. + */ + @Generated + private List outputModalities; + + /* + * The Realtime model used for this session. + */ + @Generated + private RealtimeClientEventSessionUpdateSessionModel model; + + /* + * The default system instructions (i.e. system message) prepended to model calls. This field allows the client to + * guide the model on desired responses. The model can be instructed on response content and format, (e.g. + * "be extremely succinct", "act friendly", "here are examples of good responses") and on audio behavior (e.g. + * "talk quickly", "inject emotion into your voice", "laugh frequently"). The instructions are not guaranteed to be + * followed by the model, but they provide guidance to the model on the desired behavior. + * Note that the server sets default instructions which will be used if this field is not set and are visible in the + * `session.created` event at the start of the session. + */ + @Generated + private String instructions; + + /* + * Configuration for input and output audio. + */ + @Generated + private RealtimeSessionCreateRequestGAAudio audio; + + /* + * Additional fields to include in server outputs. + * `item.input_audio_transcription.logprobs`: Include logprobs for input audio transcription. + */ + @Generated + private List include; + + /* + * Tracing Configuration + * + * Realtime API can write session traces to the [Traces Dashboard](https://platform.openai.com/logs?api=traces). Set + * to null to disable tracing. Once + * tracing is enabled for a session, the configuration cannot be modified. + * `auto` will create a trace for the session with default values for the + * workflow name, group id, and metadata. + */ + @Generated + private BinaryData tracing; + + /* + * Tools available to the model. + */ + @Generated + private List tools; + + /* + * How the model chooses tools. Provide one of the string modes or force a specific + * function/MCP tool. + */ + @Generated + private BinaryData toolChoice; + + /* + * Whether the model may call multiple tools in parallel. Only supported by + * reasoning Realtime models such as `gpt-realtime-2`. + */ + @Generated + private Boolean parallelToolCalls; + + /* + * The reasoning property. + */ + @Generated + private RealtimeReasoning reasoning; + + /* + * Maximum number of output tokens for a single assistant response, + * inclusive of tool calls. Provide an integer between 1 and 4096 to + * limit output tokens, or `inf` for the maximum available tokens for a + * given model. Defaults to `inf`. + */ + @Generated + private BinaryData maxOutputTokens; + + /* + * The truncation property. + */ + @Generated + private BinaryData truncation; + + /* + * The prompt property. + */ + @Generated + private Prompt prompt; + + /** + * Creates an instance of RealtimeSessionCreateRequestGA class. + */ + @Generated + public RealtimeSessionCreateRequestGA() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeSessionCreateRequestUnionType getType() { + return this.type; + } + + /** + * Get the outputModalities property: The set of modalities the model can respond with. It defaults to `["audio"]`, + * indicating + * that the model will respond with audio plus a transcript. `["text"]` can be used to make + * the model respond with text only. It is not possible to request both `text` and `audio` at the same time. + * + * @return the outputModalities value. + */ + @Generated + public List getOutputModalities() { + return this.outputModalities; + } + + /** + * Set the outputModalities property: The set of modalities the model can respond with. It defaults to `["audio"]`, + * indicating + * that the model will respond with audio plus a transcript. `["text"]` can be used to make + * the model respond with text only. It is not possible to request both `text` and `audio` at the same time. + * + * @param outputModalities the outputModalities value to set. + * @return the RealtimeSessionCreateRequestGA object itself. + */ + @Generated + public RealtimeSessionCreateRequestGA + setOutputModalities(List outputModalities) { + this.outputModalities = outputModalities; + return this; + } + + /** + * Get the model property: The Realtime model used for this session. + * + * @return the model value. + */ + @Generated + public RealtimeClientEventSessionUpdateSessionModel getModel() { + return this.model; + } + + /** + * Set the model property: The Realtime model used for this session. + * + * @param model the model value to set. + * @return the RealtimeSessionCreateRequestGA object itself. + */ + @Generated + public RealtimeSessionCreateRequestGA setModel(RealtimeClientEventSessionUpdateSessionModel model) { + this.model = model; + return this; + } + + /** + * Get the instructions property: The default system instructions (i.e. system message) prepended to model calls. + * This field allows the client to guide the model on desired responses. The model can be instructed on response + * content and format, (e.g. "be extremely succinct", "act friendly", "here are examples of good responses") and on + * audio behavior (e.g. "talk quickly", "inject emotion into your voice", "laugh frequently"). The instructions are + * not guaranteed to be followed by the model, but they provide guidance to the model on the desired behavior. + * Note that the server sets default instructions which will be used if this field is not set and are visible in the + * `session.created` event at the start of the session. + * + * @return the instructions value. + */ + @Generated + public String getInstructions() { + return this.instructions; + } + + /** + * Set the instructions property: The default system instructions (i.e. system message) prepended to model calls. + * This field allows the client to guide the model on desired responses. The model can be instructed on response + * content and format, (e.g. "be extremely succinct", "act friendly", "here are examples of good responses") and on + * audio behavior (e.g. "talk quickly", "inject emotion into your voice", "laugh frequently"). The instructions are + * not guaranteed to be followed by the model, but they provide guidance to the model on the desired behavior. + * Note that the server sets default instructions which will be used if this field is not set and are visible in the + * `session.created` event at the start of the session. + * + * @param instructions the instructions value to set. + * @return the RealtimeSessionCreateRequestGA object itself. + */ + @Generated + public RealtimeSessionCreateRequestGA setInstructions(String instructions) { + this.instructions = instructions; + return this; + } + + /** + * Get the audio property: Configuration for input and output audio. + * + * @return the audio value. + */ + @Generated + public RealtimeSessionCreateRequestGAAudio getAudio() { + return this.audio; + } + + /** + * Set the audio property: Configuration for input and output audio. + * + * @param audio the audio value to set. + * @return the RealtimeSessionCreateRequestGA object itself. + */ + @Generated + public RealtimeSessionCreateRequestGA setAudio(RealtimeSessionCreateRequestGAAudio audio) { + this.audio = audio; + return this; + } + + /** + * Get the include property: Additional fields to include in server outputs. + * `item.input_audio_transcription.logprobs`: Include logprobs for input audio transcription. + * + * @return the include value. + */ + @Generated + public List getInclude() { + return this.include; + } + + /** + * Set the include property: Additional fields to include in server outputs. + * `item.input_audio_transcription.logprobs`: Include logprobs for input audio transcription. + * + * @param include the include value to set. + * @return the RealtimeSessionCreateRequestGA object itself. + */ + @Generated + public RealtimeSessionCreateRequestGA setInclude(List include) { + this.include = include; + return this; + } + + /** + * Get the tracing property: Tracing Configuration + * + * Realtime API can write session traces to the [Traces Dashboard](https://platform.openai.com/logs?api=traces). Set + * to null to disable tracing. Once + * tracing is enabled for a session, the configuration cannot be modified. + * `auto` will create a trace for the session with default values for the + * workflow name, group id, and metadata. + * + * @return the tracing value. + */ + @Generated + public BinaryData getTracing() { + return this.tracing; + } + + /** + * Set the tracing property: Tracing Configuration + * + * Realtime API can write session traces to the [Traces Dashboard](https://platform.openai.com/logs?api=traces). Set + * to null to disable tracing. Once + * tracing is enabled for a session, the configuration cannot be modified. + * `auto` will create a trace for the session with default values for the + * workflow name, group id, and metadata. + * + * @param tracing the tracing value to set. + * @return the RealtimeSessionCreateRequestGA object itself. + */ + @Generated + public RealtimeSessionCreateRequestGA setTracing(BinaryData tracing) { + this.tracing = tracing; + return this; + } + + /** + * Get the tools property: Tools available to the model. + * + * @return the tools value. + */ + @Generated + public List getTools() { + return this.tools; + } + + /** + * Set the tools property: Tools available to the model. + * + * @param tools the tools value to set. + * @return the RealtimeSessionCreateRequestGA object itself. + */ + @Generated + public RealtimeSessionCreateRequestGA setTools(List tools) { + this.tools = tools; + return this; + } + + /** + * Get the toolChoice property: How the model chooses tools. Provide one of the string modes or force a specific + * function/MCP tool. + * + * @return the toolChoice value. + */ + @Generated + public BinaryData getToolChoice() { + return this.toolChoice; + } + + /** + * Set the toolChoice property: How the model chooses tools. Provide one of the string modes or force a specific + * function/MCP tool. + * + * @param toolChoice the toolChoice value to set. + * @return the RealtimeSessionCreateRequestGA object itself. + */ + @Generated + public RealtimeSessionCreateRequestGA setToolChoice(BinaryData toolChoice) { + this.toolChoice = toolChoice; + return this; + } + + /** + * Get the parallelToolCalls property: Whether the model may call multiple tools in parallel. Only supported by + * reasoning Realtime models such as `gpt-realtime-2`. + * + * @return the parallelToolCalls value. + */ + @Generated + public Boolean isParallelToolCalls() { + return this.parallelToolCalls; + } + + /** + * Set the parallelToolCalls property: Whether the model may call multiple tools in parallel. Only supported by + * reasoning Realtime models such as `gpt-realtime-2`. + * + * @param parallelToolCalls the parallelToolCalls value to set. + * @return the RealtimeSessionCreateRequestGA object itself. + */ + @Generated + public RealtimeSessionCreateRequestGA setParallelToolCalls(Boolean parallelToolCalls) { + this.parallelToolCalls = parallelToolCalls; + return this; + } + + /** + * Get the reasoning property: The reasoning property. + * + * @return the reasoning value. + */ + @Generated + public RealtimeReasoning getReasoning() { + return this.reasoning; + } + + /** + * Set the reasoning property: The reasoning property. + * + * @param reasoning the reasoning value to set. + * @return the RealtimeSessionCreateRequestGA object itself. + */ + @Generated + public RealtimeSessionCreateRequestGA setReasoning(RealtimeReasoning reasoning) { + this.reasoning = reasoning; + return this; + } + + /** + * Get the maxOutputTokens property: Maximum number of output tokens for a single assistant response, + * inclusive of tool calls. Provide an integer between 1 and 4096 to + * limit output tokens, or `inf` for the maximum available tokens for a + * given model. Defaults to `inf`. + * + * @return the maxOutputTokens value. + */ + @Generated + public BinaryData getMaxOutputTokens() { + return this.maxOutputTokens; + } + + /** + * Set the maxOutputTokens property: Maximum number of output tokens for a single assistant response, + * inclusive of tool calls. Provide an integer between 1 and 4096 to + * limit output tokens, or `inf` for the maximum available tokens for a + * given model. Defaults to `inf`. + * + * @param maxOutputTokens the maxOutputTokens value to set. + * @return the RealtimeSessionCreateRequestGA object itself. + */ + @Generated + public RealtimeSessionCreateRequestGA setMaxOutputTokens(BinaryData maxOutputTokens) { + this.maxOutputTokens = maxOutputTokens; + return this; + } + + /** + * Get the truncation property: The truncation property. + * + * @return the truncation value. + */ + @Generated + public BinaryData getTruncation() { + return this.truncation; + } + + /** + * Set the truncation property: The truncation property. + * + * @param truncation the truncation value to set. + * @return the RealtimeSessionCreateRequestGA object itself. + */ + @Generated + public RealtimeSessionCreateRequestGA setTruncation(BinaryData truncation) { + this.truncation = truncation; + return this; + } + + /** + * Get the prompt property: The prompt property. + * + * @return the prompt value. + */ + @Generated + public Prompt getPrompt() { + return this.prompt; + } + + /** + * Set the prompt property: The prompt property. + * + * @param prompt the prompt value to set. + * @return the RealtimeSessionCreateRequestGA object itself. + */ + @Generated + public RealtimeSessionCreateRequestGA setPrompt(Prompt prompt) { + this.prompt = prompt; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeArrayField("output_modalities", this.outputModalities, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + jsonWriter.writeStringField("model", this.model == null ? null : this.model.toString()); + jsonWriter.writeStringField("instructions", this.instructions); + jsonWriter.writeJsonField("audio", this.audio); + jsonWriter.writeArrayField("include", this.include, (writer, element) -> writer.writeString(element)); + if (this.tracing != null) { + jsonWriter.writeFieldName("tracing"); + this.tracing.writeTo(jsonWriter); + } + jsonWriter.writeArrayField("tools", this.tools, (writer, element) -> { + if (element == null) { + writer.writeNull(); + } else { + element.writeTo(writer); + } + }); + if (this.toolChoice != null) { + jsonWriter.writeFieldName("tool_choice"); + this.toolChoice.writeTo(jsonWriter); + } + jsonWriter.writeBooleanField("parallel_tool_calls", this.parallelToolCalls); + jsonWriter.writeJsonField("reasoning", this.reasoning); + if (this.maxOutputTokens != null) { + jsonWriter.writeFieldName("max_output_tokens"); + this.maxOutputTokens.writeTo(jsonWriter); + } + if (this.truncation != null) { + jsonWriter.writeFieldName("truncation"); + this.truncation.writeTo(jsonWriter); + } + jsonWriter.writeJsonField("prompt", this.prompt); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeSessionCreateRequestGA from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeSessionCreateRequestGA if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeSessionCreateRequestGA. + */ + @Generated + public static RealtimeSessionCreateRequestGA fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeSessionCreateRequestGA deserializedRealtimeSessionCreateRequestGA + = new RealtimeSessionCreateRequestGA(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGA.type + = RealtimeSessionCreateRequestUnionType.fromString(reader.getString()); + } else if ("output_modalities".equals(fieldName)) { + List outputModalities + = reader.readArray(reader1 -> RealtimeClientEventSessionUpdateSessionOutputModality + .fromString(reader1.getString())); + deserializedRealtimeSessionCreateRequestGA.outputModalities = outputModalities; + } else if ("model".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGA.model + = RealtimeClientEventSessionUpdateSessionModel.fromString(reader.getString()); + } else if ("instructions".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGA.instructions = reader.getString(); + } else if ("audio".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGA.audio + = RealtimeSessionCreateRequestGAAudio.fromJson(reader); + } else if ("include".equals(fieldName)) { + List include = reader.readArray(reader1 -> reader1.getString()); + deserializedRealtimeSessionCreateRequestGA.include = include; + } else if ("tracing".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGA.tracing + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("tools".equals(fieldName)) { + List tools = reader.readArray(reader1 -> reader1 + .getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped()))); + deserializedRealtimeSessionCreateRequestGA.tools = tools; + } else if ("tool_choice".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGA.toolChoice + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("parallel_tool_calls".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGA.parallelToolCalls + = reader.getNullable(JsonReader::getBoolean); + } else if ("reasoning".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGA.reasoning = RealtimeReasoning.fromJson(reader); + } else if ("max_output_tokens".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGA.maxOutputTokens + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("truncation".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGA.truncation + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("prompt".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGA.prompt = Prompt.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeSessionCreateRequestGA; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudio.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudio.java new file mode 100644 index 0000000000000..d9f62540bf697 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudio.java @@ -0,0 +1,125 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeSessionCreateRequestGAAudio model. + */ +@Fluent +public final class RealtimeSessionCreateRequestGAAudio + implements JsonSerializable { + + /* + * The input property. + */ + @Generated + private RealtimeSessionCreateRequestGAAudioInput input; + + /* + * The output property. + */ + @Generated + private RealtimeSessionCreateRequestGAAudioOutput output; + + /** + * Creates an instance of RealtimeSessionCreateRequestGAAudio class. + */ + @Generated + public RealtimeSessionCreateRequestGAAudio() { + } + + /** + * Get the input property: The input property. + * + * @return the input value. + */ + @Generated + public RealtimeSessionCreateRequestGAAudioInput getInput() { + return this.input; + } + + /** + * Set the input property: The input property. + * + * @param input the input value to set. + * @return the RealtimeSessionCreateRequestGAAudio object itself. + */ + @Generated + public RealtimeSessionCreateRequestGAAudio setInput(RealtimeSessionCreateRequestGAAudioInput input) { + this.input = input; + return this; + } + + /** + * Get the output property: The output property. + * + * @return the output value. + */ + @Generated + public RealtimeSessionCreateRequestGAAudioOutput getOutput() { + return this.output; + } + + /** + * Set the output property: The output property. + * + * @param output the output value to set. + * @return the RealtimeSessionCreateRequestGAAudio object itself. + */ + @Generated + public RealtimeSessionCreateRequestGAAudio setOutput(RealtimeSessionCreateRequestGAAudioOutput output) { + this.output = output; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("input", this.input); + jsonWriter.writeJsonField("output", this.output); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeSessionCreateRequestGAAudio from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeSessionCreateRequestGAAudio if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeSessionCreateRequestGAAudio. + */ + @Generated + public static RealtimeSessionCreateRequestGAAudio fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeSessionCreateRequestGAAudio deserializedRealtimeSessionCreateRequestGAAudio + = new RealtimeSessionCreateRequestGAAudio(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("input".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGAAudio.input + = RealtimeSessionCreateRequestGAAudioInput.fromJson(reader); + } else if ("output".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGAAudio.output + = RealtimeSessionCreateRequestGAAudioOutput.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeSessionCreateRequestGAAudio; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioInput.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioInput.java new file mode 100644 index 0000000000000..1cb23063974ab --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioInput.java @@ -0,0 +1,189 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeSessionCreateRequestGAAudioInput model. + */ +@Fluent +public final class RealtimeSessionCreateRequestGAAudioInput + implements JsonSerializable { + + /* + * The format property. + */ + @Generated + private RealtimeAudioFormats format; + + /* + * The transcription property. + */ + @Generated + private AudioTranscription transcription; + + /* + * The noise_reduction property. + */ + @Generated + private RealtimeSessionCreateRequestGAAudioInputNoiseReduction noiseReduction; + + /* + * The turn_detection property. + */ + @Generated + private RealtimeTurnDetection turnDetection; + + /** + * Creates an instance of RealtimeSessionCreateRequestGAAudioInput class. + */ + @Generated + public RealtimeSessionCreateRequestGAAudioInput() { + } + + /** + * Get the format property: The format property. + * + * @return the format value. + */ + @Generated + public RealtimeAudioFormats getFormat() { + return this.format; + } + + /** + * Set the format property: The format property. + * + * @param format the format value to set. + * @return the RealtimeSessionCreateRequestGAAudioInput object itself. + */ + @Generated + public RealtimeSessionCreateRequestGAAudioInput setFormat(RealtimeAudioFormats format) { + this.format = format; + return this; + } + + /** + * Get the transcription property: The transcription property. + * + * @return the transcription value. + */ + @Generated + public AudioTranscription getTranscription() { + return this.transcription; + } + + /** + * Set the transcription property: The transcription property. + * + * @param transcription the transcription value to set. + * @return the RealtimeSessionCreateRequestGAAudioInput object itself. + */ + @Generated + public RealtimeSessionCreateRequestGAAudioInput setTranscription(AudioTranscription transcription) { + this.transcription = transcription; + return this; + } + + /** + * Get the noiseReduction property: The noise_reduction property. + * + * @return the noiseReduction value. + */ + @Generated + public RealtimeSessionCreateRequestGAAudioInputNoiseReduction getNoiseReduction() { + return this.noiseReduction; + } + + /** + * Set the noiseReduction property: The noise_reduction property. + * + * @param noiseReduction the noiseReduction value to set. + * @return the RealtimeSessionCreateRequestGAAudioInput object itself. + */ + @Generated + public RealtimeSessionCreateRequestGAAudioInput + setNoiseReduction(RealtimeSessionCreateRequestGAAudioInputNoiseReduction noiseReduction) { + this.noiseReduction = noiseReduction; + return this; + } + + /** + * Get the turnDetection property: The turn_detection property. + * + * @return the turnDetection value. + */ + @Generated + public RealtimeTurnDetection getTurnDetection() { + return this.turnDetection; + } + + /** + * Set the turnDetection property: The turn_detection property. + * + * @param turnDetection the turnDetection value to set. + * @return the RealtimeSessionCreateRequestGAAudioInput object itself. + */ + @Generated + public RealtimeSessionCreateRequestGAAudioInput setTurnDetection(RealtimeTurnDetection turnDetection) { + this.turnDetection = turnDetection; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("format", this.format); + jsonWriter.writeJsonField("transcription", this.transcription); + jsonWriter.writeJsonField("noise_reduction", this.noiseReduction); + jsonWriter.writeJsonField("turn_detection", this.turnDetection); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeSessionCreateRequestGAAudioInput from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeSessionCreateRequestGAAudioInput if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeSessionCreateRequestGAAudioInput. + */ + @Generated + public static RealtimeSessionCreateRequestGAAudioInput fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeSessionCreateRequestGAAudioInput deserializedRealtimeSessionCreateRequestGAAudioInput + = new RealtimeSessionCreateRequestGAAudioInput(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("format".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGAAudioInput.format = RealtimeAudioFormats.fromJson(reader); + } else if ("transcription".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGAAudioInput.transcription + = AudioTranscription.fromJson(reader); + } else if ("noise_reduction".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGAAudioInput.noiseReduction + = RealtimeSessionCreateRequestGAAudioInputNoiseReduction.fromJson(reader); + } else if ("turn_detection".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGAAudioInput.turnDetection + = RealtimeTurnDetection.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeSessionCreateRequestGAAudioInput; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioInputNoiseReduction.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioInputNoiseReduction.java new file mode 100644 index 0000000000000..a5b6c7fe8cd8e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioInputNoiseReduction.java @@ -0,0 +1,94 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeSessionCreateRequestGAAudioInputNoiseReduction model. + */ +@Fluent +public final class RealtimeSessionCreateRequestGAAudioInputNoiseReduction + implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private NoiseReductionType type; + + /** + * Creates an instance of RealtimeSessionCreateRequestGAAudioInputNoiseReduction class. + */ + @Generated + public RealtimeSessionCreateRequestGAAudioInputNoiseReduction() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public NoiseReductionType getType() { + return this.type; + } + + /** + * Set the type property: The type property. + * + * @param type the type value to set. + * @return the RealtimeSessionCreateRequestGAAudioInputNoiseReduction object itself. + */ + @Generated + public RealtimeSessionCreateRequestGAAudioInputNoiseReduction setType(NoiseReductionType type) { + this.type = type; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeSessionCreateRequestGAAudioInputNoiseReduction from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeSessionCreateRequestGAAudioInputNoiseReduction if the JsonReader was pointing to + * an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeSessionCreateRequestGAAudioInputNoiseReduction. + */ + @Generated + public static RealtimeSessionCreateRequestGAAudioInputNoiseReduction fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + RealtimeSessionCreateRequestGAAudioInputNoiseReduction deserializedRealtimeSessionCreateRequestGAAudioInputNoiseReduction + = new RealtimeSessionCreateRequestGAAudioInputNoiseReduction(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGAAudioInputNoiseReduction.type + = NoiseReductionType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeSessionCreateRequestGAAudioInputNoiseReduction; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioOutput.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioOutput.java new file mode 100644 index 0000000000000..dee72c14ec333 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioOutput.java @@ -0,0 +1,161 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeSessionCreateRequestGAAudioOutput model. + */ +@Fluent +public final class RealtimeSessionCreateRequestGAAudioOutput + implements JsonSerializable { + + /* + * The format property. + */ + @Generated + private RealtimeAudioFormats format; + + /* + * The voice property. + */ + @Generated + private BinaryData voice; + + /* + * The speed property. + */ + @Generated + private Double speed; + + /** + * Creates an instance of RealtimeSessionCreateRequestGAAudioOutput class. + */ + @Generated + public RealtimeSessionCreateRequestGAAudioOutput() { + } + + /** + * Get the format property: The format property. + * + * @return the format value. + */ + @Generated + public RealtimeAudioFormats getFormat() { + return this.format; + } + + /** + * Set the format property: The format property. + * + * @param format the format value to set. + * @return the RealtimeSessionCreateRequestGAAudioOutput object itself. + */ + @Generated + public RealtimeSessionCreateRequestGAAudioOutput setFormat(RealtimeAudioFormats format) { + this.format = format; + return this; + } + + /** + * Get the voice property: The voice property. + * + * @return the voice value. + */ + @Generated + public BinaryData getVoice() { + return this.voice; + } + + /** + * Set the voice property: The voice property. + * + * @param voice the voice value to set. + * @return the RealtimeSessionCreateRequestGAAudioOutput object itself. + */ + @Generated + public RealtimeSessionCreateRequestGAAudioOutput setVoice(BinaryData voice) { + this.voice = voice; + return this; + } + + /** + * Get the speed property: The speed property. + * + * @return the speed value. + */ + @Generated + public Double getSpeed() { + return this.speed; + } + + /** + * Set the speed property: The speed property. + * + * @param speed the speed value to set. + * @return the RealtimeSessionCreateRequestGAAudioOutput object itself. + */ + @Generated + public RealtimeSessionCreateRequestGAAudioOutput setSpeed(Double speed) { + this.speed = speed; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("format", this.format); + if (this.voice != null) { + jsonWriter.writeFieldName("voice"); + this.voice.writeTo(jsonWriter); + } + jsonWriter.writeNumberField("speed", this.speed); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeSessionCreateRequestGAAudioOutput from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeSessionCreateRequestGAAudioOutput if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeSessionCreateRequestGAAudioOutput. + */ + @Generated + public static RealtimeSessionCreateRequestGAAudioOutput fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeSessionCreateRequestGAAudioOutput deserializedRealtimeSessionCreateRequestGAAudioOutput + = new RealtimeSessionCreateRequestGAAudioOutput(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("format".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGAAudioOutput.format + = RealtimeAudioFormats.fromJson(reader); + } else if ("voice".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGAAudioOutput.voice + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("speed".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGAAudioOutput.speed + = reader.getNullable(JsonReader::getDouble); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeSessionCreateRequestGAAudioOutput; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioOutputVoice.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioOutputVoice.java new file mode 100644 index 0000000000000..dc9bc074703d4 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioOutputVoice.java @@ -0,0 +1,83 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeSessionCreateRequestGAAudioOutputVoice model. + */ +@Immutable +public final class RealtimeSessionCreateRequestGAAudioOutputVoice + implements JsonSerializable { + + /* + * The id property. + */ + @Generated + private final String id; + + /** + * Creates an instance of RealtimeSessionCreateRequestGAAudioOutputVoice class. + * + * @param id the id value to set. + */ + @Generated + public RealtimeSessionCreateRequestGAAudioOutputVoice(String id) { + this.id = id; + } + + /** + * Get the id property: The id property. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeSessionCreateRequestGAAudioOutputVoice from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeSessionCreateRequestGAAudioOutputVoice if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeSessionCreateRequestGAAudioOutputVoice. + */ + @Generated + public static RealtimeSessionCreateRequestGAAudioOutputVoice fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else { + reader.skipChildren(); + } + } + return new RealtimeSessionCreateRequestGAAudioOutputVoice(id); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGATracing.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGATracing.java new file mode 100644 index 0000000000000..0ca0099ff5679 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGATracing.java @@ -0,0 +1,164 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.Map; + +/** + * The RealtimeSessionCreateRequestGATracing model. + */ +@Fluent +public final class RealtimeSessionCreateRequestGATracing + implements JsonSerializable { + + /* + * The workflow_name property. + */ + @Generated + private String workflowName; + + /* + * The group_id property. + */ + @Generated + private String groupId; + + /* + * The metadata property. + */ + @Generated + private Map metadata; + + /** + * Creates an instance of RealtimeSessionCreateRequestGATracing class. + */ + @Generated + public RealtimeSessionCreateRequestGATracing() { + } + + /** + * Get the workflowName property: The workflow_name property. + * + * @return the workflowName value. + */ + @Generated + public String getWorkflowName() { + return this.workflowName; + } + + /** + * Set the workflowName property: The workflow_name property. + * + * @param workflowName the workflowName value to set. + * @return the RealtimeSessionCreateRequestGATracing object itself. + */ + @Generated + public RealtimeSessionCreateRequestGATracing setWorkflowName(String workflowName) { + this.workflowName = workflowName; + return this; + } + + /** + * Get the groupId property: The group_id property. + * + * @return the groupId value. + */ + @Generated + public String getGroupId() { + return this.groupId; + } + + /** + * Set the groupId property: The group_id property. + * + * @param groupId the groupId value to set. + * @return the RealtimeSessionCreateRequestGATracing object itself. + */ + @Generated + public RealtimeSessionCreateRequestGATracing setGroupId(String groupId) { + this.groupId = groupId; + return this; + } + + /** + * Get the metadata property: The metadata property. + * + * @return the metadata value. + */ + @Generated + public Map getMetadata() { + return this.metadata; + } + + /** + * Set the metadata property: The metadata property. + * + * @param metadata the metadata value to set. + * @return the RealtimeSessionCreateRequestGATracing object itself. + */ + @Generated + public RealtimeSessionCreateRequestGATracing setMetadata(Map metadata) { + this.metadata = metadata; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("workflow_name", this.workflowName); + jsonWriter.writeStringField("group_id", this.groupId); + jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> { + if (element == null) { + writer.writeNull(); + } else { + element.writeTo(writer); + } + }); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeSessionCreateRequestGATracing from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeSessionCreateRequestGATracing if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeSessionCreateRequestGATracing. + */ + @Generated + public static RealtimeSessionCreateRequestGATracing fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeSessionCreateRequestGATracing deserializedRealtimeSessionCreateRequestGATracing + = new RealtimeSessionCreateRequestGATracing(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("workflow_name".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGATracing.workflowName = reader.getString(); + } else if ("group_id".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestGATracing.groupId = reader.getString(); + } else if ("metadata".equals(fieldName)) { + Map metadata = reader.readMap(reader1 -> reader1 + .getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped()))); + deserializedRealtimeSessionCreateRequestGATracing.metadata = metadata; + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeSessionCreateRequestGATracing; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestUnion.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestUnion.java new file mode 100644 index 0000000000000..dad23d915bac0 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestUnion.java @@ -0,0 +1,110 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeSessionCreateRequestUnion model. + */ +@Immutable +public class RealtimeSessionCreateRequestUnion implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private RealtimeSessionCreateRequestUnionType type + = RealtimeSessionCreateRequestUnionType.fromString("RealtimeSessionCreateRequestUnion"); + + /** + * Creates an instance of RealtimeSessionCreateRequestUnion class. + */ + @Generated + public RealtimeSessionCreateRequestUnion() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public RealtimeSessionCreateRequestUnionType getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeSessionCreateRequestUnion from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeSessionCreateRequestUnion if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeSessionCreateRequestUnion. + */ + @Generated + public static RealtimeSessionCreateRequestUnion fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("transcription".equals(discriminatorValue)) { + return RealtimeTranscriptionSessionCreateRequestGA.fromJson(readerToUse.reset()); + } else if ("realtime".equals(discriminatorValue)) { + return RealtimeSessionCreateRequestGA.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static RealtimeSessionCreateRequestUnion fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeSessionCreateRequestUnion deserializedRealtimeSessionCreateRequestUnion + = new RealtimeSessionCreateRequestUnion(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeSessionCreateRequestUnion.type + = RealtimeSessionCreateRequestUnionType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeSessionCreateRequestUnion; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestUnionType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestUnionType.java new file mode 100644 index 0000000000000..aa82c8377bb3c --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestUnionType.java @@ -0,0 +1,58 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Defines values for RealtimeSessionCreateRequestUnionType. + */ +public final class RealtimeSessionCreateRequestUnionType + extends ExpandableStringEnum { + + /** + * Static value realtime for RealtimeSessionCreateRequestUnionType. + */ + @Generated + public static final RealtimeSessionCreateRequestUnionType REALTIME = fromString("realtime"); + + /** + * Static value transcription for RealtimeSessionCreateRequestUnionType. + */ + @Generated + public static final RealtimeSessionCreateRequestUnionType TRANSCRIPTION = fromString("transcription"); + + /** + * Creates a new instance of RealtimeSessionCreateRequestUnionType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public RealtimeSessionCreateRequestUnionType() { + } + + /** + * Creates or finds a RealtimeSessionCreateRequestUnionType from its string representation. + * + * @param name a name to look for. + * @return the corresponding RealtimeSessionCreateRequestUnionType. + */ + @Generated + public static RealtimeSessionCreateRequestUnionType fromString(String name) { + return fromString(name, RealtimeSessionCreateRequestUnionType.class); + } + + /** + * Gets known RealtimeSessionCreateRequestUnionType values. + * + * @return known RealtimeSessionCreateRequestUnionType values. + */ + @Generated + public static Collection values() { + return values(RealtimeSessionCreateRequestUnionType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGA.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGA.java new file mode 100644 index 0000000000000..2d6059000e6ca --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGA.java @@ -0,0 +1,151 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Realtime transcription session configuration + * + * Realtime transcription session object configuration. + */ +@Fluent +public final class RealtimeTranscriptionSessionCreateRequestGA extends RealtimeSessionCreateRequestUnion { + + /* + * The type property. + */ + @Generated + private RealtimeSessionCreateRequestUnionType type = RealtimeSessionCreateRequestUnionType.TRANSCRIPTION; + + /* + * Configuration for input and output audio. + */ + @Generated + private RealtimeTranscriptionSessionCreateRequestGAAudio audio; + + /* + * Additional fields to include in server outputs. + * `item.input_audio_transcription.logprobs`: Include logprobs for input audio transcription. + */ + @Generated + private List include; + + /** + * Creates an instance of RealtimeTranscriptionSessionCreateRequestGA class. + */ + @Generated + public RealtimeTranscriptionSessionCreateRequestGA() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeSessionCreateRequestUnionType getType() { + return this.type; + } + + /** + * Get the audio property: Configuration for input and output audio. + * + * @return the audio value. + */ + @Generated + public RealtimeTranscriptionSessionCreateRequestGAAudio getAudio() { + return this.audio; + } + + /** + * Set the audio property: Configuration for input and output audio. + * + * @param audio the audio value to set. + * @return the RealtimeTranscriptionSessionCreateRequestGA object itself. + */ + @Generated + public RealtimeTranscriptionSessionCreateRequestGA + setAudio(RealtimeTranscriptionSessionCreateRequestGAAudio audio) { + this.audio = audio; + return this; + } + + /** + * Get the include property: Additional fields to include in server outputs. + * `item.input_audio_transcription.logprobs`: Include logprobs for input audio transcription. + * + * @return the include value. + */ + @Generated + public List getInclude() { + return this.include; + } + + /** + * Set the include property: Additional fields to include in server outputs. + * `item.input_audio_transcription.logprobs`: Include logprobs for input audio transcription. + * + * @param include the include value to set. + * @return the RealtimeTranscriptionSessionCreateRequestGA object itself. + */ + @Generated + public RealtimeTranscriptionSessionCreateRequestGA setInclude(List include) { + this.include = include; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeJsonField("audio", this.audio); + jsonWriter.writeArrayField("include", this.include, (writer, element) -> writer.writeString(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeTranscriptionSessionCreateRequestGA from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeTranscriptionSessionCreateRequestGA if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeTranscriptionSessionCreateRequestGA. + */ + @Generated + public static RealtimeTranscriptionSessionCreateRequestGA fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeTranscriptionSessionCreateRequestGA deserializedRealtimeTranscriptionSessionCreateRequestGA + = new RealtimeTranscriptionSessionCreateRequestGA(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeTranscriptionSessionCreateRequestGA.type + = RealtimeSessionCreateRequestUnionType.fromString(reader.getString()); + } else if ("audio".equals(fieldName)) { + deserializedRealtimeTranscriptionSessionCreateRequestGA.audio + = RealtimeTranscriptionSessionCreateRequestGAAudio.fromJson(reader); + } else if ("include".equals(fieldName)) { + List include = reader.readArray(reader1 -> reader1.getString()); + deserializedRealtimeTranscriptionSessionCreateRequestGA.include = include; + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeTranscriptionSessionCreateRequestGA; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudio.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudio.java new file mode 100644 index 0000000000000..5e4cd9e3753a9 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudio.java @@ -0,0 +1,94 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeTranscriptionSessionCreateRequestGAAudio model. + */ +@Fluent +public final class RealtimeTranscriptionSessionCreateRequestGAAudio + implements JsonSerializable { + + /* + * The input property. + */ + @Generated + private RealtimeTranscriptionSessionCreateRequestGAAudioInput input; + + /** + * Creates an instance of RealtimeTranscriptionSessionCreateRequestGAAudio class. + */ + @Generated + public RealtimeTranscriptionSessionCreateRequestGAAudio() { + } + + /** + * Get the input property: The input property. + * + * @return the input value. + */ + @Generated + public RealtimeTranscriptionSessionCreateRequestGAAudioInput getInput() { + return this.input; + } + + /** + * Set the input property: The input property. + * + * @param input the input value to set. + * @return the RealtimeTranscriptionSessionCreateRequestGAAudio object itself. + */ + @Generated + public RealtimeTranscriptionSessionCreateRequestGAAudio + setInput(RealtimeTranscriptionSessionCreateRequestGAAudioInput input) { + this.input = input; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("input", this.input); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeTranscriptionSessionCreateRequestGAAudio from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeTranscriptionSessionCreateRequestGAAudio if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeTranscriptionSessionCreateRequestGAAudio. + */ + @Generated + public static RealtimeTranscriptionSessionCreateRequestGAAudio fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeTranscriptionSessionCreateRequestGAAudio deserializedRealtimeTranscriptionSessionCreateRequestGAAudio + = new RealtimeTranscriptionSessionCreateRequestGAAudio(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("input".equals(fieldName)) { + deserializedRealtimeTranscriptionSessionCreateRequestGAAudio.input + = RealtimeTranscriptionSessionCreateRequestGAAudioInput.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeTranscriptionSessionCreateRequestGAAudio; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudioInput.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudioInput.java new file mode 100644 index 0000000000000..245e8e3350c7a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudioInput.java @@ -0,0 +1,191 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeTranscriptionSessionCreateRequestGAAudioInput model. + */ +@Fluent +public final class RealtimeTranscriptionSessionCreateRequestGAAudioInput + implements JsonSerializable { + + /* + * The format property. + */ + @Generated + private RealtimeAudioFormats format; + + /* + * The transcription property. + */ + @Generated + private AudioTranscription transcription; + + /* + * The noise_reduction property. + */ + @Generated + private RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction noiseReduction; + + /* + * The turn_detection property. + */ + @Generated + private RealtimeTurnDetection turnDetection; + + /** + * Creates an instance of RealtimeTranscriptionSessionCreateRequestGAAudioInput class. + */ + @Generated + public RealtimeTranscriptionSessionCreateRequestGAAudioInput() { + } + + /** + * Get the format property: The format property. + * + * @return the format value. + */ + @Generated + public RealtimeAudioFormats getFormat() { + return this.format; + } + + /** + * Set the format property: The format property. + * + * @param format the format value to set. + * @return the RealtimeTranscriptionSessionCreateRequestGAAudioInput object itself. + */ + @Generated + public RealtimeTranscriptionSessionCreateRequestGAAudioInput setFormat(RealtimeAudioFormats format) { + this.format = format; + return this; + } + + /** + * Get the transcription property: The transcription property. + * + * @return the transcription value. + */ + @Generated + public AudioTranscription getTranscription() { + return this.transcription; + } + + /** + * Set the transcription property: The transcription property. + * + * @param transcription the transcription value to set. + * @return the RealtimeTranscriptionSessionCreateRequestGAAudioInput object itself. + */ + @Generated + public RealtimeTranscriptionSessionCreateRequestGAAudioInput setTranscription(AudioTranscription transcription) { + this.transcription = transcription; + return this; + } + + /** + * Get the noiseReduction property: The noise_reduction property. + * + * @return the noiseReduction value. + */ + @Generated + public RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction getNoiseReduction() { + return this.noiseReduction; + } + + /** + * Set the noiseReduction property: The noise_reduction property. + * + * @param noiseReduction the noiseReduction value to set. + * @return the RealtimeTranscriptionSessionCreateRequestGAAudioInput object itself. + */ + @Generated + public RealtimeTranscriptionSessionCreateRequestGAAudioInput + setNoiseReduction(RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction noiseReduction) { + this.noiseReduction = noiseReduction; + return this; + } + + /** + * Get the turnDetection property: The turn_detection property. + * + * @return the turnDetection value. + */ + @Generated + public RealtimeTurnDetection getTurnDetection() { + return this.turnDetection; + } + + /** + * Set the turnDetection property: The turn_detection property. + * + * @param turnDetection the turnDetection value to set. + * @return the RealtimeTranscriptionSessionCreateRequestGAAudioInput object itself. + */ + @Generated + public RealtimeTranscriptionSessionCreateRequestGAAudioInput setTurnDetection(RealtimeTurnDetection turnDetection) { + this.turnDetection = turnDetection; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("format", this.format); + jsonWriter.writeJsonField("transcription", this.transcription); + jsonWriter.writeJsonField("noise_reduction", this.noiseReduction); + jsonWriter.writeJsonField("turn_detection", this.turnDetection); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeTranscriptionSessionCreateRequestGAAudioInput from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeTranscriptionSessionCreateRequestGAAudioInput if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeTranscriptionSessionCreateRequestGAAudioInput. + */ + @Generated + public static RealtimeTranscriptionSessionCreateRequestGAAudioInput fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + RealtimeTranscriptionSessionCreateRequestGAAudioInput deserializedRealtimeTranscriptionSessionCreateRequestGAAudioInput + = new RealtimeTranscriptionSessionCreateRequestGAAudioInput(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("format".equals(fieldName)) { + deserializedRealtimeTranscriptionSessionCreateRequestGAAudioInput.format + = RealtimeAudioFormats.fromJson(reader); + } else if ("transcription".equals(fieldName)) { + deserializedRealtimeTranscriptionSessionCreateRequestGAAudioInput.transcription + = AudioTranscription.fromJson(reader); + } else if ("noise_reduction".equals(fieldName)) { + deserializedRealtimeTranscriptionSessionCreateRequestGAAudioInput.noiseReduction + = RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction.fromJson(reader); + } else if ("turn_detection".equals(fieldName)) { + deserializedRealtimeTranscriptionSessionCreateRequestGAAudioInput.turnDetection + = RealtimeTurnDetection.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeTranscriptionSessionCreateRequestGAAudioInput; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction.java new file mode 100644 index 0000000000000..63d14163aee65 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction.java @@ -0,0 +1,95 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction model. + */ +@Fluent +public final class RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction + implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private NoiseReductionType type; + + /** + * Creates an instance of RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction class. + */ + @Generated + public RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public NoiseReductionType getType() { + return this.type; + } + + /** + * Set the type property: The type property. + * + * @param type the type value to set. + * @return the RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction object itself. + */ + @Generated + public RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction setType(NoiseReductionType type) { + this.type = type; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction if the JsonReader was + * pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the + * RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction. + */ + @Generated + public static RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction deserializedRealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction + = new RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction.type + = NoiseReductionType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetection.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetection.java new file mode 100644 index 0000000000000..d552c9fe8b3b3 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetection.java @@ -0,0 +1,118 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Realtime Turn Detection + * + * Configuration for turn detection, ether Server VAD or Semantic VAD. This can be set to `null` to turn off, in which + * case the client must manually trigger model response. + * Server VAD means that the model will detect the start and end of speech based on audio volume and respond at the end + * of user speech. + * Semantic VAD is more advanced and uses a turn detection model (in conjunction with VAD) to semantically estimate + * whether the user has finished speaking, then dynamically sets a timeout based on this probability. For example, if + * user audio trails off with "uhhm", the model will score a low probability of turn end and wait longer for the user to + * continue speaking. This can be useful for more natural conversations, but may have a higher latency. + * For `gpt-realtime-whisper` transcription sessions, turn detection must be + * set to `null`; VAD is not supported. + */ +@Immutable +public class RealtimeTurnDetection implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private RealtimeTurnDetectionType type = RealtimeTurnDetectionType.fromString("RealtimeTurnDetection"); + + /** + * Creates an instance of RealtimeTurnDetection class. + */ + @Generated + public RealtimeTurnDetection() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public RealtimeTurnDetectionType getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeTurnDetection from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeTurnDetection if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeTurnDetection. + */ + @Generated + public static RealtimeTurnDetection fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("server_vad".equals(discriminatorValue)) { + return RealtimeTurnDetectionServerVad.fromJson(readerToUse.reset()); + } else if ("semantic_vad".equals(discriminatorValue)) { + return RealtimeTurnDetectionSemanticVad.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static RealtimeTurnDetection fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeTurnDetection deserializedRealtimeTurnDetection = new RealtimeTurnDetection(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeTurnDetection.type = RealtimeTurnDetectionType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeTurnDetection; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionSemanticVad.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionSemanticVad.java new file mode 100644 index 0000000000000..d2c4d3d476e11 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionSemanticVad.java @@ -0,0 +1,176 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeTurnDetectionSemanticVad model. + */ +@Fluent +public final class RealtimeTurnDetectionSemanticVad extends RealtimeTurnDetection { + + /* + * The type property. + */ + @Generated + private RealtimeTurnDetectionType type = RealtimeTurnDetectionType.SEMANTIC_VAD; + + /* + * The eagerness property. + */ + @Generated + private VoiceAgentSemanticVadTurnDetectionEagerness eagerness; + + /* + * The create_response property. + */ + @Generated + private Boolean createResponse; + + /* + * The interrupt_response property. + */ + @Generated + private Boolean interruptResponse; + + /** + * Creates an instance of RealtimeTurnDetectionSemanticVad class. + */ + @Generated + public RealtimeTurnDetectionSemanticVad() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeTurnDetectionType getType() { + return this.type; + } + + /** + * Get the eagerness property: The eagerness property. + * + * @return the eagerness value. + */ + @Generated + public VoiceAgentSemanticVadTurnDetectionEagerness getEagerness() { + return this.eagerness; + } + + /** + * Set the eagerness property: The eagerness property. + * + * @param eagerness the eagerness value to set. + * @return the RealtimeTurnDetectionSemanticVad object itself. + */ + @Generated + public RealtimeTurnDetectionSemanticVad setEagerness(VoiceAgentSemanticVadTurnDetectionEagerness eagerness) { + this.eagerness = eagerness; + return this; + } + + /** + * Get the createResponse property: The create_response property. + * + * @return the createResponse value. + */ + @Generated + public Boolean isCreateResponse() { + return this.createResponse; + } + + /** + * Set the createResponse property: The create_response property. + * + * @param createResponse the createResponse value to set. + * @return the RealtimeTurnDetectionSemanticVad object itself. + */ + @Generated + public RealtimeTurnDetectionSemanticVad setCreateResponse(Boolean createResponse) { + this.createResponse = createResponse; + return this; + } + + /** + * Get the interruptResponse property: The interrupt_response property. + * + * @return the interruptResponse value. + */ + @Generated + public Boolean isInterruptResponse() { + return this.interruptResponse; + } + + /** + * Set the interruptResponse property: The interrupt_response property. + * + * @param interruptResponse the interruptResponse value to set. + * @return the RealtimeTurnDetectionSemanticVad object itself. + */ + @Generated + public RealtimeTurnDetectionSemanticVad setInterruptResponse(Boolean interruptResponse) { + this.interruptResponse = interruptResponse; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("eagerness", this.eagerness == null ? null : this.eagerness.toString()); + jsonWriter.writeBooleanField("create_response", this.createResponse); + jsonWriter.writeBooleanField("interrupt_response", this.interruptResponse); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeTurnDetectionSemanticVad from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeTurnDetectionSemanticVad if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeTurnDetectionSemanticVad. + */ + @Generated + public static RealtimeTurnDetectionSemanticVad fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeTurnDetectionSemanticVad deserializedRealtimeTurnDetectionSemanticVad + = new RealtimeTurnDetectionSemanticVad(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeTurnDetectionSemanticVad.type + = RealtimeTurnDetectionType.fromString(reader.getString()); + } else if ("eagerness".equals(fieldName)) { + deserializedRealtimeTurnDetectionSemanticVad.eagerness + = VoiceAgentSemanticVadTurnDetectionEagerness.fromString(reader.getString()); + } else if ("create_response".equals(fieldName)) { + deserializedRealtimeTurnDetectionSemanticVad.createResponse + = reader.getNullable(JsonReader::getBoolean); + } else if ("interrupt_response".equals(fieldName)) { + deserializedRealtimeTurnDetectionSemanticVad.interruptResponse + = reader.getNullable(JsonReader::getBoolean); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeTurnDetectionSemanticVad; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionServerVad.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionServerVad.java new file mode 100644 index 0000000000000..40f250591ea12 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionServerVad.java @@ -0,0 +1,270 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeTurnDetectionServerVad model. + */ +@Fluent +public final class RealtimeTurnDetectionServerVad extends RealtimeTurnDetection { + + /* + * The type property. + */ + @Generated + private RealtimeTurnDetectionType type = RealtimeTurnDetectionType.SERVER_VAD; + + /* + * The threshold property. + */ + @Generated + private Double threshold; + + /* + * The prefix_padding_ms property. + */ + @Generated + private Long prefixPaddingMs; + + /* + * The silence_duration_ms property. + */ + @Generated + private Long silenceDurationMs; + + /* + * The create_response property. + */ + @Generated + private Boolean createResponse; + + /* + * The interrupt_response property. + */ + @Generated + private Boolean interruptResponse; + + /* + * The idle_timeout_ms property. + */ + @Generated + private Long idleTimeoutMs; + + /** + * Creates an instance of RealtimeTurnDetectionServerVad class. + */ + @Generated + public RealtimeTurnDetectionServerVad() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeTurnDetectionType getType() { + return this.type; + } + + /** + * Get the threshold property: The threshold property. + * + * @return the threshold value. + */ + @Generated + public Double getThreshold() { + return this.threshold; + } + + /** + * Set the threshold property: The threshold property. + * + * @param threshold the threshold value to set. + * @return the RealtimeTurnDetectionServerVad object itself. + */ + @Generated + public RealtimeTurnDetectionServerVad setThreshold(Double threshold) { + this.threshold = threshold; + return this; + } + + /** + * Get the prefixPaddingMs property: The prefix_padding_ms property. + * + * @return the prefixPaddingMs value. + */ + @Generated + public Long getPrefixPaddingMs() { + return this.prefixPaddingMs; + } + + /** + * Set the prefixPaddingMs property: The prefix_padding_ms property. + * + * @param prefixPaddingMs the prefixPaddingMs value to set. + * @return the RealtimeTurnDetectionServerVad object itself. + */ + @Generated + public RealtimeTurnDetectionServerVad setPrefixPaddingMs(Long prefixPaddingMs) { + this.prefixPaddingMs = prefixPaddingMs; + return this; + } + + /** + * Get the silenceDurationMs property: The silence_duration_ms property. + * + * @return the silenceDurationMs value. + */ + @Generated + public Long getSilenceDurationMs() { + return this.silenceDurationMs; + } + + /** + * Set the silenceDurationMs property: The silence_duration_ms property. + * + * @param silenceDurationMs the silenceDurationMs value to set. + * @return the RealtimeTurnDetectionServerVad object itself. + */ + @Generated + public RealtimeTurnDetectionServerVad setSilenceDurationMs(Long silenceDurationMs) { + this.silenceDurationMs = silenceDurationMs; + return this; + } + + /** + * Get the createResponse property: The create_response property. + * + * @return the createResponse value. + */ + @Generated + public Boolean isCreateResponse() { + return this.createResponse; + } + + /** + * Set the createResponse property: The create_response property. + * + * @param createResponse the createResponse value to set. + * @return the RealtimeTurnDetectionServerVad object itself. + */ + @Generated + public RealtimeTurnDetectionServerVad setCreateResponse(Boolean createResponse) { + this.createResponse = createResponse; + return this; + } + + /** + * Get the interruptResponse property: The interrupt_response property. + * + * @return the interruptResponse value. + */ + @Generated + public Boolean isInterruptResponse() { + return this.interruptResponse; + } + + /** + * Set the interruptResponse property: The interrupt_response property. + * + * @param interruptResponse the interruptResponse value to set. + * @return the RealtimeTurnDetectionServerVad object itself. + */ + @Generated + public RealtimeTurnDetectionServerVad setInterruptResponse(Boolean interruptResponse) { + this.interruptResponse = interruptResponse; + return this; + } + + /** + * Get the idleTimeoutMs property: The idle_timeout_ms property. + * + * @return the idleTimeoutMs value. + */ + @Generated + public Long getIdleTimeoutMs() { + return this.idleTimeoutMs; + } + + /** + * Set the idleTimeoutMs property: The idle_timeout_ms property. + * + * @param idleTimeoutMs the idleTimeoutMs value to set. + * @return the RealtimeTurnDetectionServerVad object itself. + */ + @Generated + public RealtimeTurnDetectionServerVad setIdleTimeoutMs(Long idleTimeoutMs) { + this.idleTimeoutMs = idleTimeoutMs; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeNumberField("threshold", this.threshold); + jsonWriter.writeNumberField("prefix_padding_ms", this.prefixPaddingMs); + jsonWriter.writeNumberField("silence_duration_ms", this.silenceDurationMs); + jsonWriter.writeBooleanField("create_response", this.createResponse); + jsonWriter.writeBooleanField("interrupt_response", this.interruptResponse); + jsonWriter.writeNumberField("idle_timeout_ms", this.idleTimeoutMs); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeTurnDetectionServerVad from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeTurnDetectionServerVad if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeTurnDetectionServerVad. + */ + @Generated + public static RealtimeTurnDetectionServerVad fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeTurnDetectionServerVad deserializedRealtimeTurnDetectionServerVad + = new RealtimeTurnDetectionServerVad(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeTurnDetectionServerVad.type + = RealtimeTurnDetectionType.fromString(reader.getString()); + } else if ("threshold".equals(fieldName)) { + deserializedRealtimeTurnDetectionServerVad.threshold = reader.getNullable(JsonReader::getDouble); + } else if ("prefix_padding_ms".equals(fieldName)) { + deserializedRealtimeTurnDetectionServerVad.prefixPaddingMs + = reader.getNullable(JsonReader::getLong); + } else if ("silence_duration_ms".equals(fieldName)) { + deserializedRealtimeTurnDetectionServerVad.silenceDurationMs + = reader.getNullable(JsonReader::getLong); + } else if ("create_response".equals(fieldName)) { + deserializedRealtimeTurnDetectionServerVad.createResponse + = reader.getNullable(JsonReader::getBoolean); + } else if ("interrupt_response".equals(fieldName)) { + deserializedRealtimeTurnDetectionServerVad.interruptResponse + = reader.getNullable(JsonReader::getBoolean); + } else if ("idle_timeout_ms".equals(fieldName)) { + deserializedRealtimeTurnDetectionServerVad.idleTimeoutMs = reader.getNullable(JsonReader::getLong); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeTurnDetectionServerVad; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionType.java new file mode 100644 index 0000000000000..b0d6a7b5ee991 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionType.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Defines values for RealtimeTurnDetectionType. + */ +public final class RealtimeTurnDetectionType extends ExpandableStringEnum { + + /** + * Static value server_vad for RealtimeTurnDetectionType. + */ + @Generated + public static final RealtimeTurnDetectionType SERVER_VAD = fromString("server_vad"); + + /** + * Static value semantic_vad for RealtimeTurnDetectionType. + */ + @Generated + public static final RealtimeTurnDetectionType SEMANTIC_VAD = fromString("semantic_vad"); + + /** + * Creates a new instance of RealtimeTurnDetectionType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public RealtimeTurnDetectionType() { + } + + /** + * Creates or finds a RealtimeTurnDetectionType from its string representation. + * + * @param name a name to look for. + * @return the corresponding RealtimeTurnDetectionType. + */ + @Generated + public static RealtimeTurnDetectionType fromString(String name) { + return fromString(name, RealtimeTurnDetectionType.class); + } + + /** + * Gets known RealtimeTurnDetectionType values. + * + * @return known RealtimeTurnDetectionType values. + */ + @Generated + public static Collection values() { + return values(RealtimeTurnDetectionType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ResponsePromptVariables.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ResponsePromptVariables.java new file mode 100644 index 0000000000000..2870b08f456eb --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ResponsePromptVariables.java @@ -0,0 +1,114 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * Prompt Variables + * + * Optional map of values to substitute in for variables in your + * prompt. The substitution values can either be strings, or other + * Response input types like images or files. + */ +@Fluent +public final class ResponsePromptVariables implements JsonSerializable { + + /* + * Optional map of values to substitute in for variables in your + * prompt. The substitution values can either be strings, or other + * Response input types like images or files. + */ + @Generated + private Map additionalProperties; + + /** + * Creates an instance of ResponsePromptVariables class. + */ + @Generated + public ResponsePromptVariables() { + } + + /** + * Get the additionalProperties property: Optional map of values to substitute in for variables in your + * prompt. The substitution values can either be strings, or other + * Response input types like images or files. + * + * @return the additionalProperties value. + */ + @Generated + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + /** + * Set the additionalProperties property: Optional map of values to substitute in for variables in your + * prompt. The substitution values can either be strings, or other + * Response input types like images or files. + * + * @param additionalProperties the additionalProperties value to set. + * @return the ResponsePromptVariables object itself. + */ + @Generated + public ResponsePromptVariables setAdditionalProperties(Map additionalProperties) { + this.additionalProperties = additionalProperties; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (additionalProperties != null) { + for (Map.Entry additionalProperty : additionalProperties.entrySet()) { + jsonWriter.writeFieldName(additionalProperty.getKey()); + if (additionalProperty.getValue() == null) { + jsonWriter.writeNull(); + } else { + additionalProperty.getValue().writeTo(jsonWriter); + } + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ResponsePromptVariables from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ResponsePromptVariables if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the ResponsePromptVariables. + */ + @Generated + public static ResponsePromptVariables fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ResponsePromptVariables deserializedResponsePromptVariables = new ResponsePromptVariables(); + Map additionalProperties = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if (additionalProperties == null) { + additionalProperties = new LinkedHashMap<>(); + } + additionalProperties.put(fieldName, + reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped()))); + } + deserializedResponsePromptVariables.additionalProperties = additionalProperties; + return deserializedResponsePromptVariables; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TokenLimits.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TokenLimits.java new file mode 100644 index 0000000000000..2379127db41e5 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TokenLimits.java @@ -0,0 +1,90 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The TokenLimits model. + */ +@Fluent +public final class TokenLimits implements JsonSerializable { + + /* + * The post_instructions property. + */ + @Generated + private Long postInstructions; + + /** + * Creates an instance of TokenLimits class. + */ + @Generated + public TokenLimits() { + } + + /** + * Get the postInstructions property: The post_instructions property. + * + * @return the postInstructions value. + */ + @Generated + public Long getPostInstructions() { + return this.postInstructions; + } + + /** + * Set the postInstructions property: The post_instructions property. + * + * @param postInstructions the postInstructions value to set. + * @return the TokenLimits object itself. + */ + @Generated + public TokenLimits setPostInstructions(Long postInstructions) { + this.postInstructions = postInstructions; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeNumberField("post_instructions", this.postInstructions); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TokenLimits from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TokenLimits if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the TokenLimits. + */ + @Generated + public static TokenLimits fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TokenLimits deserializedTokenLimits = new TokenLimits(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("post_instructions".equals(fieldName)) { + deserializedTokenLimits.postInstructions = reader.getNullable(JsonReader::getLong); + } else { + reader.skipChildren(); + } + } + return deserializedTokenLimits; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceOptions.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceOptions.java new file mode 100644 index 0000000000000..7a305f517b751 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceOptions.java @@ -0,0 +1,67 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Tool choice mode + * + * Controls which (if any) tool is called by the model. + * `none` means the model will not call any tool and instead generates a message. + * `auto` means the model can pick between generating a message or calling one or + * more tools. + * `required` means the model must call one or more tools. + */ +public enum ToolChoiceOptions { + /** + * Enum value none. + */ + NONE("none"), + + /** + * Enum value auto. + */ + AUTO("auto"), + + /** + * Enum value required. + */ + REQUIRED("required"); + + /** + * The actual serialized value for a ToolChoiceOptions instance. + */ + private final String value; + + ToolChoiceOptions(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a ToolChoiceOptions instance. + * + * @param value the serialized value to parse. + * @return the parsed ToolChoiceOptions object, or null if unable to parse. + */ + public static ToolChoiceOptions fromString(String value) { + if (value == null) { + return null; + } + ToolChoiceOptions[] items = ToolChoiceOptions.values(); + for (ToolChoiceOptions item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptTextUsageDuration.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptTextUsageDuration.java new file mode 100644 index 0000000000000..785be887c73b0 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptTextUsageDuration.java @@ -0,0 +1,112 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; + +/** + * Duration Usage + * + * Usage statistics for models billed by audio input duration. + */ +@Immutable +public final class TranscriptTextUsageDuration extends CreateTranscriptionResponseJsonUsage { + + /* + * The type property. + */ + @Generated + private CreateTranscriptionResponseJsonUsageType type = CreateTranscriptionResponseJsonUsageType.DURATION; + + /* + * Duration of the input audio in seconds. + */ + @Generated + private final long seconds; + + /** + * Creates an instance of TranscriptTextUsageDuration class. + * + * @param seconds the seconds value to set. + */ + @Generated + private TranscriptTextUsageDuration(Duration seconds) { + if (seconds == null) { + this.seconds = 0L; + } else { + this.seconds = seconds.getSeconds(); + } + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public CreateTranscriptionResponseJsonUsageType getType() { + return this.type; + } + + /** + * Get the seconds property: Duration of the input audio in seconds. + * + * @return the seconds value. + */ + @Generated + public Duration getSeconds() { + return Duration.ofSeconds(this.seconds); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeLongField("seconds", this.seconds); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TranscriptTextUsageDuration from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TranscriptTextUsageDuration if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TranscriptTextUsageDuration. + */ + @Generated + public static TranscriptTextUsageDuration fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + Duration seconds = null; + CreateTranscriptionResponseJsonUsageType type = CreateTranscriptionResponseJsonUsageType.DURATION; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("seconds".equals(fieldName)) { + seconds = Duration.ofSeconds(reader.getLong()); + } else if ("type".equals(fieldName)) { + type = CreateTranscriptionResponseJsonUsageType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + TranscriptTextUsageDuration deserializedTranscriptTextUsageDuration + = new TranscriptTextUsageDuration(seconds); + deserializedTranscriptTextUsageDuration.type = type; + return deserializedTranscriptTextUsageDuration; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptTextUsageTokens.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptTextUsageTokens.java new file mode 100644 index 0000000000000..031f7253d1312 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptTextUsageTokens.java @@ -0,0 +1,172 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Token Usage + * + * Usage statistics for models billed by token usage. + */ +@Immutable +public final class TranscriptTextUsageTokens extends CreateTranscriptionResponseJsonUsage { + + /* + * The type property. + */ + @Generated + private CreateTranscriptionResponseJsonUsageType type = CreateTranscriptionResponseJsonUsageType.TOKENS; + + /* + * Number of input tokens billed for this request. + */ + @Generated + private final long inputTokens; + + /* + * Details about the input tokens billed for this request. + */ + @Generated + private TranscriptTextUsageTokensInputTokenDetails inputTokenDetails; + + /* + * Number of output tokens generated. + */ + @Generated + private final long outputTokens; + + /* + * Total number of tokens used (input + output). + */ + @Generated + private final long totalTokens; + + /** + * Creates an instance of TranscriptTextUsageTokens class. + * + * @param inputTokens the inputTokens value to set. + * @param outputTokens the outputTokens value to set. + * @param totalTokens the totalTokens value to set. + */ + @Generated + private TranscriptTextUsageTokens(long inputTokens, long outputTokens, long totalTokens) { + this.inputTokens = inputTokens; + this.outputTokens = outputTokens; + this.totalTokens = totalTokens; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public CreateTranscriptionResponseJsonUsageType getType() { + return this.type; + } + + /** + * Get the inputTokens property: Number of input tokens billed for this request. + * + * @return the inputTokens value. + */ + @Generated + public long getInputTokens() { + return this.inputTokens; + } + + /** + * Get the inputTokenDetails property: Details about the input tokens billed for this request. + * + * @return the inputTokenDetails value. + */ + @Generated + public TranscriptTextUsageTokensInputTokenDetails getInputTokenDetails() { + return this.inputTokenDetails; + } + + /** + * Get the outputTokens property: Number of output tokens generated. + * + * @return the outputTokens value. + */ + @Generated + public long getOutputTokens() { + return this.outputTokens; + } + + /** + * Get the totalTokens property: Total number of tokens used (input + output). + * + * @return the totalTokens value. + */ + @Generated + public long getTotalTokens() { + return this.totalTokens; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeLongField("input_tokens", this.inputTokens); + jsonWriter.writeLongField("output_tokens", this.outputTokens); + jsonWriter.writeLongField("total_tokens", this.totalTokens); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeJsonField("input_token_details", this.inputTokenDetails); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TranscriptTextUsageTokens from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TranscriptTextUsageTokens if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TranscriptTextUsageTokens. + */ + @Generated + public static TranscriptTextUsageTokens fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + long inputTokens = 0L; + long outputTokens = 0L; + long totalTokens = 0L; + CreateTranscriptionResponseJsonUsageType type = CreateTranscriptionResponseJsonUsageType.TOKENS; + TranscriptTextUsageTokensInputTokenDetails inputTokenDetails = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("input_tokens".equals(fieldName)) { + inputTokens = reader.getLong(); + } else if ("output_tokens".equals(fieldName)) { + outputTokens = reader.getLong(); + } else if ("total_tokens".equals(fieldName)) { + totalTokens = reader.getLong(); + } else if ("type".equals(fieldName)) { + type = CreateTranscriptionResponseJsonUsageType.fromString(reader.getString()); + } else if ("input_token_details".equals(fieldName)) { + inputTokenDetails = TranscriptTextUsageTokensInputTokenDetails.fromJson(reader); + } else { + reader.skipChildren(); + } + } + TranscriptTextUsageTokens deserializedTranscriptTextUsageTokens + = new TranscriptTextUsageTokens(inputTokens, outputTokens, totalTokens); + deserializedTranscriptTextUsageTokens.type = type; + deserializedTranscriptTextUsageTokens.inputTokenDetails = inputTokenDetails; + return deserializedTranscriptTextUsageTokens; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptTextUsageTokensInputTokenDetails.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptTextUsageTokensInputTokenDetails.java new file mode 100644 index 0000000000000..b25e09126582b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptTextUsageTokensInputTokenDetails.java @@ -0,0 +1,101 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The TranscriptTextUsageTokensInputTokenDetails model. + */ +@Immutable +public final class TranscriptTextUsageTokensInputTokenDetails + implements JsonSerializable { + + /* + * The text_tokens property. + */ + @Generated + private Long textTokens; + + /* + * The audio_tokens property. + */ + @Generated + private Long audioTokens; + + /** + * Creates an instance of TranscriptTextUsageTokensInputTokenDetails class. + */ + @Generated + private TranscriptTextUsageTokensInputTokenDetails() { + } + + /** + * Get the textTokens property: The text_tokens property. + * + * @return the textTokens value. + */ + @Generated + public Long getTextTokens() { + return this.textTokens; + } + + /** + * Get the audioTokens property: The audio_tokens property. + * + * @return the audioTokens value. + */ + @Generated + public Long getAudioTokens() { + return this.audioTokens; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeNumberField("text_tokens", this.textTokens); + jsonWriter.writeNumberField("audio_tokens", this.audioTokens); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TranscriptTextUsageTokensInputTokenDetails from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TranscriptTextUsageTokensInputTokenDetails if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the TranscriptTextUsageTokensInputTokenDetails. + */ + @Generated + public static TranscriptTextUsageTokensInputTokenDetails fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TranscriptTextUsageTokensInputTokenDetails deserializedTranscriptTextUsageTokensInputTokenDetails + = new TranscriptTextUsageTokensInputTokenDetails(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("text_tokens".equals(fieldName)) { + deserializedTranscriptTextUsageTokensInputTokenDetails.textTokens + = reader.getNullable(JsonReader::getLong); + } else if ("audio_tokens".equals(fieldName)) { + deserializedTranscriptTextUsageTokensInputTokenDetails.audioTokens + = reader.getNullable(JsonReader::getLong); + } else { + reader.skipChildren(); + } + } + return deserializedTranscriptTextUsageTokensInputTokenDetails; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptionLanguage.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptionLanguage.java new file mode 100644 index 0000000000000..2cd91fab3cc30 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TranscriptionLanguage.java @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A language detected in transcribed audio. + */ +@Immutable +public final class TranscriptionLanguage implements JsonSerializable { + + /* + * The code of a language detected in the audio. + */ + @Generated + private final String code; + + /** + * Creates an instance of TranscriptionLanguage class. + * + * @param code the code value to set. + */ + @Generated + private TranscriptionLanguage(String code) { + this.code = code; + } + + /** + * Get the code property: The code of a language detected in the audio. + * + * @return the code value. + */ + @Generated + public String getCode() { + return this.code; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("code", this.code); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TranscriptionLanguage from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TranscriptionLanguage if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TranscriptionLanguage. + */ + @Generated + public static TranscriptionLanguage fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String code = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("code".equals(fieldName)) { + code = reader.getString(); + } else { + reader.skipChildren(); + } + } + return new TranscriptionLanguage(code); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAnimationConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAnimationConfig.java new file mode 100644 index 0000000000000..670a77f4fc64a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAnimationConfig.java @@ -0,0 +1,125 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Animation settings for a voice-agent session. + */ +@Fluent +public final class VoiceAgentAnimationConfig implements JsonSerializable { + + /* + * The animation model name. + */ + @Generated + private String modelName; + + /* + * The requested animation output kinds. + */ + @Generated + private List outputs; + + /** + * Creates an instance of VoiceAgentAnimationConfig class. + */ + @Generated + public VoiceAgentAnimationConfig() { + } + + /** + * Get the modelName property: The animation model name. + * + * @return the modelName value. + */ + @Generated + public String getModelName() { + return this.modelName; + } + + /** + * Set the modelName property: The animation model name. + * + * @param modelName the modelName value to set. + * @return the VoiceAgentAnimationConfig object itself. + */ + @Generated + public VoiceAgentAnimationConfig setModelName(String modelName) { + this.modelName = modelName; + return this; + } + + /** + * Get the outputs property: The requested animation output kinds. + * + * @return the outputs value. + */ + @Generated + public List getOutputs() { + return this.outputs; + } + + /** + * Set the outputs property: The requested animation output kinds. + * + * @param outputs the outputs value to set. + * @return the VoiceAgentAnimationConfig object itself. + */ + @Generated + public VoiceAgentAnimationConfig setOutputs(List outputs) { + this.outputs = outputs; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("model_name", this.modelName); + jsonWriter.writeArrayField("outputs", this.outputs, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentAnimationConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentAnimationConfig if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentAnimationConfig. + */ + @Generated + public static VoiceAgentAnimationConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentAnimationConfig deserializedVoiceAgentAnimationConfig = new VoiceAgentAnimationConfig(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("model_name".equals(fieldName)) { + deserializedVoiceAgentAnimationConfig.modelName = reader.getString(); + } else if ("outputs".equals(fieldName)) { + List outputs + = reader.readArray(reader1 -> VoiceAgentAnimationOutputType.fromString(reader1.getString())); + deserializedVoiceAgentAnimationConfig.outputs = outputs; + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentAnimationConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAnimationOutputType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAnimationOutputType.java new file mode 100644 index 0000000000000..fdfce370f7d94 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAnimationOutputType.java @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * An animation output produced by a voice-agent session. + */ +public enum VoiceAgentAnimationOutputType { + /** + * Enum value blendshapes. + */ + BLENDSHAPES("blendshapes"), + + /** + * Enum value viseme_id. + */ + VISEME_ID("viseme_id"); + + /** + * The actual serialized value for a VoiceAgentAnimationOutputType instance. + */ + private final String value; + + VoiceAgentAnimationOutputType(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a VoiceAgentAnimationOutputType instance. + * + * @param value the serialized value to parse. + * @return the parsed VoiceAgentAnimationOutputType object, or null if unable to parse. + */ + public static VoiceAgentAnimationOutputType fromString(String value) { + if (value == null) { + return null; + } + VoiceAgentAnimationOutputType[] items = VoiceAgentAnimationOutputType.values(); + for (VoiceAgentAnimationOutputType item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarIceServer.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarIceServer.java new file mode 100644 index 0000000000000..6302757d3c2a8 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarIceServer.java @@ -0,0 +1,150 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * An ICE server used for avatar WebRTC negotiation. + */ +@Fluent +public final class VoiceAgentAvatarIceServer implements JsonSerializable { + + /* + * The urls property. + */ + @Generated + private final List urls; + + /* + * The username property. + */ + @Generated + private String username; + + /* + * The credential property. + */ + @Generated + private String credential; + + /** + * Creates an instance of VoiceAgentAvatarIceServer class. + * + * @param urls the urls value to set. + */ + @Generated + public VoiceAgentAvatarIceServer(List urls) { + this.urls = urls; + } + + /** + * Get the urls property: The urls property. + * + * @return the urls value. + */ + @Generated + public List getUrls() { + return this.urls; + } + + /** + * Get the username property: The username property. + * + * @return the username value. + */ + @Generated + public String getUsername() { + return this.username; + } + + /** + * Set the username property: The username property. + * + * @param username the username value to set. + * @return the VoiceAgentAvatarIceServer object itself. + */ + @Generated + public VoiceAgentAvatarIceServer setUsername(String username) { + this.username = username; + return this; + } + + /** + * Get the credential property: The credential property. + * + * @return the credential value. + */ + @Generated + public String getCredential() { + return this.credential; + } + + /** + * Set the credential property: The credential property. + * + * @param credential the credential value to set. + * @return the VoiceAgentAvatarIceServer object itself. + */ + @Generated + public VoiceAgentAvatarIceServer setCredential(String credential) { + this.credential = credential; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("urls", this.urls, (writer, element) -> writer.writeString(element)); + jsonWriter.writeStringField("username", this.username); + jsonWriter.writeStringField("credential", this.credential); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentAvatarIceServer from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentAvatarIceServer if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentAvatarIceServer. + */ + @Generated + public static VoiceAgentAvatarIceServer fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + List urls = null; + String username = null; + String credential = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("urls".equals(fieldName)) { + urls = reader.readArray(reader1 -> reader1.getString()); + } else if ("username".equals(fieldName)) { + username = reader.getString(); + } else if ("credential".equals(fieldName)) { + credential = reader.getString(); + } else { + reader.skipChildren(); + } + } + VoiceAgentAvatarIceServer deserializedVoiceAgentAvatarIceServer = new VoiceAgentAvatarIceServer(urls); + deserializedVoiceAgentAvatarIceServer.username = username; + deserializedVoiceAgentAvatarIceServer.credential = credential; + return deserializedVoiceAgentAvatarIceServer; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentClientEventRtcCallSdpCreate.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentClientEventRtcCallSdpCreate.java new file mode 100644 index 0000000000000..85c2cfb7bae24 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentClientEventRtcCallSdpCreate.java @@ -0,0 +1,174 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The `rtc.call.sdp.create` client event: begins WebRTC signaling with an SDP offer. + */ +@Fluent +public final class VoiceAgentClientEventRtcCallSdpCreate extends RealtimeClientEvent { + + /* + * The type property. + */ + @Generated + private RealtimeClientEventType type = RealtimeClientEventType.RTC_CALL_SDP_CREATE; + + /* + * An optional client-generated event identifier. + */ + @Generated + private String eventId; + + /* + * The client's SDP offer for the WebRTC connection. + */ + @Generated + private final String sdpOffer; + + /* + * Optional session configuration. For an `/agents` endpoint the service rebuilds it authoritatively from the + * persisted agent definition. + */ + @Generated + private VoiceAgentSessionUpdateConfig session; + + /** + * Creates an instance of VoiceAgentClientEventRtcCallSdpCreate class. + * + * @param sdpOffer the sdpOffer value to set. + */ + @Generated + public VoiceAgentClientEventRtcCallSdpCreate(String sdpOffer) { + this.sdpOffer = sdpOffer; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeClientEventType getType() { + return this.type; + } + + /** + * Get the eventId property: An optional client-generated event identifier. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Set the eventId property: An optional client-generated event identifier. + * + * @param eventId the eventId value to set. + * @return the VoiceAgentClientEventRtcCallSdpCreate object itself. + */ + @Generated + public VoiceAgentClientEventRtcCallSdpCreate setEventId(String eventId) { + this.eventId = eventId; + return this; + } + + /** + * Get the sdpOffer property: The client's SDP offer for the WebRTC connection. + * + * @return the sdpOffer value. + */ + @Generated + public String getSdpOffer() { + return this.sdpOffer; + } + + /** + * Get the session property: Optional session configuration. For an `/agents` endpoint the service rebuilds it + * authoritatively from the persisted agent definition. + * + * @return the session value. + */ + @Generated + public VoiceAgentSessionUpdateConfig getSession() { + return this.session; + } + + /** + * Set the session property: Optional session configuration. For an `/agents` endpoint the service rebuilds it + * authoritatively from the persisted agent definition. + * + * @param session the session value to set. + * @return the VoiceAgentClientEventRtcCallSdpCreate object itself. + */ + @Generated + public VoiceAgentClientEventRtcCallSdpCreate setSession(VoiceAgentSessionUpdateConfig session) { + this.session = session; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("sdp_offer", this.sdpOffer); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeJsonField("session", this.session); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentClientEventRtcCallSdpCreate from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentClientEventRtcCallSdpCreate if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentClientEventRtcCallSdpCreate. + */ + @Generated + public static VoiceAgentClientEventRtcCallSdpCreate fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String sdpOffer = null; + RealtimeClientEventType type = RealtimeClientEventType.RTC_CALL_SDP_CREATE; + String eventId = null; + VoiceAgentSessionUpdateConfig session = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("sdp_offer".equals(fieldName)) { + sdpOffer = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeClientEventType.fromString(reader.getString()); + } else if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("session".equals(fieldName)) { + session = VoiceAgentSessionUpdateConfig.fromJson(reader); + } else { + reader.skipChildren(); + } + } + VoiceAgentClientEventRtcCallSdpCreate deserializedVoiceAgentClientEventRtcCallSdpCreate + = new VoiceAgentClientEventRtcCallSdpCreate(sdpOffer); + deserializedVoiceAgentClientEventRtcCallSdpCreate.type = type; + deserializedVoiceAgentClientEventRtcCallSdpCreate.eventId = eventId; + deserializedVoiceAgentClientEventRtcCallSdpCreate.session = session; + return deserializedVoiceAgentClientEventRtcCallSdpCreate; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentClientEventSessionAvatarConnect.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentClientEventSessionAvatarConnect.java new file mode 100644 index 0000000000000..37a647907c0ab --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentClientEventSessionAvatarConnect.java @@ -0,0 +1,138 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The `session.avatar.connect` client event. + */ +@Fluent +public final class VoiceAgentClientEventSessionAvatarConnect extends RealtimeClientEvent { + + /* + * The type property. + */ + @Generated + private RealtimeClientEventType type = RealtimeClientEventType.SESSION_AVATAR_CONNECT; + + /* + * An optional client-generated event identifier. + */ + @Generated + private String eventId; + + /* + * The client's SDP offer for avatar media negotiation. + */ + @Generated + private final String clientSdp; + + /** + * Creates an instance of VoiceAgentClientEventSessionAvatarConnect class. + * + * @param clientSdp the clientSdp value to set. + */ + @Generated + public VoiceAgentClientEventSessionAvatarConnect(String clientSdp) { + this.clientSdp = clientSdp; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeClientEventType getType() { + return this.type; + } + + /** + * Get the eventId property: An optional client-generated event identifier. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Set the eventId property: An optional client-generated event identifier. + * + * @param eventId the eventId value to set. + * @return the VoiceAgentClientEventSessionAvatarConnect object itself. + */ + @Generated + public VoiceAgentClientEventSessionAvatarConnect setEventId(String eventId) { + this.eventId = eventId; + return this; + } + + /** + * Get the clientSdp property: The client's SDP offer for avatar media negotiation. + * + * @return the clientSdp value. + */ + @Generated + public String getClientSdp() { + return this.clientSdp; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("client_sdp", this.clientSdp); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("event_id", this.eventId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentClientEventSessionAvatarConnect from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentClientEventSessionAvatarConnect if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentClientEventSessionAvatarConnect. + */ + @Generated + public static VoiceAgentClientEventSessionAvatarConnect fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String clientSdp = null; + RealtimeClientEventType type = RealtimeClientEventType.SESSION_AVATAR_CONNECT; + String eventId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("client_sdp".equals(fieldName)) { + clientSdp = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeClientEventType.fromString(reader.getString()); + } else if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else { + reader.skipChildren(); + } + } + VoiceAgentClientEventSessionAvatarConnect deserializedVoiceAgentClientEventSessionAvatarConnect + = new VoiceAgentClientEventSessionAvatarConnect(clientSdp); + deserializedVoiceAgentClientEventSessionAvatarConnect.type = type; + deserializedVoiceAgentClientEventSessionAvatarConnect.eventId = eventId; + return deserializedVoiceAgentClientEventSessionAvatarConnect; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentFunctionToolType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentFunctionToolType.java new file mode 100644 index 0000000000000..8574dd0c2fb15 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentFunctionToolType.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for VoiceAgentFunctionToolType. + */ +public enum VoiceAgentFunctionToolType { + /** + * Enum value function. + */ + FUNCTION("function"); + + /** + * The actual serialized value for a VoiceAgentFunctionToolType instance. + */ + private final String value; + + VoiceAgentFunctionToolType(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a VoiceAgentFunctionToolType instance. + * + * @param value the serialized value to parse. + * @return the parsed VoiceAgentFunctionToolType object, or null if unable to parse. + */ + public static VoiceAgentFunctionToolType fromString(String value) { + if (value == null) { + return null; + } + VoiceAgentFunctionToolType[] items = VoiceAgentFunctionToolType.values(); + for (VoiceAgentFunctionToolType item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentRealtimeResponse.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentRealtimeResponse.java new file mode 100644 index 0000000000000..8e9cde1df3d01 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentRealtimeResponse.java @@ -0,0 +1,319 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * A live realtime response returned by the voice-agent service in both `response.created` and `response.done` events. + */ +@Immutable +public final class VoiceAgentRealtimeResponse extends VoiceAgentRealtimeResponseBase { + + /* + * The audio configuration used by the live response, including flat voice provider, locale, and format fields under + * `output`. + */ + @Generated + private VoiceResponseAudio audio; + + /* + * The items produced by the live response. + */ + @Generated + private List output; + + /* + * Maximum number of output tokens for a single assistant response, + * inclusive of tool calls, that was used in this response. + */ + @Generated + private BinaryData maxOutputTokens; + + /* + * The set of modalities the model used to respond, currently the only possible values are + * `[\"audio\"]`, `[\"text\"]`. Audio output always include a text transcript. Setting the + * output to mode `text` will disable audio output from the model. + */ + @Generated + private List outputModalities; + + /* + * Which conversation the response is added to, determined by the `conversation` + * field in the `response.create` event. If `auto`, the response will be added to + * the default conversation and the value of `conversation_id` will be an id like + * `conv_1234`. If `none`, the response will not be added to any conversation and + * the value of `conversation_id` will be `null`. If responses are being triggered + * automatically by VAD the response will be added to the default conversation + */ + @Generated + private String conversationId; + + /* + * Usage statistics for the Response, this will correspond to billing. A + * Realtime API session will maintain a conversation context and append new + * Items to the Conversation, thus output from previous turns (text and + * audio tokens) will become the input for later turns. + */ + @Generated + private RealtimeResponseUsage usage; + + /* + * The metadata property. + */ + @Generated + private Map metadata; + + /* + * Additional details about the status. + */ + @Generated + private RealtimeResponseStatusDetails statusDetails; + + /* + * The final status of the response (`completed`, `cancelled`, `failed`, or + * `incomplete`, `in_progress`). + */ + @Generated + private VoiceResponseBaseStatus status; + + /* + * The object type, must be `realtime.response`. + */ + @Generated + private VoiceResponseBaseObject1 object; + + /* + * The unique ID of the response, will look like `resp_1234`. + */ + @Generated + private String id; + + /** + * Creates an instance of VoiceAgentRealtimeResponse class. + */ + @Generated + private VoiceAgentRealtimeResponse() { + } + + /** + * Get the audio property: The audio configuration used by the live response, including flat voice provider, locale, + * and format fields under `output`. + * + * @return the audio value. + */ + @Generated + public VoiceResponseAudio getAudio() { + return this.audio; + } + + /** + * Get the output property: The items produced by the live response. + * + * @return the output value. + */ + @Generated + public List getOutput() { + return this.output; + } + + /** + * Get the maxOutputTokens property: Maximum number of output tokens for a single assistant response, + * inclusive of tool calls, that was used in this response. + * + * @return the maxOutputTokens value. + */ + @Generated + @Override + public BinaryData getMaxOutputTokens() { + return this.maxOutputTokens; + } + + /** + * Get the outputModalities property: The set of modalities the model used to respond, currently the only possible + * values are + * `[\"audio\"]`, `[\"text\"]`. Audio output always include a text transcript. Setting the + * output to mode `text` will disable audio output from the model. + * + * @return the outputModalities value. + */ + @Generated + @Override + public List getOutputModalities() { + return this.outputModalities; + } + + /** + * Get the conversationId property: Which conversation the response is added to, determined by the `conversation` + * field in the `response.create` event. If `auto`, the response will be added to + * the default conversation and the value of `conversation_id` will be an id like + * `conv_1234`. If `none`, the response will not be added to any conversation and + * the value of `conversation_id` will be `null`. If responses are being triggered + * automatically by VAD the response will be added to the default conversation. + * + * @return the conversationId value. + */ + @Generated + @Override + public String getConversationId() { + return this.conversationId; + } + + /** + * Get the usage property: Usage statistics for the Response, this will correspond to billing. A + * Realtime API session will maintain a conversation context and append new + * Items to the Conversation, thus output from previous turns (text and + * audio tokens) will become the input for later turns. + * + * @return the usage value. + */ + @Generated + @Override + public RealtimeResponseUsage getUsage() { + return this.usage; + } + + /** + * Get the metadata property: The metadata property. + * + * @return the metadata value. + */ + @Generated + @Override + public Map getMetadata() { + return this.metadata; + } + + /** + * Get the statusDetails property: Additional details about the status. + * + * @return the statusDetails value. + */ + @Generated + @Override + public RealtimeResponseStatusDetails getStatusDetails() { + return this.statusDetails; + } + + /** + * Get the status property: The final status of the response (`completed`, `cancelled`, `failed`, or + * `incomplete`, `in_progress`). + * + * @return the status value. + */ + @Generated + @Override + public VoiceResponseBaseStatus getStatus() { + return this.status; + } + + /** + * Get the object property: The object type, must be `realtime.response`. + * + * @return the object value. + */ + @Generated + @Override + public VoiceResponseBaseObject1 getObject() { + return this.object; + } + + /** + * Get the id property: The unique ID of the response, will look like `resp_1234`. + * + * @return the id value. + */ + @Generated + @Override + public String getId() { + return this.id; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", getId()); + jsonWriter.writeStringField("object", getObject() == null ? null : getObject().toString()); + jsonWriter.writeStringField("status", getStatus() == null ? null : getStatus().toString()); + jsonWriter.writeJsonField("status_details", getStatusDetails()); + jsonWriter.writeMapField("metadata", getMetadata(), (writer, element) -> writer.writeString(element)); + jsonWriter.writeJsonField("usage", getUsage()); + jsonWriter.writeStringField("conversation_id", getConversationId()); + jsonWriter.writeArrayField("output_modalities", getOutputModalities(), + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + if (getMaxOutputTokens() != null) { + jsonWriter.writeFieldName("max_output_tokens"); + getMaxOutputTokens().writeTo(jsonWriter); + } + jsonWriter.writeJsonField("audio", this.audio); + jsonWriter.writeArrayField("output", this.output, (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentRealtimeResponse from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentRealtimeResponse if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentRealtimeResponse. + */ + @Generated + public static VoiceAgentRealtimeResponse fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentRealtimeResponse deserializedVoiceAgentRealtimeResponse = new VoiceAgentRealtimeResponse(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + deserializedVoiceAgentRealtimeResponse.id = reader.getString(); + } else if ("object".equals(fieldName)) { + deserializedVoiceAgentRealtimeResponse.object + = VoiceResponseBaseObject1.fromString(reader.getString()); + } else if ("status".equals(fieldName)) { + deserializedVoiceAgentRealtimeResponse.status + = VoiceResponseBaseStatus.fromString(reader.getString()); + } else if ("status_details".equals(fieldName)) { + deserializedVoiceAgentRealtimeResponse.statusDetails + = RealtimeResponseStatusDetails.fromJson(reader); + } else if ("metadata".equals(fieldName)) { + Map metadata = reader.readMap(reader1 -> reader1.getString()); + deserializedVoiceAgentRealtimeResponse.metadata = metadata; + } else if ("usage".equals(fieldName)) { + deserializedVoiceAgentRealtimeResponse.usage = RealtimeResponseUsage.fromJson(reader); + } else if ("conversation_id".equals(fieldName)) { + deserializedVoiceAgentRealtimeResponse.conversationId = reader.getString(); + } else if ("output_modalities".equals(fieldName)) { + List outputModalities + = reader.readArray(reader1 -> VoiceResponseBaseOutputModality.fromString(reader1.getString())); + deserializedVoiceAgentRealtimeResponse.outputModalities = outputModalities; + } else if ("max_output_tokens".equals(fieldName)) { + deserializedVoiceAgentRealtimeResponse.maxOutputTokens + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("audio".equals(fieldName)) { + deserializedVoiceAgentRealtimeResponse.audio = VoiceResponseAudio.fromJson(reader); + } else if ("output".equals(fieldName)) { + List output + = reader.readArray(reader1 -> RealtimeConversationItem.fromJson(reader1)); + deserializedVoiceAgentRealtimeResponse.output = output; + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentRealtimeResponse; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentRealtimeResponseBase.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentRealtimeResponseBase.java new file mode 100644 index 0000000000000..cf80d83d53070 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentRealtimeResponseBase.java @@ -0,0 +1,391 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * Properties shared by realtime responses returned by the voice-agent service. + */ +@Immutable +public class VoiceAgentRealtimeResponseBase implements JsonSerializable { + + /* + * The unique ID of the response, will look like `resp_1234`. + */ + @Generated + private String id; + + /* + * The object type, must be `realtime.response`. + */ + @Generated + private VoiceResponseBaseObject1 object; + + /* + * The final status of the response (`completed`, `cancelled`, `failed`, or + * `incomplete`, `in_progress`). + */ + @Generated + private VoiceResponseBaseStatus status; + + /* + * Additional details about the status. + */ + @Generated + private RealtimeResponseStatusDetails statusDetails; + + /* + * The metadata property. + */ + @Generated + private Map metadata; + + /* + * Usage statistics for the Response, this will correspond to billing. A + * Realtime API session will maintain a conversation context and append new + * Items to the Conversation, thus output from previous turns (text and + * audio tokens) will become the input for later turns. + */ + @Generated + private RealtimeResponseUsage usage; + + /* + * Which conversation the response is added to, determined by the `conversation` + * field in the `response.create` event. If `auto`, the response will be added to + * the default conversation and the value of `conversation_id` will be an id like + * `conv_1234`. If `none`, the response will not be added to any conversation and + * the value of `conversation_id` will be `null`. If responses are being triggered + * automatically by VAD the response will be added to the default conversation + */ + @Generated + private String conversationId; + + /* + * The set of modalities the model used to respond, currently the only possible values are + * `[\"audio\"]`, `[\"text\"]`. Audio output always include a text transcript. Setting the + * output to mode `text` will disable audio output from the model. + */ + @Generated + private List outputModalities; + + /* + * Maximum number of output tokens for a single assistant response, + * inclusive of tool calls, that was used in this response. + */ + @Generated + private BinaryData maxOutputTokens; + + /** + * Creates an instance of VoiceAgentRealtimeResponseBase class. + */ + @Generated + protected VoiceAgentRealtimeResponseBase() { + } + + /** + * Get the id property: The unique ID of the response, will look like `resp_1234`. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Set the id property: The unique ID of the response, will look like `resp_1234`. + * + * @param id the id value to set. + * @return the VoiceAgentRealtimeResponseBase object itself. + */ + @Generated + VoiceAgentRealtimeResponseBase setId(String id) { + this.id = id; + return this; + } + + /** + * Get the object property: The object type, must be `realtime.response`. + * + * @return the object value. + */ + @Generated + public VoiceResponseBaseObject1 getObject() { + return this.object; + } + + /** + * Set the object property: The object type, must be `realtime.response`. + * + * @param object the object value to set. + * @return the VoiceAgentRealtimeResponseBase object itself. + */ + @Generated + VoiceAgentRealtimeResponseBase setObject(VoiceResponseBaseObject1 object) { + this.object = object; + return this; + } + + /** + * Get the status property: The final status of the response (`completed`, `cancelled`, `failed`, or + * `incomplete`, `in_progress`). + * + * @return the status value. + */ + @Generated + public VoiceResponseBaseStatus getStatus() { + return this.status; + } + + /** + * Set the status property: The final status of the response (`completed`, `cancelled`, `failed`, or + * `incomplete`, `in_progress`). + * + * @param status the status value to set. + * @return the VoiceAgentRealtimeResponseBase object itself. + */ + @Generated + VoiceAgentRealtimeResponseBase setStatus(VoiceResponseBaseStatus status) { + this.status = status; + return this; + } + + /** + * Get the statusDetails property: Additional details about the status. + * + * @return the statusDetails value. + */ + @Generated + public RealtimeResponseStatusDetails getStatusDetails() { + return this.statusDetails; + } + + /** + * Set the statusDetails property: Additional details about the status. + * + * @param statusDetails the statusDetails value to set. + * @return the VoiceAgentRealtimeResponseBase object itself. + */ + @Generated + VoiceAgentRealtimeResponseBase setStatusDetails(RealtimeResponseStatusDetails statusDetails) { + this.statusDetails = statusDetails; + return this; + } + + /** + * Get the metadata property: The metadata property. + * + * @return the metadata value. + */ + @Generated + public Map getMetadata() { + return this.metadata; + } + + /** + * Get the usage property: Usage statistics for the Response, this will correspond to billing. A + * Realtime API session will maintain a conversation context and append new + * Items to the Conversation, thus output from previous turns (text and + * audio tokens) will become the input for later turns. + * + * @return the usage value. + */ + @Generated + public RealtimeResponseUsage getUsage() { + return this.usage; + } + + /** + * Set the usage property: Usage statistics for the Response, this will correspond to billing. A + * Realtime API session will maintain a conversation context and append new + * Items to the Conversation, thus output from previous turns (text and + * audio tokens) will become the input for later turns. + * + * @param usage the usage value to set. + * @return the VoiceAgentRealtimeResponseBase object itself. + */ + @Generated + VoiceAgentRealtimeResponseBase setUsage(RealtimeResponseUsage usage) { + this.usage = usage; + return this; + } + + /** + * Get the conversationId property: Which conversation the response is added to, determined by the `conversation` + * field in the `response.create` event. If `auto`, the response will be added to + * the default conversation and the value of `conversation_id` will be an id like + * `conv_1234`. If `none`, the response will not be added to any conversation and + * the value of `conversation_id` will be `null`. If responses are being triggered + * automatically by VAD the response will be added to the default conversation. + * + * @return the conversationId value. + */ + @Generated + public String getConversationId() { + return this.conversationId; + } + + /** + * Set the conversationId property: Which conversation the response is added to, determined by the `conversation` + * field in the `response.create` event. If `auto`, the response will be added to + * the default conversation and the value of `conversation_id` will be an id like + * `conv_1234`. If `none`, the response will not be added to any conversation and + * the value of `conversation_id` will be `null`. If responses are being triggered + * automatically by VAD the response will be added to the default conversation. + * + * @param conversationId the conversationId value to set. + * @return the VoiceAgentRealtimeResponseBase object itself. + */ + @Generated + VoiceAgentRealtimeResponseBase setConversationId(String conversationId) { + this.conversationId = conversationId; + return this; + } + + /** + * Get the outputModalities property: The set of modalities the model used to respond, currently the only possible + * values are + * `[\"audio\"]`, `[\"text\"]`. Audio output always include a text transcript. Setting the + * output to mode `text` will disable audio output from the model. + * + * @return the outputModalities value. + */ + @Generated + public List getOutputModalities() { + return this.outputModalities; + } + + /** + * Set the outputModalities property: The set of modalities the model used to respond, currently the only possible + * values are + * `[\"audio\"]`, `[\"text\"]`. Audio output always include a text transcript. Setting the + * output to mode `text` will disable audio output from the model. + * + * @param outputModalities the outputModalities value to set. + * @return the VoiceAgentRealtimeResponseBase object itself. + */ + @Generated + VoiceAgentRealtimeResponseBase setOutputModalities(List outputModalities) { + this.outputModalities = outputModalities; + return this; + } + + /** + * Get the maxOutputTokens property: Maximum number of output tokens for a single assistant response, + * inclusive of tool calls, that was used in this response. + * + * @return the maxOutputTokens value. + */ + @Generated + public BinaryData getMaxOutputTokens() { + return this.maxOutputTokens; + } + + /** + * Set the maxOutputTokens property: Maximum number of output tokens for a single assistant response, + * inclusive of tool calls, that was used in this response. + * + * @param maxOutputTokens the maxOutputTokens value to set. + * @return the VoiceAgentRealtimeResponseBase object itself. + */ + @Generated + VoiceAgentRealtimeResponseBase setMaxOutputTokens(BinaryData maxOutputTokens) { + this.maxOutputTokens = maxOutputTokens; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("object", this.object == null ? null : this.object.toString()); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + jsonWriter.writeJsonField("status_details", this.statusDetails); + jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element)); + jsonWriter.writeJsonField("usage", this.usage); + jsonWriter.writeStringField("conversation_id", this.conversationId); + jsonWriter.writeArrayField("output_modalities", this.outputModalities, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + if (this.maxOutputTokens != null) { + jsonWriter.writeFieldName("max_output_tokens"); + this.maxOutputTokens.writeTo(jsonWriter); + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentRealtimeResponseBase from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentRealtimeResponseBase if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentRealtimeResponseBase. + */ + @Generated + public static VoiceAgentRealtimeResponseBase fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentRealtimeResponseBase deserializedVoiceAgentRealtimeResponseBase + = new VoiceAgentRealtimeResponseBase(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + deserializedVoiceAgentRealtimeResponseBase.id = reader.getString(); + } else if ("object".equals(fieldName)) { + deserializedVoiceAgentRealtimeResponseBase.object + = VoiceResponseBaseObject1.fromString(reader.getString()); + } else if ("status".equals(fieldName)) { + deserializedVoiceAgentRealtimeResponseBase.status + = VoiceResponseBaseStatus.fromString(reader.getString()); + } else if ("status_details".equals(fieldName)) { + deserializedVoiceAgentRealtimeResponseBase.statusDetails + = RealtimeResponseStatusDetails.fromJson(reader); + } else if ("metadata".equals(fieldName)) { + Map metadata = reader.readMap(reader1 -> reader1.getString()); + deserializedVoiceAgentRealtimeResponseBase.metadata = metadata; + } else if ("usage".equals(fieldName)) { + deserializedVoiceAgentRealtimeResponseBase.usage = RealtimeResponseUsage.fromJson(reader); + } else if ("conversation_id".equals(fieldName)) { + deserializedVoiceAgentRealtimeResponseBase.conversationId = reader.getString(); + } else if ("output_modalities".equals(fieldName)) { + List outputModalities + = reader.readArray(reader1 -> VoiceResponseBaseOutputModality.fromString(reader1.getString())); + deserializedVoiceAgentRealtimeResponseBase.outputModalities = outputModalities; + } else if ("max_output_tokens".equals(fieldName)) { + deserializedVoiceAgentRealtimeResponseBase.maxOutputTokens + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentRealtimeResponseBase; + }); + } + + /** + * Set the metadata property: The metadata property. + * + * @param metadata the metadata value to set. + * @return the VoiceAgentRealtimeResponseBase object itself. + */ + @Generated + VoiceAgentRealtimeResponseBase setMetadata(Map metadata) { + this.metadata = metadata; + return this; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentResponseCreateParams.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentResponseCreateParams.java new file mode 100644 index 0000000000000..5780af3216a7e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentResponseCreateParams.java @@ -0,0 +1,539 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * Parameters accepted by a voice-agent `response.create` event. + */ +@Fluent +public final class VoiceAgentResponseCreateParams implements JsonSerializable { + + /* + * The default system instructions (i.e. system message) prepended to model calls. This field allows the client to + * guide the model on desired responses. The model can be instructed on response content and format, (e.g. + * "be extremely succinct", "act friendly", "here are examples of good responses") and on audio behavior (e.g. + * "talk quickly", "inject emotion into your voice", "laugh frequently"). The instructions are not guaranteed to be + * followed by the model, but they provide guidance to the model on the desired behavior. + * Note that the server sets default instructions which will be used if this field is not set and are visible in the + * `session.created` event at the start of the session. + */ + @Generated + private String instructions; + + /* + * Tools available to the model. + */ + @Generated + private List tools; + + /* + * How the model chooses tools. Provide one of the string modes or force a specific + * function/MCP tool. + */ + @Generated + private BinaryData toolChoice; + + /* + * Whether the model may call multiple tools in parallel. Only supported by + * reasoning Realtime models such as `gpt-realtime-2`. + */ + @Generated + private Boolean parallelToolCalls; + + /* + * The reasoning property. + */ + @Generated + private RealtimeReasoning reasoning; + + /* + * Maximum number of output tokens for a single assistant response, + * inclusive of tool calls. Provide an integer between 1 and 4096 to + * limit output tokens, or `inf` for the maximum available tokens for a + * given model. Defaults to `inf`. + */ + @Generated + private BinaryData maxOutputTokens; + + /* + * Controls which conversation the response is added to. Currently supports + * `auto` and `none`, with `auto` as the default value. The `auto` value + * means that the contents of the response will be added to the default + * conversation. Set this to `none` to create an out-of-band response which + * will not add items to default conversation. + */ + @Generated + private VoiceAgentResponseCreateParamsConversation conversation; + + /* + * The metadata property. + */ + @Generated + private Map metadata; + + /* + * Modalities that the response may return. + */ + @Generated + private List outputModalities; + + /* + * Response-specific audio settings. + */ + @Generated + private PickPropertiesVoiceAgentAudioConfig audio; + + /* + * Conversation items used as inline response input. + */ + @Generated + private List input; + + /* + * A pre-generated assistant message used to begin the response. + */ + @Generated + private RealtimeConversationItem preGeneratedAssistantMessage; + + /* + * Interim-response settings for this response. + */ + @Generated + private VoiceAgentInterimResponseConfig interimResponse; + + /** + * Creates an instance of VoiceAgentResponseCreateParams class. + */ + @Generated + public VoiceAgentResponseCreateParams() { + } + + /** + * Get the instructions property: The default system instructions (i.e. system message) prepended to model calls. + * This field allows the client to guide the model on desired responses. The model can be instructed on response + * content and format, (e.g. "be extremely succinct", "act friendly", "here are examples of good responses") and on + * audio behavior (e.g. "talk quickly", "inject emotion into your voice", "laugh frequently"). The instructions are + * not guaranteed to be followed by the model, but they provide guidance to the model on the desired behavior. + * Note that the server sets default instructions which will be used if this field is not set and are visible in the + * `session.created` event at the start of the session. + * + * @return the instructions value. + */ + @Generated + public String getInstructions() { + return this.instructions; + } + + /** + * Set the instructions property: The default system instructions (i.e. system message) prepended to model calls. + * This field allows the client to guide the model on desired responses. The model can be instructed on response + * content and format, (e.g. "be extremely succinct", "act friendly", "here are examples of good responses") and on + * audio behavior (e.g. "talk quickly", "inject emotion into your voice", "laugh frequently"). The instructions are + * not guaranteed to be followed by the model, but they provide guidance to the model on the desired behavior. + * Note that the server sets default instructions which will be used if this field is not set and are visible in the + * `session.created` event at the start of the session. + * + * @param instructions the instructions value to set. + * @return the VoiceAgentResponseCreateParams object itself. + */ + @Generated + public VoiceAgentResponseCreateParams setInstructions(String instructions) { + this.instructions = instructions; + return this; + } + + /** + * Get the tools property: Tools available to the model. + * + * @return the tools value. + */ + @Generated + public List getTools() { + return this.tools; + } + + /** + * Set the tools property: Tools available to the model. + * + * @param tools the tools value to set. + * @return the VoiceAgentResponseCreateParams object itself. + */ + @Generated + public VoiceAgentResponseCreateParams setTools(List tools) { + this.tools = tools; + return this; + } + + /** + * Get the toolChoice property: How the model chooses tools. Provide one of the string modes or force a specific + * function/MCP tool. + * + * @return the toolChoice value. + */ + @Generated + public BinaryData getToolChoice() { + return this.toolChoice; + } + + /** + * Set the toolChoice property: How the model chooses tools. Provide one of the string modes or force a specific + * function/MCP tool. + * + * @param toolChoice the toolChoice value to set. + * @return the VoiceAgentResponseCreateParams object itself. + */ + @Generated + public VoiceAgentResponseCreateParams setToolChoice(BinaryData toolChoice) { + this.toolChoice = toolChoice; + return this; + } + + /** + * Get the parallelToolCalls property: Whether the model may call multiple tools in parallel. Only supported by + * reasoning Realtime models such as `gpt-realtime-2`. + * + * @return the parallelToolCalls value. + */ + @Generated + public Boolean isParallelToolCalls() { + return this.parallelToolCalls; + } + + /** + * Set the parallelToolCalls property: Whether the model may call multiple tools in parallel. Only supported by + * reasoning Realtime models such as `gpt-realtime-2`. + * + * @param parallelToolCalls the parallelToolCalls value to set. + * @return the VoiceAgentResponseCreateParams object itself. + */ + @Generated + public VoiceAgentResponseCreateParams setParallelToolCalls(Boolean parallelToolCalls) { + this.parallelToolCalls = parallelToolCalls; + return this; + } + + /** + * Get the reasoning property: The reasoning property. + * + * @return the reasoning value. + */ + @Generated + public RealtimeReasoning getReasoning() { + return this.reasoning; + } + + /** + * Set the reasoning property: The reasoning property. + * + * @param reasoning the reasoning value to set. + * @return the VoiceAgentResponseCreateParams object itself. + */ + @Generated + public VoiceAgentResponseCreateParams setReasoning(RealtimeReasoning reasoning) { + this.reasoning = reasoning; + return this; + } + + /** + * Get the maxOutputTokens property: Maximum number of output tokens for a single assistant response, + * inclusive of tool calls. Provide an integer between 1 and 4096 to + * limit output tokens, or `inf` for the maximum available tokens for a + * given model. Defaults to `inf`. + * + * @return the maxOutputTokens value. + */ + @Generated + public BinaryData getMaxOutputTokens() { + return this.maxOutputTokens; + } + + /** + * Set the maxOutputTokens property: Maximum number of output tokens for a single assistant response, + * inclusive of tool calls. Provide an integer between 1 and 4096 to + * limit output tokens, or `inf` for the maximum available tokens for a + * given model. Defaults to `inf`. + * + * @param maxOutputTokens the maxOutputTokens value to set. + * @return the VoiceAgentResponseCreateParams object itself. + */ + @Generated + public VoiceAgentResponseCreateParams setMaxOutputTokens(BinaryData maxOutputTokens) { + this.maxOutputTokens = maxOutputTokens; + return this; + } + + /** + * Get the conversation property: Controls which conversation the response is added to. Currently supports + * `auto` and `none`, with `auto` as the default value. The `auto` value + * means that the contents of the response will be added to the default + * conversation. Set this to `none` to create an out-of-band response which + * will not add items to default conversation. + * + * @return the conversation value. + */ + @Generated + public VoiceAgentResponseCreateParamsConversation getConversation() { + return this.conversation; + } + + /** + * Set the conversation property: Controls which conversation the response is added to. Currently supports + * `auto` and `none`, with `auto` as the default value. The `auto` value + * means that the contents of the response will be added to the default + * conversation. Set this to `none` to create an out-of-band response which + * will not add items to default conversation. + * + * @param conversation the conversation value to set. + * @return the VoiceAgentResponseCreateParams object itself. + */ + @Generated + public VoiceAgentResponseCreateParams setConversation(VoiceAgentResponseCreateParamsConversation conversation) { + this.conversation = conversation; + return this; + } + + /** + * Get the metadata property: The metadata property. + * + * @return the metadata value. + */ + @Generated + public Map getMetadata() { + return this.metadata; + } + + /** + * Get the outputModalities property: Modalities that the response may return. + * + * @return the outputModalities value. + */ + @Generated + public List getOutputModalities() { + return this.outputModalities; + } + + /** + * Set the outputModalities property: Modalities that the response may return. + * + * @param outputModalities the outputModalities value to set. + * @return the VoiceAgentResponseCreateParams object itself. + */ + @Generated + public VoiceAgentResponseCreateParams setOutputModalities(List outputModalities) { + this.outputModalities = outputModalities; + return this; + } + + /** + * Get the audio property: Response-specific audio settings. + * + * @return the audio value. + */ + @Generated + public PickPropertiesVoiceAgentAudioConfig getAudio() { + return this.audio; + } + + /** + * Set the audio property: Response-specific audio settings. + * + * @param audio the audio value to set. + * @return the VoiceAgentResponseCreateParams object itself. + */ + @Generated + public VoiceAgentResponseCreateParams setAudio(PickPropertiesVoiceAgentAudioConfig audio) { + this.audio = audio; + return this; + } + + /** + * Get the input property: Conversation items used as inline response input. + * + * @return the input value. + */ + @Generated + public List getInput() { + return this.input; + } + + /** + * Set the input property: Conversation items used as inline response input. + * + * @param input the input value to set. + * @return the VoiceAgentResponseCreateParams object itself. + */ + @Generated + public VoiceAgentResponseCreateParams setInput(List input) { + this.input = input; + return this; + } + + /** + * Get the preGeneratedAssistantMessage property: A pre-generated assistant message used to begin the response. + * + * @return the preGeneratedAssistantMessage value. + */ + @Generated + public RealtimeConversationItem getPreGeneratedAssistantMessage() { + return this.preGeneratedAssistantMessage; + } + + /** + * Set the preGeneratedAssistantMessage property: A pre-generated assistant message used to begin the response. + * + * @param preGeneratedAssistantMessage the preGeneratedAssistantMessage value to set. + * @return the VoiceAgentResponseCreateParams object itself. + */ + @Generated + public VoiceAgentResponseCreateParams + setPreGeneratedAssistantMessage(RealtimeConversationItem preGeneratedAssistantMessage) { + this.preGeneratedAssistantMessage = preGeneratedAssistantMessage; + return this; + } + + /** + * Get the interimResponse property: Interim-response settings for this response. + * + * @return the interimResponse value. + */ + @Generated + public VoiceAgentInterimResponseConfig getInterimResponse() { + return this.interimResponse; + } + + /** + * Set the interimResponse property: Interim-response settings for this response. + * + * @param interimResponse the interimResponse value to set. + * @return the VoiceAgentResponseCreateParams object itself. + */ + @Generated + public VoiceAgentResponseCreateParams setInterimResponse(VoiceAgentInterimResponseConfig interimResponse) { + this.interimResponse = interimResponse; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("instructions", this.instructions); + jsonWriter.writeArrayField("tools", this.tools, (writer, element) -> { + if (element == null) { + writer.writeNull(); + } else { + element.writeTo(writer); + } + }); + if (this.toolChoice != null) { + jsonWriter.writeFieldName("tool_choice"); + this.toolChoice.writeTo(jsonWriter); + } + jsonWriter.writeBooleanField("parallel_tool_calls", this.parallelToolCalls); + jsonWriter.writeJsonField("reasoning", this.reasoning); + if (this.maxOutputTokens != null) { + jsonWriter.writeFieldName("max_output_tokens"); + this.maxOutputTokens.writeTo(jsonWriter); + } + jsonWriter.writeStringField("conversation", this.conversation == null ? null : this.conversation.toString()); + jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element)); + jsonWriter.writeArrayField("output_modalities", this.outputModalities, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + jsonWriter.writeJsonField("audio", this.audio); + jsonWriter.writeArrayField("input", this.input, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeJsonField("pre_generated_assistant_message", this.preGeneratedAssistantMessage); + jsonWriter.writeJsonField("interim_response", this.interimResponse); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentResponseCreateParams from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentResponseCreateParams if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentResponseCreateParams. + */ + @Generated + public static VoiceAgentResponseCreateParams fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentResponseCreateParams deserializedVoiceAgentResponseCreateParams + = new VoiceAgentResponseCreateParams(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("instructions".equals(fieldName)) { + deserializedVoiceAgentResponseCreateParams.instructions = reader.getString(); + } else if ("tools".equals(fieldName)) { + List tools = reader.readArray(reader1 -> reader1 + .getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped()))); + deserializedVoiceAgentResponseCreateParams.tools = tools; + } else if ("tool_choice".equals(fieldName)) { + deserializedVoiceAgentResponseCreateParams.toolChoice + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("parallel_tool_calls".equals(fieldName)) { + deserializedVoiceAgentResponseCreateParams.parallelToolCalls + = reader.getNullable(JsonReader::getBoolean); + } else if ("reasoning".equals(fieldName)) { + deserializedVoiceAgentResponseCreateParams.reasoning = RealtimeReasoning.fromJson(reader); + } else if ("max_output_tokens".equals(fieldName)) { + deserializedVoiceAgentResponseCreateParams.maxOutputTokens + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("conversation".equals(fieldName)) { + deserializedVoiceAgentResponseCreateParams.conversation + = VoiceAgentResponseCreateParamsConversation.fromString(reader.getString()); + } else if ("metadata".equals(fieldName)) { + Map metadata = reader.readMap(reader1 -> reader1.getString()); + deserializedVoiceAgentResponseCreateParams.metadata = metadata; + } else if ("output_modalities".equals(fieldName)) { + List outputModalities + = reader.readArray(reader1 -> VoiceOutputModality.fromString(reader1.getString())); + deserializedVoiceAgentResponseCreateParams.outputModalities = outputModalities; + } else if ("audio".equals(fieldName)) { + deserializedVoiceAgentResponseCreateParams.audio + = PickPropertiesVoiceAgentAudioConfig.fromJson(reader); + } else if ("input".equals(fieldName)) { + List input + = reader.readArray(reader1 -> RealtimeConversationItem.fromJson(reader1)); + deserializedVoiceAgentResponseCreateParams.input = input; + } else if ("pre_generated_assistant_message".equals(fieldName)) { + deserializedVoiceAgentResponseCreateParams.preGeneratedAssistantMessage + = RealtimeConversationItem.fromJson(reader); + } else if ("interim_response".equals(fieldName)) { + deserializedVoiceAgentResponseCreateParams.interimResponse + = VoiceAgentInterimResponseConfig.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentResponseCreateParams; + }); + } + + /** + * Set the metadata property: The metadata property. + * + * @param metadata the metadata value to set. + * @return the VoiceAgentResponseCreateParams object itself. + */ + @Generated + public VoiceAgentResponseCreateParams setMetadata(Map metadata) { + this.metadata = metadata; + return this; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentResponseCreateParamsConversation.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentResponseCreateParamsConversation.java new file mode 100644 index 0000000000000..1578c8de38576 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentResponseCreateParamsConversation.java @@ -0,0 +1,58 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Defines values for VoiceAgentResponseCreateParamsConversation. + */ +public final class VoiceAgentResponseCreateParamsConversation + extends ExpandableStringEnum { + + /** + * Static value auto for VoiceAgentResponseCreateParamsConversation. + */ + @Generated + public static final VoiceAgentResponseCreateParamsConversation AUTO = fromString("auto"); + + /** + * Static value none for VoiceAgentResponseCreateParamsConversation. + */ + @Generated + public static final VoiceAgentResponseCreateParamsConversation NONE = fromString("none"); + + /** + * Creates a new instance of VoiceAgentResponseCreateParamsConversation value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAgentResponseCreateParamsConversation() { + } + + /** + * Creates or finds a VoiceAgentResponseCreateParamsConversation from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAgentResponseCreateParamsConversation. + */ + @Generated + public static VoiceAgentResponseCreateParamsConversation fromString(String name) { + return fromString(name, VoiceAgentResponseCreateParamsConversation.class); + } + + /** + * Gets known VoiceAgentResponseCreateParamsConversation values. + * + * @return known VoiceAgentResponseCreateParamsConversation values. + */ + @Generated + public static Collection values() { + return values(VoiceAgentResponseCreateParamsConversation.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentRtcCallErrorDetails.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentRtcCallErrorDetails.java new file mode 100644 index 0000000000000..b8291ba0777c3 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentRtcCallErrorDetails.java @@ -0,0 +1,131 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Details of a WebRTC signaling error. + */ +@Immutable +public final class VoiceAgentRtcCallErrorDetails implements JsonSerializable { + + /* + * The error category, following the VoiceLive wire contract: `invalid_request_error` for a client-side signaling + * fault (for example, a malformed SDP offer) or `server_error` for a service-side failure. Additional categories + * may be added over time. + */ + @Generated + private final String type; + + /* + * A machine-readable error code, when available. + */ + @Generated + private String code; + + /* + * A human-readable error message. + */ + @Generated + private final String message; + + /** + * Creates an instance of VoiceAgentRtcCallErrorDetails class. + * + * @param type the type value to set. + * @param message the message value to set. + */ + @Generated + private VoiceAgentRtcCallErrorDetails(String type, String message) { + this.type = type; + this.message = message; + } + + /** + * Get the type property: The error category, following the VoiceLive wire contract: `invalid_request_error` for a + * client-side signaling fault (for example, a malformed SDP offer) or `server_error` for a service-side failure. + * Additional categories may be added over time. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * Get the code property: A machine-readable error code, when available. + * + * @return the code value. + */ + @Generated + public String getCode() { + return this.code; + } + + /** + * Get the message property: A human-readable error message. + * + * @return the message value. + */ + @Generated + public String getMessage() { + return this.message; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("message", this.message); + jsonWriter.writeStringField("code", this.code); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentRtcCallErrorDetails from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentRtcCallErrorDetails if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentRtcCallErrorDetails. + */ + @Generated + public static VoiceAgentRtcCallErrorDetails fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String type = null; + String message = null; + String code = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + type = reader.getString(); + } else if ("message".equals(fieldName)) { + message = reader.getString(); + } else if ("code".equals(fieldName)) { + code = reader.getString(); + } else { + reader.skipChildren(); + } + } + VoiceAgentRtcCallErrorDetails deserializedVoiceAgentRtcCallErrorDetails + = new VoiceAgentRtcCallErrorDetails(type, message); + deserializedVoiceAgentRtcCallErrorDetails.code = code; + return deserializedVoiceAgentRtcCallErrorDetails; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationBlendshapesDelta.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationBlendshapesDelta.java new file mode 100644 index 0000000000000..8a80009568d95 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationBlendshapesDelta.java @@ -0,0 +1,242 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * The `response.animation_blendshapes.delta` server event. + */ +@Immutable +public final class VoiceAgentServerEventResponseAnimationBlendshapesDelta extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_ANIMATION_BLENDSHAPES_DELTA; + + /* + * The event_id property. + */ + @Generated + private final String eventId; + + /* + * The response_id property. + */ + @Generated + private final String responseId; + + /* + * The item_id property. + */ + @Generated + private final String itemId; + + /* + * The output_index property. + */ + @Generated + private final int outputIndex; + + /* + * The content_index property. + */ + @Generated + private final int contentIndex; + + /* + * Animation frames as numeric blendshape weights. + */ + @Generated + private final List> frames; + + /* + * The index of the first frame in this delta. + */ + @Generated + private final int frameIndex; + + /** + * Creates an instance of VoiceAgentServerEventResponseAnimationBlendshapesDelta class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param contentIndex the contentIndex value to set. + * @param frames the frames value to set. + * @param frameIndex the frameIndex value to set. + */ + @Generated + private VoiceAgentServerEventResponseAnimationBlendshapesDelta(String eventId, String responseId, String itemId, + int outputIndex, int contentIndex, List> frames, int frameIndex) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.contentIndex = contentIndex; + this.frames = frames; + this.frameIndex = frameIndex; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The event_id property. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The response_id property. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The item_id property. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The output_index property. + * + * @return the outputIndex value. + */ + @Generated + public int getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the contentIndex property: The content_index property. + * + * @return the contentIndex value. + */ + @Generated + public int getContentIndex() { + return this.contentIndex; + } + + /** + * Get the frames property: Animation frames as numeric blendshape weights. + * + * @return the frames value. + */ + @Generated + public List> getFrames() { + return this.frames; + } + + /** + * Get the frameIndex property: The index of the first frame in this delta. + * + * @return the frameIndex value. + */ + @Generated + public int getFrameIndex() { + return this.frameIndex; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeIntField("output_index", this.outputIndex); + jsonWriter.writeIntField("content_index", this.contentIndex); + jsonWriter.writeArrayField("frames", this.frames, + (writer, element) -> writer.writeArray(element, (writer1, element1) -> writer1.writeDouble(element1))); + jsonWriter.writeIntField("frame_index", this.frameIndex); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventResponseAnimationBlendshapesDelta from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventResponseAnimationBlendshapesDelta if the JsonReader was pointing to + * an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventResponseAnimationBlendshapesDelta. + */ + @Generated + public static VoiceAgentServerEventResponseAnimationBlendshapesDelta fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + int outputIndex = 0; + int contentIndex = 0; + List> frames = null; + int frameIndex = 0; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_ANIMATION_BLENDSHAPES_DELTA; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getInt(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getInt(); + } else if ("frames".equals(fieldName)) { + frames = reader.readArray(reader1 -> reader1.readArray(reader2 -> reader2.getDouble())); + } else if ("frame_index".equals(fieldName)) { + frameIndex = reader.getInt(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventResponseAnimationBlendshapesDelta deserializedVoiceAgentServerEventResponseAnimationBlendshapesDelta + = new VoiceAgentServerEventResponseAnimationBlendshapesDelta(eventId, responseId, itemId, outputIndex, + contentIndex, frames, frameIndex); + deserializedVoiceAgentServerEventResponseAnimationBlendshapesDelta.type = type; + return deserializedVoiceAgentServerEventResponseAnimationBlendshapesDelta; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationBlendshapesDone.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationBlendshapesDone.java new file mode 100644 index 0000000000000..c0433f237f0b6 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationBlendshapesDone.java @@ -0,0 +1,173 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The `response.animation_blendshapes.done` server event. + */ +@Immutable +public final class VoiceAgentServerEventResponseAnimationBlendshapesDone extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_ANIMATION_BLENDSHAPES_DONE; + + /* + * The event_id property. + */ + @Generated + private final String eventId; + + /* + * The response_id property. + */ + @Generated + private final String responseId; + + /* + * The item_id property. + */ + @Generated + private final String itemId; + + /* + * The output_index property. + */ + @Generated + private final int outputIndex; + + /** + * Creates an instance of VoiceAgentServerEventResponseAnimationBlendshapesDone class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + */ + @Generated + private VoiceAgentServerEventResponseAnimationBlendshapesDone(String eventId, String responseId, String itemId, + int outputIndex) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The event_id property. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The response_id property. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The item_id property. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The output_index property. + * + * @return the outputIndex value. + */ + @Generated + public int getOutputIndex() { + return this.outputIndex; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeIntField("output_index", this.outputIndex); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventResponseAnimationBlendshapesDone from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventResponseAnimationBlendshapesDone if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventResponseAnimationBlendshapesDone. + */ + @Generated + public static VoiceAgentServerEventResponseAnimationBlendshapesDone fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + int outputIndex = 0; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_ANIMATION_BLENDSHAPES_DONE; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getInt(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventResponseAnimationBlendshapesDone deserializedVoiceAgentServerEventResponseAnimationBlendshapesDone + = new VoiceAgentServerEventResponseAnimationBlendshapesDone(eventId, responseId, itemId, outputIndex); + deserializedVoiceAgentServerEventResponseAnimationBlendshapesDone.type = type; + return deserializedVoiceAgentServerEventResponseAnimationBlendshapesDone; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationVisemeDelta.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationVisemeDelta.java new file mode 100644 index 0000000000000..20f6ee1cc49ea --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationVisemeDelta.java @@ -0,0 +1,244 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; + +/** + * The `response.animation_viseme.delta` server event. + */ +@Immutable +public final class VoiceAgentServerEventResponseAnimationVisemeDelta extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_ANIMATION_VISEME_DELTA; + + /* + * The event_id property. + */ + @Generated + private final String eventId; + + /* + * The response_id property. + */ + @Generated + private final String responseId; + + /* + * The item_id property. + */ + @Generated + private final String itemId; + + /* + * The output_index property. + */ + @Generated + private final int outputIndex; + + /* + * The content_index property. + */ + @Generated + private final int contentIndex; + + /* + * The audio_offset_ms property. + */ + @Generated + private final long audioOffsetMs; + + /* + * The viseme_id property. + */ + @Generated + private final int visemeId; + + /** + * Creates an instance of VoiceAgentServerEventResponseAnimationVisemeDelta class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param contentIndex the contentIndex value to set. + * @param audioOffsetMs the audioOffsetMs value to set. + * @param visemeId the visemeId value to set. + */ + @Generated + private VoiceAgentServerEventResponseAnimationVisemeDelta(String eventId, String responseId, String itemId, + int outputIndex, int contentIndex, Duration audioOffsetMs, int visemeId) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.contentIndex = contentIndex; + if (audioOffsetMs == null) { + this.audioOffsetMs = 0L; + } else { + this.audioOffsetMs = audioOffsetMs.toMillis(); + } + this.visemeId = visemeId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The event_id property. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The response_id property. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The item_id property. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The output_index property. + * + * @return the outputIndex value. + */ + @Generated + public int getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the contentIndex property: The content_index property. + * + * @return the contentIndex value. + */ + @Generated + public int getContentIndex() { + return this.contentIndex; + } + + /** + * Get the audioOffsetMs property: The audio_offset_ms property. + * + * @return the audioOffsetMs value. + */ + @Generated + public Duration getAudioOffsetMs() { + return Duration.ofMillis(this.audioOffsetMs); + } + + /** + * Get the visemeId property: The viseme_id property. + * + * @return the visemeId value. + */ + @Generated + public int getVisemeId() { + return this.visemeId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeIntField("output_index", this.outputIndex); + jsonWriter.writeIntField("content_index", this.contentIndex); + jsonWriter.writeLongField("audio_offset_ms", this.audioOffsetMs); + jsonWriter.writeIntField("viseme_id", this.visemeId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventResponseAnimationVisemeDelta from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventResponseAnimationVisemeDelta if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventResponseAnimationVisemeDelta. + */ + @Generated + public static VoiceAgentServerEventResponseAnimationVisemeDelta fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + int outputIndex = 0; + int contentIndex = 0; + Duration audioOffsetMs = null; + int visemeId = 0; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_ANIMATION_VISEME_DELTA; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getInt(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getInt(); + } else if ("audio_offset_ms".equals(fieldName)) { + audioOffsetMs = Duration.ofMillis(reader.getLong()); + } else if ("viseme_id".equals(fieldName)) { + visemeId = reader.getInt(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventResponseAnimationVisemeDelta deserializedVoiceAgentServerEventResponseAnimationVisemeDelta + = new VoiceAgentServerEventResponseAnimationVisemeDelta(eventId, responseId, itemId, outputIndex, + contentIndex, audioOffsetMs, visemeId); + deserializedVoiceAgentServerEventResponseAnimationVisemeDelta.type = type; + return deserializedVoiceAgentServerEventResponseAnimationVisemeDelta; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationVisemeDone.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationVisemeDone.java new file mode 100644 index 0000000000000..9c5fb4b139ba0 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationVisemeDone.java @@ -0,0 +1,195 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The `response.animation_viseme.done` server event. + */ +@Immutable +public final class VoiceAgentServerEventResponseAnimationVisemeDone extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_ANIMATION_VISEME_DONE; + + /* + * The event_id property. + */ + @Generated + private final String eventId; + + /* + * The response_id property. + */ + @Generated + private final String responseId; + + /* + * The item_id property. + */ + @Generated + private final String itemId; + + /* + * The output_index property. + */ + @Generated + private final int outputIndex; + + /* + * The content_index property. + */ + @Generated + private final int contentIndex; + + /** + * Creates an instance of VoiceAgentServerEventResponseAnimationVisemeDone class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param contentIndex the contentIndex value to set. + */ + @Generated + private VoiceAgentServerEventResponseAnimationVisemeDone(String eventId, String responseId, String itemId, + int outputIndex, int contentIndex) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.contentIndex = contentIndex; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The event_id property. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The response_id property. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The item_id property. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The output_index property. + * + * @return the outputIndex value. + */ + @Generated + public int getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the contentIndex property: The content_index property. + * + * @return the contentIndex value. + */ + @Generated + public int getContentIndex() { + return this.contentIndex; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeIntField("output_index", this.outputIndex); + jsonWriter.writeIntField("content_index", this.contentIndex); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventResponseAnimationVisemeDone from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventResponseAnimationVisemeDone if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventResponseAnimationVisemeDone. + */ + @Generated + public static VoiceAgentServerEventResponseAnimationVisemeDone fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + int outputIndex = 0; + int contentIndex = 0; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_ANIMATION_VISEME_DONE; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getInt(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getInt(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventResponseAnimationVisemeDone deserializedVoiceAgentServerEventResponseAnimationVisemeDone + = new VoiceAgentServerEventResponseAnimationVisemeDone(eventId, responseId, itemId, outputIndex, + contentIndex); + deserializedVoiceAgentServerEventResponseAnimationVisemeDone.type = type; + return deserializedVoiceAgentServerEventResponseAnimationVisemeDone; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAudioTimestampDelta.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAudioTimestampDelta.java new file mode 100644 index 0000000000000..73d76b793258a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAudioTimestampDelta.java @@ -0,0 +1,287 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; + +/** + * The `response.audio_timestamp.delta` server event. + */ +@Immutable +public final class VoiceAgentServerEventResponseAudioTimestampDelta extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_AUDIO_TIMESTAMP_DELTA; + + /* + * The event_id property. + */ + @Generated + private final String eventId; + + /* + * The response_id property. + */ + @Generated + private final String responseId; + + /* + * The item_id property. + */ + @Generated + private final String itemId; + + /* + * The output_index property. + */ + @Generated + private final int outputIndex; + + /* + * The content_index property. + */ + @Generated + private final int contentIndex; + + /* + * The audio_offset_ms property. + */ + @Generated + private final long audioOffsetMs; + + /* + * The audio_duration_ms property. + */ + @Generated + private final long audioDurationMs; + + /* + * The text property. + */ + @Generated + private final String text; + + /* + * The timestamp_type property. + */ + @Generated + private final String timestampType = "word"; + + /** + * Creates an instance of VoiceAgentServerEventResponseAudioTimestampDelta class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param contentIndex the contentIndex value to set. + * @param audioOffsetMs the audioOffsetMs value to set. + * @param audioDurationMs the audioDurationMs value to set. + * @param text the text value to set. + */ + @Generated + private VoiceAgentServerEventResponseAudioTimestampDelta(String eventId, String responseId, String itemId, + int outputIndex, int contentIndex, Duration audioOffsetMs, Duration audioDurationMs, String text) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.contentIndex = contentIndex; + if (audioOffsetMs == null) { + this.audioOffsetMs = 0L; + } else { + this.audioOffsetMs = audioOffsetMs.toMillis(); + } + if (audioDurationMs == null) { + this.audioDurationMs = 0L; + } else { + this.audioDurationMs = audioDurationMs.toMillis(); + } + this.text = text; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The event_id property. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The response_id property. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The item_id property. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The output_index property. + * + * @return the outputIndex value. + */ + @Generated + public int getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the contentIndex property: The content_index property. + * + * @return the contentIndex value. + */ + @Generated + public int getContentIndex() { + return this.contentIndex; + } + + /** + * Get the audioOffsetMs property: The audio_offset_ms property. + * + * @return the audioOffsetMs value. + */ + @Generated + public Duration getAudioOffsetMs() { + return Duration.ofMillis(this.audioOffsetMs); + } + + /** + * Get the audioDurationMs property: The audio_duration_ms property. + * + * @return the audioDurationMs value. + */ + @Generated + public Duration getAudioDurationMs() { + return Duration.ofMillis(this.audioDurationMs); + } + + /** + * Get the text property: The text property. + * + * @return the text value. + */ + @Generated + public String getText() { + return this.text; + } + + /** + * Get the timestampType property: The timestamp_type property. + * + * @return the timestampType value. + */ + @Generated + public String getTimestampType() { + return this.timestampType; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeIntField("output_index", this.outputIndex); + jsonWriter.writeIntField("content_index", this.contentIndex); + jsonWriter.writeLongField("audio_offset_ms", this.audioOffsetMs); + jsonWriter.writeLongField("audio_duration_ms", this.audioDurationMs); + jsonWriter.writeStringField("text", this.text); + jsonWriter.writeStringField("timestamp_type", this.timestampType); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventResponseAudioTimestampDelta from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventResponseAudioTimestampDelta if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventResponseAudioTimestampDelta. + */ + @Generated + public static VoiceAgentServerEventResponseAudioTimestampDelta fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + int outputIndex = 0; + int contentIndex = 0; + Duration audioOffsetMs = null; + Duration audioDurationMs = null; + String text = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_AUDIO_TIMESTAMP_DELTA; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getInt(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getInt(); + } else if ("audio_offset_ms".equals(fieldName)) { + audioOffsetMs = Duration.ofMillis(reader.getLong()); + } else if ("audio_duration_ms".equals(fieldName)) { + audioDurationMs = Duration.ofMillis(reader.getLong()); + } else if ("text".equals(fieldName)) { + text = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventResponseAudioTimestampDelta deserializedVoiceAgentServerEventResponseAudioTimestampDelta + = new VoiceAgentServerEventResponseAudioTimestampDelta(eventId, responseId, itemId, outputIndex, + contentIndex, audioOffsetMs, audioDurationMs, text); + deserializedVoiceAgentServerEventResponseAudioTimestampDelta.type = type; + return deserializedVoiceAgentServerEventResponseAudioTimestampDelta; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAudioTimestampDone.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAudioTimestampDone.java new file mode 100644 index 0000000000000..0df4f3fea4879 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAudioTimestampDone.java @@ -0,0 +1,195 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The `response.audio_timestamp.done` server event. + */ +@Immutable +public final class VoiceAgentServerEventResponseAudioTimestampDone extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_AUDIO_TIMESTAMP_DONE; + + /* + * The event_id property. + */ + @Generated + private final String eventId; + + /* + * The response_id property. + */ + @Generated + private final String responseId; + + /* + * The item_id property. + */ + @Generated + private final String itemId; + + /* + * The output_index property. + */ + @Generated + private final int outputIndex; + + /* + * The content_index property. + */ + @Generated + private final int contentIndex; + + /** + * Creates an instance of VoiceAgentServerEventResponseAudioTimestampDone class. + * + * @param eventId the eventId value to set. + * @param responseId the responseId value to set. + * @param itemId the itemId value to set. + * @param outputIndex the outputIndex value to set. + * @param contentIndex the contentIndex value to set. + */ + @Generated + private VoiceAgentServerEventResponseAudioTimestampDone(String eventId, String responseId, String itemId, + int outputIndex, int contentIndex) { + this.eventId = eventId; + this.responseId = responseId; + this.itemId = itemId; + this.outputIndex = outputIndex; + this.contentIndex = contentIndex; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The event_id property. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the responseId property: The response_id property. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the itemId property: The item_id property. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the outputIndex property: The output_index property. + * + * @return the outputIndex value. + */ + @Generated + public int getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the contentIndex property: The content_index property. + * + * @return the contentIndex value. + */ + @Generated + public int getContentIndex() { + return this.contentIndex; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("response_id", this.responseId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeIntField("output_index", this.outputIndex); + jsonWriter.writeIntField("content_index", this.contentIndex); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventResponseAudioTimestampDone from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventResponseAudioTimestampDone if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventResponseAudioTimestampDone. + */ + @Generated + public static VoiceAgentServerEventResponseAudioTimestampDone fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String responseId = null; + String itemId = null; + int outputIndex = 0; + int contentIndex = 0; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_AUDIO_TIMESTAMP_DONE; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getInt(); + } else if ("content_index".equals(fieldName)) { + contentIndex = reader.getInt(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventResponseAudioTimestampDone deserializedVoiceAgentServerEventResponseAudioTimestampDone + = new VoiceAgentServerEventResponseAudioTimestampDone(eventId, responseId, itemId, outputIndex, + contentIndex); + deserializedVoiceAgentServerEventResponseAudioTimestampDone.type = type; + return deserializedVoiceAgentServerEventResponseAudioTimestampDone; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseVideoDelta.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseVideoDelta.java new file mode 100644 index 0000000000000..478c2b7729993 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseVideoDelta.java @@ -0,0 +1,171 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The `response.video.delta` server event. + */ +@Immutable +public final class VoiceAgentServerEventResponseVideoDelta extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_VIDEO_DELTA; + + /* + * The event_id property. + */ + @Generated + private final String eventId; + + /* + * The output_index property. + */ + @Generated + private final int outputIndex; + + /* + * The codec property. + */ + @Generated + private final String codec; + + /* + * The base64-encoded video frame data. + */ + @Generated + private final String delta; + + /** + * Creates an instance of VoiceAgentServerEventResponseVideoDelta class. + * + * @param eventId the eventId value to set. + * @param outputIndex the outputIndex value to set. + * @param codec the codec value to set. + * @param delta the delta value to set. + */ + @Generated + private VoiceAgentServerEventResponseVideoDelta(String eventId, int outputIndex, String codec, String delta) { + this.eventId = eventId; + this.outputIndex = outputIndex; + this.codec = codec; + this.delta = delta; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The event_id property. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the outputIndex property: The output_index property. + * + * @return the outputIndex value. + */ + @Generated + public int getOutputIndex() { + return this.outputIndex; + } + + /** + * Get the codec property: The codec property. + * + * @return the codec value. + */ + @Generated + public String getCodec() { + return this.codec; + } + + /** + * Get the delta property: The base64-encoded video frame data. + * + * @return the delta value. + */ + @Generated + public String getDelta() { + return this.delta; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeIntField("output_index", this.outputIndex); + jsonWriter.writeStringField("codec", this.codec); + jsonWriter.writeStringField("delta", this.delta); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventResponseVideoDelta from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventResponseVideoDelta if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventResponseVideoDelta. + */ + @Generated + public static VoiceAgentServerEventResponseVideoDelta fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + int outputIndex = 0; + String codec = null; + String delta = null; + RealtimeServerEventType type = RealtimeServerEventType.RESPONSE_VIDEO_DELTA; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("output_index".equals(fieldName)) { + outputIndex = reader.getInt(); + } else if ("codec".equals(fieldName)) { + codec = reader.getString(); + } else if ("delta".equals(fieldName)) { + delta = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventResponseVideoDelta deserializedVoiceAgentServerEventResponseVideoDelta + = new VoiceAgentServerEventResponseVideoDelta(eventId, outputIndex, codec, delta); + deserializedVoiceAgentServerEventResponseVideoDelta.type = type; + return deserializedVoiceAgentServerEventResponseVideoDelta; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventRtcCallError.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventRtcCallError.java new file mode 100644 index 0000000000000..0050b1d2e6c6c --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventRtcCallError.java @@ -0,0 +1,168 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The `rtc.call.error` server event: a WebRTC signaling failure. + */ +@Immutable +public final class VoiceAgentServerEventRtcCallError extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RTC_CALL_ERROR; + + /* + * An optional server-generated event identifier. + */ + @Generated + private String eventId; + + /* + * The signaling operation that failed, when known. + */ + @Generated + private String operation; + + /* + * The identifier of the WebRTC call, when known. + */ + @Generated + private String rtcCallId; + + /* + * The error detail. + */ + @Generated + private final VoiceAgentRtcCallErrorDetails error; + + /** + * Creates an instance of VoiceAgentServerEventRtcCallError class. + * + * @param error the error value to set. + */ + @Generated + private VoiceAgentServerEventRtcCallError(VoiceAgentRtcCallErrorDetails error) { + this.error = error; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: An optional server-generated event identifier. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the operation property: The signaling operation that failed, when known. + * + * @return the operation value. + */ + @Generated + public String getOperation() { + return this.operation; + } + + /** + * Get the rtcCallId property: The identifier of the WebRTC call, when known. + * + * @return the rtcCallId value. + */ + @Generated + public String getRtcCallId() { + return this.rtcCallId; + } + + /** + * Get the error property: The error detail. + * + * @return the error value. + */ + @Generated + public VoiceAgentRtcCallErrorDetails getError() { + return this.error; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("error", this.error); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("operation", this.operation); + jsonWriter.writeStringField("rtc_call_id", this.rtcCallId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventRtcCallError from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventRtcCallError if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventRtcCallError. + */ + @Generated + public static VoiceAgentServerEventRtcCallError fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentRtcCallErrorDetails error = null; + RealtimeServerEventType type = RealtimeServerEventType.RTC_CALL_ERROR; + String eventId = null; + String operation = null; + String rtcCallId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("error".equals(fieldName)) { + error = VoiceAgentRtcCallErrorDetails.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("operation".equals(fieldName)) { + operation = reader.getString(); + } else if ("rtc_call_id".equals(fieldName)) { + rtcCallId = reader.getString(); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventRtcCallError deserializedVoiceAgentServerEventRtcCallError + = new VoiceAgentServerEventRtcCallError(error); + deserializedVoiceAgentServerEventRtcCallError.type = type; + deserializedVoiceAgentServerEventRtcCallError.eventId = eventId; + deserializedVoiceAgentServerEventRtcCallError.operation = operation; + deserializedVoiceAgentServerEventRtcCallError.rtcCallId = rtcCallId; + return deserializedVoiceAgentServerEventRtcCallError; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventRtcCallSdpCreated.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventRtcCallSdpCreated.java new file mode 100644 index 0000000000000..05031ccd51e88 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventRtcCallSdpCreated.java @@ -0,0 +1,149 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The `rtc.call.sdp.created` server event: the SDP answer that completes WebRTC negotiation. + */ +@Immutable +public final class VoiceAgentServerEventRtcCallSdpCreated extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.RTC_CALL_SDP_CREATED; + + /* + * The server-generated event identifier. + */ + @Generated + private final String eventId; + + /* + * The identifier of the established WebRTC call. + */ + @Generated + private final String rtcCallId; + + /* + * The server's SDP answer for the WebRTC connection. + */ + @Generated + private final String sdpAnswer; + + /** + * Creates an instance of VoiceAgentServerEventRtcCallSdpCreated class. + * + * @param eventId the eventId value to set. + * @param rtcCallId the rtcCallId value to set. + * @param sdpAnswer the sdpAnswer value to set. + */ + @Generated + private VoiceAgentServerEventRtcCallSdpCreated(String eventId, String rtcCallId, String sdpAnswer) { + this.eventId = eventId; + this.rtcCallId = rtcCallId; + this.sdpAnswer = sdpAnswer; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The server-generated event identifier. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the rtcCallId property: The identifier of the established WebRTC call. + * + * @return the rtcCallId value. + */ + @Generated + public String getRtcCallId() { + return this.rtcCallId; + } + + /** + * Get the sdpAnswer property: The server's SDP answer for the WebRTC connection. + * + * @return the sdpAnswer value. + */ + @Generated + public String getSdpAnswer() { + return this.sdpAnswer; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("rtc_call_id", this.rtcCallId); + jsonWriter.writeStringField("sdp_answer", this.sdpAnswer); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventRtcCallSdpCreated from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventRtcCallSdpCreated if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventRtcCallSdpCreated. + */ + @Generated + public static VoiceAgentServerEventRtcCallSdpCreated fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String rtcCallId = null; + String sdpAnswer = null; + RealtimeServerEventType type = RealtimeServerEventType.RTC_CALL_SDP_CREATED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("rtc_call_id".equals(fieldName)) { + rtcCallId = reader.getString(); + } else if ("sdp_answer".equals(fieldName)) { + sdpAnswer = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventRtcCallSdpCreated deserializedVoiceAgentServerEventRtcCallSdpCreated + = new VoiceAgentServerEventRtcCallSdpCreated(eventId, rtcCallId, sdpAnswer); + deserializedVoiceAgentServerEventRtcCallSdpCreated.type = type; + return deserializedVoiceAgentServerEventRtcCallSdpCreated; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarConnecting.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarConnecting.java new file mode 100644 index 0000000000000..5c9630afe5935 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarConnecting.java @@ -0,0 +1,127 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The `session.avatar.connecting` server event. + */ +@Immutable +public final class VoiceAgentServerEventSessionAvatarConnecting extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.SESSION_AVATAR_CONNECTING; + + /* + * The event_id property. + */ + @Generated + private final String eventId; + + /* + * The server's SDP answer for avatar media negotiation. + */ + @Generated + private final String serverSdp; + + /** + * Creates an instance of VoiceAgentServerEventSessionAvatarConnecting class. + * + * @param eventId the eventId value to set. + * @param serverSdp the serverSdp value to set. + */ + @Generated + private VoiceAgentServerEventSessionAvatarConnecting(String eventId, String serverSdp) { + this.eventId = eventId; + this.serverSdp = serverSdp; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The event_id property. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the serverSdp property: The server's SDP answer for avatar media negotiation. + * + * @return the serverSdp value. + */ + @Generated + public String getServerSdp() { + return this.serverSdp; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("server_sdp", this.serverSdp); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventSessionAvatarConnecting from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventSessionAvatarConnecting if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventSessionAvatarConnecting. + */ + @Generated + public static VoiceAgentServerEventSessionAvatarConnecting fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String serverSdp = null; + RealtimeServerEventType type = RealtimeServerEventType.SESSION_AVATAR_CONNECTING; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("server_sdp".equals(fieldName)) { + serverSdp = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventSessionAvatarConnecting deserializedVoiceAgentServerEventSessionAvatarConnecting + = new VoiceAgentServerEventSessionAvatarConnecting(eventId, serverSdp); + deserializedVoiceAgentServerEventSessionAvatarConnecting.type = type; + return deserializedVoiceAgentServerEventSessionAvatarConnecting; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarSwitchToIdle.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarSwitchToIdle.java new file mode 100644 index 0000000000000..38dc20c9b06ce --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarSwitchToIdle.java @@ -0,0 +1,126 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The `session.avatar.switch_to_idle` server event. + */ +@Immutable +public final class VoiceAgentServerEventSessionAvatarSwitchToIdle extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.SESSION_AVATAR_SWITCH_TO_IDLE; + + /* + * The event_id property. + */ + @Generated + private final String eventId; + + /* + * The turn_id property. + */ + @Generated + private String turnId; + + /** + * Creates an instance of VoiceAgentServerEventSessionAvatarSwitchToIdle class. + * + * @param eventId the eventId value to set. + */ + @Generated + private VoiceAgentServerEventSessionAvatarSwitchToIdle(String eventId) { + this.eventId = eventId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The event_id property. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the turnId property: The turn_id property. + * + * @return the turnId value. + */ + @Generated + public String getTurnId() { + return this.turnId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("turn_id", this.turnId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventSessionAvatarSwitchToIdle from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventSessionAvatarSwitchToIdle if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventSessionAvatarSwitchToIdle. + */ + @Generated + public static VoiceAgentServerEventSessionAvatarSwitchToIdle fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + RealtimeServerEventType type = RealtimeServerEventType.SESSION_AVATAR_SWITCH_TO_IDLE; + String turnId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else if ("turn_id".equals(fieldName)) { + turnId = reader.getString(); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventSessionAvatarSwitchToIdle deserializedVoiceAgentServerEventSessionAvatarSwitchToIdle + = new VoiceAgentServerEventSessionAvatarSwitchToIdle(eventId); + deserializedVoiceAgentServerEventSessionAvatarSwitchToIdle.type = type; + deserializedVoiceAgentServerEventSessionAvatarSwitchToIdle.turnId = turnId; + return deserializedVoiceAgentServerEventSessionAvatarSwitchToIdle; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarSwitchToSpeaking.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarSwitchToSpeaking.java new file mode 100644 index 0000000000000..ba7a76bd88e05 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarSwitchToSpeaking.java @@ -0,0 +1,127 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The `session.avatar.switch_to_speaking` server event. + */ +@Immutable +public final class VoiceAgentServerEventSessionAvatarSwitchToSpeaking extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.SESSION_AVATAR_SWITCH_TO_SPEAKING; + + /* + * The event_id property. + */ + @Generated + private final String eventId; + + /* + * The turn_id property. + */ + @Generated + private String turnId; + + /** + * Creates an instance of VoiceAgentServerEventSessionAvatarSwitchToSpeaking class. + * + * @param eventId the eventId value to set. + */ + @Generated + private VoiceAgentServerEventSessionAvatarSwitchToSpeaking(String eventId) { + this.eventId = eventId; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The event_id property. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the turnId property: The turn_id property. + * + * @return the turnId value. + */ + @Generated + public String getTurnId() { + return this.turnId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("turn_id", this.turnId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventSessionAvatarSwitchToSpeaking from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventSessionAvatarSwitchToSpeaking if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventSessionAvatarSwitchToSpeaking. + */ + @Generated + public static VoiceAgentServerEventSessionAvatarSwitchToSpeaking fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + RealtimeServerEventType type = RealtimeServerEventType.SESSION_AVATAR_SWITCH_TO_SPEAKING; + String turnId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else if ("turn_id".equals(fieldName)) { + turnId = reader.getString(); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventSessionAvatarSwitchToSpeaking deserializedVoiceAgentServerEventSessionAvatarSwitchToSpeaking + = new VoiceAgentServerEventSessionAvatarSwitchToSpeaking(eventId); + deserializedVoiceAgentServerEventSessionAvatarSwitchToSpeaking.type = type; + deserializedVoiceAgentServerEventSessionAvatarSwitchToSpeaking.turnId = turnId; + return deserializedVoiceAgentServerEventSessionAvatarSwitchToSpeaking; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentAborted.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentAborted.java new file mode 100644 index 0000000000000..6a9e02fc0c4d4 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentAborted.java @@ -0,0 +1,195 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The `session.subagent.aborted` server event. + */ +@Immutable +public final class VoiceAgentServerEventSessionSubagentAborted extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.SESSION_SUBAGENT_ABORTED; + + /* + * The server-generated event identifier. + */ + @Generated + private final String eventId; + + /* + * The identifier of the subagent consultation. + */ + @Generated + private final String consultationId; + + /* + * The identifier of the function call that initiated the consultation. + */ + @Generated + private final String callId; + + /* + * The name of the consulted subagent. + */ + @Generated + private final String subagentName; + + /* + * The reason the consultation was aborted. + */ + @Generated + private final VoiceAgentSubagentAbortReason reason; + + /** + * Creates an instance of VoiceAgentServerEventSessionSubagentAborted class. + * + * @param eventId the eventId value to set. + * @param consultationId the consultationId value to set. + * @param callId the callId value to set. + * @param subagentName the subagentName value to set. + * @param reason the reason value to set. + */ + @Generated + private VoiceAgentServerEventSessionSubagentAborted(String eventId, String consultationId, String callId, + String subagentName, VoiceAgentSubagentAbortReason reason) { + this.eventId = eventId; + this.consultationId = consultationId; + this.callId = callId; + this.subagentName = subagentName; + this.reason = reason; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The server-generated event identifier. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the consultationId property: The identifier of the subagent consultation. + * + * @return the consultationId value. + */ + @Generated + public String getConsultationId() { + return this.consultationId; + } + + /** + * Get the callId property: The identifier of the function call that initiated the consultation. + * + * @return the callId value. + */ + @Generated + public String getCallId() { + return this.callId; + } + + /** + * Get the subagentName property: The name of the consulted subagent. + * + * @return the subagentName value. + */ + @Generated + public String getSubagentName() { + return this.subagentName; + } + + /** + * Get the reason property: The reason the consultation was aborted. + * + * @return the reason value. + */ + @Generated + public VoiceAgentSubagentAbortReason getReason() { + return this.reason; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("consultation_id", this.consultationId); + jsonWriter.writeStringField("call_id", this.callId); + jsonWriter.writeStringField("subagent_name", this.subagentName); + jsonWriter.writeStringField("reason", this.reason == null ? null : this.reason.toString()); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventSessionSubagentAborted from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventSessionSubagentAborted if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventSessionSubagentAborted. + */ + @Generated + public static VoiceAgentServerEventSessionSubagentAborted fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String consultationId = null; + String callId = null; + String subagentName = null; + VoiceAgentSubagentAbortReason reason = null; + RealtimeServerEventType type = RealtimeServerEventType.SESSION_SUBAGENT_ABORTED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("consultation_id".equals(fieldName)) { + consultationId = reader.getString(); + } else if ("call_id".equals(fieldName)) { + callId = reader.getString(); + } else if ("subagent_name".equals(fieldName)) { + subagentName = reader.getString(); + } else if ("reason".equals(fieldName)) { + reason = VoiceAgentSubagentAbortReason.fromString(reader.getString()); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventSessionSubagentAborted deserializedVoiceAgentServerEventSessionSubagentAborted + = new VoiceAgentServerEventSessionSubagentAborted(eventId, consultationId, callId, subagentName, + reason); + deserializedVoiceAgentServerEventSessionSubagentAborted.type = type; + return deserializedVoiceAgentServerEventSessionSubagentAborted; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentCompleted.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentCompleted.java new file mode 100644 index 0000000000000..6b57a40225e24 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentCompleted.java @@ -0,0 +1,172 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The `session.subagent.completed` server event. + */ +@Immutable +public final class VoiceAgentServerEventSessionSubagentCompleted extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.SESSION_SUBAGENT_COMPLETED; + + /* + * The server-generated event identifier. + */ + @Generated + private final String eventId; + + /* + * The identifier of the subagent consultation. + */ + @Generated + private final String consultationId; + + /* + * The identifier of the function call that initiated the consultation. + */ + @Generated + private final String callId; + + /* + * The name of the consulted subagent. + */ + @Generated + private final String subagentName; + + /** + * Creates an instance of VoiceAgentServerEventSessionSubagentCompleted class. + * + * @param eventId the eventId value to set. + * @param consultationId the consultationId value to set. + * @param callId the callId value to set. + * @param subagentName the subagentName value to set. + */ + @Generated + private VoiceAgentServerEventSessionSubagentCompleted(String eventId, String consultationId, String callId, + String subagentName) { + this.eventId = eventId; + this.consultationId = consultationId; + this.callId = callId; + this.subagentName = subagentName; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The server-generated event identifier. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the consultationId property: The identifier of the subagent consultation. + * + * @return the consultationId value. + */ + @Generated + public String getConsultationId() { + return this.consultationId; + } + + /** + * Get the callId property: The identifier of the function call that initiated the consultation. + * + * @return the callId value. + */ + @Generated + public String getCallId() { + return this.callId; + } + + /** + * Get the subagentName property: The name of the consulted subagent. + * + * @return the subagentName value. + */ + @Generated + public String getSubagentName() { + return this.subagentName; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("consultation_id", this.consultationId); + jsonWriter.writeStringField("call_id", this.callId); + jsonWriter.writeStringField("subagent_name", this.subagentName); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventSessionSubagentCompleted from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventSessionSubagentCompleted if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventSessionSubagentCompleted. + */ + @Generated + public static VoiceAgentServerEventSessionSubagentCompleted fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String consultationId = null; + String callId = null; + String subagentName = null; + RealtimeServerEventType type = RealtimeServerEventType.SESSION_SUBAGENT_COMPLETED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("consultation_id".equals(fieldName)) { + consultationId = reader.getString(); + } else if ("call_id".equals(fieldName)) { + callId = reader.getString(); + } else if ("subagent_name".equals(fieldName)) { + subagentName = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventSessionSubagentCompleted deserializedVoiceAgentServerEventSessionSubagentCompleted + = new VoiceAgentServerEventSessionSubagentCompleted(eventId, consultationId, callId, subagentName); + deserializedVoiceAgentServerEventSessionSubagentCompleted.type = type; + return deserializedVoiceAgentServerEventSessionSubagentCompleted; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentStarted.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentStarted.java new file mode 100644 index 0000000000000..c684ccf5efcef --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentStarted.java @@ -0,0 +1,172 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The `session.subagent.started` server event. + */ +@Immutable +public final class VoiceAgentServerEventSessionSubagentStarted extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.SESSION_SUBAGENT_STARTED; + + /* + * The server-generated event identifier. + */ + @Generated + private final String eventId; + + /* + * The identifier of the subagent consultation. + */ + @Generated + private final String consultationId; + + /* + * The identifier of the function call that initiated the consultation. + */ + @Generated + private final String callId; + + /* + * The name of the consulted subagent. + */ + @Generated + private final String subagentName; + + /** + * Creates an instance of VoiceAgentServerEventSessionSubagentStarted class. + * + * @param eventId the eventId value to set. + * @param consultationId the consultationId value to set. + * @param callId the callId value to set. + * @param subagentName the subagentName value to set. + */ + @Generated + private VoiceAgentServerEventSessionSubagentStarted(String eventId, String consultationId, String callId, + String subagentName) { + this.eventId = eventId; + this.consultationId = consultationId; + this.callId = callId; + this.subagentName = subagentName; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The server-generated event identifier. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the consultationId property: The identifier of the subagent consultation. + * + * @return the consultationId value. + */ + @Generated + public String getConsultationId() { + return this.consultationId; + } + + /** + * Get the callId property: The identifier of the function call that initiated the consultation. + * + * @return the callId value. + */ + @Generated + public String getCallId() { + return this.callId; + } + + /** + * Get the subagentName property: The name of the consulted subagent. + * + * @return the subagentName value. + */ + @Generated + public String getSubagentName() { + return this.subagentName; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeStringField("consultation_id", this.consultationId); + jsonWriter.writeStringField("call_id", this.callId); + jsonWriter.writeStringField("subagent_name", this.subagentName); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventSessionSubagentStarted from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventSessionSubagentStarted if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventSessionSubagentStarted. + */ + @Generated + public static VoiceAgentServerEventSessionSubagentStarted fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + String consultationId = null; + String callId = null; + String subagentName = null; + RealtimeServerEventType type = RealtimeServerEventType.SESSION_SUBAGENT_STARTED; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("consultation_id".equals(fieldName)) { + consultationId = reader.getString(); + } else if ("call_id".equals(fieldName)) { + callId = reader.getString(); + } else if ("subagent_name".equals(fieldName)) { + subagentName = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventSessionSubagentStarted deserializedVoiceAgentServerEventSessionSubagentStarted + = new VoiceAgentServerEventSessionSubagentStarted(eventId, consultationId, callId, subagentName); + deserializedVoiceAgentServerEventSessionSubagentStarted.type = type; + return deserializedVoiceAgentServerEventSessionSubagentStarted; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventWarning.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventWarning.java new file mode 100644 index 0000000000000..09ff6203a716a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventWarning.java @@ -0,0 +1,127 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The `warning` server event. + */ +@Immutable +public final class VoiceAgentServerEventWarning extends RealtimeServerEvent { + + /* + * The type property. + */ + @Generated + private RealtimeServerEventType type = RealtimeServerEventType.WARNING; + + /* + * The event_id property. + */ + @Generated + private final String eventId; + + /* + * The warning property. + */ + @Generated + private final VoiceAgentServerEventWarningDetails warning; + + /** + * Creates an instance of VoiceAgentServerEventWarning class. + * + * @param eventId the eventId value to set. + * @param warning the warning value to set. + */ + @Generated + private VoiceAgentServerEventWarning(String eventId, VoiceAgentServerEventWarningDetails warning) { + this.eventId = eventId; + this.warning = warning; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeServerEventType getType() { + return this.type; + } + + /** + * Get the eventId property: The event_id property. + * + * @return the eventId value. + */ + @Generated + public String getEventId() { + return this.eventId; + } + + /** + * Get the warning property: The warning property. + * + * @return the warning value. + */ + @Generated + public VoiceAgentServerEventWarningDetails getWarning() { + return this.warning; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_id", this.eventId); + jsonWriter.writeJsonField("warning", this.warning); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventWarning from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventWarning if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventWarning. + */ + @Generated + public static VoiceAgentServerEventWarning fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventId = null; + VoiceAgentServerEventWarningDetails warning = null; + RealtimeServerEventType type = RealtimeServerEventType.WARNING; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_id".equals(fieldName)) { + eventId = reader.getString(); + } else if ("warning".equals(fieldName)) { + warning = VoiceAgentServerEventWarningDetails.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = RealtimeServerEventType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventWarning deserializedVoiceAgentServerEventWarning + = new VoiceAgentServerEventWarning(eventId, warning); + deserializedVoiceAgentServerEventWarning.type = type; + return deserializedVoiceAgentServerEventWarning; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventWarningDetails.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventWarningDetails.java new file mode 100644 index 0000000000000..27cecfd696243 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventWarningDetails.java @@ -0,0 +1,127 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Details of a non-fatal warning. + */ +@Immutable +public final class VoiceAgentServerEventWarningDetails + implements JsonSerializable { + + /* + * The message property. + */ + @Generated + private final String message; + + /* + * The code property. + */ + @Generated + private String code; + + /* + * The param property. + */ + @Generated + private String param; + + /** + * Creates an instance of VoiceAgentServerEventWarningDetails class. + * + * @param message the message value to set. + */ + @Generated + private VoiceAgentServerEventWarningDetails(String message) { + this.message = message; + } + + /** + * Get the message property: The message property. + * + * @return the message value. + */ + @Generated + public String getMessage() { + return this.message; + } + + /** + * Get the code property: The code property. + * + * @return the code value. + */ + @Generated + public String getCode() { + return this.code; + } + + /** + * Get the param property: The param property. + * + * @return the param value. + */ + @Generated + public String getParam() { + return this.param; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("message", this.message); + jsonWriter.writeStringField("code", this.code); + jsonWriter.writeStringField("param", this.param); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerEventWarningDetails from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerEventWarningDetails if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentServerEventWarningDetails. + */ + @Generated + public static VoiceAgentServerEventWarningDetails fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String message = null; + String code = null; + String param = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("message".equals(fieldName)) { + message = reader.getString(); + } else if ("code".equals(fieldName)) { + code = reader.getString(); + } else if ("param".equals(fieldName)) { + param = reader.getString(); + } else { + reader.skipChildren(); + } + } + VoiceAgentServerEventWarningDetails deserializedVoiceAgentServerEventWarningDetails + = new VoiceAgentServerEventWarningDetails(message); + deserializedVoiceAgentServerEventWarningDetails.code = code; + deserializedVoiceAgentServerEventWarningDetails.param = param; + return deserializedVoiceAgentServerEventWarningDetails; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionAvatarConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionAvatarConfig.java new file mode 100644 index 0000000000000..c86bcc9f0e421 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionAvatarConfig.java @@ -0,0 +1,212 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Avatar settings accepted by the stable voice-agent WebSocket contract. + */ +@Fluent +public final class VoiceAgentSessionAvatarConfig extends VoiceAgentAvatarConfig { + + /* + * The ice_servers property. + */ + @Generated + private List iceServers; + + /** + * Creates an instance of VoiceAgentSessionAvatarConfig class. + * + * @param type the type value to set. + * @param character the character value to set. + */ + @Generated + public VoiceAgentSessionAvatarConfig(VoiceAgentAvatarType type, String character) { + super(type, character); + } + + /** + * Get the iceServers property: The ice_servers property. + * + * @return the iceServers value. + */ + @Generated + public List getIceServers() { + return this.iceServers; + } + + /** + * Set the iceServers property: The ice_servers property. + * + * @param iceServers the iceServers value to set. + * @return the VoiceAgentSessionAvatarConfig object itself. + */ + @Generated + public VoiceAgentSessionAvatarConfig setIceServers(List iceServers) { + this.iceServers = iceServers; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentSessionAvatarConfig setStyle(String style) { + super.setStyle(style); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentSessionAvatarConfig setCustomized(Boolean customized) { + super.setCustomized(customized); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentSessionAvatarConfig setOutputProtocol(VoiceAgentAvatarOutputProtocol outputProtocol) { + super.setOutputProtocol(outputProtocol); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentSessionAvatarConfig setModel(String model) { + super.setModel(model); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentSessionAvatarConfig setVideo(VoiceAgentAvatarVideoParams video) { + super.setVideo(video); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentSessionAvatarConfig setScene(VoiceAgentAvatarScene scene) { + super.setScene(scene); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentSessionAvatarConfig setOutputAuditAudio(Boolean outputAuditAudio) { + super.setOutputAuditAudio(outputAuditAudio); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", getType() == null ? null : getType().toString()); + jsonWriter.writeStringField("character", getCharacter()); + jsonWriter.writeStringField("style", getStyle()); + jsonWriter.writeBooleanField("customized", isCustomized()); + jsonWriter.writeStringField("output_protocol", + getOutputProtocol() == null ? null : getOutputProtocol().toString()); + jsonWriter.writeStringField("model", getModel()); + jsonWriter.writeJsonField("video", getVideo()); + jsonWriter.writeJsonField("scene", getScene()); + jsonWriter.writeBooleanField("output_audit_audio", isOutputAuditAudio()); + jsonWriter.writeArrayField("ice_servers", this.iceServers, (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentSessionAvatarConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentSessionAvatarConfig if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentSessionAvatarConfig. + */ + @Generated + public static VoiceAgentSessionAvatarConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentAvatarType type = null; + String character = null; + String style = null; + Boolean customized = null; + VoiceAgentAvatarOutputProtocol outputProtocol = null; + String model = null; + VoiceAgentAvatarVideoParams video = null; + VoiceAgentAvatarScene scene = null; + Boolean outputAuditAudio = null; + List iceServers = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + type = VoiceAgentAvatarType.fromString(reader.getString()); + } else if ("character".equals(fieldName)) { + character = reader.getString(); + } else if ("style".equals(fieldName)) { + style = reader.getString(); + } else if ("customized".equals(fieldName)) { + customized = reader.getNullable(JsonReader::getBoolean); + } else if ("output_protocol".equals(fieldName)) { + outputProtocol = VoiceAgentAvatarOutputProtocol.fromString(reader.getString()); + } else if ("model".equals(fieldName)) { + model = reader.getString(); + } else if ("video".equals(fieldName)) { + video = VoiceAgentAvatarVideoParams.fromJson(reader); + } else if ("scene".equals(fieldName)) { + scene = VoiceAgentAvatarScene.fromJson(reader); + } else if ("output_audit_audio".equals(fieldName)) { + outputAuditAudio = reader.getNullable(JsonReader::getBoolean); + } else if ("ice_servers".equals(fieldName)) { + iceServers = reader.readArray(reader1 -> VoiceAgentAvatarIceServer.fromJson(reader1)); + } else { + reader.skipChildren(); + } + } + VoiceAgentSessionAvatarConfig deserializedVoiceAgentSessionAvatarConfig + = new VoiceAgentSessionAvatarConfig(type, character); + deserializedVoiceAgentSessionAvatarConfig.setStyle(style); + deserializedVoiceAgentSessionAvatarConfig.setCustomized(customized); + deserializedVoiceAgentSessionAvatarConfig.setOutputProtocol(outputProtocol); + deserializedVoiceAgentSessionAvatarConfig.setModel(model); + deserializedVoiceAgentSessionAvatarConfig.setVideo(video); + deserializedVoiceAgentSessionAvatarConfig.setScene(scene); + deserializedVoiceAgentSessionAvatarConfig.setOutputAuditAudio(outputAuditAudio); + deserializedVoiceAgentSessionAvatarConfig.iceServers = iceServers; + return deserializedVoiceAgentSessionAvatarConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionResponseConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionResponseConfig.java new file mode 100644 index 0000000000000..59d154ab84897 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionResponseConfig.java @@ -0,0 +1,496 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.util.List; +import java.util.Map; + +/** + * The effective stable realtime session settings returned by the voice-agent service. + */ +@Immutable +public final class VoiceAgentSessionResponseConfig implements JsonSerializable { + + /* + * The session type. Always `realtime`. + */ + @Generated + private final String type = "realtime"; + + /* + * Instructions applied throughout the session. + */ + @Generated + private String instructions; + + /* + * The sampling temperature for compatible cascaded pipelines. + */ + @Generated + private Double temperature; + + /* + * The maximum output-token count for one response. + */ + @Generated + private BinaryData maxOutputTokens; + + /* + * The output modalities enabled for the session. + */ + @Generated + private List outputModalities; + + /* + * The input- and output-audio settings for the session. + */ + @Generated + private VoiceAgentAudioConfig audio; + + /* + * The avatar settings for the session. + */ + @Generated + private VoiceAgentSessionAvatarConfig avatar; + + /* + * Animation settings for the session. + */ + @Generated + private VoiceAgentAnimationConfig animation; + + /* + * Tools available to the session. + */ + @Generated + private List tools; + + /* + * Tool-selection behavior for the session. + */ + @Generated + private BinaryData toolChoice; + + /* + * Reasoning settings for compatible realtime models. + */ + @Generated + private RealtimeReasoning reasoning; + + /* + * Whether the model may call multiple tools in parallel. + */ + @Generated + private Boolean parallelToolCalls; + + /* + * Additional fields to include in service outputs. + */ + @Generated + private List include; + + /* + * Up to 16 string key-value pairs attached to the session. + */ + @Generated + private Map metadata; + + /* + * Interim-response settings for latency and tool execution. + */ + @Generated + private VoiceAgentInterimResponseConfig interimResponse; + + /* + * A proactive assistant greeting started after session configuration. + */ + @Generated + private VoiceAgentGreetingConfig greeting; + + /* + * The object type. Always `realtime.session`. + */ + @Generated + private final String object = "realtime.session"; + + /* + * The session identifier. + */ + @Generated + private final String id; + + /* + * The selected model. + */ + @Generated + private final String model; + + /* + * The session expiration time as a Unix timestamp in seconds. + */ + @Generated + private Long expiresAt; + + /** + * Creates an instance of VoiceAgentSessionResponseConfig class. + * + * @param id the id value to set. + * @param model the model value to set. + */ + @Generated + private VoiceAgentSessionResponseConfig(String id, String model) { + this.id = id; + this.model = model; + } + + /** + * Get the type property: The session type. Always `realtime`. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * Get the instructions property: Instructions applied throughout the session. + * + * @return the instructions value. + */ + @Generated + public String getInstructions() { + return this.instructions; + } + + /** + * Get the temperature property: The sampling temperature for compatible cascaded pipelines. + * + * @return the temperature value. + */ + @Generated + public Double getTemperature() { + return this.temperature; + } + + /** + * Get the maxOutputTokens property: The maximum output-token count for one response. + * + * @return the maxOutputTokens value. + */ + @Generated + public BinaryData getMaxOutputTokens() { + return this.maxOutputTokens; + } + + /** + * Get the outputModalities property: The output modalities enabled for the session. + * + * @return the outputModalities value. + */ + @Generated + public List getOutputModalities() { + return this.outputModalities; + } + + /** + * Get the audio property: The input- and output-audio settings for the session. + * + * @return the audio value. + */ + @Generated + public VoiceAgentAudioConfig getAudio() { + return this.audio; + } + + /** + * Get the avatar property: The avatar settings for the session. + * + * @return the avatar value. + */ + @Generated + public VoiceAgentSessionAvatarConfig getAvatar() { + return this.avatar; + } + + /** + * Get the animation property: Animation settings for the session. + * + * @return the animation value. + */ + @Generated + public VoiceAgentAnimationConfig getAnimation() { + return this.animation; + } + + /** + * Get the tools property: Tools available to the session. + * + * @return the tools value. + */ + @Generated + public List getTools() { + return this.tools; + } + + /** + * Get the toolChoice property: Tool-selection behavior for the session. + * + * @return the toolChoice value. + */ + @Generated + public BinaryData getToolChoice() { + return this.toolChoice; + } + + /** + * Get the reasoning property: Reasoning settings for compatible realtime models. + * + * @return the reasoning value. + */ + @Generated + public RealtimeReasoning getReasoning() { + return this.reasoning; + } + + /** + * Get the parallelToolCalls property: Whether the model may call multiple tools in parallel. + * + * @return the parallelToolCalls value. + */ + @Generated + public Boolean isParallelToolCalls() { + return this.parallelToolCalls; + } + + /** + * Get the include property: Additional fields to include in service outputs. + * + * @return the include value. + */ + @Generated + public List getInclude() { + return this.include; + } + + /** + * Get the metadata property: Up to 16 string key-value pairs attached to the session. + * + * @return the metadata value. + */ + @Generated + public Map getMetadata() { + return this.metadata; + } + + /** + * Get the interimResponse property: Interim-response settings for latency and tool execution. + * + * @return the interimResponse value. + */ + @Generated + public VoiceAgentInterimResponseConfig getInterimResponse() { + return this.interimResponse; + } + + /** + * Get the greeting property: A proactive assistant greeting started after session configuration. + * + * @return the greeting value. + */ + @Generated + public VoiceAgentGreetingConfig getGreeting() { + return this.greeting; + } + + /** + * Get the object property: The object type. Always `realtime.session`. + * + * @return the object value. + */ + @Generated + public String getObject() { + return this.object; + } + + /** + * Get the id property: The session identifier. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the model property: The selected model. + * + * @return the model value. + */ + @Generated + public String getModel() { + return this.model; + } + + /** + * Get the expiresAt property: The session expiration time as a Unix timestamp in seconds. + * + * @return the expiresAt value. + */ + @Generated + public OffsetDateTime getExpiresAt() { + if (this.expiresAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.expiresAt), ZoneOffset.UTC); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("object", this.object); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("model", this.model); + jsonWriter.writeStringField("instructions", this.instructions); + jsonWriter.writeNumberField("temperature", this.temperature); + if (this.maxOutputTokens != null) { + jsonWriter.writeFieldName("max_output_tokens"); + this.maxOutputTokens.writeTo(jsonWriter); + } + jsonWriter.writeArrayField("output_modalities", this.outputModalities, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + jsonWriter.writeJsonField("audio", this.audio); + jsonWriter.writeJsonField("avatar", this.avatar); + jsonWriter.writeJsonField("animation", this.animation); + jsonWriter.writeArrayField("tools", this.tools, (writer, element) -> writer.writeJson(element)); + if (this.toolChoice != null) { + jsonWriter.writeFieldName("tool_choice"); + this.toolChoice.writeTo(jsonWriter); + } + jsonWriter.writeJsonField("reasoning", this.reasoning); + jsonWriter.writeBooleanField("parallel_tool_calls", this.parallelToolCalls); + jsonWriter.writeArrayField("include", this.include, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element)); + jsonWriter.writeJsonField("interim_response", this.interimResponse); + jsonWriter.writeJsonField("greeting", this.greeting); + jsonWriter.writeNumberField("expires_at", this.expiresAt); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentSessionResponseConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentSessionResponseConfig if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentSessionResponseConfig. + */ + @Generated + public static VoiceAgentSessionResponseConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + String model = null; + String instructions = null; + Double temperature = null; + BinaryData maxOutputTokens = null; + List outputModalities = null; + VoiceAgentAudioConfig audio = null; + VoiceAgentSessionAvatarConfig avatar = null; + VoiceAgentAnimationConfig animation = null; + List tools = null; + BinaryData toolChoice = null; + RealtimeReasoning reasoning = null; + Boolean parallelToolCalls = null; + List include = null; + Map metadata = null; + VoiceAgentInterimResponseConfig interimResponse = null; + VoiceAgentGreetingConfig greeting = null; + Long expiresAt = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("model".equals(fieldName)) { + model = reader.getString(); + } else if ("instructions".equals(fieldName)) { + instructions = reader.getString(); + } else if ("temperature".equals(fieldName)) { + temperature = reader.getNullable(JsonReader::getDouble); + } else if ("max_output_tokens".equals(fieldName)) { + maxOutputTokens + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("output_modalities".equals(fieldName)) { + outputModalities = reader.readArray(reader1 -> VoiceOutputModality.fromString(reader1.getString())); + } else if ("audio".equals(fieldName)) { + audio = VoiceAgentAudioConfig.fromJson(reader); + } else if ("avatar".equals(fieldName)) { + avatar = VoiceAgentSessionAvatarConfig.fromJson(reader); + } else if ("animation".equals(fieldName)) { + animation = VoiceAgentAnimationConfig.fromJson(reader); + } else if ("tools".equals(fieldName)) { + tools = reader.readArray(reader1 -> VoiceAgentTool.fromJson(reader1)); + } else if ("tool_choice".equals(fieldName)) { + toolChoice + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("reasoning".equals(fieldName)) { + reasoning = RealtimeReasoning.fromJson(reader); + } else if ("parallel_tool_calls".equals(fieldName)) { + parallelToolCalls = reader.getNullable(JsonReader::getBoolean); + } else if ("include".equals(fieldName)) { + include + = reader.readArray(reader1 -> VoiceAgentSessionIncludeOption.fromString(reader1.getString())); + } else if ("metadata".equals(fieldName)) { + metadata = reader.readMap(reader1 -> reader1.getString()); + } else if ("interim_response".equals(fieldName)) { + interimResponse = VoiceAgentInterimResponseConfig.fromJson(reader); + } else if ("greeting".equals(fieldName)) { + greeting = VoiceAgentGreetingConfig.fromJson(reader); + } else if ("expires_at".equals(fieldName)) { + expiresAt = reader.getNullable(JsonReader::getLong); + } else { + reader.skipChildren(); + } + } + VoiceAgentSessionResponseConfig deserializedVoiceAgentSessionResponseConfig + = new VoiceAgentSessionResponseConfig(id, model); + deserializedVoiceAgentSessionResponseConfig.instructions = instructions; + deserializedVoiceAgentSessionResponseConfig.temperature = temperature; + deserializedVoiceAgentSessionResponseConfig.maxOutputTokens = maxOutputTokens; + deserializedVoiceAgentSessionResponseConfig.outputModalities = outputModalities; + deserializedVoiceAgentSessionResponseConfig.audio = audio; + deserializedVoiceAgentSessionResponseConfig.avatar = avatar; + deserializedVoiceAgentSessionResponseConfig.animation = animation; + deserializedVoiceAgentSessionResponseConfig.tools = tools; + deserializedVoiceAgentSessionResponseConfig.toolChoice = toolChoice; + deserializedVoiceAgentSessionResponseConfig.reasoning = reasoning; + deserializedVoiceAgentSessionResponseConfig.parallelToolCalls = parallelToolCalls; + deserializedVoiceAgentSessionResponseConfig.include = include; + deserializedVoiceAgentSessionResponseConfig.metadata = metadata; + deserializedVoiceAgentSessionResponseConfig.interimResponse = interimResponse; + deserializedVoiceAgentSessionResponseConfig.greeting = greeting; + deserializedVoiceAgentSessionResponseConfig.expiresAt = expiresAt; + return deserializedVoiceAgentSessionResponseConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionUpdateConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionUpdateConfig.java new file mode 100644 index 0000000000000..98f8576fc74fb --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionUpdateConfig.java @@ -0,0 +1,564 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * The stable realtime session settings accepted in a `session.update` client event. + */ +@Fluent +public final class VoiceAgentSessionUpdateConfig implements JsonSerializable { + + /* + * The session type. Always `realtime`. + */ + @Generated + private final String type = "realtime"; + + /* + * Instructions applied throughout the session. + */ + @Generated + private String instructions; + + /* + * The sampling temperature for compatible cascaded pipelines. + */ + @Generated + private Double temperature; + + /* + * The maximum output-token count for one response. + */ + @Generated + private BinaryData maxOutputTokens; + + /* + * The output modalities enabled for the session. + */ + @Generated + private List outputModalities; + + /* + * The input- and output-audio settings for the session. + */ + @Generated + private VoiceAgentAudioConfig audio; + + /* + * The avatar settings for the session. + */ + @Generated + private VoiceAgentSessionAvatarConfig avatar; + + /* + * Animation settings for the session. + */ + @Generated + private VoiceAgentAnimationConfig animation; + + /* + * Tools available to the session. + */ + @Generated + private List tools; + + /* + * Tool-selection behavior for the session. + */ + @Generated + private BinaryData toolChoice; + + /* + * Reasoning settings for compatible realtime models. + */ + @Generated + private RealtimeReasoning reasoning; + + /* + * Whether the model may call multiple tools in parallel. + */ + @Generated + private Boolean parallelToolCalls; + + /* + * Additional fields to include in service outputs. + */ + @Generated + private List include; + + /* + * Up to 16 string key-value pairs attached to the session. + */ + @Generated + private Map metadata; + + /* + * Interim-response settings for latency and tool execution. + */ + @Generated + private VoiceAgentInterimResponseConfig interimResponse; + + /* + * A proactive assistant greeting started after session configuration. + */ + @Generated + private VoiceAgentGreetingConfig greeting; + + /** + * Creates an instance of VoiceAgentSessionUpdateConfig class. + */ + @Generated + public VoiceAgentSessionUpdateConfig() { + } + + /** + * Get the type property: The session type. Always `realtime`. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * Get the instructions property: Instructions applied throughout the session. + * + * @return the instructions value. + */ + @Generated + public String getInstructions() { + return this.instructions; + } + + /** + * Set the instructions property: Instructions applied throughout the session. + * + * @param instructions the instructions value to set. + * @return the VoiceAgentSessionUpdateConfig object itself. + */ + @Generated + public VoiceAgentSessionUpdateConfig setInstructions(String instructions) { + this.instructions = instructions; + return this; + } + + /** + * Get the temperature property: The sampling temperature for compatible cascaded pipelines. + * + * @return the temperature value. + */ + @Generated + public Double getTemperature() { + return this.temperature; + } + + /** + * Set the temperature property: The sampling temperature for compatible cascaded pipelines. + * + * @param temperature the temperature value to set. + * @return the VoiceAgentSessionUpdateConfig object itself. + */ + @Generated + public VoiceAgentSessionUpdateConfig setTemperature(Double temperature) { + this.temperature = temperature; + return this; + } + + /** + * Get the maxOutputTokens property: The maximum output-token count for one response. + * + * @return the maxOutputTokens value. + */ + @Generated + public BinaryData getMaxOutputTokens() { + return this.maxOutputTokens; + } + + /** + * Set the maxOutputTokens property: The maximum output-token count for one response. + * + * @param maxOutputTokens the maxOutputTokens value to set. + * @return the VoiceAgentSessionUpdateConfig object itself. + */ + @Generated + public VoiceAgentSessionUpdateConfig setMaxOutputTokens(BinaryData maxOutputTokens) { + this.maxOutputTokens = maxOutputTokens; + return this; + } + + /** + * Get the outputModalities property: The output modalities enabled for the session. + * + * @return the outputModalities value. + */ + @Generated + public List getOutputModalities() { + return this.outputModalities; + } + + /** + * Set the outputModalities property: The output modalities enabled for the session. + * + * @param outputModalities the outputModalities value to set. + * @return the VoiceAgentSessionUpdateConfig object itself. + */ + @Generated + public VoiceAgentSessionUpdateConfig setOutputModalities(List outputModalities) { + this.outputModalities = outputModalities; + return this; + } + + /** + * Get the audio property: The input- and output-audio settings for the session. + * + * @return the audio value. + */ + @Generated + public VoiceAgentAudioConfig getAudio() { + return this.audio; + } + + /** + * Set the audio property: The input- and output-audio settings for the session. + * + * @param audio the audio value to set. + * @return the VoiceAgentSessionUpdateConfig object itself. + */ + @Generated + public VoiceAgentSessionUpdateConfig setAudio(VoiceAgentAudioConfig audio) { + this.audio = audio; + return this; + } + + /** + * Get the avatar property: The avatar settings for the session. + * + * @return the avatar value. + */ + @Generated + public VoiceAgentSessionAvatarConfig getAvatar() { + return this.avatar; + } + + /** + * Set the avatar property: The avatar settings for the session. + * + * @param avatar the avatar value to set. + * @return the VoiceAgentSessionUpdateConfig object itself. + */ + @Generated + public VoiceAgentSessionUpdateConfig setAvatar(VoiceAgentSessionAvatarConfig avatar) { + this.avatar = avatar; + return this; + } + + /** + * Get the animation property: Animation settings for the session. + * + * @return the animation value. + */ + @Generated + public VoiceAgentAnimationConfig getAnimation() { + return this.animation; + } + + /** + * Set the animation property: Animation settings for the session. + * + * @param animation the animation value to set. + * @return the VoiceAgentSessionUpdateConfig object itself. + */ + @Generated + public VoiceAgentSessionUpdateConfig setAnimation(VoiceAgentAnimationConfig animation) { + this.animation = animation; + return this; + } + + /** + * Get the tools property: Tools available to the session. + * + * @return the tools value. + */ + @Generated + public List getTools() { + return this.tools; + } + + /** + * Set the tools property: Tools available to the session. + * + * @param tools the tools value to set. + * @return the VoiceAgentSessionUpdateConfig object itself. + */ + @Generated + public VoiceAgentSessionUpdateConfig setTools(List tools) { + this.tools = tools; + return this; + } + + /** + * Get the toolChoice property: Tool-selection behavior for the session. + * + * @return the toolChoice value. + */ + @Generated + public BinaryData getToolChoice() { + return this.toolChoice; + } + + /** + * Set the toolChoice property: Tool-selection behavior for the session. + * + * @param toolChoice the toolChoice value to set. + * @return the VoiceAgentSessionUpdateConfig object itself. + */ + @Generated + public VoiceAgentSessionUpdateConfig setToolChoice(BinaryData toolChoice) { + this.toolChoice = toolChoice; + return this; + } + + /** + * Get the reasoning property: Reasoning settings for compatible realtime models. + * + * @return the reasoning value. + */ + @Generated + public RealtimeReasoning getReasoning() { + return this.reasoning; + } + + /** + * Set the reasoning property: Reasoning settings for compatible realtime models. + * + * @param reasoning the reasoning value to set. + * @return the VoiceAgentSessionUpdateConfig object itself. + */ + @Generated + public VoiceAgentSessionUpdateConfig setReasoning(RealtimeReasoning reasoning) { + this.reasoning = reasoning; + return this; + } + + /** + * Get the parallelToolCalls property: Whether the model may call multiple tools in parallel. + * + * @return the parallelToolCalls value. + */ + @Generated + public Boolean isParallelToolCalls() { + return this.parallelToolCalls; + } + + /** + * Set the parallelToolCalls property: Whether the model may call multiple tools in parallel. + * + * @param parallelToolCalls the parallelToolCalls value to set. + * @return the VoiceAgentSessionUpdateConfig object itself. + */ + @Generated + public VoiceAgentSessionUpdateConfig setParallelToolCalls(Boolean parallelToolCalls) { + this.parallelToolCalls = parallelToolCalls; + return this; + } + + /** + * Get the include property: Additional fields to include in service outputs. + * + * @return the include value. + */ + @Generated + public List getInclude() { + return this.include; + } + + /** + * Set the include property: Additional fields to include in service outputs. + * + * @param include the include value to set. + * @return the VoiceAgentSessionUpdateConfig object itself. + */ + @Generated + public VoiceAgentSessionUpdateConfig setInclude(List include) { + this.include = include; + return this; + } + + /** + * Get the metadata property: Up to 16 string key-value pairs attached to the session. + * + * @return the metadata value. + */ + @Generated + public Map getMetadata() { + return this.metadata; + } + + /** + * Set the metadata property: Up to 16 string key-value pairs attached to the session. + * + * @param metadata the metadata value to set. + * @return the VoiceAgentSessionUpdateConfig object itself. + */ + @Generated + public VoiceAgentSessionUpdateConfig setMetadata(Map metadata) { + this.metadata = metadata; + return this; + } + + /** + * Get the interimResponse property: Interim-response settings for latency and tool execution. + * + * @return the interimResponse value. + */ + @Generated + public VoiceAgentInterimResponseConfig getInterimResponse() { + return this.interimResponse; + } + + /** + * Set the interimResponse property: Interim-response settings for latency and tool execution. + * + * @param interimResponse the interimResponse value to set. + * @return the VoiceAgentSessionUpdateConfig object itself. + */ + @Generated + public VoiceAgentSessionUpdateConfig setInterimResponse(VoiceAgentInterimResponseConfig interimResponse) { + this.interimResponse = interimResponse; + return this; + } + + /** + * Get the greeting property: A proactive assistant greeting started after session configuration. + * + * @return the greeting value. + */ + @Generated + public VoiceAgentGreetingConfig getGreeting() { + return this.greeting; + } + + /** + * Set the greeting property: A proactive assistant greeting started after session configuration. + * + * @param greeting the greeting value to set. + * @return the VoiceAgentSessionUpdateConfig object itself. + */ + @Generated + public VoiceAgentSessionUpdateConfig setGreeting(VoiceAgentGreetingConfig greeting) { + this.greeting = greeting; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("instructions", this.instructions); + jsonWriter.writeNumberField("temperature", this.temperature); + if (this.maxOutputTokens != null) { + jsonWriter.writeFieldName("max_output_tokens"); + this.maxOutputTokens.writeTo(jsonWriter); + } + jsonWriter.writeArrayField("output_modalities", this.outputModalities, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + jsonWriter.writeJsonField("audio", this.audio); + jsonWriter.writeJsonField("avatar", this.avatar); + jsonWriter.writeJsonField("animation", this.animation); + jsonWriter.writeArrayField("tools", this.tools, (writer, element) -> writer.writeJson(element)); + if (this.toolChoice != null) { + jsonWriter.writeFieldName("tool_choice"); + this.toolChoice.writeTo(jsonWriter); + } + jsonWriter.writeJsonField("reasoning", this.reasoning); + jsonWriter.writeBooleanField("parallel_tool_calls", this.parallelToolCalls); + jsonWriter.writeArrayField("include", this.include, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element)); + jsonWriter.writeJsonField("interim_response", this.interimResponse); + jsonWriter.writeJsonField("greeting", this.greeting); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentSessionUpdateConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentSessionUpdateConfig if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentSessionUpdateConfig. + */ + @Generated + public static VoiceAgentSessionUpdateConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentSessionUpdateConfig deserializedVoiceAgentSessionUpdateConfig + = new VoiceAgentSessionUpdateConfig(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("instructions".equals(fieldName)) { + deserializedVoiceAgentSessionUpdateConfig.instructions = reader.getString(); + } else if ("temperature".equals(fieldName)) { + deserializedVoiceAgentSessionUpdateConfig.temperature = reader.getNullable(JsonReader::getDouble); + } else if ("max_output_tokens".equals(fieldName)) { + deserializedVoiceAgentSessionUpdateConfig.maxOutputTokens + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("output_modalities".equals(fieldName)) { + List outputModalities + = reader.readArray(reader1 -> VoiceOutputModality.fromString(reader1.getString())); + deserializedVoiceAgentSessionUpdateConfig.outputModalities = outputModalities; + } else if ("audio".equals(fieldName)) { + deserializedVoiceAgentSessionUpdateConfig.audio = VoiceAgentAudioConfig.fromJson(reader); + } else if ("avatar".equals(fieldName)) { + deserializedVoiceAgentSessionUpdateConfig.avatar = VoiceAgentSessionAvatarConfig.fromJson(reader); + } else if ("animation".equals(fieldName)) { + deserializedVoiceAgentSessionUpdateConfig.animation = VoiceAgentAnimationConfig.fromJson(reader); + } else if ("tools".equals(fieldName)) { + List tools = reader.readArray(reader1 -> VoiceAgentTool.fromJson(reader1)); + deserializedVoiceAgentSessionUpdateConfig.tools = tools; + } else if ("tool_choice".equals(fieldName)) { + deserializedVoiceAgentSessionUpdateConfig.toolChoice + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("reasoning".equals(fieldName)) { + deserializedVoiceAgentSessionUpdateConfig.reasoning = RealtimeReasoning.fromJson(reader); + } else if ("parallel_tool_calls".equals(fieldName)) { + deserializedVoiceAgentSessionUpdateConfig.parallelToolCalls + = reader.getNullable(JsonReader::getBoolean); + } else if ("include".equals(fieldName)) { + List include + = reader.readArray(reader1 -> VoiceAgentSessionIncludeOption.fromString(reader1.getString())); + deserializedVoiceAgentSessionUpdateConfig.include = include; + } else if ("metadata".equals(fieldName)) { + Map metadata = reader.readMap(reader1 -> reader1.getString()); + deserializedVoiceAgentSessionUpdateConfig.metadata = metadata; + } else if ("interim_response".equals(fieldName)) { + deserializedVoiceAgentSessionUpdateConfig.interimResponse + = VoiceAgentInterimResponseConfig.fromJson(reader); + } else if ("greeting".equals(fieldName)) { + deserializedVoiceAgentSessionUpdateConfig.greeting = VoiceAgentGreetingConfig.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentSessionUpdateConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentAbortReason.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentAbortReason.java new file mode 100644 index 0000000000000..1b8f59eb0eb8b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentAbortReason.java @@ -0,0 +1,81 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The reason a subagent consultation was aborted. + */ +public final class VoiceAgentSubagentAbortReason extends ExpandableStringEnum { + + /** + * The requested subagent was not configured for the voice agent. + */ + @Generated + public static final VoiceAgentSubagentAbortReason UNKNOWN_TARGET = fromString("unknown_target"); + + /** + * The subagent invocation exceeded its configured timeout. + */ + @Generated + public static final VoiceAgentSubagentAbortReason TIMEOUT = fromString("timeout"); + + /** + * The consultation was cancelled because the voice session ended. + */ + @Generated + public static final VoiceAgentSubagentAbortReason CANCELLED = fromString("cancelled"); + + /** + * The consultation was stopped at the user's request. + */ + @Generated + public static final VoiceAgentSubagentAbortReason STOPPED_BY_USER = fromString("stopped_by_user"); + + /** + * The consultation was replaced by a newer request. + */ + @Generated + public static final VoiceAgentSubagentAbortReason SUPERSEDED = fromString("superseded"); + + /** + * The consultation failed. + */ + @Generated + public static final VoiceAgentSubagentAbortReason FAILED = fromString("failed"); + + /** + * Creates a new instance of VoiceAgentSubagentAbortReason value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAgentSubagentAbortReason() { + } + + /** + * Creates or finds a VoiceAgentSubagentAbortReason from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAgentSubagentAbortReason. + */ + @Generated + public static VoiceAgentSubagentAbortReason fromString(String name) { + return fromString(name, VoiceAgentSubagentAbortReason.class); + } + + /** + * Gets known VoiceAgentSubagentAbortReason values. + * + * @return known VoiceAgentSubagentAbortReason values. + */ + @Generated + public static Collection values() { + return values(VoiceAgentSubagentAbortReason.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTranscriptionPhrase.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTranscriptionPhrase.java new file mode 100644 index 0000000000000..05a7fe3bee4f1 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTranscriptionPhrase.java @@ -0,0 +1,201 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; +import java.util.List; + +/** + * A transcribed phrase with timing information. + */ +@Immutable +public final class VoiceAgentTranscriptionPhrase implements JsonSerializable { + + /* + * The phrase offset from the beginning of the audio, in milliseconds. + */ + @Generated + private final long offsetMilliseconds; + + /* + * The phrase duration in milliseconds. + */ + @Generated + private final long durationMilliseconds; + + /* + * The transcribed phrase text. + */ + @Generated + private final String text; + + /* + * Word-level timing details, when available. + */ + @Generated + private List words; + + /* + * The detected locale. + */ + @Generated + private String locale; + + /* + * The transcription confidence score. + */ + @Generated + private Double confidence; + + /** + * Creates an instance of VoiceAgentTranscriptionPhrase class. + * + * @param offsetMilliseconds the offsetMilliseconds value to set. + * @param durationMilliseconds the durationMilliseconds value to set. + * @param text the text value to set. + */ + @Generated + private VoiceAgentTranscriptionPhrase(Duration offsetMilliseconds, Duration durationMilliseconds, String text) { + if (offsetMilliseconds == null) { + this.offsetMilliseconds = 0L; + } else { + this.offsetMilliseconds = offsetMilliseconds.toMillis(); + } + if (durationMilliseconds == null) { + this.durationMilliseconds = 0L; + } else { + this.durationMilliseconds = durationMilliseconds.toMillis(); + } + this.text = text; + } + + /** + * Get the offsetMilliseconds property: The phrase offset from the beginning of the audio, in milliseconds. + * + * @return the offsetMilliseconds value. + */ + @Generated + public Duration getOffsetMilliseconds() { + return Duration.ofMillis(this.offsetMilliseconds); + } + + /** + * Get the durationMilliseconds property: The phrase duration in milliseconds. + * + * @return the durationMilliseconds value. + */ + @Generated + public Duration getDurationMilliseconds() { + return Duration.ofMillis(this.durationMilliseconds); + } + + /** + * Get the text property: The transcribed phrase text. + * + * @return the text value. + */ + @Generated + public String getText() { + return this.text; + } + + /** + * Get the words property: Word-level timing details, when available. + * + * @return the words value. + */ + @Generated + public List getWords() { + return this.words; + } + + /** + * Get the locale property: The detected locale. + * + * @return the locale value. + */ + @Generated + public String getLocale() { + return this.locale; + } + + /** + * Get the confidence property: The transcription confidence score. + * + * @return the confidence value. + */ + @Generated + public Double getConfidence() { + return this.confidence; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeLongField("offset_milliseconds", this.offsetMilliseconds); + jsonWriter.writeLongField("duration_milliseconds", this.durationMilliseconds); + jsonWriter.writeStringField("text", this.text); + jsonWriter.writeArrayField("words", this.words, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeStringField("locale", this.locale); + jsonWriter.writeNumberField("confidence", this.confidence); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentTranscriptionPhrase from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentTranscriptionPhrase if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentTranscriptionPhrase. + */ + @Generated + public static VoiceAgentTranscriptionPhrase fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + Duration offsetMilliseconds = null; + Duration durationMilliseconds = null; + String text = null; + List words = null; + String locale = null; + Double confidence = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("offset_milliseconds".equals(fieldName)) { + offsetMilliseconds = Duration.ofMillis(reader.getLong()); + } else if ("duration_milliseconds".equals(fieldName)) { + durationMilliseconds = Duration.ofMillis(reader.getLong()); + } else if ("text".equals(fieldName)) { + text = reader.getString(); + } else if ("words".equals(fieldName)) { + words = reader.readArray(reader1 -> VoiceAgentTranscriptionWord.fromJson(reader1)); + } else if ("locale".equals(fieldName)) { + locale = reader.getString(); + } else if ("confidence".equals(fieldName)) { + confidence = reader.getNullable(JsonReader::getDouble); + } else { + reader.skipChildren(); + } + } + VoiceAgentTranscriptionPhrase deserializedVoiceAgentTranscriptionPhrase + = new VoiceAgentTranscriptionPhrase(offsetMilliseconds, durationMilliseconds, text); + deserializedVoiceAgentTranscriptionPhrase.words = words; + deserializedVoiceAgentTranscriptionPhrase.locale = locale; + deserializedVoiceAgentTranscriptionPhrase.confidence = confidence; + return deserializedVoiceAgentTranscriptionPhrase; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTranscriptionWord.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTranscriptionWord.java new file mode 100644 index 0000000000000..50b2ad0ef5f15 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTranscriptionWord.java @@ -0,0 +1,135 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; + +/** + * A time-stamped word in an input-audio transcription. + */ +@Immutable +public final class VoiceAgentTranscriptionWord implements JsonSerializable { + + /* + * The transcribed word text. + */ + @Generated + private final String text; + + /* + * The word offset from the beginning of the audio, in milliseconds. + */ + @Generated + private final long offsetMilliseconds; + + /* + * The word duration in milliseconds. + */ + @Generated + private final long durationMilliseconds; + + /** + * Creates an instance of VoiceAgentTranscriptionWord class. + * + * @param text the text value to set. + * @param offsetMilliseconds the offsetMilliseconds value to set. + * @param durationMilliseconds the durationMilliseconds value to set. + */ + @Generated + private VoiceAgentTranscriptionWord(String text, Duration offsetMilliseconds, Duration durationMilliseconds) { + this.text = text; + if (offsetMilliseconds == null) { + this.offsetMilliseconds = 0L; + } else { + this.offsetMilliseconds = offsetMilliseconds.toMillis(); + } + if (durationMilliseconds == null) { + this.durationMilliseconds = 0L; + } else { + this.durationMilliseconds = durationMilliseconds.toMillis(); + } + } + + /** + * Get the text property: The transcribed word text. + * + * @return the text value. + */ + @Generated + public String getText() { + return this.text; + } + + /** + * Get the offsetMilliseconds property: The word offset from the beginning of the audio, in milliseconds. + * + * @return the offsetMilliseconds value. + */ + @Generated + public Duration getOffsetMilliseconds() { + return Duration.ofMillis(this.offsetMilliseconds); + } + + /** + * Get the durationMilliseconds property: The word duration in milliseconds. + * + * @return the durationMilliseconds value. + */ + @Generated + public Duration getDurationMilliseconds() { + return Duration.ofMillis(this.durationMilliseconds); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("text", this.text); + jsonWriter.writeLongField("offset_milliseconds", this.offsetMilliseconds); + jsonWriter.writeLongField("duration_milliseconds", this.durationMilliseconds); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentTranscriptionWord from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentTranscriptionWord if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentTranscriptionWord. + */ + @Generated + public static VoiceAgentTranscriptionWord fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String text = null; + Duration offsetMilliseconds = null; + Duration durationMilliseconds = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("text".equals(fieldName)) { + text = reader.getString(); + } else if ("offset_milliseconds".equals(fieldName)) { + offsetMilliseconds = Duration.ofMillis(reader.getLong()); + } else if ("duration_milliseconds".equals(fieldName)) { + durationMilliseconds = Duration.ofMillis(reader.getLong()); + } else { + reader.skipChildren(); + } + } + return new VoiceAgentTranscriptionWord(text, offsetMilliseconds, durationMilliseconds); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentWebSocketConnectionOptions.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentWebSocketConnectionOptions.java new file mode 100644 index 0000000000000..2f475265a5914 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentWebSocketConnectionOptions.java @@ -0,0 +1,137 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.models; + +import com.azure.ai.agents.implementation.utils.Beta; +import com.azure.core.annotation.Fluent; + +import java.time.Duration; + +/** + * Options used when opening a realtime voice-agent WebSocket session. + */ +@Beta(warningText = "This class is in preview and may change in future releases.") +@Fluent +public final class VoiceAgentWebSocketConnectionOptions { + private VoiceAgentTransport transport = VoiceAgentTransport.WEBSOCKET; + private Boolean store; + private String agentVersionOverride; + private Duration handshakeTimeout = Duration.ofSeconds(30); + private Duration closeTimeout = Duration.ofSeconds(10); + + /** + * Creates options for opening a realtime voice-agent WebSocket session. + */ + public VoiceAgentWebSocketConnectionOptions() { + } + + /** + * Gets the session transport. + * + * @return the session transport. + */ + public VoiceAgentTransport getTransport() { + return transport; + } + + /** + * Sets the session transport. WebRTC transport performs signaling only; the SDK does not provide a WebRTC media + * implementation. + * + * @param transport the session transport. + * @return this options instance. + */ + public VoiceAgentWebSocketConnectionOptions setTransport(VoiceAgentTransport transport) { + this.transport = transport; + return this; + } + + /** + * Gets whether the conversation is persisted for this session. + * + * @return whether the conversation is persisted, or {@code null} to use the agent definition. + */ + public Boolean isStoreEnabled() { + return store; + } + + /** + * Sets whether the conversation is persisted for this session. + * + * @param store whether the conversation is persisted, or {@code null} to use the agent definition. + * @return this options instance. + */ + public VoiceAgentWebSocketConnectionOptions setStoreEnabled(Boolean store) { + this.store = store; + return this; + } + + /** + * Gets the agent version override. + * + * @return the agent version override. + */ + public String getAgentVersionOverride() { + return agentVersionOverride; + } + + /** + * Sets the agent version override. + * + * @param agentVersionOverride the agent version to use for this session. + * @return this options instance. + */ + public VoiceAgentWebSocketConnectionOptions setAgentVersionOverride(String agentVersionOverride) { + this.agentVersionOverride = agentVersionOverride; + return this; + } + + /** + * Gets the WebSocket handshake timeout. + * + * @return the WebSocket handshake timeout. + */ + public Duration getHandshakeTimeout() { + return handshakeTimeout; + } + + /** + * Sets the WebSocket handshake timeout. + * + * @param handshakeTimeout the positive handshake timeout. + * @return this options instance. + */ + public VoiceAgentWebSocketConnectionOptions setHandshakeTimeout(Duration handshakeTimeout) { + validatePositive(handshakeTimeout, "handshakeTimeout"); + this.handshakeTimeout = handshakeTimeout; + return this; + } + + /** + * Gets the graceful close timeout. + * + * @return the graceful close timeout. + */ + public Duration getCloseTimeout() { + return closeTimeout; + } + + /** + * Sets the graceful close timeout. + * + * @param closeTimeout the positive close timeout. + * @return this options instance. + */ + public VoiceAgentWebSocketConnectionOptions setCloseTimeout(Duration closeTimeout) { + validatePositive(closeTimeout, "closeTimeout"); + this.closeTimeout = closeTimeout; + return this; + } + + private static void validatePositive(Duration duration, String name) { + if (duration == null || duration.isZero() || duration.isNegative()) { + throw new IllegalArgumentException("'" + name + "' must be positive."); + } + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceIdsShared.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceIdsShared.java new file mode 100644 index 0000000000000..ee6c45941e920 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceIdsShared.java @@ -0,0 +1,105 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Defines values for VoiceIdsShared. + */ +public final class VoiceIdsShared extends ExpandableStringEnum { + + /** + * Static value alloy for VoiceIdsShared. + */ + @Generated + public static final VoiceIdsShared ALLOY = fromString("alloy"); + + /** + * Static value ash for VoiceIdsShared. + */ + @Generated + public static final VoiceIdsShared ASH = fromString("ash"); + + /** + * Static value ballad for VoiceIdsShared. + */ + @Generated + public static final VoiceIdsShared BALLAD = fromString("ballad"); + + /** + * Static value coral for VoiceIdsShared. + */ + @Generated + public static final VoiceIdsShared CORAL = fromString("coral"); + + /** + * Static value echo for VoiceIdsShared. + */ + @Generated + public static final VoiceIdsShared ECHO = fromString("echo"); + + /** + * Static value sage for VoiceIdsShared. + */ + @Generated + public static final VoiceIdsShared SAGE = fromString("sage"); + + /** + * Static value shimmer for VoiceIdsShared. + */ + @Generated + public static final VoiceIdsShared SHIMMER = fromString("shimmer"); + + /** + * Static value verse for VoiceIdsShared. + */ + @Generated + public static final VoiceIdsShared VERSE = fromString("verse"); + + /** + * Static value marin for VoiceIdsShared. + */ + @Generated + public static final VoiceIdsShared MARIN = fromString("marin"); + + /** + * Static value cedar for VoiceIdsShared. + */ + @Generated + public static final VoiceIdsShared CEDAR = fromString("cedar"); + + /** + * Creates a new instance of VoiceIdsShared value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceIdsShared() { + } + + /** + * Creates or finds a VoiceIdsShared from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceIdsShared. + */ + @Generated + public static VoiceIdsShared fromString(String name) { + return fromString(name, VoiceIdsShared.class); + } + + /** + * Gets known VoiceIdsShared values. + * + * @return known VoiceIdsShared values. + */ + @Generated + public static Collection values() { + return values(VoiceIdsShared.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseObject1.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseObject1.java new file mode 100644 index 0000000000000..714655bac4833 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseObject1.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for VoiceResponseBaseObject1. + */ +public enum VoiceResponseBaseObject1 { + /** + * Enum value realtime.response. + */ + REALTIME_RESPONSE("realtime.response"); + + /** + * The actual serialized value for a VoiceResponseBaseObject1 instance. + */ + private final String value; + + VoiceResponseBaseObject1(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a VoiceResponseBaseObject1 instance. + * + * @param value the serialized value to parse. + * @return the parsed VoiceResponseBaseObject1 object, or null if unable to parse. + */ + public static VoiceResponseBaseObject1 fromString(String value) { + if (value == null) { + return null; + } + VoiceResponseBaseObject1[] items = VoiceResponseBaseObject1.values(); + for (VoiceResponseBaseObject1 item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/module-info.java b/sdk/ai/azure-ai-agents/src/main/java/module-info.java index cc62b970db7c4..6aa1df2cf2e22 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/module-info.java +++ b/sdk/ai/azure-ai-agents/src/main/java/module-info.java @@ -1,15 +1,18 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. -// Code generated by Microsoft (R) TypeSpec Code Generator. module com.azure.ai.agents { requires transitive com.azure.core; - requires transitive openai.java.client.okhttp; requires transitive openai.java.core; + requires transitive openai.java.client.okhttp; + requires reactor.netty.http; + requires reactor.netty.core; + requires io.netty.codec.http; + requires io.netty.transport; + requires io.netty.common; + requires io.netty.codec; exports com.azure.ai.agents; exports com.azure.ai.agents.models; - opens com.azure.ai.agents.implementation.models to com.azure.core; opens com.azure.ai.agents.models to com.azure.core; + opens com.azure.ai.agents.implementation.models to com.azure.core; } diff --git a/sdk/ai/azure-ai-agents/src/main/resources/META-INF/azure-ai-agents_metadata.json b/sdk/ai/azure-ai-agents/src/main/resources/META-INF/azure-ai-agents_metadata.json index 63797ced1219b..93f908bd2078a 100644 --- a/sdk/ai/azure-ai-agents/src/main/resources/META-INF/azure-ai-agents_metadata.json +++ b/sdk/ai/azure-ai-agents/src/main/resources/META-INF/azure-ai-agents_metadata.json @@ -1 +1 @@ -{"flavor":"azure","apiVersions":{"Azure.AI.Projects":"v1"},"crossLanguagePackageId":"Azure.AI.Projects","crossLanguageVersion":"c64ff2bf6467","crossLanguageDefinitions":{"com.azure.ai.agents.AgentsAsyncClient":"Azure.AI.Projects.Agents","com.azure.ai.agents.AgentsAsyncClient.createAgent":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsAsyncClient.createAgentFromCode":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentFromManifest":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentVersion":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromCode":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromManifest":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionWithResponse":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsAsyncClient.createAgentWithResponse":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsAsyncClient.createSession":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsAsyncClient.createSessionWithResponse":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsAsyncClient.deleteSession":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsAsyncClient.deleteSessionFile":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsAsyncClient.deleteSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsAsyncClient.deleteSessionWithResponse":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsAsyncClient.disableAgent":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsAsyncClient.disableAgentWithResponse":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsAsyncClient.downloadAgentCode":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsAsyncClient.downloadAgentCodeWithResponse":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsAsyncClient.downloadSessionFile":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsAsyncClient.downloadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsAsyncClient.enableAgent":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsAsyncClient.enableAgentWithResponse":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsAsyncClient.getAgent":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsAsyncClient.getAgentVersionDetails":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsAsyncClient.getAgentVersionDetailsWithResponse":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsAsyncClient.getAgentWithResponse":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365AppPackage":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365AppPackageWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365PublishDefaults":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365PublishDefaultsWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsAsyncClient.getSession":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsAsyncClient.getSessionWithResponse":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsAsyncClient.listAgentConversations":"Azure.AI.Projects.Conversations.listConversations","com.azure.ai.agents.AgentsAsyncClient.listAgentVersions":"Azure.AI.Projects.Agents.listAgentVersions","com.azure.ai.agents.AgentsAsyncClient.listAgents":"Azure.AI.Projects.Agents.listAgents","com.azure.ai.agents.AgentsAsyncClient.listSessionFiles":"Azure.AI.Projects.AgentSessionFiles.listSessionFiles","com.azure.ai.agents.AgentsAsyncClient.listSessions":"Azure.AI.Projects.Agents.listSessions","com.azure.ai.agents.AgentsAsyncClient.publishAgentToMicrosoft365":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsAsyncClient.publishAgentToMicrosoft365WithResponse":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsAsyncClient.stopSession":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsAsyncClient.stopSessionWithResponse":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsAsyncClient.updateAgent":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsAsyncClient.updateAgentDetails":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsAsyncClient.updateAgentDetailsWithResponse":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromCode":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromManifest":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.updateAgentWithResponse":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsAsyncClient.uploadSessionFile":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsAsyncClient.uploadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsClient":"Azure.AI.Projects.Agents","com.azure.ai.agents.AgentsClient.createAgent":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsClient.createAgentFromCode":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsClient.createAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsClient.createAgentFromManifest":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsClient.createAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsClient.createAgentVersion":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsClient.createAgentVersionFromCode":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsClient.createAgentVersionFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsClient.createAgentVersionFromManifest":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsClient.createAgentVersionFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsClient.createAgentVersionWithResponse":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsClient.createAgentWithResponse":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsClient.createSession":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsClient.createSessionWithResponse":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsClient.deleteSession":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsClient.deleteSessionFile":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsClient.deleteSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsClient.deleteSessionWithResponse":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsClient.disableAgent":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsClient.disableAgentWithResponse":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsClient.downloadAgentCode":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsClient.downloadAgentCodeWithResponse":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsClient.downloadSessionFile":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsClient.downloadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsClient.enableAgent":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsClient.enableAgentWithResponse":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsClient.getAgent":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsClient.getAgentVersionDetails":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsClient.getAgentVersionDetailsWithResponse":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsClient.getAgentWithResponse":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsClient.getMicrosoft365AppPackage":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsClient.getMicrosoft365AppPackageWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsClient.getMicrosoft365PublishDefaults":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsClient.getMicrosoft365PublishDefaultsWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsClient.getSession":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsClient.getSessionWithResponse":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsClient.listAgentConversations":"Azure.AI.Projects.Conversations.listConversations","com.azure.ai.agents.AgentsClient.listAgentVersions":"Azure.AI.Projects.Agents.listAgentVersions","com.azure.ai.agents.AgentsClient.listAgents":"Azure.AI.Projects.Agents.listAgents","com.azure.ai.agents.AgentsClient.listSessionFiles":"Azure.AI.Projects.AgentSessionFiles.listSessionFiles","com.azure.ai.agents.AgentsClient.listSessions":"Azure.AI.Projects.Agents.listSessions","com.azure.ai.agents.AgentsClient.publishAgentToMicrosoft365":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsClient.publishAgentToMicrosoft365WithResponse":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsClient.stopSession":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsClient.stopSessionWithResponse":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsClient.updateAgent":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsClient.updateAgentDetails":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsClient.updateAgentDetailsWithResponse":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsClient.updateAgentFromCode":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsClient.updateAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsClient.updateAgentFromManifest":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsClient.updateAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsClient.updateAgentWithResponse":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsClient.uploadSessionFile":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsClient.uploadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsClientBuilder":"Azure.AI.Projects","com.azure.ai.agents.BetaAgentsAsyncClient":"Azure.AI.Projects.Beta.Agents","com.azure.ai.agents.BetaAgentsAsyncClient.beginCreateOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsAsyncClient.beginCreateOptimizationJobWithModel":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsAsyncClient.cancelOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsAsyncClient.cancelOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsAsyncClient.deleteOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsAsyncClient.deleteOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsAsyncClient.getOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsAsyncClient.getOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsAsyncClient.listOptimizationJobs":"Azure.AI.Projects.AgentOptimizationJobs.list","com.azure.ai.agents.BetaAgentsClient":"Azure.AI.Projects.Beta.Agents","com.azure.ai.agents.BetaAgentsClient.beginCreateOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsClient.beginCreateOptimizationJobWithModel":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsClient.cancelOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsClient.cancelOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsClient.deleteOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsClient.deleteOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsClient.getOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsClient.getOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsClient.listOptimizationJobs":"Azure.AI.Projects.AgentOptimizationJobs.list","com.azure.ai.agents.BetaMemoryStoresAsyncClient":"Azure.AI.Projects.Beta.MemoryStores","com.azure.ai.agents.BetaMemoryStoresAsyncClient.beginInternalUpdateMemories":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.beginInternalUpdateMemoriesWithModel":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemory":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemoryStore":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemoryWithResponse":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemory":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemoryStore":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemoryWithResponse":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getUpdateResult":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getUpdateResultWithResponse":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresAsyncClient.internalSearchMemories":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.internalSearchMemoriesWithResponse":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.listMemories":"Azure.AI.Projects.MemoryStores.listMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.listMemoryStores":"Azure.AI.Projects.MemoryStores.listMemoryStores","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemory":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemoryStore":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemoryWithResponse":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.BetaMemoryStoresClient":"Azure.AI.Projects.Beta.MemoryStores","com.azure.ai.agents.BetaMemoryStoresClient.beginInternalUpdateMemories":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresClient.beginInternalUpdateMemoriesWithModel":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresClient.createMemory":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresClient.createMemoryStore":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.createMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.createMemoryWithResponse":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresClient.getMemory":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresClient.getMemoryStore":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.getMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.getMemoryWithResponse":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresClient.getUpdateResult":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresClient.getUpdateResultWithResponse":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresClient.internalSearchMemories":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresClient.internalSearchMemoriesWithResponse":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresClient.listMemories":"Azure.AI.Projects.MemoryStores.listMemories","com.azure.ai.agents.BetaMemoryStoresClient.listMemoryStores":"Azure.AI.Projects.MemoryStores.listMemoryStores","com.azure.ai.agents.BetaMemoryStoresClient.updateMemory":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.BetaMemoryStoresClient.updateMemoryStore":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.updateMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.updateMemoryWithResponse":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.ToolboxesAsyncClient":"Azure.AI.Projects.Toolboxes","com.azure.ai.agents.ToolboxesAsyncClient.createToolboxVersion":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.createToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolbox":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolboxVersion":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolboxWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesAsyncClient.getToolbox":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesAsyncClient.getToolboxVersion":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.getToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.getToolboxWithResponse":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesAsyncClient.listToolboxVersions":"Azure.AI.Projects.Toolboxes.listToolboxVersions","com.azure.ai.agents.ToolboxesAsyncClient.listToolboxes":"Azure.AI.Projects.Toolboxes.listToolboxes","com.azure.ai.agents.ToolboxesAsyncClient.updateToolbox":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.ToolboxesAsyncClient.updateToolboxWithResponse":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.ToolboxesClient":"Azure.AI.Projects.Toolboxes","com.azure.ai.agents.ToolboxesClient.createToolboxVersion":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesClient.createToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesClient.deleteToolbox":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesClient.deleteToolboxVersion":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesClient.deleteToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesClient.deleteToolboxWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesClient.getToolbox":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesClient.getToolboxVersion":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesClient.getToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesClient.getToolboxWithResponse":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesClient.listToolboxVersions":"Azure.AI.Projects.Toolboxes.listToolboxVersions","com.azure.ai.agents.ToolboxesClient.listToolboxes":"Azure.AI.Projects.Toolboxes.listToolboxes","com.azure.ai.agents.ToolboxesClient.updateToolbox":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.ToolboxesClient.updateToolboxWithResponse":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.implementation.models.AgentDefinitionOptInKeys":"Azure.AI.Projects.AgentDefinitionOptInKeys","com.azure.ai.agents.implementation.models.CreateAgentFromCodeContent":"Azure.AI.Projects.CreateAgentFromCodeContent","com.azure.ai.agents.implementation.models.CreateAgentFromManifestRequest":"Azure.AI.Projects.createAgentFromManifest.Request.anonymous","com.azure.ai.agents.implementation.models.CreateAgentOptions":null,"com.azure.ai.agents.implementation.models.CreateAgentRequest":"Azure.AI.Projects.createAgent.Request.anonymous","com.azure.ai.agents.implementation.models.CreateAgentVersionFromManifestRequest":"Azure.AI.Projects.createAgentVersionFromManifest.Request.anonymous","com.azure.ai.agents.implementation.models.CreateAgentVersionRequest":"Azure.AI.Projects.createAgentVersion.Request.anonymous","com.azure.ai.agents.implementation.models.CreateMemoryRequest":"Azure.AI.Projects.createMemory.Request.anonymous","com.azure.ai.agents.implementation.models.CreateMemoryStoreRequest":"Azure.AI.Projects.createMemoryStore.Request.anonymous","com.azure.ai.agents.implementation.models.CreateSessionRequest":"Azure.AI.Projects.createSession.Request.anonymous","com.azure.ai.agents.implementation.models.CreateToolboxVersionRequest":"Azure.AI.Projects.createToolboxVersion.Request.anonymous","com.azure.ai.agents.implementation.models.FoundryFeaturesOptInKeys":"Azure.AI.Projects.FoundryFeaturesOptInKeys","com.azure.ai.agents.implementation.models.GetMicrosoft365AppPackageRequest":"Azure.AI.Projects.getMicrosoft365AppPackage.Request.anonymous","com.azure.ai.agents.implementation.models.ListMemoriesRequest":"Azure.AI.Projects.listMemories.Request.anonymous","com.azure.ai.agents.implementation.models.PublishAgentToMicrosoft365Request":"Azure.AI.Projects.publishAgentToMicrosoft365.Request.anonymous","com.azure.ai.agents.implementation.models.SearchMemoriesRequest":"Azure.AI.Projects.searchMemories.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateAgentFromManifestRequest":"Azure.AI.Projects.updateAgentFromManifest.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateAgentRequest":"Azure.AI.Projects.updateAgent.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateMemoriesRequest":"Azure.AI.Projects.updateMemories.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateMemoryRequest":"Azure.AI.Projects.updateMemory.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateMemoryStoreRequest":"Azure.AI.Projects.updateMemoryStore.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateToolboxInput":"Azure.AI.Projects.UpdateToolboxRequest","com.azure.ai.agents.implementation.models.UpdateToolboxRequest":"Azure.AI.Projects.updateToolbox.Request.anonymous","com.azure.ai.agents.models.A2APreviewTool":"Azure.AI.Projects.A2APreviewTool","com.azure.ai.agents.models.A2APreviewToolboxTool":"Azure.AI.Projects.A2APreviewToolboxTool","com.azure.ai.agents.models.A2AProtocolConfiguration":"Azure.AI.Projects.A2AProtocolConfiguration","com.azure.ai.agents.models.A2AProtocolVersion":"Azure.AI.Projects.A2AProtocolVersion","com.azure.ai.agents.models.A2ATool":"Azure.AI.Projects.A2ATool","com.azure.ai.agents.models.A2AToolCall":"Azure.AI.Projects.A2AToolCall","com.azure.ai.agents.models.A2AToolCallOutput":"Azure.AI.Projects.A2AToolCallOutput","com.azure.ai.agents.models.A2AToolboxTool":"Azure.AI.Projects.A2AToolboxTool","com.azure.ai.agents.models.AISearchIndexResource":"Azure.AI.Projects.AISearchIndexResource","com.azure.ai.agents.models.ActivityProtocolAccessBoundary":"Azure.AI.Projects.ActivityProtocolAccessBoundary","com.azure.ai.agents.models.ActivityProtocolConfiguration":"Azure.AI.Projects.ActivityProtocolConfiguration","com.azure.ai.agents.models.AgentBlueprintReference":"Azure.AI.Projects.AgentBlueprintReference","com.azure.ai.agents.models.AgentBlueprintReferenceType":"Azure.AI.Projects.AgentBlueprintReferenceType","com.azure.ai.agents.models.AgentCard":"Azure.AI.Projects.AgentCard","com.azure.ai.agents.models.AgentCardSkill":"Azure.AI.Projects.AgentCardSkill","com.azure.ai.agents.models.AgentDefinition":"Azure.AI.Projects.AgentDefinition","com.azure.ai.agents.models.AgentDetails":"Azure.AI.Projects.AgentObject","com.azure.ai.agents.models.AgentDetailsVersions":"Azure.AI.Projects.AgentObject.versions.anonymous","com.azure.ai.agents.models.AgentEndpointAuthorizationScheme":"Azure.AI.Projects.AgentEndpointAuthorizationScheme","com.azure.ai.agents.models.AgentEndpointAuthorizationSchemeType":"Azure.AI.Projects.AgentEndpointAuthorizationSchemeType","com.azure.ai.agents.models.AgentEndpointConfig":"Azure.AI.Projects.AgentEndpointConfig","com.azure.ai.agents.models.AgentEndpointProtocol":"Azure.AI.Projects.AgentEndpointProtocol","com.azure.ai.agents.models.AgentIdentity":"Azure.AI.Projects.AgentIdentity","com.azure.ai.agents.models.AgentIdentityStatus":"Azure.AI.Projects.AgentIdentityStatus","com.azure.ai.agents.models.AgentKind":"Azure.AI.Projects.AgentKind","com.azure.ai.agents.models.AgentObjectType":"Azure.AI.Projects.AgentObjectType","com.azure.ai.agents.models.AgentOptimizationCandidate":"Azure.AI.Projects.AgentOptimizationCandidate","com.azure.ai.agents.models.AgentOptimizationDatasetCriterion":"Azure.AI.Projects.AgentOptimizationDatasetCriterion","com.azure.ai.agents.models.AgentOptimizationDatasetInput":"Azure.AI.Projects.AgentOptimizationDatasetInput","com.azure.ai.agents.models.AgentOptimizationDatasetInputType":"Azure.AI.Projects.AgentOptimizationDatasetInputType","com.azure.ai.agents.models.AgentOptimizationDatasetItem":"Azure.AI.Projects.AgentOptimizationDatasetItem","com.azure.ai.agents.models.AgentOptimizationEvaluatorReference":"Azure.AI.Projects.AgentOptimizationEvaluatorRef","com.azure.ai.agents.models.AgentOptimizationInlineDatasetInput":"Azure.AI.Projects.AgentOptimizationInlineDatasetInput","com.azure.ai.agents.models.AgentOptimizationJob":"Azure.AI.Projects.AgentOptimizationJob","com.azure.ai.agents.models.AgentOptimizationJobInputs":"Azure.AI.Projects.AgentOptimizationJobInputs","com.azure.ai.agents.models.AgentOptimizationJobListItem":"Azure.AI.Projects.AgentOptimizationJobListItem","com.azure.ai.agents.models.AgentOptimizationJobProgress":"Azure.AI.Projects.AgentOptimizationJobProgress","com.azure.ai.agents.models.AgentOptimizationJobResult":"Azure.AI.Projects.AgentOptimizationJobResult","com.azure.ai.agents.models.AgentOptimizationOptions":"Azure.AI.Projects.AgentOptimizationOptions","com.azure.ai.agents.models.AgentOptimizationReferenceDatasetInput":"Azure.AI.Projects.AgentOptimizationReferenceDatasetInput","com.azure.ai.agents.models.AgentReference":"Azure.AI.Projects.AgentReference","com.azure.ai.agents.models.AgentSessionResource":"Azure.AI.Projects.AgentSessionResource","com.azure.ai.agents.models.AgentSessionStatus":"Azure.AI.Projects.AgentSessionStatus","com.azure.ai.agents.models.AgentState":"Azure.AI.Projects.AgentState","com.azure.ai.agents.models.AgentStateSource":"Azure.AI.Projects.AgentStateSource","com.azure.ai.agents.models.AgentVersionDetails":"Azure.AI.Projects.AgentVersionObject","com.azure.ai.agents.models.AgentVersionStatus":"Azure.AI.Projects.AgentVersionStatus","com.azure.ai.agents.models.ApiError":"OpenAI.Error","com.azure.ai.agents.models.ApplyPatchToolParameter":"OpenAI.ApplyPatchToolParam","com.azure.ai.agents.models.ApproximateLocation":"OpenAI.ApproximateLocation","com.azure.ai.agents.models.AutoCodeInterpreterToolParameter":"OpenAI.AutoCodeInterpreterToolParam","com.azure.ai.agents.models.AzureAISearchQueryType":"Azure.AI.Projects.AzureAISearchQueryType","com.azure.ai.agents.models.AzureAISearchTool":"Azure.AI.Projects.AzureAISearchTool","com.azure.ai.agents.models.AzureAISearchToolCall":"Azure.AI.Projects.AzureAISearchToolCall","com.azure.ai.agents.models.AzureAISearchToolCallOutput":"Azure.AI.Projects.AzureAISearchToolCallOutput","com.azure.ai.agents.models.AzureAISearchToolResource":"Azure.AI.Projects.AzureAISearchToolResource","com.azure.ai.agents.models.AzureAISearchToolboxTool":"Azure.AI.Projects.AzureAISearchToolboxTool","com.azure.ai.agents.models.AzureCreateResponseDetails":"Azure.AI.Projects.AzureCreateResponseDetails","com.azure.ai.agents.models.AzureCreateResponseOptions":"Azure.AI.Projects.AzureCreateResponseOptions","com.azure.ai.agents.models.AzureFunctionBinding":"Azure.AI.Projects.AzureFunctionBinding","com.azure.ai.agents.models.AzureFunctionDefinition":"Azure.AI.Projects.AzureFunctionDefinition","com.azure.ai.agents.models.AzureFunctionDefinitionDetails":"Azure.AI.Projects.AzureFunctionDefinition.function.anonymous","com.azure.ai.agents.models.AzureFunctionStorageQueue":"Azure.AI.Projects.AzureFunctionStorageQueue","com.azure.ai.agents.models.AzureFunctionTool":"Azure.AI.Projects.AzureFunctionTool","com.azure.ai.agents.models.AzureFunctionToolCall":"Azure.AI.Projects.AzureFunctionToolCall","com.azure.ai.agents.models.AzureFunctionToolCallOutput":"Azure.AI.Projects.AzureFunctionToolCallOutput","com.azure.ai.agents.models.AzureUserSecurityContext":"Azure.AI.Projects.AzureUserSecurityContext","com.azure.ai.agents.models.BingCustomSearchConfiguration":"Azure.AI.Projects.BingCustomSearchConfiguration","com.azure.ai.agents.models.BingCustomSearchPreviewTool":"Azure.AI.Projects.BingCustomSearchPreviewTool","com.azure.ai.agents.models.BingCustomSearchToolCall":"Azure.AI.Projects.BingCustomSearchToolCall","com.azure.ai.agents.models.BingCustomSearchToolCallOutput":"Azure.AI.Projects.BingCustomSearchToolCallOutput","com.azure.ai.agents.models.BingCustomSearchToolParameters":"Azure.AI.Projects.BingCustomSearchToolParameters","com.azure.ai.agents.models.BingGroundingSearchConfiguration":"Azure.AI.Projects.BingGroundingSearchConfiguration","com.azure.ai.agents.models.BingGroundingSearchToolParameters":"Azure.AI.Projects.BingGroundingSearchToolParameters","com.azure.ai.agents.models.BingGroundingTool":"Azure.AI.Projects.BingGroundingTool","com.azure.ai.agents.models.BingGroundingToolCall":"Azure.AI.Projects.BingGroundingToolCall","com.azure.ai.agents.models.BingGroundingToolCallOutput":"Azure.AI.Projects.BingGroundingToolCallOutput","com.azure.ai.agents.models.BotServiceAuthorizationScheme":"Azure.AI.Projects.BotServiceAuthorizationScheme","com.azure.ai.agents.models.BotServiceRbacAuthorizationScheme":"Azure.AI.Projects.BotServiceRbacAuthorizationScheme","com.azure.ai.agents.models.BotServiceTenantAuthorizationScheme":"Azure.AI.Projects.BotServiceTenantAuthorizationScheme","com.azure.ai.agents.models.BrowserAutomationPreviewTool":"Azure.AI.Projects.BrowserAutomationPreviewTool","com.azure.ai.agents.models.BrowserAutomationPreviewToolboxTool":"Azure.AI.Projects.BrowserAutomationPreviewToolboxTool","com.azure.ai.agents.models.BrowserAutomationToolCall":"Azure.AI.Projects.BrowserAutomationToolCall","com.azure.ai.agents.models.BrowserAutomationToolCallOutput":"Azure.AI.Projects.BrowserAutomationToolCallOutput","com.azure.ai.agents.models.BrowserAutomationToolConnectionParameters":"Azure.AI.Projects.BrowserAutomationToolConnectionParameters","com.azure.ai.agents.models.BrowserAutomationToolParameters":"Azure.AI.Projects.BrowserAutomationToolParameters","com.azure.ai.agents.models.CallableToolAllowedCaller":"OpenAI.CallableToolAllowedCaller","com.azure.ai.agents.models.CaptureStructuredOutputsTool":"Azure.AI.Projects.CaptureStructuredOutputsTool","com.azure.ai.agents.models.ChatSummaryMemoryItem":"Azure.AI.Projects.ChatSummaryMemoryItem","com.azure.ai.agents.models.CodeConfiguration":"Azure.AI.Projects.CodeConfiguration","com.azure.ai.agents.models.CodeDependencyResolution":"Azure.AI.Projects.CodeDependencyResolution","com.azure.ai.agents.models.CodeFileDetails":null,"com.azure.ai.agents.models.CodeInterpreterTool":"OpenAI.CodeInterpreterTool","com.azure.ai.agents.models.CodeInterpreterToolboxTool":"Azure.AI.Projects.CodeInterpreterToolboxTool","com.azure.ai.agents.models.ComputerEnvironment":"ComputerEnvironmentExpandable","com.azure.ai.agents.models.ComputerTool":"OpenAI.ComputerTool","com.azure.ai.agents.models.ComputerUsePreviewTool":"OpenAI.ComputerUsePreviewTool","com.azure.ai.agents.models.ContainerAutoParameter":"OpenAI.ContainerAutoParam","com.azure.ai.agents.models.ContainerConfiguration":"Azure.AI.Projects.ContainerConfiguration","com.azure.ai.agents.models.ContainerMemoryLimit":"ContainerMemoryLimitExpandable","com.azure.ai.agents.models.ContainerNetworkPolicyAllowlistParameter":"OpenAI.ContainerNetworkPolicyAllowlistParam","com.azure.ai.agents.models.ContainerNetworkPolicyDisabledParameter":"OpenAI.ContainerNetworkPolicyDisabledParam","com.azure.ai.agents.models.ContainerNetworkPolicyDomainSecretParameter":"OpenAI.ContainerNetworkPolicyDomainSecretParam","com.azure.ai.agents.models.ContainerNetworkPolicyParamType":"OpenAI.ContainerNetworkPolicyParamType","com.azure.ai.agents.models.ContainerNetworkPolicyParameter":"OpenAI.ContainerNetworkPolicyParam","com.azure.ai.agents.models.ContainerSkill":"OpenAI.ContainerSkill","com.azure.ai.agents.models.ContainerSkillType":"OpenAI.ContainerSkillType","com.azure.ai.agents.models.CreateAgentVersionFromCodeContent":"Azure.AI.Projects.CreateAgentVersionFromCodeContent","com.azure.ai.agents.models.CreateAgentVersionFromCodeMetadata":"Azure.AI.Projects.CreateAgentVersionFromCodeMetadata","com.azure.ai.agents.models.CreateAgentVersionInput":"Azure.AI.Projects.CreateAgentVersionRequest","com.azure.ai.agents.models.CreateAgentVersionOptions":null,"com.azure.ai.agents.models.CustomGrammarFormatParameter":"OpenAI.CustomGrammarFormatParam","com.azure.ai.agents.models.CustomTextFormatParameter":"OpenAI.CustomTextFormatParam","com.azure.ai.agents.models.CustomToolParamFormat":"OpenAI.CustomToolParamFormat","com.azure.ai.agents.models.CustomToolParamFormatType":"OpenAI.CustomToolParamFormatType","com.azure.ai.agents.models.CustomToolParameter":"OpenAI.CustomToolParam","com.azure.ai.agents.models.DigitalWorkerType":"Azure.AI.Projects.DigitalWorkerType","com.azure.ai.agents.models.EntraAuthorizationScheme":"Azure.AI.Projects.EntraAuthorizationScheme","com.azure.ai.agents.models.EvaluationLevel":"Azure.AI.Projects.EvaluationLevel","com.azure.ai.agents.models.ExternalAgentDefinition":"Azure.AI.Projects.ExternalAgentDefinition","com.azure.ai.agents.models.FabricDataAgentToolCall":"Azure.AI.Projects.FabricDataAgentToolCall","com.azure.ai.agents.models.FabricDataAgentToolCallOutput":"Azure.AI.Projects.FabricDataAgentToolCallOutput","com.azure.ai.agents.models.FabricDataAgentToolParameters":"Azure.AI.Projects.FabricDataAgentToolParameters","com.azure.ai.agents.models.FabricIqPreviewTool":"Azure.AI.Projects.FabricIQPreviewTool","com.azure.ai.agents.models.FabricIqPreviewToolboxTool":"Azure.AI.Projects.FabricIQPreviewToolboxTool","com.azure.ai.agents.models.FileSearchTool":"OpenAI.FileSearchTool","com.azure.ai.agents.models.FileSearchToolboxTool":"Azure.AI.Projects.FileSearchToolboxTool","com.azure.ai.agents.models.FixedRatioVersionSelectionRule":"Azure.AI.Projects.FixedRatioVersionSelectionRule","com.azure.ai.agents.models.FunctionShellToolParamEnvironment":"OpenAI.FunctionShellToolParamEnvironment","com.azure.ai.agents.models.FunctionShellToolParamEnvironmentType":"OpenAI.FunctionShellToolParamEnvironmentType","com.azure.ai.agents.models.FunctionShellToolParameter":"OpenAI.FunctionShellToolParam","com.azure.ai.agents.models.FunctionShellToolParameterEnvironmentContainerReferenceParameter":"OpenAI.FunctionShellToolParamEnvironmentContainerReferenceParam","com.azure.ai.agents.models.FunctionShellToolParameterEnvironmentLocalEnvironmentParameter":"OpenAI.FunctionShellToolParamEnvironmentLocalEnvironmentParam","com.azure.ai.agents.models.FunctionTool":"OpenAI.FunctionTool","com.azure.ai.agents.models.GetMicrosoft365AppPackageOptions":null,"com.azure.ai.agents.models.GrammarSyntax":"GrammarSyntaxExpandable","com.azure.ai.agents.models.HeaderTelemetryEndpointAuth":"Azure.AI.Projects.HeaderTelemetryEndpointAuth","com.azure.ai.agents.models.HostedAgentDefinition":"Azure.AI.Projects.HostedAgentDefinition","com.azure.ai.agents.models.HybridSearchOptions":"OpenAI.HybridSearchOptions","com.azure.ai.agents.models.ImageGenActionEnum":"ImageGenActionEnumExpandable","com.azure.ai.agents.models.ImageGenTool":"OpenAI.ImageGenTool","com.azure.ai.agents.models.ImageGenToolBackground":"ImageGenToolBackgroundExpandable","com.azure.ai.agents.models.ImageGenToolInputImageMask":"OpenAI.ImageGenToolInputImageMask","com.azure.ai.agents.models.ImageGenToolModel":"OpenAI.ImageGenTool.model.anonymous","com.azure.ai.agents.models.ImageGenToolModeration":"ImageGenToolModerationExpandable","com.azure.ai.agents.models.ImageGenToolOutputFormat":"ImageGenToolOutputFormatExpandable","com.azure.ai.agents.models.ImageGenToolQuality":"ImageGenToolQualityExpandable","com.azure.ai.agents.models.ImageGenToolSize":"ImageGenToolSizeExpandable","com.azure.ai.agents.models.IncludeEnum":"OpenAI.IncludeEnum","com.azure.ai.agents.models.InlineSkillParameter":"OpenAI.InlineSkillParam","com.azure.ai.agents.models.InlineSkillSourceParameter":"OpenAI.InlineSkillSourceParam","com.azure.ai.agents.models.InputFidelity":"InputFidelityExpandable","com.azure.ai.agents.models.InvocationsProtocolConfiguration":"Azure.AI.Projects.InvocationsProtocolConfiguration","com.azure.ai.agents.models.InvocationsWsProtocolConfiguration":"Azure.AI.Projects.InvocationsWsProtocolConfiguration","com.azure.ai.agents.models.JobStatus":"Azure.AI.Projects.JobStatus","com.azure.ai.agents.models.ListMemoriesOptions":null,"com.azure.ai.agents.models.LocalShellToolParameter":"OpenAI.LocalShellToolParam","com.azure.ai.agents.models.LocalSkillParameter":"OpenAI.LocalSkillParam","com.azure.ai.agents.models.ManagedAgentIdentityBlueprintReference":"Azure.AI.Projects.ManagedAgentIdentityBlueprintReference","com.azure.ai.agents.models.McpProtocolConfiguration":"Azure.AI.Projects.McpProtocolConfiguration","com.azure.ai.agents.models.McpTool":"OpenAI.MCPTool","com.azure.ai.agents.models.McpToolConnectorId":"McpToolConnectorIdExpandable","com.azure.ai.agents.models.McpToolFilter":"OpenAI.MCPToolFilter","com.azure.ai.agents.models.McpToolRequireApproval":"OpenAI.MCPToolRequireApproval","com.azure.ai.agents.models.McpToolboxTool":"Azure.AI.Projects.MCPToolboxTool","com.azure.ai.agents.models.MemoryCommandToolCall":"Azure.AI.Projects.MemoryCommandToolCall","com.azure.ai.agents.models.MemoryCommandToolCallOutput":"Azure.AI.Projects.MemoryCommandToolCallOutput","com.azure.ai.agents.models.MemoryItem":"Azure.AI.Projects.MemoryItem","com.azure.ai.agents.models.MemoryItemKind":"Azure.AI.Projects.MemoryItemKind","com.azure.ai.agents.models.MemoryOperation":"Azure.AI.Projects.MemoryOperation","com.azure.ai.agents.models.MemoryOperationKind":"Azure.AI.Projects.MemoryOperationKind","com.azure.ai.agents.models.MemorySearchItem":"Azure.AI.Projects.MemorySearchItem","com.azure.ai.agents.models.MemorySearchOptions":"Azure.AI.Projects.MemorySearchOptions","com.azure.ai.agents.models.MemorySearchPreviewTool":"Azure.AI.Projects.MemorySearchPreviewTool","com.azure.ai.agents.models.MemorySearchToolCall":"Azure.AI.Projects.MemorySearchToolCall","com.azure.ai.agents.models.MemoryStoreDefaultDefinition":"Azure.AI.Projects.MemoryStoreDefaultDefinition","com.azure.ai.agents.models.MemoryStoreDefaultOptions":"Azure.AI.Projects.MemoryStoreDefaultOptions","com.azure.ai.agents.models.MemoryStoreDefinition":"Azure.AI.Projects.MemoryStoreDefinition","com.azure.ai.agents.models.MemoryStoreDetails":"Azure.AI.Projects.MemoryStoreObject","com.azure.ai.agents.models.MemoryStoreKind":"Azure.AI.Projects.MemoryStoreKind","com.azure.ai.agents.models.MemoryStoreObjectType":"Azure.AI.Projects.MemoryStoreObjectType","com.azure.ai.agents.models.MemoryStoreOperationUsage":"Azure.AI.Projects.MemoryStoreOperationUsage","com.azure.ai.agents.models.MemoryStoreSearchResponse":"Azure.AI.Projects.MemoryStoreSearchResponse","com.azure.ai.agents.models.MemoryStoreUpdateCompletedResult":"Azure.AI.Projects.MemoryStoreUpdateCompletedResult","com.azure.ai.agents.models.MemoryStoreUpdateResponse":"Azure.AI.Projects.MemoryStoreUpdateResponse","com.azure.ai.agents.models.MemoryStoreUpdateStatus":"Azure.AI.Projects.MemoryStoreUpdateStatus","com.azure.ai.agents.models.Microsoft365PermissionScopes":"Azure.AI.Projects.Microsoft365PermissionScopes","com.azure.ai.agents.models.Microsoft365PublishDefaults":"Azure.AI.Projects.Microsoft365PublishDefaults","com.azure.ai.agents.models.Microsoft365PublishResult":"Azure.AI.Projects.Microsoft365PublishResponse","com.azure.ai.agents.models.Microsoft365PublishScope":"Azure.AI.Projects.Microsoft365PublishScope","com.azure.ai.agents.models.MicrosoftFabricPreviewTool":"Azure.AI.Projects.MicrosoftFabricPreviewTool","com.azure.ai.agents.models.ModelRouterAttempt":"Azure.AI.Projects.ModelRouterAttempt","com.azure.ai.agents.models.ModelRouterAttemptError":"Azure.AI.Projects.ModelRouterAttemptError","com.azure.ai.agents.models.ModelRouterAttemptResult":"Azure.AI.Projects.ModelRouterAttemptResult","com.azure.ai.agents.models.ModelRouterDetails":"Azure.AI.Projects.ModelRouterDetails","com.azure.ai.agents.models.ModelRouterMode":"Azure.AI.Projects.ModelRouterMode","com.azure.ai.agents.models.ModelSelectionDetails":"Azure.AI.Projects.ModelSelectionDetails","com.azure.ai.agents.models.NamespaceTool":"OpenAI.NamespaceToolParam","com.azure.ai.agents.models.OpenApiAnonymousAuthDetails":"Azure.AI.Projects.OpenApiAnonymousAuthDetails","com.azure.ai.agents.models.OpenApiAuthDetails":"Azure.AI.Projects.OpenApiAuthDetails","com.azure.ai.agents.models.OpenApiAuthType":"Azure.AI.Projects.OpenApiAuthType","com.azure.ai.agents.models.OpenApiFunctionDefinition":"Azure.AI.Projects.OpenApiFunctionDefinition","com.azure.ai.agents.models.OpenApiFunctionDefinitionFunction":"Azure.AI.Projects.OpenApiFunctionDefinition.function.anonymous","com.azure.ai.agents.models.OpenApiManagedAuthDetails":"Azure.AI.Projects.OpenApiManagedAuthDetails","com.azure.ai.agents.models.OpenApiManagedSecurityScheme":"Azure.AI.Projects.OpenApiManagedSecurityScheme","com.azure.ai.agents.models.OpenApiProjectConnectionAuthDetails":"Azure.AI.Projects.OpenApiProjectConnectionAuthDetails","com.azure.ai.agents.models.OpenApiProjectConnectionSecurityScheme":"Azure.AI.Projects.OpenApiProjectConnectionSecurityScheme","com.azure.ai.agents.models.OpenApiTool":"Azure.AI.Projects.OpenApiTool","com.azure.ai.agents.models.OpenApiToolCall":"Azure.AI.Projects.OpenApiToolCall","com.azure.ai.agents.models.OpenApiToolCallOutput":"Azure.AI.Projects.OpenApiToolCallOutput","com.azure.ai.agents.models.OpenApiToolboxTool":"Azure.AI.Projects.OpenApiToolboxTool","com.azure.ai.agents.models.OptimizedAgentIdentifier":"Azure.AI.Projects.OptimizedAgentIdentifier","com.azure.ai.agents.models.OtlpTelemetryEndpoint":"Azure.AI.Projects.OtlpTelemetryEndpoint","com.azure.ai.agents.models.PageOrder":"Azure.AI.Projects.PageOrder","com.azure.ai.agents.models.ProceduralMemoryItem":"Azure.AI.Projects.ProceduralMemoryItem","com.azure.ai.agents.models.ProgrammaticToolCallingParameter":"OpenAI.ProgrammaticToolCallingParam","com.azure.ai.agents.models.PromotionInfo":"Azure.AI.Projects.PromotionInfo","com.azure.ai.agents.models.PromptAgentDefinition":"Azure.AI.Projects.PromptAgentDefinition","com.azure.ai.agents.models.PromptAgentDefinitionTextOptions":"Azure.AI.Projects.PromptAgentDefinitionTextOptions","com.azure.ai.agents.models.ProtocolConfiguration":"Azure.AI.Projects.ProtocolConfiguration","com.azure.ai.agents.models.ProtocolVersionRecord":"Azure.AI.Projects.ProtocolVersionRecord","com.azure.ai.agents.models.PublishAgentToMicrosoft365Options":null,"com.azure.ai.agents.models.PublishApprovalStatus":"Azure.AI.Projects.PublishApprovalStatus","com.azure.ai.agents.models.RaiConfig":"Azure.AI.Projects.RaiConfig","com.azure.ai.agents.models.RankerVersionType":"RankerVersionTypeExpandable","com.azure.ai.agents.models.RankingOptions":"OpenAI.RankingOptions","com.azure.ai.agents.models.ReminderPreviewToolboxTool":"Azure.AI.Projects.ReminderPreviewToolboxTool","com.azure.ai.agents.models.ResponseFormatJsonSchemaInner":"OpenAI.ResponseFormatJsonSchemaSchema","com.azure.ai.agents.models.ResponseUsageInputTokensDetails":"OpenAI.ResponseUsageInputTokensDetails","com.azure.ai.agents.models.ResponseUsageOutputTokensDetails":"OpenAI.ResponseUsageOutputTokensDetails","com.azure.ai.agents.models.ResponsesProtocolConfiguration":"Azure.AI.Projects.ResponsesProtocolConfiguration","com.azure.ai.agents.models.RoutingTraceEntry":"Azure.AI.Projects.RoutingTraceEntry","com.azure.ai.agents.models.SearchContentType":"OpenAI.SearchContentType","com.azure.ai.agents.models.SearchContextSize":"SearchContextSizeExpandable","com.azure.ai.agents.models.SessionConfiguration":"Azure.AI.Projects.SessionConfiguration","com.azure.ai.agents.models.SessionDirectoryEntry":"Azure.AI.Projects.SessionDirectoryEntry","com.azure.ai.agents.models.SessionFileWriteResult":"Azure.AI.Projects.SessionFileWriteResponse","com.azure.ai.agents.models.SessionLogEvent":"Azure.AI.Projects.SessionLogEvent","com.azure.ai.agents.models.SessionLogEventType":"Azure.AI.Projects.SessionLogEventType","com.azure.ai.agents.models.SharepointGroundingToolCall":"Azure.AI.Projects.SharepointGroundingToolCall","com.azure.ai.agents.models.SharepointGroundingToolCallOutput":"Azure.AI.Projects.SharepointGroundingToolCallOutput","com.azure.ai.agents.models.SharepointGroundingToolParameters":"Azure.AI.Projects.SharepointGroundingToolParameters","com.azure.ai.agents.models.SharepointPreviewTool":"Azure.AI.Projects.SharepointPreviewTool","com.azure.ai.agents.models.ShellToolboxTool":"Azure.AI.Projects.ShellToolboxTool","com.azure.ai.agents.models.SkillReferenceParameter":"OpenAI.SkillReferenceParam","com.azure.ai.agents.models.StructuredInputDefinition":"Azure.AI.Projects.StructuredInputDefinition","com.azure.ai.agents.models.StructuredOutputDefinition":"Azure.AI.Projects.StructuredOutputDefinition","com.azure.ai.agents.models.TelemetryConfig":"Azure.AI.Projects.TelemetryConfig","com.azure.ai.agents.models.TelemetryDataKind":"Azure.AI.Projects.TelemetryDataKind","com.azure.ai.agents.models.TelemetryEndpoint":"Azure.AI.Projects.TelemetryEndpoint","com.azure.ai.agents.models.TelemetryEndpointAuth":"Azure.AI.Projects.TelemetryEndpointAuth","com.azure.ai.agents.models.TelemetryEndpointAuthType":"Azure.AI.Projects.TelemetryEndpointAuthType","com.azure.ai.agents.models.TelemetryEndpointKind":"Azure.AI.Projects.TelemetryEndpointKind","com.azure.ai.agents.models.TelemetryTransportProtocol":"Azure.AI.Projects.TelemetryTransportProtocol","com.azure.ai.agents.models.TextResponseFormatConfiguration":"OpenAI.TextResponseFormatConfiguration","com.azure.ai.agents.models.TextResponseFormatConfigurationResponseFormatJsonObject":"OpenAI.TextResponseFormatConfigurationResponseFormatJsonObject","com.azure.ai.agents.models.TextResponseFormatConfigurationResponseFormatText":"OpenAI.TextResponseFormatConfigurationResponseFormatText","com.azure.ai.agents.models.TextResponseFormatConfigurationType":"OpenAI.TextResponseFormatConfigurationType","com.azure.ai.agents.models.TextResponseFormatJsonSchema":"OpenAI.TextResponseFormatJsonSchema","com.azure.ai.agents.models.Tool":"OpenAI.Tool","com.azure.ai.agents.models.ToolCallStatus":"Azure.AI.Projects.ToolCallStatus","com.azure.ai.agents.models.ToolConfig":"Azure.AI.Projects.ToolConfig","com.azure.ai.agents.models.ToolProjectConnection":"Azure.AI.Projects.ToolProjectConnection","com.azure.ai.agents.models.ToolSearchExecutionType":"OpenAI.ToolSearchExecutionType","com.azure.ai.agents.models.ToolSearchTool":"OpenAI.ToolSearchToolParam","com.azure.ai.agents.models.ToolSearchToolboxTool":"Azure.AI.Projects.ToolSearchToolboxTool","com.azure.ai.agents.models.ToolType":"OpenAI.ToolType","com.azure.ai.agents.models.ToolboxDetails":"Azure.AI.Projects.ToolboxObject","com.azure.ai.agents.models.ToolboxPolicies":"Azure.AI.Projects.ToolboxPolicies","com.azure.ai.agents.models.ToolboxSearchPreviewToolboxTool":"Azure.AI.Projects.ToolboxSearchPreviewToolboxTool","com.azure.ai.agents.models.ToolboxShellContainerAutoEnvironment":"Azure.AI.Projects.ToolboxShellContainerAutoEnvironment","com.azure.ai.agents.models.ToolboxShellContainerReferenceEnvironment":"Azure.AI.Projects.ToolboxShellContainerReferenceEnvironment","com.azure.ai.agents.models.ToolboxShellEnvironment":"Azure.AI.Projects.ToolboxShellEnvironment","com.azure.ai.agents.models.ToolboxShellNetworkPolicy":"Azure.AI.Projects.ToolboxShellNetworkPolicy","com.azure.ai.agents.models.ToolboxShellNetworkPolicyDisabled":"Azure.AI.Projects.ToolboxShellNetworkPolicyDisabled","com.azure.ai.agents.models.ToolboxSkill":"Azure.AI.Projects.ToolboxSkill","com.azure.ai.agents.models.ToolboxSkillReference":"Azure.AI.Projects.ToolboxSkillReference","com.azure.ai.agents.models.ToolboxTool":"Azure.AI.Projects.ToolboxTool","com.azure.ai.agents.models.ToolboxToolType":"Azure.AI.Projects.ToolboxToolType","com.azure.ai.agents.models.ToolboxVersionDetails":"Azure.AI.Projects.ToolboxVersionObject","com.azure.ai.agents.models.UpdateAgentDetailsOptions":"Azure.AI.Projects.patchAgentObject.Request.anonymous","com.azure.ai.agents.models.UserProfileMemoryItem":"Azure.AI.Projects.UserProfileMemoryItem","com.azure.ai.agents.models.VersionIndicator":"Azure.AI.Projects.VersionIndicator","com.azure.ai.agents.models.VersionIndicatorType":"Azure.AI.Projects.VersionIndicatorType","com.azure.ai.agents.models.VersionRefIndicator":"Azure.AI.Projects.VersionRefIndicator","com.azure.ai.agents.models.VersionSelectionRule":"Azure.AI.Projects.VersionSelectionRule","com.azure.ai.agents.models.VersionSelector":"Azure.AI.Projects.VersionSelector","com.azure.ai.agents.models.VersionSelectorType":"Azure.AI.Projects.VersionSelectorType","com.azure.ai.agents.models.WebIqPreviewTool":"Azure.AI.Projects.WebIQPreviewTool","com.azure.ai.agents.models.WebIqPreviewToolboxTool":"Azure.AI.Projects.WebIQPreviewToolboxTool","com.azure.ai.agents.models.WebSearchApproximateLocation":"OpenAI.WebSearchApproximateLocation","com.azure.ai.agents.models.WebSearchConfiguration":"Azure.AI.Projects.WebSearchConfiguration","com.azure.ai.agents.models.WebSearchPreviewTool":"OpenAI.WebSearchPreviewTool","com.azure.ai.agents.models.WebSearchTool":"OpenAI.WebSearchTool","com.azure.ai.agents.models.WebSearchToolFilters":"OpenAI.WebSearchToolFilters","com.azure.ai.agents.models.WebSearchToolSearchContextSize":"WebSearchToolSearchContextSizeExpandable","com.azure.ai.agents.models.WebSearchToolboxTool":"Azure.AI.Projects.WebSearchToolboxTool","com.azure.ai.agents.models.WorkIqPreviewTool":"Azure.AI.Projects.WorkIQPreviewTool","com.azure.ai.agents.models.WorkIqPreviewToolboxTool":"Azure.AI.Projects.WorkIQPreviewToolboxTool","com.azure.ai.agents.models.WorkflowAgentDefinition":"Azure.AI.Projects.WorkflowAgentDefinition"},"generatedFiles":["src/main/java/com/azure/ai/agents/AgentsAsyncClient.java","src/main/java/com/azure/ai/agents/AgentsClient.java","src/main/java/com/azure/ai/agents/AgentsClientBuilder.java","src/main/java/com/azure/ai/agents/AgentsServiceVersion.java","src/main/java/com/azure/ai/agents/BetaAgentsAsyncClient.java","src/main/java/com/azure/ai/agents/BetaAgentsClient.java","src/main/java/com/azure/ai/agents/BetaMemoryStoresAsyncClient.java","src/main/java/com/azure/ai/agents/BetaMemoryStoresClient.java","src/main/java/com/azure/ai/agents/ToolboxesAsyncClient.java","src/main/java/com/azure/ai/agents/ToolboxesClient.java","src/main/java/com/azure/ai/agents/implementation/AgentsClientImpl.java","src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java","src/main/java/com/azure/ai/agents/implementation/BetaAgentsImpl.java","src/main/java/com/azure/ai/agents/implementation/BetaMemoryStoresImpl.java","src/main/java/com/azure/ai/agents/implementation/JsonMergePatchHelper.java","src/main/java/com/azure/ai/agents/implementation/MultipartFormDataHelper.java","src/main/java/com/azure/ai/agents/implementation/OperationLocationPollingStrategy.java","src/main/java/com/azure/ai/agents/implementation/PollingUtils.java","src/main/java/com/azure/ai/agents/implementation/SyncOperationLocationPollingStrategy.java","src/main/java/com/azure/ai/agents/implementation/ToolboxesImpl.java","src/main/java/com/azure/ai/agents/implementation/models/AgentDefinitionOptInKeys.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentFromCodeContent.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentFromManifestRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentOptions.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentVersionFromManifestRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentVersionRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateMemoryRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateMemoryStoreRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateSessionRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateToolboxVersionRequest.java","src/main/java/com/azure/ai/agents/implementation/models/FoundryFeaturesOptInKeys.java","src/main/java/com/azure/ai/agents/implementation/models/GetMicrosoft365AppPackageRequest.java","src/main/java/com/azure/ai/agents/implementation/models/ListMemoriesRequest.java","src/main/java/com/azure/ai/agents/implementation/models/PublishAgentToMicrosoft365Request.java","src/main/java/com/azure/ai/agents/implementation/models/SearchMemoriesRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateAgentFromManifestRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateAgentRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateMemoriesRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateMemoryRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateMemoryStoreRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateToolboxInput.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateToolboxRequest.java","src/main/java/com/azure/ai/agents/implementation/models/package-info.java","src/main/java/com/azure/ai/agents/implementation/package-info.java","src/main/java/com/azure/ai/agents/models/A2APreviewTool.java","src/main/java/com/azure/ai/agents/models/A2APreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/A2AProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/A2AProtocolVersion.java","src/main/java/com/azure/ai/agents/models/A2ATool.java","src/main/java/com/azure/ai/agents/models/A2AToolCall.java","src/main/java/com/azure/ai/agents/models/A2AToolCallOutput.java","src/main/java/com/azure/ai/agents/models/A2AToolboxTool.java","src/main/java/com/azure/ai/agents/models/AISearchIndexResource.java","src/main/java/com/azure/ai/agents/models/ActivityProtocolAccessBoundary.java","src/main/java/com/azure/ai/agents/models/ActivityProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/AgentBlueprintReference.java","src/main/java/com/azure/ai/agents/models/AgentBlueprintReferenceType.java","src/main/java/com/azure/ai/agents/models/AgentCard.java","src/main/java/com/azure/ai/agents/models/AgentCardSkill.java","src/main/java/com/azure/ai/agents/models/AgentDefinition.java","src/main/java/com/azure/ai/agents/models/AgentDetails.java","src/main/java/com/azure/ai/agents/models/AgentDetailsVersions.java","src/main/java/com/azure/ai/agents/models/AgentEndpointAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/AgentEndpointAuthorizationSchemeType.java","src/main/java/com/azure/ai/agents/models/AgentEndpointConfig.java","src/main/java/com/azure/ai/agents/models/AgentEndpointProtocol.java","src/main/java/com/azure/ai/agents/models/AgentIdentity.java","src/main/java/com/azure/ai/agents/models/AgentIdentityStatus.java","src/main/java/com/azure/ai/agents/models/AgentKind.java","src/main/java/com/azure/ai/agents/models/AgentObjectType.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationCandidate.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetCriterion.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetInput.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetInputType.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetItem.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationEvaluatorReference.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationInlineDatasetInput.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJob.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobInputs.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobListItem.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobProgress.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobResult.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationOptions.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationReferenceDatasetInput.java","src/main/java/com/azure/ai/agents/models/AgentReference.java","src/main/java/com/azure/ai/agents/models/AgentSessionResource.java","src/main/java/com/azure/ai/agents/models/AgentSessionStatus.java","src/main/java/com/azure/ai/agents/models/AgentState.java","src/main/java/com/azure/ai/agents/models/AgentStateSource.java","src/main/java/com/azure/ai/agents/models/AgentVersionDetails.java","src/main/java/com/azure/ai/agents/models/AgentVersionStatus.java","src/main/java/com/azure/ai/agents/models/ApiError.java","src/main/java/com/azure/ai/agents/models/ApplyPatchToolParameter.java","src/main/java/com/azure/ai/agents/models/ApproximateLocation.java","src/main/java/com/azure/ai/agents/models/AutoCodeInterpreterToolParameter.java","src/main/java/com/azure/ai/agents/models/AzureAISearchQueryType.java","src/main/java/com/azure/ai/agents/models/AzureAISearchTool.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolCall.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolCallOutput.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolResource.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/AzureCreateResponseDetails.java","src/main/java/com/azure/ai/agents/models/AzureCreateResponseOptions.java","src/main/java/com/azure/ai/agents/models/AzureFunctionBinding.java","src/main/java/com/azure/ai/agents/models/AzureFunctionDefinition.java","src/main/java/com/azure/ai/agents/models/AzureFunctionDefinitionDetails.java","src/main/java/com/azure/ai/agents/models/AzureFunctionStorageQueue.java","src/main/java/com/azure/ai/agents/models/AzureFunctionTool.java","src/main/java/com/azure/ai/agents/models/AzureFunctionToolCall.java","src/main/java/com/azure/ai/agents/models/AzureFunctionToolCallOutput.java","src/main/java/com/azure/ai/agents/models/AzureUserSecurityContext.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchConfiguration.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchPreviewTool.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchToolCall.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchToolCallOutput.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchToolParameters.java","src/main/java/com/azure/ai/agents/models/BingGroundingSearchConfiguration.java","src/main/java/com/azure/ai/agents/models/BingGroundingSearchToolParameters.java","src/main/java/com/azure/ai/agents/models/BingGroundingTool.java","src/main/java/com/azure/ai/agents/models/BingGroundingToolCall.java","src/main/java/com/azure/ai/agents/models/BingGroundingToolCallOutput.java","src/main/java/com/azure/ai/agents/models/BotServiceAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/BotServiceRbacAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/BotServiceTenantAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationPreviewTool.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolCall.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolCallOutput.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolConnectionParameters.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolParameters.java","src/main/java/com/azure/ai/agents/models/CallableToolAllowedCaller.java","src/main/java/com/azure/ai/agents/models/CaptureStructuredOutputsTool.java","src/main/java/com/azure/ai/agents/models/ChatSummaryMemoryItem.java","src/main/java/com/azure/ai/agents/models/CodeConfiguration.java","src/main/java/com/azure/ai/agents/models/CodeDependencyResolution.java","src/main/java/com/azure/ai/agents/models/CodeFileDetails.java","src/main/java/com/azure/ai/agents/models/CodeInterpreterTool.java","src/main/java/com/azure/ai/agents/models/CodeInterpreterToolboxTool.java","src/main/java/com/azure/ai/agents/models/ComputerEnvironment.java","src/main/java/com/azure/ai/agents/models/ComputerTool.java","src/main/java/com/azure/ai/agents/models/ComputerUsePreviewTool.java","src/main/java/com/azure/ai/agents/models/ContainerAutoParameter.java","src/main/java/com/azure/ai/agents/models/ContainerConfiguration.java","src/main/java/com/azure/ai/agents/models/ContainerMemoryLimit.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyAllowlistParameter.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyDisabledParameter.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyDomainSecretParameter.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyParamType.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyParameter.java","src/main/java/com/azure/ai/agents/models/ContainerSkill.java","src/main/java/com/azure/ai/agents/models/ContainerSkillType.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionFromCodeContent.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionFromCodeMetadata.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionInput.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionOptions.java","src/main/java/com/azure/ai/agents/models/CustomGrammarFormatParameter.java","src/main/java/com/azure/ai/agents/models/CustomTextFormatParameter.java","src/main/java/com/azure/ai/agents/models/CustomToolParamFormat.java","src/main/java/com/azure/ai/agents/models/CustomToolParamFormatType.java","src/main/java/com/azure/ai/agents/models/CustomToolParameter.java","src/main/java/com/azure/ai/agents/models/DigitalWorkerType.java","src/main/java/com/azure/ai/agents/models/EntraAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/EvaluationLevel.java","src/main/java/com/azure/ai/agents/models/ExternalAgentDefinition.java","src/main/java/com/azure/ai/agents/models/FabricDataAgentToolCall.java","src/main/java/com/azure/ai/agents/models/FabricDataAgentToolCallOutput.java","src/main/java/com/azure/ai/agents/models/FabricDataAgentToolParameters.java","src/main/java/com/azure/ai/agents/models/FabricIqPreviewTool.java","src/main/java/com/azure/ai/agents/models/FabricIqPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/FileSearchTool.java","src/main/java/com/azure/ai/agents/models/FileSearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/FixedRatioVersionSelectionRule.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParamEnvironment.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParamEnvironmentType.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParameter.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParameterEnvironmentContainerReferenceParameter.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParameterEnvironmentLocalEnvironmentParameter.java","src/main/java/com/azure/ai/agents/models/FunctionTool.java","src/main/java/com/azure/ai/agents/models/GetMicrosoft365AppPackageOptions.java","src/main/java/com/azure/ai/agents/models/GrammarSyntax.java","src/main/java/com/azure/ai/agents/models/HeaderTelemetryEndpointAuth.java","src/main/java/com/azure/ai/agents/models/HostedAgentDefinition.java","src/main/java/com/azure/ai/agents/models/HybridSearchOptions.java","src/main/java/com/azure/ai/agents/models/ImageGenActionEnum.java","src/main/java/com/azure/ai/agents/models/ImageGenTool.java","src/main/java/com/azure/ai/agents/models/ImageGenToolBackground.java","src/main/java/com/azure/ai/agents/models/ImageGenToolInputImageMask.java","src/main/java/com/azure/ai/agents/models/ImageGenToolModel.java","src/main/java/com/azure/ai/agents/models/ImageGenToolModeration.java","src/main/java/com/azure/ai/agents/models/ImageGenToolOutputFormat.java","src/main/java/com/azure/ai/agents/models/ImageGenToolQuality.java","src/main/java/com/azure/ai/agents/models/ImageGenToolSize.java","src/main/java/com/azure/ai/agents/models/IncludeEnum.java","src/main/java/com/azure/ai/agents/models/InlineSkillParameter.java","src/main/java/com/azure/ai/agents/models/InlineSkillSourceParameter.java","src/main/java/com/azure/ai/agents/models/InputFidelity.java","src/main/java/com/azure/ai/agents/models/InvocationsProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/InvocationsWsProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/JobStatus.java","src/main/java/com/azure/ai/agents/models/ListMemoriesOptions.java","src/main/java/com/azure/ai/agents/models/LocalShellToolParameter.java","src/main/java/com/azure/ai/agents/models/LocalSkillParameter.java","src/main/java/com/azure/ai/agents/models/ManagedAgentIdentityBlueprintReference.java","src/main/java/com/azure/ai/agents/models/McpProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/McpTool.java","src/main/java/com/azure/ai/agents/models/McpToolConnectorId.java","src/main/java/com/azure/ai/agents/models/McpToolFilter.java","src/main/java/com/azure/ai/agents/models/McpToolRequireApproval.java","src/main/java/com/azure/ai/agents/models/McpToolboxTool.java","src/main/java/com/azure/ai/agents/models/MemoryCommandToolCall.java","src/main/java/com/azure/ai/agents/models/MemoryCommandToolCallOutput.java","src/main/java/com/azure/ai/agents/models/MemoryItem.java","src/main/java/com/azure/ai/agents/models/MemoryItemKind.java","src/main/java/com/azure/ai/agents/models/MemoryOperation.java","src/main/java/com/azure/ai/agents/models/MemoryOperationKind.java","src/main/java/com/azure/ai/agents/models/MemorySearchItem.java","src/main/java/com/azure/ai/agents/models/MemorySearchOptions.java","src/main/java/com/azure/ai/agents/models/MemorySearchPreviewTool.java","src/main/java/com/azure/ai/agents/models/MemorySearchToolCall.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDefaultDefinition.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDefaultOptions.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDefinition.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDetails.java","src/main/java/com/azure/ai/agents/models/MemoryStoreKind.java","src/main/java/com/azure/ai/agents/models/MemoryStoreObjectType.java","src/main/java/com/azure/ai/agents/models/MemoryStoreOperationUsage.java","src/main/java/com/azure/ai/agents/models/MemoryStoreSearchResponse.java","src/main/java/com/azure/ai/agents/models/MemoryStoreUpdateCompletedResult.java","src/main/java/com/azure/ai/agents/models/MemoryStoreUpdateResponse.java","src/main/java/com/azure/ai/agents/models/MemoryStoreUpdateStatus.java","src/main/java/com/azure/ai/agents/models/Microsoft365PermissionScopes.java","src/main/java/com/azure/ai/agents/models/Microsoft365PublishDefaults.java","src/main/java/com/azure/ai/agents/models/Microsoft365PublishResult.java","src/main/java/com/azure/ai/agents/models/Microsoft365PublishScope.java","src/main/java/com/azure/ai/agents/models/MicrosoftFabricPreviewTool.java","src/main/java/com/azure/ai/agents/models/ModelRouterAttempt.java","src/main/java/com/azure/ai/agents/models/ModelRouterAttemptError.java","src/main/java/com/azure/ai/agents/models/ModelRouterAttemptResult.java","src/main/java/com/azure/ai/agents/models/ModelRouterDetails.java","src/main/java/com/azure/ai/agents/models/ModelRouterMode.java","src/main/java/com/azure/ai/agents/models/ModelSelectionDetails.java","src/main/java/com/azure/ai/agents/models/NamespaceTool.java","src/main/java/com/azure/ai/agents/models/OpenApiAnonymousAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiAuthType.java","src/main/java/com/azure/ai/agents/models/OpenApiFunctionDefinition.java","src/main/java/com/azure/ai/agents/models/OpenApiFunctionDefinitionFunction.java","src/main/java/com/azure/ai/agents/models/OpenApiManagedAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiManagedSecurityScheme.java","src/main/java/com/azure/ai/agents/models/OpenApiProjectConnectionAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiProjectConnectionSecurityScheme.java","src/main/java/com/azure/ai/agents/models/OpenApiTool.java","src/main/java/com/azure/ai/agents/models/OpenApiToolCall.java","src/main/java/com/azure/ai/agents/models/OpenApiToolCallOutput.java","src/main/java/com/azure/ai/agents/models/OpenApiToolboxTool.java","src/main/java/com/azure/ai/agents/models/OptimizedAgentIdentifier.java","src/main/java/com/azure/ai/agents/models/OtlpTelemetryEndpoint.java","src/main/java/com/azure/ai/agents/models/PageOrder.java","src/main/java/com/azure/ai/agents/models/ProceduralMemoryItem.java","src/main/java/com/azure/ai/agents/models/ProgrammaticToolCallingParameter.java","src/main/java/com/azure/ai/agents/models/PromotionInfo.java","src/main/java/com/azure/ai/agents/models/PromptAgentDefinition.java","src/main/java/com/azure/ai/agents/models/PromptAgentDefinitionTextOptions.java","src/main/java/com/azure/ai/agents/models/ProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/ProtocolVersionRecord.java","src/main/java/com/azure/ai/agents/models/PublishAgentToMicrosoft365Options.java","src/main/java/com/azure/ai/agents/models/PublishApprovalStatus.java","src/main/java/com/azure/ai/agents/models/RaiConfig.java","src/main/java/com/azure/ai/agents/models/RankerVersionType.java","src/main/java/com/azure/ai/agents/models/RankingOptions.java","src/main/java/com/azure/ai/agents/models/ReminderPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/ResponseFormatJsonSchemaInner.java","src/main/java/com/azure/ai/agents/models/ResponseUsageInputTokensDetails.java","src/main/java/com/azure/ai/agents/models/ResponseUsageOutputTokensDetails.java","src/main/java/com/azure/ai/agents/models/ResponsesProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/RoutingTraceEntry.java","src/main/java/com/azure/ai/agents/models/SearchContentType.java","src/main/java/com/azure/ai/agents/models/SearchContextSize.java","src/main/java/com/azure/ai/agents/models/SessionConfiguration.java","src/main/java/com/azure/ai/agents/models/SessionDirectoryEntry.java","src/main/java/com/azure/ai/agents/models/SessionFileWriteResult.java","src/main/java/com/azure/ai/agents/models/SessionLogEvent.java","src/main/java/com/azure/ai/agents/models/SessionLogEventType.java","src/main/java/com/azure/ai/agents/models/SharepointGroundingToolCall.java","src/main/java/com/azure/ai/agents/models/SharepointGroundingToolCallOutput.java","src/main/java/com/azure/ai/agents/models/SharepointGroundingToolParameters.java","src/main/java/com/azure/ai/agents/models/SharepointPreviewTool.java","src/main/java/com/azure/ai/agents/models/ShellToolboxTool.java","src/main/java/com/azure/ai/agents/models/SkillReferenceParameter.java","src/main/java/com/azure/ai/agents/models/StructuredInputDefinition.java","src/main/java/com/azure/ai/agents/models/StructuredOutputDefinition.java","src/main/java/com/azure/ai/agents/models/TelemetryConfig.java","src/main/java/com/azure/ai/agents/models/TelemetryDataKind.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpoint.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpointAuth.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpointAuthType.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpointKind.java","src/main/java/com/azure/ai/agents/models/TelemetryTransportProtocol.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfiguration.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfigurationResponseFormatJsonObject.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfigurationResponseFormatText.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfigurationType.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatJsonSchema.java","src/main/java/com/azure/ai/agents/models/Tool.java","src/main/java/com/azure/ai/agents/models/ToolCallStatus.java","src/main/java/com/azure/ai/agents/models/ToolConfig.java","src/main/java/com/azure/ai/agents/models/ToolProjectConnection.java","src/main/java/com/azure/ai/agents/models/ToolSearchExecutionType.java","src/main/java/com/azure/ai/agents/models/ToolSearchTool.java","src/main/java/com/azure/ai/agents/models/ToolSearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/ToolType.java","src/main/java/com/azure/ai/agents/models/ToolboxDetails.java","src/main/java/com/azure/ai/agents/models/ToolboxPolicies.java","src/main/java/com/azure/ai/agents/models/ToolboxSearchPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/ToolboxShellContainerAutoEnvironment.java","src/main/java/com/azure/ai/agents/models/ToolboxShellContainerReferenceEnvironment.java","src/main/java/com/azure/ai/agents/models/ToolboxShellEnvironment.java","src/main/java/com/azure/ai/agents/models/ToolboxShellNetworkPolicy.java","src/main/java/com/azure/ai/agents/models/ToolboxShellNetworkPolicyDisabled.java","src/main/java/com/azure/ai/agents/models/ToolboxSkill.java","src/main/java/com/azure/ai/agents/models/ToolboxSkillReference.java","src/main/java/com/azure/ai/agents/models/ToolboxTool.java","src/main/java/com/azure/ai/agents/models/ToolboxToolType.java","src/main/java/com/azure/ai/agents/models/ToolboxVersionDetails.java","src/main/java/com/azure/ai/agents/models/UpdateAgentDetailsOptions.java","src/main/java/com/azure/ai/agents/models/UserProfileMemoryItem.java","src/main/java/com/azure/ai/agents/models/VersionIndicator.java","src/main/java/com/azure/ai/agents/models/VersionIndicatorType.java","src/main/java/com/azure/ai/agents/models/VersionRefIndicator.java","src/main/java/com/azure/ai/agents/models/VersionSelectionRule.java","src/main/java/com/azure/ai/agents/models/VersionSelector.java","src/main/java/com/azure/ai/agents/models/VersionSelectorType.java","src/main/java/com/azure/ai/agents/models/WebIqPreviewTool.java","src/main/java/com/azure/ai/agents/models/WebIqPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/WebSearchApproximateLocation.java","src/main/java/com/azure/ai/agents/models/WebSearchConfiguration.java","src/main/java/com/azure/ai/agents/models/WebSearchPreviewTool.java","src/main/java/com/azure/ai/agents/models/WebSearchTool.java","src/main/java/com/azure/ai/agents/models/WebSearchToolFilters.java","src/main/java/com/azure/ai/agents/models/WebSearchToolSearchContextSize.java","src/main/java/com/azure/ai/agents/models/WebSearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/WorkIqPreviewTool.java","src/main/java/com/azure/ai/agents/models/WorkIqPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/WorkflowAgentDefinition.java","src/main/java/com/azure/ai/agents/models/package-info.java","src/main/java/com/azure/ai/agents/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file +{"flavor":"azure","apiVersions":{"Azure.AI.Projects":"v1"},"crossLanguagePackageId":"Azure.AI.Projects","crossLanguageVersion":"aefd406b536a","crossLanguageDefinitions":{"com.azure.ai.agents.AgentTelephonyAsyncClient":"Azure.AI.Projects.AgentTelephony","com.azure.ai.agents.AgentTelephonyAsyncClient.beginImportTelephonyCampaignRecipients":"Azure.AI.Projects.AgentTelephony.importTelephonyCampaignRecipients","com.azure.ai.agents.AgentTelephonyAsyncClient.beginImportTelephonyCampaignRecipientsWithModel":"Azure.AI.Projects.AgentTelephony.importTelephonyCampaignRecipients","com.azure.ai.agents.AgentTelephonyAsyncClient.beginPublishTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.publishTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.beginPublishTelephonyCampaignWithModel":"Azure.AI.Projects.AgentTelephony.publishTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.beginValidateTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.validateTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.beginValidateTelephonyCampaignWithModel":"Azure.AI.Projects.AgentTelephony.validateTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.cancelTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCallJob","com.azure.ai.agents.AgentTelephonyAsyncClient.cancelTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCallJob","com.azure.ai.agents.AgentTelephonyAsyncClient.cancelTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.cancelTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.createTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.createTelephonyCallJob","com.azure.ai.agents.AgentTelephonyAsyncClient.createTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyCallJob","com.azure.ai.agents.AgentTelephonyAsyncClient.createTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.createTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.createTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.getTelephonyCallJob","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCallJob","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyCampaignRecipientImport":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaignRecipientImport","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyCampaignRecipientImportWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaignRecipientImport","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyOperation":"Azure.AI.Projects.AgentTelephony.getTelephonyOperation","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyOperationWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyOperation","com.azure.ai.agents.AgentTelephonyAsyncClient.pauseTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.pauseTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.pauseTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.pauseTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.resumeTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.resumeTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.resumeTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.resumeTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient":"Azure.AI.Projects.AgentTelephony","com.azure.ai.agents.AgentTelephonyClient.beginImportTelephonyCampaignRecipients":"Azure.AI.Projects.AgentTelephony.importTelephonyCampaignRecipients","com.azure.ai.agents.AgentTelephonyClient.beginImportTelephonyCampaignRecipientsWithModel":"Azure.AI.Projects.AgentTelephony.importTelephonyCampaignRecipients","com.azure.ai.agents.AgentTelephonyClient.beginPublishTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.publishTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.beginPublishTelephonyCampaignWithModel":"Azure.AI.Projects.AgentTelephony.publishTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.beginValidateTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.validateTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.beginValidateTelephonyCampaignWithModel":"Azure.AI.Projects.AgentTelephony.validateTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.cancelTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCallJob","com.azure.ai.agents.AgentTelephonyClient.cancelTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCallJob","com.azure.ai.agents.AgentTelephonyClient.cancelTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.cancelTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.createTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.createTelephonyCallJob","com.azure.ai.agents.AgentTelephonyClient.createTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyCallJob","com.azure.ai.agents.AgentTelephonyClient.createTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.createTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.createTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.getTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.getTelephonyCallJob","com.azure.ai.agents.AgentTelephonyClient.getTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCallJob","com.azure.ai.agents.AgentTelephonyClient.getTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.getTelephonyCampaignRecipientImport":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaignRecipientImport","com.azure.ai.agents.AgentTelephonyClient.getTelephonyCampaignRecipientImportWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaignRecipientImport","com.azure.ai.agents.AgentTelephonyClient.getTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.getTelephonyOperation":"Azure.AI.Projects.AgentTelephony.getTelephonyOperation","com.azure.ai.agents.AgentTelephonyClient.getTelephonyOperationWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyOperation","com.azure.ai.agents.AgentTelephonyClient.pauseTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.pauseTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.pauseTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.pauseTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.resumeTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.resumeTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.resumeTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.resumeTelephonyCampaign","com.azure.ai.agents.AgentsAsyncClient":"Azure.AI.Projects.Agents","com.azure.ai.agents.AgentsAsyncClient.createAgent":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsAsyncClient.createAgentFromCode":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentFromManifest":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentVersion":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromCode":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromManifest":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionWithResponse":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsAsyncClient.createAgentWithResponse":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsAsyncClient.createSession":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsAsyncClient.createSessionWithResponse":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsAsyncClient.createTelephonyBinding":"Azure.AI.Projects.AgentTelephony.createTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.createTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.deleteSession":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsAsyncClient.deleteSessionFile":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsAsyncClient.deleteSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsAsyncClient.deleteSessionWithResponse":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsAsyncClient.deleteTelephonyBinding":"Azure.AI.Projects.AgentTelephony.deleteTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.deleteTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.deleteTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.disableAgent":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsAsyncClient.disableAgentWithResponse":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsAsyncClient.downloadAgentCode":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsAsyncClient.downloadAgentCodeWithResponse":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsAsyncClient.downloadSessionFile":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsAsyncClient.downloadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsAsyncClient.enableAgent":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsAsyncClient.enableAgentWithResponse":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsAsyncClient.endTelephonyCall":"Azure.AI.Projects.AgentTelephony.endTelephonyCall","com.azure.ai.agents.AgentsAsyncClient.endTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.endTelephonyCall","com.azure.ai.agents.AgentsAsyncClient.generateAgent":"Azure.AI.Projects.Agents.generateAgent","com.azure.ai.agents.AgentsAsyncClient.generateAgentWithResponse":"Azure.AI.Projects.Agents.generateAgent","com.azure.ai.agents.AgentsAsyncClient.getAgent":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsAsyncClient.getAgentVersionDetails":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsAsyncClient.getAgentVersionDetailsWithResponse":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsAsyncClient.getAgentWithResponse":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365AppPackage":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365AppPackageWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365PublishDefaults":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365PublishDefaultsWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsAsyncClient.getSession":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsAsyncClient.getSessionWithResponse":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsAsyncClient.getTelephonyBinding":"Azure.AI.Projects.AgentTelephony.getTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.getTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.getTelephonyCall":"Azure.AI.Projects.AgentTelephony.getTelephonyCall","com.azure.ai.agents.AgentsAsyncClient.getTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCall","com.azure.ai.agents.AgentsAsyncClient.getTelephonyTransferTargets":"Azure.AI.Projects.AgentTelephony.getTelephonyTransferTargets","com.azure.ai.agents.AgentsAsyncClient.getTelephonyTransferTargetsWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyTransferTargets","com.azure.ai.agents.AgentsAsyncClient.listAgentConversations":"Azure.AI.Projects.Conversations.listConversations","com.azure.ai.agents.AgentsAsyncClient.listAgentVersions":"Azure.AI.Projects.Agents.listAgentVersions","com.azure.ai.agents.AgentsAsyncClient.listAgents":"Azure.AI.Projects.Agents.listAgents","com.azure.ai.agents.AgentsAsyncClient.listSessionFiles":"Azure.AI.Projects.AgentSessionFiles.listSessionFiles","com.azure.ai.agents.AgentsAsyncClient.listSessions":"Azure.AI.Projects.Agents.listSessions","com.azure.ai.agents.AgentsAsyncClient.listTelephonyBindings":"Azure.AI.Projects.AgentTelephony.listTelephonyBindings","com.azure.ai.agents.AgentsAsyncClient.listTelephonyCalls":"Azure.AI.Projects.AgentTelephony.listTelephonyCalls","com.azure.ai.agents.AgentsAsyncClient.publishAgentToMicrosoft365":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsAsyncClient.publishAgentToMicrosoft365WithResponse":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsAsyncClient.replaceTelephonyTransferTargets":"Azure.AI.Projects.AgentTelephony.replaceTelephonyTransferTargets","com.azure.ai.agents.AgentsAsyncClient.replaceTelephonyTransferTargetsWithResponse":"Azure.AI.Projects.AgentTelephony.replaceTelephonyTransferTargets","com.azure.ai.agents.AgentsAsyncClient.stopSession":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsAsyncClient.stopSessionWithResponse":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsAsyncClient.transferTelephonyCall":"Azure.AI.Projects.AgentTelephony.transferTelephonyCall","com.azure.ai.agents.AgentsAsyncClient.transferTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.transferTelephonyCall","com.azure.ai.agents.AgentsAsyncClient.updateAgent":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsAsyncClient.updateAgentDetails":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsAsyncClient.updateAgentDetailsWithResponse":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromCode":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromManifest":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.updateAgentWithResponse":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsAsyncClient.updateTelephonyBinding":"Azure.AI.Projects.AgentTelephony.updateTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.updateTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.updateTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.uploadSessionFile":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsAsyncClient.uploadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsClient":"Azure.AI.Projects.Agents","com.azure.ai.agents.AgentsClient.createAgent":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsClient.createAgentFromCode":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsClient.createAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsClient.createAgentFromManifest":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsClient.createAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsClient.createAgentVersion":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsClient.createAgentVersionFromCode":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsClient.createAgentVersionFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsClient.createAgentVersionFromManifest":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsClient.createAgentVersionFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsClient.createAgentVersionWithResponse":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsClient.createAgentWithResponse":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsClient.createSession":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsClient.createSessionWithResponse":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsClient.createTelephonyBinding":"Azure.AI.Projects.AgentTelephony.createTelephonyBinding","com.azure.ai.agents.AgentsClient.createTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyBinding","com.azure.ai.agents.AgentsClient.deleteSession":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsClient.deleteSessionFile":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsClient.deleteSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsClient.deleteSessionWithResponse":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsClient.deleteTelephonyBinding":"Azure.AI.Projects.AgentTelephony.deleteTelephonyBinding","com.azure.ai.agents.AgentsClient.deleteTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.deleteTelephonyBinding","com.azure.ai.agents.AgentsClient.disableAgent":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsClient.disableAgentWithResponse":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsClient.downloadAgentCode":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsClient.downloadAgentCodeWithResponse":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsClient.downloadSessionFile":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsClient.downloadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsClient.enableAgent":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsClient.enableAgentWithResponse":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsClient.endTelephonyCall":"Azure.AI.Projects.AgentTelephony.endTelephonyCall","com.azure.ai.agents.AgentsClient.endTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.endTelephonyCall","com.azure.ai.agents.AgentsClient.generateAgent":"Azure.AI.Projects.Agents.generateAgent","com.azure.ai.agents.AgentsClient.generateAgentWithResponse":"Azure.AI.Projects.Agents.generateAgent","com.azure.ai.agents.AgentsClient.getAgent":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsClient.getAgentVersionDetails":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsClient.getAgentVersionDetailsWithResponse":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsClient.getAgentWithResponse":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsClient.getMicrosoft365AppPackage":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsClient.getMicrosoft365AppPackageWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsClient.getMicrosoft365PublishDefaults":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsClient.getMicrosoft365PublishDefaultsWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsClient.getSession":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsClient.getSessionWithResponse":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsClient.getTelephonyBinding":"Azure.AI.Projects.AgentTelephony.getTelephonyBinding","com.azure.ai.agents.AgentsClient.getTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyBinding","com.azure.ai.agents.AgentsClient.getTelephonyCall":"Azure.AI.Projects.AgentTelephony.getTelephonyCall","com.azure.ai.agents.AgentsClient.getTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCall","com.azure.ai.agents.AgentsClient.getTelephonyTransferTargets":"Azure.AI.Projects.AgentTelephony.getTelephonyTransferTargets","com.azure.ai.agents.AgentsClient.getTelephonyTransferTargetsWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyTransferTargets","com.azure.ai.agents.AgentsClient.listAgentConversations":"Azure.AI.Projects.Conversations.listConversations","com.azure.ai.agents.AgentsClient.listAgentVersions":"Azure.AI.Projects.Agents.listAgentVersions","com.azure.ai.agents.AgentsClient.listAgents":"Azure.AI.Projects.Agents.listAgents","com.azure.ai.agents.AgentsClient.listSessionFiles":"Azure.AI.Projects.AgentSessionFiles.listSessionFiles","com.azure.ai.agents.AgentsClient.listSessions":"Azure.AI.Projects.Agents.listSessions","com.azure.ai.agents.AgentsClient.listTelephonyBindings":"Azure.AI.Projects.AgentTelephony.listTelephonyBindings","com.azure.ai.agents.AgentsClient.listTelephonyCalls":"Azure.AI.Projects.AgentTelephony.listTelephonyCalls","com.azure.ai.agents.AgentsClient.publishAgentToMicrosoft365":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsClient.publishAgentToMicrosoft365WithResponse":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsClient.replaceTelephonyTransferTargets":"Azure.AI.Projects.AgentTelephony.replaceTelephonyTransferTargets","com.azure.ai.agents.AgentsClient.replaceTelephonyTransferTargetsWithResponse":"Azure.AI.Projects.AgentTelephony.replaceTelephonyTransferTargets","com.azure.ai.agents.AgentsClient.stopSession":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsClient.stopSessionWithResponse":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsClient.transferTelephonyCall":"Azure.AI.Projects.AgentTelephony.transferTelephonyCall","com.azure.ai.agents.AgentsClient.transferTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.transferTelephonyCall","com.azure.ai.agents.AgentsClient.updateAgent":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsClient.updateAgentDetails":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsClient.updateAgentDetailsWithResponse":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsClient.updateAgentFromCode":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsClient.updateAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsClient.updateAgentFromManifest":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsClient.updateAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsClient.updateAgentWithResponse":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsClient.updateTelephonyBinding":"Azure.AI.Projects.AgentTelephony.updateTelephonyBinding","com.azure.ai.agents.AgentsClient.updateTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.updateTelephonyBinding","com.azure.ai.agents.AgentsClient.uploadSessionFile":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsClient.uploadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsClientBuilder":"Azure.AI.Projects","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient":"Azure.AI.Projects.Beta.AgentEndpointConversations","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.deleteAgentConversation":"Azure.AI.Projects.AgentEndpointConversations.deleteAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.deleteAgentConversationWithResponse":"Azure.AI.Projects.AgentEndpointConversations.deleteAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversation":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItem":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItem","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemGeneratedAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemGeneratedAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemGeneratedAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemGeneratedAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItem","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationResponse","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationResponseWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationResponse","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.listAgentConversationItems":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationItems","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.listAgentConversationResponseItems":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationResponseItems","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.listAgentConversationResponses":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationResponses","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.listAgentConversations":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversations","com.azure.ai.agents.BetaAgentEndpointConversationsClient":"Azure.AI.Projects.Beta.AgentEndpointConversations","com.azure.ai.agents.BetaAgentEndpointConversationsClient.deleteAgentConversation":"Azure.AI.Projects.AgentEndpointConversations.deleteAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsClient.deleteAgentConversationWithResponse":"Azure.AI.Projects.AgentEndpointConversations.deleteAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversation":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItem":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItem","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemGeneratedAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemGeneratedAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemGeneratedAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemGeneratedAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItem","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationResponse","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationResponseWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationResponse","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsClient.listAgentConversationItems":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationItems","com.azure.ai.agents.BetaAgentEndpointConversationsClient.listAgentConversationResponseItems":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationResponseItems","com.azure.ai.agents.BetaAgentEndpointConversationsClient.listAgentConversationResponses":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationResponses","com.azure.ai.agents.BetaAgentEndpointConversationsClient.listAgentConversations":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversations","com.azure.ai.agents.BetaAgentsAsyncClient":"Azure.AI.Projects.Beta.Agents","com.azure.ai.agents.BetaAgentsAsyncClient.beginCreateOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsAsyncClient.beginCreateOptimizationJobWithModel":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsAsyncClient.cancelOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsAsyncClient.cancelOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsAsyncClient.deleteOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsAsyncClient.deleteOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsAsyncClient.getOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsAsyncClient.getOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsAsyncClient.listOptimizationJobs":"Azure.AI.Projects.AgentOptimizationJobs.list","com.azure.ai.agents.BetaAgentsClient":"Azure.AI.Projects.Beta.Agents","com.azure.ai.agents.BetaAgentsClient.beginCreateOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsClient.beginCreateOptimizationJobWithModel":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsClient.cancelOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsClient.cancelOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsClient.deleteOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsClient.deleteOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsClient.getOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsClient.getOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsClient.listOptimizationJobs":"Azure.AI.Projects.AgentOptimizationJobs.list","com.azure.ai.agents.BetaMemoryStoresAsyncClient":"Azure.AI.Projects.Beta.MemoryStores","com.azure.ai.agents.BetaMemoryStoresAsyncClient.beginInternalUpdateMemories":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.beginInternalUpdateMemoriesWithModel":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemory":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemoryStore":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemoryWithResponse":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemory":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemoryStore":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemoryWithResponse":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getUpdateResult":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getUpdateResultWithResponse":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresAsyncClient.internalSearchMemories":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.internalSearchMemoriesWithResponse":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.listMemories":"Azure.AI.Projects.MemoryStores.listMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.listMemoryStores":"Azure.AI.Projects.MemoryStores.listMemoryStores","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemory":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemoryStore":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemoryWithResponse":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.BetaMemoryStoresClient":"Azure.AI.Projects.Beta.MemoryStores","com.azure.ai.agents.BetaMemoryStoresClient.beginInternalUpdateMemories":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresClient.beginInternalUpdateMemoriesWithModel":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresClient.createMemory":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresClient.createMemoryStore":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.createMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.createMemoryWithResponse":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresClient.getMemory":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresClient.getMemoryStore":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.getMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.getMemoryWithResponse":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresClient.getUpdateResult":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresClient.getUpdateResultWithResponse":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresClient.internalSearchMemories":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresClient.internalSearchMemoriesWithResponse":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresClient.listMemories":"Azure.AI.Projects.MemoryStores.listMemories","com.azure.ai.agents.BetaMemoryStoresClient.listMemoryStores":"Azure.AI.Projects.MemoryStores.listMemoryStores","com.azure.ai.agents.BetaMemoryStoresClient.updateMemory":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.BetaMemoryStoresClient.updateMemoryStore":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.updateMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.updateMemoryWithResponse":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.ToolboxesAsyncClient":"Azure.AI.Projects.Toolboxes","com.azure.ai.agents.ToolboxesAsyncClient.createToolboxVersion":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.createToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolbox":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolboxVersion":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolboxWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesAsyncClient.getToolbox":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesAsyncClient.getToolboxVersion":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.getToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.getToolboxWithResponse":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesAsyncClient.listToolboxVersions":"Azure.AI.Projects.Toolboxes.listToolboxVersions","com.azure.ai.agents.ToolboxesAsyncClient.listToolboxes":"Azure.AI.Projects.Toolboxes.listToolboxes","com.azure.ai.agents.ToolboxesAsyncClient.updateToolbox":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.ToolboxesAsyncClient.updateToolboxWithResponse":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.ToolboxesClient":"Azure.AI.Projects.Toolboxes","com.azure.ai.agents.ToolboxesClient.createToolboxVersion":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesClient.createToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesClient.deleteToolbox":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesClient.deleteToolboxVersion":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesClient.deleteToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesClient.deleteToolboxWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesClient.getToolbox":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesClient.getToolboxVersion":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesClient.getToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesClient.getToolboxWithResponse":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesClient.listToolboxVersions":"Azure.AI.Projects.Toolboxes.listToolboxVersions","com.azure.ai.agents.ToolboxesClient.listToolboxes":"Azure.AI.Projects.Toolboxes.listToolboxes","com.azure.ai.agents.ToolboxesClient.updateToolbox":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.ToolboxesClient.updateToolboxWithResponse":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.implementation.models.AgentDefinitionOptInKeys":"Azure.AI.Projects.AgentDefinitionOptInKeys","com.azure.ai.agents.implementation.models.CreateAgentFromCodeContent":"Azure.AI.Projects.CreateAgentFromCodeContent","com.azure.ai.agents.implementation.models.CreateAgentFromManifestRequest":"Azure.AI.Projects.createAgentFromManifest.Request.anonymous","com.azure.ai.agents.implementation.models.CreateAgentOptions":null,"com.azure.ai.agents.implementation.models.CreateAgentRequest":"Azure.AI.Projects.createAgent.Request.anonymous","com.azure.ai.agents.implementation.models.CreateAgentVersionFromManifestRequest":"Azure.AI.Projects.createAgentVersionFromManifest.Request.anonymous","com.azure.ai.agents.implementation.models.CreateAgentVersionRequest":"Azure.AI.Projects.createAgentVersion.Request.anonymous","com.azure.ai.agents.implementation.models.CreateMemoryRequest":"Azure.AI.Projects.createMemory.Request.anonymous","com.azure.ai.agents.implementation.models.CreateMemoryStoreRequest":"Azure.AI.Projects.createMemoryStore.Request.anonymous","com.azure.ai.agents.implementation.models.CreateSessionRequest":"Azure.AI.Projects.createSession.Request.anonymous","com.azure.ai.agents.implementation.models.CreateToolboxVersionRequest":"Azure.AI.Projects.createToolboxVersion.Request.anonymous","com.azure.ai.agents.implementation.models.FoundryFeaturesOptInKeys":"Azure.AI.Projects.FoundryFeaturesOptInKeys","com.azure.ai.agents.implementation.models.GetMicrosoft365AppPackageRequest":"Azure.AI.Projects.getMicrosoft365AppPackage.Request.anonymous","com.azure.ai.agents.implementation.models.ListMemoriesRequest":"Azure.AI.Projects.listMemories.Request.anonymous","com.azure.ai.agents.implementation.models.PublishAgentToMicrosoft365Request":"Azure.AI.Projects.publishAgentToMicrosoft365.Request.anonymous","com.azure.ai.agents.implementation.models.ReplaceTelephonyTransferTargetsRequest":"Azure.AI.Projects.replaceTelephonyTransferTargets.Request.anonymous","com.azure.ai.agents.implementation.models.SearchMemoriesRequest":"Azure.AI.Projects.searchMemories.Request.anonymous","com.azure.ai.agents.implementation.models.TransferTelephonyCallRequest":"Azure.AI.Projects.transferTelephonyCall.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateAgentFromManifestRequest":"Azure.AI.Projects.updateAgentFromManifest.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateAgentRequest":"Azure.AI.Projects.updateAgent.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateMemoriesRequest":"Azure.AI.Projects.updateMemories.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateMemoryRequest":"Azure.AI.Projects.updateMemory.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateMemoryStoreRequest":"Azure.AI.Projects.updateMemoryStore.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateToolboxInput":"Azure.AI.Projects.UpdateToolboxRequest","com.azure.ai.agents.implementation.models.UpdateToolboxRequest":"Azure.AI.Projects.updateToolbox.Request.anonymous","com.azure.ai.agents.models.A2APreviewTool":"Azure.AI.Projects.A2APreviewTool","com.azure.ai.agents.models.A2APreviewToolboxTool":"Azure.AI.Projects.A2APreviewToolboxTool","com.azure.ai.agents.models.A2AProtocolConfiguration":"Azure.AI.Projects.A2AProtocolConfiguration","com.azure.ai.agents.models.A2AProtocolVersion":"Azure.AI.Projects.A2AProtocolVersion","com.azure.ai.agents.models.A2ATool":"Azure.AI.Projects.A2ATool","com.azure.ai.agents.models.A2AToolCall":"Azure.AI.Projects.A2AToolCall","com.azure.ai.agents.models.A2AToolCallOutput":"Azure.AI.Projects.A2AToolCallOutput","com.azure.ai.agents.models.A2AToolboxTool":"Azure.AI.Projects.A2AToolboxTool","com.azure.ai.agents.models.AISearchIndexResource":"Azure.AI.Projects.AISearchIndexResource","com.azure.ai.agents.models.ActivityProtocolAccessBoundary":"Azure.AI.Projects.ActivityProtocolAccessBoundary","com.azure.ai.agents.models.ActivityProtocolConfiguration":"Azure.AI.Projects.ActivityProtocolConfiguration","com.azure.ai.agents.models.AgentBlueprintReference":"Azure.AI.Projects.AgentBlueprintReference","com.azure.ai.agents.models.AgentBlueprintReferenceType":"Azure.AI.Projects.AgentBlueprintReferenceType","com.azure.ai.agents.models.AgentCard":"Azure.AI.Projects.AgentCard","com.azure.ai.agents.models.AgentCardSkill":"Azure.AI.Projects.AgentCardSkill","com.azure.ai.agents.models.AgentDefinition":"Azure.AI.Projects.AgentDefinition","com.azure.ai.agents.models.AgentDetails":"Azure.AI.Projects.AgentObject","com.azure.ai.agents.models.AgentDetailsVersions":"Azure.AI.Projects.AgentObject.versions.anonymous","com.azure.ai.agents.models.AgentEndpointAuthorizationScheme":"Azure.AI.Projects.AgentEndpointAuthorizationScheme","com.azure.ai.agents.models.AgentEndpointAuthorizationSchemeType":"Azure.AI.Projects.AgentEndpointAuthorizationSchemeType","com.azure.ai.agents.models.AgentEndpointConfig":"Azure.AI.Projects.AgentEndpointConfig","com.azure.ai.agents.models.AgentEndpointProtocol":"Azure.AI.Projects.AgentEndpointProtocol","com.azure.ai.agents.models.AgentIdentity":"Azure.AI.Projects.AgentIdentity","com.azure.ai.agents.models.AgentIdentityStatus":"Azure.AI.Projects.AgentIdentityStatus","com.azure.ai.agents.models.AgentKind":"Azure.AI.Projects.AgentKind","com.azure.ai.agents.models.AgentObjectType":"Azure.AI.Projects.AgentObjectType","com.azure.ai.agents.models.AgentOptimizationCandidate":"Azure.AI.Projects.AgentOptimizationCandidate","com.azure.ai.agents.models.AgentOptimizationDatasetCriterion":"Azure.AI.Projects.AgentOptimizationDatasetCriterion","com.azure.ai.agents.models.AgentOptimizationDatasetInput":"Azure.AI.Projects.AgentOptimizationDatasetInput","com.azure.ai.agents.models.AgentOptimizationDatasetInputType":"Azure.AI.Projects.AgentOptimizationDatasetInputType","com.azure.ai.agents.models.AgentOptimizationDatasetItem":"Azure.AI.Projects.AgentOptimizationDatasetItem","com.azure.ai.agents.models.AgentOptimizationEvaluatorRef":"Azure.AI.Projects.AgentOptimizationEvaluatorRef","com.azure.ai.agents.models.AgentOptimizationInlineDatasetInput":"Azure.AI.Projects.AgentOptimizationInlineDatasetInput","com.azure.ai.agents.models.AgentOptimizationJob":"Azure.AI.Projects.AgentOptimizationJob","com.azure.ai.agents.models.AgentOptimizationJobInputs":"Azure.AI.Projects.AgentOptimizationJobInputs","com.azure.ai.agents.models.AgentOptimizationJobListItem":"Azure.AI.Projects.AgentOptimizationJobListItem","com.azure.ai.agents.models.AgentOptimizationJobProgress":"Azure.AI.Projects.AgentOptimizationJobProgress","com.azure.ai.agents.models.AgentOptimizationJobResult":"Azure.AI.Projects.AgentOptimizationJobResult","com.azure.ai.agents.models.AgentOptimizationOptions":"Azure.AI.Projects.AgentOptimizationOptions","com.azure.ai.agents.models.AgentOptimizationReferenceDatasetInput":"Azure.AI.Projects.AgentOptimizationReferenceDatasetInput","com.azure.ai.agents.models.AgentReference":"Azure.AI.Projects.AgentReference","com.azure.ai.agents.models.AgentSessionResource":"Azure.AI.Projects.AgentSessionResource","com.azure.ai.agents.models.AgentSessionStatus":"Azure.AI.Projects.AgentSessionStatus","com.azure.ai.agents.models.AgentState":"Azure.AI.Projects.AgentState","com.azure.ai.agents.models.AgentStateSource":"Azure.AI.Projects.AgentStateSource","com.azure.ai.agents.models.AgentVersionDetails":"Azure.AI.Projects.AgentVersionObject","com.azure.ai.agents.models.AgentVersionStatus":"Azure.AI.Projects.AgentVersionStatus","com.azure.ai.agents.models.ApiError":"OpenAI.Error","com.azure.ai.agents.models.ApplyPatchToolParameter":"OpenAI.ApplyPatchToolParam","com.azure.ai.agents.models.ApproximateLocation":"OpenAI.ApproximateLocation","com.azure.ai.agents.models.AudioTranscription":"OpenAI.AudioTranscription","com.azure.ai.agents.models.AudioTranscriptionModel":"OpenAI.AudioTranscription.model.anonymous","com.azure.ai.agents.models.AutoCodeInterpreterToolParameter":"OpenAI.AutoCodeInterpreterToolParam","com.azure.ai.agents.models.AzureAISearchQueryType":"Azure.AI.Projects.AzureAISearchQueryType","com.azure.ai.agents.models.AzureAISearchTool":"Azure.AI.Projects.AzureAISearchTool","com.azure.ai.agents.models.AzureAISearchToolCall":"Azure.AI.Projects.AzureAISearchToolCall","com.azure.ai.agents.models.AzureAISearchToolCallOutput":"Azure.AI.Projects.AzureAISearchToolCallOutput","com.azure.ai.agents.models.AzureAISearchToolResource":"Azure.AI.Projects.AzureAISearchToolResource","com.azure.ai.agents.models.AzureAISearchToolboxTool":"Azure.AI.Projects.AzureAISearchToolboxTool","com.azure.ai.agents.models.AzureCreateResponseDetails":"Azure.AI.Projects.AzureCreateResponseDetails","com.azure.ai.agents.models.AzureCreateResponseOptions":"Azure.AI.Projects.AzureCreateResponseOptions","com.azure.ai.agents.models.AzureFunctionBinding":"Azure.AI.Projects.AzureFunctionBinding","com.azure.ai.agents.models.AzureFunctionDefinition":"Azure.AI.Projects.AzureFunctionDefinition","com.azure.ai.agents.models.AzureFunctionDefinitionDetails":"Azure.AI.Projects.AzureFunctionDefinition.function.anonymous","com.azure.ai.agents.models.AzureFunctionStorageQueue":"Azure.AI.Projects.AzureFunctionStorageQueue","com.azure.ai.agents.models.AzureFunctionTool":"Azure.AI.Projects.AzureFunctionTool","com.azure.ai.agents.models.AzureFunctionToolCall":"Azure.AI.Projects.AzureFunctionToolCall","com.azure.ai.agents.models.AzureFunctionToolCallOutput":"Azure.AI.Projects.AzureFunctionToolCallOutput","com.azure.ai.agents.models.AzureUserSecurityContext":"Azure.AI.Projects.AzureUserSecurityContext","com.azure.ai.agents.models.BingCustomSearchConfiguration":"Azure.AI.Projects.BingCustomSearchConfiguration","com.azure.ai.agents.models.BingCustomSearchPreviewTool":"Azure.AI.Projects.BingCustomSearchPreviewTool","com.azure.ai.agents.models.BingCustomSearchToolCall":"Azure.AI.Projects.BingCustomSearchToolCall","com.azure.ai.agents.models.BingCustomSearchToolCallOutput":"Azure.AI.Projects.BingCustomSearchToolCallOutput","com.azure.ai.agents.models.BingCustomSearchToolParameters":"Azure.AI.Projects.BingCustomSearchToolParameters","com.azure.ai.agents.models.BingGroundingSearchConfiguration":"Azure.AI.Projects.BingGroundingSearchConfiguration","com.azure.ai.agents.models.BingGroundingSearchToolParameters":"Azure.AI.Projects.BingGroundingSearchToolParameters","com.azure.ai.agents.models.BingGroundingTool":"Azure.AI.Projects.BingGroundingTool","com.azure.ai.agents.models.BingGroundingToolCall":"Azure.AI.Projects.BingGroundingToolCall","com.azure.ai.agents.models.BingGroundingToolCallOutput":"Azure.AI.Projects.BingGroundingToolCallOutput","com.azure.ai.agents.models.BotServiceAuthorizationScheme":"Azure.AI.Projects.BotServiceAuthorizationScheme","com.azure.ai.agents.models.BotServiceRbacAuthorizationScheme":"Azure.AI.Projects.BotServiceRbacAuthorizationScheme","com.azure.ai.agents.models.BotServiceTenantAuthorizationScheme":"Azure.AI.Projects.BotServiceTenantAuthorizationScheme","com.azure.ai.agents.models.BrowserAutomationPreviewTool":"Azure.AI.Projects.BrowserAutomationPreviewTool","com.azure.ai.agents.models.BrowserAutomationPreviewToolboxTool":"Azure.AI.Projects.BrowserAutomationPreviewToolboxTool","com.azure.ai.agents.models.BrowserAutomationToolCall":"Azure.AI.Projects.BrowserAutomationToolCall","com.azure.ai.agents.models.BrowserAutomationToolCallOutput":"Azure.AI.Projects.BrowserAutomationToolCallOutput","com.azure.ai.agents.models.BrowserAutomationToolConnectionParameters":"Azure.AI.Projects.BrowserAutomationToolConnectionParameters","com.azure.ai.agents.models.BrowserAutomationToolParameters":"Azure.AI.Projects.BrowserAutomationToolParameters","com.azure.ai.agents.models.CallableToolAllowedCaller":"OpenAI.CallableToolAllowedCaller","com.azure.ai.agents.models.CaptureStructuredOutputsTool":"Azure.AI.Projects.CaptureStructuredOutputsTool","com.azure.ai.agents.models.ChatSummaryMemoryItem":"Azure.AI.Projects.ChatSummaryMemoryItem","com.azure.ai.agents.models.CodeConfiguration":"Azure.AI.Projects.CodeConfiguration","com.azure.ai.agents.models.CodeDependencyResolution":"Azure.AI.Projects.CodeDependencyResolution","com.azure.ai.agents.models.CodeFileDetails":null,"com.azure.ai.agents.models.CodeInterpreterTool":"OpenAI.CodeInterpreterTool","com.azure.ai.agents.models.CodeInterpreterToolboxTool":"Azure.AI.Projects.CodeInterpreterToolboxTool","com.azure.ai.agents.models.ComputerEnvironment":"ComputerEnvironmentExpandable","com.azure.ai.agents.models.ComputerTool":"OpenAI.ComputerTool","com.azure.ai.agents.models.ComputerUsePreviewTool":"OpenAI.ComputerUsePreviewTool","com.azure.ai.agents.models.ContainerAutoParameter":"OpenAI.ContainerAutoParam","com.azure.ai.agents.models.ContainerConfiguration":"Azure.AI.Projects.ContainerConfiguration","com.azure.ai.agents.models.ContainerMemoryLimit":"ContainerMemoryLimitExpandable","com.azure.ai.agents.models.ContainerNetworkPolicyAllowlistParameter":"OpenAI.ContainerNetworkPolicyAllowlistParam","com.azure.ai.agents.models.ContainerNetworkPolicyDisabledParameter":"OpenAI.ContainerNetworkPolicyDisabledParam","com.azure.ai.agents.models.ContainerNetworkPolicyDomainSecretParameter":"OpenAI.ContainerNetworkPolicyDomainSecretParam","com.azure.ai.agents.models.ContainerNetworkPolicyParamType":"OpenAI.ContainerNetworkPolicyParamType","com.azure.ai.agents.models.ContainerNetworkPolicyParameter":"OpenAI.ContainerNetworkPolicyParam","com.azure.ai.agents.models.ContainerSkill":"OpenAI.ContainerSkill","com.azure.ai.agents.models.ContainerSkillType":"OpenAI.ContainerSkillType","com.azure.ai.agents.models.CreateAgentVersionFromCodeContent":"Azure.AI.Projects.CreateAgentVersionFromCodeContent","com.azure.ai.agents.models.CreateAgentVersionFromCodeMetadata":"Azure.AI.Projects.CreateAgentVersionFromCodeMetadata","com.azure.ai.agents.models.CreateAgentVersionInput":"Azure.AI.Projects.CreateAgentVersionRequest","com.azure.ai.agents.models.CreateAgentVersionOptions":null,"com.azure.ai.agents.models.CreateTeamsPhoneExtensionTelephonyBindingRequest":"Azure.AI.Projects.CreateTeamsPhoneExtensionTelephonyBindingRequest","com.azure.ai.agents.models.CreateTelephonyBindingRequest":"Azure.AI.Projects.CreateTelephonyBindingRequest","com.azure.ai.agents.models.CreateTelephonyCallJobRequest":"Azure.AI.Projects.CreateTelephonyCallJobRequest","com.azure.ai.agents.models.CreateTelephonyCampaignRequest":"Azure.AI.Projects.CreateTelephonyCampaignRequest","com.azure.ai.agents.models.CreateTranscriptionResponseJsonUsage":"OpenAI.CreateTranscriptionResponseJsonUsage","com.azure.ai.agents.models.CreateTranscriptionResponseJsonUsageType":"OpenAI.CreateTranscriptionResponseJsonUsageType","com.azure.ai.agents.models.CreateTwilioTelephonyBindingRequest":"Azure.AI.Projects.CreateTwilioTelephonyBindingRequest","com.azure.ai.agents.models.CustomGrammarFormatParameter":"OpenAI.CustomGrammarFormatParam","com.azure.ai.agents.models.CustomTextFormatParameter":"OpenAI.CustomTextFormatParam","com.azure.ai.agents.models.CustomToolParamFormat":"OpenAI.CustomToolParamFormat","com.azure.ai.agents.models.CustomToolParamFormatType":"OpenAI.CustomToolParamFormatType","com.azure.ai.agents.models.CustomToolParameter":"OpenAI.CustomToolParam","com.azure.ai.agents.models.DigitalWorkerType":"Azure.AI.Projects.DigitalWorkerType","com.azure.ai.agents.models.EntraAuthorizationScheme":"Azure.AI.Projects.EntraAuthorizationScheme","com.azure.ai.agents.models.EvaluationLevel":"Azure.AI.Projects.EvaluationLevel","com.azure.ai.agents.models.ExternalAgentDefinition":"Azure.AI.Projects.ExternalAgentDefinition","com.azure.ai.agents.models.FabricDataAgentToolCall":"Azure.AI.Projects.FabricDataAgentToolCall","com.azure.ai.agents.models.FabricDataAgentToolCallOutput":"Azure.AI.Projects.FabricDataAgentToolCallOutput","com.azure.ai.agents.models.FabricDataAgentToolParameters":"Azure.AI.Projects.FabricDataAgentToolParameters","com.azure.ai.agents.models.FabricIqPreviewTool":"Azure.AI.Projects.FabricIQPreviewTool","com.azure.ai.agents.models.FabricIqPreviewToolboxTool":"Azure.AI.Projects.FabricIQPreviewToolboxTool","com.azure.ai.agents.models.FileInputDetail":"OpenAI.FileInputDetail","com.azure.ai.agents.models.FileSearchTool":"OpenAI.FileSearchTool","com.azure.ai.agents.models.FileSearchToolboxTool":"Azure.AI.Projects.FileSearchToolboxTool","com.azure.ai.agents.models.FixedRatioVersionSelectionRule":"Azure.AI.Projects.FixedRatioVersionSelectionRule","com.azure.ai.agents.models.FunctionShellToolParamEnvironment":"OpenAI.FunctionShellToolParamEnvironment","com.azure.ai.agents.models.FunctionShellToolParamEnvironmentType":"OpenAI.FunctionShellToolParamEnvironmentType","com.azure.ai.agents.models.FunctionShellToolParameter":"OpenAI.FunctionShellToolParam","com.azure.ai.agents.models.FunctionShellToolParameterEnvironmentContainerReferenceParameter":"OpenAI.FunctionShellToolParamEnvironmentContainerReferenceParam","com.azure.ai.agents.models.FunctionShellToolParameterEnvironmentLocalEnvironmentParameter":"OpenAI.FunctionShellToolParamEnvironmentLocalEnvironmentParam","com.azure.ai.agents.models.FunctionTool":"OpenAI.FunctionTool","com.azure.ai.agents.models.GetMicrosoft365AppPackageOptions":null,"com.azure.ai.agents.models.GrammarSyntax":"GrammarSyntaxExpandable","com.azure.ai.agents.models.HeaderTelemetryEndpointAuth":"Azure.AI.Projects.HeaderTelemetryEndpointAuth","com.azure.ai.agents.models.HostedAgentDefinition":"Azure.AI.Projects.HostedAgentDefinition","com.azure.ai.agents.models.HybridSearchOptions":"OpenAI.HybridSearchOptions","com.azure.ai.agents.models.ImageDetail":"OpenAI.ImageDetail","com.azure.ai.agents.models.ImageGenActionEnum":"ImageGenActionEnumExpandable","com.azure.ai.agents.models.ImageGenTool":"OpenAI.ImageGenTool","com.azure.ai.agents.models.ImageGenToolBackground":"ImageGenToolBackgroundExpandable","com.azure.ai.agents.models.ImageGenToolInputImageMask":"OpenAI.ImageGenToolInputImageMask","com.azure.ai.agents.models.ImageGenToolModel":"OpenAI.ImageGenTool.model.anonymous","com.azure.ai.agents.models.ImageGenToolModeration":"ImageGenToolModerationExpandable","com.azure.ai.agents.models.ImageGenToolOutputFormat":"ImageGenToolOutputFormatExpandable","com.azure.ai.agents.models.ImageGenToolQuality":"ImageGenToolQualityExpandable","com.azure.ai.agents.models.ImageGenToolSize":"ImageGenToolSizeExpandable","com.azure.ai.agents.models.ImportTelephonyCampaignRecipientsRequest":"Azure.AI.Projects.ImportTelephonyCampaignRecipientsRequest","com.azure.ai.agents.models.IncludeEnum":"OpenAI.IncludeEnum","com.azure.ai.agents.models.InlineSkillParameter":"OpenAI.InlineSkillParam","com.azure.ai.agents.models.InlineSkillSourceParameter":"OpenAI.InlineSkillSourceParam","com.azure.ai.agents.models.InputFidelity":"InputFidelityExpandable","com.azure.ai.agents.models.InputFileContent":"OpenAI.InputFileContent","com.azure.ai.agents.models.InputImageContent":"OpenAI.InputImageContent","com.azure.ai.agents.models.InputTextContent":"OpenAI.InputTextContent","com.azure.ai.agents.models.InvocationsProtocolConfiguration":"Azure.AI.Projects.InvocationsProtocolConfiguration","com.azure.ai.agents.models.InvocationsWsProtocolConfiguration":"Azure.AI.Projects.InvocationsWsProtocolConfiguration","com.azure.ai.agents.models.JobStatus":"Azure.AI.Projects.JobStatus","com.azure.ai.agents.models.ListMemoriesOptions":null,"com.azure.ai.agents.models.LocalShellToolParameter":"OpenAI.LocalShellToolParam","com.azure.ai.agents.models.LocalSkillParameter":"OpenAI.LocalSkillParam","com.azure.ai.agents.models.LogProbProperties":"OpenAI.LogProbProperties","com.azure.ai.agents.models.ManagedAgentIdentityBlueprintReference":"Azure.AI.Projects.ManagedAgentIdentityBlueprintReference","com.azure.ai.agents.models.McpListToolsTool":"OpenAI.MCPListToolsTool","com.azure.ai.agents.models.McpListToolsToolAnnotations":"OpenAI.MCPListToolsToolAnnotations","com.azure.ai.agents.models.McpListToolsToolInputSchema":"OpenAI.MCPListToolsToolInputSchema","com.azure.ai.agents.models.McpProtocolConfiguration":"Azure.AI.Projects.McpProtocolConfiguration","com.azure.ai.agents.models.McpTool":"OpenAI.MCPTool","com.azure.ai.agents.models.McpToolConnectorId":"McpToolConnectorIdExpandable","com.azure.ai.agents.models.McpToolFilter":"OpenAI.MCPToolFilter","com.azure.ai.agents.models.McpToolRequireApproval":"OpenAI.MCPToolRequireApproval","com.azure.ai.agents.models.McpToolboxTool":"Azure.AI.Projects.MCPToolboxTool","com.azure.ai.agents.models.MemoryCommandToolCall":"Azure.AI.Projects.MemoryCommandToolCall","com.azure.ai.agents.models.MemoryCommandToolCallOutput":"Azure.AI.Projects.MemoryCommandToolCallOutput","com.azure.ai.agents.models.MemoryItem":"Azure.AI.Projects.MemoryItem","com.azure.ai.agents.models.MemoryItemKind":"Azure.AI.Projects.MemoryItemKind","com.azure.ai.agents.models.MemoryOperation":"Azure.AI.Projects.MemoryOperation","com.azure.ai.agents.models.MemoryOperationKind":"Azure.AI.Projects.MemoryOperationKind","com.azure.ai.agents.models.MemorySearchItem":"Azure.AI.Projects.MemorySearchItem","com.azure.ai.agents.models.MemorySearchOptions":"Azure.AI.Projects.MemorySearchOptions","com.azure.ai.agents.models.MemorySearchPreviewTool":"Azure.AI.Projects.MemorySearchPreviewTool","com.azure.ai.agents.models.MemorySearchToolCall":"Azure.AI.Projects.MemorySearchToolCall","com.azure.ai.agents.models.MemoryStoreDefaultDefinition":"Azure.AI.Projects.MemoryStoreDefaultDefinition","com.azure.ai.agents.models.MemoryStoreDefaultOptions":"Azure.AI.Projects.MemoryStoreDefaultOptions","com.azure.ai.agents.models.MemoryStoreDefinition":"Azure.AI.Projects.MemoryStoreDefinition","com.azure.ai.agents.models.MemoryStoreDetails":"Azure.AI.Projects.MemoryStoreObject","com.azure.ai.agents.models.MemoryStoreKind":"Azure.AI.Projects.MemoryStoreKind","com.azure.ai.agents.models.MemoryStoreObjectType":"Azure.AI.Projects.MemoryStoreObjectType","com.azure.ai.agents.models.MemoryStoreOperationUsage":"Azure.AI.Projects.MemoryStoreOperationUsage","com.azure.ai.agents.models.MemoryStoreSearchResponse":"Azure.AI.Projects.MemoryStoreSearchResponse","com.azure.ai.agents.models.MemoryStoreUpdateCompletedResult":"Azure.AI.Projects.MemoryStoreUpdateCompletedResult","com.azure.ai.agents.models.MemoryStoreUpdateResponse":"Azure.AI.Projects.MemoryStoreUpdateResponse","com.azure.ai.agents.models.MemoryStoreUpdateStatus":"Azure.AI.Projects.MemoryStoreUpdateStatus","com.azure.ai.agents.models.Microsoft365PermissionScopes":"Azure.AI.Projects.Microsoft365PermissionScopes","com.azure.ai.agents.models.Microsoft365PublishDefaults":"Azure.AI.Projects.Microsoft365PublishDefaults","com.azure.ai.agents.models.Microsoft365PublishResult":"Azure.AI.Projects.Microsoft365PublishResponse","com.azure.ai.agents.models.Microsoft365PublishScope":"Azure.AI.Projects.Microsoft365PublishScope","com.azure.ai.agents.models.MicrosoftFabricPreviewTool":"Azure.AI.Projects.MicrosoftFabricPreviewTool","com.azure.ai.agents.models.ModelRouterAttempt":"Azure.AI.Projects.ModelRouterAttempt","com.azure.ai.agents.models.ModelRouterAttemptError":"Azure.AI.Projects.ModelRouterAttemptError","com.azure.ai.agents.models.ModelRouterAttemptResult":"Azure.AI.Projects.ModelRouterAttemptResult","com.azure.ai.agents.models.ModelRouterDetails":"Azure.AI.Projects.ModelRouterDetails","com.azure.ai.agents.models.ModelRouterMode":"Azure.AI.Projects.ModelRouterMode","com.azure.ai.agents.models.ModelSelectionDetails":"Azure.AI.Projects.ModelSelectionDetails","com.azure.ai.agents.models.NamespaceTool":"OpenAI.NamespaceToolParam","com.azure.ai.agents.models.NoiseReductionType":"OpenAI.NoiseReductionType","com.azure.ai.agents.models.OpenApiAnonymousAuthDetails":"Azure.AI.Projects.OpenApiAnonymousAuthDetails","com.azure.ai.agents.models.OpenApiAuthDetails":"Azure.AI.Projects.OpenApiAuthDetails","com.azure.ai.agents.models.OpenApiAuthType":"Azure.AI.Projects.OpenApiAuthType","com.azure.ai.agents.models.OpenApiFunctionDefinition":"Azure.AI.Projects.OpenApiFunctionDefinition","com.azure.ai.agents.models.OpenApiFunctionDefinitionFunction":"Azure.AI.Projects.OpenApiFunctionDefinition.function.anonymous","com.azure.ai.agents.models.OpenApiManagedAuthDetails":"Azure.AI.Projects.OpenApiManagedAuthDetails","com.azure.ai.agents.models.OpenApiManagedSecurityScheme":"Azure.AI.Projects.OpenApiManagedSecurityScheme","com.azure.ai.agents.models.OpenApiProjectConnectionAuthDetails":"Azure.AI.Projects.OpenApiProjectConnectionAuthDetails","com.azure.ai.agents.models.OpenApiProjectConnectionSecurityScheme":"Azure.AI.Projects.OpenApiProjectConnectionSecurityScheme","com.azure.ai.agents.models.OpenApiTool":"Azure.AI.Projects.OpenApiTool","com.azure.ai.agents.models.OpenApiToolCall":"Azure.AI.Projects.OpenApiToolCall","com.azure.ai.agents.models.OpenApiToolCallOutput":"Azure.AI.Projects.OpenApiToolCallOutput","com.azure.ai.agents.models.OpenApiToolboxTool":"Azure.AI.Projects.OpenApiToolboxTool","com.azure.ai.agents.models.OptimizedAgentIdentifier":"Azure.AI.Projects.OptimizedAgentIdentifier","com.azure.ai.agents.models.OtlpTelemetryEndpoint":"Azure.AI.Projects.OtlpTelemetryEndpoint","com.azure.ai.agents.models.PSTNTelephonyTransferDestination":"Azure.AI.Projects.PSTNTelephonyTransferDestination","com.azure.ai.agents.models.PageOrder":"Azure.AI.Projects.PageOrder","com.azure.ai.agents.models.PickPropertiesVoiceAgentAudioConfig":"TypeSpec.PickProperties","com.azure.ai.agents.models.ProceduralMemoryItem":"Azure.AI.Projects.ProceduralMemoryItem","com.azure.ai.agents.models.ProgrammaticToolCallingParameter":"OpenAI.ProgrammaticToolCallingParam","com.azure.ai.agents.models.PromotionInfo":"Azure.AI.Projects.PromotionInfo","com.azure.ai.agents.models.Prompt":"OpenAI.Prompt","com.azure.ai.agents.models.PromptAgentDefinition":"Azure.AI.Projects.PromptAgentDefinition","com.azure.ai.agents.models.PromptAgentDefinitionTextOptions":"Azure.AI.Projects.PromptAgentDefinitionTextOptions","com.azure.ai.agents.models.PromptCacheBreakpointConfig":"OpenAI.PromptCacheBreakpointConfig","com.azure.ai.agents.models.ProtocolConfiguration":"Azure.AI.Projects.ProtocolConfiguration","com.azure.ai.agents.models.ProtocolVersionRecord":"Azure.AI.Projects.ProtocolVersionRecord","com.azure.ai.agents.models.PublishAgentToMicrosoft365Options":null,"com.azure.ai.agents.models.PublishApprovalStatus":"Azure.AI.Projects.PublishApprovalStatus","com.azure.ai.agents.models.PublishTelephonyCampaignRequest":"Azure.AI.Projects.PublishTelephonyCampaignRequest","com.azure.ai.agents.models.RaiConfig":"Azure.AI.Projects.RaiConfig","com.azure.ai.agents.models.RaiInvocationContentType":"Azure.AI.Projects.RaiInvocationContentType","com.azure.ai.agents.models.RaiInvocationMode":"Azure.AI.Projects.RaiInvocationMode","com.azure.ai.agents.models.RaiInvocationModeration":"Azure.AI.Projects.RaiInvocationModeration","com.azure.ai.agents.models.RaiSseTextSelector":"Azure.AI.Projects.RaiSseTextSelector","com.azure.ai.agents.models.RankerVersionType":"RankerVersionTypeExpandable","com.azure.ai.agents.models.RankingOptions":"OpenAI.RankingOptions","com.azure.ai.agents.models.RealtimeAudioFormats":"OpenAI.RealtimeAudioFormats","com.azure.ai.agents.models.RealtimeAudioFormatsAudioPcm":"OpenAI.RealtimeAudioFormatsAudioPcm","com.azure.ai.agents.models.RealtimeAudioFormatsAudioPcmRate":null,"com.azure.ai.agents.models.RealtimeAudioFormatsAudioPcma":"OpenAI.RealtimeAudioFormatsAudioPcma","com.azure.ai.agents.models.RealtimeAudioFormatsAudioPcmu":"OpenAI.RealtimeAudioFormatsAudioPcmu","com.azure.ai.agents.models.RealtimeAudioFormatsType":"OpenAI.RealtimeAudioFormatsType","com.azure.ai.agents.models.RealtimeClientEvent":"OpenAI.RealtimeClientEvent","com.azure.ai.agents.models.RealtimeClientEventConversationItemCreate":"OpenAI.RealtimeClientEventConversationItemCreate","com.azure.ai.agents.models.RealtimeClientEventConversationItemDelete":"OpenAI.RealtimeClientEventConversationItemDelete","com.azure.ai.agents.models.RealtimeClientEventConversationItemRetrieve":"OpenAI.RealtimeClientEventConversationItemRetrieve","com.azure.ai.agents.models.RealtimeClientEventConversationItemTruncate":"OpenAI.RealtimeClientEventConversationItemTruncate","com.azure.ai.agents.models.RealtimeClientEventInputAudioBufferAppend":"OpenAI.RealtimeClientEventInputAudioBufferAppend","com.azure.ai.agents.models.RealtimeClientEventInputAudioBufferClear":"OpenAI.RealtimeClientEventInputAudioBufferClear","com.azure.ai.agents.models.RealtimeClientEventInputAudioBufferCommit":"OpenAI.RealtimeClientEventInputAudioBufferCommit","com.azure.ai.agents.models.RealtimeClientEventOutputAudioBufferClear":"OpenAI.RealtimeClientEventOutputAudioBufferClear","com.azure.ai.agents.models.RealtimeClientEventResponseCancel":"OpenAI.RealtimeClientEventResponseCancel","com.azure.ai.agents.models.RealtimeClientEventResponseCreate":"OpenAI.RealtimeClientEventResponseCreate","com.azure.ai.agents.models.RealtimeClientEventSessionUpdate":"OpenAI.RealtimeClientEventSessionUpdate","com.azure.ai.agents.models.RealtimeClientEventSessionUpdateSessionModel":"OpenAI.RealtimeClientEventSessionUpdate.session.model.anonymous","com.azure.ai.agents.models.RealtimeClientEventSessionUpdateSessionOutputModality":"OpenAI.RealtimeClientEventSessionUpdate.session.output_modality.anonymous","com.azure.ai.agents.models.RealtimeClientEventSessionUpdateSessionTruncation":"OpenAI.RealtimeClientEventSessionUpdate.session.truncation.anonymous","com.azure.ai.agents.models.RealtimeClientEventSessionUpdateSessionTruncation1":"OpenAI.RealtimeClientEventSessionUpdate.session.truncation.anonymous","com.azure.ai.agents.models.RealtimeClientEventType":"OpenAI.RealtimeClientEventType","com.azure.ai.agents.models.RealtimeConversationItem":"OpenAI.RealtimeConversationItem","com.azure.ai.agents.models.RealtimeConversationItemFunctionCall":"OpenAI.RealtimeConversationItemFunctionCall","com.azure.ai.agents.models.RealtimeConversationItemFunctionCallOutput":"OpenAI.RealtimeConversationItemFunctionCallOutput","com.azure.ai.agents.models.RealtimeConversationItemFunctionCallOutputStatus":"OpenAI.RealtimeConversationItemFunctionCallOutput.status.anonymous","com.azure.ai.agents.models.RealtimeConversationItemFunctionCallStatus":"OpenAI.RealtimeConversationItemFunctionCall.status.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessage":"OpenAI.RealtimeConversationItemMessage","com.azure.ai.agents.models.RealtimeConversationItemMessageAssistant":"OpenAI.RealtimeConversationItemMessageAssistant","com.azure.ai.agents.models.RealtimeConversationItemMessageAssistantContent":"OpenAI.RealtimeConversationItemMessageAssistantContent","com.azure.ai.agents.models.RealtimeConversationItemMessageAssistantContentType":"OpenAI.RealtimeConversationItemMessageAssistantContent.type.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessageAssistantStatus":"OpenAI.RealtimeConversationItemMessageAssistant.status.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessageSystem":"OpenAI.RealtimeConversationItemMessageSystem","com.azure.ai.agents.models.RealtimeConversationItemMessageSystemContent":"OpenAI.RealtimeConversationItemMessageSystemContent","com.azure.ai.agents.models.RealtimeConversationItemMessageSystemContentType":null,"com.azure.ai.agents.models.RealtimeConversationItemMessageSystemStatus":"OpenAI.RealtimeConversationItemMessageSystem.status.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessageType":"OpenAI.RealtimeConversationItemMessageType","com.azure.ai.agents.models.RealtimeConversationItemMessageUser":"OpenAI.RealtimeConversationItemMessageUser","com.azure.ai.agents.models.RealtimeConversationItemMessageUserContent":"OpenAI.RealtimeConversationItemMessageUserContent","com.azure.ai.agents.models.RealtimeConversationItemMessageUserContentDetail":"OpenAI.RealtimeConversationItemMessageUserContent.detail.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessageUserContentType":"OpenAI.RealtimeConversationItemMessageUserContent.type.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessageUserStatus":"OpenAI.RealtimeConversationItemMessageUser.status.anonymous","com.azure.ai.agents.models.RealtimeConversationItemObject":"RealtimeConversationItemObject","com.azure.ai.agents.models.RealtimeConversationItemType":"OpenAI.RealtimeConversationItemType","com.azure.ai.agents.models.RealtimeFunctionTool":"OpenAI.RealtimeFunctionTool","com.azure.ai.agents.models.RealtimeMCPApprovalRequest":"OpenAI.RealtimeMCPApprovalRequest","com.azure.ai.agents.models.RealtimeMCPApprovalResponse":"OpenAI.RealtimeMCPApprovalResponse","com.azure.ai.agents.models.RealtimeMCPError":"OpenAI.RealtimeMCPError","com.azure.ai.agents.models.RealtimeMCPHttpError":"OpenAI.RealtimeMCPHTTPError","com.azure.ai.agents.models.RealtimeMCPListTools":"OpenAI.RealtimeMCPListTools","com.azure.ai.agents.models.RealtimeMCPProtocolError":"OpenAI.RealtimeMCPProtocolError","com.azure.ai.agents.models.RealtimeMCPToolCall":"OpenAI.RealtimeMCPToolCall","com.azure.ai.agents.models.RealtimeMCPToolExecutionError":"OpenAI.RealtimeMCPToolExecutionError","com.azure.ai.agents.models.RealtimeMcpErrorType":"OpenAI.RealtimeMcpErrorType","com.azure.ai.agents.models.RealtimeReasoning":"OpenAI.RealtimeReasoning","com.azure.ai.agents.models.RealtimeReasoningEffort":"OpenAI.RealtimeReasoningEffort","com.azure.ai.agents.models.RealtimeResponseStatusDetails":"OpenAI.RealtimeResponseStatusDetails","com.azure.ai.agents.models.RealtimeResponseStatusDetailsError":"OpenAI.RealtimeResponseStatusDetailsError","com.azure.ai.agents.models.RealtimeResponseStatusDetailsReason":"OpenAI.RealtimeResponseStatusDetails.reason.anonymous","com.azure.ai.agents.models.RealtimeResponseStatusDetailsType":"OpenAI.RealtimeResponseStatusDetails.type.anonymous","com.azure.ai.agents.models.RealtimeResponseUsage":"OpenAI.RealtimeResponseUsage","com.azure.ai.agents.models.RealtimeResponseUsageInputTokenDetails":"OpenAI.RealtimeResponseUsageInputTokenDetails","com.azure.ai.agents.models.RealtimeResponseUsageInputTokenDetailsCachedTokensDetails":"OpenAI.RealtimeResponseUsageInputTokenDetailsCachedTokensDetails","com.azure.ai.agents.models.RealtimeResponseUsageOutputTokenDetails":"OpenAI.RealtimeResponseUsageOutputTokenDetails","com.azure.ai.agents.models.RealtimeServerEvent":"OpenAI.RealtimeServerEvent","com.azure.ai.agents.models.RealtimeServerEventConversationCreated":"OpenAI.RealtimeServerEventConversationCreated","com.azure.ai.agents.models.RealtimeServerEventConversationCreatedConversation":"OpenAI.RealtimeServerEventConversationCreatedConversation","com.azure.ai.agents.models.RealtimeServerEventConversationCreatedConversationObject":null,"com.azure.ai.agents.models.RealtimeServerEventConversationItemAdded":"OpenAI.RealtimeServerEventConversationItemAdded","com.azure.ai.agents.models.RealtimeServerEventConversationItemCreated":"OpenAI.RealtimeServerEventConversationItemCreated","com.azure.ai.agents.models.RealtimeServerEventConversationItemDeleted":"OpenAI.RealtimeServerEventConversationItemDeleted","com.azure.ai.agents.models.RealtimeServerEventConversationItemDone":"OpenAI.RealtimeServerEventConversationItemDone","com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionCompleted":"OpenAI.RealtimeServerEventConversationItemInputAudioTranscriptionCompleted","com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionDelta":"OpenAI.RealtimeServerEventConversationItemInputAudioTranscriptionDelta","com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionFailed":"OpenAI.RealtimeServerEventConversationItemInputAudioTranscriptionFailed","com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionFailedError":"OpenAI.RealtimeServerEventConversationItemInputAudioTranscriptionFailedError","com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionSegment":"OpenAI.RealtimeServerEventConversationItemInputAudioTranscriptionSegment","com.azure.ai.agents.models.RealtimeServerEventConversationItemRetrieved":"OpenAI.RealtimeServerEventConversationItemRetrieved","com.azure.ai.agents.models.RealtimeServerEventConversationItemTruncated":"OpenAI.RealtimeServerEventConversationItemTruncated","com.azure.ai.agents.models.RealtimeServerEventErrorError":"OpenAI.RealtimeServerEventErrorError","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferCleared":"OpenAI.RealtimeServerEventInputAudioBufferCleared","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferCommitted":"OpenAI.RealtimeServerEventInputAudioBufferCommitted","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferDtmfEventReceived":"OpenAI.RealtimeServerEventInputAudioBufferDtmfEventReceived","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferSpeechStarted":"OpenAI.RealtimeServerEventInputAudioBufferSpeechStarted","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferSpeechStopped":"OpenAI.RealtimeServerEventInputAudioBufferSpeechStopped","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferTimeoutTriggered":"OpenAI.RealtimeServerEventInputAudioBufferTimeoutTriggered","com.azure.ai.agents.models.RealtimeServerEventMCPListToolsCompleted":"OpenAI.RealtimeServerEventMCPListToolsCompleted","com.azure.ai.agents.models.RealtimeServerEventMCPListToolsFailed":"OpenAI.RealtimeServerEventMCPListToolsFailed","com.azure.ai.agents.models.RealtimeServerEventMCPListToolsInProgress":"OpenAI.RealtimeServerEventMCPListToolsInProgress","com.azure.ai.agents.models.RealtimeServerEventOutputAudioBufferCleared":"OpenAI.RealtimeServerEventOutputAudioBufferCleared","com.azure.ai.agents.models.RealtimeServerEventOutputAudioBufferStarted":"OpenAI.RealtimeServerEventOutputAudioBufferStarted","com.azure.ai.agents.models.RealtimeServerEventOutputAudioBufferStopped":"OpenAI.RealtimeServerEventOutputAudioBufferStopped","com.azure.ai.agents.models.RealtimeServerEventRateLimitsUpdated":"OpenAI.RealtimeServerEventRateLimitsUpdated","com.azure.ai.agents.models.RealtimeServerEventRateLimitsUpdatedRateLimits":"OpenAI.RealtimeServerEventRateLimitsUpdatedRateLimits","com.azure.ai.agents.models.RealtimeServerEventRateLimitsUpdatedRateLimitsName":"OpenAI.RealtimeServerEventRateLimitsUpdatedRateLimits.name.anonymous","com.azure.ai.agents.models.RealtimeServerEventRealtimeServerEventError":"OpenAI.RealtimeServerEventRealtimeServerEventError","com.azure.ai.agents.models.RealtimeServerEventResponseAudioDelta":"OpenAI.RealtimeServerEventResponseAudioDelta","com.azure.ai.agents.models.RealtimeServerEventResponseAudioDone":"OpenAI.RealtimeServerEventResponseAudioDone","com.azure.ai.agents.models.RealtimeServerEventResponseAudioTranscriptDelta":"OpenAI.RealtimeServerEventResponseAudioTranscriptDelta","com.azure.ai.agents.models.RealtimeServerEventResponseAudioTranscriptDone":"OpenAI.RealtimeServerEventResponseAudioTranscriptDone","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartAdded":"OpenAI.RealtimeServerEventResponseContentPartAdded","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartAddedPart":"OpenAI.RealtimeServerEventResponseContentPartAddedPart","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartAddedPartType":"OpenAI.RealtimeServerEventResponseContentPartAddedPart.type.anonymous","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartDone":"OpenAI.RealtimeServerEventResponseContentPartDone","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartDonePart":"OpenAI.RealtimeServerEventResponseContentPartDonePart","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartDonePartType":"OpenAI.RealtimeServerEventResponseContentPartDonePart.type.anonymous","com.azure.ai.agents.models.RealtimeServerEventResponseCreated":"OpenAI.RealtimeServerEventResponseCreated","com.azure.ai.agents.models.RealtimeServerEventResponseDone":"OpenAI.RealtimeServerEventResponseDone","com.azure.ai.agents.models.RealtimeServerEventResponseFunctionCallArgumentsDelta":"OpenAI.RealtimeServerEventResponseFunctionCallArgumentsDelta","com.azure.ai.agents.models.RealtimeServerEventResponseFunctionCallArgumentsDone":"OpenAI.RealtimeServerEventResponseFunctionCallArgumentsDone","com.azure.ai.agents.models.RealtimeServerEventResponseMCPCallArgumentsDelta":"OpenAI.RealtimeServerEventResponseMCPCallArgumentsDelta","com.azure.ai.agents.models.RealtimeServerEventResponseMCPCallArgumentsDone":"OpenAI.RealtimeServerEventResponseMCPCallArgumentsDone","com.azure.ai.agents.models.RealtimeServerEventResponseMCPCallCompleted":"OpenAI.RealtimeServerEventResponseMCPCallCompleted","com.azure.ai.agents.models.RealtimeServerEventResponseMCPCallFailed":"OpenAI.RealtimeServerEventResponseMCPCallFailed","com.azure.ai.agents.models.RealtimeServerEventResponseMCPCallInProgress":"OpenAI.RealtimeServerEventResponseMCPCallInProgress","com.azure.ai.agents.models.RealtimeServerEventResponseOutputItemAdded":"OpenAI.RealtimeServerEventResponseOutputItemAdded","com.azure.ai.agents.models.RealtimeServerEventResponseOutputItemDone":"OpenAI.RealtimeServerEventResponseOutputItemDone","com.azure.ai.agents.models.RealtimeServerEventResponseTextDelta":"OpenAI.RealtimeServerEventResponseTextDelta","com.azure.ai.agents.models.RealtimeServerEventResponseTextDone":"OpenAI.RealtimeServerEventResponseTextDone","com.azure.ai.agents.models.RealtimeServerEventSessionCreated":"OpenAI.RealtimeServerEventSessionCreated","com.azure.ai.agents.models.RealtimeServerEventSessionUpdated":"OpenAI.RealtimeServerEventSessionUpdated","com.azure.ai.agents.models.RealtimeServerEventType":"OpenAI.RealtimeServerEventType","com.azure.ai.agents.models.RealtimeSessionCreateRequestGA":"OpenAI.RealtimeSessionCreateRequestGA","com.azure.ai.agents.models.RealtimeSessionCreateRequestGAAudio":"OpenAI.RealtimeSessionCreateRequestGAAudio","com.azure.ai.agents.models.RealtimeSessionCreateRequestGAAudioInput":"OpenAI.RealtimeSessionCreateRequestGAAudioInput","com.azure.ai.agents.models.RealtimeSessionCreateRequestGAAudioInputNoiseReduction":"OpenAI.RealtimeSessionCreateRequestGAAudioInputNoiseReduction","com.azure.ai.agents.models.RealtimeSessionCreateRequestGAAudioOutput":"OpenAI.RealtimeSessionCreateRequestGAAudioOutput","com.azure.ai.agents.models.RealtimeSessionCreateRequestGAAudioOutputVoice":"OpenAI.RealtimeSessionCreateRequestGAAudioOutput.voice.anonymous","com.azure.ai.agents.models.RealtimeSessionCreateRequestGATracing":"OpenAI.RealtimeSessionCreateRequestGATracing","com.azure.ai.agents.models.RealtimeSessionCreateRequestUnion":"OpenAI.RealtimeSessionCreateRequestUnion","com.azure.ai.agents.models.RealtimeSessionCreateRequestUnionType":"OpenAI.RealtimeSessionCreateRequestUnionType","com.azure.ai.agents.models.RealtimeTranscriptionSessionCreateRequestGA":"OpenAI.RealtimeTranscriptionSessionCreateRequestGA","com.azure.ai.agents.models.RealtimeTranscriptionSessionCreateRequestGAAudio":"OpenAI.RealtimeTranscriptionSessionCreateRequestGAAudio","com.azure.ai.agents.models.RealtimeTranscriptionSessionCreateRequestGAAudioInput":"OpenAI.RealtimeTranscriptionSessionCreateRequestGAAudioInput","com.azure.ai.agents.models.RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction":"OpenAI.RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction","com.azure.ai.agents.models.RealtimeTurnDetection":"OpenAI.RealtimeTurnDetection","com.azure.ai.agents.models.RealtimeTurnDetectionSemanticVad":"OpenAI.RealtimeTurnDetectionSemanticVad","com.azure.ai.agents.models.RealtimeTurnDetectionServerVad":"OpenAI.RealtimeTurnDetectionServerVad","com.azure.ai.agents.models.RealtimeTurnDetectionType":"OpenAI.RealtimeTurnDetectionType","com.azure.ai.agents.models.ReminderPreviewToolboxTool":"Azure.AI.Projects.ReminderPreviewToolboxTool","com.azure.ai.agents.models.ResponseFormatJsonSchemaInner":"OpenAI.ResponseFormatJsonSchemaSchema","com.azure.ai.agents.models.ResponsePromptVariables":"OpenAI.ResponsePromptVariables","com.azure.ai.agents.models.ResponseUsageInputTokensDetails":"OpenAI.ResponseUsageInputTokensDetails","com.azure.ai.agents.models.ResponseUsageOutputTokensDetails":"OpenAI.ResponseUsageOutputTokensDetails","com.azure.ai.agents.models.ResponsesProtocolConfiguration":"Azure.AI.Projects.ResponsesProtocolConfiguration","com.azure.ai.agents.models.RoutingConfiguration":"Azure.AI.Projects.RoutingConfiguration","com.azure.ai.agents.models.RoutingTraceEntry":"Azure.AI.Projects.RoutingTraceEntry","com.azure.ai.agents.models.SearchContentType":"OpenAI.SearchContentType","com.azure.ai.agents.models.SearchContextSize":"SearchContextSizeExpandable","com.azure.ai.agents.models.SessionAffinityConfiguration":"Azure.AI.Projects.SessionAffinityConfiguration","com.azure.ai.agents.models.SessionAffinityDecision":"Azure.AI.Projects.SessionAffinityDecision","com.azure.ai.agents.models.SessionAffinityDetails":"Azure.AI.Projects.SessionAffinityDetails","com.azure.ai.agents.models.SessionAffinityMode":"Azure.AI.Projects.SessionAffinityMode","com.azure.ai.agents.models.SessionAffinityRequestMode":"Azure.AI.Projects.SessionAffinityRequestMode","com.azure.ai.agents.models.SessionAffinitySource":"Azure.AI.Projects.SessionAffinitySource","com.azure.ai.agents.models.SessionConfiguration":"Azure.AI.Projects.SessionConfiguration","com.azure.ai.agents.models.SessionDirectoryEntry":"Azure.AI.Projects.SessionDirectoryEntry","com.azure.ai.agents.models.SessionFileWriteResult":"Azure.AI.Projects.SessionFileWriteResponse","com.azure.ai.agents.models.SessionLogEvent":"Azure.AI.Projects.SessionLogEvent","com.azure.ai.agents.models.SessionLogEventType":"Azure.AI.Projects.SessionLogEventType","com.azure.ai.agents.models.SharepointGroundingToolCall":"Azure.AI.Projects.SharepointGroundingToolCall","com.azure.ai.agents.models.SharepointGroundingToolCallOutput":"Azure.AI.Projects.SharepointGroundingToolCallOutput","com.azure.ai.agents.models.SharepointGroundingToolParameters":"Azure.AI.Projects.SharepointGroundingToolParameters","com.azure.ai.agents.models.SharepointPreviewTool":"Azure.AI.Projects.SharepointPreviewTool","com.azure.ai.agents.models.ShellToolboxTool":"Azure.AI.Projects.ShellToolboxTool","com.azure.ai.agents.models.SipTelephonyTransferDestination":"Azure.AI.Projects.SipTelephonyTransferDestination","com.azure.ai.agents.models.SkillReferenceParameter":"OpenAI.SkillReferenceParam","com.azure.ai.agents.models.StructuredInputDefinition":"Azure.AI.Projects.StructuredInputDefinition","com.azure.ai.agents.models.StructuredOutputDefinition":"Azure.AI.Projects.StructuredOutputDefinition","com.azure.ai.agents.models.TeamsPhoneExtensionTelephonyBinding":"Azure.AI.Projects.TeamsPhoneExtensionTelephonyBinding","com.azure.ai.agents.models.TeamsPhoneExtensionTelephonyBindingListItem":"Azure.AI.Projects.TeamsPhoneExtensionTelephonyBindingListItem","com.azure.ai.agents.models.TeamsTelephonyTransferDestination":"Azure.AI.Projects.TeamsTelephonyTransferDestination","com.azure.ai.agents.models.TelemetryConfig":"Azure.AI.Projects.TelemetryConfig","com.azure.ai.agents.models.TelemetryDataKind":"Azure.AI.Projects.TelemetryDataKind","com.azure.ai.agents.models.TelemetryEndpoint":"Azure.AI.Projects.TelemetryEndpoint","com.azure.ai.agents.models.TelemetryEndpointAuth":"Azure.AI.Projects.TelemetryEndpointAuth","com.azure.ai.agents.models.TelemetryEndpointAuthType":"Azure.AI.Projects.TelemetryEndpointAuthType","com.azure.ai.agents.models.TelemetryEndpointKind":"Azure.AI.Projects.TelemetryEndpointKind","com.azure.ai.agents.models.TelemetryTransportProtocol":"Azure.AI.Projects.TelemetryTransportProtocol","com.azure.ai.agents.models.TelephonyBinding":"Azure.AI.Projects.TelephonyBinding","com.azure.ai.agents.models.TelephonyBindingListItem":"Azure.AI.Projects.TelephonyBindingListItem","com.azure.ai.agents.models.TelephonyBindingStatus":"Azure.AI.Projects.TelephonyBindingStatus","com.azure.ai.agents.models.TelephonyCallDurationBasis":"Azure.AI.Projects.TelephonyCallDurationBasis","com.azure.ai.agents.models.TelephonyCallJob":"Azure.AI.Projects.TelephonyCallJob","com.azure.ai.agents.models.TelephonyCallJobCancellation":"Azure.AI.Projects.TelephonyCallJobCancellation","com.azure.ai.agents.models.TelephonyCallJobSchedule":"Azure.AI.Projects.TelephonyCallJobSchedule","com.azure.ai.agents.models.TelephonyCallJobStatus":"Azure.AI.Projects.TelephonyCallJobStatus","com.azure.ai.agents.models.TelephonyCallLifecycleEvent":"Azure.AI.Projects.TelephonyCallLifecycleEvent","com.azure.ai.agents.models.TelephonyCallLifecycleEventName":"Azure.AI.Projects.TelephonyCallLifecycleEventName","com.azure.ai.agents.models.TelephonyCallLifecycleEventOutcome":"Azure.AI.Projects.TelephonyCallLifecycleEventOutcome","com.azure.ai.agents.models.TelephonyCallLifecycleEventSource":"Azure.AI.Projects.TelephonyCallLifecycleEventSource","com.azure.ai.agents.models.TelephonyCallPhase":"Azure.AI.Projects.TelephonyCallPhase","com.azure.ai.agents.models.TelephonyCallRecord":"Azure.AI.Projects.TelephonyCallRecord","com.azure.ai.agents.models.TelephonyCallStatus":"Azure.AI.Projects.TelephonyCallStatus","com.azure.ai.agents.models.TelephonyCallSummary":"Azure.AI.Projects.TelephonyCallSummary","com.azure.ai.agents.models.TelephonyCallTimestampSource":"Azure.AI.Projects.TelephonyCallTimestampSource","com.azure.ai.agents.models.TelephonyCallTiming":"Azure.AI.Projects.TelephonyCallTiming","com.azure.ai.agents.models.TelephonyCallTrace":"Azure.AI.Projects.TelephonyCallTrace","com.azure.ai.agents.models.TelephonyCallTraceMode":"Azure.AI.Projects.TelephonyCallTraceMode","com.azure.ai.agents.models.TelephonyCallTraceStatus":"Azure.AI.Projects.TelephonyCallTraceStatus","com.azure.ai.agents.models.TelephonyCampaign":"Azure.AI.Projects.TelephonyCampaign","com.azure.ai.agents.models.TelephonyCampaignCallJobCounts":"Azure.AI.Projects.TelephonyCampaignCallJobCounts","com.azure.ai.agents.models.TelephonyCampaignConfigurationStatus":"Azure.AI.Projects.TelephonyCampaignConfigurationStatus","com.azure.ai.agents.models.TelephonyCampaignDuplicateHandling":"Azure.AI.Projects.TelephonyCampaignDuplicateHandling","com.azure.ai.agents.models.TelephonyCampaignExecutionStatus":"Azure.AI.Projects.TelephonyCampaignExecutionStatus","com.azure.ai.agents.models.TelephonyCampaignRecipientImport":"Azure.AI.Projects.TelephonyCampaignRecipientImport","com.azure.ai.agents.models.TelephonyCampaignRecipientImportFormat":"Azure.AI.Projects.TelephonyCampaignRecipientImportFormat","com.azure.ai.agents.models.TelephonyCampaignRecipientImportSource":"Azure.AI.Projects.TelephonyCampaignRecipientImportSource","com.azure.ai.agents.models.TelephonyCampaignRecipientImportStatus":"Azure.AI.Projects.TelephonyCampaignRecipientImportStatus","com.azure.ai.agents.models.TelephonyCampaignRecipientMapping":"Azure.AI.Projects.TelephonyCampaignRecipientMapping","com.azure.ai.agents.models.TelephonyCampaignRecipientMappingRequest":"Azure.AI.Projects.TelephonyCampaignRecipientMappingRequest","com.azure.ai.agents.models.TelephonyCampaignSchedule":"Azure.AI.Projects.TelephonyCampaignSchedule","com.azure.ai.agents.models.TelephonyCampaignScheduleType":"Azure.AI.Projects.TelephonyCampaignScheduleType","com.azure.ai.agents.models.TelephonyOperation":"Azure.AI.Projects.TelephonyOperation","com.azure.ai.agents.models.TelephonyOperationResource":"Azure.AI.Projects.TelephonyOperationResource","com.azure.ai.agents.models.TelephonyOperationStatus":"Azure.AI.Projects.TelephonyOperationStatus","com.azure.ai.agents.models.TelephonyOutboundDestination":"Azure.AI.Projects.TelephonyOutboundDestination","com.azure.ai.agents.models.TelephonyOutboundDestinationType":"Azure.AI.Projects.TelephonyOutboundDestinationType","com.azure.ai.agents.models.TelephonyOutboundFixedIntervalRetryPolicy":"Azure.AI.Projects.TelephonyOutboundFixedIntervalRetryPolicy","com.azure.ai.agents.models.TelephonyOutboundFixedIntervalRetryPolicyResponse":"Azure.AI.Projects.TelephonyOutboundFixedIntervalRetryPolicyResponse","com.azure.ai.agents.models.TelephonyOutboundRetryPolicy":"Azure.AI.Projects.TelephonyOutboundRetryPolicy","com.azure.ai.agents.models.TelephonyOutboundRetryPolicyResponse":"Azure.AI.Projects.TelephonyOutboundRetryPolicyResponse","com.azure.ai.agents.models.TelephonyOutboundRetryPolicyType":"Azure.AI.Projects.TelephonyOutboundRetryPolicyType","com.azure.ai.agents.models.TelephonyProvider":"Azure.AI.Projects.TelephonyProvider","com.azure.ai.agents.models.TelephonyTransferDestination":"Azure.AI.Projects.TelephonyTransferDestination","com.azure.ai.agents.models.TelephonyTransferDestinationKind":"Azure.AI.Projects.TelephonyTransferDestinationKind","com.azure.ai.agents.models.TelephonyTransferTarget":"Azure.AI.Projects.TelephonyTransferTarget","com.azure.ai.agents.models.TelephonyTransferTargets":"Azure.AI.Projects.TelephonyTransferTargets","com.azure.ai.agents.models.TextResponseFormatConfiguration":"OpenAI.TextResponseFormatConfiguration","com.azure.ai.agents.models.TextResponseFormatConfigurationResponseFormatJsonObject":"OpenAI.TextResponseFormatConfigurationResponseFormatJsonObject","com.azure.ai.agents.models.TextResponseFormatConfigurationResponseFormatText":"OpenAI.TextResponseFormatConfigurationResponseFormatText","com.azure.ai.agents.models.TextResponseFormatConfigurationType":"OpenAI.TextResponseFormatConfigurationType","com.azure.ai.agents.models.TextResponseFormatJsonSchema":"OpenAI.TextResponseFormatJsonSchema","com.azure.ai.agents.models.TokenLimits":"OpenAI.TokenLimits","com.azure.ai.agents.models.Tool":"OpenAI.Tool","com.azure.ai.agents.models.ToolCallStatus":"Azure.AI.Projects.ToolCallStatus","com.azure.ai.agents.models.ToolChoiceFunction":"OpenAI.ToolChoiceFunction","com.azure.ai.agents.models.ToolChoiceMCP":"OpenAI.ToolChoiceMCP","com.azure.ai.agents.models.ToolChoiceOptions":"OpenAI.ToolChoiceOptions","com.azure.ai.agents.models.ToolChoiceParam":"OpenAI.ToolChoiceParam","com.azure.ai.agents.models.ToolChoiceParamType":"OpenAI.ToolChoiceParamType","com.azure.ai.agents.models.ToolConfig":"Azure.AI.Projects.ToolConfig","com.azure.ai.agents.models.ToolProjectConnection":"Azure.AI.Projects.ToolProjectConnection","com.azure.ai.agents.models.ToolSearchExecutionType":"OpenAI.ToolSearchExecutionType","com.azure.ai.agents.models.ToolSearchTool":"OpenAI.ToolSearchToolParam","com.azure.ai.agents.models.ToolSearchToolboxTool":"Azure.AI.Projects.ToolSearchToolboxTool","com.azure.ai.agents.models.ToolType":"OpenAI.ToolType","com.azure.ai.agents.models.ToolboxDetails":"Azure.AI.Projects.ToolboxObject","com.azure.ai.agents.models.ToolboxPolicies":"Azure.AI.Projects.ToolboxPolicies","com.azure.ai.agents.models.ToolboxSearchPreviewToolboxTool":"Azure.AI.Projects.ToolboxSearchPreviewToolboxTool","com.azure.ai.agents.models.ToolboxShellContainerAutoEnvironment":"Azure.AI.Projects.ToolboxShellContainerAutoEnvironment","com.azure.ai.agents.models.ToolboxShellContainerReferenceEnvironment":"Azure.AI.Projects.ToolboxShellContainerReferenceEnvironment","com.azure.ai.agents.models.ToolboxShellEnvironment":"Azure.AI.Projects.ToolboxShellEnvironment","com.azure.ai.agents.models.ToolboxShellNetworkPolicy":"Azure.AI.Projects.ToolboxShellNetworkPolicy","com.azure.ai.agents.models.ToolboxShellNetworkPolicyDisabled":"Azure.AI.Projects.ToolboxShellNetworkPolicyDisabled","com.azure.ai.agents.models.ToolboxSkill":"Azure.AI.Projects.ToolboxSkill","com.azure.ai.agents.models.ToolboxSkillReference":"Azure.AI.Projects.ToolboxSkillReference","com.azure.ai.agents.models.ToolboxTool":"Azure.AI.Projects.ToolboxTool","com.azure.ai.agents.models.ToolboxToolType":"Azure.AI.Projects.ToolboxToolType","com.azure.ai.agents.models.ToolboxVersionDetails":"Azure.AI.Projects.ToolboxVersionObject","com.azure.ai.agents.models.TranscriptTextUsageDuration":"OpenAI.TranscriptTextUsageDuration","com.azure.ai.agents.models.TranscriptTextUsageTokens":"OpenAI.TranscriptTextUsageTokens","com.azure.ai.agents.models.TranscriptTextUsageTokensInputTokenDetails":"OpenAI.TranscriptTextUsageTokensInputTokenDetails","com.azure.ai.agents.models.TranscriptionLanguage":"OpenAI.TranscriptionLanguage","com.azure.ai.agents.models.TwilioTelephonyBinding":"Azure.AI.Projects.TwilioTelephonyBinding","com.azure.ai.agents.models.TwilioTelephonyBindingListItem":"Azure.AI.Projects.TwilioTelephonyBindingListItem","com.azure.ai.agents.models.UpdateAgentDetailsOptions":"Azure.AI.Projects.patchAgentObject.Request.anonymous","com.azure.ai.agents.models.UpdateTelephonyBindingRequest":"Azure.AI.Projects.UpdateTelephonyBindingRequest","com.azure.ai.agents.models.UserProfileMemoryItem":"Azure.AI.Projects.UserProfileMemoryItem","com.azure.ai.agents.models.VersionIndicator":"Azure.AI.Projects.VersionIndicator","com.azure.ai.agents.models.VersionIndicatorType":"Azure.AI.Projects.VersionIndicatorType","com.azure.ai.agents.models.VersionRefIndicator":"Azure.AI.Projects.VersionRefIndicator","com.azure.ai.agents.models.VersionSelectionRule":"Azure.AI.Projects.VersionSelectionRule","com.azure.ai.agents.models.VersionSelector":"Azure.AI.Projects.VersionSelector","com.azure.ai.agents.models.VersionSelectorType":"Azure.AI.Projects.VersionSelectorType","com.azure.ai.agents.models.VoiceAgentAnimationConfig":"Azure.AI.Projects.VoiceAgentAnimationConfig","com.azure.ai.agents.models.VoiceAgentAnimationOutputType":"Azure.AI.Projects.VoiceAgentAnimationOutputType","com.azure.ai.agents.models.VoiceAgentAudioConfig":"Azure.AI.Projects.VoiceAgentAudioConfig","com.azure.ai.agents.models.VoiceAgentAudioInputConfig":"Azure.AI.Projects.VoiceAgentAudioInputConfig","com.azure.ai.agents.models.VoiceAgentAudioInputConfigTranscriptionDelay":"Azure.AI.Projects.VoiceAgentAudioInputConfig.transcription.delay.anonymous","com.azure.ai.agents.models.VoiceAgentAudioOutputConfig":"Azure.AI.Projects.VoiceAgentAudioOutputConfig","com.azure.ai.agents.models.VoiceAgentAudioTimestampType":"Azure.AI.Projects.VoiceAgentAudioTimestampType","com.azure.ai.agents.models.VoiceAgentAvatarConfig":"Azure.AI.Projects.VoiceAgentAvatarConfig","com.azure.ai.agents.models.VoiceAgentAvatarIceServer":"Azure.AI.Projects.VoiceAgentAvatarIceServer","com.azure.ai.agents.models.VoiceAgentAvatarOutputProtocol":"Azure.AI.Projects.VoiceAgentAvatarOutputProtocol","com.azure.ai.agents.models.VoiceAgentAvatarScene":"Azure.AI.Projects.VoiceAgentAvatarScene","com.azure.ai.agents.models.VoiceAgentAvatarType":"Azure.AI.Projects.VoiceAgentAvatarType","com.azure.ai.agents.models.VoiceAgentAvatarVideoBackground":"Azure.AI.Projects.VoiceAgentAvatarVideoBackground","com.azure.ai.agents.models.VoiceAgentAvatarVideoCrop":"Azure.AI.Projects.VoiceAgentAvatarVideoCrop","com.azure.ai.agents.models.VoiceAgentAvatarVideoParams":"Azure.AI.Projects.VoiceAgentAvatarVideoParams","com.azure.ai.agents.models.VoiceAgentAvatarVideoResolution":"Azure.AI.Projects.VoiceAgentAvatarVideoResolution","com.azure.ai.agents.models.VoiceAgentAzureSemanticVadEnTurnDetection":"Azure.AI.Projects.VoiceAgentAzureSemanticVadEnTurnDetection","com.azure.ai.agents.models.VoiceAgentAzureSemanticVadMultilingualTurnDetection":"Azure.AI.Projects.VoiceAgentAzureSemanticVadMultilingualTurnDetection","com.azure.ai.agents.models.VoiceAgentAzureSemanticVadTurnDetection":"Azure.AI.Projects.VoiceAgentAzureSemanticVadTurnDetection","com.azure.ai.agents.models.VoiceAgentClientEventRtcCallSdpCreate":"Azure.AI.Projects.VoiceAgentClientEventRtcCallSdpCreate","com.azure.ai.agents.models.VoiceAgentClientEventSessionAvatarConnect":"Azure.AI.Projects.VoiceAgentClientEventSessionAvatarConnect","com.azure.ai.agents.models.VoiceAgentDefinition":"Azure.AI.Projects.VoiceAgentDefinition","com.azure.ai.agents.models.VoiceAgentEchoCancellation":"Azure.AI.Projects.VoiceAgentEchoCancellation","com.azure.ai.agents.models.VoiceAgentEchoCancellationReferenceSource":"Azure.AI.Projects.VoiceAgentEchoCancellationReferenceSource","com.azure.ai.agents.models.VoiceAgentEndConversationSystemTool":"Azure.AI.Projects.VoiceAgentEndConversationSystemTool","com.azure.ai.agents.models.VoiceAgentEndOfUtteranceDetection":"Azure.AI.Projects.VoiceAgentEndOfUtteranceDetection","com.azure.ai.agents.models.VoiceAgentEndOfUtteranceDetectionModel":"Azure.AI.Projects.VoiceAgentEndOfUtteranceDetectionModel","com.azure.ai.agents.models.VoiceAgentEndOfUtteranceThresholdLevel":"Azure.AI.Projects.VoiceAgentEndOfUtteranceThresholdLevel","com.azure.ai.agents.models.VoiceAgentFunctionTool":"Azure.AI.Projects.VoiceAgentFunctionTool","com.azure.ai.agents.models.VoiceAgentFunctionToolType":null,"com.azure.ai.agents.models.VoiceAgentGreetingConfig":"Azure.AI.Projects.VoiceAgentGreetingConfig","com.azure.ai.agents.models.VoiceAgentInputTranscription":"Azure.AI.Projects.VoiceAgentInputTranscription","com.azure.ai.agents.models.VoiceAgentInputTranscriptionModel":"Azure.AI.Projects.VoiceAgentInputTranscriptionModel","com.azure.ai.agents.models.VoiceAgentInterimResponseConfig":"Azure.AI.Projects.VoiceAgentInterimResponseConfig","com.azure.ai.agents.models.VoiceAgentInterimResponseTrigger":"Azure.AI.Projects.VoiceAgentInterimResponseTrigger","com.azure.ai.agents.models.VoiceAgentLlmGeneratedGreetingConfig":"Azure.AI.Projects.VoiceAgentLlmGeneratedGreetingConfig","com.azure.ai.agents.models.VoiceAgentLlmInterimResponseConfig":"Azure.AI.Projects.VoiceAgentLlmInterimResponseConfig","com.azure.ai.agents.models.VoiceAgentMcpTool":"Azure.AI.Projects.VoiceAgentMcpTool","com.azure.ai.agents.models.VoiceAgentNoiseReduction":"Azure.AI.Projects.VoiceAgentNoiseReduction","com.azure.ai.agents.models.VoiceAgentNoiseReductionType":"Azure.AI.Projects.VoiceAgentNoiseReductionType","com.azure.ai.agents.models.VoiceAgentRealtimeResponse":"Azure.AI.Projects.VoiceAgentRealtimeResponse","com.azure.ai.agents.models.VoiceAgentRealtimeResponseBase":"Azure.AI.Projects.VoiceAgentRealtimeResponseBase","com.azure.ai.agents.models.VoiceAgentResponseCreateParams":"Azure.AI.Projects.VoiceAgentResponseCreateParams","com.azure.ai.agents.models.VoiceAgentResponseCreateParamsConversation":"Azure.AI.Projects.VoiceAgentResponseCreateParams.conversation.anonymous","com.azure.ai.agents.models.VoiceAgentRtcCallErrorDetails":"Azure.AI.Projects.VoiceAgentRtcCallErrorDetails","com.azure.ai.agents.models.VoiceAgentSemanticVadTurnDetection":"Azure.AI.Projects.VoiceAgentSemanticVadTurnDetection","com.azure.ai.agents.models.VoiceAgentSemanticVadTurnDetectionEagerness":"Azure.AI.Projects.VoiceAgentSemanticVadTurnDetection.eagerness.anonymous","com.azure.ai.agents.models.VoiceAgentServerEventResponseAnimationBlendshapesDelta":"Azure.AI.Projects.VoiceAgentServerEventResponseAnimationBlendshapesDelta","com.azure.ai.agents.models.VoiceAgentServerEventResponseAnimationBlendshapesDone":"Azure.AI.Projects.VoiceAgentServerEventResponseAnimationBlendshapesDone","com.azure.ai.agents.models.VoiceAgentServerEventResponseAnimationVisemeDelta":"Azure.AI.Projects.VoiceAgentServerEventResponseAnimationVisemeDelta","com.azure.ai.agents.models.VoiceAgentServerEventResponseAnimationVisemeDone":"Azure.AI.Projects.VoiceAgentServerEventResponseAnimationVisemeDone","com.azure.ai.agents.models.VoiceAgentServerEventResponseAudioTimestampDelta":"Azure.AI.Projects.VoiceAgentServerEventResponseAudioTimestampDelta","com.azure.ai.agents.models.VoiceAgentServerEventResponseAudioTimestampDone":"Azure.AI.Projects.VoiceAgentServerEventResponseAudioTimestampDone","com.azure.ai.agents.models.VoiceAgentServerEventResponseVideoDelta":"Azure.AI.Projects.VoiceAgentServerEventResponseVideoDelta","com.azure.ai.agents.models.VoiceAgentServerEventRtcCallError":"Azure.AI.Projects.VoiceAgentServerEventRtcCallError","com.azure.ai.agents.models.VoiceAgentServerEventRtcCallSdpCreated":"Azure.AI.Projects.VoiceAgentServerEventRtcCallSdpCreated","com.azure.ai.agents.models.VoiceAgentServerEventSessionAvatarConnecting":"Azure.AI.Projects.VoiceAgentServerEventSessionAvatarConnecting","com.azure.ai.agents.models.VoiceAgentServerEventSessionAvatarSwitchToIdle":"Azure.AI.Projects.VoiceAgentServerEventSessionAvatarSwitchToIdle","com.azure.ai.agents.models.VoiceAgentServerEventSessionAvatarSwitchToSpeaking":"Azure.AI.Projects.VoiceAgentServerEventSessionAvatarSwitchToSpeaking","com.azure.ai.agents.models.VoiceAgentServerEventSessionSubagentAborted":"Azure.AI.Projects.VoiceAgentServerEventSessionSubagentAborted","com.azure.ai.agents.models.VoiceAgentServerEventSessionSubagentCompleted":"Azure.AI.Projects.VoiceAgentServerEventSessionSubagentCompleted","com.azure.ai.agents.models.VoiceAgentServerEventSessionSubagentStarted":"Azure.AI.Projects.VoiceAgentServerEventSessionSubagentStarted","com.azure.ai.agents.models.VoiceAgentServerEventWarning":"Azure.AI.Projects.VoiceAgentServerEventWarning","com.azure.ai.agents.models.VoiceAgentServerEventWarningDetails":"Azure.AI.Projects.VoiceAgentServerEventWarningDetails","com.azure.ai.agents.models.VoiceAgentServerVadTurnDetection":"Azure.AI.Projects.VoiceAgentServerVadTurnDetection","com.azure.ai.agents.models.VoiceAgentSessionAvatarConfig":"Azure.AI.Projects.VoiceAgentSessionAvatarConfig","com.azure.ai.agents.models.VoiceAgentSessionIncludeOption":"Azure.AI.Projects.VoiceAgentSessionIncludeOption","com.azure.ai.agents.models.VoiceAgentSessionResponseConfig":"Azure.AI.Projects.VoiceAgentSessionResponseConfig","com.azure.ai.agents.models.VoiceAgentSessionUpdateConfig":"Azure.AI.Projects.VoiceAgentSessionUpdateConfig","com.azure.ai.agents.models.VoiceAgentStaticInterimResponseConfig":"Azure.AI.Projects.VoiceAgentStaticInterimResponseConfig","com.azure.ai.agents.models.VoiceAgentSubagent":"Azure.AI.Projects.VoiceAgentSubagent","com.azure.ai.agents.models.VoiceAgentSubagentAbortReason":"Azure.AI.Projects.VoiceAgentSubagentAbortReason","com.azure.ai.agents.models.VoiceAgentSubagentConfig":"Azure.AI.Projects.VoiceAgentSubagentConfig","com.azure.ai.agents.models.VoiceAgentSubagentResponsePolicy":"Azure.AI.Projects.VoiceAgentSubagentResponsePolicy","com.azure.ai.agents.models.VoiceAgentSystemTool":"Azure.AI.Projects.VoiceAgentSystemTool","com.azure.ai.agents.models.VoiceAgentSystemToolName":"Azure.AI.Projects.VoiceAgentSystemToolName","com.azure.ai.agents.models.VoiceAgentTemplateGreetingConfig":"Azure.AI.Projects.VoiceAgentTemplateGreetingConfig","com.azure.ai.agents.models.VoiceAgentTool":"Azure.AI.Projects.VoiceAgentTool","com.azure.ai.agents.models.VoiceAgentToolResponseScheduling":"Azure.AI.Projects.VoiceAgentToolResponseScheduling","com.azure.ai.agents.models.VoiceAgentToolboxTool":"Azure.AI.Projects.VoiceAgentToolboxTool","com.azure.ai.agents.models.VoiceAgentTranscriptionPhrase":"Azure.AI.Projects.VoiceAgentTranscriptionPhrase","com.azure.ai.agents.models.VoiceAgentTranscriptionWord":"Azure.AI.Projects.VoiceAgentTranscriptionWord","com.azure.ai.agents.models.VoiceAgentTransport":"Azure.AI.Projects.VoiceAgentTransport","com.azure.ai.agents.models.VoiceAgentTurnDetectionConfig":"Azure.AI.Projects.VoiceAgentTurnDetectionConfig","com.azure.ai.agents.models.VoiceAgentTurnDetectionType":"Azure.AI.Projects.VoiceAgentTurnDetectionType","com.azure.ai.agents.models.VoiceAudioCodec":"Azure.AI.Projects.VoiceAudioCodec","com.azure.ai.agents.models.VoiceAudioContainerFormat":"Azure.AI.Projects.VoiceAudioContainerFormat","com.azure.ai.agents.models.VoiceAudioRole":"Azure.AI.Projects.VoiceAudioRole","com.azure.ai.agents.models.VoiceConversation":"Azure.AI.Projects.VoiceConversation","com.azure.ai.agents.models.VoiceConversationEngine":"Azure.AI.Projects.VoiceConversationEngine","com.azure.ai.agents.models.VoiceConversationStatus":"Azure.AI.Projects.VoiceConversationStatus","com.azure.ai.agents.models.VoiceGeneratedItemAudioResponse":"Azure.AI.Projects.VoiceGeneratedItemAudioResponse","com.azure.ai.agents.models.VoiceHostedAgentConversationEngine":"Azure.AI.Projects.VoiceHostedAgentConversationEngine","com.azure.ai.agents.models.VoiceIdsShared":"OpenAI.VoiceIdsShared","com.azure.ai.agents.models.VoiceItemAudioResponse":"Azure.AI.Projects.VoiceItemAudioResponse","com.azure.ai.agents.models.VoiceModelType":"Azure.AI.Projects.VoiceModelType","com.azure.ai.agents.models.VoiceOutputModality":"Azure.AI.Projects.VoiceOutputModality","com.azure.ai.agents.models.VoiceRecordingChannelLayout":"Azure.AI.Projects.VoiceRecordingChannelLayout","com.azure.ai.agents.models.VoiceRecordingResponse":"Azure.AI.Projects.VoiceRecordingResponse","com.azure.ai.agents.models.VoiceResponse":"Azure.AI.Projects.VoiceResponse","com.azure.ai.agents.models.VoiceResponseAudio":"Azure.AI.Projects.VoiceResponseAudio","com.azure.ai.agents.models.VoiceResponseAudioOutput":"Azure.AI.Projects.VoiceResponseAudioOutput","com.azure.ai.agents.models.VoiceResponseBase":"Azure.AI.Projects.VoiceResponseBase","com.azure.ai.agents.models.VoiceResponseBaseObject":null,"com.azure.ai.agents.models.VoiceResponseBaseObject1":null,"com.azure.ai.agents.models.VoiceResponseBaseOutputModality":"Azure.AI.Projects.VoiceResponseBase.output_modality.anonymous","com.azure.ai.agents.models.VoiceResponseBaseStatus":"Azure.AI.Projects.VoiceResponseBase.status.anonymous","com.azure.ai.agents.models.VoiceType":"Azure.AI.Projects.VoiceType","com.azure.ai.agents.models.WebIqPreviewTool":"Azure.AI.Projects.WebIQPreviewTool","com.azure.ai.agents.models.WebIqPreviewToolboxTool":"Azure.AI.Projects.WebIQPreviewToolboxTool","com.azure.ai.agents.models.WebSearchApproximateLocation":"OpenAI.WebSearchApproximateLocation","com.azure.ai.agents.models.WebSearchConfiguration":"Azure.AI.Projects.WebSearchConfiguration","com.azure.ai.agents.models.WebSearchPreviewTool":"OpenAI.WebSearchPreviewTool","com.azure.ai.agents.models.WebSearchTool":"OpenAI.WebSearchTool","com.azure.ai.agents.models.WebSearchToolFilters":"OpenAI.WebSearchToolFilters","com.azure.ai.agents.models.WebSearchToolSearchContextSize":"WebSearchToolSearchContextSizeExpandable","com.azure.ai.agents.models.WebSearchToolboxTool":"Azure.AI.Projects.WebSearchToolboxTool","com.azure.ai.agents.models.WorkIqPreviewTool":"Azure.AI.Projects.WorkIQPreviewTool","com.azure.ai.agents.models.WorkIqPreviewToolboxTool":"Azure.AI.Projects.WorkIQPreviewToolboxTool","com.azure.ai.agents.models.WorkflowAgentDefinition":"Azure.AI.Projects.WorkflowAgentDefinition"},"generatedFiles":["src/main/java/com/azure/ai/agents/AgentTelephonyAsyncClient.java","src/main/java/com/azure/ai/agents/AgentTelephonyClient.java","src/main/java/com/azure/ai/agents/AgentsAsyncClient.java","src/main/java/com/azure/ai/agents/AgentsClient.java","src/main/java/com/azure/ai/agents/AgentsClientBuilder.java","src/main/java/com/azure/ai/agents/AgentsServiceVersion.java","src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsAsyncClient.java","src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsClient.java","src/main/java/com/azure/ai/agents/BetaAgentsAsyncClient.java","src/main/java/com/azure/ai/agents/BetaAgentsClient.java","src/main/java/com/azure/ai/agents/BetaMemoryStoresAsyncClient.java","src/main/java/com/azure/ai/agents/BetaMemoryStoresClient.java","src/main/java/com/azure/ai/agents/ToolboxesAsyncClient.java","src/main/java/com/azure/ai/agents/ToolboxesClient.java","src/main/java/com/azure/ai/agents/implementation/AgentTelephoniesImpl.java","src/main/java/com/azure/ai/agents/implementation/AgentsClientImpl.java","src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java","src/main/java/com/azure/ai/agents/implementation/BetaAgentEndpointConversationsImpl.java","src/main/java/com/azure/ai/agents/implementation/BetaAgentsImpl.java","src/main/java/com/azure/ai/agents/implementation/BetaMemoryStoresImpl.java","src/main/java/com/azure/ai/agents/implementation/JsonMergePatchHelper.java","src/main/java/com/azure/ai/agents/implementation/MultipartFormDataHelper.java","src/main/java/com/azure/ai/agents/implementation/OperationLocationPollingStrategy.java","src/main/java/com/azure/ai/agents/implementation/PollingUtils.java","src/main/java/com/azure/ai/agents/implementation/SyncOperationLocationPollingStrategy.java","src/main/java/com/azure/ai/agents/implementation/ToolboxesImpl.java","src/main/java/com/azure/ai/agents/implementation/models/AgentDefinitionOptInKeys.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentFromCodeContent.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentFromManifestRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentOptions.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentVersionFromManifestRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentVersionRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateMemoryRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateMemoryStoreRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateSessionRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateToolboxVersionRequest.java","src/main/java/com/azure/ai/agents/implementation/models/FoundryFeaturesOptInKeys.java","src/main/java/com/azure/ai/agents/implementation/models/GetMicrosoft365AppPackageRequest.java","src/main/java/com/azure/ai/agents/implementation/models/ListMemoriesRequest.java","src/main/java/com/azure/ai/agents/implementation/models/PublishAgentToMicrosoft365Request.java","src/main/java/com/azure/ai/agents/implementation/models/ReplaceTelephonyTransferTargetsRequest.java","src/main/java/com/azure/ai/agents/implementation/models/SearchMemoriesRequest.java","src/main/java/com/azure/ai/agents/implementation/models/TransferTelephonyCallRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateAgentFromManifestRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateAgentRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateMemoriesRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateMemoryRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateMemoryStoreRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateToolboxInput.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateToolboxRequest.java","src/main/java/com/azure/ai/agents/implementation/models/package-info.java","src/main/java/com/azure/ai/agents/implementation/package-info.java","src/main/java/com/azure/ai/agents/models/A2APreviewTool.java","src/main/java/com/azure/ai/agents/models/A2APreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/A2AProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/A2AProtocolVersion.java","src/main/java/com/azure/ai/agents/models/A2ATool.java","src/main/java/com/azure/ai/agents/models/A2AToolCall.java","src/main/java/com/azure/ai/agents/models/A2AToolCallOutput.java","src/main/java/com/azure/ai/agents/models/A2AToolboxTool.java","src/main/java/com/azure/ai/agents/models/AISearchIndexResource.java","src/main/java/com/azure/ai/agents/models/ActivityProtocolAccessBoundary.java","src/main/java/com/azure/ai/agents/models/ActivityProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/AgentBlueprintReference.java","src/main/java/com/azure/ai/agents/models/AgentBlueprintReferenceType.java","src/main/java/com/azure/ai/agents/models/AgentCard.java","src/main/java/com/azure/ai/agents/models/AgentCardSkill.java","src/main/java/com/azure/ai/agents/models/AgentDefinition.java","src/main/java/com/azure/ai/agents/models/AgentDetails.java","src/main/java/com/azure/ai/agents/models/AgentDetailsVersions.java","src/main/java/com/azure/ai/agents/models/AgentEndpointAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/AgentEndpointAuthorizationSchemeType.java","src/main/java/com/azure/ai/agents/models/AgentEndpointConfig.java","src/main/java/com/azure/ai/agents/models/AgentEndpointProtocol.java","src/main/java/com/azure/ai/agents/models/AgentIdentity.java","src/main/java/com/azure/ai/agents/models/AgentIdentityStatus.java","src/main/java/com/azure/ai/agents/models/AgentKind.java","src/main/java/com/azure/ai/agents/models/AgentObjectType.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationCandidate.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetCriterion.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetInput.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetInputType.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetItem.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationEvaluatorRef.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationInlineDatasetInput.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJob.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobInputs.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobListItem.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobProgress.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobResult.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationOptions.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationReferenceDatasetInput.java","src/main/java/com/azure/ai/agents/models/AgentReference.java","src/main/java/com/azure/ai/agents/models/AgentSessionResource.java","src/main/java/com/azure/ai/agents/models/AgentSessionStatus.java","src/main/java/com/azure/ai/agents/models/AgentState.java","src/main/java/com/azure/ai/agents/models/AgentStateSource.java","src/main/java/com/azure/ai/agents/models/AgentVersionDetails.java","src/main/java/com/azure/ai/agents/models/AgentVersionStatus.java","src/main/java/com/azure/ai/agents/models/ApiError.java","src/main/java/com/azure/ai/agents/models/ApplyPatchToolParameter.java","src/main/java/com/azure/ai/agents/models/ApproximateLocation.java","src/main/java/com/azure/ai/agents/models/AudioTranscription.java","src/main/java/com/azure/ai/agents/models/AudioTranscriptionModel.java","src/main/java/com/azure/ai/agents/models/AutoCodeInterpreterToolParameter.java","src/main/java/com/azure/ai/agents/models/AzureAISearchQueryType.java","src/main/java/com/azure/ai/agents/models/AzureAISearchTool.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolCall.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolCallOutput.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolResource.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/AzureCreateResponseDetails.java","src/main/java/com/azure/ai/agents/models/AzureCreateResponseOptions.java","src/main/java/com/azure/ai/agents/models/AzureFunctionBinding.java","src/main/java/com/azure/ai/agents/models/AzureFunctionDefinition.java","src/main/java/com/azure/ai/agents/models/AzureFunctionDefinitionDetails.java","src/main/java/com/azure/ai/agents/models/AzureFunctionStorageQueue.java","src/main/java/com/azure/ai/agents/models/AzureFunctionTool.java","src/main/java/com/azure/ai/agents/models/AzureFunctionToolCall.java","src/main/java/com/azure/ai/agents/models/AzureFunctionToolCallOutput.java","src/main/java/com/azure/ai/agents/models/AzureUserSecurityContext.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchConfiguration.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchPreviewTool.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchToolCall.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchToolCallOutput.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchToolParameters.java","src/main/java/com/azure/ai/agents/models/BingGroundingSearchConfiguration.java","src/main/java/com/azure/ai/agents/models/BingGroundingSearchToolParameters.java","src/main/java/com/azure/ai/agents/models/BingGroundingTool.java","src/main/java/com/azure/ai/agents/models/BingGroundingToolCall.java","src/main/java/com/azure/ai/agents/models/BingGroundingToolCallOutput.java","src/main/java/com/azure/ai/agents/models/BotServiceAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/BotServiceRbacAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/BotServiceTenantAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationPreviewTool.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolCall.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolCallOutput.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolConnectionParameters.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolParameters.java","src/main/java/com/azure/ai/agents/models/CallableToolAllowedCaller.java","src/main/java/com/azure/ai/agents/models/CaptureStructuredOutputsTool.java","src/main/java/com/azure/ai/agents/models/ChatSummaryMemoryItem.java","src/main/java/com/azure/ai/agents/models/CodeConfiguration.java","src/main/java/com/azure/ai/agents/models/CodeDependencyResolution.java","src/main/java/com/azure/ai/agents/models/CodeFileDetails.java","src/main/java/com/azure/ai/agents/models/CodeInterpreterTool.java","src/main/java/com/azure/ai/agents/models/CodeInterpreterToolboxTool.java","src/main/java/com/azure/ai/agents/models/ComputerEnvironment.java","src/main/java/com/azure/ai/agents/models/ComputerTool.java","src/main/java/com/azure/ai/agents/models/ComputerUsePreviewTool.java","src/main/java/com/azure/ai/agents/models/ContainerAutoParameter.java","src/main/java/com/azure/ai/agents/models/ContainerConfiguration.java","src/main/java/com/azure/ai/agents/models/ContainerMemoryLimit.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyAllowlistParameter.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyDisabledParameter.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyDomainSecretParameter.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyParamType.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyParameter.java","src/main/java/com/azure/ai/agents/models/ContainerSkill.java","src/main/java/com/azure/ai/agents/models/ContainerSkillType.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionFromCodeContent.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionFromCodeMetadata.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionInput.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionOptions.java","src/main/java/com/azure/ai/agents/models/CreateTeamsPhoneExtensionTelephonyBindingRequest.java","src/main/java/com/azure/ai/agents/models/CreateTelephonyBindingRequest.java","src/main/java/com/azure/ai/agents/models/CreateTelephonyCallJobRequest.java","src/main/java/com/azure/ai/agents/models/CreateTelephonyCampaignRequest.java","src/main/java/com/azure/ai/agents/models/CreateTranscriptionResponseJsonUsage.java","src/main/java/com/azure/ai/agents/models/CreateTranscriptionResponseJsonUsageType.java","src/main/java/com/azure/ai/agents/models/CreateTwilioTelephonyBindingRequest.java","src/main/java/com/azure/ai/agents/models/CustomGrammarFormatParameter.java","src/main/java/com/azure/ai/agents/models/CustomTextFormatParameter.java","src/main/java/com/azure/ai/agents/models/CustomToolParamFormat.java","src/main/java/com/azure/ai/agents/models/CustomToolParamFormatType.java","src/main/java/com/azure/ai/agents/models/CustomToolParameter.java","src/main/java/com/azure/ai/agents/models/DigitalWorkerType.java","src/main/java/com/azure/ai/agents/models/EntraAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/EvaluationLevel.java","src/main/java/com/azure/ai/agents/models/ExternalAgentDefinition.java","src/main/java/com/azure/ai/agents/models/FabricDataAgentToolCall.java","src/main/java/com/azure/ai/agents/models/FabricDataAgentToolCallOutput.java","src/main/java/com/azure/ai/agents/models/FabricDataAgentToolParameters.java","src/main/java/com/azure/ai/agents/models/FabricIqPreviewTool.java","src/main/java/com/azure/ai/agents/models/FabricIqPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/FileInputDetail.java","src/main/java/com/azure/ai/agents/models/FileSearchTool.java","src/main/java/com/azure/ai/agents/models/FileSearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/FixedRatioVersionSelectionRule.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParamEnvironment.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParamEnvironmentType.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParameter.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParameterEnvironmentContainerReferenceParameter.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParameterEnvironmentLocalEnvironmentParameter.java","src/main/java/com/azure/ai/agents/models/FunctionTool.java","src/main/java/com/azure/ai/agents/models/GetMicrosoft365AppPackageOptions.java","src/main/java/com/azure/ai/agents/models/GrammarSyntax.java","src/main/java/com/azure/ai/agents/models/HeaderTelemetryEndpointAuth.java","src/main/java/com/azure/ai/agents/models/HostedAgentDefinition.java","src/main/java/com/azure/ai/agents/models/HybridSearchOptions.java","src/main/java/com/azure/ai/agents/models/ImageDetail.java","src/main/java/com/azure/ai/agents/models/ImageGenActionEnum.java","src/main/java/com/azure/ai/agents/models/ImageGenTool.java","src/main/java/com/azure/ai/agents/models/ImageGenToolBackground.java","src/main/java/com/azure/ai/agents/models/ImageGenToolInputImageMask.java","src/main/java/com/azure/ai/agents/models/ImageGenToolModel.java","src/main/java/com/azure/ai/agents/models/ImageGenToolModeration.java","src/main/java/com/azure/ai/agents/models/ImageGenToolOutputFormat.java","src/main/java/com/azure/ai/agents/models/ImageGenToolQuality.java","src/main/java/com/azure/ai/agents/models/ImageGenToolSize.java","src/main/java/com/azure/ai/agents/models/ImportTelephonyCampaignRecipientsRequest.java","src/main/java/com/azure/ai/agents/models/IncludeEnum.java","src/main/java/com/azure/ai/agents/models/InlineSkillParameter.java","src/main/java/com/azure/ai/agents/models/InlineSkillSourceParameter.java","src/main/java/com/azure/ai/agents/models/InputFidelity.java","src/main/java/com/azure/ai/agents/models/InputFileContent.java","src/main/java/com/azure/ai/agents/models/InputImageContent.java","src/main/java/com/azure/ai/agents/models/InputTextContent.java","src/main/java/com/azure/ai/agents/models/InvocationsProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/InvocationsWsProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/JobStatus.java","src/main/java/com/azure/ai/agents/models/ListMemoriesOptions.java","src/main/java/com/azure/ai/agents/models/LocalShellToolParameter.java","src/main/java/com/azure/ai/agents/models/LocalSkillParameter.java","src/main/java/com/azure/ai/agents/models/LogProbProperties.java","src/main/java/com/azure/ai/agents/models/ManagedAgentIdentityBlueprintReference.java","src/main/java/com/azure/ai/agents/models/McpListToolsTool.java","src/main/java/com/azure/ai/agents/models/McpListToolsToolAnnotations.java","src/main/java/com/azure/ai/agents/models/McpListToolsToolInputSchema.java","src/main/java/com/azure/ai/agents/models/McpProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/McpTool.java","src/main/java/com/azure/ai/agents/models/McpToolConnectorId.java","src/main/java/com/azure/ai/agents/models/McpToolFilter.java","src/main/java/com/azure/ai/agents/models/McpToolRequireApproval.java","src/main/java/com/azure/ai/agents/models/McpToolboxTool.java","src/main/java/com/azure/ai/agents/models/MemoryCommandToolCall.java","src/main/java/com/azure/ai/agents/models/MemoryCommandToolCallOutput.java","src/main/java/com/azure/ai/agents/models/MemoryItem.java","src/main/java/com/azure/ai/agents/models/MemoryItemKind.java","src/main/java/com/azure/ai/agents/models/MemoryOperation.java","src/main/java/com/azure/ai/agents/models/MemoryOperationKind.java","src/main/java/com/azure/ai/agents/models/MemorySearchItem.java","src/main/java/com/azure/ai/agents/models/MemorySearchOptions.java","src/main/java/com/azure/ai/agents/models/MemorySearchPreviewTool.java","src/main/java/com/azure/ai/agents/models/MemorySearchToolCall.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDefaultDefinition.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDefaultOptions.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDefinition.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDetails.java","src/main/java/com/azure/ai/agents/models/MemoryStoreKind.java","src/main/java/com/azure/ai/agents/models/MemoryStoreObjectType.java","src/main/java/com/azure/ai/agents/models/MemoryStoreOperationUsage.java","src/main/java/com/azure/ai/agents/models/MemoryStoreSearchResponse.java","src/main/java/com/azure/ai/agents/models/MemoryStoreUpdateCompletedResult.java","src/main/java/com/azure/ai/agents/models/MemoryStoreUpdateResponse.java","src/main/java/com/azure/ai/agents/models/MemoryStoreUpdateStatus.java","src/main/java/com/azure/ai/agents/models/Microsoft365PermissionScopes.java","src/main/java/com/azure/ai/agents/models/Microsoft365PublishDefaults.java","src/main/java/com/azure/ai/agents/models/Microsoft365PublishResult.java","src/main/java/com/azure/ai/agents/models/Microsoft365PublishScope.java","src/main/java/com/azure/ai/agents/models/MicrosoftFabricPreviewTool.java","src/main/java/com/azure/ai/agents/models/ModelRouterAttempt.java","src/main/java/com/azure/ai/agents/models/ModelRouterAttemptError.java","src/main/java/com/azure/ai/agents/models/ModelRouterAttemptResult.java","src/main/java/com/azure/ai/agents/models/ModelRouterDetails.java","src/main/java/com/azure/ai/agents/models/ModelRouterMode.java","src/main/java/com/azure/ai/agents/models/ModelSelectionDetails.java","src/main/java/com/azure/ai/agents/models/NamespaceTool.java","src/main/java/com/azure/ai/agents/models/NoiseReductionType.java","src/main/java/com/azure/ai/agents/models/OpenApiAnonymousAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiAuthType.java","src/main/java/com/azure/ai/agents/models/OpenApiFunctionDefinition.java","src/main/java/com/azure/ai/agents/models/OpenApiFunctionDefinitionFunction.java","src/main/java/com/azure/ai/agents/models/OpenApiManagedAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiManagedSecurityScheme.java","src/main/java/com/azure/ai/agents/models/OpenApiProjectConnectionAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiProjectConnectionSecurityScheme.java","src/main/java/com/azure/ai/agents/models/OpenApiTool.java","src/main/java/com/azure/ai/agents/models/OpenApiToolCall.java","src/main/java/com/azure/ai/agents/models/OpenApiToolCallOutput.java","src/main/java/com/azure/ai/agents/models/OpenApiToolboxTool.java","src/main/java/com/azure/ai/agents/models/OptimizedAgentIdentifier.java","src/main/java/com/azure/ai/agents/models/OtlpTelemetryEndpoint.java","src/main/java/com/azure/ai/agents/models/PSTNTelephonyTransferDestination.java","src/main/java/com/azure/ai/agents/models/PageOrder.java","src/main/java/com/azure/ai/agents/models/PickPropertiesVoiceAgentAudioConfig.java","src/main/java/com/azure/ai/agents/models/ProceduralMemoryItem.java","src/main/java/com/azure/ai/agents/models/ProgrammaticToolCallingParameter.java","src/main/java/com/azure/ai/agents/models/PromotionInfo.java","src/main/java/com/azure/ai/agents/models/Prompt.java","src/main/java/com/azure/ai/agents/models/PromptAgentDefinition.java","src/main/java/com/azure/ai/agents/models/PromptAgentDefinitionTextOptions.java","src/main/java/com/azure/ai/agents/models/PromptCacheBreakpointConfig.java","src/main/java/com/azure/ai/agents/models/ProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/ProtocolVersionRecord.java","src/main/java/com/azure/ai/agents/models/PublishAgentToMicrosoft365Options.java","src/main/java/com/azure/ai/agents/models/PublishApprovalStatus.java","src/main/java/com/azure/ai/agents/models/PublishTelephonyCampaignRequest.java","src/main/java/com/azure/ai/agents/models/RaiConfig.java","src/main/java/com/azure/ai/agents/models/RaiInvocationContentType.java","src/main/java/com/azure/ai/agents/models/RaiInvocationMode.java","src/main/java/com/azure/ai/agents/models/RaiInvocationModeration.java","src/main/java/com/azure/ai/agents/models/RaiSseTextSelector.java","src/main/java/com/azure/ai/agents/models/RankerVersionType.java","src/main/java/com/azure/ai/agents/models/RankingOptions.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormats.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcm.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcmRate.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcma.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcmu.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsType.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEvent.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemCreate.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemDelete.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemRetrieve.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemTruncate.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferAppend.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferClear.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferCommit.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventOutputAudioBufferClear.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventResponseCancel.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventResponseCreate.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdate.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionModel.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionOutputModality.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionTruncation.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionTruncation1.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventType.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItem.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCall.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallOutput.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallOutputStatus.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallStatus.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessage.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistant.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantContent.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantContentType.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantStatus.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystem.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemContent.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemContentType.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemStatus.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageType.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUser.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContent.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContentDetail.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContentType.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserStatus.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemObject.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemType.java","src/main/java/com/azure/ai/agents/models/RealtimeFunctionTool.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPApprovalRequest.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPApprovalResponse.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPError.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPHttpError.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPListTools.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPProtocolError.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPToolCall.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPToolExecutionError.java","src/main/java/com/azure/ai/agents/models/RealtimeMcpErrorType.java","src/main/java/com/azure/ai/agents/models/RealtimeReasoning.java","src/main/java/com/azure/ai/agents/models/RealtimeReasoningEffort.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetails.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsError.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsReason.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsType.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseUsage.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageInputTokenDetails.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageInputTokenDetailsCachedTokensDetails.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageOutputTokenDetails.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEvent.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreatedConversation.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreatedConversationObject.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemAdded.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemCreated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemDeleted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionCompleted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionFailed.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionFailedError.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionSegment.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemRetrieved.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemTruncated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventErrorError.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferCleared.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferCommitted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferDtmfEventReceived.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferSpeechStarted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferSpeechStopped.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferTimeoutTriggered.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsCompleted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsFailed.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsInProgress.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferCleared.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferStarted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferStopped.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdatedRateLimits.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdatedRateLimitsName.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventRealtimeServerEventError.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioTranscriptDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioTranscriptDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAdded.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAddedPart.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAddedPartType.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDonePart.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDonePartType.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseCreated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseFunctionCallArgumentsDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseFunctionCallArgumentsDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallArgumentsDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallArgumentsDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallCompleted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallFailed.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallInProgress.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseOutputItemAdded.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseOutputItemDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseTextDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseTextDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventSessionCreated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventSessionUpdated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventType.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGA.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudio.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioInput.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioInputNoiseReduction.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioOutput.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioOutputVoice.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGATracing.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestUnion.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestUnionType.java","src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGA.java","src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudio.java","src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudioInput.java","src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction.java","src/main/java/com/azure/ai/agents/models/RealtimeTurnDetection.java","src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionSemanticVad.java","src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionServerVad.java","src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionType.java","src/main/java/com/azure/ai/agents/models/ReminderPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/ResponseFormatJsonSchemaInner.java","src/main/java/com/azure/ai/agents/models/ResponsePromptVariables.java","src/main/java/com/azure/ai/agents/models/ResponseUsageInputTokensDetails.java","src/main/java/com/azure/ai/agents/models/ResponseUsageOutputTokensDetails.java","src/main/java/com/azure/ai/agents/models/ResponsesProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/RoutingConfiguration.java","src/main/java/com/azure/ai/agents/models/RoutingTraceEntry.java","src/main/java/com/azure/ai/agents/models/SearchContentType.java","src/main/java/com/azure/ai/agents/models/SearchContextSize.java","src/main/java/com/azure/ai/agents/models/SessionAffinityConfiguration.java","src/main/java/com/azure/ai/agents/models/SessionAffinityDecision.java","src/main/java/com/azure/ai/agents/models/SessionAffinityDetails.java","src/main/java/com/azure/ai/agents/models/SessionAffinityMode.java","src/main/java/com/azure/ai/agents/models/SessionAffinityRequestMode.java","src/main/java/com/azure/ai/agents/models/SessionAffinitySource.java","src/main/java/com/azure/ai/agents/models/SessionConfiguration.java","src/main/java/com/azure/ai/agents/models/SessionDirectoryEntry.java","src/main/java/com/azure/ai/agents/models/SessionFileWriteResult.java","src/main/java/com/azure/ai/agents/models/SessionLogEvent.java","src/main/java/com/azure/ai/agents/models/SessionLogEventType.java","src/main/java/com/azure/ai/agents/models/SharepointGroundingToolCall.java","src/main/java/com/azure/ai/agents/models/SharepointGroundingToolCallOutput.java","src/main/java/com/azure/ai/agents/models/SharepointGroundingToolParameters.java","src/main/java/com/azure/ai/agents/models/SharepointPreviewTool.java","src/main/java/com/azure/ai/agents/models/ShellToolboxTool.java","src/main/java/com/azure/ai/agents/models/SipTelephonyTransferDestination.java","src/main/java/com/azure/ai/agents/models/SkillReferenceParameter.java","src/main/java/com/azure/ai/agents/models/StructuredInputDefinition.java","src/main/java/com/azure/ai/agents/models/StructuredOutputDefinition.java","src/main/java/com/azure/ai/agents/models/TeamsPhoneExtensionTelephonyBinding.java","src/main/java/com/azure/ai/agents/models/TeamsPhoneExtensionTelephonyBindingListItem.java","src/main/java/com/azure/ai/agents/models/TeamsTelephonyTransferDestination.java","src/main/java/com/azure/ai/agents/models/TelemetryConfig.java","src/main/java/com/azure/ai/agents/models/TelemetryDataKind.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpoint.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpointAuth.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpointAuthType.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpointKind.java","src/main/java/com/azure/ai/agents/models/TelemetryTransportProtocol.java","src/main/java/com/azure/ai/agents/models/TelephonyBinding.java","src/main/java/com/azure/ai/agents/models/TelephonyBindingListItem.java","src/main/java/com/azure/ai/agents/models/TelephonyBindingStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCallDurationBasis.java","src/main/java/com/azure/ai/agents/models/TelephonyCallJob.java","src/main/java/com/azure/ai/agents/models/TelephonyCallJobCancellation.java","src/main/java/com/azure/ai/agents/models/TelephonyCallJobSchedule.java","src/main/java/com/azure/ai/agents/models/TelephonyCallJobStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEvent.java","src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventName.java","src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventOutcome.java","src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventSource.java","src/main/java/com/azure/ai/agents/models/TelephonyCallPhase.java","src/main/java/com/azure/ai/agents/models/TelephonyCallRecord.java","src/main/java/com/azure/ai/agents/models/TelephonyCallStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCallSummary.java","src/main/java/com/azure/ai/agents/models/TelephonyCallTimestampSource.java","src/main/java/com/azure/ai/agents/models/TelephonyCallTiming.java","src/main/java/com/azure/ai/agents/models/TelephonyCallTrace.java","src/main/java/com/azure/ai/agents/models/TelephonyCallTraceMode.java","src/main/java/com/azure/ai/agents/models/TelephonyCallTraceStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaign.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignCallJobCounts.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignConfigurationStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignDuplicateHandling.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignExecutionStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImport.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportFormat.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportSource.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientMapping.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientMappingRequest.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignSchedule.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignScheduleType.java","src/main/java/com/azure/ai/agents/models/TelephonyOperation.java","src/main/java/com/azure/ai/agents/models/TelephonyOperationResource.java","src/main/java/com/azure/ai/agents/models/TelephonyOperationStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundDestination.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundDestinationType.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundFixedIntervalRetryPolicy.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundFixedIntervalRetryPolicyResponse.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicy.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicyResponse.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicyType.java","src/main/java/com/azure/ai/agents/models/TelephonyProvider.java","src/main/java/com/azure/ai/agents/models/TelephonyTransferDestination.java","src/main/java/com/azure/ai/agents/models/TelephonyTransferDestinationKind.java","src/main/java/com/azure/ai/agents/models/TelephonyTransferTarget.java","src/main/java/com/azure/ai/agents/models/TelephonyTransferTargets.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfiguration.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfigurationResponseFormatJsonObject.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfigurationResponseFormatText.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfigurationType.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatJsonSchema.java","src/main/java/com/azure/ai/agents/models/TokenLimits.java","src/main/java/com/azure/ai/agents/models/Tool.java","src/main/java/com/azure/ai/agents/models/ToolCallStatus.java","src/main/java/com/azure/ai/agents/models/ToolChoiceFunction.java","src/main/java/com/azure/ai/agents/models/ToolChoiceMCP.java","src/main/java/com/azure/ai/agents/models/ToolChoiceOptions.java","src/main/java/com/azure/ai/agents/models/ToolChoiceParam.java","src/main/java/com/azure/ai/agents/models/ToolChoiceParamType.java","src/main/java/com/azure/ai/agents/models/ToolConfig.java","src/main/java/com/azure/ai/agents/models/ToolProjectConnection.java","src/main/java/com/azure/ai/agents/models/ToolSearchExecutionType.java","src/main/java/com/azure/ai/agents/models/ToolSearchTool.java","src/main/java/com/azure/ai/agents/models/ToolSearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/ToolType.java","src/main/java/com/azure/ai/agents/models/ToolboxDetails.java","src/main/java/com/azure/ai/agents/models/ToolboxPolicies.java","src/main/java/com/azure/ai/agents/models/ToolboxSearchPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/ToolboxShellContainerAutoEnvironment.java","src/main/java/com/azure/ai/agents/models/ToolboxShellContainerReferenceEnvironment.java","src/main/java/com/azure/ai/agents/models/ToolboxShellEnvironment.java","src/main/java/com/azure/ai/agents/models/ToolboxShellNetworkPolicy.java","src/main/java/com/azure/ai/agents/models/ToolboxShellNetworkPolicyDisabled.java","src/main/java/com/azure/ai/agents/models/ToolboxSkill.java","src/main/java/com/azure/ai/agents/models/ToolboxSkillReference.java","src/main/java/com/azure/ai/agents/models/ToolboxTool.java","src/main/java/com/azure/ai/agents/models/ToolboxToolType.java","src/main/java/com/azure/ai/agents/models/ToolboxVersionDetails.java","src/main/java/com/azure/ai/agents/models/TranscriptTextUsageDuration.java","src/main/java/com/azure/ai/agents/models/TranscriptTextUsageTokens.java","src/main/java/com/azure/ai/agents/models/TranscriptTextUsageTokensInputTokenDetails.java","src/main/java/com/azure/ai/agents/models/TranscriptionLanguage.java","src/main/java/com/azure/ai/agents/models/TwilioTelephonyBinding.java","src/main/java/com/azure/ai/agents/models/TwilioTelephonyBindingListItem.java","src/main/java/com/azure/ai/agents/models/UpdateAgentDetailsOptions.java","src/main/java/com/azure/ai/agents/models/UpdateTelephonyBindingRequest.java","src/main/java/com/azure/ai/agents/models/UserProfileMemoryItem.java","src/main/java/com/azure/ai/agents/models/VersionIndicator.java","src/main/java/com/azure/ai/agents/models/VersionIndicatorType.java","src/main/java/com/azure/ai/agents/models/VersionRefIndicator.java","src/main/java/com/azure/ai/agents/models/VersionSelectionRule.java","src/main/java/com/azure/ai/agents/models/VersionSelector.java","src/main/java/com/azure/ai/agents/models/VersionSelectorType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAnimationConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAnimationOutputType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAudioConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfigTranscriptionDelay.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAudioOutputConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAudioTimestampType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarIceServer.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarOutputProtocol.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarScene.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoBackground.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoCrop.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoParams.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoResolution.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadEnTurnDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadMultilingualTurnDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadTurnDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentClientEventRtcCallSdpCreate.java","src/main/java/com/azure/ai/agents/models/VoiceAgentClientEventSessionAvatarConnect.java","src/main/java/com/azure/ai/agents/models/VoiceAgentDefinition.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEchoCancellation.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEchoCancellationReferenceSource.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEndConversationSystemTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetectionModel.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceThresholdLevel.java","src/main/java/com/azure/ai/agents/models/VoiceAgentFunctionTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentFunctionToolType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentGreetingConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscription.java","src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscriptionModel.java","src/main/java/com/azure/ai/agents/models/VoiceAgentInterimResponseConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentInterimResponseTrigger.java","src/main/java/com/azure/ai/agents/models/VoiceAgentLlmGeneratedGreetingConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentLlmInterimResponseConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentMcpTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReduction.java","src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReductionType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentRealtimeResponse.java","src/main/java/com/azure/ai/agents/models/VoiceAgentRealtimeResponseBase.java","src/main/java/com/azure/ai/agents/models/VoiceAgentResponseCreateParams.java","src/main/java/com/azure/ai/agents/models/VoiceAgentResponseCreateParamsConversation.java","src/main/java/com/azure/ai/agents/models/VoiceAgentRtcCallErrorDetails.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSemanticVadTurnDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSemanticVadTurnDetectionEagerness.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationBlendshapesDelta.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationBlendshapesDone.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationVisemeDelta.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationVisemeDone.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAudioTimestampDelta.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAudioTimestampDone.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseVideoDelta.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventRtcCallError.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventRtcCallSdpCreated.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarConnecting.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarSwitchToIdle.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarSwitchToSpeaking.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentAborted.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentCompleted.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentStarted.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventWarning.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventWarningDetails.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerVadTurnDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSessionAvatarConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSessionIncludeOption.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSessionResponseConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSessionUpdateConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentStaticInterimResponseConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSubagent.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentAbortReason.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentResponsePolicy.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSystemTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSystemToolName.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTemplateGreetingConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentToolResponseScheduling.java","src/main/java/com/azure/ai/agents/models/VoiceAgentToolboxTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTranscriptionPhrase.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTranscriptionWord.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTransport.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionType.java","src/main/java/com/azure/ai/agents/models/VoiceAudioCodec.java","src/main/java/com/azure/ai/agents/models/VoiceAudioContainerFormat.java","src/main/java/com/azure/ai/agents/models/VoiceAudioRole.java","src/main/java/com/azure/ai/agents/models/VoiceConversation.java","src/main/java/com/azure/ai/agents/models/VoiceConversationEngine.java","src/main/java/com/azure/ai/agents/models/VoiceConversationStatus.java","src/main/java/com/azure/ai/agents/models/VoiceGeneratedItemAudioResponse.java","src/main/java/com/azure/ai/agents/models/VoiceHostedAgentConversationEngine.java","src/main/java/com/azure/ai/agents/models/VoiceIdsShared.java","src/main/java/com/azure/ai/agents/models/VoiceItemAudioResponse.java","src/main/java/com/azure/ai/agents/models/VoiceModelType.java","src/main/java/com/azure/ai/agents/models/VoiceOutputModality.java","src/main/java/com/azure/ai/agents/models/VoiceRecordingChannelLayout.java","src/main/java/com/azure/ai/agents/models/VoiceRecordingResponse.java","src/main/java/com/azure/ai/agents/models/VoiceResponse.java","src/main/java/com/azure/ai/agents/models/VoiceResponseAudio.java","src/main/java/com/azure/ai/agents/models/VoiceResponseAudioOutput.java","src/main/java/com/azure/ai/agents/models/VoiceResponseBase.java","src/main/java/com/azure/ai/agents/models/VoiceResponseBaseObject.java","src/main/java/com/azure/ai/agents/models/VoiceResponseBaseObject1.java","src/main/java/com/azure/ai/agents/models/VoiceResponseBaseOutputModality.java","src/main/java/com/azure/ai/agents/models/VoiceResponseBaseStatus.java","src/main/java/com/azure/ai/agents/models/VoiceType.java","src/main/java/com/azure/ai/agents/models/WebIqPreviewTool.java","src/main/java/com/azure/ai/agents/models/WebIqPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/WebSearchApproximateLocation.java","src/main/java/com/azure/ai/agents/models/WebSearchConfiguration.java","src/main/java/com/azure/ai/agents/models/WebSearchPreviewTool.java","src/main/java/com/azure/ai/agents/models/WebSearchTool.java","src/main/java/com/azure/ai/agents/models/WebSearchToolFilters.java","src/main/java/com/azure/ai/agents/models/WebSearchToolSearchContextSize.java","src/main/java/com/azure/ai/agents/models/WebSearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/WorkIqPreviewTool.java","src/main/java/com/azure/ai/agents/models/WorkIqPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/WorkflowAgentDefinition.java","src/main/java/com/azure/ai/agents/models/package-info.java","src/main/java/com/azure/ai/agents/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveAudioConversationAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveAudioConversationAsyncSample.java new file mode 100644 index 0000000000000..3862d94c86e88 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveAudioConversationAsyncSample.java @@ -0,0 +1,248 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.voice; + +import com.azure.ai.agents.AgentsAsyncClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient; +import com.azure.ai.agents.BetaVoiceAgentWebSocketAsyncClient; +import com.azure.ai.agents.VoiceAgentWebSocketSessionAsyncClient; +import com.azure.ai.agents.models.CreateAgentVersionInput; +import com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionCompleted; +import com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferSpeechStarted; +import com.azure.ai.agents.models.RealtimeServerEventRealtimeServerEventError; +import com.azure.ai.agents.models.RealtimeServerEventResponseAudioDelta; +import com.azure.ai.agents.models.RealtimeServerEventResponseAudioTranscriptDone; +import com.azure.ai.agents.models.RealtimeServerEventResponseCreated; +import com.azure.ai.agents.models.RealtimeServerEventResponseDone; +import com.azure.ai.agents.models.RealtimeServerEventSessionCreated; +import com.azure.ai.agents.models.VoiceAgentDefinition; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import reactor.core.Disposable; +import reactor.core.publisher.Mono; +import reactor.core.scheduler.Schedulers; + +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.SourceDataLine; +import javax.sound.sampled.TargetDataLine; +import java.time.Duration; +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Scanner; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; + +/** + * Demonstrates an asynchronous hands-free voice conversation using Java Sound and server-side VAD. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • {@code FOUNDRY_PROJECT_ENDPOINT} - The Azure AI Project endpoint.
  • + *
  • {@code FOUNDRY_VOICE_AGENT_NAME} - Optional. The voice agent name. Defaults to + * {@code sample-live-audio-conversation-agent-async-java}.
  • + *
+ */ +public class VoiceAgentLiveAudioConversationAsyncSample { + private static final Duration SEND_TIMEOUT = Duration.ofSeconds(10); + + public static void main(String[] args) { + Configuration configuration = Configuration.getGlobalConfiguration(); + String endpoint = configuration.get("FOUNDRY_PROJECT_ENDPOINT"); + String agentName = configuration.get("FOUNDRY_VOICE_AGENT_NAME", + "sample-live-audio-conversation-agent-async-java"); + + AgentsClientBuilder builder = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .allowPreview(true); + AgentsAsyncClient agents = builder.buildAgentsAsyncClient(); + BetaVoiceAgentWebSocketAsyncClient realtime = builder.buildBetaVoiceAgentWebSocketAsyncClient(); + BetaAgentEndpointConversationsAsyncClient conversations + = builder.buildBetaAgentEndpointConversationsAsyncClient(); + + Map request = new LinkedHashMap<>(); + request.put("kind", "voice"); + request.put("name", agentName); + AtomicReference conversationId = new AtomicReference<>(); + + agents.generateAgent(BinaryData.fromObject(request)) + .flatMap(generated -> { + VoiceAgentDefinition definition + = (VoiceAgentDefinition) generated.getVersions().getLatest().getDefinition(); + return agents.createAgentVersion(agentName, + new CreateAgentVersionInput(definition.setStore(true))); + }) + .then(Mono.usingWhen(realtime.connect(agentName), + session -> runConversation(session, conversationId), + VoiceAgentWebSocketSessionAsyncClient::closeAsync, + (session, error) -> session.closeAsync(), + VoiceAgentWebSocketSessionAsyncClient::closeAsync)) + .then(Mono.defer(() -> conversationId.get() == null + ? Mono.fromRunnable(() -> System.out.println("No persisted conversation ID was returned.")) + : VoiceAgentRealtimeSampleUtils.readConversation(conversations, agentName, conversationId.get()))) + .then(agents.deleteAgent(agentName)) + .onErrorResume(error -> agents.deleteAgent(agentName) + .onErrorResume(cleanupError -> Mono.empty()) + .then(Mono.error(error))) + .doOnSuccess(ignored -> System.out.println("Deleted voice agent: " + agentName)) + .block(); + } + + private static Mono runConversation(VoiceAgentWebSocketSessionAsyncClient session, + AtomicReference conversationId) { + return Mono.using(() -> new AudioProcessor(session), processor -> { + processor.start(); + AtomicBoolean responseActive = new AtomicBoolean(); + Disposable receiver = session.receiveEvents().subscribe(event -> { + if (event instanceof RealtimeServerEventSessionCreated) { + String id = ((RealtimeServerEventSessionCreated) event).getConversationId(); + if (id != null) { + conversationId.set(id); + } + } else if (event instanceof RealtimeServerEventInputAudioBufferSpeechStarted) { + if (responseActive.get()) { + processor.skipPendingAudio(); + session.cancelResponse().onErrorResume(error -> Mono.empty()).subscribe(); + System.out.println("(listening...)"); + } + } else if (event instanceof RealtimeServerEventConversationItemInputAudioTranscriptionCompleted) { + System.out.println("You: " + + ((RealtimeServerEventConversationItemInputAudioTranscriptionCompleted) event) + .getTranscript().trim()); + } else if (event instanceof RealtimeServerEventResponseCreated) { + responseActive.set(true); + } else if (event instanceof RealtimeServerEventResponseDone) { + responseActive.set(false); + } else if (event instanceof RealtimeServerEventResponseAudioDelta) { + processor.queueAudio(((RealtimeServerEventResponseAudioDelta) event).getDelta()); + } else if (event instanceof RealtimeServerEventResponseAudioTranscriptDone) { + System.out.println("Agent: " + + ((RealtimeServerEventResponseAudioTranscriptDone) event).getTranscript()); + } else if (event instanceof RealtimeServerEventRealtimeServerEventError) { + RealtimeServerEventRealtimeServerEventError error + = (RealtimeServerEventRealtimeServerEventError) event; + System.out.println("Session error: " + error.getError().getMessage()); + } + }, error -> System.err.println("Realtime session ended: " + error.getMessage())); + System.out.println("Speak now; talk over the agent to interrupt it. Press Enter to end the session."); + return Mono.fromRunnable(() -> new Scanner(System.in).nextLine()) + .subscribeOn(Schedulers.boundedElastic()) + .doFinally(signal -> receiver.dispose()) + .then(); + }, AudioProcessor::close); + } + + private static final class AudioProcessor implements AutoCloseable { + private static final int CHUNK_BYTES = 2400; + private static final byte[] STOP = new byte[0]; + private final VoiceAgentWebSocketSessionAsyncClient session; + private final AudioFormat format = new AudioFormat(VoiceAgentRealtimeSampleUtils.SAMPLE_RATE, 16, 1, true, false); + private final BlockingQueue playback = new LinkedBlockingQueue<>(); + private final AtomicBoolean running = new AtomicBoolean(); + private TargetDataLine microphone; + private SourceDataLine speaker; + private Thread captureThread; + private Thread playbackThread; + + AudioProcessor(VoiceAgentWebSocketSessionAsyncClient session) { + this.session = session; + } + + void start() { + try { + microphone = AudioSystem.getTargetDataLine(format); + microphone.open(format, CHUNK_BYTES * 4); + speaker = AudioSystem.getSourceDataLine(format); + speaker.open(format); + microphone.start(); + speaker.start(); + } catch (LineUnavailableException | IllegalArgumentException error) { + close(); + throw new IllegalStateException("A 24-kHz mono PCM16 microphone and speaker are required.", error); + } + + running.set(true); + captureThread = new Thread(this::capture, "voice-agent-microphone"); + playbackThread = new Thread(this::playback, "voice-agent-speaker"); + captureThread.setDaemon(true); + playbackThread.setDaemon(true); + captureThread.start(); + playbackThread.start(); + } + + private void capture() { + byte[] buffer = new byte[CHUNK_BYTES]; + while (running.get()) { + int read = microphone.read(buffer, 0, buffer.length); + if (read > 0) { + try { + session.appendInputAudio(BinaryData.fromBytes(Arrays.copyOf(buffer, read))).block(SEND_TIMEOUT); + } catch (RuntimeException error) { + if (running.get()) { + System.err.println("Microphone upload stopped: " + error.getMessage()); + } + running.set(false); + } + } + } + } + + private void playback() { + try { + while (running.get()) { + byte[] pcm = playback.take(); + if (pcm == STOP) { + break; + } + speaker.write(pcm, 0, pcm.length); + } + } catch (InterruptedException error) { + Thread.currentThread().interrupt(); + } + } + + void queueAudio(byte[] pcm) { + if (pcm != null && pcm.length > 0) { + playback.offer(pcm); + } + } + + void skipPendingAudio() { + playback.clear(); + if (speaker != null) { + speaker.flush(); + } + } + + @Override + public void close() { + running.set(false); + playback.clear(); + playback.offer(STOP); + if (microphone != null) { + microphone.stop(); + microphone.close(); + microphone = null; + } + if (speaker != null) { + speaker.stop(); + speaker.close(); + speaker = null; + } + if (captureThread != null) { + captureThread.interrupt(); + } + if (playbackThread != null) { + playbackThread.interrupt(); + } + } + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveFunctionToolSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveFunctionToolSample.java new file mode 100644 index 0000000000000..ac7754883df99 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveFunctionToolSample.java @@ -0,0 +1,165 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.voice; + +import com.azure.ai.agents.AgentsClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.BetaVoiceAgentWebSocketClient; +import com.azure.ai.agents.VoiceAgentWebSocketSessionClient; +import com.azure.ai.agents.models.CreateAgentVersionInput; +import com.azure.ai.agents.models.RealtimeConversationItem; +import com.azure.ai.agents.models.RealtimeConversationItemType; +import com.azure.ai.agents.models.RealtimeServerEvent; +import com.azure.ai.agents.models.RealtimeServerEventRealtimeServerEventError; +import com.azure.ai.agents.models.RealtimeServerEventResponseDone; +import com.azure.ai.agents.models.RealtimeServerEventResponseFunctionCallArgumentsDone; +import com.azure.ai.agents.models.RealtimeServerEventResponseTextDone; +import com.azure.ai.agents.models.VoiceAgentDefinition; +import com.azure.ai.agents.models.VoiceAgentFunctionTool; +import com.azure.ai.agents.models.VoiceAgentTool; +import com.azure.ai.agents.models.VoiceModelType; +import com.azure.ai.agents.models.VoiceOutputModality; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; + +import java.time.Duration; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +/** + * Demonstrates executing a client-side function tool during a live voice-agent session. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • {@code FOUNDRY_PROJECT_ENDPOINT} - The Azure AI Project endpoint.
  • + *
  • {@code FOUNDRY_VOICE_AGENT_NAME} - Optional. The voice agent name. Defaults to + * {@code sample-voice-agent-function-tool-java}.
  • + *
  • {@code FOUNDRY_VOICE_MODEL} - Optional. The voice model. Defaults to {@code gpt-realtime}.
  • + *
  • {@code FOUNDRY_VOICE_MODEL_TYPE} - Optional. The voice model type. Defaults to {@code managed}.
  • + *
+ */ +public class VoiceAgentLiveFunctionToolSample { + private static final Duration RESPONSE_TIMEOUT = Duration.ofSeconds(45); + + public static void main(String[] args) { + Configuration configuration = Configuration.getGlobalConfiguration(); + String endpoint = configuration.get("FOUNDRY_PROJECT_ENDPOINT"); + String agentName = configuration.get("FOUNDRY_VOICE_AGENT_NAME", + "sample-voice-agent-function-tool-java"); + String model = configuration.get("FOUNDRY_VOICE_MODEL", "gpt-realtime"); + VoiceModelType modelType = VoiceModelType.fromString(configuration.get( + "FOUNDRY_VOICE_MODEL_TYPE", VoiceModelType.MANAGED.toString())); + + AgentsClientBuilder builder = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .allowPreview(true); + AgentsClient agents = builder.buildAgentsClient(); + BetaVoiceAgentWebSocketClient realtime = builder.buildBetaVoiceAgentWebSocketClient(); + + Map cityProperty = new LinkedHashMap<>(); + cityProperty.put("type", "string"); + cityProperty.put("description", "City name, for example Seattle."); + Map properties = new LinkedHashMap<>(); + properties.put("city", cityProperty); + Map schema = new LinkedHashMap<>(); + schema.put("type", "object"); + schema.put("properties", properties); + schema.put("required", Collections.singletonList("city")); + + VoiceAgentFunctionTool weatherTool = new VoiceAgentFunctionTool("get_weather") + .setDescription("Get the current weather for a city.") + .setParameters(BinaryData.fromObject(schema)); + VoiceAgentDefinition definition = new VoiceAgentDefinition() + .setModelType(modelType) + .setModel(model) + .setInstructions("Use the get_weather tool when asked about weather, then answer using its result.") + .setOutputModalities(Collections.singletonList(VoiceOutputModality.TEXT)) + .setTools(Collections.singletonList(weatherTool)); + + try { + agents.createAgentVersion(agentName, new CreateAgentVersionInput(definition)); + System.out.println("Created voice agent: " + agentName); + try (VoiceAgentWebSocketSessionClient session = realtime.connect(agentName)) { + ExecutorService receiver = Executors.newSingleThreadExecutor(); + Future response = receiver.submit(() -> receiveResponse(session)); + try { + session.sendText("What's the weather like in Seattle right now?"); + session.createResponse(); + response.get(RESPONSE_TIMEOUT.toMillis(), TimeUnit.MILLISECONDS); + } catch (TimeoutException error) { + System.out.println("Timed out waiting for the agent's reply; cancelling the active response."); + session.cancelResponse(); + } catch (InterruptedException error) { + Thread.currentThread().interrupt(); + } catch (java.util.concurrent.ExecutionException error) { + throw new IllegalStateException("The realtime receive loop failed.", error.getCause()); + } finally { + response.cancel(true); + receiver.shutdownNow(); + } + } + } finally { + agents.deleteAgent(agentName); + System.out.println("Deleted voice agent: " + agentName); + } + } + + private static void receiveResponse(VoiceAgentWebSocketSessionClient session) { + for (RealtimeServerEvent event : session.receiveEvents()) { + if (event instanceof RealtimeServerEventResponseFunctionCallArgumentsDone) { + RealtimeServerEventResponseFunctionCallArgumentsDone call + = (RealtimeServerEventResponseFunctionCallArgumentsDone) event; + session.sendFunctionCallOutput(call.getCallId(), executeTool(call)); + } else if (event instanceof RealtimeServerEventResponseTextDone) { + System.out.println("Agent: " + ((RealtimeServerEventResponseTextDone) event).getText()); + } else if (event instanceof RealtimeServerEventResponseDone) { + if (!containsFunctionCall((RealtimeServerEventResponseDone) event)) { + return; + } + } else if (event instanceof RealtimeServerEventRealtimeServerEventError) { + RealtimeServerEventRealtimeServerEventError error + = (RealtimeServerEventRealtimeServerEventError) event; + System.out.println("Session error: " + error.getError().getMessage()); + return; + } + } + } + + @SuppressWarnings("unchecked") + private static String executeTool(RealtimeServerEventResponseFunctionCallArgumentsDone call) { + Map arguments = BinaryData.fromString(call.getArguments()).toObject(Map.class); + System.out.printf("Tool call: %s(%s)%n", call.getName(), arguments); + Map result = new LinkedHashMap<>(); + if ("get_weather".equals(call.getName())) { + result.put("city", arguments.get("city")); + result.put("condition", "sunny"); + result.put("temperature_f", 72); + } else { + result.put("error", "Unknown tool: " + call.getName()); + } + return BinaryData.fromObject(result).toString(); + } + + private static boolean containsFunctionCall(RealtimeServerEventResponseDone event) { + List output = event.getResponse().getOutput(); + if (output == null) { + return false; + } + for (RealtimeConversationItem item : output) { + if (item.getType() == RealtimeConversationItemType.FUNCTION_CALL) { + return true; + } + } + return false; + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationAsyncSample.java new file mode 100644 index 0000000000000..9f98e870dcf08 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationAsyncSample.java @@ -0,0 +1,142 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.voice; + +import com.azure.ai.agents.AgentsAsyncClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient; +import com.azure.ai.agents.BetaVoiceAgentWebSocketAsyncClient; +import com.azure.ai.agents.VoiceAgentWebSocketSessionAsyncClient; +import com.azure.ai.agents.models.CreateAgentVersionInput; +import com.azure.ai.agents.models.VoiceAgentDefinition; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import reactor.core.Disposable; +import reactor.core.publisher.Mono; +import reactor.core.publisher.Sinks; +import reactor.core.scheduler.Schedulers; + +import java.time.Duration; +import java.util.LinkedHashMap; +import java.util.Locale; +import java.util.Map; +import java.util.Scanner; +import java.util.concurrent.atomic.AtomicReference; + +/** + * Demonstrates an asynchronous, typed, multi-turn realtime conversation with a persisted voice agent. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • {@code FOUNDRY_PROJECT_ENDPOINT} - The Azure AI Project endpoint.
  • + *
  • {@code FOUNDRY_VOICE_AGENT_NAME} - Optional. The voice agent name. Defaults to + * {@code sample-live-text-conversation-agent-async-java}.
  • + *
+ */ +public class VoiceAgentLiveTextConversationAsyncSample { + private static final Duration RESPONSE_TIMEOUT = Duration.ofSeconds(45); + + public static void main(String[] args) { + Configuration configuration = Configuration.getGlobalConfiguration(); + String endpoint = configuration.get("FOUNDRY_PROJECT_ENDPOINT"); + String agentName = configuration.get("FOUNDRY_VOICE_AGENT_NAME", + "sample-live-text-conversation-agent-async-java"); + + AgentsClientBuilder builder = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .allowPreview(true); + AgentsAsyncClient agents = builder.buildAgentsAsyncClient(); + BetaVoiceAgentWebSocketAsyncClient realtime = builder.buildBetaVoiceAgentWebSocketAsyncClient(); + BetaAgentEndpointConversationsAsyncClient conversations + = builder.buildBetaAgentEndpointConversationsAsyncClient(); + + Map request = new LinkedHashMap<>(); + request.put("kind", "voice"); + request.put("name", agentName); + + AtomicReference conversationId = new AtomicReference<>(); + VoiceAgentRealtimeSampleUtils.SpeakerPlayer player = new VoiceAgentRealtimeSampleUtils.SpeakerPlayer(); + Scanner scanner = new Scanner(System.in); + + agents.generateAgent(BinaryData.fromObject(request)) + .flatMap(generated -> { + VoiceAgentDefinition definition + = (VoiceAgentDefinition) generated.getVersions().getLatest().getDefinition(); + return agents.createAgentVersion(agentName, + new CreateAgentVersionInput(definition.setStore(true))); + }) + .then(Mono.usingWhen(realtime.connect(agentName), + session -> runConversation(session, scanner, conversationId, player), + VoiceAgentWebSocketSessionAsyncClient::closeAsync, + (session, error) -> session.closeAsync(), + VoiceAgentWebSocketSessionAsyncClient::closeAsync)) + .then(Mono.defer(() -> conversationId.get() == null + ? Mono.fromRunnable(() -> System.out.println("No persisted conversation ID was returned.")) + : VoiceAgentRealtimeSampleUtils.readConversation(conversations, agentName, conversationId.get()))) + .then(agents.deleteAgent(agentName)) + .doOnSuccess(ignored -> System.out.println("Deleted voice agent: " + agentName)) + .onErrorResume(error -> agents.deleteAgent(agentName) + .onErrorResume(cleanupError -> Mono.empty()) + .then(Mono.error(error))) + .doFinally(signal -> { + scanner.close(); + player.close(); + }) + .block(); + } + + private static Mono runConversation(VoiceAgentWebSocketSessionAsyncClient session, Scanner scanner, + AtomicReference conversationId, VoiceAgentRealtimeSampleUtils.SpeakerPlayer player) { + AtomicReference> responseCompleted = new AtomicReference<>(); + Disposable receiver = session.receiveEvents().subscribe(event -> { + if (VoiceAgentRealtimeSampleUtils.handleResponseEvent(event, conversationId, player)) { + Sinks.One completion = responseCompleted.getAndSet(null); + if (completion != null) { + completion.tryEmitEmpty(); + } + } + }, error -> { + Sinks.One completion = responseCompleted.getAndSet(null); + if (completion != null) { + completion.tryEmitError(error); + } + }); + + System.out.println("Type a message and press Enter. Blank line (or 'exit') ends the session."); + return prompt(session, scanner, responseCompleted) + .doFinally(signal -> { + receiver.dispose(); + System.out.printf("(received %.2fs of reply audio%s)%n", player.getSecondsReceived(), + player.isEnabled() ? " and played it" : ""); + }); + } + + private static Mono prompt(VoiceAgentWebSocketSessionAsyncClient session, Scanner scanner, + AtomicReference> responseCompleted) { + return Mono.fromCallable(() -> { + System.out.print("You: "); + return scanner.nextLine().trim(); + }).subscribeOn(Schedulers.boundedElastic()).flatMap(text -> { + String normalized = text.toLowerCase(Locale.ROOT); + if (text.isEmpty() || "exit".equals(normalized) || "quit".equals(normalized)) { + return Mono.empty(); + } + + Sinks.One completion = Sinks.one(); + responseCompleted.set(completion); + return session.sendText(text) + .then(session.createResponse()) + .then(completion.asMono().timeout(RESPONSE_TIMEOUT)) + .onErrorResume(java.util.concurrent.TimeoutException.class, error -> { + System.out.println("Timed out waiting for the agent's reply; cancelling the active response."); + return session.cancelResponse() + .then(completion.asMono().timeout(Duration.ofSeconds(10))) + .onErrorResume(cancelError -> Mono.empty()); + }) + .then(Mono.defer(() -> prompt(session, scanner, responseCompleted))); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationSample.java new file mode 100644 index 0000000000000..834fb84655813 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationSample.java @@ -0,0 +1,155 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.voice; + +import com.azure.ai.agents.AgentsClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.BetaAgentEndpointConversationsClient; +import com.azure.ai.agents.BetaVoiceAgentWebSocketClient; +import com.azure.ai.agents.VoiceAgentWebSocketSessionClient; +import com.azure.ai.agents.models.AgentDetails; +import com.azure.ai.agents.models.AgentVersionDetails; +import com.azure.ai.agents.models.CreateAgentVersionInput; +import com.azure.ai.agents.models.RealtimeServerEvent; +import com.azure.ai.agents.models.VoiceAgentDefinition; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; + +import java.time.Duration; +import java.util.LinkedHashMap; +import java.util.Locale; +import java.util.Map; +import java.util.Scanner; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.concurrent.atomic.AtomicReference; + +/** + * Demonstrates a synchronous, typed, multi-turn realtime conversation with a persisted voice agent. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • {@code FOUNDRY_PROJECT_ENDPOINT} - The Azure AI Project endpoint.
  • + *
  • {@code FOUNDRY_VOICE_AGENT_NAME} - Optional. The voice agent name. Defaults to + * {@code sample-live-text-conversation-agent-java}.
  • + *
+ */ +public class VoiceAgentLiveTextConversationSample { + private static final Duration RESPONSE_TIMEOUT = Duration.ofSeconds(45); + + public static void main(String[] args) { + Configuration configuration = Configuration.getGlobalConfiguration(); + String endpoint = configuration.get("FOUNDRY_PROJECT_ENDPOINT"); + String agentName = configuration.get("FOUNDRY_VOICE_AGENT_NAME", + "sample-live-text-conversation-agent-java"); + + AgentsClientBuilder builder = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .allowPreview(true); + AgentsClient agents = builder.buildAgentsClient(); + BetaVoiceAgentWebSocketClient realtime = builder.buildBetaVoiceAgentWebSocketClient(); + BetaAgentEndpointConversationsClient conversations = builder.buildBetaAgentEndpointConversationsClient(); + + Map request = new LinkedHashMap<>(); + request.put("kind", "voice"); + request.put("name", agentName); + AgentDetails generated = agents.generateAgent(BinaryData.fromObject(request)); + + try { + AgentVersionDetails latest = generated.getVersions().getLatest(); + VoiceAgentDefinition definition = (VoiceAgentDefinition) latest.getDefinition(); + agents.createAgentVersion(agentName, new CreateAgentVersionInput(definition.setStore(true))); + + AtomicReference conversationId = new AtomicReference<>(); + try (VoiceAgentRealtimeSampleUtils.SpeakerPlayer player + = new VoiceAgentRealtimeSampleUtils.SpeakerPlayer(); + VoiceAgentWebSocketSessionClient session = realtime.connect(agentName); + Scanner scanner = new Scanner(System.in)) { + AtomicReference> responseCompleted = new AtomicReference<>(); + ExecutorService receiver = Executors.newSingleThreadExecutor(); + receiver.submit(() -> { + try { + for (RealtimeServerEvent event : session.receiveEvents()) { + if (VoiceAgentRealtimeSampleUtils.handleResponseEvent(event, conversationId, player)) { + CompletableFuture completion = responseCompleted.getAndSet(null); + if (completion != null) { + completion.complete(null); + } + } + } + } catch (RuntimeException error) { + CompletableFuture completion = responseCompleted.getAndSet(null); + if (completion != null) { + completion.completeExceptionally(error); + } + } + }); + + try { + System.out.println("Type a message and press Enter. Blank line (or 'exit') ends the session."); + while (true) { + System.out.print("You: "); + String prompt = scanner.nextLine().trim(); + String normalized = prompt.toLowerCase(Locale.ROOT); + if (prompt.isEmpty() || "exit".equals(normalized) || "quit".equals(normalized)) { + break; + } + + CompletableFuture completion = new CompletableFuture<>(); + responseCompleted.set(completion); + session.sendText(prompt); + session.createResponse(); + if (!awaitResponse(session, completion)) { + break; + } + } + } finally { + receiver.shutdownNow(); + } + System.out.printf("(received %.2fs of reply audio%s)%n", player.getSecondsReceived(), + player.isEnabled() ? " and played it" : ""); + } + + if (conversationId.get() != null) { + VoiceAgentRealtimeSampleUtils.readConversation(conversations, agentName, conversationId.get()); + } else { + System.out.println("No persisted conversation ID was returned."); + } + } finally { + agents.deleteAgent(agentName); + System.out.println("Deleted voice agent: " + agentName); + } + } + + private static boolean awaitResponse(VoiceAgentWebSocketSessionClient session, + CompletableFuture completion) { + try { + completion.get(RESPONSE_TIMEOUT.toMillis(), TimeUnit.MILLISECONDS); + return true; + } catch (TimeoutException error) { + System.out.println("Timed out waiting for the agent's reply; cancelling the active response."); + session.cancelResponse(); + try { + completion.get(10, TimeUnit.SECONDS); + return true; + } catch (InterruptedException interrupted) { + Thread.currentThread().interrupt(); + return false; + } catch (ExecutionException | TimeoutException ignored) { + return false; + } + } catch (InterruptedException error) { + Thread.currentThread().interrupt(); + return false; + } catch (ExecutionException error) { + throw new IllegalStateException("The realtime receive loop failed.", error.getCause()); + } + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentRealtimeSampleUtils.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentRealtimeSampleUtils.java new file mode 100644 index 0000000000000..5176cfeea851e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentRealtimeSampleUtils.java @@ -0,0 +1,152 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.voice; + +import com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient; +import com.azure.ai.agents.BetaAgentEndpointConversationsClient; +import com.azure.ai.agents.models.RealtimeServerEvent; +import com.azure.ai.agents.models.RealtimeServerEventRealtimeServerEventError; +import com.azure.ai.agents.models.RealtimeServerEventResponseAudioDelta; +import com.azure.ai.agents.models.RealtimeServerEventResponseAudioTranscriptDone; +import com.azure.ai.agents.models.RealtimeServerEventResponseDone; +import com.azure.ai.agents.models.RealtimeServerEventSessionCreated; +import com.azure.ai.agents.models.VoiceConversation; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.util.BinaryData; +import reactor.core.publisher.Mono; + +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.SourceDataLine; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; + +final class VoiceAgentRealtimeSampleUtils { + static final int SAMPLE_RATE = 24000; + + private VoiceAgentRealtimeSampleUtils() { + } + + static boolean handleResponseEvent(RealtimeServerEvent event, AtomicReference conversationId, + SpeakerPlayer player) { + if (event instanceof RealtimeServerEventSessionCreated) { + String id = ((RealtimeServerEventSessionCreated) event).getConversationId(); + if (id != null) { + conversationId.set(id); + } + } else if (event instanceof RealtimeServerEventResponseAudioDelta) { + player.play(((RealtimeServerEventResponseAudioDelta) event).getDelta()); + } else if (event instanceof RealtimeServerEventResponseAudioTranscriptDone) { + System.out.println("Agent: " + + ((RealtimeServerEventResponseAudioTranscriptDone) event).getTranscript()); + } else if (event instanceof RealtimeServerEventRealtimeServerEventError) { + RealtimeServerEventRealtimeServerEventError error + = (RealtimeServerEventRealtimeServerEventError) event; + System.out.println("Session error: " + error.getError().getMessage()); + return true; + } + return event instanceof RealtimeServerEventResponseDone; + } + + static void readConversation(BetaAgentEndpointConversationsClient conversations, String agentName, + String conversationId) { + VoiceConversation conversation = conversations.getAgentConversation(agentName, conversationId); + System.out.printf("Conversation %s: status=%s, created=%s%n", conversation.getId(), + conversation.getStatus(), conversation.getCreatedAt()); + for (BinaryData item : conversations.listAgentConversationItems(agentName, conversationId, + new RequestOptions())) { + printConversationItem(item); + } + } + + static Mono readConversation(BetaAgentEndpointConversationsAsyncClient conversations, String agentName, + String conversationId) { + return conversations.getAgentConversation(agentName, conversationId) + .doOnNext(conversation -> System.out.printf("Conversation %s: status=%s, created=%s%n", + conversation.getId(), conversation.getStatus(), conversation.getCreatedAt())) + .thenMany(conversations.listAgentConversationItems(agentName, conversationId, new RequestOptions())) + .doOnNext(VoiceAgentRealtimeSampleUtils::printConversationItem) + .then(); + } + + @SuppressWarnings("unchecked") + private static void printConversationItem(BinaryData itemData) { + Map item = itemData.toObject(Map.class); + System.out.printf(" - %s id=%s%n", item.get("role") == null ? item.get("type") : item.get("role"), + item.get("id")); + Object contentValue = item.get("content"); + if (!(contentValue instanceof List)) { + return; + } + StringBuilder transcript = new StringBuilder(); + for (Object partValue : (List) contentValue) { + if (partValue instanceof Map) { + Map part = (Map) partValue; + Object text = part.get("transcript") == null ? part.get("text") : part.get("transcript"); + if (text != null && !text.toString().trim().isEmpty()) { + if (transcript.length() > 0) { + transcript.append(' '); + } + transcript.append(text.toString().trim()); + } + } + } + if (transcript.length() > 0) { + System.out.println(" " + transcript); + } + } + + static final class SpeakerPlayer implements AutoCloseable { + private SourceDataLine line; + private long bytesReceived; + + SpeakerPlayer() { + AudioFormat format = new AudioFormat(SAMPLE_RATE, 16, 1, true, false); + try { + line = AudioSystem.getSourceDataLine(format); + line.open(format); + line.start(); + } catch (LineUnavailableException | IllegalArgumentException error) { + line = null; + System.out.println("(speaker playback unavailable; audio will be counted but not played)"); + } + } + + synchronized void play(byte[] pcm) { + if (pcm == null) { + return; + } + bytesReceived += pcm.length; + if (line != null) { + line.write(pcm, 0, pcm.length); + } + } + + synchronized void discardQueuedAudio() { + if (line != null) { + line.flush(); + } + } + + double getSecondsReceived() { + return bytesReceived / 2.0 / SAMPLE_RATE; + } + + boolean isEnabled() { + return line != null; + } + + @Override + public synchronized void close() { + if (line != null) { + line.drain(); + line.stop(); + line.close(); + line = null; + } + } + } +} diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/VoiceAgentWebSocketSessionTests.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/VoiceAgentWebSocketSessionTests.java new file mode 100644 index 0000000000000..d978f2e15107a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/VoiceAgentWebSocketSessionTests.java @@ -0,0 +1,367 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents; + +import com.azure.ai.agents.implementation.realtime.VoiceAgentWebSocketClientConfiguration; +import com.azure.ai.agents.models.RealtimeServerEvent; +import com.azure.ai.agents.models.VoiceAgentServerEventWarning; +import com.azure.ai.agents.models.VoiceAgentTransport; +import com.azure.ai.agents.models.VoiceAgentWebSocketConnectionOptions; +import com.azure.core.credential.AccessToken; +import com.azure.core.credential.TokenCredential; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.http.HttpHeaders; +import com.azure.core.util.BinaryData; +import com.azure.core.util.ClientOptions; +import com.azure.core.util.Configuration; +import com.azure.core.util.Header; +import io.netty.handler.codec.http.HttpHeaderNames; +import io.netty.handler.codec.http.HttpResponseStatus; +import io.netty.handler.codec.http.websocketx.BinaryWebSocketFrame; +import io.netty.handler.codec.http.websocketx.ContinuationWebSocketFrame; +import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; +import io.netty.handler.codec.http.websocketx.WebSocketFrame; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.netty.DisposableServer; +import reactor.netty.http.Http11SslContextSpec; +import reactor.netty.http.client.HttpClient; +import reactor.netty.http.server.HttpServer; +import reactor.netty.http.server.WebsocketServerSpec; +import reactor.test.StepVerifier; + +import java.io.File; +import java.net.URI; +import java.net.URL; +import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; +import java.nio.file.Paths; +import java.time.OffsetDateTime; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class VoiceAgentWebSocketSessionTests { + private DisposableServer server; + + @AfterEach + public void disposeServer() { + if (server != null) { + server.disposeNow(); + } + } + + @Test + public void asyncSessionNegotiatesHandshakeAndExchangesTypedEvents() { + List clientMessages = new CopyOnWriteArrayList<>(); + AtomicReference requestUri = new AtomicReference<>(); + AtomicReference authorization = new AtomicReference<>(); + AtomicReference foundryFeatures = new AtomicReference<>(); + AtomicReference userAgent = new AtomicReference<>(); + server = startServer(clientMessages, requestUri, authorization, foundryFeatures, userAgent, false); + AtomicReference> requestedScopes = new AtomicReference<>(); + TokenCredential credential = request -> { + requestedScopes.set(request.getScopes()); + return Mono.just(new AccessToken("test-token", OffsetDateTime.now().plusHours(1))); + }; + VoiceAgentWebSocketConnectionOptions options + = new VoiceAgentWebSocketConnectionOptions().setTransport(VoiceAgentTransport.WEBSOCKET) + .setStoreEnabled(true) + .setAgentVersionOverride("version 2"); + BetaVoiceAgentWebSocketAsyncClient client + = new AgentsClientBuilder().endpoint("http://127.0.0.1:" + server.port() + "/api/projects/project") + .credential(credential) + .configuration(Configuration.NONE) + .clientOptions(new ClientOptions().setApplicationId("test-app") + .setHeaders(Collections.singletonList(new Header("X-Test-Header", "test-value")))) + .beta() + .buildBetaVoiceAgentWebSocketAsyncClient(); + + VoiceAgentWebSocketSessionAsyncClient session = client.connect("agent name", options).block(); + assertTrue(session.isOpen()); + + StepVerifier.create(session.receiveEvents().take(4)) + .then(() -> session.sendText("hello").block()) + .assertNext(this::assertWarningEvent) + .then(() -> session.appendInputAudio(BinaryData.fromBytes(new byte[] { 1, 2, 3 })).block()) + .assertNext(this::assertWarningEvent) + .then(() -> session.createResponse().block()) + .assertNext(this::assertWarningEvent) + .then(() -> session.cancelResponse("response-1").block()) + .assertNext(this::assertWarningEvent) + .verifyComplete(); + + assertEquals(Collections.singletonList("https://ai.azure.com/.default"), requestedScopes.get()); + assertEquals("Bearer test-token", authorization.get()); + assertEquals("VoiceAgents=V1Preview", foundryFeatures.get()); + assertTrue(userAgent.get().startsWith("test-app azsdk-java-")); + String decodedUri = decode(requestUri.get()); + assertTrue(decodedUri.contains("/agents/agent name/endpoint/protocols/voice")); + assertTrue(decodedUri.contains("api-version=v1")); + assertTrue(decodedUri.contains("transport=websocket")); + assertTrue(decodedUri.contains("store=true")); + assertTrue(decodedUri.contains("x-agent-version-override=version 2")); + assertTrue(decodedUri.contains("x-ms-client-sdk=test-app azsdk-java-")); + assertEquals(4, clientMessages.size()); + assertTrue(clientMessages.get(0).contains("\"type\":\"conversation.item.create\"")); + assertTrue(clientMessages.get(0).contains("\"role\":\"user\"")); + assertTrue(clientMessages.get(0).contains("\"text\":\"hello\"")); + assertTrue(clientMessages.get(1).contains("\"audio\":\"AQID\"")); + assertTrue(clientMessages.get(2).contains("\"type\":\"response.create\"")); + assertTrue(clientMessages.get(3).contains("\"response_id\":\"response-1\"")); + + StepVerifier.create(session.receiveEvents()) + .expectErrorMatches( + error -> error instanceof IllegalStateException && error.getMessage().contains("Only one")) + .verify(); + session.close(); + assertFalse(session.isOpen()); + } + + @Test + public void tokenFailureOccursBeforeNetworkAccess() { + AtomicBoolean connected = new AtomicBoolean(); + server = HttpServer.create().host("127.0.0.1").port(0).handle((request, response) -> { + connected.set(true); + return response.send(); + }).bindNow(); + TokenCredential credential = request -> Mono.error(new IllegalStateException("token unavailable")); + BetaVoiceAgentWebSocketAsyncClient client + = new AgentsClientBuilder().endpoint("http://127.0.0.1:" + server.port() + "/api/projects/project") + .credential(credential) + .configuration(Configuration.NONE) + .buildBetaVoiceAgentWebSocketAsyncClient(); + + StepVerifier.create(client.connect("agent")) + .expectErrorMatches( + error -> error instanceof IllegalStateException && error.getMessage().contains("token unavailable")) + .verify(); + assertFalse(connected.get()); + } + + @Test + public void rejectedHandshakeMapsConflictToAzureException() { + server = HttpServer.create() + .host("127.0.0.1") + .port(0) + .handle( + (request, response) -> response.status(HttpResponseStatus.CONFLICT).sendString(Mono.just("conflict"))) + .bindNow(); + TokenCredential credential + = request -> Mono.just(new AccessToken("test-token", OffsetDateTime.now().plusHours(1))); + BetaVoiceAgentWebSocketAsyncClient client + = new AgentsClientBuilder().endpoint("http://127.0.0.1:" + server.port() + "/api/projects/project") + .credential(credential) + .configuration(Configuration.NONE) + .buildBetaVoiceAgentWebSocketAsyncClient(); + + StepVerifier.create(client.connect("disabled-agent")).expectErrorSatisfies(error -> { + ResourceModifiedException exception = assertInstanceOf(ResourceModifiedException.class, error); + assertEquals(409, exception.getResponse().getStatusCode()); + }).verify(); + } + + @Test + public void unknownEventFallsBackToRealtimeServerEvent() { + server = oneShotWebSocketServer("{\"type\":\"future.event\",\"value\":42}"); + VoiceAgentWebSocketSessionAsyncClient session = createAsyncClient(server.port()).connect("agent").block(); + + StepVerifier.create(session.receiveEvents()) + .assertNext(event -> assertEquals("future.event", event.getType().toString())) + .verifyComplete(); + session.close(); + } + + @Test + public void fragmentedTextFrameIsAggregated() { + String message = warningJson(); + int split = message.length() / 2; + Flux frames = Flux.just(new TextWebSocketFrame(false, 0, message.substring(0, split)), + new ContinuationWebSocketFrame(true, 0, message.substring(split))); + server = frameWebSocketServer(frames); + VoiceAgentWebSocketSessionAsyncClient session = createAsyncClient(server.port()).connect("agent").block(); + + StepVerifier.create(session.receiveEvents()).assertNext(this::assertWarningEvent).verifyComplete(); + session.close(); + } + + @Test + public void binaryFrameTerminatesReceiveStream() { + server = frameWebSocketServer(Mono.just(new BinaryWebSocketFrame())); + VoiceAgentWebSocketSessionAsyncClient session = createAsyncClient(server.port()).connect("agent").block(); + + StepVerifier.create(session.receiveEvents()) + .expectErrorMatches( + error -> error instanceof IllegalArgumentException && error.getMessage().contains("JSON text frames")) + .verify(); + assertFalse(session.isOpen()); + } + + @Test + public void malformedJsonTerminatesReceiveStream() { + server = oneShotWebSocketServer("{not-json"); + VoiceAgentWebSocketSessionAsyncClient session = createAsyncClient(server.port()).connect("agent").block(); + + StepVerifier.create(session.receiveEvents()).expectError().verify(); + assertFalse(session.isOpen()); + } + + @Test + public void closeIsIdempotentAndSendAfterCloseFails() { + List clientMessages = new CopyOnWriteArrayList<>(); + server = startServer(clientMessages, new AtomicReference<>(), new AtomicReference<>(), new AtomicReference<>(), + new AtomicReference<>(), false); + VoiceAgentWebSocketSessionAsyncClient session = createAsyncClient(server.port()).connect("agent").block(); + + StepVerifier.create(session.closeAsync().then(session.closeAsync())).verifyComplete(); + StepVerifier.create(session.sendText("after close")) + .expectErrorMatches( + error -> error instanceof IllegalStateException && error.getMessage().contains("not open")) + .verify(); + } + + @Test + public void secureSessionUsesWssAndReceivesTypedEvent() throws Exception { + File certificate = resourceFile("websocket-localhost-cert.pem"); + File privateKey = resourceFile("websocket-localhost-key.pem"); + Http11SslContextSpec serverSsl = Http11SslContextSpec.forServer(certificate, privateKey); + WebsocketServerSpec websocketSpec = WebsocketServerSpec.builder().protocols("realtime").build(); + server = HttpServer.create() + .host("127.0.0.1") + .port(0) + .secure(ssl -> ssl.sslContext(serverSsl)) + .handle((request, response) -> response.sendWebsocket( + (inbound, outbound) -> outbound.sendString(Mono.just(warningJson()), StandardCharsets.UTF_8) + .then(outbound.sendClose()), + websocketSpec)) + .bindNow(); + + Http11SslContextSpec clientSsl + = Http11SslContextSpec.forClient().configure(builder -> builder.trustManager(certificate)); + HttpClient httpClient = HttpClient.create().secure(ssl -> ssl.sslContext(clientSsl)); + TokenCredential credential + = request -> Mono.just(new AccessToken("tls-token", OffsetDateTime.now().plusHours(1))); + VoiceAgentWebSocketClientConfiguration configuration = new VoiceAgentWebSocketClientConfiguration( + URI.create("https://localhost:" + server.port() + "/api/projects/project"), credential, "v1", + "azure-ai-agents-test", new HttpHeaders(), null); + VoiceAgentWebSocketSessionAsyncClient session = new VoiceAgentWebSocketSessionAsyncClient(configuration, + "secure-agent", new VoiceAgentWebSocketConnectionOptions(), httpClient); + + session.connect().block(); + assertEquals("wss", session.getEndpoint().getScheme()); + StepVerifier.create(session.receiveEvents()).assertNext(this::assertWarningEvent).verifyComplete(); + session.close(); + } + + @Test + public void syncSessionReceivesTypedEventAndCloses() { + List clientMessages = new CopyOnWriteArrayList<>(); + AtomicReference requestUri = new AtomicReference<>(); + AtomicReference authorization = new AtomicReference<>(); + AtomicReference foundryFeatures = new AtomicReference<>(); + AtomicReference userAgent = new AtomicReference<>(); + server = startServer(clientMessages, requestUri, authorization, foundryFeatures, userAgent, true); + TokenCredential credential + = request -> Mono.just(new AccessToken("sync-token", OffsetDateTime.now().plusHours(1))); + BetaVoiceAgentWebSocketClient client + = new AgentsClientBuilder().endpoint("http://127.0.0.1:" + server.port() + "/api/projects/project") + .credential(credential) + .configuration(Configuration.NONE) + .buildBetaVoiceAgentWebSocketClient(); + + try (VoiceAgentWebSocketSessionClient session = client.connect("sync-agent")) { + RealtimeServerEvent event = session.receiveEvents().iterator().next(); + assertWarningEvent(event); + session.sendFunctionCallOutput("call-1", "{\"temperature\":72}"); + assertTrue(session.isOpen()); + } + } + + private BetaVoiceAgentWebSocketAsyncClient createAsyncClient(int port) { + TokenCredential credential + = request -> Mono.just(new AccessToken("test-token", OffsetDateTime.now().plusHours(1))); + return new AgentsClientBuilder().endpoint("http://127.0.0.1:" + port + "/api/projects/project") + .credential(credential) + .configuration(Configuration.NONE) + .buildBetaVoiceAgentWebSocketAsyncClient(); + } + + private DisposableServer frameWebSocketServer(org.reactivestreams.Publisher frames) { + WebsocketServerSpec spec = WebsocketServerSpec.builder().protocols("realtime").build(); + return HttpServer.create() + .host("127.0.0.1") + .port(0) + .handle((request, response) -> response + .sendWebsocket((inbound, outbound) -> outbound.sendObject(frames).then(outbound.sendClose()), spec)) + .bindNow(); + } + + private DisposableServer oneShotWebSocketServer(String message) { + WebsocketServerSpec spec = WebsocketServerSpec.builder().protocols("realtime").build(); + return HttpServer.create() + .host("127.0.0.1") + .port(0) + .handle((request, response) -> response.sendWebsocket((inbound, + outbound) -> outbound.sendString(Mono.just(message), StandardCharsets.UTF_8).then(outbound.sendClose()), + spec)) + .bindNow(); + } + + private DisposableServer startServer(List clientMessages, AtomicReference requestUri, + AtomicReference authorization, AtomicReference foundryFeatures, + AtomicReference userAgent, boolean sendInitialEvent) { + WebsocketServerSpec spec = WebsocketServerSpec.builder().protocols("realtime").build(); + return HttpServer.create().host("127.0.0.1").port(0).handle((request, response) -> { + requestUri.set(request.uri()); + authorization.set(request.requestHeaders().get(HttpHeaderNames.AUTHORIZATION)); + foundryFeatures.set(request.requestHeaders().get("Foundry-Features")); + userAgent.set(request.requestHeaders().get(HttpHeaderNames.USER_AGENT)); + return response.sendWebsocket((inbound, outbound) -> { + Flux replies = inbound.receive() + .asString(StandardCharsets.UTF_8) + .doOnNext(clientMessages::add) + .map(ignored -> warningJson()); + if (sendInitialEvent) { + replies = replies.startWith(warningJson()); + } + return outbound.sendString(replies, StandardCharsets.UTF_8).then(); + }, spec); + }).bindNow(); + } + + private void assertWarningEvent(RealtimeServerEvent event) { + VoiceAgentServerEventWarning warning = assertInstanceOf(VoiceAgentServerEventWarning.class, event); + assertEquals("loopback warning", warning.getWarning().getMessage()); + assertEquals("test_warning", warning.getWarning().getCode()); + } + + private static String warningJson() { + return "{\"type\":\"warning\",\"event_id\":\"event-1\",\"warning\":{" + + "\"message\":\"loopback warning\",\"code\":\"test_warning\"}}"; + } + + private static File resourceFile(String name) throws Exception { + URL resource = VoiceAgentWebSocketSessionTests.class.getClassLoader().getResource(name); + assertNotNull(resource); + return Paths.get(resource.toURI()).toFile(); + } + + private static String decode(String value) { + try { + return URLDecoder.decode(value, StandardCharsets.UTF_8.name()); + } catch (Exception error) { + throw new IllegalStateException(error); + } + } +} diff --git a/sdk/ai/azure-ai-agents/src/test/resources/websocket-localhost-cert.pem b/sdk/ai/azure-ai-agents/src/test/resources/websocket-localhost-cert.pem new file mode 100644 index 0000000000000..51389bf8a86e1 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/test/resources/websocket-localhost-cert.pem @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDJTCCAg2gAwIBAgIUfAusxvG/l3WCuKMFyNBEfEr30rswDQYJKoZIhvcNAQEL +BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI2MDkwMzA5NTgyMloXDTM2MDgz +MTA5NTgyMlowFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA3YAeebCQfQbC+BoOyHqM6EgmXxIfpixqG26ElKdCehCH +yt6FqnHhvjf/TRfbwgij/GVxIR1wO4CXkAATNMxsaFu/EbDzI/eDqZKIOQIzd0if +JHC20kVibaFnNDlI9NKC/Ywphz0d8JXCHnYVMVJP27moNYcG91/Lka8223O+qoAw +sta603tAcpsFEl9muc8y0UhwAKED03Gr0mjjGZZ6vTvCE+i3IsslZKXqtS6Fo1wm +NTUCpB/yF8i+WnnVrLetMy45D3hEjPeh2p8cjTHOsOyKkqNAH6hVB0bBzCccN+cY +1YtI0A4Umu7FO5RlAoR8eYnBdoZ06qpv1eXjwj/QZwIDAQABo28wbTAdBgNVHQ4E +FgQU6saTU+QSavalG6I49czWXwtSwY0wHwYDVR0jBBgwFoAU6saTU+QSavalG6I4 +9czWXwtSwY0wDwYDVR0TAQH/BAUwAwEB/zAaBgNVHREEEzARgglsb2NhbGhvc3SH +BH8AAAEwDQYJKoZIhvcNAQELBQADggEBAJ73cFPhCnH1IoItmWDJxhIaR7g1MIfh +o7DxnXEf8ZFw7bpzo4Epp6R6+RRH/fnbosw73vtDqEVZQfxKKjAo0NvguNJIuOoz +oISXYpAIX8eBT2ZrH6m0tJfgwyp7V0+SaHChy1+TmtnaT7rfC7N5r/rcr1abQV78 +qUK7N1+aF0dV1fGE4oP3jon+MNc7pZSagVDTz/k2qHwDnwPoVG37BXf7UZ7jbA2g +/afI/YHCt7zT8aHtjJWJMWLgHOtFTGqx1h7x1rEiLNPK/6USrSFEw+7ZQDFSbG7g +NQyC8lVm3QCVeze2q2/x1DUz20UnGaHz+o3fuK+qsDg/NtHIUMM3wj4= +-----END CERTIFICATE----- diff --git a/sdk/ai/azure-ai-agents/src/test/resources/websocket-localhost-key.pem b/sdk/ai/azure-ai-agents/src/test/resources/websocket-localhost-key.pem new file mode 100644 index 0000000000000..d1576a3c7c4d2 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/test/resources/websocket-localhost-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDdgB55sJB9BsL4 +Gg7IeozoSCZfEh+mLGobboSUp0J6EIfK3oWqceG+N/9NF9vCCKP8ZXEhHXA7gJeQ +ABM0zGxoW78RsPMj94Opkog5AjN3SJ8kcLbSRWJtoWc0OUj00oL9jCmHPR3wlcIe +dhUxUk/buag1hwb3X8uRrzbbc76qgDCy1rrTe0BymwUSX2a5zzLRSHAAoQPTcavS +aOMZlnq9O8IT6LciyyVkpeq1LoWjXCY1NQKkH/IXyL5aedWst60zLjkPeESM96Ha +nxyNMc6w7IqSo0AfqFUHRsHMJxw35xjVi0jQDhSa7sU7lGUChHx5icF2hnTqqm/V +5ePCP9BnAgMBAAECggEAASQTFmWptpRLVjpkIfWno92DRjpgGVu87C3SRLgJjOhE +CIJ6WFmyGrEnbxE5ZLMuaHxEtVY+e1JEGilagkIdBEQF23/mQwAqYZem6oxB7Qk5 +J3wu27/XdTw/dET7RMr98E74XzgaFheWPfURdym28ruBFQRbv9PgWUWdDt2/ndBY +e9XDZ0737YDGjWkZFwLZ/q6YDEUc4NhTClVvzCyTlLMVVL4xsvPzmyxlT093Hdys +ZDs/6UVJOPYsgv7Z9ww6fwv+oPi/oNtvX3dEOjEQkLvmIfXrPSvYQZVQ6Ok5K0UF +eKUP8tB2ZIrX70nhg8R8ThFjldMPb/lS2i59PWQBgQKBgQDwehtp27diMPnUo7ZR +xSPt2UAUTiRRlwQo4rFZNiR5ZMLPBAX4DP5aQDyDiTAMqBOjHqgipagra9xOapCN +uqlEINaMlsuSwMD1cxkp85V5FWab+u1MqBr3B1aq2INqrYDGmPs3kS6Po4M0N12+ +O6Bob4YWBaabIY+rEEJuBmK9QQKBgQDrzGyXVRYGarKW4tiWVeRAA5yNF/w0YW8B +u62wUXLXUXfzhND4ETCUxUpgkcjY1AICWQQnbUFXi/0WUowkKZg8Vh0zfBJmsbs2 +LPhCUEMITKB3owwJLKDCpSake+9Afxi7XB4UltsjInep1XGE6tvKKr9bAF1Sqd47 +V74dv0CbpwKBgQCkuT/l91dar2myuqG8yWmfF13Jiu1d5jA3QXFyRqAdd2PqIjtk +eqIQeEf7YhHD2a354poRgZ/8flnebSivrNkdjdDpZLH1yItkln76OZx94Kb02aGL +DOvLov8+8Ci0/jxjzY7ntU9LnRnWvsY79OQgJaSXmS9SvF6JMw4OB9nDAQKBgQCJ +kxrkbJtOISCTkkTl6bUjeDf1xkG62gInU7XyAoNrhzfiF+LIaVcb5cQQdd5mS8Pk +VMVsr30JND70sDLdwnr08RVWfZRK4HWnFTO/lQ6XIAYb50BVdflRt4PFQh4EVmM6 +pXNTdfTjGfARYdw6vcCAwtIkqSDJ4xwrKXVd68EpTwKBgDURo00XBIFSyqAbvxwF +NchLRcoNZVxxd9hHGTUiTgstfDGxEuHpWEETiVsGGnU/Mq+cTKW98P3y/mdW9Gd+ +mYRmo1L0J6lkBMP3xD5PXxbvTWkxVReuSCl0zUqfKcHjwllpsS91If0HVeg0c5ze +/C4ecakj7llQKhUYIm/dNULb +-----END PRIVATE KEY----- diff --git a/sdk/ai/azure-ai-agents/tsp-location.yaml b/sdk/ai/azure-ai-agents/tsp-location.yaml index 86509febdc3a7..fa10f6eeee215 100644 --- a/sdk/ai/azure-ai-agents/tsp-location.yaml +++ b/sdk/ai/azure-ai-agents/tsp-location.yaml @@ -1,17 +1,26 @@ directory: specification/ai-foundry/data-plane/Foundry/src/sdk-java-azure-ai-agents -commit: 0d22a924f520701e886d6ce3afd49abc0d6548d1 +commit: b25b27f1034082e994bdb68e33eb52bdfae2f3e9 repo: Azure/azure-rest-api-specs -additionalDirectories: - - specification/ai-foundry/data-plane/Foundry/src/agents - - specification/ai-foundry/data-plane/Foundry/src/agents-session-files - - specification/ai-foundry/data-plane/Foundry/src/agents-microsoft365 - - specification/ai-foundry/data-plane/Foundry/src/agents-optimization - - specification/ai-foundry/data-plane/Foundry/src/common - - specification/ai-foundry/data-plane/Foundry/src/memory-stores - - specification/ai-foundry/data-plane/Foundry/src/openai - - specification/ai-foundry/data-plane/Foundry/src/red-teams - - specification/ai-foundry/data-plane/Foundry/src/sdk-common - - specification/ai-foundry/data-plane/Foundry/src/skills - - specification/ai-foundry/data-plane/Foundry/src/toolboxes - - specification/ai-foundry/data-plane/Foundry/src/tools - - specification/ai-foundry/data-plane/Foundry/src/voice-agents +additionalDirectories: +- specification/ai-foundry/data-plane/Foundry/src/agents +- specification/ai-foundry/data-plane/Foundry/src/agents-optimization +- specification/ai-foundry/data-plane/Foundry/src/agents-session-files +- specification/ai-foundry/data-plane/Foundry/src/agents-microsoft365 +- specification/ai-foundry/data-plane/Foundry/src/common +- specification/ai-foundry/data-plane/Foundry/src/connections +- specification/ai-foundry/data-plane/Foundry/src/datasets +- specification/ai-foundry/data-plane/Foundry/src/indexes +- specification/ai-foundry/data-plane/Foundry/src/deployments +- specification/ai-foundry/data-plane/Foundry/src/red-teams +- specification/ai-foundry/data-plane/Foundry/src/evaluation-rules +- specification/ai-foundry/data-plane/Foundry/src/evaluation-taxonomies +- specification/ai-foundry/data-plane/Foundry/src/evaluators +- specification/ai-foundry/data-plane/Foundry/src/insights +- specification/ai-foundry/data-plane/Foundry/src/schedules +- specification/ai-foundry/data-plane/Foundry/src/memory-stores +- specification/ai-foundry/data-plane/Foundry/src/openai +- specification/ai-foundry/data-plane/Foundry/src/sdk-common +- specification/ai-foundry/data-plane/Foundry/src/skills +- specification/ai-foundry/data-plane/Foundry/src/toolboxes +- specification/ai-foundry/data-plane/Foundry/src/tools +- specification/ai-foundry/data-plane/Foundry/src/voice-agents diff --git a/sdk/ai/cspell.yml b/sdk/ai/cspell.yml index 0a86c3f508fae..2b02789c352bf 100644 --- a/sdk/ai/cspell.yml +++ b/sdk/ai/cspell.yml @@ -16,8 +16,11 @@ words: - "gitmcp" - "pcma" - "pcmu" + - "PSTN" - "sixx" - "ubinary" + - "uhhm" - "upia" + - "viseme" - "webrtc" - "xhigh" From 7e5f37349050bd838df445548ea9e413d3bbee52 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Fri, 4 Sep 2026 10:25:45 +0800 Subject: [PATCH 02/29] Fix voice agent preview headers and sample cleanup (#50359) * Update voice agent generation pin Co-Authored-By: Claude * Fix voice agent sample cleanup and preview headers Co-Authored-By: Claude --------- Co-authored-by: Claude --- ...AgentLiveAudioConversationAsyncSample.java | 21 ++++++++++++++++--- ...eAgentLiveTextConversationAsyncSample.java | 21 ++++++++++++++++--- ...FoundryFeaturesHeaderVerificationTest.java | 11 ++++++++++ 3 files changed, 47 insertions(+), 6 deletions(-) diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveAudioConversationAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveAudioConversationAsyncSample.java index 3862d94c86e88..d1dd4366c4378 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveAudioConversationAsyncSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveAudioConversationAsyncSample.java @@ -43,11 +43,17 @@ /** * Demonstrates an asynchronous hands-free voice conversation using Java Sound and server-side VAD. * + *

To end the call, focus the terminal running the sample and press Enter. The sample then closes the WebSocket, + * stops the microphone and speaker, reads the persisted conversation, and deletes the agent unless + * {@code FOUNDRY_KEEP_VOICE_AGENT} is set to {@code true}.

+ * *

Before running the sample, set these environment variables:

*
    *
  • {@code FOUNDRY_PROJECT_ENDPOINT} - The Azure AI Project endpoint.
  • *
  • {@code FOUNDRY_VOICE_AGENT_NAME} - Optional. The voice agent name. Defaults to * {@code sample-live-audio-conversation-agent-async-java}.
  • + *
  • {@code FOUNDRY_KEEP_VOICE_AGENT} - Optional. Set to {@code true} to keep the agent after the sample. + * Defaults to {@code false}.
  • *
*/ public class VoiceAgentLiveAudioConversationAsyncSample { @@ -58,6 +64,8 @@ public static void main(String[] args) { String endpoint = configuration.get("FOUNDRY_PROJECT_ENDPOINT"); String agentName = configuration.get("FOUNDRY_VOICE_AGENT_NAME", "sample-live-audio-conversation-agent-async-java"); + boolean keepAgent + = Boolean.parseBoolean(configuration.get("FOUNDRY_KEEP_VOICE_AGENT", "false")); AgentsClientBuilder builder = new AgentsClientBuilder() .credential(new DefaultAzureCredentialBuilder().build()) @@ -88,14 +96,21 @@ public static void main(String[] args) { .then(Mono.defer(() -> conversationId.get() == null ? Mono.fromRunnable(() -> System.out.println("No persisted conversation ID was returned.")) : VoiceAgentRealtimeSampleUtils.readConversation(conversations, agentName, conversationId.get()))) - .then(agents.deleteAgent(agentName)) - .onErrorResume(error -> agents.deleteAgent(agentName) + .then(Mono.defer(() -> cleanupAgent(agents, agentName, keepAgent))) + .onErrorResume(error -> Mono.defer(() -> cleanupAgent(agents, agentName, keepAgent)) .onErrorResume(cleanupError -> Mono.empty()) .then(Mono.error(error))) - .doOnSuccess(ignored -> System.out.println("Deleted voice agent: " + agentName)) .block(); } + private static Mono cleanupAgent(AgentsAsyncClient agents, String agentName, boolean keepAgent) { + if (keepAgent) { + return Mono.fromRunnable(() -> System.out.println("Kept voice agent: " + agentName)); + } + return agents.deleteAgent(agentName) + .doOnSuccess(ignored -> System.out.println("Deleted voice agent: " + agentName)); + } + private static Mono runConversation(VoiceAgentWebSocketSessionAsyncClient session, AtomicReference conversationId) { return Mono.using(() -> new AudioProcessor(session), processor -> { diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationAsyncSample.java index 9f98e870dcf08..7c397c1e0bdc3 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationAsyncSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationAsyncSample.java @@ -28,11 +28,17 @@ /** * Demonstrates an asynchronous, typed, multi-turn realtime conversation with a persisted voice agent. * + *

To end the call, submit a blank line or enter {@code exit} or {@code quit}. The sample then closes the WebSocket, + * reads the persisted conversation, and deletes the agent unless {@code FOUNDRY_KEEP_VOICE_AGENT} is set to + * {@code true}.

+ * *

Before running the sample, set these environment variables:

*
    *
  • {@code FOUNDRY_PROJECT_ENDPOINT} - The Azure AI Project endpoint.
  • *
  • {@code FOUNDRY_VOICE_AGENT_NAME} - Optional. The voice agent name. Defaults to * {@code sample-live-text-conversation-agent-async-java}.
  • + *
  • {@code FOUNDRY_KEEP_VOICE_AGENT} - Optional. Set to {@code true} to keep the agent after the sample. + * Defaults to {@code false}.
  • *
*/ public class VoiceAgentLiveTextConversationAsyncSample { @@ -43,6 +49,8 @@ public static void main(String[] args) { String endpoint = configuration.get("FOUNDRY_PROJECT_ENDPOINT"); String agentName = configuration.get("FOUNDRY_VOICE_AGENT_NAME", "sample-live-text-conversation-agent-async-java"); + boolean keepAgent + = Boolean.parseBoolean(configuration.get("FOUNDRY_KEEP_VOICE_AGENT", "false")); AgentsClientBuilder builder = new AgentsClientBuilder() .credential(new DefaultAzureCredentialBuilder().build()) @@ -76,9 +84,8 @@ public static void main(String[] args) { .then(Mono.defer(() -> conversationId.get() == null ? Mono.fromRunnable(() -> System.out.println("No persisted conversation ID was returned.")) : VoiceAgentRealtimeSampleUtils.readConversation(conversations, agentName, conversationId.get()))) - .then(agents.deleteAgent(agentName)) - .doOnSuccess(ignored -> System.out.println("Deleted voice agent: " + agentName)) - .onErrorResume(error -> agents.deleteAgent(agentName) + .then(Mono.defer(() -> cleanupAgent(agents, agentName, keepAgent))) + .onErrorResume(error -> Mono.defer(() -> cleanupAgent(agents, agentName, keepAgent)) .onErrorResume(cleanupError -> Mono.empty()) .then(Mono.error(error))) .doFinally(signal -> { @@ -88,6 +95,14 @@ public static void main(String[] args) { .block(); } + private static Mono cleanupAgent(AgentsAsyncClient agents, String agentName, boolean keepAgent) { + if (keepAgent) { + return Mono.fromRunnable(() -> System.out.println("Kept voice agent: " + agentName)); + } + return agents.deleteAgent(agentName) + .doOnSuccess(ignored -> System.out.println("Deleted voice agent: " + agentName)); + } + private static Mono runConversation(VoiceAgentWebSocketSessionAsyncClient session, Scanner scanner, AtomicReference conversationId, VoiceAgentRealtimeSampleUtils.SpeakerPlayer player) { AtomicReference> responseCompleted = new AtomicReference<>(); diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/FoundryFeaturesHeaderVerificationTest.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/FoundryFeaturesHeaderVerificationTest.java index 331011f11b899..429a2fe44bc20 100644 --- a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/FoundryFeaturesHeaderVerificationTest.java +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/FoundryFeaturesHeaderVerificationTest.java @@ -72,6 +72,17 @@ public void betaClientsAddAreaSpecificHeadersByDefault() { builder.beta().buildBetaMemoryStoresClient().getMemoryStoreWithResponse("store", new RequestOptions()); assertEquals(FoundryFeaturesOptInKeys.MEMORY_STORES_V1_PREVIEW.toString(), foundryFeatures(httpClient)); + + builder.buildBetaAgentEndpointConversationsClient() + .getAgentConversationWithResponse("agent", "conversation", new RequestOptions()); + assertEquals(AgentDefinitionOptInKeys.VOICE_AGENTS_V1_PREVIEW.toString(), foundryFeatures(httpClient)); + + StepVerifier + .create(builder.buildBetaAgentEndpointConversationsAsyncClient() + .getAgentConversationWithResponse("agent", "conversation", new RequestOptions())) + .expectNextCount(1) + .verifyComplete(); + assertEquals(AgentDefinitionOptInKeys.VOICE_AGENTS_V1_PREVIEW.toString(), foundryFeatures(httpClient)); } @Test From 9575a11a8f13390fbb28f27a50340cbea005d7bf Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Fri, 4 Sep 2026 11:21:03 +0800 Subject: [PATCH 03/29] Fix WebSocket review and CI issues Co-Authored-By: Claude --- .../hostedagents/AgentEndpointAsyncSample.java | 6 ++++-- .../hostedagents/SessionLogStreamAsyncSample.java | 6 ++++-- .../agents/VoiceAgentWebSocketSessionTests.java | 15 +++++++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/AgentEndpointAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/AgentEndpointAsyncSample.java index 2c4f0a4b051eb..b966b88cafe2d 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/AgentEndpointAsyncSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/AgentEndpointAsyncSample.java @@ -17,6 +17,7 @@ import com.azure.identity.DefaultAzureCredentialBuilder; import com.openai.client.OpenAIClientAsync; import com.openai.core.JsonValue; +import com.openai.models.responses.Response; import com.openai.models.responses.ResponseCreateParams; import reactor.core.publisher.Mono; @@ -65,11 +66,12 @@ public static void main(String[] args) { new UpdateAgentDetailsOptions().setAgentEndpoint(endpointConfig)) .doOnNext(updated -> System.out.printf("Agent endpoint configured for agent: %s%n", updated.getName())) - .then(Mono.fromFuture(openAIAsyncClient.responses().create(ResponseCreateParams.builder() + .then(Mono.defer(() -> Mono.fromFuture(openAIAsyncClient.responses().create(ResponseCreateParams.builder() .input("What is the size of France in square miles?") .putAdditionalBodyProperty("agent_session_id", JsonValue.from(resources.getSession().getAgentSessionId())) - .build()))) + .build())))) + .cast(Response.class) .doOnNext(HostedAgentsSampleUtils::printResponseOutput) .then(); }); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/SessionLogStreamAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/SessionLogStreamAsyncSample.java index 5e1b728dda4c7..84ec6062d6d5d 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/SessionLogStreamAsyncSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/SessionLogStreamAsyncSample.java @@ -18,6 +18,7 @@ import com.azure.identity.DefaultAzureCredentialBuilder; import com.openai.client.OpenAIClientAsync; import com.openai.core.JsonValue; +import com.openai.models.responses.Response; import com.openai.models.responses.ResponseCreateParams; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; @@ -66,11 +67,12 @@ public static void main(String[] args) { new UpdateAgentDetailsOptions().setAgentEndpoint(endpointConfig)) .doOnNext(updated -> System.out.printf("Agent endpoint configured for agent: %s%n", updated.getName())) - .then(Mono.fromFuture(openAIAsyncClient.responses().create(ResponseCreateParams.builder() + .then(Mono.defer(() -> Mono.fromFuture(openAIAsyncClient.responses().create(ResponseCreateParams.builder() .input("Say hello in one short sentence.") .putAdditionalBodyProperty("agent_session_id", JsonValue.from(resources.getSession().getAgentSessionId())) - .build()))) + .build())))) + .cast(Response.class) .doOnNext(HostedAgentsSampleUtils::printResponseOutput) .then(agentsAsyncClient.getSessionLogStreamWithResponse(agentName, resources.getAgent().getVersion(), resources.getSession().getAgentSessionId(), new RequestOptions())) diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/VoiceAgentWebSocketSessionTests.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/VoiceAgentWebSocketSessionTests.java index d978f2e15107a..22a70f521f5f9 100644 --- a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/VoiceAgentWebSocketSessionTests.java +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/VoiceAgentWebSocketSessionTests.java @@ -50,6 +50,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertInstanceOf; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; public class VoiceAgentWebSocketSessionTests { @@ -129,6 +130,20 @@ public void asyncSessionNegotiatesHandshakeAndExchangesTypedEvents() { assertFalse(session.isOpen()); } + @Test + public void syncConnectRejectsNullOptions() { + TokenCredential credential + = request -> Mono.just(new AccessToken("test-token", OffsetDateTime.now().plusHours(1))); + BetaVoiceAgentWebSocketClient client + = new AgentsClientBuilder().endpoint("https://localhost/api/projects/project") + .credential(credential) + .configuration(Configuration.NONE) + .buildBetaVoiceAgentWebSocketClient(); + + NullPointerException exception = assertThrows(NullPointerException.class, () -> client.connect("agent", null)); + assertEquals("'options' cannot be null.", exception.getMessage()); + } + @Test public void tokenFailureOccursBeforeNetworkAccess() { AtomicBoolean connected = new AtomicBoolean(); From fafad8aee3a49604c3ac4474e5e27debc1826391 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Fri, 4 Sep 2026 11:41:04 +0800 Subject: [PATCH 04/29] Fix com.azure.ai.agents.agents samples errors --- .../azure/ai/agents/agents/CreateAgent.java | 30 ------------------- .../azure/ai/agents/agents/DeleteAgent.java | 26 ---------------- .../com/azure/ai/agents/agents/GetAgent.java | 28 ----------------- ...{ListAgents.java => ListAgentsSample.java} | 10 ++++++- 4 files changed, 9 insertions(+), 85 deletions(-) delete mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/CreateAgent.java delete mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/DeleteAgent.java delete mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/GetAgent.java rename sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/{ListAgents.java => ListAgentsSample.java} (82%) diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/CreateAgent.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/CreateAgent.java deleted file mode 100644 index 06b45f4a9146d..0000000000000 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/CreateAgent.java +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.ai.agents.agents; - -import com.azure.ai.agents.AgentsClient; -import com.azure.ai.agents.AgentsClientBuilder; -import com.azure.ai.agents.models.AgentVersionDetails; -import com.azure.ai.agents.models.PromptAgentDefinition; -import com.azure.core.util.Configuration; -import com.azure.identity.DefaultAzureCredentialBuilder; - -public class CreateAgent { - public static void main(String[] args) { - String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String model = Configuration.getGlobalConfiguration().get("FOUNDRY_MODEL_NAME"); - // Code sample for creating an agent - AgentsClient agentsClient = new AgentsClientBuilder() - .credential(new DefaultAzureCredentialBuilder().build()) - .endpoint(endpoint) - .buildAgentsClient(); - - PromptAgentDefinition request = new PromptAgentDefinition(model); - AgentVersionDetails agent = agentsClient.createAgentVersion("agent-created-from-java", request); - - System.out.println("Agent ID: " + agent.getId()); - System.out.println("Agent Name: " + agent.getName()); - System.out.println("Agent Version: " + agent.getVersion()); - } -} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/DeleteAgent.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/DeleteAgent.java deleted file mode 100644 index 039990d6e4cca..0000000000000 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/DeleteAgent.java +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.ai.agents.agents; - -import com.azure.ai.agents.AgentsClient; -import com.azure.ai.agents.AgentsClientBuilder; -import com.azure.core.util.Configuration; -import com.azure.identity.DefaultAzureCredentialBuilder; - -public class DeleteAgent { - public static void main(String[] args) { - String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String agentName = "agent-created-from-java"; // Replace with actual agent name - // Code sample for creating an agent - AgentsClient agentsClient = new AgentsClientBuilder() - .credential(new DefaultAzureCredentialBuilder().build()) - .endpoint(endpoint) - .buildAgentsClient(); - - agentsClient.deleteAgent(agentName); - - System.out.println("Deleted agent with the following details:"); - System.out.println("\tAgent Name: " + agentName); - } -} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/GetAgent.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/GetAgent.java deleted file mode 100644 index 19a8141a7d5ea..0000000000000 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/GetAgent.java +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.ai.agents.agents; - -import com.azure.ai.agents.AgentsClient; -import com.azure.ai.agents.AgentsClientBuilder; -import com.azure.ai.agents.models.AgentDetails; -import com.azure.core.util.Configuration; -import com.azure.identity.DefaultAzureCredentialBuilder; - -public class GetAgent { - public static void main(String[] args) { - String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String agentName = "agent-created-from-java"; // Replace with actual agent name - // Code sample for creating an agent - AgentsClient agentsClient = new AgentsClientBuilder() - .credential(new DefaultAzureCredentialBuilder().build()) - .endpoint(endpoint) - .buildAgentsClient(); - - AgentDetails agent = agentsClient.getAgent(agentName); - - System.out.println("Agent ID: " + agent.getId()); - System.out.println("Agent Name: " + agent.getName()); - System.out.println("Agent Version: " + agent.getVersions().getLatest()); - } -} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/ListAgents.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/ListAgentsSample.java similarity index 82% rename from sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/ListAgents.java rename to sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/ListAgentsSample.java index 993b0d6b02340..b045092d6e4cf 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/ListAgents.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/ListAgentsSample.java @@ -9,7 +9,15 @@ import com.azure.core.util.Configuration; import com.azure.identity.DefaultAzureCredentialBuilder; -public class ListAgents { +/** + * Demonstrates listing all agents in an Azure AI Foundry project. + * + *

Before running the sample, set this environment variable:

+ *
    + *
  • {@code FOUNDRY_PROJECT_ENDPOINT} - The Azure AI Project endpoint.
  • + *
+ */ +public class ListAgentsSample { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); // Code sample for listing all agents From 596b42ce4616e26a50273d86d5104d1b8662198c Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Fri, 4 Sep 2026 17:19:14 +0800 Subject: [PATCH 05/29] Fix Agents CI and polling status handling Co-Authored-By: Claude --- .../azure/ai/agents/AgentsAsyncClient.java | 1782 ++++++++++++++++- .../com/azure/ai/agents/AgentsClient.java | 1718 +++++++++++++++- .../AgentsServicePollUtils.java | 158 +- .../OperationLocationPollingStrategy.java | 6 +- .../SyncOperationLocationPollingStrategy.java | 6 +- .../AgentsServicePollUtilsTest.java | 7 +- 6 files changed, 3490 insertions(+), 187 deletions(-) diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java index f9f970d226c3d..b20f6130f13a5 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java @@ -16,6 +16,8 @@ import com.azure.ai.agents.implementation.models.CreateSessionRequest; import com.azure.ai.agents.implementation.models.GetMicrosoft365AppPackageRequest; import com.azure.ai.agents.implementation.models.PublishAgentToMicrosoft365Request; +import com.azure.ai.agents.implementation.models.ReplaceTelephonyTransferTargetsRequest; +import com.azure.ai.agents.implementation.models.TransferTelephonyCallRequest; import com.azure.ai.agents.implementation.models.UpdateAgentFromManifestRequest; import com.azure.ai.agents.implementation.models.UpdateAgentRequest; import com.azure.ai.agents.implementation.utils.FileUtils; @@ -29,6 +31,7 @@ import com.azure.ai.agents.models.CreateAgentVersionFromCodeContent; import com.azure.ai.agents.models.CreateAgentVersionFromCodeMetadata; import com.azure.ai.agents.models.CreateAgentVersionInput; +import com.azure.ai.agents.models.CreateTelephonyBindingRequest; import com.azure.ai.agents.models.GetMicrosoft365AppPackageOptions; import com.azure.ai.agents.models.HostedAgentDefinition; import com.azure.ai.agents.models.Microsoft365PublishDefaults; @@ -38,7 +41,17 @@ import com.azure.ai.agents.models.SessionDirectoryEntry; import com.azure.ai.agents.models.SessionFileWriteResult; import com.azure.ai.agents.models.SessionLogEvent; +import com.azure.ai.agents.models.TelephonyBinding; +import com.azure.ai.agents.models.TelephonyBindingListItem; +import com.azure.ai.agents.models.TelephonyBindingStatus; +import com.azure.ai.agents.models.TelephonyCallRecord; +import com.azure.ai.agents.models.TelephonyCallStatus; +import com.azure.ai.agents.models.TelephonyCallSummary; +import com.azure.ai.agents.models.TelephonyProvider; +import com.azure.ai.agents.models.TelephonyTransferTarget; +import com.azure.ai.agents.models.TelephonyTransferTargets; import com.azure.ai.agents.models.UpdateAgentDetailsOptions; +import com.azure.ai.agents.models.UpdateTelephonyBindingRequest; import com.azure.ai.agents.models.VersionIndicator; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; @@ -59,6 +72,8 @@ import com.azure.core.util.FluxUtil; import com.openai.models.conversations.Conversation; import java.nio.file.Paths; +import java.time.OffsetDateTime; +import java.util.List; import java.util.Map; import java.util.stream.Collectors; import reactor.core.publisher.Flux; @@ -99,9 +114,26 @@ public final class AgentsAsyncClient { * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -208,9 +240,26 @@ public Mono> getAgentWithResponse(String agentName, Request * } * description: String (Optional) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * blueprint_reference (Optional): { @@ -237,9 +286,26 @@ public Mono> getAgentWithResponse(String agentName, Request * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -369,9 +435,26 @@ public Mono deleteAgentVersion(String agentName, String agentVersion) { * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -512,9 +595,26 @@ public PagedFlux listAgentVersions(String agentName) { * } * description: String (Optional) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * blueprint_reference (Optional): { @@ -599,9 +699,26 @@ public PagedFlux listAgentVersions(String agentName) { * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -706,9 +823,26 @@ Mono> createAgentWithResponse(BinaryData createAgentRequest * } * description: String (Optional) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * blueprint_reference (Optional): { @@ -740,9 +874,26 @@ Mono> createAgentWithResponse(BinaryData createAgentRequest * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -916,9 +1067,26 @@ Mono updateAgent(String agentName, AgentDefinition definition) { * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -1054,9 +1222,26 @@ Mono> createAgentFromManifestWithResponse(BinaryData create * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -1185,9 +1370,26 @@ Mono> updateAgentFromManifestWithResponse(String agentName, * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -1424,9 +1626,26 @@ public Mono createAgentVersionFromManifest(String agentName * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -1560,7 +1779,7 @@ public PagedFlux listAgents(AgentKind kind, Integer limit, PageOrd * Query Parameters * NameTypeRequiredDescription * kindStringNoFilter agents by kind. If not provided, all agents are returned. - * Allowed values: "prompt", "hosted", "workflow", "external". + * Allowed values: "prompt", "hosted", "workflow", "external", "voice". * limitIntegerNoA limit on the number of objects to be returned. Limit can range * between 1 and 100, and the * default is 20. @@ -1599,9 +1818,26 @@ public PagedFlux listAgents(AgentKind kind, Integer limit, PageOrd * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -1991,36 +2227,6 @@ Mono createAgent(CreateAgentOptions options) { .map(protocolMethodData -> protocolMethodData.toObject(AgentDetails.class)); } - /** - * Create an agent version - * - * Creates a new version for the specified agent and returns the created version resource. - * - * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. - * - Must start and end with alphanumeric characters, - * - Can contain hyphens in the middle - * - Must not exceed 63 characters. - * @param definition The agent definition. This can be a prompt, workflow, hosted, external, or voice agent - * definition. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the response body on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono createAgentVersion(String agentName, AgentDefinition definition) { - // The TypeSpec operation flattens more fields than the emitter allows for automatic convenience generation. - RequestOptions requestOptions = new RequestOptions(); - CreateAgentVersionRequest createAgentVersionRequestObj = new CreateAgentVersionRequest(definition); - BinaryData createAgentVersionRequest = BinaryData.fromObject(createAgentVersionRequestObj); - return createAgentVersionWithResponse(agentName, createAgentVersionRequest, requestOptions) - .flatMap(FluxUtil::toMono) - .map(protocolMethodData -> protocolMethodData.toObject(AgentVersionDetails.class)); - } - /** * Create a new agent version. * @@ -2344,9 +2550,26 @@ Mono updateAgent(String agentName, AgentDefinition definition, Map * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -4024,6 +4247,150 @@ public PagedFlux listAgentVersions(String agentName, Intege }); } + /** + * Generate an agent + * + * Generates and creates an agent from kind-specific high-level inputs. + * The generated definition remains fully editable through the standard agent versioning operations. + *

Request Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     state: String(enabled/disabled) (Required)
+     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
+     *     versions (Required): {
+     *         latest (Required): {
+     *             metadata (Required): {
+     *                 String: String (Required)
+     *             }
+     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *             id: String (Required)
+     *             name: String (Required)
+     *             version: String (Required)
+     *             description: String (Optional)
+     *             created_at: long (Required)
+     *             definition (Required): {
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *                 rai_config (Optional): {
+     *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
+     *                 }
+     *             }
+     *             draft: Boolean (Optional)
+     *             status: String(creating/active/failed/deleting/deleted) (Optional)
+     *             instance_identity (Optional): {
+     *                 principal_id: String (Required)
+     *                 client_id: String (Required)
+     *                 status: String(active/disabled) (Optional)
+     *             }
+     *             blueprint (Optional): (recursive schema, see blueprint above)
+     *             blueprint_reference (Optional): {
+     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
+     *             }
+     *             agent_guid: String (Optional)
+     *         }
+     *     }
+     *     agent_endpoint (Optional): {
+     *         version_selector (Optional): {
+     *             version_selection_rules (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     type: String(FixedRatio) (Required)
+     *                     agent_version: String (Optional, Required on create)
+     *                 }
+     *             ]
+     *         }
+     *         protocol_configuration (Optional): {
+     *             activity (Optional): {
+     *                 enable_m365_public_endpoint: Boolean (Optional)
+     *                 access_boundaries (Optional): [
+     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
+     *                 ]
+     *             }
+     *             responses (Optional): {
+     *             }
+     *             a2a (Optional): {
+     *             }
+     *             mcp (Optional): {
+     *             }
+     *             invocations (Optional): {
+     *             }
+     *             invocations_ws (Optional): {
+     *             }
+     *         }
+     *         authorization_schemes (Optional): [
+     *              (Optional){
+     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
+     *             }
+     *         ]
+     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
+     *     }
+     *     digital_worker_type: String(m365) (Optional)
+     *     instance_identity (Optional): (recursive schema, see instance_identity above)
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): (recursive schema, see blueprint_reference above)
+     *     agent_card (Optional): {
+     *         version: String (Optional, Required on create)
+     *         description: String (Optional)
+     *         skills (Optional, Required on create): [
+     *              (Optional, Required on create){
+     *                 id: String (Optional, Required on create)
+     *                 name: String (Optional, Required on create)
+     *                 description: String (Optional)
+     *                 tags (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 examples (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *             }
+     *         ]
+     *     }
+     * }
+     * }
+     * 
+ * + * @param body The kind-specific inputs for generating and creating an agent. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> generateAgentWithResponse(BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.generateAgentWithResponseAsync(body, requestOptions); + } + /** * Publish an agent to Microsoft 365 * @@ -4211,6 +4578,30 @@ public Mono> getMicrosoft365PublishDefaultsWithResponse(Str return this.serviceClient.getMicrosoft365PublishDefaultsWithResponseAsync(agentName, requestOptions); } + /** + * Generate an agent + * + * Generates and creates an agent from kind-specific high-level inputs. + * The generated definition remains fully editable through the standard agent versioning operations. + * + * @param body The kind-specific inputs for generating and creating an agent. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono generateAgent(BinaryData body) { + // Generated convenience method for generateAgentWithResponse + RequestOptions requestOptions = new RequestOptions(); + return generateAgentWithResponse(body, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(AgentDetails.class)); + } + /** * Publish an agent to Microsoft 365 * @@ -4360,49 +4751,1240 @@ public Mono getMicrosoft365PublishDefaults(String a } /** - * Create a new code-based agent + * Create an agent telephony binding * - * Creates a new code-based agent. Uploads the code zip and creates the agent in a single call. - * The agent name is provided in the `x-ms-agent-name` header since POST /agents has no name in the URL path. - * The SHA-256 hex digest of the zip is provided in the `x-ms-code-zip-sha256` header for integrity and dedup. - * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is - * irrelevant). - * Maximum upload size is 250 MB. + * Creates a telephony binding for the voice agent named in the path. + *

Header Parameters

+ * + * + * + * + * + *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as + * HTTP-date
+ * You can add these to a request with {@link RequestOptions#addHeader} + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     * }
+     * }
+     * 
+ * *

Response Body Schema

* *
      * {@code
      * {
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
      *     id: String (Required)
-     *     name: String (Required)
-     *     state: String(enabled/disabled) (Required)
-     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
-     *     versions (Required): {
-     *         latest (Required): {
-     *             metadata (Required): {
-     *                 String: String (Required)
-     *             }
-     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *             id: String (Required)
-     *             name: String (Required)
-     *             version: String (Required)
-     *             description: String (Optional)
-     *             created_at: long (Required)
-     *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
-     *                 rai_config (Optional): {
-     *                     rai_policy_name: String (Required)
-     *                 }
-     *             }
-     *             draft: Boolean (Optional)
-     *             status: String(creating/active/failed/deleting/deleted) (Optional)
-     *             instance_identity (Optional): {
-     *                 principal_id: String (Required)
-     *                 client_id: String (Required)
-     *                 status: String(active/disabled) (Optional)
-     *             }
-     *             blueprint (Optional): (recursive schema, see blueprint above)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param body The provider-specific binding to create. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response} on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> createTelephonyBindingWithResponse(String agentName, BinaryData body, + RequestOptions requestOptions) { + return this.serviceClient.createTelephonyBindingWithResponseAsync(agentName, body, requestOptions); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", + * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose bindings are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyBindings(String agentName, RequestOptions requestOptions) { + return this.serviceClient.listTelephonyBindingsAsync(agentName, requestOptions); + } + + /** + * Get an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path along with {@link Response} on + * successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyBindingWithResponse(String agentName, String bindingId, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyBindingWithResponseAsync(agentName, bindingId, requestOptions); + } + + /** + * Update an agent telephony binding + * + * Updates a telephony binding owned by the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     status: String(active/suspended) (Optional)
+     *     label: String (Optional)
+     *     connection: String (Optional)
+     *     phone_number: String (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param body The binding properties to update. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response} on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> updateTelephonyBindingWithResponse(String agentName, String bindingId, + String ifMatch, BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.updateTelephonyBindingWithResponseAsync(agentName, bindingId, ifMatch, body, + requestOptions); + } + + /** + * Delete an agent telephony binding + * + * Deletes a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> deleteTelephonyBindingWithResponse(String agentName, String bindingId, String ifMatch, + RequestOptions requestOptions) { + return this.serviceClient.deleteTelephonyBindingWithResponseAsync(agentName, bindingId, ifMatch, + requestOptions); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: + * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix + * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this + * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose calls are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyCalls(String agentName, RequestOptions requestOptions) { + return this.serviceClient.listTelephonyCallsAsync(agentName, requestOptions); + } + + /** + * Get an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the call record. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path along with {@link Response} on + * successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyCallWithResponse(String agentName, String callId, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyCallWithResponseAsync(agentName, callId, requestOptions); + } + + /** + * Transfer an active agent telephony call + * + * Transfers an active inbound call to a configured target for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     target: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param transferTelephonyCallRequest The transferTelephonyCallRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response} on + * successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> transferTelephonyCallWithResponse(String agentName, String callId, + BinaryData transferTelephonyCallRequest, RequestOptions requestOptions) { + return this.serviceClient.transferTelephonyCallWithResponseAsync(agentName, callId, + transferTelephonyCallRequest, requestOptions); + } + + /** + * End an active agent telephony call + * + * Ends an active inbound call owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response} on + * successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> endTelephonyCallWithResponse(String agentName, String callId, + RequestOptions requestOptions) { + return this.serviceClient.endTelephonyCallWithResponseAsync(agentName, callId, requestOptions); + } + + /** + * Get agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path along with {@link Response} on + * successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyTransferTargetsWithResponse(String agentName, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyTransferTargetsWithResponseAsync(agentName, requestOptions); + } + + /** + * Replace agent telephony transfer targets + * + * Replaces all transfer targets configured for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are replaced. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param replaceTelephonyTransferTargetsRequest The replaceTelephonyTransferTargetsRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the telephony transfer targets configured for one voice agent along with {@link Response} on successful + * completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> replaceTelephonyTransferTargetsWithResponse(String agentName, String ifMatch, + BinaryData replaceTelephonyTransferTargetsRequest, RequestOptions requestOptions) { + return this.serviceClient.replaceTelephonyTransferTargetsWithResponseAsync(agentName, ifMatch, + replaceTelephonyTransferTargetsRequest, requestOptions); + } + + /** + * Create an agent telephony binding + * + * Creates a telephony binding for the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param body The provider-specific binding to create. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a telephony binding owned by a voice agent on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono createTelephonyBinding(String agentName, CreateTelephonyBindingRequest body) { + // Generated convenience method for createTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + return createTelephonyBindingWithResponse(agentName, BinaryData.fromObject(body), requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyBinding.class)); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent whose bindings are listed. + * @param provider Filters bindings by provider. + * @param status Filters bindings by lifecycle status. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyBindings(String agentName, TelephonyProvider provider, + TelephonyBindingStatus status, Integer limit, PageOrder order, String after, String before) { + // Generated convenience method for listTelephonyBindings + RequestOptions requestOptions = new RequestOptions(); + if (provider != null) { + requestOptions.addQueryParam("provider", provider.toString(), false); + } + if (status != null) { + requestOptions.addQueryParam("status", status.toString(), false); + } + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + PagedFlux pagedFluxResponse = listTelephonyBindings(agentName, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux + .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyBindingListItem.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent whose bindings are listed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyBindings(String agentName) { + // Generated convenience method for listTelephonyBindings + RequestOptions requestOptions = new RequestOptions(); + PagedFlux pagedFluxResponse = listTelephonyBindings(agentName, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux + .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyBindingListItem.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * Get an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getTelephonyBinding(String agentName, String bindingId) { + // Generated convenience method for getTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyBindingWithResponse(agentName, bindingId, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyBinding.class)); + } + + /** + * Update an agent telephony binding + * + * Updates a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param body The binding properties to update. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a telephony binding owned by a voice agent on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono updateTelephonyBinding(String agentName, String bindingId, String ifMatch, + UpdateTelephonyBindingRequest body) { + // Generated convenience method for updateTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + JsonMergePatchHelper.getUpdateTelephonyBindingRequestAccessor().prepareModelForJsonMergePatch(body, true); + BinaryData bodyInBinaryData = BinaryData.fromObject(body); + // BinaryData.fromObject() will not fire serialization, use getLength() to fire serialization. + bodyInBinaryData.getLength(); + JsonMergePatchHelper.getUpdateTelephonyBindingRequestAccessor().prepareModelForJsonMergePatch(body, false); + return updateTelephonyBindingWithResponse(agentName, bindingId, ifMatch, bodyInBinaryData, requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyBinding.class)); + } + + /** + * Delete an agent telephony binding + * + * Deletes a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return A {@link Mono} that completes when a successful response is received. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono deleteTelephonyBinding(String agentName, String bindingId, String ifMatch) { + // Generated convenience method for deleteTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + return deleteTelephonyBindingWithResponse(agentName, bindingId, ifMatch, requestOptions) + .flatMap(FluxUtil::toMono); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose calls are listed. + * @param provider Filters calls by provider. + * @param status Filters calls by lifecycle status. + * @param startedAfter Includes calls that started at or after this Unix timestamp in seconds. + * @param startedBefore Includes calls that started at or before this Unix timestamp in seconds. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyCalls(String agentName, TelephonyProvider provider, + TelephonyCallStatus status, OffsetDateTime startedAfter, OffsetDateTime startedBefore, Integer limit, + PageOrder order, String after, String before) { + // Generated convenience method for listTelephonyCalls + RequestOptions requestOptions = new RequestOptions(); + if (provider != null) { + requestOptions.addQueryParam("provider", provider.toString(), false); + } + if (status != null) { + requestOptions.addQueryParam("status", status.toString(), false); + } + if (startedAfter != null) { + requestOptions.addQueryParam("started_after", String.valueOf(startedAfter.toEpochSecond()), false); + } + if (startedBefore != null) { + requestOptions.addQueryParam("started_before", String.valueOf(startedBefore.toEpochSecond()), false); + } + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + PagedFlux pagedFluxResponse = listTelephonyCalls(agentName, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux + .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallSummary.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose calls are listed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyCalls(String agentName) { + // Generated convenience method for listTelephonyCalls + RequestOptions requestOptions = new RequestOptions(); + PagedFlux pagedFluxResponse = listTelephonyCalls(agentName, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux + .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallSummary.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * Get an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the call record. + * @param callId The service-generated call identifier. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getTelephonyCall(String agentName, String callId) { + // Generated convenience method for getTelephonyCallWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyCallWithResponse(agentName, callId, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallRecord.class)); + } + + /** + * Transfer an active agent telephony call + * + * Transfers an active inbound call to a configured target for the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param target The name of a transfer target configured for the voice agent. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return detailed diagnostics for a durable inbound call to a voice agent on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono transferTelephonyCall(String agentName, String callId, String target) { + // Generated convenience method for transferTelephonyCallWithResponse + RequestOptions requestOptions = new RequestOptions(); + TransferTelephonyCallRequest transferTelephonyCallRequestObj = new TransferTelephonyCallRequest(target); + BinaryData transferTelephonyCallRequest = BinaryData.fromObject(transferTelephonyCallRequestObj); + return transferTelephonyCallWithResponse(agentName, callId, transferTelephonyCallRequest, requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallRecord.class)); + } + + /** + * End an active agent telephony call + * + * Ends an active inbound call owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return detailed diagnostics for a durable inbound call to a voice agent on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono endTelephonyCall(String agentName, String callId) { + // Generated convenience method for endTelephonyCallWithResponse + RequestOptions requestOptions = new RequestOptions(); + return endTelephonyCallWithResponse(agentName, callId, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallRecord.class)); + } + + /** + * Get agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose transfer targets are retrieved. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getTelephonyTransferTargets(String agentName) { + // Generated convenience method for getTelephonyTransferTargetsWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyTransferTargetsWithResponse(agentName, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyTransferTargets.class)); + } + + /** + * Replace agent telephony transfer targets + * + * Replaces all transfer targets configured for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose transfer targets are replaced. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param transferTargets The complete set of destinations to which the voice agent may transfer calls. An empty + * array clears all targets when replacing the configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the telephony transfer targets configured for one voice agent on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono replaceTelephonyTransferTargets(String agentName, String ifMatch, + List transferTargets) { + // Generated convenience method for replaceTelephonyTransferTargetsWithResponse + RequestOptions requestOptions = new RequestOptions(); + ReplaceTelephonyTransferTargetsRequest replaceTelephonyTransferTargetsRequestObj + = new ReplaceTelephonyTransferTargetsRequest(transferTargets); + BinaryData replaceTelephonyTransferTargetsRequest + = BinaryData.fromObject(replaceTelephonyTransferTargetsRequestObj); + return replaceTelephonyTransferTargetsWithResponse(agentName, ifMatch, replaceTelephonyTransferTargetsRequest, + requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyTransferTargets.class)); + } + + /** + * Create a new code-based agent + * + * Creates a new code-based agent. Uploads the code zip and creates the agent in a single call. + * The agent name is provided in the `x-ms-agent-name` header since POST /agents has no name in the URL path. + * The SHA-256 hex digest of the zip is provided in the `x-ms-code-zip-sha256` header for integrity and dedup. + * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is + * irrelevant). + * Maximum upload size is 250 MB. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     state: String(enabled/disabled) (Required)
+     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
+     *     versions (Required): {
+     *         latest (Required): {
+     *             metadata (Required): {
+     *                 String: String (Required)
+     *             }
+     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *             id: String (Required)
+     *             name: String (Required)
+     *             version: String (Required)
+     *             description: String (Optional)
+     *             created_at: long (Required)
+     *             definition (Required): {
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *                 rai_config (Optional): {
+     *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
+     *                 }
+     *             }
+     *             draft: Boolean (Optional)
+     *             status: String(creating/active/failed/deleting/deleted) (Optional)
+     *             instance_identity (Optional): {
+     *                 principal_id: String (Required)
+     *                 client_id: String (Required)
+     *                 status: String(active/disabled) (Optional)
+     *             }
+     *             blueprint (Optional): (recursive schema, see blueprint above)
      *             blueprint_reference (Optional): {
      *                 type: String(ManagedAgentIdentityBlueprint) (Required)
      *             }
@@ -4520,9 +6102,26 @@ Mono> createAgentFromCodeWithResponseInternal(String agentN
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -4646,9 +6245,26 @@ Mono> updateAgentFromCodeWithResponseInternal(String agentN
      *     description: String (Optional)
      *     created_at: long (Required)
      *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external) (Required)
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
      *         rai_config (Optional): {
      *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
      *         }
      *     }
      *     draft: Boolean (Optional)
diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java
index 848e00e4f16c1..920229c22d1a3 100644
--- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java
+++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java
@@ -16,6 +16,8 @@
 import com.azure.ai.agents.implementation.models.CreateSessionRequest;
 import com.azure.ai.agents.implementation.models.GetMicrosoft365AppPackageRequest;
 import com.azure.ai.agents.implementation.models.PublishAgentToMicrosoft365Request;
+import com.azure.ai.agents.implementation.models.ReplaceTelephonyTransferTargetsRequest;
+import com.azure.ai.agents.implementation.models.TransferTelephonyCallRequest;
 import com.azure.ai.agents.implementation.models.UpdateAgentFromManifestRequest;
 import com.azure.ai.agents.implementation.models.UpdateAgentRequest;
 import com.azure.ai.agents.implementation.utils.FileUtils;
@@ -29,6 +31,7 @@
 import com.azure.ai.agents.models.CreateAgentVersionFromCodeContent;
 import com.azure.ai.agents.models.CreateAgentVersionFromCodeMetadata;
 import com.azure.ai.agents.models.CreateAgentVersionInput;
+import com.azure.ai.agents.models.CreateTelephonyBindingRequest;
 import com.azure.ai.agents.models.GetMicrosoft365AppPackageOptions;
 import com.azure.ai.agents.models.HostedAgentDefinition;
 import com.azure.ai.agents.models.Microsoft365PublishDefaults;
@@ -38,7 +41,17 @@
 import com.azure.ai.agents.models.SessionDirectoryEntry;
 import com.azure.ai.agents.models.SessionFileWriteResult;
 import com.azure.ai.agents.models.SessionLogEvent;
+import com.azure.ai.agents.models.TelephonyBinding;
+import com.azure.ai.agents.models.TelephonyBindingListItem;
+import com.azure.ai.agents.models.TelephonyBindingStatus;
+import com.azure.ai.agents.models.TelephonyCallRecord;
+import com.azure.ai.agents.models.TelephonyCallStatus;
+import com.azure.ai.agents.models.TelephonyCallSummary;
+import com.azure.ai.agents.models.TelephonyProvider;
+import com.azure.ai.agents.models.TelephonyTransferTarget;
+import com.azure.ai.agents.models.TelephonyTransferTargets;
 import com.azure.ai.agents.models.UpdateAgentDetailsOptions;
+import com.azure.ai.agents.models.UpdateTelephonyBindingRequest;
 import com.azure.ai.agents.models.VersionIndicator;
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.ReturnType;
@@ -58,6 +71,8 @@
 import com.openai.models.conversations.Conversation;
 import java.io.IOException;
 import java.nio.file.Paths;
+import java.time.OffsetDateTime;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -95,9 +110,26 @@ public final class AgentsClient {
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -203,9 +235,26 @@ public Response getAgentWithResponse(String agentName, RequestOption
      *     }
      *     description: String (Optional)
      *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external) (Required)
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
      *         rai_config (Optional): {
      *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
      *         }
      *     }
      *     blueprint_reference (Optional): {
@@ -232,9 +281,26 @@ public Response getAgentWithResponse(String agentName, RequestOption
      *     description: String (Optional)
      *     created_at: long (Required)
      *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external) (Required)
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
      *         rai_config (Optional): {
      *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
      *         }
      *     }
      *     draft: Boolean (Optional)
@@ -362,9 +428,26 @@ public void deleteAgentVersion(String agentName, String agentVersion) {
      *     description: String (Optional)
      *     created_at: long (Required)
      *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external) (Required)
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
      *         rai_config (Optional): {
      *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
      *         }
      *     }
      *     draft: Boolean (Optional)
@@ -481,9 +564,26 @@ public PagedIterable listAgentVersions(String agentName) {
      *     }
      *     description: String (Optional)
      *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external) (Required)
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
      *         rai_config (Optional): {
      *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
      *         }
      *     }
      *     blueprint_reference (Optional): {
@@ -568,9 +668,26 @@ public PagedIterable listAgentVersions(String agentName) {
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -675,9 +792,26 @@ Response createAgentWithResponse(BinaryData createAgentRequest, Requ
      *     }
      *     description: String (Optional)
      *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external) (Required)
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
      *         rai_config (Optional): {
      *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
      *         }
      *     }
      *     blueprint_reference (Optional): {
@@ -709,9 +843,26 @@ Response createAgentWithResponse(BinaryData createAgentRequest, Requ
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -885,9 +1036,26 @@ AgentDetails updateAgent(String agentName, AgentDefinition definition) {
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -1022,9 +1190,26 @@ Response createAgentFromManifestWithResponse(BinaryData createAgentF
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -1153,9 +1338,26 @@ Response updateAgentFromManifestWithResponse(String agentName,
      *     description: String (Optional)
      *     created_at: long (Required)
      *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external) (Required)
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
      *         rai_config (Optional): {
      *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
      *         }
      *     }
      *     draft: Boolean (Optional)
@@ -1385,9 +1587,26 @@ public AgentVersionDetails createAgentVersionFromManifest(String agentName, Stri
      *     description: String (Optional)
      *     created_at: long (Required)
      *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external) (Required)
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
      *         rai_config (Optional): {
      *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
      *         }
      *     }
      *     draft: Boolean (Optional)
@@ -1508,7 +1727,7 @@ public PagedIterable listAgents(AgentKind kind, Integer limit, Pag
      * Query Parameters
      * NameTypeRequiredDescription
      * kindStringNoFilter agents by kind. If not provided, all agents are returned.
-     * Allowed values: "prompt", "hosted", "workflow", "external".
+     * Allowed values: "prompt", "hosted", "workflow", "external", "voice".
      * limitIntegerNoA limit on the number of objects to be returned. Limit can range
      * between 1 and 100, and the
      * default is 20.
@@ -1547,9 +1766,26 @@ public PagedIterable listAgents(AgentKind kind, Integer limit, Pag
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -1924,35 +2160,6 @@ AgentDetails createAgent(CreateAgentOptions options) {
         return createAgentWithResponse(createAgentRequest, requestOptions).getValue().toObject(AgentDetails.class);
     }
 
-    /**
-     * Create an agent version
-     *
-     * Creates a new version for the specified agent and returns the created version resource.
-     *
-     * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.
-     * - Must start and end with alphanumeric characters,
-     * - Can contain hyphens in the middle
-     * - Must not exceed 63 characters.
-     * @param definition The agent definition. This can be a prompt, workflow, hosted, external, or voice agent
-     * definition.
-     * @throws IllegalArgumentException thrown if parameters fail the validation.
-     * @throws HttpResponseException thrown if the request is rejected by server.
-     * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
-     * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404.
-     * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409.
-     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent.
-     * @return the response.
-     */
-    @ServiceMethod(returns = ReturnType.SINGLE)
-    public AgentVersionDetails createAgentVersion(String agentName, AgentDefinition definition) {
-        // The TypeSpec operation flattens more fields than the emitter allows for automatic convenience generation.
-        RequestOptions requestOptions = new RequestOptions();
-        CreateAgentVersionRequest createAgentVersionRequestObj = new CreateAgentVersionRequest(definition);
-        BinaryData createAgentVersionRequest = BinaryData.fromObject(createAgentVersionRequestObj);
-        return createAgentVersionWithResponse(agentName, createAgentVersionRequest, requestOptions).getValue()
-            .toObject(AgentVersionDetails.class);
-    }
-
     /**
      * Create a new agent version.
      *
@@ -2250,9 +2457,26 @@ AgentDetails updateAgent(String agentName, AgentDefinition definition, Map listAgentVersions(String agentName, In
             .mapPage(bodyItemValue -> bodyItemValue.toObject(AgentVersionDetails.class));
     }
 
+    /**
+     * Generate an agent
+     *
+     * Generates and creates an agent from kind-specific high-level inputs.
+     * The generated definition remains fully editable through the standard agent versioning operations.
+     * 

Request Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     state: String(enabled/disabled) (Required)
+     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
+     *     versions (Required): {
+     *         latest (Required): {
+     *             metadata (Required): {
+     *                 String: String (Required)
+     *             }
+     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *             id: String (Required)
+     *             name: String (Required)
+     *             version: String (Required)
+     *             description: String (Optional)
+     *             created_at: long (Required)
+     *             definition (Required): {
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *                 rai_config (Optional): {
+     *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
+     *                 }
+     *             }
+     *             draft: Boolean (Optional)
+     *             status: String(creating/active/failed/deleting/deleted) (Optional)
+     *             instance_identity (Optional): {
+     *                 principal_id: String (Required)
+     *                 client_id: String (Required)
+     *                 status: String(active/disabled) (Optional)
+     *             }
+     *             blueprint (Optional): (recursive schema, see blueprint above)
+     *             blueprint_reference (Optional): {
+     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
+     *             }
+     *             agent_guid: String (Optional)
+     *         }
+     *     }
+     *     agent_endpoint (Optional): {
+     *         version_selector (Optional): {
+     *             version_selection_rules (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     type: String(FixedRatio) (Required)
+     *                     agent_version: String (Optional, Required on create)
+     *                 }
+     *             ]
+     *         }
+     *         protocol_configuration (Optional): {
+     *             activity (Optional): {
+     *                 enable_m365_public_endpoint: Boolean (Optional)
+     *                 access_boundaries (Optional): [
+     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
+     *                 ]
+     *             }
+     *             responses (Optional): {
+     *             }
+     *             a2a (Optional): {
+     *             }
+     *             mcp (Optional): {
+     *             }
+     *             invocations (Optional): {
+     *             }
+     *             invocations_ws (Optional): {
+     *             }
+     *         }
+     *         authorization_schemes (Optional): [
+     *              (Optional){
+     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
+     *             }
+     *         ]
+     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
+     *     }
+     *     digital_worker_type: String(m365) (Optional)
+     *     instance_identity (Optional): (recursive schema, see instance_identity above)
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): (recursive schema, see blueprint_reference above)
+     *     agent_card (Optional): {
+     *         version: String (Optional, Required on create)
+     *         description: String (Optional)
+     *         skills (Optional, Required on create): [
+     *              (Optional, Required on create){
+     *                 id: String (Optional, Required on create)
+     *                 name: String (Optional, Required on create)
+     *                 description: String (Optional)
+     *                 tags (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 examples (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *             }
+     *         ]
+     *     }
+     * }
+     * }
+     * 
+ * + * @param body The kind-specific inputs for generating and creating an agent. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response generateAgentWithResponse(BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.generateAgentWithResponse(body, requestOptions); + } + /** * Publish an agent to Microsoft 365 * @@ -4044,6 +4412,29 @@ public Response getMicrosoft365PublishDefaultsWithResponse(String ag return this.serviceClient.getMicrosoft365PublishDefaultsWithResponse(agentName, requestOptions); } + /** + * Generate an agent + * + * Generates and creates an agent from kind-specific high-level inputs. + * The generated definition remains fully editable through the standard agent versioning operations. + * + * @param body The kind-specific inputs for generating and creating an agent. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public AgentDetails generateAgent(BinaryData body) { + // Generated convenience method for generateAgentWithResponse + RequestOptions requestOptions = new RequestOptions(); + return generateAgentWithResponse(body, requestOptions).getValue().toObject(AgentDetails.class); + } + /** * Publish an agent to Microsoft 365 * @@ -4192,51 +4583,1176 @@ public Microsoft365PublishDefaults getMicrosoft365PublishDefaults(String agentNa } /** - * Create a new code-based agent + * Create an agent telephony binding * - * Creates a new code-based agent. Uploads the code zip and creates the agent in a single call. - * The agent name is provided in the `x-ms-agent-name` header since POST /agents has no name in the URL path. - * The SHA-256 hex digest of the zip is provided in the `x-ms-code-zip-sha256` header for integrity and dedup. - * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is - * irrelevant). - * Maximum upload size is 250 MB. + * Creates a telephony binding for the voice agent named in the path. + *

Header Parameters

+ * + * + * + * + * + *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as + * HTTP-date
+ * You can add these to a request with {@link RequestOptions#addHeader} + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     * }
+     * }
+     * 
+ * *

Response Body Schema

* *
      * {@code
      * {
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
      *     id: String (Required)
-     *     name: String (Required)
-     *     state: String(enabled/disabled) (Required)
-     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
-     *     versions (Required): {
-     *         latest (Required): {
-     *             metadata (Required): {
-     *                 String: String (Required)
-     *             }
-     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *             id: String (Required)
-     *             name: String (Required)
-     *             version: String (Required)
-     *             description: String (Optional)
-     *             created_at: long (Required)
-     *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
-     *                 rai_config (Optional): {
-     *                     rai_policy_name: String (Required)
-     *                 }
-     *             }
-     *             draft: Boolean (Optional)
-     *             status: String(creating/active/failed/deleting/deleted) (Optional)
-     *             instance_identity (Optional): {
-     *                 principal_id: String (Required)
-     *                 client_id: String (Required)
-     *                 status: String(active/disabled) (Optional)
-     *             }
-     *             blueprint (Optional): (recursive schema, see blueprint above)
-     *             blueprint_reference (Optional): {
-     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param body The provider-specific binding to create. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response createTelephonyBindingWithResponse(String agentName, BinaryData body, + RequestOptions requestOptions) { + return this.serviceClient.createTelephonyBindingWithResponse(agentName, body, requestOptions); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", + * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose bindings are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyBindings(String agentName, RequestOptions requestOptions) { + return this.serviceClient.listTelephonyBindings(agentName, requestOptions); + } + + /** + * Get an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyBindingWithResponse(String agentName, String bindingId, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyBindingWithResponse(agentName, bindingId, requestOptions); + } + + /** + * Update an agent telephony binding + * + * Updates a telephony binding owned by the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     status: String(active/suspended) (Optional)
+     *     label: String (Optional)
+     *     connection: String (Optional)
+     *     phone_number: String (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param body The binding properties to update. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response updateTelephonyBindingWithResponse(String agentName, String bindingId, String ifMatch, + BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.updateTelephonyBindingWithResponse(agentName, bindingId, ifMatch, body, + requestOptions); + } + + /** + * Delete an agent telephony binding + * + * Deletes a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response deleteTelephonyBindingWithResponse(String agentName, String bindingId, String ifMatch, + RequestOptions requestOptions) { + return this.serviceClient.deleteTelephonyBindingWithResponse(agentName, bindingId, ifMatch, requestOptions); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: + * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix + * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this + * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose calls are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyCalls(String agentName, RequestOptions requestOptions) { + return this.serviceClient.listTelephonyCalls(agentName, requestOptions); + } + + /** + * Get an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the call record. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyCallWithResponse(String agentName, String callId, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyCallWithResponse(agentName, callId, requestOptions); + } + + /** + * Transfer an active agent telephony call + * + * Transfers an active inbound call to a configured target for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     target: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param transferTelephonyCallRequest The transferTelephonyCallRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response transferTelephonyCallWithResponse(String agentName, String callId, + BinaryData transferTelephonyCallRequest, RequestOptions requestOptions) { + return this.serviceClient.transferTelephonyCallWithResponse(agentName, callId, transferTelephonyCallRequest, + requestOptions); + } + + /** + * End an active agent telephony call + * + * Ends an active inbound call owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response endTelephonyCallWithResponse(String agentName, String callId, + RequestOptions requestOptions) { + return this.serviceClient.endTelephonyCallWithResponse(agentName, callId, requestOptions); + } + + /** + * Get agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyTransferTargetsWithResponse(String agentName, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyTransferTargetsWithResponse(agentName, requestOptions); + } + + /** + * Replace agent telephony transfer targets + * + * Replaces all transfer targets configured for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are replaced. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param replaceTelephonyTransferTargetsRequest The replaceTelephonyTransferTargetsRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the telephony transfer targets configured for one voice agent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response replaceTelephonyTransferTargetsWithResponse(String agentName, String ifMatch, + BinaryData replaceTelephonyTransferTargetsRequest, RequestOptions requestOptions) { + return this.serviceClient.replaceTelephonyTransferTargetsWithResponse(agentName, ifMatch, + replaceTelephonyTransferTargetsRequest, requestOptions); + } + + /** + * Create an agent telephony binding + * + * Creates a telephony binding for the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param body The provider-specific binding to create. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a telephony binding owned by a voice agent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyBinding createTelephonyBinding(String agentName, CreateTelephonyBindingRequest body) { + // Generated convenience method for createTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + return createTelephonyBindingWithResponse(agentName, BinaryData.fromObject(body), requestOptions).getValue() + .toObject(TelephonyBinding.class); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent whose bindings are listed. + * @param provider Filters bindings by provider. + * @param status Filters bindings by lifecycle status. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyBindings(String agentName, TelephonyProvider provider, + TelephonyBindingStatus status, Integer limit, PageOrder order, String after, String before) { + // Generated convenience method for listTelephonyBindings + RequestOptions requestOptions = new RequestOptions(); + if (provider != null) { + requestOptions.addQueryParam("provider", provider.toString(), false); + } + if (status != null) { + requestOptions.addQueryParam("status", status.toString(), false); + } + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + return serviceClient.listTelephonyBindings(agentName, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(TelephonyBindingListItem.class)); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent whose bindings are listed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyBindings(String agentName) { + // Generated convenience method for listTelephonyBindings + RequestOptions requestOptions = new RequestOptions(); + return serviceClient.listTelephonyBindings(agentName, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(TelephonyBindingListItem.class)); + } + + /** + * Get an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyBinding getTelephonyBinding(String agentName, String bindingId) { + // Generated convenience method for getTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyBindingWithResponse(agentName, bindingId, requestOptions).getValue() + .toObject(TelephonyBinding.class); + } + + /** + * Update an agent telephony binding + * + * Updates a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param body The binding properties to update. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a telephony binding owned by a voice agent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyBinding updateTelephonyBinding(String agentName, String bindingId, String ifMatch, + UpdateTelephonyBindingRequest body) { + // Generated convenience method for updateTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + JsonMergePatchHelper.getUpdateTelephonyBindingRequestAccessor().prepareModelForJsonMergePatch(body, true); + BinaryData bodyInBinaryData = BinaryData.fromObject(body); + // BinaryData.fromObject() will not fire serialization, use getLength() to fire serialization. + bodyInBinaryData.getLength(); + JsonMergePatchHelper.getUpdateTelephonyBindingRequestAccessor().prepareModelForJsonMergePatch(body, false); + return updateTelephonyBindingWithResponse(agentName, bindingId, ifMatch, bodyInBinaryData, requestOptions) + .getValue() + .toObject(TelephonyBinding.class); + } + + /** + * Delete an agent telephony binding + * + * Deletes a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public void deleteTelephonyBinding(String agentName, String bindingId, String ifMatch) { + // Generated convenience method for deleteTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + deleteTelephonyBindingWithResponse(agentName, bindingId, ifMatch, requestOptions).getValue(); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose calls are listed. + * @param provider Filters calls by provider. + * @param status Filters calls by lifecycle status. + * @param startedAfter Includes calls that started at or after this Unix timestamp in seconds. + * @param startedBefore Includes calls that started at or before this Unix timestamp in seconds. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyCalls(String agentName, TelephonyProvider provider, + TelephonyCallStatus status, OffsetDateTime startedAfter, OffsetDateTime startedBefore, Integer limit, + PageOrder order, String after, String before) { + // Generated convenience method for listTelephonyCalls + RequestOptions requestOptions = new RequestOptions(); + if (provider != null) { + requestOptions.addQueryParam("provider", provider.toString(), false); + } + if (status != null) { + requestOptions.addQueryParam("status", status.toString(), false); + } + if (startedAfter != null) { + requestOptions.addQueryParam("started_after", String.valueOf(startedAfter.toEpochSecond()), false); + } + if (startedBefore != null) { + requestOptions.addQueryParam("started_before", String.valueOf(startedBefore.toEpochSecond()), false); + } + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + return serviceClient.listTelephonyCalls(agentName, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(TelephonyCallSummary.class)); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose calls are listed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyCalls(String agentName) { + // Generated convenience method for listTelephonyCalls + RequestOptions requestOptions = new RequestOptions(); + return serviceClient.listTelephonyCalls(agentName, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(TelephonyCallSummary.class)); + } + + /** + * Get an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the call record. + * @param callId The service-generated call identifier. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyCallRecord getTelephonyCall(String agentName, String callId) { + // Generated convenience method for getTelephonyCallWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyCallWithResponse(agentName, callId, requestOptions).getValue() + .toObject(TelephonyCallRecord.class); + } + + /** + * Transfer an active agent telephony call + * + * Transfers an active inbound call to a configured target for the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param target The name of a transfer target configured for the voice agent. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return detailed diagnostics for a durable inbound call to a voice agent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyCallRecord transferTelephonyCall(String agentName, String callId, String target) { + // Generated convenience method for transferTelephonyCallWithResponse + RequestOptions requestOptions = new RequestOptions(); + TransferTelephonyCallRequest transferTelephonyCallRequestObj = new TransferTelephonyCallRequest(target); + BinaryData transferTelephonyCallRequest = BinaryData.fromObject(transferTelephonyCallRequestObj); + return transferTelephonyCallWithResponse(agentName, callId, transferTelephonyCallRequest, requestOptions) + .getValue() + .toObject(TelephonyCallRecord.class); + } + + /** + * End an active agent telephony call + * + * Ends an active inbound call owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return detailed diagnostics for a durable inbound call to a voice agent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyCallRecord endTelephonyCall(String agentName, String callId) { + // Generated convenience method for endTelephonyCallWithResponse + RequestOptions requestOptions = new RequestOptions(); + return endTelephonyCallWithResponse(agentName, callId, requestOptions).getValue() + .toObject(TelephonyCallRecord.class); + } + + /** + * Get agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose transfer targets are retrieved. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyTransferTargets getTelephonyTransferTargets(String agentName) { + // Generated convenience method for getTelephonyTransferTargetsWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyTransferTargetsWithResponse(agentName, requestOptions).getValue() + .toObject(TelephonyTransferTargets.class); + } + + /** + * Replace agent telephony transfer targets + * + * Replaces all transfer targets configured for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose transfer targets are replaced. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param transferTargets The complete set of destinations to which the voice agent may transfer calls. An empty + * array clears all targets when replacing the configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the telephony transfer targets configured for one voice agent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyTransferTargets replaceTelephonyTransferTargets(String agentName, String ifMatch, + List transferTargets) { + // Generated convenience method for replaceTelephonyTransferTargetsWithResponse + RequestOptions requestOptions = new RequestOptions(); + ReplaceTelephonyTransferTargetsRequest replaceTelephonyTransferTargetsRequestObj + = new ReplaceTelephonyTransferTargetsRequest(transferTargets); + BinaryData replaceTelephonyTransferTargetsRequest + = BinaryData.fromObject(replaceTelephonyTransferTargetsRequestObj); + return replaceTelephonyTransferTargetsWithResponse(agentName, ifMatch, replaceTelephonyTransferTargetsRequest, + requestOptions).getValue().toObject(TelephonyTransferTargets.class); + } + + /** + * Create a new code-based agent + * + * Creates a new code-based agent. Uploads the code zip and creates the agent in a single call. + * The agent name is provided in the `x-ms-agent-name` header since POST /agents has no name in the URL path. + * The SHA-256 hex digest of the zip is provided in the `x-ms-code-zip-sha256` header for integrity and dedup. + * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is + * irrelevant). + * Maximum upload size is 250 MB. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     state: String(enabled/disabled) (Required)
+     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
+     *     versions (Required): {
+     *         latest (Required): {
+     *             metadata (Required): {
+     *                 String: String (Required)
+     *             }
+     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *             id: String (Required)
+     *             name: String (Required)
+     *             version: String (Required)
+     *             description: String (Optional)
+     *             created_at: long (Required)
+     *             definition (Required): {
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *                 rai_config (Optional): {
+     *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
+     *                 }
+     *             }
+     *             draft: Boolean (Optional)
+     *             status: String(creating/active/failed/deleting/deleted) (Optional)
+     *             instance_identity (Optional): {
+     *                 principal_id: String (Required)
+     *                 client_id: String (Required)
+     *                 status: String(active/disabled) (Optional)
+     *             }
+     *             blueprint (Optional): (recursive schema, see blueprint above)
+     *             blueprint_reference (Optional): {
+     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
      *             }
      *             agent_guid: String (Optional)
      *         }
@@ -4352,9 +5868,26 @@ Response createAgentFromCodeWithResponseInternal(String agentName, S
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -4478,9 +6011,26 @@ Response updateAgentFromCodeWithResponseInternal(String agentName, S
      *     description: String (Optional)
      *     created_at: long (Required)
      *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external) (Required)
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
      *         rai_config (Optional): {
      *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
      *         }
      *     }
      *     draft: Boolean (Optional)
diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsServicePollUtils.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsServicePollUtils.java
index 35f75eba7c0b5..02bc1ec5f45ab 100644
--- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsServicePollUtils.java
+++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsServicePollUtils.java
@@ -3,9 +3,29 @@
 
 package com.azure.ai.agents.implementation;
 
+import com.azure.ai.agents.models.JobStatus;
 import com.azure.ai.agents.models.MemoryStoreUpdateStatus;
+import com.azure.core.http.HttpMethod;
+import com.azure.core.http.HttpRequest;
+import com.azure.core.http.HttpResponse;
+import com.azure.core.util.BinaryData;
+import com.azure.core.util.Context;
+import com.azure.core.util.CoreUtils;
+import com.azure.core.util.FluxUtil;
+import com.azure.core.util.UrlBuilder;
+import com.azure.core.util.logging.ClientLogger;
 import com.azure.core.util.polling.LongRunningOperationStatus;
 import com.azure.core.util.polling.PollResponse;
+import com.azure.core.util.polling.PollingContext;
+import com.azure.core.util.polling.PollingStrategyOptions;
+import com.azure.core.util.serializer.ObjectSerializer;
+import com.azure.core.util.serializer.TypeReference;
+import reactor.core.publisher.Mono;
+
+import java.time.Duration;
+import java.time.OffsetDateTime;
+import java.util.Collections;
+import java.util.Map;
 
 /**
  * Shared polling helpers for the Agents SDK.
@@ -17,39 +37,143 @@
  * 

This class is package-private; it is not part of the public API.

*/ final class AgentsServicePollUtils { + private static final ClientLogger LOGGER = new ClientLogger(AgentsServicePollUtils.class); + private static final String RESOURCE_LOCATION = "resourceLocation"; private AgentsServicePollUtils() { } + static Mono> poll(PollingStrategyOptions options, ObjectSerializer serializer, String endpoint, + PollingContext pollingContext, TypeReference pollResponseType) { + HttpRequest request = new HttpRequest(HttpMethod.GET, getPollUrl(options, pollingContext)); + Context context = options.getContext() == null ? Context.NONE : options.getContext(); + return FluxUtil + .withContext(subscriberContext -> options.getHttpPipeline() + .send(request, CoreUtils.mergeContexts(subscriberContext, context))) + .flatMap(response -> response.getBodyAsByteArray() + .defaultIfEmpty(new byte[0]) + .flatMap(bytes -> createPollResponse(BinaryData.fromBytes(bytes), response, serializer, endpoint, + pollingContext, pollResponseType))); + } + + static PollResponse pollSync(PollingStrategyOptions options, ObjectSerializer serializer, String endpoint, + PollingContext pollingContext, TypeReference pollResponseType) { + HttpRequest request = new HttpRequest(HttpMethod.GET, getPollUrl(options, pollingContext)); + Context context = options.getContext() == null ? Context.NONE : options.getContext(); + try (HttpResponse response = options.getHttpPipeline().sendSync(request, context)) { + byte[] bytes = response.getBodyAsByteArray().defaultIfEmpty(new byte[0]).block(); + return createPollResponseSync(BinaryData.fromBytes(bytes), response, serializer, endpoint, pollingContext, + pollResponseType); + } + } + + private static Mono> createPollResponse(BinaryData responseBody, HttpResponse response, + ObjectSerializer serializer, String endpoint, PollingContext pollingContext, + TypeReference pollResponseType) { + Duration retryAfter = PollingUtils.getRetryAfterFromHeaders(response.getHeaders(), OffsetDateTime::now); + if (responseBody.getLength() == 0) { + return Mono.just(new PollResponse<>(LongRunningOperationStatus.IN_PROGRESS, null, retryAfter)); + } + + return PollingUtils.deserializeResponse(responseBody, serializer, PollingUtils.POST_POLL_RESULT_TYPE_REFERENCE) + .defaultIfEmpty(Collections.emptyMap()) + .flatMap(pollResult -> { + updatePollingContext(pollingContext, pollResult, responseBody, endpoint); + LongRunningOperationStatus status = mapStatus(pollResult.get("status")); + return PollingUtils.deserializeResponse(responseBody, serializer, pollResponseType) + .map(value -> new PollResponse<>(status, value, retryAfter)) + .defaultIfEmpty(new PollResponse<>(status, null, retryAfter)); + }); + } + + private static PollResponse createPollResponseSync(BinaryData responseBody, HttpResponse response, + ObjectSerializer serializer, String endpoint, PollingContext pollingContext, + TypeReference pollResponseType) { + Duration retryAfter = PollingUtils.getRetryAfterFromHeaders(response.getHeaders(), OffsetDateTime::now); + if (responseBody.getLength() == 0) { + return new PollResponse<>(LongRunningOperationStatus.IN_PROGRESS, null, retryAfter); + } + + Map pollResult = PollingUtils.deserializeResponseSync(responseBody, serializer, + PollingUtils.POST_POLL_RESULT_TYPE_REFERENCE); + if (pollResult == null) { + pollResult = Collections.emptyMap(); + } + updatePollingContext(pollingContext, pollResult, responseBody, endpoint); + LongRunningOperationStatus status = mapStatus(pollResult.get("status")); + T value = PollingUtils.deserializeResponseSync(responseBody, serializer, pollResponseType); + return new PollResponse<>(status, value, retryAfter); + } + + private static String getPollUrl(PollingStrategyOptions options, PollingContext pollingContext) { + String url = pollingContext.getData(PollingUtils.OPERATION_LOCATION_HEADER.getCaseSensitiveName()); + if (!CoreUtils.isNullOrEmpty(options.getServiceVersion())) { + UrlBuilder urlBuilder = UrlBuilder.parse(url); + urlBuilder.setQueryParameter("api-version", options.getServiceVersion()); + url = urlBuilder.toString(); + } + return url; + } + + private static void updatePollingContext(PollingContext pollingContext, Map pollResult, + BinaryData responseBody, String endpoint) { + pollingContext.setData(PollingUtils.POLL_RESPONSE_BODY, responseBody.toString()); + Object resourceLocation = pollResult.get("resourceLocation"); + if (resourceLocation instanceof String) { + pollingContext.setData(RESOURCE_LOCATION, + PollingUtils.getAbsolutePath((String) resourceLocation, endpoint, LOGGER)); + } + } + /** - * Remaps a {@link PollResponse} whose status may contain a custom service terminal state - * ({@code "completed"}, {@code "superseded"}) that the base {@code OperationResourcePollingStrategy} - * cannot recognize. If no remapping is needed the original response is returned as-is. - * - *

The Memory Stores service defines:

- *
    - *
  • {@code "completed"} {@link LongRunningOperationStatus#SUCCESSFULLY_COMPLETED}
  • - *
  • {@code "superseded"} {@link LongRunningOperationStatus#USER_CANCELLED}
  • - *
+ * Remaps a {@link PollResponse} whose status may contain a custom service status. If no remapping is needed the + * original response is returned as-is. */ static PollResponse remapStatus(PollResponse response) { LongRunningOperationStatus status = response.getStatus(); - LongRunningOperationStatus mapped = mapCustomStatus(status); + LongRunningOperationStatus mapped = mapStatus(status); if (mapped == status) { return response; } return new PollResponse<>(mapped, response.getValue(), response.getRetryAfter()); } - private static LongRunningOperationStatus mapCustomStatus(LongRunningOperationStatus status) { - // Standard statuses (Succeeded, Failed, Canceled, InProgress, NotStarted) are already - // mapped correctly by the parent's PollResult; only remap the custom ones. - String name = status.toString(); - if (MemoryStoreUpdateStatus.COMPLETED.toString().equalsIgnoreCase(name)) { + private static LongRunningOperationStatus mapStatus(Object statusValue) { + if (statusValue == null || CoreUtils.isNullOrEmpty(statusValue.toString().trim())) { + return LongRunningOperationStatus.IN_PROGRESS; + } + if (statusValue == LongRunningOperationStatus.NOT_STARTED + || statusValue == LongRunningOperationStatus.IN_PROGRESS + || statusValue == LongRunningOperationStatus.SUCCESSFULLY_COMPLETED + || statusValue == LongRunningOperationStatus.FAILED + || statusValue == LongRunningOperationStatus.USER_CANCELLED) { + return (LongRunningOperationStatus) statusValue; + } + + String status = statusValue.toString().trim(); + if (JobStatus.QUEUED.toString().equalsIgnoreCase(status)) { + return LongRunningOperationStatus.IN_PROGRESS; + } else if (LongRunningOperationStatus.NOT_STARTED.toString().equalsIgnoreCase(status) + || "NotStarted".equalsIgnoreCase(status)) { + return LongRunningOperationStatus.NOT_STARTED; + } else if (JobStatus.IN_PROGRESS.toString().equalsIgnoreCase(status) + || LongRunningOperationStatus.IN_PROGRESS.toString().equalsIgnoreCase(status) + || "InProgress".equalsIgnoreCase(status) + || "Running".equalsIgnoreCase(status)) { + return LongRunningOperationStatus.IN_PROGRESS; + } else if (JobStatus.SUCCEEDED.toString().equalsIgnoreCase(status) + || MemoryStoreUpdateStatus.COMPLETED.toString().equalsIgnoreCase(status) + || LongRunningOperationStatus.SUCCESSFULLY_COMPLETED.toString().equalsIgnoreCase(status)) { return LongRunningOperationStatus.SUCCESSFULLY_COMPLETED; - } else if (MemoryStoreUpdateStatus.SUPERSEDED.toString().equalsIgnoreCase(name)) { + } else if (JobStatus.FAILED.toString().equalsIgnoreCase(status) + || LongRunningOperationStatus.FAILED.toString().equalsIgnoreCase(status)) { + return LongRunningOperationStatus.FAILED; + } else if (JobStatus.CANCELLED.toString().equalsIgnoreCase(status) + || MemoryStoreUpdateStatus.SUPERSEDED.toString().equalsIgnoreCase(status) + || LongRunningOperationStatus.USER_CANCELLED.toString().equalsIgnoreCase(status) + || "Canceled".equalsIgnoreCase(status)) { return LongRunningOperationStatus.USER_CANCELLED; } - return status; + return LongRunningOperationStatus.fromString(status, false); } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/OperationLocationPollingStrategy.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/OperationLocationPollingStrategy.java index f07bb0e69d2a9..77fe567637ca3 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/OperationLocationPollingStrategy.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/OperationLocationPollingStrategy.java @@ -57,6 +57,7 @@ public OperationLocationPollingStrategy(PollingStrategyOptions pollingStrategyOp */ public OperationLocationPollingStrategy(PollingStrategyOptions pollingStrategyOptions, String propertyName) { super(PollingUtils.OPERATION_LOCATION_HEADER, pollingStrategyOptions); + this.pollingStrategyOptions = pollingStrategyOptions; this.propertyName = propertyName; this.endpoint = pollingStrategyOptions.getEndpoint(); this.serializer = pollingStrategyOptions.getSerializer() != null @@ -136,8 +137,11 @@ public Mono getResult(PollingContext pollingContext, TypeReference resu } } + private final PollingStrategyOptions pollingStrategyOptions; + @Override public Mono> poll(PollingContext pollingContext, TypeReference pollResponseType) { - return super.poll(pollingContext, pollResponseType).map(AgentsServicePollUtils::remapStatus); + return AgentsServicePollUtils.poll(pollingStrategyOptions, serializer, endpoint, pollingContext, + pollResponseType); } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/SyncOperationLocationPollingStrategy.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/SyncOperationLocationPollingStrategy.java index 53d935775f636..714311e322314 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/SyncOperationLocationPollingStrategy.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/SyncOperationLocationPollingStrategy.java @@ -58,6 +58,7 @@ public SyncOperationLocationPollingStrategy(PollingStrategyOptions pollingStrate */ public SyncOperationLocationPollingStrategy(PollingStrategyOptions pollingStrategyOptions, String propertyName) { super(PollingUtils.OPERATION_LOCATION_HEADER, pollingStrategyOptions); + this.pollingStrategyOptions = pollingStrategyOptions; this.propertyName = propertyName; this.endpoint = pollingStrategyOptions.getEndpoint(); this.serializer = pollingStrategyOptions.getSerializer() != null @@ -128,8 +129,11 @@ public U getResult(PollingContext pollingContext, TypeReference resultType } } + private final PollingStrategyOptions pollingStrategyOptions; + @Override public PollResponse poll(PollingContext pollingContext, TypeReference pollResponseType) { - return AgentsServicePollUtils.remapStatus(super.poll(pollingContext, pollResponseType)); + return AgentsServicePollUtils.pollSync(pollingStrategyOptions, serializer, endpoint, pollingContext, + pollResponseType); } } diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/implementation/AgentsServicePollUtilsTest.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/implementation/AgentsServicePollUtilsTest.java index 56b1c3fbc0ca9..8b7be501fbceb 100644 --- a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/implementation/AgentsServicePollUtilsTest.java +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/implementation/AgentsServicePollUtilsTest.java @@ -24,7 +24,12 @@ static Stream remapStatusCases() { Arguments.of("Completed", LongRunningOperationStatus.SUCCESSFULLY_COMPLETED), Arguments.of("COMPLETED", LongRunningOperationStatus.SUCCESSFULLY_COMPLETED), Arguments.of("superseded", LongRunningOperationStatus.USER_CANCELLED), - Arguments.of("Superseded", LongRunningOperationStatus.USER_CANCELLED)); + Arguments.of("Superseded", LongRunningOperationStatus.USER_CANCELLED), + Arguments.of("queued", LongRunningOperationStatus.IN_PROGRESS), + Arguments.of("in_progress", LongRunningOperationStatus.IN_PROGRESS), + Arguments.of("succeeded", LongRunningOperationStatus.SUCCESSFULLY_COMPLETED), + Arguments.of("failed", LongRunningOperationStatus.FAILED), + Arguments.of("cancelled", LongRunningOperationStatus.USER_CANCELLED)); } @ParameterizedTest From ca201ac41497d58cdd52dde8940a3643397dfb7c Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Fri, 4 Sep 2026 20:18:49 +0800 Subject: [PATCH 06/29] Fix workflow and conversation samples Co-Authored-By: Claude --- .../ai/agents/MultipleAgentsConversation.java | 130 +++++++++++------- 1 file changed, 84 insertions(+), 46 deletions(-) diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/MultipleAgentsConversation.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/MultipleAgentsConversation.java index 019292cbc34f0..bba8e603b6b35 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/MultipleAgentsConversation.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/MultipleAgentsConversation.java @@ -9,7 +9,9 @@ import com.azure.ai.agents.models.PromptAgentDefinition; import com.azure.core.util.Configuration; import com.azure.identity.DefaultAzureCredentialBuilder; +import com.openai.client.OpenAIClient; import com.openai.models.conversations.Conversation; +import com.openai.models.conversations.Message; import com.openai.models.conversations.items.ItemCreateParams; import com.openai.models.conversations.items.ItemListPage; import com.openai.models.responses.EasyInputMessage; @@ -35,53 +37,75 @@ public static void main(String[] args) { .serviceVersion(AgentsServiceVersion.getLatest()) .endpoint(endpoint); AgentsClient agentsClient = builder.buildAgentsClient(); - ResponsesClient responsesClient = builder.buildResponsesClient(); - ConversationService conversationsClient = builder.buildOpenAIClient().conversations(); - - // Setting up the conversation with initial messages - Conversation conversation = startConversation(conversationsClient); - addMessageToConversation(conversationsClient, conversation.id(), - "If the user prompt is missing the location in their prompt, assume they are talking about Berlin, Germany.", EasyInputMessage.Role.SYSTEM); - addMessageToConversation(conversationsClient, conversation.id(), "What's the weather like?", EasyInputMessage.Role.USER); - - printConversationItems(conversationsClient, conversation.id(), 2); - - // creating a new agent and their references for future responses - AgentVersionDetails agent1 = createPromptAgent(agentsClient, model, "weather-agent-1"); - AgentVersionDetails agent2 = createPromptAgent(agentsClient, model, "weather-agent-2"); - - AgentReference agent1Reference = new AgentReference(agent1.getName()).setVersion(agent1.getVersion()); - AgentReference agent2Reference = new AgentReference(agent2.getName()).setVersion(agent2.getVersion()); - - // Get response from agent1 - Response response = responsesClient.createAzureResponse( - new AzureCreateResponseOptions().setAgentReference(agent1Reference), - ResponseCreateParams.builder().conversation(conversation.id())); - System.out.println("Agent response from: " + agent1.getName()); - System.out.println("\tResponse: " + response.output().get(0).asMessage().content().get(0).asOutputText().text()); - - // Add clarification to the conversation - addMessageToConversation(conversationsClient, conversation.id(), + OpenAIClient openAIClient = builder.buildOpenAIClient(); + ResponsesClient responsesClient = new ResponsesClient(openAIClient); + ConversationService conversationsClient = openAIClient.conversations(); + + Conversation conversation = null; + AgentVersionDetails agent1 = null; + AgentVersionDetails agent2 = null; + try { + // Setting up the conversation with initial messages + conversation = startConversation(conversationsClient); + addMessageToConversation(conversationsClient, conversation.id(), + "If the user prompt is missing the location in their prompt, assume they are talking about Berlin, Germany.", + EasyInputMessage.Role.SYSTEM); + addMessageToConversation(conversationsClient, conversation.id(), "What's the weather like?", + EasyInputMessage.Role.USER); + + printConversationItems(conversationsClient, conversation.id(), 2); + + // creating a new agent and their references for future responses + agent1 = createPromptAgent(agentsClient, model, "weather-agent-1"); + agent2 = createPromptAgent(agentsClient, model, "weather-agent-2"); + + AgentReference agent1Reference = new AgentReference(agent1.getName()).setVersion(agent1.getVersion()); + AgentReference agent2Reference = new AgentReference(agent2.getName()).setVersion(agent2.getVersion()); + + // Get response from agent1 + Response response = responsesClient.createAzureResponse( + new AzureCreateResponseOptions().setAgentReference(agent1Reference), + ResponseCreateParams.builder().conversation(conversation.id())); + System.out.println("Agent response from: " + agent1.getName()); + SampleUtils.printResponseText(response); + + // Add clarification to the conversation + addMessageToConversation(conversationsClient, conversation.id(), "You can make assumptions based on historical data. Today is October 7th.", EasyInputMessage.Role.USER); - printConversationItems(conversationsClient, conversation.id(), 3); + printConversationItems(conversationsClient, conversation.id(), 3); - // Get follow-up response from agent1 - Response followUpResponse = responsesClient.createAzureResponse( - new AzureCreateResponseOptions().setAgentReference(agent1Reference), - ResponseCreateParams.builder().conversation(conversation.id())); - System.out.println("Agent response from: " + agent1.getName()); - System.out.println("\tResponse: " + followUpResponse.output().get(0).asMessage().content().get(0).asOutputText().text()); + // Get follow-up response from agent1 + Response followUpResponse = responsesClient.createAzureResponse( + new AzureCreateResponseOptions().setAgentReference(agent1Reference), + ResponseCreateParams.builder().conversation(conversation.id())); + System.out.println("Agent response from: " + agent1.getName()); + SampleUtils.printResponseText(followUpResponse); - // Provide all the past context and more to agent2 - addMessageToConversation(conversationsClient, conversation.id(), + // Provide all the past context and more to agent2 + addMessageToConversation(conversationsClient, conversation.id(), "Provide suggestions opposite of what historical data indicates.", EasyInputMessage.Role.SYSTEM); - printConversationItems(conversationsClient, conversation.id(), 4); - - Response newMessageThread = responsesClient.createAzureResponse( - new AzureCreateResponseOptions().setAgentReference(agent2Reference), - ResponseCreateParams.builder().conversation(conversation.id())); - System.out.println("Agent response from: " + agent2.getName()); - System.out.println("\tResponse: " + newMessageThread.output().get(0).asMessage().content().get(0).asOutputText().text()); + printConversationItems(conversationsClient, conversation.id(), 4); + + Response newMessageThread = responsesClient.createAzureResponse( + new AzureCreateResponseOptions().setAgentReference(agent2Reference), + ResponseCreateParams.builder().conversation(conversation.id())); + System.out.println("Agent response from: " + agent2.getName()); + SampleUtils.printResponseText(newMessageThread); + } finally { + try { + if (conversation != null) { + conversationsClient.delete(conversation.id()); + } + if (agent2 != null) { + agentsClient.deleteAgentVersion(agent2.getName(), agent2.getVersion()); + } + if (agent1 != null) { + agentsClient.deleteAgentVersion(agent1.getName(), agent1.getVersion()); + } + } finally { + openAIClient.close(); + } + } } private static AgentVersionDetails createPromptAgent(AgentsClient agentsClient, String model, String name) { @@ -106,12 +130,26 @@ private static void addMessageToConversation(ConversationService conversationSer conversationService.items().create(itemParams); } - private static void printConversationItems(ConversationService conversationsClient, String conversationId, int limit) { + private static void printConversationItems(ConversationService conversationsClient, String conversationId, + int limit) { System.out.println("Printing conversation items:"); ItemListPage page = conversationsClient.items().list(conversationId); - page.autoPager().stream().limit(limit).forEach(item -> { - System.out.println("\t" + item.asMessage().role() + ": " + item.asMessage().content().get(0).asInputText().text()); + page.autoPager().stream().filter(item -> item.isMessage()).limit(limit).forEach(item -> { + Message message = item.asMessage(); + message.content().stream().map(MultipleAgentsConversation::getText).filter(text -> text != null) + .forEach(text -> System.out.println("\t" + message.role() + ": " + text)); }); System.out.println("End of conversation items.\n"); } + + private static String getText(Message.Content content) { + if (content.isInputText()) { + return content.asInputText().text(); + } else if (content.isOutputText()) { + return content.asOutputText().text(); + } else if (content.isText()) { + return content.asText().text(); + } + return null; + } } From dc83626f9386126262c4ed1973a3d67b7f6f9002 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Sat, 5 Sep 2026 16:43:04 +0800 Subject: [PATCH 07/29] Clean up agents samples Co-Authored-By: Claude --- .../conversations/CreateConversation.java | 27 ------------- .../conversations/DeleteConversation.java | 29 -------------- .../conversations/UpdateConversation.java | 40 ------------------- .../toolboxes/CreateToolboxVersion.java | 2 +- .../ai/agents/toolboxes/DeleteToolbox.java | 2 +- .../toolboxes/DeleteToolboxVersion.java | 2 +- .../azure/ai/agents/toolboxes/GetToolbox.java | 2 +- .../agents/toolboxes/GetToolboxVersion.java | 2 +- .../agents/toolboxes/ListToolboxVersions.java | 2 +- .../ai/agents/toolboxes/UpdateToolbox.java | 4 +- 10 files changed, 8 insertions(+), 104 deletions(-) delete mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/CreateConversation.java delete mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/DeleteConversation.java delete mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/UpdateConversation.java diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/CreateConversation.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/CreateConversation.java deleted file mode 100644 index ea1e104699daf..0000000000000 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/CreateConversation.java +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.ai.agents.conversations; - -import com.azure.ai.agents.AgentsClientBuilder; -import com.azure.core.util.Configuration; -import com.azure.identity.DefaultAzureCredentialBuilder; -import com.openai.models.conversations.Conversation; -import com.openai.services.blocking.ConversationService; - -public class CreateConversation { - public static void main(String[] args) { - String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - // Code sample for creating a conversation - ConversationService conversationService = new AgentsClientBuilder() - .credential(new DefaultAzureCredentialBuilder().build()) - .endpoint(endpoint) - .buildOpenAIClient() - .conversations(); - - Conversation conversation = conversationService.create(); - - System.out.println("Conversation ID: " + conversation.id()); - System.out.println("Conversation Created At: " + conversation.createdAt()); - } -} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/DeleteConversation.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/DeleteConversation.java deleted file mode 100644 index 0ef93059bde6b..0000000000000 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/DeleteConversation.java +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.ai.agents.conversations; - -import com.azure.ai.agents.AgentsClientBuilder; -import com.azure.core.util.Configuration; -import com.azure.identity.DefaultAzureCredentialBuilder; -import com.openai.models.conversations.ConversationDeletedResource; -import com.openai.services.blocking.ConversationService; - -public class DeleteConversation { - public static void main(String[] args) { - String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String conversationId = "your-conversation-id"; // Replace with actual conversation ID - // Code sample for deleting a conversation - ConversationService conversationService = new AgentsClientBuilder() - .credential(new DefaultAzureCredentialBuilder().build()) - .endpoint(endpoint) - .buildOpenAIClient() - .conversations(); - - ConversationDeletedResource deletedConversation = conversationService.delete(conversationId); - - System.out.println("Deleted conversation with the following details:"); - System.out.println("\tConversation ID: " + deletedConversation.id()); - System.out.println("\tConversation was deleted: " + deletedConversation.deleted()); - } -} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/UpdateConversation.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/UpdateConversation.java deleted file mode 100644 index 889a554dbaafc..0000000000000 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/UpdateConversation.java +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.ai.agents.conversations; - -import com.azure.ai.agents.AgentsClientBuilder; -import com.azure.core.util.Configuration; -import com.azure.identity.DefaultAzureCredentialBuilder; -import com.openai.core.JsonValue; -import com.openai.models.conversations.Conversation; -import com.openai.models.conversations.ConversationUpdateParams; -import com.openai.services.blocking.ConversationService; - -public class UpdateConversation { - public static void main(String[] args) { - String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String conversationId = "your-conversation-id"; // Replace with actual conversation ID - // Code sample for updating a conversation - ConversationService conversationService = new AgentsClientBuilder() - .credential(new DefaultAzureCredentialBuilder().build()) - .endpoint(endpoint) - .buildOpenAIClient() - .conversations(); - - // Create metadata for the update - ConversationUpdateParams.Metadata metadata = ConversationUpdateParams.Metadata.builder() - .putAdditionalProperty("updated_by", JsonValue.from("java_sample")) - .putAdditionalProperty("update_timestamp", JsonValue.from(Long.toString(System.currentTimeMillis()))) - .build(); - - ConversationUpdateParams updateParams = ConversationUpdateParams.builder() - .metadata(metadata) - .build(); - - Conversation updatedConversation = conversationService.update(conversationId, updateParams); - - System.out.println("Updated Conversation ID: " + updatedConversation.id()); - System.out.println("Updated Conversation Metadata: " + updatedConversation._metadata()); - } -} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/CreateToolboxVersion.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/CreateToolboxVersion.java index 5b5bb84e63ea2..b28f26d808765 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/CreateToolboxVersion.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/CreateToolboxVersion.java @@ -43,7 +43,7 @@ public static void main(String[] args) { ); ToolboxVersionDetails toolboxVersion = toolboxesClient.createToolboxVersion( - "toolbox_created_from_java", tools, + "toolbox-created-from-java", tools, "Toolbox with MCP tool requiring approval 'never'.", null, null, null); System.out.println("Toolbox Name: " + toolboxVersion.getName()); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolbox.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolbox.java index a6a798e905117..5f7eef701e43e 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolbox.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolbox.java @@ -23,7 +23,7 @@ public class DeleteToolbox { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String toolboxName = "toolbox_created_from_java"; + String toolboxName = "toolbox-created-from-java"; // Code sample for deleting a toolbox ToolboxesClient toolboxesClient = new AgentsClientBuilder() .credential(new DefaultAzureCredentialBuilder().build()) diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolboxVersion.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolboxVersion.java index d777ab2c12a9f..4c91a7d9b5f7b 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolboxVersion.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolboxVersion.java @@ -23,7 +23,7 @@ public class DeleteToolboxVersion { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String toolboxName = "toolbox_created_from_java"; + String toolboxName = "toolbox-created-from-java"; String version = "1"; // Replace with the version to delete // Code sample for deleting a specific toolbox version ToolboxesClient toolboxesClient = new AgentsClientBuilder() diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolbox.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolbox.java index b1c260bc1b368..439dc18318576 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolbox.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolbox.java @@ -23,7 +23,7 @@ public class GetToolbox { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String toolboxName = "toolbox_created_from_java"; + String toolboxName = "toolbox-created-from-java"; // Code sample for retrieving a toolbox ToolboxesClient toolboxesClient = new AgentsClientBuilder() .credential(new DefaultAzureCredentialBuilder().build()) diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolboxVersion.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolboxVersion.java index 3fd6cd4ec7336..07cf02a4d8949 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolboxVersion.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolboxVersion.java @@ -26,7 +26,7 @@ public class GetToolboxVersion { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String toolboxName = "toolbox_created_from_java"; + String toolboxName = "toolbox-created-from-java"; String version = "1"; // Replace with the desired version // Code sample for retrieving a specific toolbox version ToolboxesClient toolboxesClient = new AgentsClientBuilder() diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/ListToolboxVersions.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/ListToolboxVersions.java index 978d13b12d623..e5ab773e2364f 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/ListToolboxVersions.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/ListToolboxVersions.java @@ -24,7 +24,7 @@ public class ListToolboxVersions { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String toolboxName = "toolbox_created_from_java"; + String toolboxName = "toolbox-created-from-java"; // Code sample for listing all versions of a toolbox ToolboxesClient toolboxesClient = new AgentsClientBuilder() .credential(new DefaultAzureCredentialBuilder().build()) diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/UpdateToolbox.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/UpdateToolbox.java index 2bcdfc7163074..4b1314a6b092e 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/UpdateToolbox.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/UpdateToolbox.java @@ -24,14 +24,14 @@ public class UpdateToolbox { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String toolboxName = "toolbox_created_from_java"; + String toolboxName = "toolbox-created-from-java"; // Code sample for updating a toolbox's default version ToolboxesClient toolboxesClient = new AgentsClientBuilder() .credential(new DefaultAzureCredentialBuilder().build()) .endpoint(endpoint) .buildToolboxesClient(); - ToolboxDetails updatedToolbox = toolboxesClient.updateToolbox(toolboxName, "2"); + ToolboxDetails updatedToolbox = toolboxesClient.updateToolbox(toolboxName, "1"); System.out.println("Updated Toolbox Name: " + updatedToolbox.getName()); System.out.println("Updated Default Version: " + updatedToolbox.getDefaultVersion()); From 994f38f330ea5c2e5ca24627dcbd88707e949d99 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Sat, 5 Sep 2026 17:04:32 +0800 Subject: [PATCH 08/29] Document realtime voice WebSocket examples Co-Authored-By: Claude --- sdk/ai/azure-ai-agents/README.md | 137 +++++++++++++++++++++++++------ 1 file changed, 110 insertions(+), 27 deletions(-) diff --git a/sdk/ai/azure-ai-agents/README.md b/sdk/ai/azure-ai-agents/README.md index aee6d0cb9d8e6..bf2ad02946757 100644 --- a/sdk/ai/azure-ai-agents/README.md +++ b/sdk/ai/azure-ai-agents/README.md @@ -193,34 +193,9 @@ The async `Beta*AsyncClient` counterparts follow the same behavior. ### Realtime voice-agent sessions -Use `BetaVoiceAgentWebSocketClient` or `BetaVoiceAgentWebSocketAsyncClient` to connect to a voice agent over WebSocket. The client acquires a token for `https://ai.azure.com/.default`, negotiates the `realtime` subprotocol, and sends the required `VoiceAgents=V1Preview` feature header automatically. +Use `BetaVoiceAgentWebSocketClient` or `BetaVoiceAgentWebSocketAsyncClient` to open a typed, bidirectional session with an existing voice agent. The client acquires a token for `https://ai.azure.com/.default`, negotiates the `realtime` WebSocket subprotocol, and sends the required `VoiceAgents=V1Preview` feature header automatically. -```java -BetaVoiceAgentWebSocketClient realtimeClient = new AgentsClientBuilder() - .credential(new DefaultAzureCredentialBuilder().build()) - .endpoint(endpoint) - .buildBetaVoiceAgentWebSocketClient(); - -try (VoiceAgentWebSocketSessionClient session = realtimeClient.connect(agentName)) { - session.sendText("Hello"); - session.createResponse(); - for (RealtimeServerEvent event : session.receiveEvents()) { - if (event instanceof RealtimeServerEventResponseDone) { - break; - } - } -} -``` - -The session API provides typed client and server events for text, PCM16 audio, response cancellation, and client-executed function tools. Set voice-agent persistence with `VoiceAgentDefinition.setStore(true)` or override it per connection with `VoiceAgentWebSocketConnectionOptions.setStoreEnabled(true)`, then read the resulting conversation through `BetaAgentEndpointConversationsClient`. - -Complete examples are available in the `voice/` samples folder: - -- `VoiceAgentLiveTextConversationSample` and `VoiceAgentLiveTextConversationAsyncSample` demonstrate typed text turns, streamed transcript/audio output, and persisted conversation readback. -- `VoiceAgentLiveAudioConversationAsyncSample` uses Java Sound for 24-kHz mono PCM16 microphone capture and speaker playback with barge-in. -- `VoiceAgentLiveFunctionToolSample` executes a function locally and sends its result back to the active response. - -Java converts HTTPS project endpoints to `wss://` for production sessions. The generated protocol models include WebRTC signaling events, but this library does not provide a WebRTC peer connection or media implementation; use WebSocket transport for Java-managed text and audio sessions. +The session API supports text and PCM16 audio input, typed streaming server events, response cancellation, client-executed function tools, and persisted conversations. See [Realtime voice-agent WebSocket examples](#realtime-voice-agent-websocket-examples-preview) for a walkthrough and complete samples. ### Agent optimization @@ -939,6 +914,114 @@ See the full sample in [CreateResponseWithStructuredInput.java](https://github.c --- +### Voice agent samples (preview) + +The [voice-agent samples](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice) cover agent management and persisted conversations. + +| Scenario | Samples | +|---|---| +| Lifecycle | [VoiceAgentBasicSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentBasicSample.java) and [VoiceAgentBasicAsyncSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentBasicAsyncSample.java) create, retrieve, update, list, enable, disable, and delete voice agents. | +| Versions and drafts | [VoiceAgentVersionsSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentVersionsSample.java) creates and lists released and draft versions. | +| Guided generation | [VoiceAgentGenerateSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentGenerateSample.java) generates a voice-agent definition. | +| Audio and tools | [VoiceAgentWithToolsSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentWithToolsSample.java) configures PCM audio, transcription, voice activity detection, function tools, and system tools. | +| Persisted conversations | [VoiceAgentReadConversationSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentReadConversationSample.java) reads responses and transcripts, while [VoiceAgentReadConversationAudioSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentReadConversationAudioSample.java) downloads call and item audio. | + +Authenticate with `DefaultAzureCredential`. Every voice sample requires `FOUNDRY_PROJECT_ENDPOINT`. Samples that create explicit definitions optionally use `FOUNDRY_VOICE_MODEL`, `FOUNDRY_VOICE_MODEL_TYPE`, and `FOUNDRY_VOICE_AGENT_NAME`. The persisted-conversation samples require `FOUNDRY_VOICE_AGENT_NAME` and `FOUNDRY_VOICE_CONVERSATION_ID`. + +### Realtime voice-agent WebSocket examples (preview) + +Realtime WebSocket sessions provide bidirectional text and audio communication with a voice agent. Create the voice agent before opening a session; the lifecycle samples above demonstrate how to create one. + +#### Create a realtime WebSocket client + +Build a synchronous or asynchronous preview client from the same `AgentsClientBuilder`. Beta clients automatically send the required preview feature header. + +```java +AgentsClientBuilder builder = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint); + +BetaVoiceAgentWebSocketClient realtimeClient + = builder.beta().buildBetaVoiceAgentWebSocketClient(); +BetaVoiceAgentWebSocketAsyncClient realtimeAsyncClient + = builder.beta().buildBetaVoiceAgentWebSocketAsyncClient(); +``` + +#### Send a synchronous text turn + +Connect to the voice agent, add the user's text to the conversation, and request a response. Consume the typed server events until the response finishes. A session supports only one consumer of `receiveEvents()`. + +```java +try (VoiceAgentWebSocketSessionClient session = realtimeClient.connect(agentName)) { + session.sendText("Hello! Tell me about the services you provide."); + session.createResponse(); + + for (RealtimeServerEvent event : session.receiveEvents()) { + if (event instanceof RealtimeServerEventResponseTextDelta) { + System.out.print(((RealtimeServerEventResponseTextDelta) event).getDelta()); + } else if (event instanceof RealtimeServerEventRealtimeServerEventError) { + RealtimeServerEventRealtimeServerEventError error + = (RealtimeServerEventRealtimeServerEventError) event; + System.out.println("Session error: " + error.getError().getMessage()); + } else if (event instanceof RealtimeServerEventResponseDone) { + break; + } + } +} +``` + +Use `sendText` and `createResponse` again for subsequent turns while the session remains open. Call `cancelResponse` to interrupt an active response. + +#### Send an asynchronous text turn + +The asynchronous client returns a `Mono` when connecting and a `Flux` when receiving events. `Mono.usingWhen` closes the session on completion, error, or cancellation. + +```java +Mono.usingWhen( + realtimeAsyncClient.connect(agentName), + session -> session.sendText("Hello! Tell me about the services you provide.") + .then(session.createResponse()) + .thenMany(session.receiveEvents()) + .doOnNext(event -> { + if (event instanceof RealtimeServerEventResponseTextDelta) { + System.out.print(((RealtimeServerEventResponseTextDelta) event).getDelta()); + } + }) + .takeUntil(event -> event instanceof RealtimeServerEventResponseDone) + .then(), + VoiceAgentWebSocketSessionAsyncClient::closeAsync, + (session, error) -> session.closeAsync(), + VoiceAgentWebSocketSessionAsyncClient::closeAsync) + .block(); +``` + +#### Stream audio and handle function tools + +Use `appendInputAudio` to send PCM16 chunks, `commitInputAudio` to commit buffered audio when server-side voice activity detection is not configured, and `clearInputAudio` to discard pending input. Audio output arrives through `RealtimeServerEventResponseAudioDelta` events. When a `RealtimeServerEventResponseFunctionCallArgumentsDone` event requests a client-side tool, execute the function and call `sendFunctionCallOutput` with its call ID and serialized result. + +| Scenario | Complete sample | +|---|---| +| Synchronous live text | [VoiceAgentLiveTextConversationSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationSample.java) | +| Asynchronous live text | [VoiceAgentLiveTextConversationAsyncSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationAsyncSample.java) | +| Asynchronous live audio | [VoiceAgentLiveAudioConversationAsyncSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveAudioConversationAsyncSample.java) | +| Live function tool | [VoiceAgentLiveFunctionToolSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveFunctionToolSample.java) | + +All realtime examples require `FOUNDRY_PROJECT_ENDPOINT` and optionally use `FOUNDRY_VOICE_AGENT_NAME`. The function-tool example also optionally uses `FOUNDRY_VOICE_MODEL` and `FOUNDRY_VOICE_MODEL_TYPE`. The asynchronous text and audio examples delete their generated agents by default; set `FOUNDRY_KEEP_VOICE_AGENT=true` to retain them. + +The live audio example requires a Java Sound-compatible microphone and speaker. It streams signed, little-endian, mono PCM16 audio at 24 kHz. These examples use WebSocket transport. Although the generated protocol models include WebRTC signaling events, the Java client does not provide a WebRTC peer connection or media implementation. + +### Additional end-to-end samples + +All agent samples use `FOUNDRY_PROJECT_ENDPOINT`. Prompt-agent samples also use `FOUNDRY_MODEL_NAME`. + +- **Agent lifecycle and structured output:** [AgentBasicAsyncSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/AgentBasicAsyncSample.java), [AgentRetrieveBasicAsyncSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/AgentRetrieveBasicAsyncSample.java), and the `AgentStructuredOutput*` samples. +- **Workflow agents:** `WorkflowMultiAgentSample`, `WorkflowMultiAgentAsyncSample`, and `WorkflowMultiAgentMcpApprovalSample` demonstrate CSDL workflows and MCP approval handling. +- **Optimization jobs:** the [optimization samples](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization) cover SDK polling, application-managed polling, cancellation, listing, retrieval, and deletion. +- **Telemetry:** the [telemetry samples](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/telemetry) demonstrate console tracing, custom span attributes, and Azure Monitor export. +- **Advanced tools:** additional samples cover structured inputs, generated-file download, File Search streaming, non-preview Web Search, custom search, and end-to-end toolbox search. + +--- + ### Service API versions The client library targets the latest service API version by default. From b80341dd9d54b7d11ca03a5b283cfab97769e4db Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Mon, 7 Sep 2026 10:08:09 +0800 Subject: [PATCH 09/29] Organize and improve memory samples Co-Authored-By: Claude --- sdk/ai/azure-ai-agents/README.md | 6 +++--- sdk/ai/azure-ai-agents/assets.json | 2 +- .../azure/ai/agents/memory/CreateMemoryStore.java | 2 +- .../azure/ai/agents/memory/DeleteMemoryStore.java | 2 +- .../com/azure/ai/agents/memory/GetMemoryStore.java | 2 +- .../ai/agents/{ => memory}/MemorySearchAgent.java | 9 +++++++-- .../agents/{tools => memory}/MemorySearchAsync.java | 4 ++-- .../agents/{tools => memory}/MemorySearchSync.java | 4 ++-- .../memory/MemoryStoreAdvancedAsyncSample.java | 13 +++++++++++-- .../ai/agents/memory/MemoryStoreAdvancedSample.java | 2 +- .../agents/memory/MemoryStoreItemsAsyncSample.java | 2 +- .../ai/agents/memory/MemoryStoreItemsSample.java | 2 +- .../azure/ai/agents/memory/UpdateMemoryStore.java | 2 +- .../com/azure/ai/agents/MemoryStoresAsyncTests.java | 6 +++--- .../java/com/azure/ai/agents/MemoryStoresTests.java | 6 +++--- 15 files changed, 39 insertions(+), 25 deletions(-) rename sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/{ => memory}/MemorySearchAgent.java (95%) rename sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/{tools => memory}/MemorySearchAsync.java (98%) rename sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/{tools => memory}/MemorySearchSync.java (98%) diff --git a/sdk/ai/azure-ai-agents/README.md b/sdk/ai/azure-ai-agents/README.md index bf2ad02946757..f95643c0eb810 100644 --- a/sdk/ai/azure-ai-agents/README.md +++ b/sdk/ai/azure-ai-agents/README.md @@ -208,9 +208,9 @@ and [AgentOptimizationAsyncSample.java](https://github.com/Azure/azure-sdk-for-j ### Memory item management -`BetaMemoryStoresClient` and `BetaMemoryStoresAsyncClient` manage memory stores and individual memory items. In addition to store-level operations, use `createMemory`, `updateMemory`, `listMemories`, `getMemory`, and `deleteMemory` to manage individual memories. `ListMemoriesOptions` supports filtering by scope and `MemoryItemKind`, including `MemoryItemKind.PROCEDURAL`. See `MemoryStoreItemsSample` and `MemoryStoreItemsAsyncSample` for complete examples. +`BetaMemoryStoresClient` and `BetaMemoryStoresAsyncClient` manage memory stores and individual memory items. In addition to store-level operations, use `createMemory`, `updateMemory`, `listMemories`, `getMemory`, and `deleteMemory` to manage individual memories. `ListMemoriesOptions` supports filtering by scope and `MemoryItemKind`, including `MemoryItemKind.PROCEDURAL`. See [MemoryStoreItemsSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsSample.java) and [MemoryStoreItemsAsyncSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsAsyncSample.java) for complete examples. -For conversational memory workflows, use `beginUpdateMemories` to extract memories from conversation items, `searchMemories` to retrieve relevant memories, and `deleteScope` to remove all memories for a scope. See `MemoryStoreAdvancedSample` and `MemoryStoreAdvancedAsyncSample` for complete synchronous and asynchronous examples. +For conversational memory workflows, use `beginUpdateMemories` to extract memories from conversation items, `searchMemories` to retrieve relevant memories, and `deleteScope` to remove all memories for a scope. See [MemoryStoreAdvancedSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedSample.java) and [MemoryStoreAdvancedAsyncSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedAsyncSample.java) for complete synchronous and asynchronous examples. ### Using OpenAI's official library @@ -475,7 +475,7 @@ MemorySearchPreviewTool tool = new MemorySearchPreviewTool(memoryStore.getName() .setUpdateDelaySeconds(1); ``` -See the full sample in [MemorySearchSync.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/MemorySearchSync.java) showing how to create an agent with a memory store and use it across multiple conversations. +See the full samples in [MemorySearchSync.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchSync.java) and [MemorySearchAsync.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchAsync.java), which show how to create an agent with a memory store and use it across multiple conversations. --- diff --git a/sdk/ai/azure-ai-agents/assets.json b/sdk/ai/azure-ai-agents/assets.json index 75c7a7d49847d..45b0d8e739ace 100644 --- a/sdk/ai/azure-ai-agents/assets.json +++ b/sdk/ai/azure-ai-agents/assets.json @@ -2,5 +2,5 @@ "AssetsRepo": "Azure/azure-sdk-assets", "AssetsRepoPrefixPath": "java", "TagPrefix": "java/ai/azure-ai-agents", - "Tag": "java/ai/azure-ai-agents_9343deca93" + "Tag": "java/ai/azure-ai-agents_6ddbbdb9ab" } diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/CreateMemoryStore.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/CreateMemoryStore.java index 50bf867f65b4d..ae993ae5baeee 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/CreateMemoryStore.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/CreateMemoryStore.java @@ -24,7 +24,7 @@ public static void main(String[] args) { .beta() .buildBetaMemoryStoresClient(); - String memoryStoreName = "my_memory_store_java"; + String memoryStoreName = "my-memory-store-java"; String description = "Example memory store for conversations"; MemoryStoreDefaultDefinition definition = new MemoryStoreDefaultDefinition(chatModel, embeddingModel); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/DeleteMemoryStore.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/DeleteMemoryStore.java index 15db38a8b620b..4b1a95ac0d4df 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/DeleteMemoryStore.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/DeleteMemoryStore.java @@ -11,7 +11,7 @@ public class DeleteMemoryStore { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String memoryStoreName = "my_memory_store_java"; + String memoryStoreName = "my-memory-store-java"; // Code sample for deleting a memory store BetaMemoryStoresClient memoryStoresClient = new AgentsClientBuilder() diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/GetMemoryStore.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/GetMemoryStore.java index 61b8e5f4d23d6..eea70181e5e20 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/GetMemoryStore.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/GetMemoryStore.java @@ -12,7 +12,7 @@ public class GetMemoryStore { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String memoryStoreName = "my_memory_store_java"; + String memoryStoreName = "my-memory-store-java"; // Code sample for getting a memory store BetaMemoryStoresClient memoryStoresClient = new AgentsClientBuilder() diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/MemorySearchAgent.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchAgent.java similarity index 95% rename from sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/MemorySearchAgent.java rename to sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchAgent.java index 579f608fec56c..f1459b3dd6632 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/MemorySearchAgent.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchAgent.java @@ -1,8 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.ai.agents; +package com.azure.ai.agents.memory; +import com.azure.ai.agents.AgentsClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.AgentsServiceVersion; +import com.azure.ai.agents.BetaMemoryStoresClient; +import com.azure.ai.agents.ResponsesClient; import com.azure.ai.agents.models.AgentReference; import com.azure.ai.agents.models.AzureCreateResponseOptions; import com.azure.ai.agents.models.AgentVersionDetails; @@ -45,7 +50,7 @@ public static void main(String[] args) { ConversationService conversationService = builder.buildOpenAIClient().conversations(); ResponsesClient responsesClient = builder.buildResponsesClient(); - String memoryStoreName = "my_memory_store"; + String memoryStoreName = "my-memory-store"; String agentName = "MyAgent"; String description = "Example memory store for conversations"; String scope = "user_123"; diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/MemorySearchAsync.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchAsync.java similarity index 98% rename from sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/MemorySearchAsync.java rename to sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchAsync.java index 1abd7896df4f7..4f6bf8e20d76d 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/MemorySearchAsync.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchAsync.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.ai.agents.tools; +package com.azure.ai.agents.memory; import com.azure.ai.agents.AgentsAsyncClient; import com.azure.ai.agents.AgentsClientBuilder; @@ -58,7 +58,7 @@ public static void main(String[] args) throws Exception { // Memory store operations use sync client for setup/teardown BetaMemoryStoresClient memoryStoresClient = builder.beta().buildBetaMemoryStoresClient(); - String memoryStoreName = "my_memory_store"; + String memoryStoreName = "my-memory-store"; String scope = "user_123"; AtomicReference agentRef = new AtomicReference<>(); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/MemorySearchSync.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchSync.java similarity index 98% rename from sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/MemorySearchSync.java rename to sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchSync.java index 051faf45c1c81..975ebc4e32daa 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/MemorySearchSync.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchSync.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.ai.agents.tools; +package com.azure.ai.agents.memory; import com.azure.ai.agents.AgentsClient; import com.azure.ai.agents.AgentsClientBuilder; @@ -56,7 +56,7 @@ public static void main(String[] args) { ConversationService conversationService = builder.buildOpenAIClient().conversations(); ResponsesClient responsesClient = builder.buildResponsesClient(); - String memoryStoreName = "my_memory_store"; + String memoryStoreName = "my-memory-store"; String scope = "user_123"; AgentVersionDetails agent = null; String firstConversationId = null; diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedAsyncSample.java index a24db3dc14892..1b14cfec5ef7d 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedAsyncSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedAsyncSample.java @@ -5,6 +5,7 @@ import com.azure.ai.agents.AgentsClientBuilder; import com.azure.ai.agents.BetaMemoryStoresAsyncClient; +import com.azure.ai.agents.models.ApiError; import com.azure.ai.agents.models.MemoryOperation; import com.azure.ai.agents.models.MemorySearchItem; import com.azure.ai.agents.models.MemorySearchOptions; @@ -38,7 +39,7 @@ * */ public class MemoryStoreAdvancedAsyncSample { - private static final String MEMORY_STORE_NAME = "memory_advanced_store_java_async"; + private static final String MEMORY_STORE_NAME = "memory-advanced-store-java-async"; private static final Duration POLL_TIMEOUT = Duration.ofMinutes(3); private static final Duration CLEANUP_TIMEOUT = Duration.ofMinutes(1); @@ -157,7 +158,15 @@ private static Mono waitForUpdateCompletion( PollerFlux poller) { return poller.takeUntil(response -> response.getStatus().isComplete()) .last() - .flatMap(AsyncPollResponse::getFinalResult) + .flatMap(response -> { + MemoryStoreUpdateResponse update = response.getValue(); + ApiError error = update == null ? null : update.getError(); + if (error != null) { + return Mono.error(new IllegalStateException(String.format( + "Memory update failed: [%s] %s", error.getCode(), error.getMessage()))); + } + return response.getFinalResult(); + }) .timeout(POLL_TIMEOUT); } diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedSample.java index 2405a8cd8be4d..9752ba5683dd0 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedSample.java @@ -35,7 +35,7 @@ * */ public class MemoryStoreAdvancedSample { - private static final String MEMORY_STORE_NAME = "memory_advanced_store_java_sync"; + private static final String MEMORY_STORE_NAME = "memory-advanced-store-java-sync"; private static final Duration POLL_TIMEOUT = Duration.ofMinutes(3); public static void main(String[] args) { diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsAsyncSample.java index bec6c9fdaae25..2e4947485f38d 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsAsyncSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsAsyncSample.java @@ -25,7 +25,7 @@ * */ public class MemoryStoreItemsAsyncSample { - private static final String MEMORY_STORE_NAME = "memory_items_store_java"; + private static final String MEMORY_STORE_NAME = "memory-items-store-java-async"; public static void main(String[] args) { Configuration configuration = Configuration.getGlobalConfiguration(); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsSample.java index 38f04ecc5c301..3bb887ade2877 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsSample.java @@ -26,7 +26,7 @@ * */ public class MemoryStoreItemsSample { - private static final String MEMORY_STORE_NAME = "memory_items_store_java"; + private static final String MEMORY_STORE_NAME = "memory-items-store-java"; public static void main(String[] args) { Configuration configuration = Configuration.getGlobalConfiguration(); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/UpdateMemoryStore.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/UpdateMemoryStore.java index 6689cbd82b8a6..a6dafe77c578f 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/UpdateMemoryStore.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/UpdateMemoryStore.java @@ -12,7 +12,7 @@ public class UpdateMemoryStore { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String memoryStoreName = "my_memory_store_java"; + String memoryStoreName = "my-memory-store-java"; // Code sample for updating a memory store BetaMemoryStoresClient memoryStoresClient = new AgentsClientBuilder() diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresAsyncTests.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresAsyncTests.java index e510a0de0070c..8006e219183b3 100644 --- a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresAsyncTests.java +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresAsyncTests.java @@ -42,7 +42,7 @@ public class MemoryStoresAsyncTests extends ClientTestBase { public void basicMemoryStoresCrud(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresAsyncClient memoryStoreClient = getMemoryStoresAsyncClient(httpClient, serviceVersion); - String memoryStoreName = "my_memory_store_java"; + String memoryStoreName = "my-memory-store-java"; String initialDescription = "Example memory store for conversations"; String updatedDescription = "Updated description"; @@ -104,7 +104,7 @@ public void basicMemoryStoresCrud(HttpClient httpClient, AgentsServiceVersion se public void basicMemoryStores(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresAsyncClient memoryStoreClient = getMemoryStoresAsyncClient(httpClient, serviceVersion); - String memoryStoreName = "my_memory_store"; + String memoryStoreName = "my-memory-store"; String description = "Example memory store for conversations"; String scope = "user_123"; String userMessageContent = "I prefer dark roast coffee and usually drink it in the morning"; @@ -164,7 +164,7 @@ public void basicMemoryStores(HttpClient httpClient, AgentsServiceVersion servic public void advancedMemoryStores(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresAsyncClient memoryStoreClient = getMemoryStoresAsyncClient(httpClient, serviceVersion); - String memoryStoreName = "my_memory_store"; + String memoryStoreName = "my-memory-store"; String description = "Example memory store for conversations"; String scope = "user_123"; String firstMessageContent = "I prefer dark roast coffee and usually drink it in the morning"; diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresTests.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresTests.java index 53b53cb2f62b3..b64f8b94d97f2 100644 --- a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresTests.java +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresTests.java @@ -33,7 +33,7 @@ public class MemoryStoresTests extends ClientTestBase { public void basicMemoryStoresCrud(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresClient memoryStoreClient = getMemoryStoresSyncClient(httpClient, serviceVersion); - String memoryStoreName = "my_memory_store_java"; + String memoryStoreName = "my-memory-store-java"; String initialDescription = "Example memory store for conversations"; String updatedDescription = "Updated description"; @@ -92,7 +92,7 @@ public void basicMemoryStoresCrud(HttpClient httpClient, AgentsServiceVersion se public void basicMemoryStores(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresClient memoryStoreClient = getMemoryStoresSyncClient(httpClient, serviceVersion); - String memoryStoreName = "my_memory_store"; + String memoryStoreName = "my-memory-store"; String description = "Example memory store for conversations"; String scope = "user_123"; String userMessageContent = "I prefer dark roast coffee and usually drink it in the morning"; @@ -160,7 +160,7 @@ public void basicMemoryStores(HttpClient httpClient, AgentsServiceVersion servic public void advancedMemoryStores(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresClient memoryStoreClient = getMemoryStoresSyncClient(httpClient, serviceVersion); - String memoryStoreName = "my_memory_store"; + String memoryStoreName = "my-memory-store"; String description = "Example memory store for conversations"; String scope = "user_123"; String firstMessageContent = "I prefer dark roast coffee and usually drink it in the morning"; From 4d03f8540807950d1744c4423c4f793c2fb8d686 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Mon, 7 Sep 2026 14:36:12 +0800 Subject: [PATCH 10/29] fix part of tools sample errors --- .../ai/agents/tools/FileSearchAsync.java | 175 ------------------ .../ai/agents/tools/ImageGenerationAsync.java | 89 --------- .../ai/agents/tools/ImageGenerationSync.java | 84 --------- .../azure/ai/agents/tools/OpenApiSample.java | 111 ----------- .../azure/ai/agents/tools/OpenApiSync.java | 114 ------------ .../azure/ai/agents/tools/WebSearchAsync.java | 94 ---------- 6 files changed, 667 deletions(-) delete mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/FileSearchAsync.java delete mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationAsync.java delete mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationSync.java delete mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSample.java delete mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSync.java delete mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/WebSearchAsync.java diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/FileSearchAsync.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/FileSearchAsync.java deleted file mode 100644 index 3e5d423c229be..0000000000000 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/FileSearchAsync.java +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.ai.agents.tools; - -import com.azure.ai.agents.AgentsAsyncClient; -import com.azure.ai.agents.AgentsClientBuilder; -import com.azure.ai.agents.ResponsesAsyncClient; -import com.azure.ai.agents.models.AgentReference; -import com.azure.ai.agents.models.AzureCreateResponseOptions; -import com.azure.ai.agents.models.AgentVersionDetails; -import com.azure.ai.agents.models.FileSearchTool; -import com.azure.ai.agents.models.PromptAgentDefinition; -import com.azure.core.credential.TokenCredential; -import com.azure.core.util.Configuration; -import com.azure.identity.DefaultAzureCredentialBuilder; -import com.openai.client.OpenAIClient; -import com.openai.models.files.FileCreateParams; -import com.openai.models.files.FileObject; -import com.openai.models.files.FilePurpose; -import com.openai.models.responses.Response; -import com.openai.models.responses.ResponseCreateParams; -import com.openai.models.responses.ResponseFileSearchToolCall; -import com.openai.models.responses.ResponseOutputItem; -import com.openai.models.responses.ResponseOutputMessage; -import com.openai.models.vectorstores.VectorStore; -import com.openai.models.vectorstores.VectorStoreCreateParams; -import com.openai.services.async.ConversationServiceAsync; -import reactor.core.publisher.Mono; - -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.time.Duration; -import java.util.Collections; -import java.util.concurrent.atomic.AtomicReference; - -/** - * This sample demonstrates how to create an agent with the File Search tool - * using the async client. It creates a vector store, uploads a file, and uses - * the agent to search the file within a conversation. - * - *

Before running the sample, set these environment variables:

- *
    - *
  • FOUNDRY_PROJECT_ENDPOINT - The Azure AI Project endpoint.
  • - *
  • FOUNDRY_MODEL_NAME - The model deployment name.
  • - *
- */ -public class FileSearchAsync { - public static void main(String[] args) throws Exception { - String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String model = Configuration.getGlobalConfiguration().get("FOUNDRY_MODEL_NAME"); - - TokenCredential credential = new DefaultAzureCredentialBuilder().build(); - - AgentsClientBuilder builder = new AgentsClientBuilder() - .credential(credential) - .endpoint(endpoint); - - AgentsAsyncClient agentsAsyncClient = builder.buildAgentsAsyncClient(); - ResponsesAsyncClient responsesAsyncClient = builder.buildResponsesAsyncClient(); - ConversationServiceAsync conversationServiceAsync = builder.buildOpenAIAsyncClient().conversations(); - // Vector store and file operations use the sync OpenAI client for setup - OpenAIClient openAIClient = builder.buildOpenAIClient(); - - AtomicReference agentRef = new AtomicReference<>(); - AtomicReference conversationIdRef = new AtomicReference<>(); - - // Create a sample document and upload it - String sampleContent = "The Solar System consists of the Sun and the celestial objects bound to it by gravity. " - + "The eight planets in order from the Sun are: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune. " - + "Earth is the third planet from the Sun and the only known planet to harbor life. " - + "Jupiter is the largest planet, while Mercury is the smallest."; - - Path tempFile = Files.createTempFile("sample_document", ".txt"); - Files.write(tempFile, sampleContent.getBytes(StandardCharsets.UTF_8)); - - FileObject uploadedFile = openAIClient.files().create(FileCreateParams.builder() - .file(tempFile) - .purpose(FilePurpose.ASSISTANTS) - .build()); - System.out.println("Uploaded file: " + uploadedFile.id()); - - VectorStore vectorStore = openAIClient.vectorStores().create(VectorStoreCreateParams.builder() - .name("SampleVectorStore") - .fileIds(Collections.singletonList(uploadedFile.id())) - .build()); - System.out.println("Created vector store: " + vectorStore.id()); - - Thread.sleep(5000); // Wait for vector store to process - - FileSearchTool tool = new FileSearchTool(Collections.singletonList(vectorStore.id())); - - PromptAgentDefinition agentDefinition = new PromptAgentDefinition(model) - .setInstructions("You are a helpful assistant that can search through uploaded files to answer questions.") - .setTools(Collections.singletonList(tool)); - - agentsAsyncClient.createAgentVersion("file-search-agent", agentDefinition) - .flatMap(agent -> { - agentRef.set(agent); - System.out.printf("Agent created: %s (version %s)%n", agent.getName(), agent.getVersion()); - - AgentReference agentReference = new AgentReference(agent.getName()) - .setVersion(agent.getVersion()); - - return Mono.fromFuture(conversationServiceAsync.create()) - .flatMap(conversation -> { - conversationIdRef.set(conversation.id()); - System.out.println("Created conversation: " + conversation.id()); - - return responsesAsyncClient.createAzureResponse( - new AzureCreateResponseOptions().setAgentReference(agentReference), - ResponseCreateParams.builder() - .conversation(conversation.id()) - .input("What is the largest planet in the Solar System?")); - }); - }) - .doOnNext(response -> { - for (ResponseOutputItem outputItem : response.output()) { - if (outputItem.message().isPresent()) { - ResponseOutputMessage message = outputItem.message().get(); - message.content().forEach(content -> { - content.outputText().ifPresent(text -> { - System.out.println("Assistant: " + text.text()); - }); - }); - } - - if (outputItem.fileSearchCall().isPresent()) { - ResponseFileSearchToolCall fileSearchCall = outputItem.fileSearchCall().get(); - System.out.println("\n--- File Search Execution ---"); - System.out.println("Call ID: " + fileSearchCall.id()); - System.out.println("Status: " + fileSearchCall.status()); - fileSearchCall.results().ifPresent(results -> { - System.out.println("Results found: " + results.size()); - results.forEach(result -> { - System.out.println(" - File ID: " + result.fileId()); - result.filename().ifPresent(name -> System.out.println(" Filename: " + name)); - result.score().ifPresent(score -> System.out.println(" Score: " + score)); - }); - }); - } - } - }) - .then(Mono.defer(() -> { - String convId = conversationIdRef.get(); - if (convId != null) { - return Mono.fromFuture(conversationServiceAsync.delete(convId)) - .then(); - } - return Mono.empty(); - })) - .then(Mono.defer(() -> { - AgentVersionDetails agent = agentRef.get(); - if (agent != null) { - return agentsAsyncClient.deleteAgentVersion(agent.getName(), agent.getVersion()) - .doOnSuccess(v -> System.out.println("Agent deleted")); - } - return Mono.empty(); - })) - .doFinally(signal -> { - openAIClient.vectorStores().delete(vectorStore.id()); - openAIClient.files().delete(uploadedFile.id()); - try { - Files.deleteIfExists(tempFile); - } catch (Exception ignored) { - // best-effort - } - System.out.println("Vector store and file deleted"); - }) - .doOnError(error -> System.err.println("Error: " + error.getMessage())) - .timeout(Duration.ofSeconds(300)) - .block(); - } -} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationAsync.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationAsync.java deleted file mode 100644 index 6468833a74f6b..0000000000000 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationAsync.java +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.ai.agents.tools; - -import com.azure.ai.agents.AgentsAsyncClient; -import com.azure.ai.agents.AgentsClientBuilder; -import com.azure.ai.agents.ResponsesAsyncClient; -import com.azure.ai.agents.models.AgentReference; -import com.azure.ai.agents.models.AzureCreateResponseOptions; -import com.azure.ai.agents.models.AgentVersionDetails; -import com.azure.ai.agents.models.ImageGenTool; -import com.azure.ai.agents.models.ImageGenToolModel; -import com.azure.ai.agents.models.ImageGenToolQuality; -import com.azure.ai.agents.models.ImageGenToolSize; -import com.azure.ai.agents.models.PromptAgentDefinition; -import com.azure.core.util.Configuration; -import com.azure.identity.DefaultAzureCredentialBuilder; -import com.openai.models.responses.ResponseCreateParams; -import java.time.Duration; -import java.util.Collections; -import java.util.concurrent.atomic.AtomicReference; -import reactor.core.publisher.Mono; - -/** - * This sample demonstrates (using the async client) how to create an agent with the Image Generation tool - * to generate images from text descriptions. - * - *

Before running the sample, set these environment variables:

- *
    - *
  • FOUNDRY_PROJECT_ENDPOINT - The Azure AI Project endpoint.
  • - *
  • FOUNDRY_MODEL_NAME - The model deployment name.
  • - *
  • IMAGE_GENERATION_MODEL_DEPLOYMENT_NAME - The image generation model deployment name.
  • - *
- */ -public class ImageGenerationAsync { - public static void main(String[] args) { - String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String model = Configuration.getGlobalConfiguration().get("FOUNDRY_MODEL_NAME"); - String imageModel = Configuration.getGlobalConfiguration().get("IMAGE_GENERATION_MODEL_DEPLOYMENT_NAME"); - - AgentsClientBuilder builder = new AgentsClientBuilder() - .credential(new DefaultAzureCredentialBuilder().build()) - .endpoint(endpoint); - - AgentsAsyncClient agentsAsyncClient = builder.buildAgentsAsyncClient(); - ResponsesAsyncClient responsesAsyncClient = builder.buildResponsesAsyncClient(); - - AtomicReference agentRef = new AtomicReference<>(); - - // Create image generation tool with model, quality, and size - ImageGenTool imageGenTool = new ImageGenTool() - .setModel(ImageGenToolModel.fromString(imageModel)) - .setQuality(ImageGenToolQuality.LOW) - .setSize(ImageGenToolSize.fromString("1024x1024")); - // Create agent with image generation tool - PromptAgentDefinition agentDefinition = new PromptAgentDefinition(model) - .setInstructions("You are a creative assistant that can generate images based on descriptions.") - .setTools(Collections.singletonList(imageGenTool)); - - agentsAsyncClient.createAgentVersion("image-gen-agent", agentDefinition) - .flatMap(agent -> { - agentRef.set(agent); - System.out.printf("Agent created: %s (version %s)%n", agent.getName(), agent.getVersion()); - - AgentReference agentReference = new AgentReference(agent.getName()) - .setVersion(agent.getVersion()); - - return responsesAsyncClient.createAzureResponse( - new AzureCreateResponseOptions().setAgentReference(agentReference), - ResponseCreateParams.builder() - .input("Generate an image of a sunset over a mountain range")); - }) - .doOnNext(response -> { - System.out.println("Response: " + response.output()); - }) - .then(Mono.defer(() -> { - AgentVersionDetails agent = agentRef.get(); - if (agent != null) { - return agentsAsyncClient.deleteAgentVersion(agent.getName(), agent.getVersion()) - .doOnSuccess(v -> System.out.println("Agent deleted")); - } - return Mono.empty(); - })) - .doOnError(error -> System.err.println("Error: " + error.getMessage())) - .timeout(Duration.ofSeconds(300)) - .block(); - } -} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationSync.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationSync.java deleted file mode 100644 index dbff886b33131..0000000000000 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationSync.java +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.ai.agents.tools; - -import com.azure.ai.agents.AgentsClient; -import com.azure.ai.agents.AgentsClientBuilder; -import com.azure.ai.agents.ResponsesClient; -import com.azure.ai.agents.models.AgentReference; -import com.azure.ai.agents.models.AzureCreateResponseOptions; -import com.azure.ai.agents.models.AgentVersionDetails; -import com.azure.ai.agents.models.ImageGenTool; -import com.azure.ai.agents.models.ImageGenToolModel; -import com.azure.ai.agents.models.ImageGenToolQuality; -import com.azure.ai.agents.models.ImageGenToolSize; -import com.azure.ai.agents.models.PromptAgentDefinition; -import com.azure.core.util.Configuration; -import com.azure.identity.DefaultAzureCredentialBuilder; -import com.openai.models.responses.Response; -import com.openai.models.responses.ResponseCreateParams; - -import java.util.Collections; - -/** - * This sample demonstrates how to create an agent with the Image Generation tool - * to generate images from text descriptions. - * - *

Before running the sample, set these environment variables:

- *
    - *
  • FOUNDRY_PROJECT_ENDPOINT - The Azure AI Project endpoint.
  • - *
  • FOUNDRY_MODEL_NAME - The model deployment name.
  • - *
  • IMAGE_GENERATION_MODEL_DEPLOYMENT_NAME - The image generation model deployment name.
  • - *
- */ -public class ImageGenerationSync { - public static void main(String[] args) { - String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String model = Configuration.getGlobalConfiguration().get("FOUNDRY_MODEL_NAME"); - String imageModel = Configuration.getGlobalConfiguration().get("IMAGE_GENERATION_MODEL_DEPLOYMENT_NAME"); - - AgentsClientBuilder builder = new AgentsClientBuilder() - .credential(new DefaultAzureCredentialBuilder().build()) - .endpoint(endpoint); - - AgentsClient agentsClient = builder.buildAgentsClient(); - ResponsesClient responsesClient = builder.buildResponsesClient(); - - // BEGIN: com.azure.ai.agents.define_image_generation - // Create image generation tool with model, quality, and size - ImageGenTool imageGenTool = new ImageGenTool() - .setModel(ImageGenToolModel.fromString(imageModel)) - .setQuality(ImageGenToolQuality.LOW) - .setSize(ImageGenToolSize.fromString("1024x1024")); - // END: com.azure.ai.agents.define_image_generation - - // Create agent with image generation tool - PromptAgentDefinition agentDefinition = new PromptAgentDefinition(model) - .setInstructions("You are a creative assistant that can generate images based on descriptions.") - .setTools(Collections.singletonList(imageGenTool)); - - AgentVersionDetails agent = agentsClient.createAgentVersion("image-gen-agent", agentDefinition); - System.out.printf("Agent created: %s (version %s)%n", agent.getName(), agent.getVersion()); - - try { - // Create a response - AgentReference agentReference = new AgentReference(agent.getName()) - .setVersion(agent.getVersion()); - - Response response = responsesClient.createAzureResponse( - new AzureCreateResponseOptions().setAgentReference(agentReference), - ResponseCreateParams.builder() - .input("Generate an image of a sunset over a mountain range")); - - // The response output may include image_generation_call items with base64-encoded image data. - // This sample prints the response status and the number of output items; image extraction - // and saving would require additional parsing logic that is not shown here. - System.out.println("Response status: " + response.status().map(Object::toString).orElse("unknown")); - System.out.println("Output items: " + response.output().size()); - } finally { - // Clean up - agentsClient.deleteAgentVersion(agent.getName(), agent.getVersion()); - } - } -} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSample.java deleted file mode 100644 index f37d2b4e947fc..0000000000000 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSample.java +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.ai.agents.tools; - -import com.azure.ai.agents.AgentsClient; -import com.azure.ai.agents.AgentsClientBuilder; -import com.azure.ai.agents.ResponsesClient; -import com.azure.ai.agents.SampleUtils; -import com.azure.ai.agents.models.AgentReference; -import com.azure.ai.agents.models.AzureCreateResponseOptions; -import com.azure.ai.agents.models.AgentVersionDetails; -import com.azure.ai.agents.models.OpenApiAnonymousAuthDetails; -import com.azure.ai.agents.models.OpenApiFunctionDefinition; -import com.azure.ai.agents.models.OpenApiTool; -import com.azure.ai.agents.models.PromptAgentDefinition; -import com.azure.core.util.BinaryData; -import com.azure.core.util.Configuration; -import com.azure.identity.DefaultAzureCredentialBuilder; -import com.openai.models.conversations.Conversation; -import com.openai.models.conversations.items.ItemCreateParams; -import com.openai.models.responses.EasyInputMessage; -import com.openai.models.responses.Response; -import com.openai.models.responses.ResponseCreateParams; -import com.openai.services.blocking.ConversationService; - -import java.util.Arrays; -import java.util.Map; - -/** - * This sample demonstrates how to create an agent with an OpenAPI tool that calls - * an external API defined by an OpenAPI specification file. - * - *

Before running the sample, set these environment variables:

- *
    - *
  • FOUNDRY_PROJECT_ENDPOINT - The Azure AI Project endpoint.
  • - *
  • FOUNDRY_MODEL_NAME - The model deployment name.
  • - *
- * - *

Also place an OpenAPI spec JSON file at {@code src/samples/resources/assets/httpbin_openapi.json}.

- */ -public class OpenApiSample { - public static void main(String[] args) throws Exception { - String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String model = Configuration.getGlobalConfiguration().get("FOUNDRY_MODEL_NAME"); - - AgentsClientBuilder builder = new AgentsClientBuilder() - .credential(new DefaultAzureCredentialBuilder().build()) - .endpoint(endpoint); - - AgentsClient agentsClient = builder.buildAgentsClient(); - ResponsesClient responsesClient = builder.buildResponsesClient(); - ConversationService conversationService = builder.buildOpenAIClient().conversations(); - - - // Load the OpenAPI spec from a JSON file - Map spec = OpenApiFunctionDefinition.readSpecFromFile( - SampleUtils.getResourcePath("assets/httpbin_openapi.json")); - - OpenApiFunctionDefinition toolDefinition = new OpenApiFunctionDefinition( - "httpbin_get", - spec, - new OpenApiAnonymousAuthDetails()) - .setDescription("Get request metadata from an OpenAPI endpoint."); - - PromptAgentDefinition agentDefinition = new PromptAgentDefinition(model) - .setInstructions("Use the OpenAPI tool for HTTP request metadata.") - .setTools(Arrays.asList(new OpenApiTool(toolDefinition))); - - AgentVersionDetails agentVersion = agentsClient.createAgentVersion("openapi-agent", agentDefinition); - System.out.println("Agent: " + agentVersion.getName() + ", version: " + agentVersion.getVersion()); - - // Create a conversation and add a user message - Conversation conversation = conversationService.create(); - conversationService.items().create( - ItemCreateParams.builder() - .conversationId(conversation.id()) - .addItem(EasyInputMessage.builder() - .role(EasyInputMessage.Role.USER) - .content("Use the OpenAPI tool and summarize the returned URL and origin in one sentence.") - .build()) - .build()); - - try { - AgentReference agentReference = new AgentReference(agentVersion.getName()) - .setVersion(agentVersion.getVersion()); - - ResponseCreateParams.Builder options = ResponseCreateParams.builder() - .maxOutputTokens(300L); - - Response response = responsesClient.createAzureResponse( - new AzureCreateResponseOptions().setAgentReference(agentReference), - options.conversation(conversation.id())); - - String text = response.output().stream() - .filter(item -> item.isMessage()) - .map(item -> item.asMessage().content() - .get(item.asMessage().content().size() - 1) - .asOutputText() - .text()) - .reduce((first, second) -> second) - .orElse(""); - - System.out.println("Status: " + response.status().map(Object::toString).orElse("unknown")); - System.out.println("Response: " + text); - } finally { - agentsClient.deleteAgentVersion(agentVersion.getName(), agentVersion.getVersion()); - System.out.println("Agent deleted"); - } - } -} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSync.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSync.java deleted file mode 100644 index 947b842665ee3..0000000000000 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSync.java +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.ai.agents.tools; - -import com.azure.ai.agents.AgentsClient; -import com.azure.ai.agents.AgentsClientBuilder; -import com.azure.ai.agents.ResponsesClient; -import com.azure.ai.agents.SampleUtils; -import com.azure.ai.agents.models.AgentReference; -import com.azure.ai.agents.models.AzureCreateResponseOptions; -import com.azure.ai.agents.models.AgentVersionDetails; -import com.azure.ai.agents.models.OpenApiAnonymousAuthDetails; -import com.azure.ai.agents.models.OpenApiFunctionDefinition; -import com.azure.ai.agents.models.OpenApiTool; -import com.azure.ai.agents.models.PromptAgentDefinition; -import com.azure.core.util.BinaryData; -import com.azure.core.util.Configuration; -import com.azure.identity.DefaultAzureCredentialBuilder; -import com.openai.models.conversations.Conversation; -import com.openai.models.conversations.items.ItemCreateParams; -import com.openai.models.responses.EasyInputMessage; -import com.openai.models.responses.Response; -import com.openai.models.responses.ResponseCreateParams; -import com.openai.services.blocking.ConversationService; - -import java.util.Arrays; -import java.util.Map; - -/** - * This sample demonstrates how to create an agent with an OpenAPI tool that calls - * an external API defined by an OpenAPI specification file. - * - *

Before running the sample, set these environment variables:

- *
    - *
  • FOUNDRY_PROJECT_ENDPOINT - The Azure AI Project endpoint.
  • - *
  • FOUNDRY_MODEL_NAME - The model deployment name.
  • - *
- * - *

Also place an OpenAPI spec JSON file at {@code src/samples/resources/assets/httpbin_openapi.json}.

- */ -public class OpenApiSync { - public static void main(String[] args) throws Exception { - String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String model = Configuration.getGlobalConfiguration().get("FOUNDRY_MODEL_NAME"); - - AgentsClientBuilder builder = new AgentsClientBuilder() - .credential(new DefaultAzureCredentialBuilder().build()) - .endpoint(endpoint); - - AgentsClient agentsClient = builder.buildAgentsClient(); - ResponsesClient responsesClient = builder.buildResponsesClient(); - ConversationService conversationService = builder.buildOpenAIClient().conversations(); - - - // BEGIN: com.azure.ai.agents.define_openapi - // Load the OpenAPI spec from a JSON file - Map spec = OpenApiFunctionDefinition.readSpecFromFile( - SampleUtils.getResourcePath("assets/httpbin_openapi.json")); - - OpenApiTool tool = new OpenApiTool( - new OpenApiFunctionDefinition( - "httpbin_get", - spec, - new OpenApiAnonymousAuthDetails()) - .setDescription("Get request metadata from an OpenAPI endpoint.")); - // END: com.azure.ai.agents.define_openapi - - PromptAgentDefinition agentDefinition = new PromptAgentDefinition(model) - .setInstructions("Use the OpenAPI tool for HTTP request metadata.") - .setTools(Arrays.asList(tool)); - - AgentVersionDetails agentVersion = agentsClient.createAgentVersion("openapi-agent", agentDefinition); - System.out.println("Agent: " + agentVersion.getName() + ", version: " + agentVersion.getVersion()); - - // Create a conversation and add a user message - Conversation conversation = conversationService.create(); - conversationService.items().create( - ItemCreateParams.builder() - .conversationId(conversation.id()) - .addItem(EasyInputMessage.builder() - .role(EasyInputMessage.Role.USER) - .content("Use the OpenAPI tool and summarize the returned URL and origin in one sentence.") - .build()) - .build()); - - try { - AgentReference agentReference = new AgentReference(agentVersion.getName()) - .setVersion(agentVersion.getVersion()); - - ResponseCreateParams.Builder options = ResponseCreateParams.builder() - .maxOutputTokens(300L); - - Response response = responsesClient.createAzureResponse( - new AzureCreateResponseOptions().setAgentReference(agentReference), - options.conversation(conversation.id())); - - String text = response.output().stream() - .filter(item -> item.isMessage()) - .map(item -> item.asMessage().content() - .get(item.asMessage().content().size() - 1) - .asOutputText() - .text()) - .reduce((first, second) -> second) - .orElse(""); - - System.out.println("Status: " + response.status().map(Object::toString).orElse("unknown")); - System.out.println("Response: " + text); - } finally { - agentsClient.deleteAgentVersion(agentVersion.getName(), agentVersion.getVersion()); - System.out.println("Agent deleted"); - } - } -} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/WebSearchAsync.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/WebSearchAsync.java deleted file mode 100644 index 7b91c54a49f4a..0000000000000 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/WebSearchAsync.java +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.azure.ai.agents.tools; - -import com.azure.ai.agents.AgentsAsyncClient; -import com.azure.ai.agents.AgentsClientBuilder; -import com.azure.ai.agents.ResponsesAsyncClient; -import com.azure.ai.agents.models.AgentReference; -import com.azure.ai.agents.models.AzureCreateResponseOptions; -import com.azure.ai.agents.models.AgentVersionDetails; -import com.azure.ai.agents.models.PromptAgentDefinition; -import com.azure.ai.agents.models.WebSearchPreviewTool; -import com.azure.core.util.Configuration; -import com.azure.identity.DefaultAzureCredentialBuilder; -import com.openai.models.responses.ResponseCreateParams; -import com.openai.models.responses.ResponseOutputItem; -import com.openai.models.responses.ResponseOutputMessage; -import reactor.core.publisher.Mono; - -import java.time.Duration; -import java.util.Collections; -import java.util.concurrent.atomic.AtomicReference; - -/** - * This sample demonstrates how to create an agent with the Web Search tool - * to search the web for current information, using the async client. - * - *

Before running the sample, set these environment variables:

- *
    - *
  • FOUNDRY_PROJECT_ENDPOINT - The Azure AI Project endpoint.
  • - *
  • FOUNDRY_MODEL_NAME - The model deployment name.
  • - *
- */ -public class WebSearchAsync { - public static void main(String[] args) { - String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String model = Configuration.getGlobalConfiguration().get("FOUNDRY_MODEL_NAME"); - - AgentsClientBuilder builder = new AgentsClientBuilder() - .credential(new DefaultAzureCredentialBuilder().build()) - .endpoint(endpoint); - - AgentsAsyncClient agentsAsyncClient = builder.buildAgentsAsyncClient(); - ResponsesAsyncClient responsesAsyncClient = builder.buildResponsesAsyncClient(); - - AtomicReference agentRef = new AtomicReference<>(); - - // Create a WebSearchPreviewTool - WebSearchPreviewTool tool = new WebSearchPreviewTool(); - - PromptAgentDefinition agentDefinition = new PromptAgentDefinition(model) - .setInstructions("You are a helpful assistant that can perform web searches to find information. " - + "When asked to find information, use the web search tool to gather relevant data.") - .setTools(Collections.singletonList(tool)); - - agentsAsyncClient.createAgentVersion("web-search-agent", agentDefinition) - .flatMap(agent -> { - agentRef.set(agent); - System.out.printf("Agent created: %s (version %s)%n", agent.getName(), agent.getVersion()); - - AgentReference agentReference = new AgentReference(agent.getName()) - .setVersion(agent.getVersion()); - - return responsesAsyncClient.createAzureResponse( - new AzureCreateResponseOptions().setAgentReference(agentReference), - ResponseCreateParams.builder() - .input("What are the latest trends in renewable energy?")); - }) - .doOnNext(response -> { - for (ResponseOutputItem outputItem : response.output()) { - if (outputItem.message().isPresent()) { - ResponseOutputMessage message = outputItem.message().get(); - message.content().forEach(content -> { - content.outputText().ifPresent(text -> { - System.out.println("Assistant: " + text.text()); - }); - }); - } - } - }) - .then(Mono.defer(() -> { - AgentVersionDetails agent = agentRef.get(); - if (agent != null) { - return agentsAsyncClient.deleteAgentVersion(agent.getName(), agent.getVersion()) - .doOnSuccess(v -> System.out.println("Agent deleted")); - } - return Mono.empty(); - })) - .doOnError(error -> System.err.println("Error: " + error.getMessage())) - .timeout(Duration.ofSeconds(30)) - .block(); - } -} From 8aad008a5a55077d0d9929d14dafcd31dd98c080 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Wed, 9 Sep 2026 11:54:54 +0800 Subject: [PATCH 11/29] Regenerate AI Agents and Projects SDKs and preserve customizations Regenerate both Java SDKs from azure-rest-api-specs commit b25b27f1034082e994bdb68e33eb52bdfae2f3e9. Preserve final voice-tool discriminator fields and Skills response helper naming through generation customizations. Update voice-tool samples and tests, AI spelling dictionary, and release notes for telephony, session affinity, and intentional API breaks. Validated regeneration, builds, Checkstyle, playback tests, README, spelling, and changelogs. Revapi continues to report the six intentional compatibility breaks against 2.4.0. --- sdk/ai/azure-ai-agents/CHANGELOG.md | 3 + .../ai/agents/AgentTelephonyAsyncClient.java | 1235 ++++++ .../azure/ai/agents/AgentTelephonyClient.java | 1217 +++++ .../azure/ai/agents/AgentsAsyncClient.java | 30 + .../com/azure/ai/agents/AgentsClient.java | 29 + ...AgentEndpointConversationsAsyncClient.java | 1565 +++++++ .../BetaAgentEndpointConversationsClient.java | 1452 ++++++ .../implementation/AgentTelephoniesImpl.java | 2793 ++++++++++++ .../ai/agents/implementation/AgentsImpl.java | 3901 +++++++++++++++-- .../BetaAgentEndpointConversationsImpl.java | 2649 +++++++++++ .../implementation/JsonMergePatchHelper.java | 18 + ...eplaceTelephonyTransferTargetsRequest.java | 88 + .../models/TransferTelephonyCallRequest.java | 82 + .../com/azure/ai/agents/models/AgentKind.java | 6 + .../models/AgentOptimizationJobProgress.java | 20 +- .../models/AzureCreateResponseOptions.java | 37 + ...PhoneExtensionTelephonyBindingRequest.java | 159 + .../models/CreateTelephonyBindingRequest.java | 167 + .../models/CreateTelephonyCallJobRequest.java | 255 ++ .../CreateTelephonyCampaignRequest.java | 205 + .../CreateTwilioTelephonyBindingRequest.java | 126 + ...ortTelephonyCampaignRecipientsRequest.java | 160 + .../ai/agents/models/McpListToolsTool.java | 173 + .../models/McpListToolsToolAnnotations.java | 57 + .../models/McpListToolsToolInputSchema.java | 57 + .../ai/agents/models/ModelRouterDetails.java | 26 +- .../PSTNTelephonyTransferDestination.java | 105 + .../PublishTelephonyCampaignRequest.java | 82 + .../models/RaiInvocationContentType.java | 57 + .../ai/agents/models/RaiInvocationMode.java | 63 + .../models/RaiInvocationModeration.java | 263 ++ .../ai/agents/models/RaiSseTextSelector.java | 118 + .../agents/models/RealtimeAudioFormats.java | 109 + .../models/RealtimeAudioFormatsAudioPcm.java | 111 + .../RealtimeAudioFormatsAudioPcmRate.java | 49 + .../models/RealtimeAudioFormatsAudioPcma.java | 80 + .../models/RealtimeAudioFormatsAudioPcmu.java | 80 + .../models/RealtimeAudioFormatsType.java | 63 + .../RealtimeConversationItemFunctionCall.java | 305 ++ ...imeConversationItemFunctionCallOutput.java | 308 ++ ...versationItemFunctionCallOutputStatus.java | 62 + ...imeConversationItemFunctionCallStatus.java | 61 + .../RealtimeConversationItemObject.java | 51 + .../models/RealtimeConversationItemType.java | 87 + .../models/RealtimeMCPApprovalRequest.java | 213 + .../models/RealtimeMCPApprovalResponse.java | 224 + .../ai/agents/models/RealtimeMCPError.java | 109 + .../agents/models/RealtimeMCPHttpError.java | 126 + .../agents/models/RealtimeMCPListTools.java | 202 + .../models/RealtimeMCPProtocolError.java | 126 + .../ai/agents/models/RealtimeMCPToolCall.java | 312 ++ .../models/RealtimeMCPToolExecutionError.java | 105 + .../agents/models/RealtimeMcpErrorType.java | 63 + .../models/RealtimeResponseStatusDetails.java | 120 + .../RealtimeResponseStatusDetailsError.java | 98 + .../RealtimeResponseStatusDetailsReason.java | 66 + .../RealtimeResponseStatusDetailsType.java | 66 + .../agents/models/RealtimeResponseUsage.java | 156 + ...ealtimeResponseUsageInputTokenDetails.java | 161 + ...eInputTokenDetailsCachedTokensDetails.java | 123 + ...altimeResponseUsageOutputTokenDetails.java | 101 + .../agents/models/RoutingConfiguration.java | 97 + .../models/SessionAffinityConfiguration.java | 127 + .../models/SessionAffinityDecision.java | 63 + .../agents/models/SessionAffinityDetails.java | 129 + .../ai/agents/models/SessionAffinityMode.java | 57 + .../models/SessionAffinityRequestMode.java | 56 + .../agents/models/SessionAffinitySource.java | 75 + .../SipTelephonyTransferDestination.java | 105 + .../TeamsPhoneExtensionTelephonyBinding.java | 154 + ...honeExtensionTelephonyBindingListItem.java | 158 + .../TeamsTelephonyTransferDestination.java | 105 + .../ai/agents/models/TelephonyBinding.java | 233 + .../models/TelephonyBindingListItem.java | 266 ++ .../agents/models/TelephonyBindingStatus.java | 57 + .../models/TelephonyCallDurationBasis.java | 57 + .../ai/agents/models/TelephonyCallJob.java | 455 ++ .../models/TelephonyCallJobCancellation.java | 155 + .../models/TelephonyCallJobSchedule.java | 138 + .../agents/models/TelephonyCallJobStatus.java | 117 + .../models/TelephonyCallLifecycleEvent.java | 332 ++ .../TelephonyCallLifecycleEventName.java | 114 + .../TelephonyCallLifecycleEventOutcome.java | 81 + .../TelephonyCallLifecycleEventSource.java | 69 + .../ai/agents/models/TelephonyCallPhase.java | 117 + .../ai/agents/models/TelephonyCallRecord.java | 538 +++ .../ai/agents/models/TelephonyCallStatus.java | 63 + .../agents/models/TelephonyCallSummary.java | 449 ++ .../models/TelephonyCallTimestampSource.java | 63 + .../ai/agents/models/TelephonyCallTiming.java | 354 ++ .../ai/agents/models/TelephonyCallTrace.java | 167 + .../agents/models/TelephonyCallTraceMode.java | 58 + .../models/TelephonyCallTraceStatus.java | 81 + .../ai/agents/models/TelephonyCampaign.java | 444 ++ .../TelephonyCampaignCallJobCounts.java | 238 + .../TelephonyCampaignConfigurationStatus.java | 82 + .../TelephonyCampaignDuplicateHandling.java | 63 + .../TelephonyCampaignExecutionStatus.java | 87 + .../TelephonyCampaignRecipientImport.java | 378 ++ ...elephonyCampaignRecipientImportFormat.java | 64 + ...elephonyCampaignRecipientImportSource.java | 167 + ...elephonyCampaignRecipientImportStatus.java | 64 + .../TelephonyCampaignRecipientMapping.java | 182 + ...ephonyCampaignRecipientMappingRequest.java | 233 + .../models/TelephonyCampaignSchedule.java | 126 + .../models/TelephonyCampaignScheduleType.java | 57 + .../ai/agents/models/TelephonyOperation.java | 191 + .../models/TelephonyOperationResource.java | 104 + .../models/TelephonyOperationStatus.java | 81 + .../models/TelephonyOutboundDestination.java | 104 + .../TelephonyOutboundDestinationType.java | 51 + ...phonyOutboundFixedIntervalRetryPolicy.java | 137 + ...boundFixedIntervalRetryPolicyResponse.java | 116 + .../models/TelephonyOutboundRetryPolicy.java | 141 + .../TelephonyOutboundRetryPolicyResponse.java | 133 + .../TelephonyOutboundRetryPolicyType.java | 51 + .../ai/agents/models/TelephonyProvider.java | 58 + .../models/TelephonyTransferDestination.java | 111 + .../TelephonyTransferDestinationKind.java | 63 + .../models/TelephonyTransferTarget.java | 126 + .../models/TelephonyTransferTargets.java | 86 + .../ai/agents/models/ToolChoiceFunction.java | 106 + .../azure/ai/agents/models/ToolChoiceMCP.java | 139 + .../ai/agents/models/ToolChoiceParam.java | 109 + .../ai/agents/models/ToolChoiceParamType.java | 135 + .../agents/models/TwilioTelephonyBinding.java | 132 + .../TwilioTelephonyBindingListItem.java | 136 + .../models/UpdateTelephonyBindingRequest.java | 271 ++ .../agents/models/VoiceAgentAudioConfig.java | 121 + .../models/VoiceAgentAudioInputConfig.java | 220 + ...entAudioInputConfigTranscriptionDelay.java | 71 + .../models/VoiceAgentAudioOutputConfig.java | 577 +++ .../models/VoiceAgentAudioTimestampType.java | 51 + .../agents/models/VoiceAgentAvatarConfig.java | 337 ++ .../VoiceAgentAvatarOutputProtocol.java | 57 + .../agents/models/VoiceAgentAvatarScene.java | 276 ++ .../agents/models/VoiceAgentAvatarType.java | 57 + .../VoiceAgentAvatarVideoBackground.java | 122 + .../models/VoiceAgentAvatarVideoCrop.java | 105 + .../models/VoiceAgentAvatarVideoParams.java | 216 + .../VoiceAgentAvatarVideoResolution.java | 104 + ...eAgentAzureSemanticVadEnTurnDetection.java | 414 ++ ...eSemanticVadMultilingualTurnDetection.java | 448 ++ ...iceAgentAzureSemanticVadTurnDetection.java | 447 ++ .../agents/models/VoiceAgentDefinition.java | 722 +++ .../models/VoiceAgentEchoCancellation.java | 145 + ...eAgentEchoCancellationReferenceSource.java | 56 + .../VoiceAgentEndConversationSystemTool.java | 112 + .../VoiceAgentEndOfUtteranceDetection.java | 159 + ...oiceAgentEndOfUtteranceDetectionModel.java | 74 + ...oiceAgentEndOfUtteranceThresholdLevel.java | 70 + .../agents/models/VoiceAgentFunctionTool.java | 181 + .../models/VoiceAgentGreetingConfig.java | 107 + .../models/VoiceAgentInputTranscription.java | 354 ++ .../VoiceAgentInputTranscriptionModel.java | 103 + .../VoiceAgentInterimResponseConfig.java | 183 + .../VoiceAgentInterimResponseTrigger.java | 57 + .../VoiceAgentLlmGeneratedGreetingConfig.java | 143 + .../VoiceAgentLlmInterimResponseConfig.java | 210 + .../ai/agents/models/VoiceAgentMcpTool.java | 492 +++ .../models/VoiceAgentNoiseReduction.java | 82 + .../models/VoiceAgentNoiseReductionType.java | 64 + .../VoiceAgentSemanticVadTurnDetection.java | 190 + ...gentSemanticVadTurnDetectionEagerness.java | 66 + .../VoiceAgentServerVadTurnDetection.java | 360 ++ .../VoiceAgentSessionIncludeOption.java | 61 + ...VoiceAgentStaticInterimResponseConfig.java | 148 + .../ai/agents/models/VoiceAgentSubagent.java | 219 + .../models/VoiceAgentSubagentConfig.java | 84 + .../VoiceAgentSubagentResponsePolicy.java | 306 ++ .../agents/models/VoiceAgentSystemTool.java | 154 + .../models/VoiceAgentSystemToolName.java | 51 + .../VoiceAgentTemplateGreetingConfig.java | 106 + .../ai/agents/models/VoiceAgentTool.java | 111 + .../VoiceAgentToolResponseScheduling.java | 69 + .../agents/models/VoiceAgentToolboxTool.java | 163 + .../ai/agents/models/VoiceAgentTransport.java | 57 + .../models/VoiceAgentTurnDetectionConfig.java | 146 + .../models/VoiceAgentTurnDetectionType.java | 76 + .../ai/agents/models/VoiceAudioCodec.java | 63 + .../models/VoiceAudioContainerFormat.java | 51 + .../ai/agents/models/VoiceAudioRole.java | 57 + .../ai/agents/models/VoiceConversation.java | 249 ++ .../models/VoiceConversationEngine.java | 105 + .../models/VoiceConversationStatus.java | 68 + .../VoiceGeneratedItemAudioResponse.java | 289 ++ .../VoiceHostedAgentConversationEngine.java | 199 + .../agents/models/VoiceItemAudioResponse.java | 288 ++ .../ai/agents/models/VoiceModelType.java | 58 + .../ai/agents/models/VoiceOutputModality.java | 69 + .../models/VoiceRecordingChannelLayout.java | 92 + .../agents/models/VoiceRecordingResponse.java | 231 + .../azure/ai/agents/models/VoiceResponse.java | 406 ++ .../ai/agents/models/VoiceResponseAudio.java | 78 + .../models/VoiceResponseAudioOutput.java | 135 + .../ai/agents/models/VoiceResponseBase.java | 354 ++ .../models/VoiceResponseBaseObject.java | 51 + .../VoiceResponseBaseOutputModality.java | 56 + .../models/VoiceResponseBaseStatus.java | 71 + .../com/azure/ai/agents/models/VoiceType.java | 81 + .../{memory => }/MemorySearchAgent.java | 9 +- .../ai/agents/MultipleAgentsConversation.java | 130 +- .../azure/ai/agents/agents/CreateAgent.java | 30 + .../azure/ai/agents/agents/DeleteAgent.java | 26 + .../com/azure/ai/agents/agents/GetAgent.java | 28 + ...{ListAgentsSample.java => ListAgents.java} | 10 +- .../conversations/CreateConversation.java | 27 + .../conversations/DeleteConversation.java | 29 + .../conversations/UpdateConversation.java | 40 + .../AgentEndpointAsyncSample.java | 6 +- .../SessionLogStreamAsyncSample.java | 6 +- .../ai/agents/memory/CreateMemoryStore.java | 2 +- .../ai/agents/memory/DeleteMemoryStore.java | 2 +- .../ai/agents/memory/GetMemoryStore.java | 2 +- .../MemoryStoreAdvancedAsyncSample.java | 13 +- .../memory/MemoryStoreAdvancedSample.java | 2 +- .../memory/MemoryStoreItemsAsyncSample.java | 2 +- .../agents/memory/MemoryStoreItemsSample.java | 2 +- .../ai/agents/memory/UpdateMemoryStore.java | 2 +- .../toolboxes/CreateToolboxVersion.java | 2 +- .../ai/agents/toolboxes/DeleteToolbox.java | 2 +- .../toolboxes/DeleteToolboxVersion.java | 2 +- .../azure/ai/agents/toolboxes/GetToolbox.java | 2 +- .../agents/toolboxes/GetToolboxVersion.java | 2 +- .../agents/toolboxes/ListToolboxVersions.java | 2 +- .../ai/agents/toolboxes/UpdateToolbox.java | 4 +- .../ai/agents/tools/FileSearchAsync.java | 175 + .../ai/agents/tools/ImageGenerationAsync.java | 89 + .../ai/agents/tools/ImageGenerationSync.java | 84 + .../{memory => tools}/MemorySearchAsync.java | 4 +- .../{memory => tools}/MemorySearchSync.java | 4 +- .../azure/ai/agents/tools/OpenApiSample.java | 111 + .../azure/ai/agents/tools/OpenApiSync.java | 114 + .../azure/ai/agents/tools/WebSearchAsync.java | 94 + .../voice/VoiceAgentBasicAsyncSample.java | 64 + .../agents/voice/VoiceAgentBasicSample.java | 67 + .../voice/VoiceAgentGenerateSample.java | 54 + ...VoiceAgentReadConversationAudioSample.java | 78 + .../VoiceAgentReadConversationSample.java | 67 + .../agents/voice/VoiceAgentSampleUtils.java | 31 + .../voice/VoiceAgentVersionsSample.java | 69 + .../voice/VoiceAgentWithToolsSample.java | 111 + ...FoundryFeaturesHeaderVerificationTest.java | 11 - .../ai/agents/MemoryStoresAsyncTests.java | 6 +- .../azure/ai/agents/MemoryStoresTests.java | 6 +- .../AgentsServicePollUtilsTest.java | 7 +- ...oiceAgentDefinitionSerializationTests.java | 104 + sdk/ai/azure-ai-projects/CHANGELOG.md | 4 + .../src/main/java/ProjectsCustomizations.java | 86 +- .../ai/projects/BetaSkillsAsyncClient.java | 4 +- .../azure/ai/projects/BetaSkillsClient.java | 4 +- .../projects/models/AgentTaxonomyInput.java | 10 +- .../projects/models/AzureAIAgentTarget.java | 2 +- .../projects/models/AzureAIModelTarget.java | 2 +- ...rget.java => FoundryEvaluationTarget.java} | 26 +- .../META-INF/azure-ai-projects_metadata.json | 2 +- sdk/ai/azure-ai-projects/tsp-location.yaml | 48 +- sdk/ai/cspell.yml | 1 + 258 files changed, 44370 insertions(+), 699 deletions(-) create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentTelephonyAsyncClient.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentTelephonyClient.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsAsyncClient.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsClient.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentTelephoniesImpl.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/BetaAgentEndpointConversationsImpl.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/models/ReplaceTelephonyTransferTargetsRequest.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/models/TransferTelephonyCallRequest.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTeamsPhoneExtensionTelephonyBindingRequest.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTelephonyBindingRequest.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTelephonyCallJobRequest.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTelephonyCampaignRequest.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTwilioTelephonyBindingRequest.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ImportTelephonyCampaignRecipientsRequest.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/McpListToolsTool.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/McpListToolsToolAnnotations.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/McpListToolsToolInputSchema.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PSTNTelephonyTransferDestination.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PublishTelephonyCampaignRequest.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiInvocationContentType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiInvocationMode.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiInvocationModeration.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiSseTextSelector.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormats.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcm.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcmRate.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcma.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcmu.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCall.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallOutput.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallOutputStatus.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallStatus.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemObject.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPApprovalRequest.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPApprovalResponse.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPError.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPHttpError.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPListTools.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPProtocolError.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPToolCall.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPToolExecutionError.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMcpErrorType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetails.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsError.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsReason.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsage.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageInputTokenDetails.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageInputTokenDetailsCachedTokensDetails.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageOutputTokenDetails.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RoutingConfiguration.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityConfiguration.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityDecision.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityDetails.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityMode.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityRequestMode.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinitySource.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SipTelephonyTransferDestination.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TeamsPhoneExtensionTelephonyBinding.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TeamsPhoneExtensionTelephonyBindingListItem.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TeamsTelephonyTransferDestination.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyBinding.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyBindingListItem.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyBindingStatus.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallDurationBasis.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJob.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJobCancellation.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJobSchedule.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJobStatus.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEvent.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventName.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventOutcome.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventSource.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallPhase.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallRecord.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallStatus.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallSummary.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTimestampSource.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTiming.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTrace.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTraceMode.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTraceStatus.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaign.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignCallJobCounts.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignConfigurationStatus.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignDuplicateHandling.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignExecutionStatus.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImport.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportFormat.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportSource.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportStatus.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientMapping.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientMappingRequest.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignSchedule.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignScheduleType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOperation.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOperationResource.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOperationStatus.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundDestination.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundDestinationType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundFixedIntervalRetryPolicy.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundFixedIntervalRetryPolicyResponse.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicy.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicyResponse.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicyType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyProvider.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferDestination.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferDestinationKind.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferTarget.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferTargets.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceFunction.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceMCP.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceParam.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceParamType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TwilioTelephonyBinding.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TwilioTelephonyBindingListItem.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/UpdateTelephonyBindingRequest.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfigTranscriptionDelay.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioOutputConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioTimestampType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarOutputProtocol.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarScene.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoBackground.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoCrop.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoParams.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoResolution.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadEnTurnDetection.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadMultilingualTurnDetection.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadTurnDetection.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentDefinition.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEchoCancellation.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEchoCancellationReferenceSource.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndConversationSystemTool.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetection.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetectionModel.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceThresholdLevel.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentFunctionTool.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentGreetingConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscription.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscriptionModel.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInterimResponseConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInterimResponseTrigger.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentLlmGeneratedGreetingConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentLlmInterimResponseConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentMcpTool.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReduction.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReductionType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSemanticVadTurnDetection.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSemanticVadTurnDetectionEagerness.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerVadTurnDetection.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionIncludeOption.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentStaticInterimResponseConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagent.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentResponsePolicy.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemTool.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemToolName.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTemplateGreetingConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTool.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolResponseScheduling.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolboxTool.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTransport.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAudioCodec.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAudioContainerFormat.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAudioRole.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceConversation.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceConversationEngine.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceConversationStatus.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceGeneratedItemAudioResponse.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceHostedAgentConversationEngine.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceItemAudioResponse.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceModelType.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceOutputModality.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceRecordingChannelLayout.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceRecordingResponse.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponse.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudio.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudioOutput.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBase.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseObject.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseOutputModality.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseStatus.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceType.java rename sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/{memory => }/MemorySearchAgent.java (95%) create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/CreateAgent.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/DeleteAgent.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/GetAgent.java rename sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/{ListAgentsSample.java => ListAgents.java} (82%) create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/CreateConversation.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/DeleteConversation.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/UpdateConversation.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/FileSearchAsync.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationAsync.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationSync.java rename sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/{memory => tools}/MemorySearchAsync.java (98%) rename sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/{memory => tools}/MemorySearchSync.java (98%) create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSample.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSync.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/WebSearchAsync.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentBasicAsyncSample.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentBasicSample.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentGenerateSample.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentReadConversationAudioSample.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentReadConversationSample.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentSampleUtils.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentVersionsSample.java create mode 100644 sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentWithToolsSample.java create mode 100644 sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/models/VoiceAgentDefinitionSerializationTests.java rename sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/{Target.java => FoundryEvaluationTarget.java} (75%) diff --git a/sdk/ai/azure-ai-agents/CHANGELOG.md b/sdk/ai/azure-ai-agents/CHANGELOG.md index d6ebea8b7dc0b..e1357ccfb83d3 100644 --- a/sdk/ai/azure-ai-agents/CHANGELOG.md +++ b/sdk/ai/azure-ai-agents/CHANGELOG.md @@ -40,6 +40,8 @@ whether web search can fetch live external content. - Added hosted-agent session defaults through `SessionConfiguration` and `HostedAgentDefinition.setSessionConfiguration(...)`, including configuration of the session idle timeout. +- Added `AgentTelephonyClient` and `AgentTelephonyAsyncClient` for outbound call jobs and campaign management, including recipient import, validation, publishing, pausing, resuming, and cancellation. +- Added session-affinity routing configuration through `AzureCreateResponseOptions.setRoutingConfig(...)`, `RoutingConfiguration`, and `SessionAffinityConfiguration`, with response details exposed by `ModelRouterDetails.getSessionAffinity()`. - Added preview synchronous and asynchronous voice-agent WebSocket clients and session APIs with typed realtime events, text and PCM16 audio input, response cancellation, function-call output, persisted-conversation options, and authenticated `wss://` transport. - Added synchronous and asynchronous live text conversation samples, an asynchronous Java Sound microphone/speaker sample with barge-in, and a live client-executed function-tool sample. @@ -56,6 +58,7 @@ ### Other Changes - Updated the OpenAI TypeSpec model dependency to 1.26.0. +- Regenerated client from the updated TypeSpec specification. - Added sync and async conversation samples demonstrating the `x-ms-user-identity` header with the OpenAI ConversationService. - Added sync and async samples for draft agent versions, reminder toolbox tools, hosted-agent enable/disable, advanced memory-store workflows, and agent optimization. diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentTelephonyAsyncClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentTelephonyAsyncClient.java new file mode 100644 index 0000000000000..aa2f9f2dc0991 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentTelephonyAsyncClient.java @@ -0,0 +1,1235 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents; + +import com.azure.ai.agents.implementation.AgentTelephoniesImpl; +import com.azure.ai.agents.models.CreateTelephonyCallJobRequest; +import com.azure.ai.agents.models.CreateTelephonyCampaignRequest; +import com.azure.ai.agents.models.ImportTelephonyCampaignRecipientsRequest; +import com.azure.ai.agents.models.PublishTelephonyCampaignRequest; +import com.azure.ai.agents.models.TelephonyCallJob; +import com.azure.ai.agents.models.TelephonyCampaign; +import com.azure.ai.agents.models.TelephonyCampaignRecipientImport; +import com.azure.ai.agents.models.TelephonyOperation; +import com.azure.ai.agents.models.TelephonyOperationResource; +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceClient; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.exception.ClientAuthenticationException; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.http.rest.Response; +import com.azure.core.util.BinaryData; +import com.azure.core.util.FluxUtil; +import com.azure.core.util.polling.PollerFlux; +import reactor.core.publisher.Mono; + +/** + * Initializes a new instance of the asynchronous AgentsClient type. + */ +@ServiceClient(builder = AgentsClientBuilder.class, isAsync = true) +public final class AgentTelephonyAsyncClient { + + @Generated + private final AgentTelephoniesImpl serviceClient; + + /** + * Initializes an instance of AgentTelephonyAsyncClient class. + * + * @param serviceClient the service client implementation. + */ + @Generated + AgentTelephonyAsyncClient(AgentTelephoniesImpl serviceClient) { + this.serviceClient = serviceClient; + } + + /** + * Create an outbound telephony call job + * + * Creates one durable direct outbound call job. The latest agent definition is resolved when each attempt executes. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     retry_policy (Optional): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: Integer (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     status: String(accepted/waiting_for_schedule/queued/dispatching/in_progress/waiting_for_retry/cancellation_requested/completed/blocked/expired/failed/cancelled) (Required)
+     *     cancellation (Optional): {
+     *         requested_by: String (Required)
+     *         mode: String (Required)
+     *         requested_at: long (Required)
+     *         revision: long (Required)
+     *     }
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     attempt_count: int (Required)
+     *     next_attempt_at: Long (Optional)
+     *     terminal_reason: String (Optional)
+     *     revision: long (Required)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe ETag response header.
LocationStringThe Location response header.
Retry-AfterDurationThe Retry-After response header.
+ * + * @param agentName The name of the voice agent that executes the call. + * @param idempotencyKey A customer-generated idempotency key. Reusing it with an equivalent request returns the + * same call job. + * @param body The direct outbound call to create. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable direct or campaign-created outbound call intent along with {@link Response} on successful + * completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> createTelephonyCallJobWithResponse(String agentName, String idempotencyKey, + BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.createTelephonyCallJobWithResponseAsync(agentName, idempotencyKey, body, + requestOptions); + } + + /** + * Get an outbound telephony call job + * + * Retrieves a durable direct or campaign-created outbound call job. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     status: String(accepted/waiting_for_schedule/queued/dispatching/in_progress/waiting_for_retry/cancellation_requested/completed/blocked/expired/failed/cancelled) (Required)
+     *     cancellation (Optional): {
+     *         requested_by: String (Required)
+     *         mode: String (Required)
+     *         requested_at: long (Required)
+     *         revision: long (Required)
+     *     }
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     attempt_count: int (Required)
+     *     next_attempt_at: Long (Optional)
+     *     terminal_reason: String (Optional)
+     *     revision: long (Required)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe ETag response header.
+ * + * @param agentName The agentName parameter. + * @param callJobId The callJobId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony call job + * + * Retrieves a durable direct or campaign-created outbound call job along with {@link Response} on successful + * completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyCallJobWithResponse(String agentName, String callJobId, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyCallJobWithResponseAsync(agentName, callJobId, requestOptions); + } + + /** + * Cancel an outbound telephony call job + * + * Requests cancellation of a durable outbound call job. A connected call is allowed to finish. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     status: String(accepted/waiting_for_schedule/queued/dispatching/in_progress/waiting_for_retry/cancellation_requested/completed/blocked/expired/failed/cancelled) (Required)
+     *     cancellation (Optional): {
+     *         requested_by: String (Required)
+     *         mode: String (Required)
+     *         requested_at: long (Required)
+     *         revision: long (Required)
+     *     }
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     attempt_count: int (Required)
+     *     next_attempt_at: Long (Optional)
+     *     terminal_reason: String (Optional)
+     *     revision: long (Required)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe ETag response header.
LocationStringThe Location response header.
Retry-AfterDurationThe Retry-After response header.
+ * + * @param agentName The agentName parameter. + * @param callJobId The callJobId parameter. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable direct or campaign-created outbound call intent along with {@link Response} on successful + * completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> cancelTelephonyCallJobWithResponse(String agentName, String callJobId, + String ifMatch, RequestOptions requestOptions) { + return this.serviceClient.cancelTelephonyCallJobWithResponseAsync(agentName, callJobId, ifMatch, + requestOptions); + } + + /** + * Create an outbound telephony campaign + * + * Creates a draft outbound campaign. Recipients are imported and validated before the campaign can be published. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     retry_policy (Optional): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: Integer (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
LocationStringThe Location response header.
+ * + * @param agentName The agentName parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response} on successful completion + * of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> createTelephonyCampaignWithResponse(String agentName, BinaryData body, + RequestOptions requestOptions) { + return this.serviceClient.createTelephonyCampaignWithResponseAsync(agentName, body, requestOptions); + } + + /** + * Get an outbound telephony campaign + * + * Retrieves an outbound campaign, including configuration, execution state, and aggregate call-job counts. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony campaign + * + * Retrieves an outbound campaign, including configuration, execution state, and aggregate call-job counts along + * with {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyCampaignWithResponse(String agentName, String campaignId, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyCampaignWithResponseAsync(agentName, campaignId, requestOptions); + } + + /** + * Import outbound telephony campaign recipients + * + * Starts an asynchronous import of campaign recipients from a Dataset CSV, JSON array, or JSONL file. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     source (Required): {
+     *         type: String (Required)
+     *         dataset_name: String (Required)
+     *         dataset_version: String (Required)
+     *         file_name: String (Required)
+     *         format: String(csv/json/jsonl) (Required)
+     *     }
+     *     mapping (Optional): {
+     *         destination: String (Optional)
+     *         recipient_key: String (Optional)
+     *         recipient_item_key: String (Optional)
+     *         not_before: String (Optional)
+     *         expires_at: String (Optional)
+     *     }
+     *     duplicate_handling: String(reject/keep_each/merge) (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param idempotencyKey The idempotencyKey parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link PollerFlux} for polling of an accepted outbound campaign operation. + */ + @Generated + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public PollerFlux beginImportTelephonyCampaignRecipients(String agentName, + String campaignId, String idempotencyKey, BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.beginImportTelephonyCampaignRecipientsAsync(agentName, campaignId, idempotencyKey, + body, requestOptions); + } + + /** + * Get an outbound telephony campaign recipient import + * + * Retrieves the durable status and counters for a campaign recipient import. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     campaign_id: String (Required)
+     *     status: String(running/succeeded/failed) (Required)
+     *     source (Required): {
+     *         type: String (Required)
+     *         dataset_name: String (Required)
+     *         dataset_version: String (Required)
+     *         file_name: String (Required)
+     *         format: String(csv/json/jsonl) (Required)
+     *     }
+     *     mapping (Optional): {
+     *         destination: String (Required)
+     *         recipient_key: String (Required)
+     *         recipient_item_key: String (Optional)
+     *         not_before: String (Optional)
+     *         expires_at: String (Optional)
+     *     }
+     *     duplicate_handling: String(reject/keep_each/merge) (Required)
+     *     rows_processed: long (Required)
+     *     eligible_recipient_count: long (Required)
+     *     invalid_recipient_count: long (Required)
+     *     error_code: String (Optional)
+     *     error_message: String (Optional)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param importId The importId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony campaign recipient import + * + * Retrieves the durable status and counters for a campaign recipient import along with {@link Response} on + * successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyCampaignRecipientImportWithResponse(String agentName, + String campaignId, String importId, RequestOptions requestOptions) { + return this.serviceClient.getTelephonyCampaignRecipientImportWithResponseAsync(agentName, campaignId, importId, + requestOptions); + } + + /** + * Validate an outbound telephony campaign + * + * Starts asynchronous validation of the current campaign draft and imported recipient snapshot. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link PollerFlux} for polling of an accepted outbound campaign operation. + */ + @Generated + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public PollerFlux beginValidateTelephonyCampaign(String agentName, String campaignId, + RequestOptions requestOptions) { + return this.serviceClient.beginValidateTelephonyCampaignAsync(agentName, campaignId, requestOptions); + } + + /** + * Publish an outbound telephony campaign + * + * Permanently locks the validated campaign draft and starts asynchronous call-job materialization. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     validation_id: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link PollerFlux} for polling of an accepted outbound campaign operation. + */ + @Generated + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public PollerFlux beginPublishTelephonyCampaign(String agentName, String campaignId, + BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.beginPublishTelephonyCampaignAsync(agentName, campaignId, body, requestOptions); + } + + /** + * Pause an outbound telephony campaign + * + * Pauses dispatch of call jobs owned by a published campaign. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response} on successful completion + * of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> pauseTelephonyCampaignWithResponse(String agentName, String campaignId, + RequestOptions requestOptions) { + return this.serviceClient.pauseTelephonyCampaignWithResponseAsync(agentName, campaignId, requestOptions); + } + + /** + * Resume an outbound telephony campaign + * + * Resumes dispatch of call jobs owned by a paused campaign. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response} on successful completion + * of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> resumeTelephonyCampaignWithResponse(String agentName, String campaignId, + RequestOptions requestOptions) { + return this.serviceClient.resumeTelephonyCampaignWithResponseAsync(agentName, campaignId, requestOptions); + } + + /** + * Cancel an outbound telephony campaign + * + * Cancels a campaign and prevents any further call-job dispatch. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response} on successful completion + * of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> cancelTelephonyCampaignWithResponse(String agentName, String campaignId, + RequestOptions requestOptions) { + return this.serviceClient.cancelTelephonyCampaignWithResponseAsync(agentName, campaignId, requestOptions); + } + + /** + * Get an outbound telephony operation + * + * Retrieves an asynchronous outbound campaign operation. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     created_at: Long (Optional)
+     *     error (Optional): {
+     *         code: String (Required)
+     *         message: String (Required)
+     *         param: String (Optional)
+     *         type: String (Optional)
+     *         details (Optional): [
+     *             (recursive schema, see above)
+     *         ]
+     *         additionalInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *         debugInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *     }
+     *     resource (Optional): {
+     *         id: String (Required)
+     *         type: String (Required)
+     *     }
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param operationId The operationId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony operation + * + * Retrieves an asynchronous outbound campaign operation along with {@link Response} on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyOperationWithResponse(String agentName, String operationId, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyOperationWithResponseAsync(agentName, operationId, requestOptions); + } + + /** + * Create an outbound telephony call job + * + * Creates one durable direct outbound call job. The latest agent definition is resolved when each attempt executes. + * + * @param agentName The name of the voice agent that executes the call. + * @param idempotencyKey A customer-generated idempotency key. Reusing it with an equivalent request returns the + * same call job. + * @param body The direct outbound call to create. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a durable direct or campaign-created outbound call intent on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono createTelephonyCallJob(String agentName, String idempotencyKey, + CreateTelephonyCallJobRequest body) { + // Generated convenience method for createTelephonyCallJobWithResponse + RequestOptions requestOptions = new RequestOptions(); + return createTelephonyCallJobWithResponse(agentName, idempotencyKey, BinaryData.fromObject(body), + requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallJob.class)); + } + + /** + * Get an outbound telephony call job + * + * Retrieves a durable direct or campaign-created outbound call job. + * + * @param agentName The agentName parameter. + * @param callJobId The callJobId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an outbound telephony call job + * + * Retrieves a durable direct or campaign-created outbound call job on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getTelephonyCallJob(String agentName, String callJobId) { + // Generated convenience method for getTelephonyCallJobWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyCallJobWithResponse(agentName, callJobId, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallJob.class)); + } + + /** + * Cancel an outbound telephony call job + * + * Requests cancellation of a durable outbound call job. A connected call is allowed to finish. + * + * @param agentName The agentName parameter. + * @param callJobId The callJobId parameter. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a durable direct or campaign-created outbound call intent on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono cancelTelephonyCallJob(String agentName, String callJobId, String ifMatch) { + // Generated convenience method for cancelTelephonyCallJobWithResponse + RequestOptions requestOptions = new RequestOptions(); + return cancelTelephonyCallJobWithResponse(agentName, callJobId, ifMatch, requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallJob.class)); + } + + /** + * Create an outbound telephony campaign + * + * Creates a draft outbound campaign. Recipients are imported and validated before the campaign can be published. + * + * @param agentName The agentName parameter. + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a durable outbound campaign owned by a voice agent on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono createTelephonyCampaign(String agentName, CreateTelephonyCampaignRequest body) { + // Generated convenience method for createTelephonyCampaignWithResponse + RequestOptions requestOptions = new RequestOptions(); + return createTelephonyCampaignWithResponse(agentName, BinaryData.fromObject(body), requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCampaign.class)); + } + + /** + * Get an outbound telephony campaign + * + * Retrieves an outbound campaign, including configuration, execution state, and aggregate call-job counts. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an outbound telephony campaign + * + * Retrieves an outbound campaign, including configuration, execution state, and aggregate call-job counts on + * successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getTelephonyCampaign(String agentName, String campaignId) { + // Generated convenience method for getTelephonyCampaignWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyCampaignWithResponse(agentName, campaignId, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCampaign.class)); + } + + /** + * Import outbound telephony campaign recipients + * + * Starts an asynchronous import of campaign recipients from a Dataset CSV, JSON array, or JSONL file. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param idempotencyKey The idempotencyKey parameter. + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link PollerFlux} for polling of an accepted outbound campaign operation. + */ + @Generated + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public PollerFlux beginImportTelephonyCampaignRecipients( + String agentName, String campaignId, String idempotencyKey, ImportTelephonyCampaignRecipientsRequest body) { + // Generated convenience method for beginImportTelephonyCampaignRecipientsWithModel + RequestOptions requestOptions = new RequestOptions(); + return serviceClient.beginImportTelephonyCampaignRecipientsWithModelAsync(agentName, campaignId, idempotencyKey, + BinaryData.fromObject(body), requestOptions); + } + + /** + * Get an outbound telephony campaign recipient import + * + * Retrieves the durable status and counters for a campaign recipient import. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param importId The importId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an outbound telephony campaign recipient import + * + * Retrieves the durable status and counters for a campaign recipient import on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getTelephonyCampaignRecipientImport(String agentName, + String campaignId, String importId) { + // Generated convenience method for getTelephonyCampaignRecipientImportWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyCampaignRecipientImportWithResponse(agentName, campaignId, importId, requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCampaignRecipientImport.class)); + } + + /** + * Validate an outbound telephony campaign + * + * Starts asynchronous validation of the current campaign draft and imported recipient snapshot. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link PollerFlux} for polling of an accepted outbound campaign operation. + */ + @Generated + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public PollerFlux beginValidateTelephonyCampaign(String agentName, + String campaignId) { + // Generated convenience method for beginValidateTelephonyCampaignWithModel + RequestOptions requestOptions = new RequestOptions(); + return serviceClient.beginValidateTelephonyCampaignWithModelAsync(agentName, campaignId, requestOptions); + } + + /** + * Publish an outbound telephony campaign + * + * Permanently locks the validated campaign draft and starts asynchronous call-job materialization. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link PollerFlux} for polling of an accepted outbound campaign operation. + */ + @Generated + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public PollerFlux beginPublishTelephonyCampaign(String agentName, + String campaignId, PublishTelephonyCampaignRequest body) { + // Generated convenience method for beginPublishTelephonyCampaignWithModel + RequestOptions requestOptions = new RequestOptions(); + return serviceClient.beginPublishTelephonyCampaignWithModelAsync(agentName, campaignId, + BinaryData.fromObject(body), requestOptions); + } + + /** + * Pause an outbound telephony campaign + * + * Pauses dispatch of call jobs owned by a published campaign. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a durable outbound campaign owned by a voice agent on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono pauseTelephonyCampaign(String agentName, String campaignId) { + // Generated convenience method for pauseTelephonyCampaignWithResponse + RequestOptions requestOptions = new RequestOptions(); + return pauseTelephonyCampaignWithResponse(agentName, campaignId, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCampaign.class)); + } + + /** + * Resume an outbound telephony campaign + * + * Resumes dispatch of call jobs owned by a paused campaign. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a durable outbound campaign owned by a voice agent on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono resumeTelephonyCampaign(String agentName, String campaignId) { + // Generated convenience method for resumeTelephonyCampaignWithResponse + RequestOptions requestOptions = new RequestOptions(); + return resumeTelephonyCampaignWithResponse(agentName, campaignId, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCampaign.class)); + } + + /** + * Cancel an outbound telephony campaign + * + * Cancels a campaign and prevents any further call-job dispatch. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a durable outbound campaign owned by a voice agent on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono cancelTelephonyCampaign(String agentName, String campaignId) { + // Generated convenience method for cancelTelephonyCampaignWithResponse + RequestOptions requestOptions = new RequestOptions(); + return cancelTelephonyCampaignWithResponse(agentName, campaignId, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCampaign.class)); + } + + /** + * Get an outbound telephony operation + * + * Retrieves an asynchronous outbound campaign operation. + * + * @param agentName The agentName parameter. + * @param operationId The operationId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an outbound telephony operation + * + * Retrieves an asynchronous outbound campaign operation on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getTelephonyOperation(String agentName, String operationId) { + // Generated convenience method for getTelephonyOperationWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyOperationWithResponse(agentName, operationId, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyOperation.class)); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentTelephonyClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentTelephonyClient.java new file mode 100644 index 0000000000000..5416af68fd690 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentTelephonyClient.java @@ -0,0 +1,1217 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents; + +import com.azure.ai.agents.implementation.AgentTelephoniesImpl; +import com.azure.ai.agents.models.CreateTelephonyCallJobRequest; +import com.azure.ai.agents.models.CreateTelephonyCampaignRequest; +import com.azure.ai.agents.models.ImportTelephonyCampaignRecipientsRequest; +import com.azure.ai.agents.models.PublishTelephonyCampaignRequest; +import com.azure.ai.agents.models.TelephonyCallJob; +import com.azure.ai.agents.models.TelephonyCampaign; +import com.azure.ai.agents.models.TelephonyCampaignRecipientImport; +import com.azure.ai.agents.models.TelephonyOperation; +import com.azure.ai.agents.models.TelephonyOperationResource; +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceClient; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.exception.ClientAuthenticationException; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.http.rest.Response; +import com.azure.core.util.BinaryData; +import com.azure.core.util.polling.SyncPoller; + +/** + * Initializes a new instance of the synchronous AgentsClient type. + */ +@ServiceClient(builder = AgentsClientBuilder.class) +public final class AgentTelephonyClient { + + @Generated + private final AgentTelephoniesImpl serviceClient; + + /** + * Initializes an instance of AgentTelephonyClient class. + * + * @param serviceClient the service client implementation. + */ + @Generated + AgentTelephonyClient(AgentTelephoniesImpl serviceClient) { + this.serviceClient = serviceClient; + } + + /** + * Create an outbound telephony call job + * + * Creates one durable direct outbound call job. The latest agent definition is resolved when each attempt executes. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     retry_policy (Optional): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: Integer (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     status: String(accepted/waiting_for_schedule/queued/dispatching/in_progress/waiting_for_retry/cancellation_requested/completed/blocked/expired/failed/cancelled) (Required)
+     *     cancellation (Optional): {
+     *         requested_by: String (Required)
+     *         mode: String (Required)
+     *         requested_at: long (Required)
+     *         revision: long (Required)
+     *     }
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     attempt_count: int (Required)
+     *     next_attempt_at: Long (Optional)
+     *     terminal_reason: String (Optional)
+     *     revision: long (Required)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe ETag response header.
LocationStringThe Location response header.
Retry-AfterDurationThe Retry-After response header.
+ * + * @param agentName The name of the voice agent that executes the call. + * @param idempotencyKey A customer-generated idempotency key. Reusing it with an equivalent request returns the + * same call job. + * @param body The direct outbound call to create. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable direct or campaign-created outbound call intent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response createTelephonyCallJobWithResponse(String agentName, String idempotencyKey, + BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.createTelephonyCallJobWithResponse(agentName, idempotencyKey, body, requestOptions); + } + + /** + * Get an outbound telephony call job + * + * Retrieves a durable direct or campaign-created outbound call job. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     status: String(accepted/waiting_for_schedule/queued/dispatching/in_progress/waiting_for_retry/cancellation_requested/completed/blocked/expired/failed/cancelled) (Required)
+     *     cancellation (Optional): {
+     *         requested_by: String (Required)
+     *         mode: String (Required)
+     *         requested_at: long (Required)
+     *         revision: long (Required)
+     *     }
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     attempt_count: int (Required)
+     *     next_attempt_at: Long (Optional)
+     *     terminal_reason: String (Optional)
+     *     revision: long (Required)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe ETag response header.
+ * + * @param agentName The agentName parameter. + * @param callJobId The callJobId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony call job + * + * Retrieves a durable direct or campaign-created outbound call job along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyCallJobWithResponse(String agentName, String callJobId, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyCallJobWithResponse(agentName, callJobId, requestOptions); + } + + /** + * Cancel an outbound telephony call job + * + * Requests cancellation of a durable outbound call job. A connected call is allowed to finish. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     status: String(accepted/waiting_for_schedule/queued/dispatching/in_progress/waiting_for_retry/cancellation_requested/completed/blocked/expired/failed/cancelled) (Required)
+     *     cancellation (Optional): {
+     *         requested_by: String (Required)
+     *         mode: String (Required)
+     *         requested_at: long (Required)
+     *         revision: long (Required)
+     *     }
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     attempt_count: int (Required)
+     *     next_attempt_at: Long (Optional)
+     *     terminal_reason: String (Optional)
+     *     revision: long (Required)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe ETag response header.
LocationStringThe Location response header.
Retry-AfterDurationThe Retry-After response header.
+ * + * @param agentName The agentName parameter. + * @param callJobId The callJobId parameter. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable direct or campaign-created outbound call intent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response cancelTelephonyCallJobWithResponse(String agentName, String callJobId, String ifMatch, + RequestOptions requestOptions) { + return this.serviceClient.cancelTelephonyCallJobWithResponse(agentName, callJobId, ifMatch, requestOptions); + } + + /** + * Create an outbound telephony campaign + * + * Creates a draft outbound campaign. Recipients are imported and validated before the campaign can be published. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     retry_policy (Optional): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: Integer (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
LocationStringThe Location response header.
+ * + * @param agentName The agentName parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response createTelephonyCampaignWithResponse(String agentName, BinaryData body, + RequestOptions requestOptions) { + return this.serviceClient.createTelephonyCampaignWithResponse(agentName, body, requestOptions); + } + + /** + * Get an outbound telephony campaign + * + * Retrieves an outbound campaign, including configuration, execution state, and aggregate call-job counts. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony campaign + * + * Retrieves an outbound campaign, including configuration, execution state, and aggregate call-job counts along + * with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyCampaignWithResponse(String agentName, String campaignId, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyCampaignWithResponse(agentName, campaignId, requestOptions); + } + + /** + * Import outbound telephony campaign recipients + * + * Starts an asynchronous import of campaign recipients from a Dataset CSV, JSON array, or JSONL file. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     source (Required): {
+     *         type: String (Required)
+     *         dataset_name: String (Required)
+     *         dataset_version: String (Required)
+     *         file_name: String (Required)
+     *         format: String(csv/json/jsonl) (Required)
+     *     }
+     *     mapping (Optional): {
+     *         destination: String (Optional)
+     *         recipient_key: String (Optional)
+     *         recipient_item_key: String (Optional)
+     *         not_before: String (Optional)
+     *         expires_at: String (Optional)
+     *     }
+     *     duplicate_handling: String(reject/keep_each/merge) (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param idempotencyKey The idempotencyKey parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link SyncPoller} for polling of an accepted outbound campaign operation. + */ + @Generated + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller beginImportTelephonyCampaignRecipients(String agentName, + String campaignId, String idempotencyKey, BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.beginImportTelephonyCampaignRecipients(agentName, campaignId, idempotencyKey, body, + requestOptions); + } + + /** + * Get an outbound telephony campaign recipient import + * + * Retrieves the durable status and counters for a campaign recipient import. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     campaign_id: String (Required)
+     *     status: String(running/succeeded/failed) (Required)
+     *     source (Required): {
+     *         type: String (Required)
+     *         dataset_name: String (Required)
+     *         dataset_version: String (Required)
+     *         file_name: String (Required)
+     *         format: String(csv/json/jsonl) (Required)
+     *     }
+     *     mapping (Optional): {
+     *         destination: String (Required)
+     *         recipient_key: String (Required)
+     *         recipient_item_key: String (Optional)
+     *         not_before: String (Optional)
+     *         expires_at: String (Optional)
+     *     }
+     *     duplicate_handling: String(reject/keep_each/merge) (Required)
+     *     rows_processed: long (Required)
+     *     eligible_recipient_count: long (Required)
+     *     invalid_recipient_count: long (Required)
+     *     error_code: String (Optional)
+     *     error_message: String (Optional)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param importId The importId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony campaign recipient import + * + * Retrieves the durable status and counters for a campaign recipient import along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyCampaignRecipientImportWithResponse(String agentName, String campaignId, + String importId, RequestOptions requestOptions) { + return this.serviceClient.getTelephonyCampaignRecipientImportWithResponse(agentName, campaignId, importId, + requestOptions); + } + + /** + * Validate an outbound telephony campaign + * + * Starts asynchronous validation of the current campaign draft and imported recipient snapshot. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link SyncPoller} for polling of an accepted outbound campaign operation. + */ + @Generated + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller beginValidateTelephonyCampaign(String agentName, String campaignId, + RequestOptions requestOptions) { + return this.serviceClient.beginValidateTelephonyCampaign(agentName, campaignId, requestOptions); + } + + /** + * Publish an outbound telephony campaign + * + * Permanently locks the validated campaign draft and starts asynchronous call-job materialization. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     validation_id: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link SyncPoller} for polling of an accepted outbound campaign operation. + */ + @Generated + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller beginPublishTelephonyCampaign(String agentName, String campaignId, + BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.beginPublishTelephonyCampaign(agentName, campaignId, body, requestOptions); + } + + /** + * Pause an outbound telephony campaign + * + * Pauses dispatch of call jobs owned by a published campaign. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response pauseTelephonyCampaignWithResponse(String agentName, String campaignId, + RequestOptions requestOptions) { + return this.serviceClient.pauseTelephonyCampaignWithResponse(agentName, campaignId, requestOptions); + } + + /** + * Resume an outbound telephony campaign + * + * Resumes dispatch of call jobs owned by a paused campaign. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response resumeTelephonyCampaignWithResponse(String agentName, String campaignId, + RequestOptions requestOptions) { + return this.serviceClient.resumeTelephonyCampaignWithResponse(agentName, campaignId, requestOptions); + } + + /** + * Cancel an outbound telephony campaign + * + * Cancels a campaign and prevents any further call-job dispatch. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response cancelTelephonyCampaignWithResponse(String agentName, String campaignId, + RequestOptions requestOptions) { + return this.serviceClient.cancelTelephonyCampaignWithResponse(agentName, campaignId, requestOptions); + } + + /** + * Get an outbound telephony operation + * + * Retrieves an asynchronous outbound campaign operation. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     created_at: Long (Optional)
+     *     error (Optional): {
+     *         code: String (Required)
+     *         message: String (Required)
+     *         param: String (Optional)
+     *         type: String (Optional)
+     *         details (Optional): [
+     *             (recursive schema, see above)
+     *         ]
+     *         additionalInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *         debugInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *     }
+     *     resource (Optional): {
+     *         id: String (Required)
+     *         type: String (Required)
+     *     }
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param operationId The operationId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony operation + * + * Retrieves an asynchronous outbound campaign operation along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyOperationWithResponse(String agentName, String operationId, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyOperationWithResponse(agentName, operationId, requestOptions); + } + + /** + * Create an outbound telephony call job + * + * Creates one durable direct outbound call job. The latest agent definition is resolved when each attempt executes. + * + * @param agentName The name of the voice agent that executes the call. + * @param idempotencyKey A customer-generated idempotency key. Reusing it with an equivalent request returns the + * same call job. + * @param body The direct outbound call to create. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a durable direct or campaign-created outbound call intent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyCallJob createTelephonyCallJob(String agentName, String idempotencyKey, + CreateTelephonyCallJobRequest body) { + // Generated convenience method for createTelephonyCallJobWithResponse + RequestOptions requestOptions = new RequestOptions(); + return createTelephonyCallJobWithResponse(agentName, idempotencyKey, BinaryData.fromObject(body), + requestOptions).getValue().toObject(TelephonyCallJob.class); + } + + /** + * Get an outbound telephony call job + * + * Retrieves a durable direct or campaign-created outbound call job. + * + * @param agentName The agentName parameter. + * @param callJobId The callJobId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an outbound telephony call job + * + * Retrieves a durable direct or campaign-created outbound call job. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyCallJob getTelephonyCallJob(String agentName, String callJobId) { + // Generated convenience method for getTelephonyCallJobWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyCallJobWithResponse(agentName, callJobId, requestOptions).getValue() + .toObject(TelephonyCallJob.class); + } + + /** + * Cancel an outbound telephony call job + * + * Requests cancellation of a durable outbound call job. A connected call is allowed to finish. + * + * @param agentName The agentName parameter. + * @param callJobId The callJobId parameter. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a durable direct or campaign-created outbound call intent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyCallJob cancelTelephonyCallJob(String agentName, String callJobId, String ifMatch) { + // Generated convenience method for cancelTelephonyCallJobWithResponse + RequestOptions requestOptions = new RequestOptions(); + return cancelTelephonyCallJobWithResponse(agentName, callJobId, ifMatch, requestOptions).getValue() + .toObject(TelephonyCallJob.class); + } + + /** + * Create an outbound telephony campaign + * + * Creates a draft outbound campaign. Recipients are imported and validated before the campaign can be published. + * + * @param agentName The agentName parameter. + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a durable outbound campaign owned by a voice agent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyCampaign createTelephonyCampaign(String agentName, CreateTelephonyCampaignRequest body) { + // Generated convenience method for createTelephonyCampaignWithResponse + RequestOptions requestOptions = new RequestOptions(); + return createTelephonyCampaignWithResponse(agentName, BinaryData.fromObject(body), requestOptions).getValue() + .toObject(TelephonyCampaign.class); + } + + /** + * Get an outbound telephony campaign + * + * Retrieves an outbound campaign, including configuration, execution state, and aggregate call-job counts. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an outbound telephony campaign + * + * Retrieves an outbound campaign, including configuration, execution state, and aggregate call-job counts. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyCampaign getTelephonyCampaign(String agentName, String campaignId) { + // Generated convenience method for getTelephonyCampaignWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyCampaignWithResponse(agentName, campaignId, requestOptions).getValue() + .toObject(TelephonyCampaign.class); + } + + /** + * Import outbound telephony campaign recipients + * + * Starts an asynchronous import of campaign recipients from a Dataset CSV, JSON array, or JSONL file. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param idempotencyKey The idempotencyKey parameter. + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of an accepted outbound campaign operation. + */ + @Generated + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller beginImportTelephonyCampaignRecipients( + String agentName, String campaignId, String idempotencyKey, ImportTelephonyCampaignRecipientsRequest body) { + // Generated convenience method for beginImportTelephonyCampaignRecipientsWithModel + RequestOptions requestOptions = new RequestOptions(); + return serviceClient.beginImportTelephonyCampaignRecipientsWithModel(agentName, campaignId, idempotencyKey, + BinaryData.fromObject(body), requestOptions); + } + + /** + * Get an outbound telephony campaign recipient import + * + * Retrieves the durable status and counters for a campaign recipient import. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param importId The importId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an outbound telephony campaign recipient import + * + * Retrieves the durable status and counters for a campaign recipient import. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyCampaignRecipientImport getTelephonyCampaignRecipientImport(String agentName, String campaignId, + String importId) { + // Generated convenience method for getTelephonyCampaignRecipientImportWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyCampaignRecipientImportWithResponse(agentName, campaignId, importId, requestOptions) + .getValue() + .toObject(TelephonyCampaignRecipientImport.class); + } + + /** + * Validate an outbound telephony campaign + * + * Starts asynchronous validation of the current campaign draft and imported recipient snapshot. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of an accepted outbound campaign operation. + */ + @Generated + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller beginValidateTelephonyCampaign(String agentName, + String campaignId) { + // Generated convenience method for beginValidateTelephonyCampaignWithModel + RequestOptions requestOptions = new RequestOptions(); + return serviceClient.beginValidateTelephonyCampaignWithModel(agentName, campaignId, requestOptions); + } + + /** + * Publish an outbound telephony campaign + * + * Permanently locks the validated campaign draft and starts asynchronous call-job materialization. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param body The body parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the {@link SyncPoller} for polling of an accepted outbound campaign operation. + */ + @Generated + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller beginPublishTelephonyCampaign(String agentName, + String campaignId, PublishTelephonyCampaignRequest body) { + // Generated convenience method for beginPublishTelephonyCampaignWithModel + RequestOptions requestOptions = new RequestOptions(); + return serviceClient.beginPublishTelephonyCampaignWithModel(agentName, campaignId, BinaryData.fromObject(body), + requestOptions); + } + + /** + * Pause an outbound telephony campaign + * + * Pauses dispatch of call jobs owned by a published campaign. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a durable outbound campaign owned by a voice agent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyCampaign pauseTelephonyCampaign(String agentName, String campaignId) { + // Generated convenience method for pauseTelephonyCampaignWithResponse + RequestOptions requestOptions = new RequestOptions(); + return pauseTelephonyCampaignWithResponse(agentName, campaignId, requestOptions).getValue() + .toObject(TelephonyCampaign.class); + } + + /** + * Resume an outbound telephony campaign + * + * Resumes dispatch of call jobs owned by a paused campaign. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a durable outbound campaign owned by a voice agent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyCampaign resumeTelephonyCampaign(String agentName, String campaignId) { + // Generated convenience method for resumeTelephonyCampaignWithResponse + RequestOptions requestOptions = new RequestOptions(); + return resumeTelephonyCampaignWithResponse(agentName, campaignId, requestOptions).getValue() + .toObject(TelephonyCampaign.class); + } + + /** + * Cancel an outbound telephony campaign + * + * Cancels a campaign and prevents any further call-job dispatch. + * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a durable outbound campaign owned by a voice agent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyCampaign cancelTelephonyCampaign(String agentName, String campaignId) { + // Generated convenience method for cancelTelephonyCampaignWithResponse + RequestOptions requestOptions = new RequestOptions(); + return cancelTelephonyCampaignWithResponse(agentName, campaignId, requestOptions).getValue() + .toObject(TelephonyCampaign.class); + } + + /** + * Get an outbound telephony operation + * + * Retrieves an asynchronous outbound campaign operation. + * + * @param agentName The agentName parameter. + * @param operationId The operationId parameter. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an outbound telephony operation + * + * Retrieves an asynchronous outbound campaign operation. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyOperation getTelephonyOperation(String agentName, String operationId) { + // Generated convenience method for getTelephonyOperationWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyOperationWithResponse(agentName, operationId, requestOptions).getValue() + .toObject(TelephonyOperation.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java index b20f6130f13a5..ceb5a79ab90f9 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java @@ -2227,6 +2227,36 @@ Mono createAgent(CreateAgentOptions options) { .map(protocolMethodData -> protocolMethodData.toObject(AgentDetails.class)); } + /** + * Create an agent version + * + * Creates a new version for the specified agent and returns the created version resource. + * + * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. + * - Must start and end with alphanumeric characters, + * - Can contain hyphens in the middle + * - Must not exceed 63 characters. + * @param definition The agent definition. This can be a prompt, workflow, hosted, external, or voice agent + * definition. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono createAgentVersion(String agentName, AgentDefinition definition) { + // The TypeSpec operation flattens more fields than the emitter allows for automatic convenience generation. + RequestOptions requestOptions = new RequestOptions(); + CreateAgentVersionRequest createAgentVersionRequestObj = new CreateAgentVersionRequest(definition); + BinaryData createAgentVersionRequest = BinaryData.fromObject(createAgentVersionRequestObj); + return createAgentVersionWithResponse(agentName, createAgentVersionRequest, requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(AgentVersionDetails.class)); + } + /** * Create a new agent version. * diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java index 920229c22d1a3..f6a8f68188408 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java @@ -2160,6 +2160,35 @@ AgentDetails createAgent(CreateAgentOptions options) { return createAgentWithResponse(createAgentRequest, requestOptions).getValue().toObject(AgentDetails.class); } + /** + * Create an agent version + * + * Creates a new version for the specified agent and returns the created version resource. + * + * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. + * - Must start and end with alphanumeric characters, + * - Can contain hyphens in the middle + * - Must not exceed 63 characters. + * @param definition The agent definition. This can be a prompt, workflow, hosted, external, or voice agent + * definition. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public AgentVersionDetails createAgentVersion(String agentName, AgentDefinition definition) { + // The TypeSpec operation flattens more fields than the emitter allows for automatic convenience generation. + RequestOptions requestOptions = new RequestOptions(); + CreateAgentVersionRequest createAgentVersionRequestObj = new CreateAgentVersionRequest(definition); + BinaryData createAgentVersionRequest = BinaryData.fromObject(createAgentVersionRequestObj); + return createAgentVersionWithResponse(agentName, createAgentVersionRequest, requestOptions).getValue() + .toObject(AgentVersionDetails.class); + } + /** * Create a new agent version. * diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsAsyncClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsAsyncClient.java new file mode 100644 index 0000000000000..c6f6dc43ffb70 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsAsyncClient.java @@ -0,0 +1,1565 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents; + +import com.azure.ai.agents.implementation.BetaAgentEndpointConversationsImpl; +import com.azure.ai.agents.implementation.utils.Beta; +import com.azure.ai.agents.models.PageOrder; +import com.azure.ai.agents.models.RealtimeConversationItem; +import com.azure.ai.agents.models.VoiceConversation; +import com.azure.ai.agents.models.VoiceGeneratedItemAudioResponse; +import com.azure.ai.agents.models.VoiceItemAudioResponse; +import com.azure.ai.agents.models.VoiceRecordingResponse; +import com.azure.ai.agents.models.VoiceResponse; +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceClient; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.exception.ClientAuthenticationException; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.rest.PagedFlux; +import com.azure.core.http.rest.PagedResponse; +import com.azure.core.http.rest.PagedResponseBase; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.http.rest.Response; +import com.azure.core.util.BinaryData; +import com.azure.core.util.FluxUtil; +import java.util.stream.Collectors; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +/** + * Initializes a new instance of the asynchronous AgentsClient type. + */ +@ServiceClient(builder = AgentsClientBuilder.class, isAsync = true) +@Beta(warningText = "This class is in preview and may change in future releases.") +public final class BetaAgentEndpointConversationsAsyncClient { + + @Generated + private final BetaAgentEndpointConversationsImpl serviceClient; + + /** + * Initializes an instance of BetaAgentEndpointConversationsAsyncClient class. + * + * @param serviceClient the service client implementation. + */ + @Generated + BetaAgentEndpointConversationsAsyncClient(BetaAgentEndpointConversationsImpl serviceClient) { + this.serviceClient = serviceClient; + } + + /** + * List voice agent conversations + * + * Returns the conversations persisted for the specified voice agent endpoint. + * Conversations are present when the session's effective `store` setting is `true`, whether inherited from the + * agent definition or enabled by the WebSocket session override. + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     status: String(in_progress/completed/failed) (Required)
+     *     created_at: long (Required)
+     *     completed_at: Long (Optional)
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     last_error (Optional): {
+     *         code: String (Required)
+     *         message: String (Required)
+     *         param: String (Optional)
+     *         type: String (Optional)
+     *         details (Optional): [
+     *             (recursive schema, see above)
+     *         ]
+     *         additionalInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *         debugInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *     }
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversations(String agentName, RequestOptions requestOptions) { + return this.serviceClient.listAgentConversationsAsync(agentName, requestOptions); + } + + /** + * Get a voice agent conversation + * + * Retrieves a single conversation recorded for the specified voice agent endpoint by its id. + * Returns `404` when the conversation was not persisted (`store = false`) or does not exist. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     status: String(in_progress/completed/failed) (Required)
+     *     created_at: long (Required)
+     *     completed_at: Long (Optional)
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     last_error (Optional): {
+     *         code: String (Required)
+     *         message: String (Required)
+     *         param: String (Optional)
+     *         type: String (Optional)
+     *         details (Optional): [
+     *             (recursive schema, see above)
+     *         ]
+     *         additionalInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *         debugInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *     }
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation to retrieve. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation + * + * Retrieves a single conversation recorded for the specified voice agent endpoint by its id. + * Returns `404` when the conversation was not persisted (`store = false`) or does not exist along with + * {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationWithResponse(String agentName, String conversationId, + RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationWithResponseAsync(agentName, conversationId, requestOptions); + } + + /** + * Delete a voice agent conversation + * + * Deletes a conversation and all of its stored data — responses, items, and any audio (cascade). This is + * the customer's explicit data-deletion control for voice conversations. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation to delete. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> deleteAgentConversationWithResponse(String agentName, String conversationId, + RequestOptions requestOptions) { + return this.serviceClient.deleteAgentConversationWithResponseAsync(agentName, conversationId, requestOptions); + } + + /** + * List responses in a voice agent conversation + * + * Returns a paged collection of the responses (model inference turns) recorded for the specified + * conversation. The per-response `output` projection may be omitted here; use the response-items route + * for the canonical paged output. Returns `404` when the conversation was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String(realtime.response) (Optional)
+     *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
+     *     status_details (Optional): {
+     *         type: String(completed/cancelled/failed/incomplete) (Optional)
+     *         reason: String(turn_detected/client_cancelled/max_output_tokens/content_filter) (Optional)
+     *         error (Optional): {
+     *             type: String (Optional)
+     *             code: String (Optional)
+     *         }
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     conversation_id: String (Required)
+     *     output_modalities (Optional): [
+     *         String(text/audio) (Optional)
+     *     ]
+     *     max_output_tokens: BinaryData (Optional)
+     *     output (Optional): [
+     *          (Optional){
+     *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     *         }
+     *     ]
+     *     audio (Optional): {
+     *         output (Optional): {
+     *             voice: String (Optional)
+     *             voice_type: String(openai/azure-standard/azure-custom/azure-personal/avatar-voice-sync/azure-realtime-native) (Optional)
+     *             voice_locale: String (Optional)
+     *             format (Optional): {
+     *                 type: String(audio/pcm/audio/pcmu/audio/pcma) (Required)
+     *             }
+     *         }
+     *     }
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     temperature: Double (Optional)
+     *     created_at: Long (Optional)
+     *     completed_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose responses are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversationResponses(String agentName, String conversationId, + RequestOptions requestOptions) { + return this.serviceClient.listAgentConversationResponsesAsync(agentName, conversationId, requestOptions); + } + + /** + * Get a voice agent conversation response + * + * Retrieves a single response from the specified conversation by its id, including its `output` items, + * `usage`, and status. Returns `404` when the conversation or response was not persisted (`store = false`). + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String(realtime.response) (Optional)
+     *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
+     *     status_details (Optional): {
+     *         type: String(completed/cancelled/failed/incomplete) (Optional)
+     *         reason: String(turn_detected/client_cancelled/max_output_tokens/content_filter) (Optional)
+     *         error (Optional): {
+     *             type: String (Optional)
+     *             code: String (Optional)
+     *         }
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     conversation_id: String (Required)
+     *     output_modalities (Optional): [
+     *         String(text/audio) (Optional)
+     *     ]
+     *     max_output_tokens: BinaryData (Optional)
+     *     output (Optional): [
+     *          (Optional){
+     *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     *         }
+     *     ]
+     *     audio (Optional): {
+     *         output (Optional): {
+     *             voice: String (Optional)
+     *             voice_type: String(openai/azure-standard/azure-custom/azure-personal/avatar-voice-sync/azure-realtime-native) (Optional)
+     *             voice_locale: String (Optional)
+     *             format (Optional): {
+     *                 type: String(audio/pcm/audio/pcmu/audio/pcma) (Required)
+     *             }
+     *         }
+     *     }
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     temperature: Double (Optional)
+     *     created_at: Long (Optional)
+     *     completed_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response to retrieve. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation response + * + * Retrieves a single response from the specified conversation by its id, including its `output` items, + * `usage`, and status along with {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationResponseWithResponse(String agentName, String conversationId, + String responseId, RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationResponseWithResponseAsync(agentName, conversationId, responseId, + requestOptions); + } + + /** + * List items produced by a voice agent conversation response + * + * Returns a paged collection of the output items produced by a specific response (the response's output + * projection). For the complete ordered conversation history — including user input and client-created + * tool outputs — use the conversation items route instead. Returns `404` when the conversation or + * response was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response whose output items are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversationResponseItems(String agentName, String conversationId, + String responseId, RequestOptions requestOptions) { + return this.serviceClient.listAgentConversationResponseItemsAsync(agentName, conversationId, responseId, + requestOptions); + } + + /** + * List items in a voice agent conversation + * + * Returns a paged collection of items — the complete ordered conversation history, including user input, + * assistant output, and client-created tool outputs (transcripts + tool events). Returns `404` when the + * conversation was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose items are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversationItems(String agentName, String conversationId, + RequestOptions requestOptions) { + return this.serviceClient.listAgentConversationItemsAsync(agentName, conversationId, requestOptions); + } + + /** + * Get a voice agent conversation item + * + * Retrieves a single item from the specified conversation by its id, including its transcript. An + * `input_audio`/`output_audio` content part indicates that audio is available for the item; the canonical per-item + * audio metadata is the `/items/{item_id}/audio` resource, and the bytes are streamed by + * `/items/{item_id}/audio/content`. Returns `404` when the conversation or item was not persisted + * (`store = false`). + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item to retrieve. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation item + * + * Retrieves a single item from the specified conversation by its id, including its transcript along with + * {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationItemWithResponse(String agentName, String conversationId, + String itemId, RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationItemWithResponseAsync(agentName, conversationId, itemId, + requestOptions); + } + + /** + * Get a voice agent conversation item's audio metadata + * + * Returns metadata for a single conversation item's audio segment, including the common playback facts + * (role, format/codec, sample rate, channels, offset, duration) for both Foundry-managed and + * bring-your-own-storage (BYOS) recordings; for BYOS the response additionally includes `blob_uri`, the URI + * of the recording in the customer's own storage (no SAS) that the customer downloads with their own credentials. + * Requires the conversation to have persisted audio (`store = true`); returns `404` when the conversation, + * item, or its audio was not persisted. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     conversation_id: String (Required)
+     *     item_id: String (Required)
+     *     role: String(user/agent) (Optional)
+     *     format: String(wav) (Optional)
+     *     codec: String(pcm16/pcmu/pcma) (Optional)
+     *     sample_rate: Integer (Optional)
+     *     channels: Integer (Optional)
+     *     start_offset_ms: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     blob_uri: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose audio metadata is retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation item's audio metadata + * + * Returns metadata for a single conversation item's audio segment, including the common playback facts + * (role, format/codec, sample rate, channels, offset, duration) for both Foundry-managed and + * bring-your-own-storage (BYOS) recordings; for BYOS the response additionally includes `blob_uri`, the URI + * of the recording in the customer's own storage (no SAS) that the customer downloads with their own credentials. + * Requires the conversation to have persisted audio (`store = true`); returns `404` when the conversation, + * item, or its audio was not persisted along with {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationItemAudioWithResponse(String agentName, String conversationId, + String itemId, RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationItemAudioWithResponseAsync(agentName, conversationId, itemId, + requestOptions); + } + + /** + * Stream a voice agent conversation item's audio + * + * Streams a single conversation item's audio as a WAV (`audio/wav`) byte stream through the service (no SAS + * URL). This route serves Foundry-managed storage only. For bring-your-own-storage (BYOS) recordings the + * bytes are not proxied — the caller must download directly from customer storage using the `blob_uri` + * returned by the item's `/audio` metadata route — so this route returns `409 Conflict` for BYOS recordings. + * Returns `404` when the conversation, item, or its audio was not persisted (`store = false`). + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose audio is streamed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationItemAudioContentWithResponse(String agentName, + String conversationId, String itemId, RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationItemAudioContentWithResponseAsync(agentName, conversationId, + itemId, requestOptions); + } + + /** + * Get a voice agent conversation item's generated audio metadata + * + * Returns metadata for a conversation item's generated audio. This subordinate artifact is separate from the + * canonical heard-audio segment and exists only when playback was interrupted and the service rendered more audio + * than the listener heard, including when the response ends as cancelled. Returns `404` when the conversation or + * item was not persisted, or when no generated audio exists beyond the heard segment. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     conversation_id: String (Required)
+     *     item_id: String (Required)
+     *     role: String(user/agent) (Optional)
+     *     format: String(wav) (Optional)
+     *     codec: String(pcm16/pcmu/pcma) (Optional)
+     *     sample_rate: Integer (Optional)
+     *     channels: Integer (Optional)
+     *     start_offset_ms: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     blob_uri: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose generated audio metadata is retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation item's generated audio metadata + * + * Returns metadata for a conversation item's generated audio along with {@link Response} on successful completion + * of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationItemGeneratedAudioWithResponse(String agentName, + String conversationId, String itemId, RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationItemGeneratedAudioWithResponseAsync(agentName, conversationId, + itemId, requestOptions); + } + + /** + * Stream a voice agent conversation item's generated audio + * + * Streams a conversation item's generated audio as a WAV (`audio/wav`) byte stream through the service. This + * subordinate artifact exists only when playback was interrupted and the service rendered more audio than the + * listener heard, including when the response ends as cancelled. This route serves Foundry-managed storage only. + * For bring-your-own-storage (BYOS) recordings the bytes are not proxied, so this route returns `409 Conflict`. + * Returns `404` when the conversation or item was not persisted, or when no generated audio exists beyond the + * heard segment. + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose generated audio is streamed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationItemGeneratedAudioContentWithResponse(String agentName, + String conversationId, String itemId, RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationItemGeneratedAudioContentWithResponseAsync(agentName, + conversationId, itemId, requestOptions); + } + + /** + * Get a voice agent conversation's merged recording metadata + * + * Returns metadata for the whole-call merged stereo recording (user audio on the left channel, agent audio + * on the right). The common metadata (format, sample rate, channels, channel layout, duration) is returned + * for both Foundry-managed and bring-your-own-storage (BYOS) recordings; for BYOS the response additionally + * includes `blob_uri`, the URI of the recording in the customer's own storage (no SAS) that the customer downloads + * with their own credentials. The recording is built once from the per-turn segments after persistence + * finalization succeeds. While the conversation is `in_progress`, this route returns retriable `409 Conflict` + * with `error.code = recording_not_ready` and a `Retry-After` header when retry guidance is available. When the + * conversation is `failed`, it returns terminal `409 Conflict` with `error.code = recording_unavailable`. + * For a `completed` conversation, metadata is available subject to the existing BYOS behavior. Requires the + * conversation to have persisted audio (`store = true`); otherwise returns `404`. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     conversation_id: String (Required)
+     *     format: String(wav) (Required)
+     *     sample_rate: int (Required)
+     *     channels: int (Required)
+     *     channel_layout (Required): {
+     *         left: String (Required)
+     *         right: String (Required)
+     *     }
+     *     duration_ms: long (Required)
+     *     blob_uri: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose merged recording metadata is retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation's merged recording metadata + * + * Returns metadata for the whole-call merged stereo recording (user audio on the left channel, agent audio + * on the right) along with {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationAudioWithResponse(String agentName, String conversationId, + RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationAudioWithResponseAsync(agentName, conversationId, requestOptions); + } + + /** + * Stream a voice agent conversation's merged recording + * + * Streams the whole-call merged stereo recording as a WAV (`audio/wav`) byte stream through the service + * (no SAS URL). This route serves Foundry-managed storage only. For bring-your-own-storage (BYOS) + * recordings the bytes are not proxied — the caller must download directly from customer storage using the + * `blob_uri` returned by the metadata route — so this route returns `409 Conflict` for BYOS recordings. + * While the conversation is `in_progress`, this route returns retriable `409 Conflict` with + * `error.code = recording_not_ready` and a `Retry-After` header when retry guidance is available. When the + * conversation is `failed`, it returns terminal `409 Conflict` with `error.code = recording_unavailable`. + * For a `completed` conversation, content is available subject to the existing BYOS behavior. A conversation + * without persisted audio (`store = false`) returns `404`. + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose merged recording is streamed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationAudioContentWithResponse(String agentName, + String conversationId, RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationAudioContentWithResponseAsync(agentName, conversationId, + requestOptions); + } + + /** + * List voice agent conversations + * + * Returns the conversations persisted for the specified voice agent endpoint. + * Conversations are present when the session's effective `store` setting is `true`, whether inherited from the + * agent definition or enabled by the WebSocket session override. + * + * @param agentName The name of the agent. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversations(String agentName, Integer limit, PageOrder order, + String after, String before) { + // Generated convenience method for listAgentConversations + RequestOptions requestOptions = new RequestOptions(); + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + PagedFlux pagedFluxResponse = listAgentConversations(agentName, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(VoiceConversation.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * List voice agent conversations + * + * Returns the conversations persisted for the specified voice agent endpoint. + * Conversations are present when the session's effective `store` setting is `true`, whether inherited from the + * agent definition or enabled by the WebSocket session override. + * + * @param agentName The name of the agent. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversations(String agentName) { + // Generated convenience method for listAgentConversations + RequestOptions requestOptions = new RequestOptions(); + PagedFlux pagedFluxResponse = listAgentConversations(agentName, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(VoiceConversation.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * Get a voice agent conversation + * + * Retrieves a single conversation recorded for the specified voice agent endpoint by its id. + * Returns `404` when the conversation was not persisted (`store = false`) or does not exist. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation to retrieve. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a voice agent conversation + * + * Retrieves a single conversation recorded for the specified voice agent endpoint by its id. + * Returns `404` when the conversation was not persisted (`store = false`) or does not exist on successful + * completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getAgentConversation(String agentName, String conversationId) { + // Generated convenience method for getAgentConversationWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationWithResponse(agentName, conversationId, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(VoiceConversation.class)); + } + + /** + * Delete a voice agent conversation + * + * Deletes a conversation and all of its stored data — responses, items, and any audio (cascade). This is + * the customer's explicit data-deletion control for voice conversations. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation to delete. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return A {@link Mono} that completes when a successful response is received. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono deleteAgentConversation(String agentName, String conversationId) { + // Generated convenience method for deleteAgentConversationWithResponse + RequestOptions requestOptions = new RequestOptions(); + return deleteAgentConversationWithResponse(agentName, conversationId, requestOptions).flatMap(FluxUtil::toMono); + } + + /** + * List responses in a voice agent conversation + * + * Returns a paged collection of the responses (model inference turns) recorded for the specified + * conversation. The per-response `output` projection may be omitted here; use the response-items route + * for the canonical paged output. Returns `404` when the conversation was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose responses are listed. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversationResponses(String agentName, String conversationId, + Integer limit, PageOrder order, String after, String before) { + // Generated convenience method for listAgentConversationResponses + RequestOptions requestOptions = new RequestOptions(); + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + PagedFlux pagedFluxResponse + = listAgentConversationResponses(agentName, conversationId, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(VoiceResponse.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * List responses in a voice agent conversation + * + * Returns a paged collection of the responses (model inference turns) recorded for the specified + * conversation. The per-response `output` projection may be omitted here; use the response-items route + * for the canonical paged output. Returns `404` when the conversation was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose responses are listed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversationResponses(String agentName, String conversationId) { + // Generated convenience method for listAgentConversationResponses + RequestOptions requestOptions = new RequestOptions(); + PagedFlux pagedFluxResponse + = listAgentConversationResponses(agentName, conversationId, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux.map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(VoiceResponse.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * Get a voice agent conversation response + * + * Retrieves a single response from the specified conversation by its id, including its `output` items, + * `usage`, and status. Returns `404` when the conversation or response was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response to retrieve. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a voice agent conversation response + * + * Retrieves a single response from the specified conversation by its id, including its `output` items, + * `usage`, and status on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getAgentConversationResponse(String agentName, String conversationId, + String responseId) { + // Generated convenience method for getAgentConversationResponseWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationResponseWithResponse(agentName, conversationId, responseId, requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(VoiceResponse.class)); + } + + /** + * List items produced by a voice agent conversation response + * + * Returns a paged collection of the output items produced by a specific response (the response's output + * projection). For the complete ordered conversation history — including user input and client-created + * tool outputs — use the conversation items route instead. Returns `404` when the conversation or + * response was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response whose output items are listed. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversationResponseItems(String agentName, + String conversationId, String responseId, Integer limit, PageOrder order, String after, String before) { + // Generated convenience method for listAgentConversationResponseItems + RequestOptions requestOptions = new RequestOptions(); + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + PagedFlux pagedFluxResponse + = listAgentConversationResponseItems(agentName, conversationId, responseId, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux + .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(RealtimeConversationItem.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * List items produced by a voice agent conversation response + * + * Returns a paged collection of the output items produced by a specific response (the response's output + * projection). For the complete ordered conversation history — including user input and client-created + * tool outputs — use the conversation items route instead. Returns `404` when the conversation or + * response was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response whose output items are listed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversationResponseItems(String agentName, + String conversationId, String responseId) { + // Generated convenience method for listAgentConversationResponseItems + RequestOptions requestOptions = new RequestOptions(); + PagedFlux pagedFluxResponse + = listAgentConversationResponseItems(agentName, conversationId, responseId, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux + .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(RealtimeConversationItem.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * List items in a voice agent conversation + * + * Returns a paged collection of items — the complete ordered conversation history, including user input, + * assistant output, and client-created tool outputs (transcripts + tool events). Returns `404` when the + * conversation was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose items are listed. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversationItems(String agentName, String conversationId, + Integer limit, PageOrder order, String after, String before) { + // Generated convenience method for listAgentConversationItems + RequestOptions requestOptions = new RequestOptions(); + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + PagedFlux pagedFluxResponse = listAgentConversationItems(agentName, conversationId, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux + .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(RealtimeConversationItem.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * List items in a voice agent conversation + * + * Returns a paged collection of items — the complete ordered conversation history, including user input, + * assistant output, and client-created tool outputs (transcripts + tool events). Returns `404` when the + * conversation was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose items are listed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversationItems(String agentName, String conversationId) { + // Generated convenience method for listAgentConversationItems + RequestOptions requestOptions = new RequestOptions(); + PagedFlux pagedFluxResponse = listAgentConversationItems(agentName, conversationId, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux + .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(RealtimeConversationItem.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * Get a voice agent conversation item + * + * Retrieves a single item from the specified conversation by its id, including its transcript. An + * `input_audio`/`output_audio` content part indicates that audio is available for the item; the canonical per-item + * audio metadata is the `/items/{item_id}/audio` resource, and the bytes are streamed by + * `/items/{item_id}/audio/content`. Returns `404` when the conversation or item was not persisted + * (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item to retrieve. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a voice agent conversation item + * + * Retrieves a single item from the specified conversation by its id, including its transcript on successful + * completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getAgentConversationItem(String agentName, String conversationId, + String itemId) { + // Generated convenience method for getAgentConversationItemWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationItemWithResponse(agentName, conversationId, itemId, requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(RealtimeConversationItem.class)); + } + + /** + * Get a voice agent conversation item's audio metadata + * + * Returns metadata for a single conversation item's audio segment, including the common playback facts + * (role, format/codec, sample rate, channels, offset, duration) for both Foundry-managed and + * bring-your-own-storage (BYOS) recordings; for BYOS the response additionally includes `blob_uri`, the URI + * of the recording in the customer's own storage (no SAS) that the customer downloads with their own credentials. + * Requires the conversation to have persisted audio (`store = true`); returns `404` when the conversation, + * item, or its audio was not persisted. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose audio metadata is retrieved. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a voice agent conversation item's audio metadata + * + * Returns metadata for a single conversation item's audio segment, including the common playback facts + * (role, format/codec, sample rate, channels, offset, duration) for both Foundry-managed and + * bring-your-own-storage (BYOS) recordings; for BYOS the response additionally includes `blob_uri`, the URI + * of the recording in the customer's own storage (no SAS) that the customer downloads with their own credentials. + * Requires the conversation to have persisted audio (`store = true`); returns `404` when the conversation, + * item, or its audio was not persisted on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getAgentConversationItemAudio(String agentName, String conversationId, + String itemId) { + // Generated convenience method for getAgentConversationItemAudioWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationItemAudioWithResponse(agentName, conversationId, itemId, requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(VoiceItemAudioResponse.class)); + } + + /** + * Stream a voice agent conversation item's audio + * + * Streams a single conversation item's audio as a WAV (`audio/wav`) byte stream through the service (no SAS + * URL). This route serves Foundry-managed storage only. For bring-your-own-storage (BYOS) recordings the + * bytes are not proxied — the caller must download directly from customer storage using the `blob_uri` + * returned by the item's `/audio` metadata route — so this route returns `409 Conflict` for BYOS recordings. + * Returns `404` when the conversation, item, or its audio was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose audio is streamed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getAgentConversationItemAudioContent(String agentName, String conversationId, + String itemId) { + // Generated convenience method for getAgentConversationItemAudioContentWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationItemAudioContentWithResponse(agentName, conversationId, itemId, requestOptions) + .flatMap(FluxUtil::toMono); + } + + /** + * Get a voice agent conversation item's generated audio metadata + * + * Returns metadata for a conversation item's generated audio. This subordinate artifact is separate from the + * canonical heard-audio segment and exists only when playback was interrupted and the service rendered more audio + * than the listener heard, including when the response ends as cancelled. Returns `404` when the conversation or + * item was not persisted, or when no generated audio exists beyond the heard segment. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose generated audio metadata is retrieved. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a voice agent conversation item's generated audio metadata + * + * Returns metadata for a conversation item's generated audio on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getAgentConversationItemGeneratedAudio(String agentName, + String conversationId, String itemId) { + // Generated convenience method for getAgentConversationItemGeneratedAudioWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationItemGeneratedAudioWithResponse(agentName, conversationId, itemId, requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(VoiceGeneratedItemAudioResponse.class)); + } + + /** + * Stream a voice agent conversation item's generated audio + * + * Streams a conversation item's generated audio as a WAV (`audio/wav`) byte stream through the service. This + * subordinate artifact exists only when playback was interrupted and the service rendered more audio than the + * listener heard, including when the response ends as cancelled. This route serves Foundry-managed storage only. + * For bring-your-own-storage (BYOS) recordings the bytes are not proxied, so this route returns `409 Conflict`. + * Returns `404` when the conversation or item was not persisted, or when no generated audio exists beyond the + * heard segment. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose generated audio is streamed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getAgentConversationItemGeneratedAudioContent(String agentName, String conversationId, + String itemId) { + // Generated convenience method for getAgentConversationItemGeneratedAudioContentWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationItemGeneratedAudioContentWithResponse(agentName, conversationId, itemId, + requestOptions).flatMap(FluxUtil::toMono); + } + + /** + * Get a voice agent conversation's merged recording metadata + * + * Returns metadata for the whole-call merged stereo recording (user audio on the left channel, agent audio + * on the right). The common metadata (format, sample rate, channels, channel layout, duration) is returned + * for both Foundry-managed and bring-your-own-storage (BYOS) recordings; for BYOS the response additionally + * includes `blob_uri`, the URI of the recording in the customer's own storage (no SAS) that the customer downloads + * with their own credentials. The recording is built once from the per-turn segments after persistence + * finalization succeeds. While the conversation is `in_progress`, this route returns retriable `409 Conflict` + * with `error.code = recording_not_ready` and a `Retry-After` header when retry guidance is available. When the + * conversation is `failed`, it returns terminal `409 Conflict` with `error.code = recording_unavailable`. + * For a `completed` conversation, metadata is available subject to the existing BYOS behavior. Requires the + * conversation to have persisted audio (`store = true`); otherwise returns `404`. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose merged recording metadata is retrieved. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a voice agent conversation's merged recording metadata + * + * Returns metadata for the whole-call merged stereo recording (user audio on the left channel, agent audio + * on the right) on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getAgentConversationAudio(String agentName, String conversationId) { + // Generated convenience method for getAgentConversationAudioWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationAudioWithResponse(agentName, conversationId, requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(VoiceRecordingResponse.class)); + } + + /** + * Stream a voice agent conversation's merged recording + * + * Streams the whole-call merged stereo recording as a WAV (`audio/wav`) byte stream through the service + * (no SAS URL). This route serves Foundry-managed storage only. For bring-your-own-storage (BYOS) + * recordings the bytes are not proxied — the caller must download directly from customer storage using the + * `blob_uri` returned by the metadata route — so this route returns `409 Conflict` for BYOS recordings. + * While the conversation is `in_progress`, this route returns retriable `409 Conflict` with + * `error.code = recording_not_ready` and a `Retry-After` header when retry guidance is available. When the + * conversation is `failed`, it returns terminal `409 Conflict` with `error.code = recording_unavailable`. + * For a `completed` conversation, content is available subject to the existing BYOS behavior. A conversation + * without persisted audio (`store = false`) returns `404`. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose merged recording is streamed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getAgentConversationAudioContent(String agentName, String conversationId) { + // Generated convenience method for getAgentConversationAudioContentWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationAudioContentWithResponse(agentName, conversationId, requestOptions) + .flatMap(FluxUtil::toMono); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsClient.java new file mode 100644 index 0000000000000..2b9ec72c3a615 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsClient.java @@ -0,0 +1,1452 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents; + +import com.azure.ai.agents.implementation.BetaAgentEndpointConversationsImpl; +import com.azure.ai.agents.implementation.utils.Beta; +import com.azure.ai.agents.models.PageOrder; +import com.azure.ai.agents.models.RealtimeConversationItem; +import com.azure.ai.agents.models.VoiceConversation; +import com.azure.ai.agents.models.VoiceGeneratedItemAudioResponse; +import com.azure.ai.agents.models.VoiceItemAudioResponse; +import com.azure.ai.agents.models.VoiceRecordingResponse; +import com.azure.ai.agents.models.VoiceResponse; +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceClient; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.exception.ClientAuthenticationException; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.http.rest.Response; +import com.azure.core.util.BinaryData; + +/** + * Initializes a new instance of the synchronous AgentsClient type. + */ +@ServiceClient(builder = AgentsClientBuilder.class) +@Beta(warningText = "This class is in preview and may change in future releases.") +public final class BetaAgentEndpointConversationsClient { + + @Generated + private final BetaAgentEndpointConversationsImpl serviceClient; + + /** + * Initializes an instance of BetaAgentEndpointConversationsClient class. + * + * @param serviceClient the service client implementation. + */ + @Generated + BetaAgentEndpointConversationsClient(BetaAgentEndpointConversationsImpl serviceClient) { + this.serviceClient = serviceClient; + } + + /** + * List voice agent conversations + * + * Returns the conversations persisted for the specified voice agent endpoint. + * Conversations are present when the session's effective `store` setting is `true`, whether inherited from the + * agent definition or enabled by the WebSocket session override. + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     status: String(in_progress/completed/failed) (Required)
+     *     created_at: long (Required)
+     *     completed_at: Long (Optional)
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     last_error (Optional): {
+     *         code: String (Required)
+     *         message: String (Required)
+     *         param: String (Optional)
+     *         type: String (Optional)
+     *         details (Optional): [
+     *             (recursive schema, see above)
+     *         ]
+     *         additionalInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *         debugInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *     }
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversations(String agentName, RequestOptions requestOptions) { + return this.serviceClient.listAgentConversations(agentName, requestOptions); + } + + /** + * Get a voice agent conversation + * + * Retrieves a single conversation recorded for the specified voice agent endpoint by its id. + * Returns `404` when the conversation was not persisted (`store = false`) or does not exist. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     status: String(in_progress/completed/failed) (Required)
+     *     created_at: long (Required)
+     *     completed_at: Long (Optional)
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     last_error (Optional): {
+     *         code: String (Required)
+     *         message: String (Required)
+     *         param: String (Optional)
+     *         type: String (Optional)
+     *         details (Optional): [
+     *             (recursive schema, see above)
+     *         ]
+     *         additionalInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *         debugInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *     }
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation to retrieve. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation + * + * Retrieves a single conversation recorded for the specified voice agent endpoint by its id. + * Returns `404` when the conversation was not persisted (`store = false`) or does not exist along with + * {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationWithResponse(String agentName, String conversationId, + RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationWithResponse(agentName, conversationId, requestOptions); + } + + /** + * Delete a voice agent conversation + * + * Deletes a conversation and all of its stored data — responses, items, and any audio (cascade). This is + * the customer's explicit data-deletion control for voice conversations. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation to delete. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response deleteAgentConversationWithResponse(String agentName, String conversationId, + RequestOptions requestOptions) { + return this.serviceClient.deleteAgentConversationWithResponse(agentName, conversationId, requestOptions); + } + + /** + * List responses in a voice agent conversation + * + * Returns a paged collection of the responses (model inference turns) recorded for the specified + * conversation. The per-response `output` projection may be omitted here; use the response-items route + * for the canonical paged output. Returns `404` when the conversation was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String(realtime.response) (Optional)
+     *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
+     *     status_details (Optional): {
+     *         type: String(completed/cancelled/failed/incomplete) (Optional)
+     *         reason: String(turn_detected/client_cancelled/max_output_tokens/content_filter) (Optional)
+     *         error (Optional): {
+     *             type: String (Optional)
+     *             code: String (Optional)
+     *         }
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     conversation_id: String (Required)
+     *     output_modalities (Optional): [
+     *         String(text/audio) (Optional)
+     *     ]
+     *     max_output_tokens: BinaryData (Optional)
+     *     output (Optional): [
+     *          (Optional){
+     *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     *         }
+     *     ]
+     *     audio (Optional): {
+     *         output (Optional): {
+     *             voice: String (Optional)
+     *             voice_type: String(openai/azure-standard/azure-custom/azure-personal/avatar-voice-sync/azure-realtime-native) (Optional)
+     *             voice_locale: String (Optional)
+     *             format (Optional): {
+     *                 type: String(audio/pcm/audio/pcmu/audio/pcma) (Required)
+     *             }
+     *         }
+     *     }
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     temperature: Double (Optional)
+     *     created_at: Long (Optional)
+     *     completed_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose responses are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversationResponses(String agentName, String conversationId, + RequestOptions requestOptions) { + return this.serviceClient.listAgentConversationResponses(agentName, conversationId, requestOptions); + } + + /** + * Get a voice agent conversation response + * + * Retrieves a single response from the specified conversation by its id, including its `output` items, + * `usage`, and status. Returns `404` when the conversation or response was not persisted (`store = false`). + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String(realtime.response) (Optional)
+     *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
+     *     status_details (Optional): {
+     *         type: String(completed/cancelled/failed/incomplete) (Optional)
+     *         reason: String(turn_detected/client_cancelled/max_output_tokens/content_filter) (Optional)
+     *         error (Optional): {
+     *             type: String (Optional)
+     *             code: String (Optional)
+     *         }
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     conversation_id: String (Required)
+     *     output_modalities (Optional): [
+     *         String(text/audio) (Optional)
+     *     ]
+     *     max_output_tokens: BinaryData (Optional)
+     *     output (Optional): [
+     *          (Optional){
+     *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     *         }
+     *     ]
+     *     audio (Optional): {
+     *         output (Optional): {
+     *             voice: String (Optional)
+     *             voice_type: String(openai/azure-standard/azure-custom/azure-personal/avatar-voice-sync/azure-realtime-native) (Optional)
+     *             voice_locale: String (Optional)
+     *             format (Optional): {
+     *                 type: String(audio/pcm/audio/pcmu/audio/pcma) (Required)
+     *             }
+     *         }
+     *     }
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     temperature: Double (Optional)
+     *     created_at: Long (Optional)
+     *     completed_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response to retrieve. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation response + * + * Retrieves a single response from the specified conversation by its id, including its `output` items, + * `usage`, and status along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationResponseWithResponse(String agentName, String conversationId, + String responseId, RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationResponseWithResponse(agentName, conversationId, responseId, + requestOptions); + } + + /** + * List items produced by a voice agent conversation response + * + * Returns a paged collection of the output items produced by a specific response (the response's output + * projection). For the complete ordered conversation history — including user input and client-created + * tool outputs — use the conversation items route instead. Returns `404` when the conversation or + * response was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response whose output items are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversationResponseItems(String agentName, String conversationId, + String responseId, RequestOptions requestOptions) { + return this.serviceClient.listAgentConversationResponseItems(agentName, conversationId, responseId, + requestOptions); + } + + /** + * List items in a voice agent conversation + * + * Returns a paged collection of items — the complete ordered conversation history, including user input, + * assistant output, and client-created tool outputs (transcripts + tool events). Returns `404` when the + * conversation was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose items are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversationItems(String agentName, String conversationId, + RequestOptions requestOptions) { + return this.serviceClient.listAgentConversationItems(agentName, conversationId, requestOptions); + } + + /** + * Get a voice agent conversation item + * + * Retrieves a single item from the specified conversation by its id, including its transcript. An + * `input_audio`/`output_audio` content part indicates that audio is available for the item; the canonical per-item + * audio metadata is the `/items/{item_id}/audio` resource, and the bytes are streamed by + * `/items/{item_id}/audio/content`. Returns `404` when the conversation or item was not persisted + * (`store = false`). + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item to retrieve. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation item + * + * Retrieves a single item from the specified conversation by its id, including its transcript along with + * {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationItemWithResponse(String agentName, String conversationId, + String itemId, RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationItemWithResponse(agentName, conversationId, itemId, + requestOptions); + } + + /** + * Get a voice agent conversation item's audio metadata + * + * Returns metadata for a single conversation item's audio segment, including the common playback facts + * (role, format/codec, sample rate, channels, offset, duration) for both Foundry-managed and + * bring-your-own-storage (BYOS) recordings; for BYOS the response additionally includes `blob_uri`, the URI + * of the recording in the customer's own storage (no SAS) that the customer downloads with their own credentials. + * Requires the conversation to have persisted audio (`store = true`); returns `404` when the conversation, + * item, or its audio was not persisted. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     conversation_id: String (Required)
+     *     item_id: String (Required)
+     *     role: String(user/agent) (Optional)
+     *     format: String(wav) (Optional)
+     *     codec: String(pcm16/pcmu/pcma) (Optional)
+     *     sample_rate: Integer (Optional)
+     *     channels: Integer (Optional)
+     *     start_offset_ms: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     blob_uri: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose audio metadata is retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation item's audio metadata + * + * Returns metadata for a single conversation item's audio segment, including the common playback facts + * (role, format/codec, sample rate, channels, offset, duration) for both Foundry-managed and + * bring-your-own-storage (BYOS) recordings; for BYOS the response additionally includes `blob_uri`, the URI + * of the recording in the customer's own storage (no SAS) that the customer downloads with their own credentials. + * Requires the conversation to have persisted audio (`store = true`); returns `404` when the conversation, + * item, or its audio was not persisted along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationItemAudioWithResponse(String agentName, String conversationId, + String itemId, RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationItemAudioWithResponse(agentName, conversationId, itemId, + requestOptions); + } + + /** + * Stream a voice agent conversation item's audio + * + * Streams a single conversation item's audio as a WAV (`audio/wav`) byte stream through the service (no SAS + * URL). This route serves Foundry-managed storage only. For bring-your-own-storage (BYOS) recordings the + * bytes are not proxied — the caller must download directly from customer storage using the `blob_uri` + * returned by the item's `/audio` metadata route — so this route returns `409 Conflict` for BYOS recordings. + * Returns `404` when the conversation, item, or its audio was not persisted (`store = false`). + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose audio is streamed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationItemAudioContentWithResponse(String agentName, + String conversationId, String itemId, RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationItemAudioContentWithResponse(agentName, conversationId, itemId, + requestOptions); + } + + /** + * Get a voice agent conversation item's generated audio metadata + * + * Returns metadata for a conversation item's generated audio. This subordinate artifact is separate from the + * canonical heard-audio segment and exists only when playback was interrupted and the service rendered more audio + * than the listener heard, including when the response ends as cancelled. Returns `404` when the conversation or + * item was not persisted, or when no generated audio exists beyond the heard segment. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     conversation_id: String (Required)
+     *     item_id: String (Required)
+     *     role: String(user/agent) (Optional)
+     *     format: String(wav) (Optional)
+     *     codec: String(pcm16/pcmu/pcma) (Optional)
+     *     sample_rate: Integer (Optional)
+     *     channels: Integer (Optional)
+     *     start_offset_ms: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     blob_uri: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose generated audio metadata is retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation item's generated audio metadata + * + * Returns metadata for a conversation item's generated audio along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationItemGeneratedAudioWithResponse(String agentName, + String conversationId, String itemId, RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationItemGeneratedAudioWithResponse(agentName, conversationId, itemId, + requestOptions); + } + + /** + * Stream a voice agent conversation item's generated audio + * + * Streams a conversation item's generated audio as a WAV (`audio/wav`) byte stream through the service. This + * subordinate artifact exists only when playback was interrupted and the service rendered more audio than the + * listener heard, including when the response ends as cancelled. This route serves Foundry-managed storage only. + * For bring-your-own-storage (BYOS) recordings the bytes are not proxied, so this route returns `409 Conflict`. + * Returns `404` when the conversation or item was not persisted, or when no generated audio exists beyond the + * heard segment. + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose generated audio is streamed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationItemGeneratedAudioContentWithResponse(String agentName, + String conversationId, String itemId, RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationItemGeneratedAudioContentWithResponse(agentName, conversationId, + itemId, requestOptions); + } + + /** + * Get a voice agent conversation's merged recording metadata + * + * Returns metadata for the whole-call merged stereo recording (user audio on the left channel, agent audio + * on the right). The common metadata (format, sample rate, channels, channel layout, duration) is returned + * for both Foundry-managed and bring-your-own-storage (BYOS) recordings; for BYOS the response additionally + * includes `blob_uri`, the URI of the recording in the customer's own storage (no SAS) that the customer downloads + * with their own credentials. The recording is built once from the per-turn segments after persistence + * finalization succeeds. While the conversation is `in_progress`, this route returns retriable `409 Conflict` + * with `error.code = recording_not_ready` and a `Retry-After` header when retry guidance is available. When the + * conversation is `failed`, it returns terminal `409 Conflict` with `error.code = recording_unavailable`. + * For a `completed` conversation, metadata is available subject to the existing BYOS behavior. Requires the + * conversation to have persisted audio (`store = true`); otherwise returns `404`. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     conversation_id: String (Required)
+     *     format: String(wav) (Required)
+     *     sample_rate: int (Required)
+     *     channels: int (Required)
+     *     channel_layout (Required): {
+     *         left: String (Required)
+     *         right: String (Required)
+     *     }
+     *     duration_ms: long (Required)
+     *     blob_uri: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose merged recording metadata is retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation's merged recording metadata + * + * Returns metadata for the whole-call merged stereo recording (user audio on the left channel, agent audio + * on the right) along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationAudioWithResponse(String agentName, String conversationId, + RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationAudioWithResponse(agentName, conversationId, requestOptions); + } + + /** + * Stream a voice agent conversation's merged recording + * + * Streams the whole-call merged stereo recording as a WAV (`audio/wav`) byte stream through the service + * (no SAS URL). This route serves Foundry-managed storage only. For bring-your-own-storage (BYOS) + * recordings the bytes are not proxied — the caller must download directly from customer storage using the + * `blob_uri` returned by the metadata route — so this route returns `409 Conflict` for BYOS recordings. + * While the conversation is `in_progress`, this route returns retriable `409 Conflict` with + * `error.code = recording_not_ready` and a `Retry-After` header when retry guidance is available. When the + * conversation is `failed`, it returns terminal `409 Conflict` with `error.code = recording_unavailable`. + * For a `completed` conversation, content is available subject to the existing BYOS behavior. A conversation + * without persisted audio (`store = false`) returns `404`. + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose merged recording is streamed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationAudioContentWithResponse(String agentName, String conversationId, + RequestOptions requestOptions) { + return this.serviceClient.getAgentConversationAudioContentWithResponse(agentName, conversationId, + requestOptions); + } + + /** + * List voice agent conversations + * + * Returns the conversations persisted for the specified voice agent endpoint. + * Conversations are present when the session's effective `store` setting is `true`, whether inherited from the + * agent definition or enabled by the WebSocket session override. + * + * @param agentName The name of the agent. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversations(String agentName, Integer limit, PageOrder order, + String after, String before) { + // Generated convenience method for listAgentConversations + RequestOptions requestOptions = new RequestOptions(); + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + return serviceClient.listAgentConversations(agentName, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(VoiceConversation.class)); + } + + /** + * List voice agent conversations + * + * Returns the conversations persisted for the specified voice agent endpoint. + * Conversations are present when the session's effective `store` setting is `true`, whether inherited from the + * agent definition or enabled by the WebSocket session override. + * + * @param agentName The name of the agent. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversations(String agentName) { + // Generated convenience method for listAgentConversations + RequestOptions requestOptions = new RequestOptions(); + return serviceClient.listAgentConversations(agentName, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(VoiceConversation.class)); + } + + /** + * Get a voice agent conversation + * + * Retrieves a single conversation recorded for the specified voice agent endpoint by its id. + * Returns `404` when the conversation was not persisted (`store = false`) or does not exist. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation to retrieve. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a voice agent conversation + * + * Retrieves a single conversation recorded for the specified voice agent endpoint by its id. + * Returns `404` when the conversation was not persisted (`store = false`) or does not exist. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public VoiceConversation getAgentConversation(String agentName, String conversationId) { + // Generated convenience method for getAgentConversationWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationWithResponse(agentName, conversationId, requestOptions).getValue() + .toObject(VoiceConversation.class); + } + + /** + * Delete a voice agent conversation + * + * Deletes a conversation and all of its stored data — responses, items, and any audio (cascade). This is + * the customer's explicit data-deletion control for voice conversations. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation to delete. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public void deleteAgentConversation(String agentName, String conversationId) { + // Generated convenience method for deleteAgentConversationWithResponse + RequestOptions requestOptions = new RequestOptions(); + deleteAgentConversationWithResponse(agentName, conversationId, requestOptions).getValue(); + } + + /** + * List responses in a voice agent conversation + * + * Returns a paged collection of the responses (model inference turns) recorded for the specified + * conversation. The per-response `output` projection may be omitted here; use the response-items route + * for the canonical paged output. Returns `404` when the conversation was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose responses are listed. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversationResponses(String agentName, String conversationId, + Integer limit, PageOrder order, String after, String before) { + // Generated convenience method for listAgentConversationResponses + RequestOptions requestOptions = new RequestOptions(); + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + return serviceClient.listAgentConversationResponses(agentName, conversationId, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(VoiceResponse.class)); + } + + /** + * List responses in a voice agent conversation + * + * Returns a paged collection of the responses (model inference turns) recorded for the specified + * conversation. The per-response `output` projection may be omitted here; use the response-items route + * for the canonical paged output. Returns `404` when the conversation was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose responses are listed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversationResponses(String agentName, String conversationId) { + // Generated convenience method for listAgentConversationResponses + RequestOptions requestOptions = new RequestOptions(); + return serviceClient.listAgentConversationResponses(agentName, conversationId, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(VoiceResponse.class)); + } + + /** + * Get a voice agent conversation response + * + * Retrieves a single response from the specified conversation by its id, including its `output` items, + * `usage`, and status. Returns `404` when the conversation or response was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response to retrieve. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a voice agent conversation response + * + * Retrieves a single response from the specified conversation by its id, including its `output` items, + * `usage`, and status. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public VoiceResponse getAgentConversationResponse(String agentName, String conversationId, String responseId) { + // Generated convenience method for getAgentConversationResponseWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationResponseWithResponse(agentName, conversationId, responseId, requestOptions) + .getValue() + .toObject(VoiceResponse.class); + } + + /** + * List items produced by a voice agent conversation response + * + * Returns a paged collection of the output items produced by a specific response (the response's output + * projection). For the complete ordered conversation history — including user input and client-created + * tool outputs — use the conversation items route instead. Returns `404` when the conversation or + * response was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response whose output items are listed. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversationResponseItems(String agentName, + String conversationId, String responseId, Integer limit, PageOrder order, String after, String before) { + // Generated convenience method for listAgentConversationResponseItems + RequestOptions requestOptions = new RequestOptions(); + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + return serviceClient.listAgentConversationResponseItems(agentName, conversationId, responseId, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(RealtimeConversationItem.class)); + } + + /** + * List items produced by a voice agent conversation response + * + * Returns a paged collection of the output items produced by a specific response (the response's output + * projection). For the complete ordered conversation history — including user input and client-created + * tool outputs — use the conversation items route instead. Returns `404` when the conversation or + * response was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response whose output items are listed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversationResponseItems(String agentName, + String conversationId, String responseId) { + // Generated convenience method for listAgentConversationResponseItems + RequestOptions requestOptions = new RequestOptions(); + return serviceClient.listAgentConversationResponseItems(agentName, conversationId, responseId, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(RealtimeConversationItem.class)); + } + + /** + * List items in a voice agent conversation + * + * Returns a paged collection of items — the complete ordered conversation history, including user input, + * assistant output, and client-created tool outputs (transcripts + tool events). Returns `404` when the + * conversation was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose items are listed. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversationItems(String agentName, String conversationId, + Integer limit, PageOrder order, String after, String before) { + // Generated convenience method for listAgentConversationItems + RequestOptions requestOptions = new RequestOptions(); + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + return serviceClient.listAgentConversationItems(agentName, conversationId, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(RealtimeConversationItem.class)); + } + + /** + * List items in a voice agent conversation + * + * Returns a paged collection of items — the complete ordered conversation history, including user input, + * assistant output, and client-created tool outputs (transcripts + tool events). Returns `404` when the + * conversation was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose items are listed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversationItems(String agentName, String conversationId) { + // Generated convenience method for listAgentConversationItems + RequestOptions requestOptions = new RequestOptions(); + return serviceClient.listAgentConversationItems(agentName, conversationId, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(RealtimeConversationItem.class)); + } + + /** + * Get a voice agent conversation item + * + * Retrieves a single item from the specified conversation by its id, including its transcript. An + * `input_audio`/`output_audio` content part indicates that audio is available for the item; the canonical per-item + * audio metadata is the `/items/{item_id}/audio` resource, and the bytes are streamed by + * `/items/{item_id}/audio/content`. Returns `404` when the conversation or item was not persisted + * (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item to retrieve. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a voice agent conversation item + * + * Retrieves a single item from the specified conversation by its id, including its transcript. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public RealtimeConversationItem getAgentConversationItem(String agentName, String conversationId, String itemId) { + // Generated convenience method for getAgentConversationItemWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationItemWithResponse(agentName, conversationId, itemId, requestOptions).getValue() + .toObject(RealtimeConversationItem.class); + } + + /** + * Get a voice agent conversation item's audio metadata + * + * Returns metadata for a single conversation item's audio segment, including the common playback facts + * (role, format/codec, sample rate, channels, offset, duration) for both Foundry-managed and + * bring-your-own-storage (BYOS) recordings; for BYOS the response additionally includes `blob_uri`, the URI + * of the recording in the customer's own storage (no SAS) that the customer downloads with their own credentials. + * Requires the conversation to have persisted audio (`store = true`); returns `404` when the conversation, + * item, or its audio was not persisted. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose audio metadata is retrieved. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a voice agent conversation item's audio metadata + * + * Returns metadata for a single conversation item's audio segment, including the common playback facts + * (role, format/codec, sample rate, channels, offset, duration) for both Foundry-managed and + * bring-your-own-storage (BYOS) recordings; for BYOS the response additionally includes `blob_uri`, the URI + * of the recording in the customer's own storage (no SAS) that the customer downloads with their own credentials. + * Requires the conversation to have persisted audio (`store = true`); returns `404` when the conversation, + * item, or its audio was not persisted. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public VoiceItemAudioResponse getAgentConversationItemAudio(String agentName, String conversationId, + String itemId) { + // Generated convenience method for getAgentConversationItemAudioWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationItemAudioWithResponse(agentName, conversationId, itemId, requestOptions).getValue() + .toObject(VoiceItemAudioResponse.class); + } + + /** + * Stream a voice agent conversation item's audio + * + * Streams a single conversation item's audio as a WAV (`audio/wav`) byte stream through the service (no SAS + * URL). This route serves Foundry-managed storage only. For bring-your-own-storage (BYOS) recordings the + * bytes are not proxied — the caller must download directly from customer storage using the `blob_uri` + * returned by the item's `/audio` metadata route — so this route returns `409 Conflict` for BYOS recordings. + * Returns `404` when the conversation, item, or its audio was not persisted (`store = false`). + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose audio is streamed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public BinaryData getAgentConversationItemAudioContent(String agentName, String conversationId, String itemId) { + // Generated convenience method for getAgentConversationItemAudioContentWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationItemAudioContentWithResponse(agentName, conversationId, itemId, requestOptions) + .getValue(); + } + + /** + * Get a voice agent conversation item's generated audio metadata + * + * Returns metadata for a conversation item's generated audio. This subordinate artifact is separate from the + * canonical heard-audio segment and exists only when playback was interrupted and the service rendered more audio + * than the listener heard, including when the response ends as cancelled. Returns `404` when the conversation or + * item was not persisted, or when no generated audio exists beyond the heard segment. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose generated audio metadata is retrieved. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a voice agent conversation item's generated audio metadata + * + * Returns metadata for a conversation item's generated audio. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public VoiceGeneratedItemAudioResponse getAgentConversationItemGeneratedAudio(String agentName, + String conversationId, String itemId) { + // Generated convenience method for getAgentConversationItemGeneratedAudioWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationItemGeneratedAudioWithResponse(agentName, conversationId, itemId, requestOptions) + .getValue() + .toObject(VoiceGeneratedItemAudioResponse.class); + } + + /** + * Stream a voice agent conversation item's generated audio + * + * Streams a conversation item's generated audio as a WAV (`audio/wav`) byte stream through the service. This + * subordinate artifact exists only when playback was interrupted and the service rendered more audio than the + * listener heard, including when the response ends as cancelled. This route serves Foundry-managed storage only. + * For bring-your-own-storage (BYOS) recordings the bytes are not proxied, so this route returns `409 Conflict`. + * Returns `404` when the conversation or item was not persisted, or when no generated audio exists beyond the + * heard segment. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose generated audio is streamed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public BinaryData getAgentConversationItemGeneratedAudioContent(String agentName, String conversationId, + String itemId) { + // Generated convenience method for getAgentConversationItemGeneratedAudioContentWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationItemGeneratedAudioContentWithResponse(agentName, conversationId, itemId, + requestOptions).getValue(); + } + + /** + * Get a voice agent conversation's merged recording metadata + * + * Returns metadata for the whole-call merged stereo recording (user audio on the left channel, agent audio + * on the right). The common metadata (format, sample rate, channels, channel layout, duration) is returned + * for both Foundry-managed and bring-your-own-storage (BYOS) recordings; for BYOS the response additionally + * includes `blob_uri`, the URI of the recording in the customer's own storage (no SAS) that the customer downloads + * with their own credentials. The recording is built once from the per-turn segments after persistence + * finalization succeeds. While the conversation is `in_progress`, this route returns retriable `409 Conflict` + * with `error.code = recording_not_ready` and a `Retry-After` header when retry guidance is available. When the + * conversation is `failed`, it returns terminal `409 Conflict` with `error.code = recording_unavailable`. + * For a `completed` conversation, metadata is available subject to the existing BYOS behavior. Requires the + * conversation to have persisted audio (`store = true`); otherwise returns `404`. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose merged recording metadata is retrieved. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a voice agent conversation's merged recording metadata + * + * Returns metadata for the whole-call merged stereo recording (user audio on the left channel, agent audio + * on the right). + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public VoiceRecordingResponse getAgentConversationAudio(String agentName, String conversationId) { + // Generated convenience method for getAgentConversationAudioWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationAudioWithResponse(agentName, conversationId, requestOptions).getValue() + .toObject(VoiceRecordingResponse.class); + } + + /** + * Stream a voice agent conversation's merged recording + * + * Streams the whole-call merged stereo recording as a WAV (`audio/wav`) byte stream through the service + * (no SAS URL). This route serves Foundry-managed storage only. For bring-your-own-storage (BYOS) + * recordings the bytes are not proxied — the caller must download directly from customer storage using the + * `blob_uri` returned by the metadata route — so this route returns `409 Conflict` for BYOS recordings. + * While the conversation is `in_progress`, this route returns retriable `409 Conflict` with + * `error.code = recording_not_ready` and a `Retry-After` header when retry guidance is available. When the + * conversation is `failed`, it returns terminal `409 Conflict` with `error.code = recording_unavailable`. + * For a `completed` conversation, content is available subject to the existing BYOS behavior. A conversation + * without persisted audio (`store = false`) returns `404`. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose merged recording is streamed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public BinaryData getAgentConversationAudioContent(String agentName, String conversationId) { + // Generated convenience method for getAgentConversationAudioContentWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getAgentConversationAudioContentWithResponse(agentName, conversationId, requestOptions).getValue(); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentTelephoniesImpl.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentTelephoniesImpl.java new file mode 100644 index 0000000000000..0ea137249b5c1 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentTelephoniesImpl.java @@ -0,0 +1,2793 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.implementation; + +import com.azure.ai.agents.AgentsServiceVersion; +import com.azure.ai.agents.models.TelephonyOperation; +import com.azure.ai.agents.models.TelephonyOperationResource; +import com.azure.core.annotation.BodyParam; +import com.azure.core.annotation.ExpectedResponses; +import com.azure.core.annotation.Get; +import com.azure.core.annotation.HeaderParam; +import com.azure.core.annotation.Host; +import com.azure.core.annotation.HostParam; +import com.azure.core.annotation.PathParam; +import com.azure.core.annotation.Post; +import com.azure.core.annotation.QueryParam; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceInterface; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.annotation.UnexpectedResponseExceptionType; +import com.azure.core.exception.ClientAuthenticationException; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.RestProxy; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Context; +import com.azure.core.util.FluxUtil; +import com.azure.core.util.polling.PollerFlux; +import com.azure.core.util.polling.PollingStrategyOptions; +import com.azure.core.util.polling.SyncPoller; +import com.azure.core.util.serializer.TypeReference; +import java.time.Duration; +import reactor.core.publisher.Mono; + +/** + * An instance of this class provides access to all the operations defined in AgentTelephonies. + */ +public final class AgentTelephoniesImpl { + /** + * The proxy service used to perform REST calls. + */ + private final AgentTelephoniesService service; + + /** + * The service client containing this operation class. + */ + private final AgentsClientImpl client; + + /** + * Initializes an instance of AgentTelephoniesImpl. + * + * @param client the instance of the service client containing this operation class. + */ + AgentTelephoniesImpl(AgentsClientImpl client) { + this.service + = RestProxy.create(AgentTelephoniesService.class, client.getHttpPipeline(), client.getSerializerAdapter()); + this.client = client; + } + + /** + * Gets Service version. + * + * @return the serviceVersion value. + */ + public AgentsServiceVersion getServiceVersion() { + return client.getServiceVersion(); + } + + /** + * The interface defining all the services for AgentsClientAgentTelephonies to be used by the proxy service to + * perform REST calls. + */ + @Host("{endpoint}") + @ServiceInterface(name = "AgentsClientAgentTelephonies") + public interface AgentTelephoniesService { + @Post("/agents/{agent_name}/telephony/call_jobs") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> createTelephonyCallJob(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @HeaderParam("Idempotency-Key") String idempotencyKey, + @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, + @HeaderParam("Accept") String accept, @BodyParam("application/json") BinaryData body, + RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/call_jobs") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response createTelephonyCallJobSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @HeaderParam("Idempotency-Key") String idempotencyKey, + @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, + @HeaderParam("Accept") String accept, @BodyParam("application/json") BinaryData body, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/call_jobs/{call_job_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getTelephonyCallJob(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("call_job_id") String callJobId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/call_jobs/{call_job_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getTelephonyCallJobSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("call_job_id") String callJobId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/call_jobs/{call_job_id}:cancel") + @ExpectedResponses({ 200, 202 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> cancelTelephonyCallJob(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("call_job_id") String callJobId, + @HeaderParam("If-Match") String ifMatch, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/call_jobs/{call_job_id}:cancel") + @ExpectedResponses({ 200, 202 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response cancelTelephonyCallJobSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("call_job_id") String callJobId, + @HeaderParam("If-Match") String ifMatch, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/campaigns") + @ExpectedResponses({ 201 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> createTelephonyCampaign(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/campaigns") + @ExpectedResponses({ 201 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response createTelephonyCampaignSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/campaigns/{campaign_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getTelephonyCampaign(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/campaigns/{campaign_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getTelephonyCampaignSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/campaigns/{campaign_id}/recipients:import") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> importTelephonyCampaignRecipients(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @HeaderParam("Idempotency-Key") String idempotencyKey, @QueryParam("api-version") String apiVersion, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/campaigns/{campaign_id}/recipients:import") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response importTelephonyCampaignRecipientsSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @HeaderParam("Idempotency-Key") String idempotencyKey, @QueryParam("api-version") String apiVersion, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/campaigns/{campaign_id}/recipient_imports/{import_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getTelephonyCampaignRecipientImport(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @PathParam("import_id") String importId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/campaigns/{campaign_id}/recipient_imports/{import_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getTelephonyCampaignRecipientImportSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @PathParam("import_id") String importId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/campaigns/{campaign_id}:validate") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> validateTelephonyCampaign(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/campaigns/{campaign_id}:validate") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response validateTelephonyCampaignSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/campaigns/{campaign_id}:publish") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> publishTelephonyCampaign(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, + @HeaderParam("Accept") String accept, @BodyParam("application/json") BinaryData body, + RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/campaigns/{campaign_id}:publish") + @ExpectedResponses({ 202 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response publishTelephonyCampaignSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, + @HeaderParam("Accept") String accept, @BodyParam("application/json") BinaryData body, + RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/campaigns/{campaign_id}:pause") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> pauseTelephonyCampaign(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/campaigns/{campaign_id}:pause") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response pauseTelephonyCampaignSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/campaigns/{campaign_id}:resume") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> resumeTelephonyCampaign(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/campaigns/{campaign_id}:resume") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response resumeTelephonyCampaignSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/campaigns/{campaign_id}:cancel") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> cancelTelephonyCampaign(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/campaigns/{campaign_id}:cancel") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response cancelTelephonyCampaignSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("campaign_id") String campaignId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/operations/{operation_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getTelephonyOperation(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("operation_id") String operationId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/operations/{operation_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getTelephonyOperationSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("operation_id") String operationId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + } + + /** + * Create an outbound telephony call job + * + * Creates one durable direct outbound call job. The latest agent definition is resolved when each attempt executes. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     retry_policy (Optional): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: Integer (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     status: String(accepted/waiting_for_schedule/queued/dispatching/in_progress/waiting_for_retry/cancellation_requested/completed/blocked/expired/failed/cancelled) (Required)
+     *     cancellation (Optional): {
+     *         requested_by: String (Required)
+     *         mode: String (Required)
+     *         requested_at: long (Required)
+     *         revision: long (Required)
+     *     }
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     attempt_count: int (Required)
+     *     next_attempt_at: Long (Optional)
+     *     terminal_reason: String (Optional)
+     *     revision: long (Required)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe ETag response header.
LocationStringThe Location response header.
Retry-AfterDurationThe Retry-After response header.
+ * + * @param agentName The name of the voice agent that executes the call. + * @param idempotencyKey A customer-generated idempotency key. Reusing it with an equivalent request returns the + * same call job. + * @param body The direct outbound call to create. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable direct or campaign-created outbound call intent along with {@link Response} on successful + * completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> createTelephonyCallJobWithResponseAsync(String agentName, String idempotencyKey, + BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.createTelephonyCallJob(this.client.getEndpoint(), agentName, idempotencyKey, + this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptions, context)); + } + + /** + * Create an outbound telephony call job + * + * Creates one durable direct outbound call job. The latest agent definition is resolved when each attempt executes. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     retry_policy (Optional): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: Integer (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     status: String(accepted/waiting_for_schedule/queued/dispatching/in_progress/waiting_for_retry/cancellation_requested/completed/blocked/expired/failed/cancelled) (Required)
+     *     cancellation (Optional): {
+     *         requested_by: String (Required)
+     *         mode: String (Required)
+     *         requested_at: long (Required)
+     *         revision: long (Required)
+     *     }
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     attempt_count: int (Required)
+     *     next_attempt_at: Long (Optional)
+     *     terminal_reason: String (Optional)
+     *     revision: long (Required)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe ETag response header.
LocationStringThe Location response header.
Retry-AfterDurationThe Retry-After response header.
+ * + * @param agentName The name of the voice agent that executes the call. + * @param idempotencyKey A customer-generated idempotency key. Reusing it with an equivalent request returns the + * same call job. + * @param body The direct outbound call to create. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable direct or campaign-created outbound call intent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response createTelephonyCallJobWithResponse(String agentName, String idempotencyKey, + BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.createTelephonyCallJobSync(this.client.getEndpoint(), agentName, idempotencyKey, + this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptions, Context.NONE); + } + + /** + * Get an outbound telephony call job + * + * Retrieves a durable direct or campaign-created outbound call job. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     status: String(accepted/waiting_for_schedule/queued/dispatching/in_progress/waiting_for_retry/cancellation_requested/completed/blocked/expired/failed/cancelled) (Required)
+     *     cancellation (Optional): {
+     *         requested_by: String (Required)
+     *         mode: String (Required)
+     *         requested_at: long (Required)
+     *         revision: long (Required)
+     *     }
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     attempt_count: int (Required)
+     *     next_attempt_at: Long (Optional)
+     *     terminal_reason: String (Optional)
+     *     revision: long (Required)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe ETag response header.
+ * + * @param agentName The agentName parameter. + * @param callJobId The callJobId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony call job + * + * Retrieves a durable direct or campaign-created outbound call job along with {@link Response} on successful + * completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyCallJobWithResponseAsync(String agentName, String callJobId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.getTelephonyCallJob(this.client.getEndpoint(), agentName, + callJobId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get an outbound telephony call job + * + * Retrieves a durable direct or campaign-created outbound call job. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     status: String(accepted/waiting_for_schedule/queued/dispatching/in_progress/waiting_for_retry/cancellation_requested/completed/blocked/expired/failed/cancelled) (Required)
+     *     cancellation (Optional): {
+     *         requested_by: String (Required)
+     *         mode: String (Required)
+     *         requested_at: long (Required)
+     *         revision: long (Required)
+     *     }
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     attempt_count: int (Required)
+     *     next_attempt_at: Long (Optional)
+     *     terminal_reason: String (Optional)
+     *     revision: long (Required)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe ETag response header.
+ * + * @param agentName The agentName parameter. + * @param callJobId The callJobId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony call job + * + * Retrieves a durable direct or campaign-created outbound call job along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyCallJobWithResponse(String agentName, String callJobId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getTelephonyCallJobSync(this.client.getEndpoint(), agentName, callJobId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Cancel an outbound telephony call job + * + * Requests cancellation of a durable outbound call job. A connected call is allowed to finish. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     status: String(accepted/waiting_for_schedule/queued/dispatching/in_progress/waiting_for_retry/cancellation_requested/completed/blocked/expired/failed/cancelled) (Required)
+     *     cancellation (Optional): {
+     *         requested_by: String (Required)
+     *         mode: String (Required)
+     *         requested_at: long (Required)
+     *         revision: long (Required)
+     *     }
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     attempt_count: int (Required)
+     *     next_attempt_at: Long (Optional)
+     *     terminal_reason: String (Optional)
+     *     revision: long (Required)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe ETag response header.
LocationStringThe Location response header.
Retry-AfterDurationThe Retry-After response header.
+ * + * @param agentName The agentName parameter. + * @param callJobId The callJobId parameter. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable direct or campaign-created outbound call intent along with {@link Response} on successful + * completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> cancelTelephonyCallJobWithResponseAsync(String agentName, String callJobId, + String ifMatch, RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.cancelTelephonyCallJob(this.client.getEndpoint(), agentName, + callJobId, ifMatch, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Cancel an outbound telephony call job + * + * Requests cancellation of a durable outbound call job. A connected call is allowed to finish. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     destination (Required): {
+     *         type: String(phone_number) (Required)
+     *         value: String (Required)
+     *     }
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     structured_inputs (Optional): {
+     *         String: BinaryData (Required)
+     *     }
+     *     schedule (Optional): {
+     *         not_before: Long (Optional)
+     *         expires_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     status: String(accepted/waiting_for_schedule/queued/dispatching/in_progress/waiting_for_retry/cancellation_requested/completed/blocked/expired/failed/cancelled) (Required)
+     *     cancellation (Optional): {
+     *         requested_by: String (Required)
+     *         mode: String (Required)
+     *         requested_at: long (Required)
+     *         revision: long (Required)
+     *     }
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     attempt_count: int (Required)
+     *     next_attempt_at: Long (Optional)
+     *     terminal_reason: String (Optional)
+     *     revision: long (Required)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe ETag response header.
LocationStringThe Location response header.
Retry-AfterDurationThe Retry-After response header.
+ * + * @param agentName The agentName parameter. + * @param callJobId The callJobId parameter. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable direct or campaign-created outbound call intent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response cancelTelephonyCallJobWithResponse(String agentName, String callJobId, String ifMatch, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.cancelTelephonyCallJobSync(this.client.getEndpoint(), agentName, callJobId, ifMatch, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Create an outbound telephony campaign + * + * Creates a draft outbound campaign. Recipients are imported and validated before the campaign can be published. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     retry_policy (Optional): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: Integer (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
LocationStringThe Location response header.
+ * + * @param agentName The agentName parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response} on successful completion + * of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> createTelephonyCampaignWithResponseAsync(String agentName, BinaryData body, + RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.createTelephonyCampaign(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptions, context)); + } + + /** + * Create an outbound telephony campaign + * + * Creates a draft outbound campaign. Recipients are imported and validated before the campaign can be published. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     retry_policy (Optional): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: Integer (Optional)
+     *     }
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
LocationStringThe Location response header.
+ * + * @param agentName The agentName parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response createTelephonyCampaignWithResponse(String agentName, BinaryData body, + RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.createTelephonyCampaignSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptions, Context.NONE); + } + + /** + * Get an outbound telephony campaign + * + * Retrieves an outbound campaign, including configuration, execution state, and aggregate call-job counts. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony campaign + * + * Retrieves an outbound campaign, including configuration, execution state, and aggregate call-job counts along + * with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyCampaignWithResponseAsync(String agentName, String campaignId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.getTelephonyCampaign(this.client.getEndpoint(), agentName, + campaignId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get an outbound telephony campaign + * + * Retrieves an outbound campaign, including configuration, execution state, and aggregate call-job counts. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony campaign + * + * Retrieves an outbound campaign, including configuration, execution state, and aggregate call-job counts along + * with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyCampaignWithResponse(String agentName, String campaignId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getTelephonyCampaignSync(this.client.getEndpoint(), agentName, campaignId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Import outbound telephony campaign recipients + * + * Starts an asynchronous import of campaign recipients from a Dataset CSV, JSON array, or JSONL file. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     source (Required): {
+     *         type: String (Required)
+     *         dataset_name: String (Required)
+     *         dataset_version: String (Required)
+     *         file_name: String (Required)
+     *         format: String(csv/json/jsonl) (Required)
+     *     }
+     *     mapping (Optional): {
+     *         destination: String (Optional)
+     *         recipient_key: String (Optional)
+     *         recipient_item_key: String (Optional)
+     *         not_before: String (Optional)
+     *         expires_at: String (Optional)
+     *     }
+     *     duplicate_handling: String(reject/keep_each/merge) (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param idempotencyKey The idempotencyKey parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an accepted outbound campaign operation along with {@link Response} on successful completion of + * {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> importTelephonyCampaignRecipientsWithResponseAsync(String agentName, + String campaignId, String idempotencyKey, BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.importTelephonyCampaignRecipients(this.client.getEndpoint(), + agentName, campaignId, idempotencyKey, this.client.getServiceVersion().getVersion(), contentType, accept, + body, requestOptions, context)); + } + + /** + * Import outbound telephony campaign recipients + * + * Starts an asynchronous import of campaign recipients from a Dataset CSV, JSON array, or JSONL file. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     source (Required): {
+     *         type: String (Required)
+     *         dataset_name: String (Required)
+     *         dataset_version: String (Required)
+     *         file_name: String (Required)
+     *         format: String(csv/json/jsonl) (Required)
+     *     }
+     *     mapping (Optional): {
+     *         destination: String (Optional)
+     *         recipient_key: String (Optional)
+     *         recipient_item_key: String (Optional)
+     *         not_before: String (Optional)
+     *         expires_at: String (Optional)
+     *     }
+     *     duplicate_handling: String(reject/keep_each/merge) (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param idempotencyKey The idempotencyKey parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an accepted outbound campaign operation along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response importTelephonyCampaignRecipientsWithResponse(String agentName, String campaignId, + String idempotencyKey, BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.importTelephonyCampaignRecipientsSync(this.client.getEndpoint(), agentName, campaignId, + idempotencyKey, this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptions, + Context.NONE); + } + + /** + * Import outbound telephony campaign recipients + * + * Starts an asynchronous import of campaign recipients from a Dataset CSV, JSON array, or JSONL file. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     source (Required): {
+     *         type: String (Required)
+     *         dataset_name: String (Required)
+     *         dataset_version: String (Required)
+     *         file_name: String (Required)
+     *         format: String(csv/json/jsonl) (Required)
+     *     }
+     *     mapping (Optional): {
+     *         destination: String (Optional)
+     *         recipient_key: String (Optional)
+     *         recipient_item_key: String (Optional)
+     *         not_before: String (Optional)
+     *         expires_at: String (Optional)
+     *     }
+     *     duplicate_handling: String(reject/keep_each/merge) (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param idempotencyKey The idempotencyKey parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link PollerFlux} for polling of an accepted outbound campaign operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public PollerFlux + beginImportTelephonyCampaignRecipientsWithModelAsync(String agentName, String campaignId, String idempotencyKey, + BinaryData body, RequestOptions requestOptions) { + return PollerFlux.create(Duration.ofSeconds(1), + () -> this.importTelephonyCampaignRecipientsWithResponseAsync(agentName, campaignId, idempotencyKey, body, + requestOptions), + new com.azure.ai.agents.implementation.OperationLocationPollingStrategy<>( + new PollingStrategyOptions(this.client.getHttpPipeline()) + .setEndpoint("{endpoint}".replace("{endpoint}", this.client.getEndpoint())) + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() + : Context.NONE) + .setServiceVersion(this.client.getServiceVersion().getVersion()), + "resource"), + TypeReference.createInstance(TelephonyOperation.class), + TypeReference.createInstance(TelephonyOperationResource.class)); + } + + /** + * Import outbound telephony campaign recipients + * + * Starts an asynchronous import of campaign recipients from a Dataset CSV, JSON array, or JSONL file. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     source (Required): {
+     *         type: String (Required)
+     *         dataset_name: String (Required)
+     *         dataset_version: String (Required)
+     *         file_name: String (Required)
+     *         format: String(csv/json/jsonl) (Required)
+     *     }
+     *     mapping (Optional): {
+     *         destination: String (Optional)
+     *         recipient_key: String (Optional)
+     *         recipient_item_key: String (Optional)
+     *         not_before: String (Optional)
+     *         expires_at: String (Optional)
+     *     }
+     *     duplicate_handling: String(reject/keep_each/merge) (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param idempotencyKey The idempotencyKey parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link SyncPoller} for polling of an accepted outbound campaign operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller beginImportTelephonyCampaignRecipientsWithModel( + String agentName, String campaignId, String idempotencyKey, BinaryData body, RequestOptions requestOptions) { + return SyncPoller.createPoller(Duration.ofSeconds(1), + () -> this.importTelephonyCampaignRecipientsWithResponse(agentName, campaignId, idempotencyKey, body, + requestOptions), + new com.azure.ai.agents.implementation.SyncOperationLocationPollingStrategy<>( + new PollingStrategyOptions(this.client.getHttpPipeline()) + .setEndpoint("{endpoint}".replace("{endpoint}", this.client.getEndpoint())) + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() + : Context.NONE) + .setServiceVersion(this.client.getServiceVersion().getVersion()), + "resource"), + TypeReference.createInstance(TelephonyOperation.class), + TypeReference.createInstance(TelephonyOperationResource.class)); + } + + /** + * Import outbound telephony campaign recipients + * + * Starts an asynchronous import of campaign recipients from a Dataset CSV, JSON array, or JSONL file. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     source (Required): {
+     *         type: String (Required)
+     *         dataset_name: String (Required)
+     *         dataset_version: String (Required)
+     *         file_name: String (Required)
+     *         format: String(csv/json/jsonl) (Required)
+     *     }
+     *     mapping (Optional): {
+     *         destination: String (Optional)
+     *         recipient_key: String (Optional)
+     *         recipient_item_key: String (Optional)
+     *         not_before: String (Optional)
+     *         expires_at: String (Optional)
+     *     }
+     *     duplicate_handling: String(reject/keep_each/merge) (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param idempotencyKey The idempotencyKey parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link PollerFlux} for polling of an accepted outbound campaign operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public PollerFlux beginImportTelephonyCampaignRecipientsAsync(String agentName, + String campaignId, String idempotencyKey, BinaryData body, RequestOptions requestOptions) { + return PollerFlux.create(Duration.ofSeconds(1), + () -> this.importTelephonyCampaignRecipientsWithResponseAsync(agentName, campaignId, idempotencyKey, body, + requestOptions), + new com.azure.ai.agents.implementation.OperationLocationPollingStrategy<>( + new PollingStrategyOptions(this.client.getHttpPipeline()) + .setEndpoint("{endpoint}".replace("{endpoint}", this.client.getEndpoint())) + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() + : Context.NONE) + .setServiceVersion(this.client.getServiceVersion().getVersion()), + "resource"), + TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); + } + + /** + * Import outbound telephony campaign recipients + * + * Starts an asynchronous import of campaign recipients from a Dataset CSV, JSON array, or JSONL file. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     source (Required): {
+     *         type: String (Required)
+     *         dataset_name: String (Required)
+     *         dataset_version: String (Required)
+     *         file_name: String (Required)
+     *         format: String(csv/json/jsonl) (Required)
+     *     }
+     *     mapping (Optional): {
+     *         destination: String (Optional)
+     *         recipient_key: String (Optional)
+     *         recipient_item_key: String (Optional)
+     *         not_before: String (Optional)
+     *         expires_at: String (Optional)
+     *     }
+     *     duplicate_handling: String(reject/keep_each/merge) (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param idempotencyKey The idempotencyKey parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link SyncPoller} for polling of an accepted outbound campaign operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller beginImportTelephonyCampaignRecipients(String agentName, + String campaignId, String idempotencyKey, BinaryData body, RequestOptions requestOptions) { + return SyncPoller.createPoller(Duration.ofSeconds(1), + () -> this.importTelephonyCampaignRecipientsWithResponse(agentName, campaignId, idempotencyKey, body, + requestOptions), + new com.azure.ai.agents.implementation.SyncOperationLocationPollingStrategy<>( + new PollingStrategyOptions(this.client.getHttpPipeline()) + .setEndpoint("{endpoint}".replace("{endpoint}", this.client.getEndpoint())) + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() + : Context.NONE) + .setServiceVersion(this.client.getServiceVersion().getVersion()), + "resource"), + TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); + } + + /** + * Get an outbound telephony campaign recipient import + * + * Retrieves the durable status and counters for a campaign recipient import. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     campaign_id: String (Required)
+     *     status: String(running/succeeded/failed) (Required)
+     *     source (Required): {
+     *         type: String (Required)
+     *         dataset_name: String (Required)
+     *         dataset_version: String (Required)
+     *         file_name: String (Required)
+     *         format: String(csv/json/jsonl) (Required)
+     *     }
+     *     mapping (Optional): {
+     *         destination: String (Required)
+     *         recipient_key: String (Required)
+     *         recipient_item_key: String (Optional)
+     *         not_before: String (Optional)
+     *         expires_at: String (Optional)
+     *     }
+     *     duplicate_handling: String(reject/keep_each/merge) (Required)
+     *     rows_processed: long (Required)
+     *     eligible_recipient_count: long (Required)
+     *     invalid_recipient_count: long (Required)
+     *     error_code: String (Optional)
+     *     error_message: String (Optional)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param importId The importId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony campaign recipient import + * + * Retrieves the durable status and counters for a campaign recipient import along with {@link Response} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyCampaignRecipientImportWithResponseAsync(String agentName, + String campaignId, String importId, RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.getTelephonyCampaignRecipientImport(this.client.getEndpoint(), agentName, + campaignId, importId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get an outbound telephony campaign recipient import + * + * Retrieves the durable status and counters for a campaign recipient import. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     campaign_id: String (Required)
+     *     status: String(running/succeeded/failed) (Required)
+     *     source (Required): {
+     *         type: String (Required)
+     *         dataset_name: String (Required)
+     *         dataset_version: String (Required)
+     *         file_name: String (Required)
+     *         format: String(csv/json/jsonl) (Required)
+     *     }
+     *     mapping (Optional): {
+     *         destination: String (Required)
+     *         recipient_key: String (Required)
+     *         recipient_item_key: String (Optional)
+     *         not_before: String (Optional)
+     *         expires_at: String (Optional)
+     *     }
+     *     duplicate_handling: String(reject/keep_each/merge) (Required)
+     *     rows_processed: long (Required)
+     *     eligible_recipient_count: long (Required)
+     *     invalid_recipient_count: long (Required)
+     *     error_code: String (Optional)
+     *     error_message: String (Optional)
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param importId The importId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony campaign recipient import + * + * Retrieves the durable status and counters for a campaign recipient import along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyCampaignRecipientImportWithResponse(String agentName, String campaignId, + String importId, RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getTelephonyCampaignRecipientImportSync(this.client.getEndpoint(), agentName, campaignId, + importId, this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Validate an outbound telephony campaign + * + * Starts asynchronous validation of the current campaign draft and imported recipient snapshot. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an accepted outbound campaign operation along with {@link Response} on successful completion of + * {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> validateTelephonyCampaignWithResponseAsync(String agentName, String campaignId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.validateTelephonyCampaign(this.client.getEndpoint(), agentName, + campaignId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Validate an outbound telephony campaign + * + * Starts asynchronous validation of the current campaign draft and imported recipient snapshot. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an accepted outbound campaign operation along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response validateTelephonyCampaignWithResponse(String agentName, String campaignId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.validateTelephonyCampaignSync(this.client.getEndpoint(), agentName, campaignId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Validate an outbound telephony campaign + * + * Starts asynchronous validation of the current campaign draft and imported recipient snapshot. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link PollerFlux} for polling of an accepted outbound campaign operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public PollerFlux beginValidateTelephonyCampaignWithModelAsync( + String agentName, String campaignId, RequestOptions requestOptions) { + return PollerFlux.create(Duration.ofSeconds(1), + () -> this.validateTelephonyCampaignWithResponseAsync(agentName, campaignId, requestOptions), + new com.azure.ai.agents.implementation.OperationLocationPollingStrategy<>( + new PollingStrategyOptions(this.client.getHttpPipeline()) + .setEndpoint("{endpoint}".replace("{endpoint}", this.client.getEndpoint())) + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() + : Context.NONE) + .setServiceVersion(this.client.getServiceVersion().getVersion()), + "resource"), + TypeReference.createInstance(TelephonyOperation.class), + TypeReference.createInstance(TelephonyOperationResource.class)); + } + + /** + * Validate an outbound telephony campaign + * + * Starts asynchronous validation of the current campaign draft and imported recipient snapshot. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link SyncPoller} for polling of an accepted outbound campaign operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller + beginValidateTelephonyCampaignWithModel(String agentName, String campaignId, RequestOptions requestOptions) { + return SyncPoller.createPoller(Duration.ofSeconds(1), + () -> this.validateTelephonyCampaignWithResponse(agentName, campaignId, requestOptions), + new com.azure.ai.agents.implementation.SyncOperationLocationPollingStrategy<>( + new PollingStrategyOptions(this.client.getHttpPipeline()) + .setEndpoint("{endpoint}".replace("{endpoint}", this.client.getEndpoint())) + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() + : Context.NONE) + .setServiceVersion(this.client.getServiceVersion().getVersion()), + "resource"), + TypeReference.createInstance(TelephonyOperation.class), + TypeReference.createInstance(TelephonyOperationResource.class)); + } + + /** + * Validate an outbound telephony campaign + * + * Starts asynchronous validation of the current campaign draft and imported recipient snapshot. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link PollerFlux} for polling of an accepted outbound campaign operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public PollerFlux beginValidateTelephonyCampaignAsync(String agentName, String campaignId, + RequestOptions requestOptions) { + return PollerFlux.create(Duration.ofSeconds(1), + () -> this.validateTelephonyCampaignWithResponseAsync(agentName, campaignId, requestOptions), + new com.azure.ai.agents.implementation.OperationLocationPollingStrategy<>( + new PollingStrategyOptions(this.client.getHttpPipeline()) + .setEndpoint("{endpoint}".replace("{endpoint}", this.client.getEndpoint())) + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() + : Context.NONE) + .setServiceVersion(this.client.getServiceVersion().getVersion()), + "resource"), + TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); + } + + /** + * Validate an outbound telephony campaign + * + * Starts asynchronous validation of the current campaign draft and imported recipient snapshot. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link SyncPoller} for polling of an accepted outbound campaign operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller beginValidateTelephonyCampaign(String agentName, String campaignId, + RequestOptions requestOptions) { + return SyncPoller.createPoller(Duration.ofSeconds(1), + () -> this.validateTelephonyCampaignWithResponse(agentName, campaignId, requestOptions), + new com.azure.ai.agents.implementation.SyncOperationLocationPollingStrategy<>( + new PollingStrategyOptions(this.client.getHttpPipeline()) + .setEndpoint("{endpoint}".replace("{endpoint}", this.client.getEndpoint())) + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() + : Context.NONE) + .setServiceVersion(this.client.getServiceVersion().getVersion()), + "resource"), + TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); + } + + /** + * Publish an outbound telephony campaign + * + * Permanently locks the validated campaign draft and starts asynchronous call-job materialization. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     validation_id: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an accepted outbound campaign operation along with {@link Response} on successful completion of + * {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> publishTelephonyCampaignWithResponseAsync(String agentName, String campaignId, + BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.publishTelephonyCampaign(this.client.getEndpoint(), agentName, campaignId, + this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptions, context)); + } + + /** + * Publish an outbound telephony campaign + * + * Permanently locks the validated campaign draft and starts asynchronous call-job materialization. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     validation_id: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an accepted outbound campaign operation along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Response publishTelephonyCampaignWithResponse(String agentName, String campaignId, + BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.publishTelephonyCampaignSync(this.client.getEndpoint(), agentName, campaignId, + this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptions, Context.NONE); + } + + /** + * Publish an outbound telephony campaign + * + * Permanently locks the validated campaign draft and starts asynchronous call-job materialization. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     validation_id: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link PollerFlux} for polling of an accepted outbound campaign operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public PollerFlux beginPublishTelephonyCampaignWithModelAsync( + String agentName, String campaignId, BinaryData body, RequestOptions requestOptions) { + return PollerFlux.create(Duration.ofSeconds(1), + () -> this.publishTelephonyCampaignWithResponseAsync(agentName, campaignId, body, requestOptions), + new com.azure.ai.agents.implementation.OperationLocationPollingStrategy<>( + new PollingStrategyOptions(this.client.getHttpPipeline()) + .setEndpoint("{endpoint}".replace("{endpoint}", this.client.getEndpoint())) + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() + : Context.NONE) + .setServiceVersion(this.client.getServiceVersion().getVersion()), + "resource"), + TypeReference.createInstance(TelephonyOperation.class), + TypeReference.createInstance(TelephonyOperationResource.class)); + } + + /** + * Publish an outbound telephony campaign + * + * Permanently locks the validated campaign draft and starts asynchronous call-job materialization. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     validation_id: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link SyncPoller} for polling of an accepted outbound campaign operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller beginPublishTelephonyCampaignWithModel( + String agentName, String campaignId, BinaryData body, RequestOptions requestOptions) { + return SyncPoller.createPoller(Duration.ofSeconds(1), + () -> this.publishTelephonyCampaignWithResponse(agentName, campaignId, body, requestOptions), + new com.azure.ai.agents.implementation.SyncOperationLocationPollingStrategy<>( + new PollingStrategyOptions(this.client.getHttpPipeline()) + .setEndpoint("{endpoint}".replace("{endpoint}", this.client.getEndpoint())) + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() + : Context.NONE) + .setServiceVersion(this.client.getServiceVersion().getVersion()), + "resource"), + TypeReference.createInstance(TelephonyOperation.class), + TypeReference.createInstance(TelephonyOperationResource.class)); + } + + /** + * Publish an outbound telephony campaign + * + * Permanently locks the validated campaign draft and starts asynchronous call-job materialization. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     validation_id: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link PollerFlux} for polling of an accepted outbound campaign operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public PollerFlux beginPublishTelephonyCampaignAsync(String agentName, String campaignId, + BinaryData body, RequestOptions requestOptions) { + return PollerFlux.create(Duration.ofSeconds(1), + () -> this.publishTelephonyCampaignWithResponseAsync(agentName, campaignId, body, requestOptions), + new com.azure.ai.agents.implementation.OperationLocationPollingStrategy<>( + new PollingStrategyOptions(this.client.getHttpPipeline()) + .setEndpoint("{endpoint}".replace("{endpoint}", this.client.getEndpoint())) + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() + : Context.NONE) + .setServiceVersion(this.client.getServiceVersion().getVersion()), + "resource"), + TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); + } + + /** + * Publish an outbound telephony campaign + * + * Permanently locks the validated campaign draft and starts asynchronous call-job materialization. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     validation_id: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     kind: String(recipient_import/validation/publish) (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     campaign_id: String (Required)
+     *     recipient_import_id: String (Optional)
+     *     created_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param body The body parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link SyncPoller} for polling of an accepted outbound campaign operation. + */ + @ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION) + public SyncPoller beginPublishTelephonyCampaign(String agentName, String campaignId, + BinaryData body, RequestOptions requestOptions) { + return SyncPoller.createPoller(Duration.ofSeconds(1), + () -> this.publishTelephonyCampaignWithResponse(agentName, campaignId, body, requestOptions), + new com.azure.ai.agents.implementation.SyncOperationLocationPollingStrategy<>( + new PollingStrategyOptions(this.client.getHttpPipeline()) + .setEndpoint("{endpoint}".replace("{endpoint}", this.client.getEndpoint())) + .setContext(requestOptions != null && requestOptions.getContext() != null + ? requestOptions.getContext() + : Context.NONE) + .setServiceVersion(this.client.getServiceVersion().getVersion()), + "resource"), + TypeReference.createInstance(BinaryData.class), TypeReference.createInstance(BinaryData.class)); + } + + /** + * Pause an outbound telephony campaign + * + * Pauses dispatch of call jobs owned by a published campaign. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response} on successful completion + * of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> pauseTelephonyCampaignWithResponseAsync(String agentName, String campaignId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.pauseTelephonyCampaign(this.client.getEndpoint(), agentName, + campaignId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Pause an outbound telephony campaign + * + * Pauses dispatch of call jobs owned by a published campaign. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response pauseTelephonyCampaignWithResponse(String agentName, String campaignId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.pauseTelephonyCampaignSync(this.client.getEndpoint(), agentName, campaignId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Resume an outbound telephony campaign + * + * Resumes dispatch of call jobs owned by a paused campaign. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response} on successful completion + * of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> resumeTelephonyCampaignWithResponseAsync(String agentName, String campaignId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.resumeTelephonyCampaign(this.client.getEndpoint(), agentName, + campaignId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Resume an outbound telephony campaign + * + * Resumes dispatch of call jobs owned by a paused campaign. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response resumeTelephonyCampaignWithResponse(String agentName, String campaignId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.resumeTelephonyCampaignSync(this.client.getEndpoint(), agentName, campaignId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Cancel an outbound telephony campaign + * + * Cancels a campaign and prevents any further call-job dispatch. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response} on successful completion + * of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> cancelTelephonyCampaignWithResponseAsync(String agentName, String campaignId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.cancelTelephonyCampaign(this.client.getEndpoint(), agentName, + campaignId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Cancel an outbound telephony campaign + * + * Cancels a campaign and prevents any further call-job dispatch. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     display_name: String (Required)
+     *     telephony_binding_id: String (Required)
+     *     purpose: String (Optional)
+     *     schedule (Optional): {
+     *         type: String(immediate/scheduled) (Required)
+     *         start_at: Long (Optional)
+     *     }
+     *     id: String (Required)
+     *     object: String (Required)
+     *     agent_name: String (Required)
+     *     configuration_status: String(draft/importing/validating/publishing/published/publish_failed) (Required)
+     *     execution_status: String(none/scheduled/running/paused/completed/failed/cancelled) (Required)
+     *     retry_policy (Required): {
+     *         type: String(fixed_interval) (Required)
+     *         max_attempts: int (Required)
+     *     }
+     *     latest_successful_validation_id: String (Optional)
+     *     active_validation_id: String (Optional)
+     *     active_recipient_import_id: String (Optional)
+     *     published_at: Long (Optional)
+     *     call_job_counts (Required): {
+     *         total: long (Required)
+     *         pending: long (Required)
+     *         in_progress: long (Required)
+     *         completed: long (Required)
+     *         failed: long (Required)
+     *         blocked: long (Required)
+     *         cancelled: long (Required)
+     *         expired: long (Required)
+     *     }
+     *     created_at: long (Required)
+     *     updated_at: long (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param campaignId The campaignId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a durable outbound campaign owned by a voice agent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response cancelTelephonyCampaignWithResponse(String agentName, String campaignId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.cancelTelephonyCampaignSync(this.client.getEndpoint(), agentName, campaignId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Get an outbound telephony operation + * + * Retrieves an asynchronous outbound campaign operation. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     created_at: Long (Optional)
+     *     error (Optional): {
+     *         code: String (Required)
+     *         message: String (Required)
+     *         param: String (Optional)
+     *         type: String (Optional)
+     *         details (Optional): [
+     *             (recursive schema, see above)
+     *         ]
+     *         additionalInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *         debugInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *     }
+     *     resource (Optional): {
+     *         id: String (Required)
+     *         type: String (Required)
+     *     }
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param operationId The operationId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony operation + * + * Retrieves an asynchronous outbound campaign operation along with {@link Response} on successful completion of + * {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyOperationWithResponseAsync(String agentName, String operationId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.getTelephonyOperation(this.client.getEndpoint(), agentName, + operationId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get an outbound telephony operation + * + * Retrieves an asynchronous outbound campaign operation. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     status: String(not_started/running/succeeded/failed/cancelled/unknown) (Required)
+     *     created_at: Long (Optional)
+     *     error (Optional): {
+     *         code: String (Required)
+     *         message: String (Required)
+     *         param: String (Optional)
+     *         type: String (Optional)
+     *         details (Optional): [
+     *             (recursive schema, see above)
+     *         ]
+     *         additionalInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *         debugInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *     }
+     *     resource (Optional): {
+     *         id: String (Required)
+     *         type: String (Required)
+     *     }
+     * }
+     * }
+     * 
+ * + * @param agentName The agentName parameter. + * @param operationId The operationId parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an outbound telephony operation + * + * Retrieves an asynchronous outbound campaign operation along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyOperationWithResponse(String agentName, String operationId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getTelephonyOperationSync(this.client.getEndpoint(), agentName, operationId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java index 948367d828f4b..aab77ad33586f 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java @@ -25,6 +25,7 @@ import com.azure.core.exception.HttpResponseException; import com.azure.core.exception.ResourceModifiedException; import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.HttpHeaderName; import com.azure.core.http.rest.PagedFlux; import com.azure.core.http.rest.PagedIterable; import com.azure.core.http.rest.PagedResponse; @@ -34,7 +35,10 @@ import com.azure.core.http.rest.RestProxy; import com.azure.core.util.BinaryData; import com.azure.core.util.Context; +import com.azure.core.util.CoreUtils; +import com.azure.core.util.DateTimeRfc1123; import com.azure.core.util.FluxUtil; +import java.time.OffsetDateTime; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -122,6 +126,28 @@ Response createAgentSync(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, @BodyParam("application/json") BinaryData createAgentRequest, RequestOptions requestOptions, Context context); + @Post("/agents:generate") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> generateAgent(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, + @HeaderParam("Accept") String accept, @BodyParam("application/json") BinaryData body, + RequestOptions requestOptions, Context context); + + @Post("/agents:generate") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response generateAgentSync(@HostParam("endpoint") String endpoint, + @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, + @HeaderParam("Accept") String accept, @BodyParam("application/json") BinaryData body, + RequestOptions requestOptions, Context context); + // @Multipart not supported by RestProxy @Post("/agents") @ExpectedResponses({ 200 }) @@ -636,6 +662,252 @@ Response getSessionLogStreamSync(@HostParam("endpoint") String endpo @PathParam("session_id") String sessionId, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + @Post("/agents/{agent_name}/telephony/bindings") + @ExpectedResponses({ 201 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> createTelephonyBinding(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/bindings") + @ExpectedResponses({ 201 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response createTelephonyBindingSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/bindings") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> listTelephonyBindings(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/bindings") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response listTelephonyBindingsSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/bindings/{binding_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getTelephonyBinding(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/bindings/{binding_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getTelephonyBindingSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Patch("/agents/{agent_name}/telephony/bindings/{binding_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> updateTelephonyBinding(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId, + @HeaderParam("Content-Type") String contentType, @HeaderParam("If-Match") String ifMatch, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + @BodyParam("application/merge-patch+json") BinaryData body, RequestOptions requestOptions, Context context); + + @Patch("/agents/{agent_name}/telephony/bindings/{binding_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response updateTelephonyBindingSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId, + @HeaderParam("Content-Type") String contentType, @HeaderParam("If-Match") String ifMatch, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + @BodyParam("application/merge-patch+json") BinaryData body, RequestOptions requestOptions, Context context); + + @Delete("/agents/{agent_name}/telephony/bindings/{binding_id}") + @ExpectedResponses({ 204 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> deleteTelephonyBinding(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId, + @HeaderParam("If-Match") String ifMatch, @QueryParam("api-version") String apiVersion, + RequestOptions requestOptions, Context context); + + @Delete("/agents/{agent_name}/telephony/bindings/{binding_id}") + @ExpectedResponses({ 204 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response deleteTelephonyBindingSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId, + @HeaderParam("If-Match") String ifMatch, @QueryParam("api-version") String apiVersion, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/calls") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> listTelephonyCalls(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/calls") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response listTelephonyCallsSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/calls/{call_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getTelephonyCall(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("call_id") String callId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/calls/{call_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getTelephonyCallSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("call_id") String callId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/calls/{call_id}:transfer") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> transferTelephonyCall(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("call_id") String callId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, + @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData transferTelephonyCallRequest, RequestOptions requestOptions, + Context context); + + @Post("/agents/{agent_name}/telephony/calls/{call_id}:transfer") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response transferTelephonyCallSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("call_id") String callId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, + @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData transferTelephonyCallRequest, RequestOptions requestOptions, + Context context); + + @Post("/agents/{agent_name}/telephony/calls/{call_id}:end") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> endTelephonyCall(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("call_id") String callId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Post("/agents/{agent_name}/telephony/calls/{call_id}:end") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response endTelephonyCallSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("call_id") String callId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/transfer_targets") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getTelephonyTransferTargets(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/telephony/transfer_targets") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getTelephonyTransferTargetsSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Put("/agents/{agent_name}/telephony/transfer_targets") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> replaceTelephonyTransferTargets(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @HeaderParam("If-Match") String ifMatch, + @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, + @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData replaceTelephonyTransferTargetsRequest, + RequestOptions requestOptions, Context context); + + @Put("/agents/{agent_name}/telephony/transfer_targets") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response replaceTelephonyTransferTargetsSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @HeaderParam("If-Match") String ifMatch, + @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, + @HeaderParam("Accept") String accept, + @BodyParam("application/json") BinaryData replaceTelephonyTransferTargetsRequest, + RequestOptions requestOptions, Context context); + @Put("/agents/{agent_name}/endpoint/sessions/{agent_session_id}/files/content") @ExpectedResponses({ 201 }) @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) @@ -839,9 +1111,26 @@ Response listAgentConversationsSync(@HostParam("endpoint") String en * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -961,9 +1250,26 @@ public Mono> getAgentWithResponseAsync(String agentName, Re * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -1072,9 +1378,26 @@ public Response getAgentWithResponse(String agentName, RequestOption * } * description: String (Optional) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * blueprint_reference (Optional): { @@ -1159,9 +1482,26 @@ public Response getAgentWithResponse(String agentName, RequestOption * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -1271,9 +1611,26 @@ public Mono> createAgentWithResponseAsync(BinaryData create * } * description: String (Optional) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * blueprint_reference (Optional): { @@ -1358,9 +1715,26 @@ public Mono> createAgentWithResponseAsync(BinaryData create * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -1453,14 +1827,18 @@ public Response createAgentWithResponse(BinaryData createAgentReques } /** - * Create a new code-based agent + * Generate an agent + * + * Generates and creates an agent from kind-specific high-level inputs. + * The generated definition remains fully editable through the standard agent versioning operations. + *

Request Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
* - * Creates a new code-based agent. Uploads the code zip and creates the agent in a single call. - * The agent name is provided in the `x-ms-agent-name` header since POST /agents has no name in the URL path. - * The SHA-256 hex digest of the zip is provided in the `x-ms-code-zip-sha256` header for integrity and dedup. - * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is - * irrelevant). - * Maximum upload size is 250 MB. *

Response Body Schema

* *
@@ -1483,9 +1861,26 @@ public Response createAgentWithResponse(BinaryData createAgentReques
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -1561,11 +1956,7 @@ public Response createAgentWithResponse(BinaryData createAgentReques
      * }
      * 
* - * @param agentName The unique name that identifies the agent. Max 63 chars, must start and end with alphanumeric, - * hyphens allowed in the middle. - * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity - * verification. - * @param content The content multipart request content. + * @param body The kind-specific inputs for generating and creating an agent. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -1574,24 +1965,26 @@ public Response createAgentWithResponse(BinaryData createAgentReques * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> createAgentFromCodeWithResponseInternalAsync(String agentName, - String codeZipSha256, BinaryData content, RequestOptions requestOptions) { - final String contentType = "multipart/form-data"; + public Mono> generateAgentWithResponseAsync(BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/json"; final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.createAgentFromCode(this.client.getEndpoint(), contentType, agentName, - codeZipSha256, this.client.getServiceVersion().getVersion(), accept, content, requestOptions, context)); + return FluxUtil.withContext(context -> service.generateAgent(this.client.getEndpoint(), + this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptions, context)); } /** - * Create a new code-based agent + * Generate an agent + * + * Generates and creates an agent from kind-specific high-level inputs. + * The generated definition remains fully editable through the standard agent versioning operations. + *

Request Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
* - * Creates a new code-based agent. Uploads the code zip and creates the agent in a single call. - * The agent name is provided in the `x-ms-agent-name` header since POST /agents has no name in the URL path. - * The SHA-256 hex digest of the zip is provided in the `x-ms-code-zip-sha256` header for integrity and dedup. - * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is - * irrelevant). - * Maximum upload size is 250 MB. *

Response Body Schema

* *
@@ -1614,9 +2007,26 @@ public Mono> createAgentFromCodeWithResponseInternalAsync(S
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -1692,11 +2102,7 @@ public Mono> createAgentFromCodeWithResponseInternalAsync(S
      * }
      * 
* - * @param agentName The unique name that identifies the agent. Max 63 chars, must start and end with alphanumeric, - * hyphens allowed in the middle. - * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity - * verification. - * @param content The content multipart request content. + * @param body The kind-specific inputs for generating and creating an agent. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -1705,41 +2111,22 @@ public Mono> createAgentFromCodeWithResponseInternalAsync(S * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response createAgentFromCodeWithResponseInternal(String agentName, String codeZipSha256, - BinaryData content, RequestOptions requestOptions) { - final String contentType = "multipart/form-data"; + public Response generateAgentWithResponse(BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/json"; final String accept = "application/json"; - return service.createAgentFromCodeSync(this.client.getEndpoint(), contentType, agentName, codeZipSha256, - this.client.getServiceVersion().getVersion(), accept, content, requestOptions, Context.NONE); + return service.generateAgentSync(this.client.getEndpoint(), this.client.getServiceVersion().getVersion(), + contentType, accept, body, requestOptions, Context.NONE); } /** - * Update an agent - * - * Updates the agent by adding a new version if there are any changes to the agent definition. - * If no changes, returns the existing agent version. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Optional): {
-     *         String: String (Required)
-     *     }
-     *     description: String (Optional)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *         }
-     *     }
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     * }
-     * }
-     * 
+ * Create a new code-based agent * + * Creates a new code-based agent. Uploads the code zip and creates the agent in a single call. + * The agent name is provided in the `x-ms-agent-name` header since POST /agents has no name in the URL path. + * The SHA-256 hex digest of the zip is provided in the `x-ms-code-zip-sha256` header for integrity and dedup. + * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is + * irrelevant). + * Maximum upload size is 250 MB. *

Response Body Schema

* *
@@ -1762,9 +2149,26 @@ public Response createAgentFromCodeWithResponseInternal(String agent
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -1840,8 +2244,11 @@ public Response createAgentFromCodeWithResponseInternal(String agent
      * }
      * 
* - * @param agentName The name of the agent to retrieve. - * @param updateAgentRequest The updateAgentRequest parameter. + * @param agentName The unique name that identifies the agent. Max 63 chars, must start and end with alphanumeric, + * hyphens allowed in the middle. + * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity + * verification. + * @param content The content multipart request content. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -1850,42 +2257,24 @@ public Response createAgentFromCodeWithResponseInternal(String agent * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> updateAgentWithResponseAsync(String agentName, BinaryData updateAgentRequest, - RequestOptions requestOptions) { - final String contentType = "application/json"; + public Mono> createAgentFromCodeWithResponseInternalAsync(String agentName, + String codeZipSha256, BinaryData content, RequestOptions requestOptions) { + final String contentType = "multipart/form-data"; final String accept = "application/json"; - return FluxUtil.withContext(context -> service.updateAgent(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentRequest, requestOptions, - context)); + return FluxUtil + .withContext(context -> service.createAgentFromCode(this.client.getEndpoint(), contentType, agentName, + codeZipSha256, this.client.getServiceVersion().getVersion(), accept, content, requestOptions, context)); } /** - * Update an agent - * - * Updates the agent by adding a new version if there are any changes to the agent definition. - * If no changes, returns the existing agent version. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Optional): {
-     *         String: String (Required)
-     *     }
-     *     description: String (Optional)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *         }
-     *     }
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     * }
-     * }
-     * 
+ * Create a new code-based agent * + * Creates a new code-based agent. Uploads the code zip and creates the agent in a single call. + * The agent name is provided in the `x-ms-agent-name` header since POST /agents has no name in the URL path. + * The SHA-256 hex digest of the zip is provided in the `x-ms-code-zip-sha256` header for integrity and dedup. + * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is + * irrelevant). + * Maximum upload size is 250 MB. *

Response Body Schema

* *
@@ -1908,9 +2297,26 @@ public Mono> updateAgentWithResponseAsync(String agentName,
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -1986,8 +2392,11 @@ public Mono> updateAgentWithResponseAsync(String agentName,
      * }
      * 
* - * @param agentName The name of the agent to retrieve. - * @param updateAgentRequest The updateAgentRequest parameter. + * @param agentName The unique name that identifies the agent. Max 63 chars, must start and end with alphanumeric, + * hyphens allowed in the middle. + * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity + * verification. + * @param content The content multipart request content. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -1996,23 +2405,58 @@ public Mono> updateAgentWithResponseAsync(String agentName, * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response updateAgentWithResponse(String agentName, BinaryData updateAgentRequest, - RequestOptions requestOptions) { - final String contentType = "application/json"; + public Response createAgentFromCodeWithResponseInternal(String agentName, String codeZipSha256, + BinaryData content, RequestOptions requestOptions) { + final String contentType = "multipart/form-data"; final String accept = "application/json"; - return service.updateAgentSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentRequest, requestOptions, - Context.NONE); + return service.createAgentFromCodeSync(this.client.getEndpoint(), contentType, agentName, codeZipSha256, + this.client.getServiceVersion().getVersion(), accept, content, requestOptions, Context.NONE); } /** - * Update a code-based agent + * Update an agent + * + * Updates the agent by adding a new version if there are any changes to the agent definition. + * If no changes, returns the existing agent version. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     description: String (Optional)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     * }
+     * }
+     * 
* - * Updates a code-based agent by uploading new code and creating a new version. - * If the code and definition are unchanged (matched by x-ms-code-zip-sha256 header), returns the existing version. - * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is - * irrelevant). - * Maximum upload size is 250 MB. *

Response Body Schema

* *
@@ -2035,9 +2479,26 @@ public Response updateAgentWithResponse(String agentName, BinaryData
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -2113,13 +2574,8 @@ public Response updateAgentWithResponse(String agentName, BinaryData
      * }
      * 
* - * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. - * - Must start and end with alphanumeric characters, - * - Can contain hyphens in the middle - * - Must not exceed 63 characters. - * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity - * verification. - * @param content The content multipart request content. + * @param agentName The name of the agent to retrieve. + * @param updateAgentRequest The updateAgentRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2128,23 +2584,59 @@ public Response updateAgentWithResponse(String agentName, BinaryData * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> updateAgentFromCodeWithResponseInternalAsync(String agentName, - String codeZipSha256, BinaryData content, RequestOptions requestOptions) { - final String contentType = "multipart/form-data"; + public Mono> updateAgentWithResponseAsync(String agentName, BinaryData updateAgentRequest, + RequestOptions requestOptions) { + final String contentType = "application/json"; final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.updateAgentFromCode(this.client.getEndpoint(), agentName, contentType, - codeZipSha256, this.client.getServiceVersion().getVersion(), accept, content, requestOptions, context)); + return FluxUtil.withContext(context -> service.updateAgent(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentRequest, requestOptions, + context)); } /** - * Update a code-based agent + * Update an agent + * + * Updates the agent by adding a new version if there are any changes to the agent definition. + * If no changes, returns the existing agent version. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     description: String (Optional)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     * }
+     * }
+     * 
* - * Updates a code-based agent by uploading new code and creating a new version. - * If the code and definition are unchanged (matched by x-ms-code-zip-sha256 header), returns the existing version. - * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is - * irrelevant). - * Maximum upload size is 250 MB. *

Response Body Schema

* *
@@ -2167,9 +2659,26 @@ public Mono> updateAgentFromCodeWithResponseInternalAsync(S
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -2245,13 +2754,8 @@ public Mono> updateAgentFromCodeWithResponseInternalAsync(S
      * }
      * 
* - * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. - * - Must start and end with alphanumeric characters, - * - Can contain hyphens in the middle - * - Must not exceed 63 characters. - * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity - * verification. - * @param content The content multipart request content. + * @param agentName The name of the agent to retrieve. + * @param updateAgentRequest The updateAgentRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2260,36 +2764,23 @@ public Mono> updateAgentFromCodeWithResponseInternalAsync(S * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response updateAgentFromCodeWithResponseInternal(String agentName, String codeZipSha256, - BinaryData content, RequestOptions requestOptions) { - final String contentType = "multipart/form-data"; + public Response updateAgentWithResponse(String agentName, BinaryData updateAgentRequest, + RequestOptions requestOptions) { + final String contentType = "application/json"; final String accept = "application/json"; - return service.updateAgentFromCodeSync(this.client.getEndpoint(), agentName, contentType, codeZipSha256, - this.client.getServiceVersion().getVersion(), accept, content, requestOptions, Context.NONE); + return service.updateAgentSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentRequest, requestOptions, + Context.NONE); } /** - * Create an agent from a manifest - * - * Imports the provided manifest to create an agent and returns the created resource. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     name: String (Required)
-     *     metadata (Optional): {
-     *         String: String (Required)
-     *     }
-     *     description: String (Optional)
-     *     manifest_id: String (Required)
-     *     parameter_values (Required): {
-     *         String: BinaryData (Required)
-     *     }
-     * }
-     * }
-     * 
+ * Update a code-based agent * + * Updates a code-based agent by uploading new code and creating a new version. + * If the code and definition are unchanged (matched by x-ms-code-zip-sha256 header), returns the existing version. + * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is + * irrelevant). + * Maximum upload size is 250 MB. *

Response Body Schema

* *
@@ -2312,9 +2803,26 @@ public Response updateAgentFromCodeWithResponseInternal(String agent
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -2390,7 +2898,13 @@ public Response updateAgentFromCodeWithResponseInternal(String agent
      * }
      * 
* - * @param createAgentFromManifestRequest The createAgentFromManifestRequest parameter. + * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. + * - Must start and end with alphanumeric characters, + * - Can contain hyphens in the middle + * - Must not exceed 63 characters. + * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity + * verification. + * @param content The content multipart request content. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2399,37 +2913,23 @@ public Response updateAgentFromCodeWithResponseInternal(String agent * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> createAgentFromManifestWithResponseAsync( - BinaryData createAgentFromManifestRequest, RequestOptions requestOptions) { - final String contentType = "application/json"; + public Mono> updateAgentFromCodeWithResponseInternalAsync(String agentName, + String codeZipSha256, BinaryData content, RequestOptions requestOptions) { + final String contentType = "multipart/form-data"; final String accept = "application/json"; - return FluxUtil.withContext(context -> service.createAgentFromManifest(this.client.getEndpoint(), - this.client.getServiceVersion().getVersion(), contentType, accept, createAgentFromManifestRequest, - requestOptions, context)); + return FluxUtil + .withContext(context -> service.updateAgentFromCode(this.client.getEndpoint(), agentName, contentType, + codeZipSha256, this.client.getServiceVersion().getVersion(), accept, content, requestOptions, context)); } /** - * Create an agent from a manifest - * - * Imports the provided manifest to create an agent and returns the created resource. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     name: String (Required)
-     *     metadata (Optional): {
-     *         String: String (Required)
-     *     }
-     *     description: String (Optional)
-     *     manifest_id: String (Required)
-     *     parameter_values (Required): {
-     *         String: BinaryData (Required)
-     *     }
-     * }
-     * }
-     * 
+ * Update a code-based agent * + * Updates a code-based agent by uploading new code and creating a new version. + * If the code and definition are unchanged (matched by x-ms-code-zip-sha256 header), returns the existing version. + * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is + * irrelevant). + * Maximum upload size is 250 MB. *

Response Body Schema

* *
@@ -2452,9 +2952,26 @@ public Mono> createAgentFromManifestWithResponseAsync(
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -2530,7 +3047,13 @@ public Mono> createAgentFromManifestWithResponseAsync(
      * }
      * 
* - * @param createAgentFromManifestRequest The createAgentFromManifestRequest parameter. + * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. + * - Must start and end with alphanumeric characters, + * - Can contain hyphens in the middle + * - Must not exceed 63 characters. + * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity + * verification. + * @param content The content multipart request content. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2539,25 +3062,24 @@ public Mono> createAgentFromManifestWithResponseAsync( * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response createAgentFromManifestWithResponse(BinaryData createAgentFromManifestRequest, - RequestOptions requestOptions) { - final String contentType = "application/json"; + public Response updateAgentFromCodeWithResponseInternal(String agentName, String codeZipSha256, + BinaryData content, RequestOptions requestOptions) { + final String contentType = "multipart/form-data"; final String accept = "application/json"; - return service.createAgentFromManifestSync(this.client.getEndpoint(), - this.client.getServiceVersion().getVersion(), contentType, accept, createAgentFromManifestRequest, - requestOptions, Context.NONE); + return service.updateAgentFromCodeSync(this.client.getEndpoint(), agentName, contentType, codeZipSha256, + this.client.getServiceVersion().getVersion(), accept, content, requestOptions, Context.NONE); } /** - * Update an agent from a manifest + * Create an agent from a manifest * - * Updates the agent from a manifest by adding a new version if there are any changes to the agent definition. - * If no changes, returns the existing agent version. + * Imports the provided manifest to create an agent and returns the created resource. *

Request Body Schema

* *
      * {@code
      * {
+     *     name: String (Required)
      *     metadata (Optional): {
      *         String: String (Required)
      *     }
@@ -2592,9 +3114,26 @@ public Response createAgentFromManifestWithResponse(BinaryData creat
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -2670,8 +3209,7 @@ public Response createAgentFromManifestWithResponse(BinaryData creat
      * }
      * 
* - * @param agentName The name of the agent to update. - * @param updateAgentFromManifestRequest The updateAgentFromManifestRequest parameter. + * @param createAgentFromManifestRequest The createAgentFromManifestRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2680,25 +3218,25 @@ public Response createAgentFromManifestWithResponse(BinaryData creat * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> updateAgentFromManifestWithResponseAsync(String agentName, - BinaryData updateAgentFromManifestRequest, RequestOptions requestOptions) { + public Mono> createAgentFromManifestWithResponseAsync( + BinaryData createAgentFromManifestRequest, RequestOptions requestOptions) { final String contentType = "application/json"; final String accept = "application/json"; - return FluxUtil.withContext(context -> service.updateAgentFromManifest(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentFromManifestRequest, + return FluxUtil.withContext(context -> service.createAgentFromManifest(this.client.getEndpoint(), + this.client.getServiceVersion().getVersion(), contentType, accept, createAgentFromManifestRequest, requestOptions, context)); } /** - * Update an agent from a manifest + * Create an agent from a manifest * - * Updates the agent from a manifest by adding a new version if there are any changes to the agent definition. - * If no changes, returns the existing agent version. + * Imports the provided manifest to create an agent and returns the created resource. *

Request Body Schema

* *
      * {@code
      * {
+     *     name: String (Required)
      *     metadata (Optional): {
      *         String: String (Required)
      *     }
@@ -2733,9 +3271,26 @@ public Mono> updateAgentFromManifestWithResponseAsync(Strin
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -2811,8 +3366,7 @@ public Mono> updateAgentFromManifestWithResponseAsync(Strin
      * }
      * 
* - * @param agentName The name of the agent to update. - * @param updateAgentFromManifestRequest The updateAgentFromManifestRequest parameter. + * @param createAgentFromManifestRequest The createAgentFromManifestRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2821,126 +3375,37 @@ public Mono> updateAgentFromManifestWithResponseAsync(Strin * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response updateAgentFromManifestWithResponse(String agentName, - BinaryData updateAgentFromManifestRequest, RequestOptions requestOptions) { + public Response createAgentFromManifestWithResponse(BinaryData createAgentFromManifestRequest, + RequestOptions requestOptions) { final String contentType = "application/json"; final String accept = "application/json"; - return service.updateAgentFromManifestSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentFromManifestRequest, + return service.createAgentFromManifestSync(this.client.getEndpoint(), + this.client.getServiceVersion().getVersion(), contentType, accept, createAgentFromManifestRequest, requestOptions, Context.NONE); } /** - * Delete an agent - * - * Deletes an agent. For hosted agents, if any version has active sessions, the request - * is rejected with HTTP 409 unless `force` is set to true. When force is true, all - * associated sessions are cascade-deleted along with the agent and its versions. - *

Query Parameters

- * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
forceBooleanNoFor Hosted Agents, if `true`, force-deletes the agent even if - * its versions have active sessions, cascading deletion to all associated sessions. The service defaults to `false` - * if a value is not specified by the caller. This value is not relevant for other Agent types.
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     name: String (Required)
-     *     deleted: boolean (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the agent to delete. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a deleted agent Object along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> internalDeleteAgentWithResponseAsync(String agentName, - RequestOptions requestOptions) { - final String accept = "application/json"; - return FluxUtil.withContext(context -> service.internalDeleteAgent(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); - } - - /** - * Delete an agent + * Update an agent from a manifest * - * Deletes an agent. For hosted agents, if any version has active sessions, the request - * is rejected with HTTP 409 unless `force` is set to true. When force is true, all - * associated sessions are cascade-deleted along with the agent and its versions. - *

Query Parameters

- * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
forceBooleanNoFor Hosted Agents, if `true`, force-deletes the agent even if - * its versions have active sessions, cascading deletion to all associated sessions. The service defaults to `false` - * if a value is not specified by the caller. This value is not relevant for other Agent types.
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

+ * Updates the agent from a manifest by adding a new version if there are any changes to the agent definition. + * If no changes, returns the existing agent version. + *

Request Body Schema

* *
      * {@code
      * {
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     name: String (Required)
-     *     deleted: boolean (Required)
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     description: String (Optional)
+     *     manifest_id: String (Required)
+     *     parameter_values (Required): {
+     *         String: BinaryData (Required)
+     *     }
      * }
      * }
      * 
* - * @param agentName The name of the agent to delete. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a deleted agent Object along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response internalDeleteAgentWithResponse(String agentName, RequestOptions requestOptions) { - final String accept = "application/json"; - return service.internalDeleteAgentSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); - } - - /** - * List agents - * - * Returns a paged collection of agent resources. - *

Query Parameters

- * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
kindStringNoFilter agents by kind. If not provided, all agents are returned. - * Allowed values: "prompt", "hosted", "workflow", "external".
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
@@ -2963,9 +3428,26 @@ public Response internalDeleteAgentWithResponse(String agentName, Re
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -3041,50 +3523,47 @@ public Response internalDeleteAgentWithResponse(String agentName, Re
      * }
      * 
* + * @param agentName The name of the agent to update. + * @param updateAgentFromManifestRequest The updateAgentFromManifestRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion - * of {@link Mono}. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listAgentsSinglePageAsync(RequestOptions requestOptions) { + public Mono> updateAgentFromManifestWithResponseAsync(String agentName, + BinaryData updateAgentFromManifestRequest, RequestOptions requestOptions) { + final String contentType = "application/json"; final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.listAgents(this.client.getEndpoint(), - this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - getValues(res.getValue(), "data"), null, null)); + return FluxUtil.withContext(context -> service.updateAgentFromManifest(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentFromManifestRequest, + requestOptions, context)); } /** - * List agents + * Update an agent from a manifest + * + * Updates the agent from a manifest by adding a new version if there are any changes to the agent definition. + * If no changes, returns the existing agent version. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     description: String (Optional)
+     *     manifest_id: String (Required)
+     *     parameter_values (Required): {
+     *         String: BinaryData (Required)
+     *     }
+     * }
+     * }
+     * 
* - * Returns a paged collection of agent resources. - *

Query Parameters

- * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
kindStringNoFilter agents by kind. If not provided, all agents are returned. - * Allowed values: "prompt", "hosted", "workflow", "external".
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
@@ -3107,9 +3586,26 @@ private Mono> listAgentsSinglePageAsync(RequestOptions
      *             description: String (Optional)
      *             created_at: long (Required)
      *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external) (Required)
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
      *                 rai_config (Optional): {
      *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
      *                 }
      *             }
      *             draft: Boolean (Optional)
@@ -3185,16 +3681,108 @@ private Mono> listAgentsSinglePageAsync(RequestOptions
      * }
      * 
* + * @param agentName The name of the agent to update. + * @param updateAgentFromManifestRequest The updateAgentFromManifestRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + * @return the response body along with {@link Response}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedFlux listAgentsAsync(RequestOptions requestOptions) { - return new PagedFlux<>(() -> listAgentsSinglePageAsync(requestOptions)); + @ServiceMethod(returns = ReturnType.SINGLE) + public Response updateAgentFromManifestWithResponse(String agentName, + BinaryData updateAgentFromManifestRequest, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.updateAgentFromManifestSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentFromManifestRequest, + requestOptions, Context.NONE); + } + + /** + * Delete an agent + * + * Deletes an agent. For hosted agents, if any version has active sessions, the request + * is rejected with HTTP 409 unless `force` is set to true. When force is true, all + * associated sessions are cascade-deleted along with the agent and its versions. + *

Query Parameters

+ * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
forceBooleanNoFor Hosted Agents, if `true`, force-deletes the agent even if + * its versions have active sessions, cascading deletion to all associated sessions. The service defaults to `false` + * if a value is not specified by the caller. This value is not relevant for other Agent types.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     name: String (Required)
+     *     deleted: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent to delete. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a deleted agent Object along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> internalDeleteAgentWithResponseAsync(String agentName, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.internalDeleteAgent(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Delete an agent + * + * Deletes an agent. For hosted agents, if any version has active sessions, the request + * is rejected with HTTP 409 unless `force` is set to true. When force is true, all + * associated sessions are cascade-deleted along with the agent and its versions. + *

Query Parameters

+ * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
forceBooleanNoFor Hosted Agents, if `true`, force-deletes the agent even if + * its versions have active sessions, cascading deletion to all associated sessions. The service defaults to `false` + * if a value is not specified by the caller. This value is not relevant for other Agent types.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     name: String (Required)
+     *     deleted: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent to delete. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a deleted agent Object along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response internalDeleteAgentWithResponse(String agentName, RequestOptions requestOptions) { + final String accept = "application/json"; + return service.internalDeleteAgentSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); } /** @@ -3206,7 +3794,7 @@ public PagedFlux listAgentsAsync(RequestOptions requestOptions) { * Query Parameters * NameTypeRequiredDescription * kindStringNoFilter agents by kind. If not provided, all agents are returned. - * Allowed values: "prompt", "hosted", "workflow", "external". + * Allowed values: "prompt", "hosted", "workflow", "external", "voice". * limitIntegerNoA limit on the number of objects to be returned. Limit can range * between 1 and 100, and the * default is 20. @@ -3245,9 +3833,26 @@ public PagedFlux listAgentsAsync(RequestOptions requestOptions) { * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -3328,15 +3933,17 @@ public PagedFlux listAgentsAsync(RequestOptions requestOptions) { * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items along with {@link PagedResponse}. + * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion + * of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private PagedResponse listAgentsSinglePage(RequestOptions requestOptions) { + private Mono> listAgentsSinglePageAsync(RequestOptions requestOptions) { final String accept = "application/json"; - Response res = service.listAgentsSync(this.client.getEndpoint(), - this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); - return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - getValues(res.getValue(), "data"), null, null); + return FluxUtil + .withContext(context -> service.listAgents(this.client.getEndpoint(), + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) + .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null)); } /** @@ -3348,7 +3955,7 @@ private PagedResponse listAgentsSinglePage(RequestOptions requestOpt * Query Parameters * NameTypeRequiredDescription * kindStringNoFilter agents by kind. If not provided, all agents are returned. - * Allowed values: "prompt", "hosted", "workflow", "external". + * Allowed values: "prompt", "hosted", "workflow", "external", "voice". * limitIntegerNoA limit on the number of objects to be returned. Limit can range * between 1 and 100, and the * default is 20. @@ -3387,9 +3994,26 @@ private PagedResponse listAgentsSinglePage(RequestOptions requestOpt * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -3470,97 +4094,325 @@ private PagedResponse listAgentsSinglePage(RequestOptions requestOpt * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. */ @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listAgents(RequestOptions requestOptions) { - return new PagedIterable<>(() -> listAgentsSinglePage(requestOptions)); + public PagedFlux listAgentsAsync(RequestOptions requestOptions) { + return new PagedFlux<>(() -> listAgentsSinglePageAsync(requestOptions)); } /** - * Create an agent version - * - * Creates a new version for the specified agent and returns the created version resource. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Optional): {
-     *         String: String (Required)
-     *     }
-     *     description: String (Optional)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *         }
-     *     }
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     *     digital_worker_type: String(m365) (Optional)
-     *     draft: Boolean (Optional)
-     * }
-     * }
-     * 
+ * List agents * + * Returns a paged collection of agent resources. + *

Query Parameters

+ * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
kindStringNoFilter agents by kind. If not provided, all agents are returned. + * Allowed values: "prompt", "hosted", "workflow", "external", "voice".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
      * {@code
      * {
-     *     metadata (Required): {
-     *         String: String (Required)
-     *     }
      *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
      *     id: String (Required)
      *     name: String (Required)
-     *     version: String (Required)
-     *     description: String (Optional)
-     *     created_at: long (Required)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
+     *     state: String(enabled/disabled) (Required)
+     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
+     *     versions (Required): {
+     *         latest (Required): {
+     *             metadata (Required): {
+     *                 String: String (Required)
+     *             }
+     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *             id: String (Required)
+     *             name: String (Required)
+     *             version: String (Required)
+     *             description: String (Optional)
+     *             created_at: long (Required)
+     *             definition (Required): {
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *                 rai_config (Optional): {
+     *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
+     *                 }
+     *             }
+     *             draft: Boolean (Optional)
+     *             status: String(creating/active/failed/deleting/deleted) (Optional)
+     *             instance_identity (Optional): {
+     *                 principal_id: String (Required)
+     *                 client_id: String (Required)
+     *                 status: String(active/disabled) (Optional)
+     *             }
+     *             blueprint (Optional): (recursive schema, see blueprint above)
+     *             blueprint_reference (Optional): {
+     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
+     *             }
+     *             agent_guid: String (Optional)
      *         }
      *     }
-     *     draft: Boolean (Optional)
-     *     status: String(creating/active/failed/deleting/deleted) (Optional)
-     *     instance_identity (Optional): {
-     *         principal_id: String (Required)
-     *         client_id: String (Required)
-     *         status: String(active/disabled) (Optional)
+     *     agent_endpoint (Optional): {
+     *         version_selector (Optional): {
+     *             version_selection_rules (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     type: String(FixedRatio) (Required)
+     *                     agent_version: String (Optional, Required on create)
+     *                 }
+     *             ]
+     *         }
+     *         protocol_configuration (Optional): {
+     *             activity (Optional): {
+     *                 enable_m365_public_endpoint: Boolean (Optional)
+     *                 access_boundaries (Optional): [
+     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
+     *                 ]
+     *             }
+     *             responses (Optional): {
+     *             }
+     *             a2a (Optional): {
+     *             }
+     *             mcp (Optional): {
+     *             }
+     *             invocations (Optional): {
+     *             }
+     *             invocations_ws (Optional): {
+     *             }
+     *         }
+     *         authorization_schemes (Optional): [
+     *              (Optional){
+     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
+     *             }
+     *         ]
+     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
      *     }
+     *     digital_worker_type: String(m365) (Optional)
+     *     instance_identity (Optional): (recursive schema, see instance_identity above)
      *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     *     agent_guid: String (Optional)
-     * }
-     * }
-     * 
- * - * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. - * - Must start and end with alphanumeric characters, - * - Can contain hyphens in the middle - * - Must not exceed 63 characters. - * @param createAgentVersionRequest The createAgentVersionRequest parameter. + * blueprint_reference (Optional): (recursive schema, see blueprint_reference above) + * agent_card (Optional): { + * version: String (Optional, Required on create) + * description: String (Optional) + * skills (Optional, Required on create): [ + * (Optional, Required on create){ + * id: String (Optional, Required on create) + * name: String (Optional, Required on create) + * description: String (Optional) + * tags (Optional): [ + * String (Optional) + * ] + * examples (Optional): [ + * String (Optional) + * ] + * } + * ] + * } + * } + * } + *
+ * * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response} on successful completion of {@link Mono}. + * @return the response data for a requested list of items along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> createAgentVersionWithResponseAsync(String agentName, - BinaryData createAgentVersionRequest, RequestOptions requestOptions) { - final String contentType = "application/json"; + private PagedResponse listAgentsSinglePage(RequestOptions requestOptions) { final String accept = "application/json"; - return FluxUtil.withContext(context -> service.createAgentVersion(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, createAgentVersionRequest, - requestOptions, context)); + Response res = service.listAgentsSync(this.client.getEndpoint(), + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null); + } + + /** + * List agents + * + * Returns a paged collection of agent resources. + *

Query Parameters

+ * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
kindStringNoFilter agents by kind. If not provided, all agents are returned. + * Allowed values: "prompt", "hosted", "workflow", "external", "voice".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     state: String(enabled/disabled) (Required)
+     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
+     *     versions (Required): {
+     *         latest (Required): {
+     *             metadata (Required): {
+     *                 String: String (Required)
+     *             }
+     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *             id: String (Required)
+     *             name: String (Required)
+     *             version: String (Required)
+     *             description: String (Optional)
+     *             created_at: long (Required)
+     *             definition (Required): {
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *                 rai_config (Optional): {
+     *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
+     *                 }
+     *             }
+     *             draft: Boolean (Optional)
+     *             status: String(creating/active/failed/deleting/deleted) (Optional)
+     *             instance_identity (Optional): {
+     *                 principal_id: String (Required)
+     *                 client_id: String (Required)
+     *                 status: String(active/disabled) (Optional)
+     *             }
+     *             blueprint (Optional): (recursive schema, see blueprint above)
+     *             blueprint_reference (Optional): {
+     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
+     *             }
+     *             agent_guid: String (Optional)
+     *         }
+     *     }
+     *     agent_endpoint (Optional): {
+     *         version_selector (Optional): {
+     *             version_selection_rules (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     type: String(FixedRatio) (Required)
+     *                     agent_version: String (Optional, Required on create)
+     *                 }
+     *             ]
+     *         }
+     *         protocol_configuration (Optional): {
+     *             activity (Optional): {
+     *                 enable_m365_public_endpoint: Boolean (Optional)
+     *                 access_boundaries (Optional): [
+     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
+     *                 ]
+     *             }
+     *             responses (Optional): {
+     *             }
+     *             a2a (Optional): {
+     *             }
+     *             mcp (Optional): {
+     *             }
+     *             invocations (Optional): {
+     *             }
+     *             invocations_ws (Optional): {
+     *             }
+     *         }
+     *         authorization_schemes (Optional): [
+     *              (Optional){
+     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
+     *             }
+     *         ]
+     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
+     *     }
+     *     digital_worker_type: String(m365) (Optional)
+     *     instance_identity (Optional): (recursive schema, see instance_identity above)
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): (recursive schema, see blueprint_reference above)
+     *     agent_card (Optional): {
+     *         version: String (Optional, Required on create)
+     *         description: String (Optional)
+     *         skills (Optional, Required on create): [
+     *              (Optional, Required on create){
+     *                 id: String (Optional, Required on create)
+     *                 name: String (Optional, Required on create)
+     *                 description: String (Optional)
+     *                 tags (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 examples (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *             }
+     *         ]
+     *     }
+     * }
+     * }
+     * 
+ * + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgents(RequestOptions requestOptions) { + return new PagedIterable<>(() -> listAgentsSinglePage(requestOptions)); } /** @@ -3577,9 +4429,26 @@ public Mono> createAgentVersionWithResponseAsync(String age * } * description: String (Optional) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * blueprint_reference (Optional): { @@ -3606,9 +4475,26 @@ public Mono> createAgentVersionWithResponseAsync(String age * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -3637,22 +4523,22 @@ public Mono> createAgentVersionWithResponseAsync(String age * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response}. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response createAgentVersionWithResponse(String agentName, BinaryData createAgentVersionRequest, - RequestOptions requestOptions) { + public Mono> createAgentVersionWithResponseAsync(String agentName, + BinaryData createAgentVersionRequest, RequestOptions requestOptions) { final String contentType = "application/json"; final String accept = "application/json"; - return service.createAgentVersionSync(this.client.getEndpoint(), agentName, + return FluxUtil.withContext(context -> service.createAgentVersion(this.client.getEndpoint(), agentName, this.client.getServiceVersion().getVersion(), contentType, accept, createAgentVersionRequest, - requestOptions, Context.NONE); + requestOptions, context)); } /** - * Create an agent version from manifest + * Create an agent version * - * Imports the provided manifest to create a new version for the specified agent. + * Creates a new version for the specified agent and returns the created version resource. *

Request Body Schema

* *
@@ -3662,10 +4548,34 @@ public Response createAgentVersionWithResponse(String agentName, Bin
      *         String: String (Required)
      *     }
      *     description: String (Optional)
-     *     manifest_id: String (Required)
-     *     parameter_values (Required): {
-     *         String: BinaryData (Required)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
      *     }
+     *     digital_worker_type: String(m365) (Optional)
+     *     draft: Boolean (Optional)
      * }
      * }
      * 
@@ -3685,9 +4595,26 @@ public Response createAgentVersionWithResponse(String agentName, Bin * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -3710,22 +4637,22 @@ public Response createAgentVersionWithResponse(String agentName, Bin * - Must start and end with alphanumeric characters, * - Can contain hyphens in the middle * - Must not exceed 63 characters. - * @param createAgentVersionFromManifestRequest The createAgentVersionFromManifestRequest parameter. + * @param createAgentVersionRequest The createAgentVersionRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response} on successful completion of {@link Mono}. + * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> createAgentVersionFromManifestWithResponseAsync(String agentName, - BinaryData createAgentVersionFromManifestRequest, RequestOptions requestOptions) { + public Response createAgentVersionWithResponse(String agentName, BinaryData createAgentVersionRequest, + RequestOptions requestOptions) { final String contentType = "application/json"; final String accept = "application/json"; - return FluxUtil.withContext(context -> service.createAgentVersionFromManifest(this.client.getEndpoint(), - agentName, this.client.getServiceVersion().getVersion(), contentType, accept, - createAgentVersionFromManifestRequest, requestOptions, context)); + return service.createAgentVersionSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, createAgentVersionRequest, + requestOptions, Context.NONE); } /** @@ -3764,9 +4691,26 @@ public Mono> createAgentVersionFromManifestWithResponseAsyn * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -3795,20 +4739,116 @@ public Mono> createAgentVersionFromManifestWithResponseAsyn * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response}. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response createAgentVersionFromManifestWithResponse(String agentName, + public Mono> createAgentVersionFromManifestWithResponseAsync(String agentName, BinaryData createAgentVersionFromManifestRequest, RequestOptions requestOptions) { final String contentType = "application/json"; final String accept = "application/json"; - return service.createAgentVersionFromManifestSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, createAgentVersionFromManifestRequest, - requestOptions, Context.NONE); + return FluxUtil.withContext(context -> service.createAgentVersionFromManifest(this.client.getEndpoint(), + agentName, this.client.getServiceVersion().getVersion(), contentType, accept, + createAgentVersionFromManifestRequest, requestOptions, context)); } /** - * Get an agent version + * Create an agent version from manifest + * + * Imports the provided manifest to create a new version for the specified agent. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     description: String (Optional)
+     *     manifest_id: String (Required)
+     *     parameter_values (Required): {
+     *         String: BinaryData (Required)
+     *     }
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     metadata (Required): {
+     *         String: String (Required)
+     *     }
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     version: String (Required)
+     *     description: String (Optional)
+     *     created_at: long (Required)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     draft: Boolean (Optional)
+     *     status: String(creating/active/failed/deleting/deleted) (Optional)
+     *     instance_identity (Optional): {
+     *         principal_id: String (Required)
+     *         client_id: String (Required)
+     *         status: String(active/disabled) (Optional)
+     *     }
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     *     agent_guid: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. + * - Must start and end with alphanumeric characters, + * - Can contain hyphens in the middle + * - Must not exceed 63 characters. + * @param createAgentVersionFromManifestRequest The createAgentVersionFromManifestRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response createAgentVersionFromManifestWithResponse(String agentName, + BinaryData createAgentVersionFromManifestRequest, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.createAgentVersionFromManifestSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, createAgentVersionFromManifestRequest, + requestOptions, Context.NONE); + } + + /** + * Get an agent version * * Retrieves the specified version of an agent by its agent name and version identifier. *

Response Body Schema

@@ -3826,9 +4866,26 @@ public Response createAgentVersionFromManifestWithResponse(String ag * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -3886,9 +4943,26 @@ public Mono> getAgentVersionDetailsWithResponseAsync(String * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -4058,9 +5132,26 @@ public Response internalDeleteAgentVersionWithResponse(String agentN * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -4141,9 +5232,26 @@ private Mono> listAgentVersionsSinglePageAsync(String * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -4217,9 +5325,26 @@ public PagedFlux listAgentVersionsAsync(String agentName, RequestOpt * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -4297,9 +5422,26 @@ private PagedResponse listAgentVersionsSinglePage(String agentName, * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -4417,9 +5559,26 @@ public PagedIterable listAgentVersions(String agentName, RequestOpti * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -4602,9 +5761,26 @@ public Mono> updateAgentDetailsWithResponseAsync(String age * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -4725,9 +5901,26 @@ public Response updateAgentDetailsWithResponse(String agentName, Bin * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -4794,9 +5987,26 @@ public Mono> createAgentVersionFromCodeWithResponseInternal * description: String (Optional) * created_at: long (Required) * definition (Required): { - * kind: String(prompt/hosted/workflow/external) (Required) + * kind: String(prompt/hosted/workflow/external/voice) (Required) * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * draft: Boolean (Optional) @@ -5651,6 +6861,1743 @@ public Response getSessionLogStreamWithResponse(String agentName, St this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); } + /** + * Create an agent telephony binding + * + * Creates a telephony binding for the voice agent named in the path. + *

Header Parameters

+ * + * + * + * + * + *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as + * HTTP-date
+ * You can add these to a request with {@link RequestOptions#addHeader} + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param body The provider-specific binding to create. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response} on successful completion of + * {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> createTelephonyBindingWithResponseAsync(String agentName, BinaryData body, + RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + RequestOptions requestOptionsLocal = requestOptions == null ? new RequestOptions() : requestOptions; + requestOptionsLocal.addRequestCallback(requestLocal -> { + if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-request-id")) == null) { + requestLocal.getHeaders() + .set(HttpHeaderName.fromString("repeatability-request-id"), CoreUtils.randomUuid().toString()); + } + }); + requestOptionsLocal.addRequestCallback(requestLocal -> { + if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-first-sent")) == null) { + requestLocal.getHeaders() + .set(HttpHeaderName.fromString("repeatability-first-sent"), + DateTimeRfc1123.toRfc1123String(OffsetDateTime.now())); + } + }); + return FluxUtil.withContext(context -> service.createTelephonyBinding(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptionsLocal, context)); + } + + /** + * Create an agent telephony binding + * + * Creates a telephony binding for the voice agent named in the path. + *

Header Parameters

+ * + * + * + * + * + *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as + * HTTP-date
+ * You can add these to a request with {@link RequestOptions#addHeader} + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param body The provider-specific binding to create. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response createTelephonyBindingWithResponse(String agentName, BinaryData body, + RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + RequestOptions requestOptionsLocal = requestOptions == null ? new RequestOptions() : requestOptions; + requestOptionsLocal.addRequestCallback(requestLocal -> { + if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-request-id")) == null) { + requestLocal.getHeaders() + .set(HttpHeaderName.fromString("repeatability-request-id"), CoreUtils.randomUuid().toString()); + } + }); + requestOptionsLocal.addRequestCallback(requestLocal -> { + if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-first-sent")) == null) { + requestLocal.getHeaders() + .set(HttpHeaderName.fromString("repeatability-first-sent"), + DateTimeRfc1123.toRfc1123String(OffsetDateTime.now())); + } + }); + return service.createTelephonyBindingSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptionsLocal, Context.NONE); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", + * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose bindings are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion + * of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> listTelephonyBindingsSinglePageAsync(String agentName, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.listTelephonyBindings(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) + .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null)); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", + * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose bindings are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyBindingsAsync(String agentName, RequestOptions requestOptions) { + return new PagedFlux<>(() -> listTelephonyBindingsSinglePageAsync(agentName, requestOptions)); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", + * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose bindings are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listTelephonyBindingsSinglePage(String agentName, RequestOptions requestOptions) { + final String accept = "application/json"; + Response res = service.listTelephonyBindingsSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", + * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose bindings are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyBindings(String agentName, RequestOptions requestOptions) { + return new PagedIterable<>(() -> listTelephonyBindingsSinglePage(agentName, requestOptions)); + } + + /** + * Get an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path along with {@link Response} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyBindingWithResponseAsync(String agentName, String bindingId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.getTelephonyBinding(this.client.getEndpoint(), agentName, + bindingId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyBindingWithResponse(String agentName, String bindingId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getTelephonyBindingSync(this.client.getEndpoint(), agentName, bindingId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Update an agent telephony binding + * + * Updates a telephony binding owned by the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     status: String(active/suspended) (Optional)
+     *     label: String (Optional)
+     *     connection: String (Optional)
+     *     phone_number: String (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param body The binding properties to update. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response} on successful completion of + * {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> updateTelephonyBindingWithResponseAsync(String agentName, String bindingId, + String ifMatch, BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/merge-patch+json"; + final String accept = "application/json"; + return FluxUtil.withContext( + context -> service.updateTelephonyBinding(this.client.getEndpoint(), agentName, bindingId, contentType, + ifMatch, this.client.getServiceVersion().getVersion(), accept, body, requestOptions, context)); + } + + /** + * Update an agent telephony binding + * + * Updates a telephony binding owned by the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     status: String(active/suspended) (Optional)
+     *     label: String (Optional)
+     *     connection: String (Optional)
+     *     phone_number: String (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param body The binding properties to update. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response updateTelephonyBindingWithResponse(String agentName, String bindingId, String ifMatch, + BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/merge-patch+json"; + final String accept = "application/json"; + return service.updateTelephonyBindingSync(this.client.getEndpoint(), agentName, bindingId, contentType, ifMatch, + this.client.getServiceVersion().getVersion(), accept, body, requestOptions, Context.NONE); + } + + /** + * Delete an agent telephony binding + * + * Deletes a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> deleteTelephonyBindingWithResponseAsync(String agentName, String bindingId, + String ifMatch, RequestOptions requestOptions) { + return FluxUtil.withContext(context -> service.deleteTelephonyBinding(this.client.getEndpoint(), agentName, + bindingId, ifMatch, this.client.getServiceVersion().getVersion(), requestOptions, context)); + } + + /** + * Delete an agent telephony binding + * + * Deletes a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response deleteTelephonyBindingWithResponse(String agentName, String bindingId, String ifMatch, + RequestOptions requestOptions) { + return service.deleteTelephonyBindingSync(this.client.getEndpoint(), agentName, bindingId, ifMatch, + this.client.getServiceVersion().getVersion(), requestOptions, Context.NONE); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: + * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix + * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this + * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose calls are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion + * of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> listTelephonyCallsSinglePageAsync(String agentName, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.listTelephonyCalls(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) + .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null)); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: + * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix + * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this + * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose calls are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyCallsAsync(String agentName, RequestOptions requestOptions) { + return new PagedFlux<>(() -> listTelephonyCallsSinglePageAsync(agentName, requestOptions)); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: + * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix + * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this + * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose calls are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listTelephonyCallsSinglePage(String agentName, RequestOptions requestOptions) { + final String accept = "application/json"; + Response res = service.listTelephonyCallsSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: + * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix + * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this + * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose calls are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyCalls(String agentName, RequestOptions requestOptions) { + return new PagedIterable<>(() -> listTelephonyCallsSinglePage(agentName, requestOptions)); + } + + /** + * Get an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the call record. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path along with {@link Response} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyCallWithResponseAsync(String agentName, String callId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.getTelephonyCall(this.client.getEndpoint(), agentName, callId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the call record. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyCallWithResponse(String agentName, String callId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getTelephonyCallSync(this.client.getEndpoint(), agentName, callId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Transfer an active agent telephony call + * + * Transfers an active inbound call to a configured target for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     target: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param transferTelephonyCallRequest The transferTelephonyCallRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> transferTelephonyCallWithResponseAsync(String agentName, String callId, + BinaryData transferTelephonyCallRequest, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.transferTelephonyCall(this.client.getEndpoint(), agentName, + callId, this.client.getServiceVersion().getVersion(), contentType, accept, transferTelephonyCallRequest, + requestOptions, context)); + } + + /** + * Transfer an active agent telephony call + * + * Transfers an active inbound call to a configured target for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     target: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param transferTelephonyCallRequest The transferTelephonyCallRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response transferTelephonyCallWithResponse(String agentName, String callId, + BinaryData transferTelephonyCallRequest, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.transferTelephonyCallSync(this.client.getEndpoint(), agentName, callId, + this.client.getServiceVersion().getVersion(), contentType, accept, transferTelephonyCallRequest, + requestOptions, Context.NONE); + } + + /** + * End an active agent telephony call + * + * Ends an active inbound call owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> endTelephonyCallWithResponseAsync(String agentName, String callId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.endTelephonyCall(this.client.getEndpoint(), agentName, callId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * End an active agent telephony call + * + * Ends an active inbound call owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response endTelephonyCallWithResponse(String agentName, String callId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.endTelephonyCallSync(this.client.getEndpoint(), agentName, callId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Get agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path along with {@link Response} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyTransferTargetsWithResponseAsync(String agentName, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.getTelephonyTransferTargets(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyTransferTargetsWithResponse(String agentName, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getTelephonyTransferTargetsSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Replace agent telephony transfer targets + * + * Replaces all transfer targets configured for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are replaced. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param replaceTelephonyTransferTargetsRequest The replaceTelephonyTransferTargetsRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the telephony transfer targets configured for one voice agent along with {@link Response} on successful + * completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> replaceTelephonyTransferTargetsWithResponseAsync(String agentName, String ifMatch, + BinaryData replaceTelephonyTransferTargetsRequest, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.replaceTelephonyTransferTargets(this.client.getEndpoint(), + agentName, ifMatch, this.client.getServiceVersion().getVersion(), contentType, accept, + replaceTelephonyTransferTargetsRequest, requestOptions, context)); + } + + /** + * Replace agent telephony transfer targets + * + * Replaces all transfer targets configured for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are replaced. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param replaceTelephonyTransferTargetsRequest The replaceTelephonyTransferTargetsRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the telephony transfer targets configured for one voice agent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response replaceTelephonyTransferTargetsWithResponse(String agentName, String ifMatch, + BinaryData replaceTelephonyTransferTargetsRequest, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.replaceTelephonyTransferTargetsSync(this.client.getEndpoint(), agentName, ifMatch, + this.client.getServiceVersion().getVersion(), contentType, accept, replaceTelephonyTransferTargetsRequest, + requestOptions, Context.NONE); + } + /** * Upload a session file * diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/BetaAgentEndpointConversationsImpl.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/BetaAgentEndpointConversationsImpl.java new file mode 100644 index 0000000000000..7d9001b57fce5 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/BetaAgentEndpointConversationsImpl.java @@ -0,0 +1,2649 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.implementation; + +import com.azure.ai.agents.AgentsServiceVersion; +import com.azure.core.annotation.Delete; +import com.azure.core.annotation.ExpectedResponses; +import com.azure.core.annotation.Get; +import com.azure.core.annotation.HeaderParam; +import com.azure.core.annotation.Host; +import com.azure.core.annotation.HostParam; +import com.azure.core.annotation.PathParam; +import com.azure.core.annotation.QueryParam; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceInterface; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.annotation.UnexpectedResponseExceptionType; +import com.azure.core.exception.ClientAuthenticationException; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.rest.PagedFlux; +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.PagedResponse; +import com.azure.core.http.rest.PagedResponseBase; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.RestProxy; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Context; +import com.azure.core.util.FluxUtil; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import reactor.core.publisher.Mono; + +/** + * An instance of this class provides access to all the operations defined in BetaAgentEndpointConversations. + */ +public final class BetaAgentEndpointConversationsImpl { + /** + * The proxy service used to perform REST calls. + */ + private final BetaAgentEndpointConversationsService service; + + /** + * The service client containing this operation class. + */ + private final AgentsClientImpl client; + + /** + * Initializes an instance of BetaAgentEndpointConversationsImpl. + * + * @param client the instance of the service client containing this operation class. + */ + BetaAgentEndpointConversationsImpl(AgentsClientImpl client) { + this.service = RestProxy.create(BetaAgentEndpointConversationsService.class, client.getHttpPipeline(), + client.getSerializerAdapter()); + this.client = client; + } + + /** + * Gets Service version. + * + * @return the serviceVersion value. + */ + public AgentsServiceVersion getServiceVersion() { + return client.getServiceVersion(); + } + + /** + * The interface defining all the services for AgentsClientBetaAgentEndpointConversations to be used by the proxy + * service to perform REST calls. + */ + @Host("{endpoint}") + @ServiceInterface(name = "AgentsClientBetaAgentEndpointConversations") + public interface BetaAgentEndpointConversationsService { + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> listAgentConversations(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response listAgentConversationsSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getAgentConversation(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getAgentConversationSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Delete("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}") + @ExpectedResponses({ 204 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> deleteAgentConversation(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @QueryParam("api-version") String apiVersion, RequestOptions requestOptions, Context context); + + @Delete("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}") + @ExpectedResponses({ 204 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response deleteAgentConversationSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @QueryParam("api-version") String apiVersion, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/responses") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> listAgentConversationResponses(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/responses") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response listAgentConversationResponsesSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/responses/{response_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getAgentConversationResponse(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @PathParam("response_id") String responseId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/responses/{response_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getAgentConversationResponseSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @PathParam("response_id") String responseId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/responses/{response_id}/items") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> listAgentConversationResponseItems(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @PathParam("response_id") String responseId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/responses/{response_id}/items") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response listAgentConversationResponseItemsSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @PathParam("response_id") String responseId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/items") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> listAgentConversationItems(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/items") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response listAgentConversationItemsSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/items/{item_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getAgentConversationItem(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @PathParam("item_id") String itemId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/items/{item_id}") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getAgentConversationItemSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @PathParam("item_id") String itemId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/items/{item_id}/audio") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getAgentConversationItemAudio(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @PathParam("item_id") String itemId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/items/{item_id}/audio") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getAgentConversationItemAudioSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @PathParam("item_id") String itemId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/items/{item_id}/audio/content") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getAgentConversationItemAudioContent(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @PathParam("item_id") String itemId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/items/{item_id}/audio/content") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getAgentConversationItemAudioContentSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @PathParam("item_id") String itemId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/items/{item_id}/audio/generated") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getAgentConversationItemGeneratedAudio(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @PathParam("item_id") String itemId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/items/{item_id}/audio/generated") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getAgentConversationItemGeneratedAudioSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @PathParam("item_id") String itemId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/items/{item_id}/audio/generated/content") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getAgentConversationItemGeneratedAudioContent(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @PathParam("item_id") String itemId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/items/{item_id}/audio/generated/content") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getAgentConversationItemGeneratedAudioContentSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @PathParam("item_id") String itemId, @QueryParam("api-version") String apiVersion, + @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/audio") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getAgentConversationAudio(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/audio") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getAgentConversationAudioSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/audio/content") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getAgentConversationAudioContent(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + + @Get("/agents/{agent_name}/endpoint/protocols/voice/conversations/{conversation_id}/audio/content") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response getAgentConversationAudioContentSync(@HostParam("endpoint") String endpoint, + @PathParam("agent_name") String agentName, @PathParam("conversation_id") String conversationId, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + RequestOptions requestOptions, Context context); + } + + /** + * List voice agent conversations + * + * Returns the conversations persisted for the specified voice agent endpoint. + * Conversations are present when the session's effective `store` setting is `true`, whether inherited from the + * agent definition or enabled by the WebSocket session override. + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     status: String(in_progress/completed/failed) (Required)
+     *     created_at: long (Required)
+     *     completed_at: Long (Optional)
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     last_error (Optional): {
+     *         code: String (Required)
+     *         message: String (Required)
+     *         param: String (Optional)
+     *         type: String (Optional)
+     *         details (Optional): [
+     *             (recursive schema, see above)
+     *         ]
+     *         additionalInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *         debugInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *     }
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion + * of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> listAgentConversationsSinglePageAsync(String agentName, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.listAgentConversations(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) + .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null)); + } + + /** + * List voice agent conversations + * + * Returns the conversations persisted for the specified voice agent endpoint. + * Conversations are present when the session's effective `store` setting is `true`, whether inherited from the + * agent definition or enabled by the WebSocket session override. + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     status: String(in_progress/completed/failed) (Required)
+     *     created_at: long (Required)
+     *     completed_at: Long (Optional)
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     last_error (Optional): {
+     *         code: String (Required)
+     *         message: String (Required)
+     *         param: String (Optional)
+     *         type: String (Optional)
+     *         details (Optional): [
+     *             (recursive schema, see above)
+     *         ]
+     *         additionalInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *         debugInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *     }
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversationsAsync(String agentName, RequestOptions requestOptions) { + return new PagedFlux<>(() -> listAgentConversationsSinglePageAsync(agentName, requestOptions)); + } + + /** + * List voice agent conversations + * + * Returns the conversations persisted for the specified voice agent endpoint. + * Conversations are present when the session's effective `store` setting is `true`, whether inherited from the + * agent definition or enabled by the WebSocket session override. + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     status: String(in_progress/completed/failed) (Required)
+     *     created_at: long (Required)
+     *     completed_at: Long (Optional)
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     last_error (Optional): {
+     *         code: String (Required)
+     *         message: String (Required)
+     *         param: String (Optional)
+     *         type: String (Optional)
+     *         details (Optional): [
+     *             (recursive schema, see above)
+     *         ]
+     *         additionalInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *         debugInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *     }
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listAgentConversationsSinglePage(String agentName, + RequestOptions requestOptions) { + final String accept = "application/json"; + Response res = service.listAgentConversationsSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null); + } + + /** + * List voice agent conversations + * + * Returns the conversations persisted for the specified voice agent endpoint. + * Conversations are present when the session's effective `store` setting is `true`, whether inherited from the + * agent definition or enabled by the WebSocket session override. + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     status: String(in_progress/completed/failed) (Required)
+     *     created_at: long (Required)
+     *     completed_at: Long (Optional)
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     last_error (Optional): {
+     *         code: String (Required)
+     *         message: String (Required)
+     *         param: String (Optional)
+     *         type: String (Optional)
+     *         details (Optional): [
+     *             (recursive schema, see above)
+     *         ]
+     *         additionalInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *         debugInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *     }
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversations(String agentName, RequestOptions requestOptions) { + return new PagedIterable<>(() -> listAgentConversationsSinglePage(agentName, requestOptions)); + } + + /** + * Get a voice agent conversation + * + * Retrieves a single conversation recorded for the specified voice agent endpoint by its id. + * Returns `404` when the conversation was not persisted (`store = false`) or does not exist. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     status: String(in_progress/completed/failed) (Required)
+     *     created_at: long (Required)
+     *     completed_at: Long (Optional)
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     last_error (Optional): {
+     *         code: String (Required)
+     *         message: String (Required)
+     *         param: String (Optional)
+     *         type: String (Optional)
+     *         details (Optional): [
+     *             (recursive schema, see above)
+     *         ]
+     *         additionalInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *         debugInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *     }
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation to retrieve. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation + * + * Retrieves a single conversation recorded for the specified voice agent endpoint by its id. + * Returns `404` when the conversation was not persisted (`store = false`) or does not exist along with + * {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationWithResponseAsync(String agentName, String conversationId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.getAgentConversation(this.client.getEndpoint(), agentName, + conversationId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get a voice agent conversation + * + * Retrieves a single conversation recorded for the specified voice agent endpoint by its id. + * Returns `404` when the conversation was not persisted (`store = false`) or does not exist. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String (Required)
+     *     status: String(in_progress/completed/failed) (Required)
+     *     created_at: long (Required)
+     *     completed_at: Long (Optional)
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     last_error (Optional): {
+     *         code: String (Required)
+     *         message: String (Required)
+     *         param: String (Optional)
+     *         type: String (Optional)
+     *         details (Optional): [
+     *             (recursive schema, see above)
+     *         ]
+     *         additionalInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *         debugInfo (Optional): {
+     *             String: BinaryData (Required)
+     *         }
+     *     }
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation to retrieve. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation + * + * Retrieves a single conversation recorded for the specified voice agent endpoint by its id. + * Returns `404` when the conversation was not persisted (`store = false`) or does not exist along with + * {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationWithResponse(String agentName, String conversationId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getAgentConversationSync(this.client.getEndpoint(), agentName, conversationId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Delete a voice agent conversation + * + * Deletes a conversation and all of its stored data — responses, items, and any audio (cascade). This is + * the customer's explicit data-deletion control for voice conversations. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation to delete. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> deleteAgentConversationWithResponseAsync(String agentName, String conversationId, + RequestOptions requestOptions) { + return FluxUtil.withContext(context -> service.deleteAgentConversation(this.client.getEndpoint(), agentName, + conversationId, this.client.getServiceVersion().getVersion(), requestOptions, context)); + } + + /** + * Delete a voice agent conversation + * + * Deletes a conversation and all of its stored data — responses, items, and any audio (cascade). This is + * the customer's explicit data-deletion control for voice conversations. + * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation to delete. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response deleteAgentConversationWithResponse(String agentName, String conversationId, + RequestOptions requestOptions) { + return service.deleteAgentConversationSync(this.client.getEndpoint(), agentName, conversationId, + this.client.getServiceVersion().getVersion(), requestOptions, Context.NONE); + } + + /** + * List responses in a voice agent conversation + * + * Returns a paged collection of the responses (model inference turns) recorded for the specified + * conversation. The per-response `output` projection may be omitted here; use the response-items route + * for the canonical paged output. Returns `404` when the conversation was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String(realtime.response) (Optional)
+     *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
+     *     status_details (Optional): {
+     *         type: String(completed/cancelled/failed/incomplete) (Optional)
+     *         reason: String(turn_detected/client_cancelled/max_output_tokens/content_filter) (Optional)
+     *         error (Optional): {
+     *             type: String (Optional)
+     *             code: String (Optional)
+     *         }
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     conversation_id: String (Required)
+     *     output_modalities (Optional): [
+     *         String(text/audio) (Optional)
+     *     ]
+     *     max_output_tokens: BinaryData (Optional)
+     *     output (Optional): [
+     *          (Optional){
+     *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     *         }
+     *     ]
+     *     audio (Optional): {
+     *         output (Optional): {
+     *             voice: String (Optional)
+     *             voice_type: String(openai/azure-standard/azure-custom/azure-personal/avatar-voice-sync/azure-realtime-native) (Optional)
+     *             voice_locale: String (Optional)
+     *             format (Optional): {
+     *                 type: String(audio/pcm/audio/pcmu/audio/pcma) (Required)
+     *             }
+     *         }
+     *     }
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     temperature: Double (Optional)
+     *     created_at: Long (Optional)
+     *     completed_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose responses are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion + * of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> listAgentConversationResponsesSinglePageAsync(String agentName, + String conversationId, RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.listAgentConversationResponses(this.client.getEndpoint(), agentName, + conversationId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) + .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null)); + } + + /** + * List responses in a voice agent conversation + * + * Returns a paged collection of the responses (model inference turns) recorded for the specified + * conversation. The per-response `output` projection may be omitted here; use the response-items route + * for the canonical paged output. Returns `404` when the conversation was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String(realtime.response) (Optional)
+     *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
+     *     status_details (Optional): {
+     *         type: String(completed/cancelled/failed/incomplete) (Optional)
+     *         reason: String(turn_detected/client_cancelled/max_output_tokens/content_filter) (Optional)
+     *         error (Optional): {
+     *             type: String (Optional)
+     *             code: String (Optional)
+     *         }
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     conversation_id: String (Required)
+     *     output_modalities (Optional): [
+     *         String(text/audio) (Optional)
+     *     ]
+     *     max_output_tokens: BinaryData (Optional)
+     *     output (Optional): [
+     *          (Optional){
+     *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     *         }
+     *     ]
+     *     audio (Optional): {
+     *         output (Optional): {
+     *             voice: String (Optional)
+     *             voice_type: String(openai/azure-standard/azure-custom/azure-personal/avatar-voice-sync/azure-realtime-native) (Optional)
+     *             voice_locale: String (Optional)
+     *             format (Optional): {
+     *                 type: String(audio/pcm/audio/pcmu/audio/pcma) (Required)
+     *             }
+     *         }
+     *     }
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     temperature: Double (Optional)
+     *     created_at: Long (Optional)
+     *     completed_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose responses are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversationResponsesAsync(String agentName, String conversationId, + RequestOptions requestOptions) { + return new PagedFlux<>( + () -> listAgentConversationResponsesSinglePageAsync(agentName, conversationId, requestOptions)); + } + + /** + * List responses in a voice agent conversation + * + * Returns a paged collection of the responses (model inference turns) recorded for the specified + * conversation. The per-response `output` projection may be omitted here; use the response-items route + * for the canonical paged output. Returns `404` when the conversation was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String(realtime.response) (Optional)
+     *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
+     *     status_details (Optional): {
+     *         type: String(completed/cancelled/failed/incomplete) (Optional)
+     *         reason: String(turn_detected/client_cancelled/max_output_tokens/content_filter) (Optional)
+     *         error (Optional): {
+     *             type: String (Optional)
+     *             code: String (Optional)
+     *         }
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     conversation_id: String (Required)
+     *     output_modalities (Optional): [
+     *         String(text/audio) (Optional)
+     *     ]
+     *     max_output_tokens: BinaryData (Optional)
+     *     output (Optional): [
+     *          (Optional){
+     *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     *         }
+     *     ]
+     *     audio (Optional): {
+     *         output (Optional): {
+     *             voice: String (Optional)
+     *             voice_type: String(openai/azure-standard/azure-custom/azure-personal/avatar-voice-sync/azure-realtime-native) (Optional)
+     *             voice_locale: String (Optional)
+     *             format (Optional): {
+     *                 type: String(audio/pcm/audio/pcmu/audio/pcma) (Required)
+     *             }
+     *         }
+     *     }
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     temperature: Double (Optional)
+     *     created_at: Long (Optional)
+     *     completed_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose responses are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listAgentConversationResponsesSinglePage(String agentName, String conversationId, + RequestOptions requestOptions) { + final String accept = "application/json"; + Response res = service.listAgentConversationResponsesSync(this.client.getEndpoint(), agentName, + conversationId, this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null); + } + + /** + * List responses in a voice agent conversation + * + * Returns a paged collection of the responses (model inference turns) recorded for the specified + * conversation. The per-response `output` projection may be omitted here; use the response-items route + * for the canonical paged output. Returns `404` when the conversation was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String(realtime.response) (Optional)
+     *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
+     *     status_details (Optional): {
+     *         type: String(completed/cancelled/failed/incomplete) (Optional)
+     *         reason: String(turn_detected/client_cancelled/max_output_tokens/content_filter) (Optional)
+     *         error (Optional): {
+     *             type: String (Optional)
+     *             code: String (Optional)
+     *         }
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     conversation_id: String (Required)
+     *     output_modalities (Optional): [
+     *         String(text/audio) (Optional)
+     *     ]
+     *     max_output_tokens: BinaryData (Optional)
+     *     output (Optional): [
+     *          (Optional){
+     *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     *         }
+     *     ]
+     *     audio (Optional): {
+     *         output (Optional): {
+     *             voice: String (Optional)
+     *             voice_type: String(openai/azure-standard/azure-custom/azure-personal/avatar-voice-sync/azure-realtime-native) (Optional)
+     *             voice_locale: String (Optional)
+     *             format (Optional): {
+     *                 type: String(audio/pcm/audio/pcmu/audio/pcma) (Required)
+     *             }
+     *         }
+     *     }
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     temperature: Double (Optional)
+     *     created_at: Long (Optional)
+     *     completed_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose responses are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversationResponses(String agentName, String conversationId, + RequestOptions requestOptions) { + return new PagedIterable<>( + () -> listAgentConversationResponsesSinglePage(agentName, conversationId, requestOptions)); + } + + /** + * Get a voice agent conversation response + * + * Retrieves a single response from the specified conversation by its id, including its `output` items, + * `usage`, and status. Returns `404` when the conversation or response was not persisted (`store = false`). + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String(realtime.response) (Optional)
+     *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
+     *     status_details (Optional): {
+     *         type: String(completed/cancelled/failed/incomplete) (Optional)
+     *         reason: String(turn_detected/client_cancelled/max_output_tokens/content_filter) (Optional)
+     *         error (Optional): {
+     *             type: String (Optional)
+     *             code: String (Optional)
+     *         }
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     conversation_id: String (Required)
+     *     output_modalities (Optional): [
+     *         String(text/audio) (Optional)
+     *     ]
+     *     max_output_tokens: BinaryData (Optional)
+     *     output (Optional): [
+     *          (Optional){
+     *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     *         }
+     *     ]
+     *     audio (Optional): {
+     *         output (Optional): {
+     *             voice: String (Optional)
+     *             voice_type: String(openai/azure-standard/azure-custom/azure-personal/avatar-voice-sync/azure-realtime-native) (Optional)
+     *             voice_locale: String (Optional)
+     *             format (Optional): {
+     *                 type: String(audio/pcm/audio/pcmu/audio/pcma) (Required)
+     *             }
+     *         }
+     *     }
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     temperature: Double (Optional)
+     *     created_at: Long (Optional)
+     *     completed_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response to retrieve. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation response + * + * Retrieves a single response from the specified conversation by its id, including its `output` items, + * `usage`, and status along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationResponseWithResponseAsync(String agentName, + String conversationId, String responseId, RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext( + context -> service.getAgentConversationResponse(this.client.getEndpoint(), agentName, conversationId, + responseId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get a voice agent conversation response + * + * Retrieves a single response from the specified conversation by its id, including its `output` items, + * `usage`, and status. Returns `404` when the conversation or response was not persisted (`store = false`). + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     object: String(realtime.response) (Optional)
+     *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
+     *     status_details (Optional): {
+     *         type: String(completed/cancelled/failed/incomplete) (Optional)
+     *         reason: String(turn_detected/client_cancelled/max_output_tokens/content_filter) (Optional)
+     *         error (Optional): {
+     *             type: String (Optional)
+     *             code: String (Optional)
+     *         }
+     *     }
+     *     usage (Optional): {
+     *         total_tokens: Long (Optional)
+     *         input_tokens: Long (Optional)
+     *         output_tokens: Long (Optional)
+     *         input_token_details (Optional): {
+     *             cached_tokens: Long (Optional)
+     *             text_tokens: Long (Optional)
+     *             image_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *             cached_tokens_details (Optional): {
+     *                 text_tokens: Long (Optional)
+     *                 image_tokens: Long (Optional)
+     *                 audio_tokens: Long (Optional)
+     *             }
+     *         }
+     *         output_token_details (Optional): {
+     *             text_tokens: Long (Optional)
+     *             audio_tokens: Long (Optional)
+     *         }
+     *     }
+     *     conversation_id: String (Required)
+     *     output_modalities (Optional): [
+     *         String(text/audio) (Optional)
+     *     ]
+     *     max_output_tokens: BinaryData (Optional)
+     *     output (Optional): [
+     *          (Optional){
+     *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     *         }
+     *     ]
+     *     audio (Optional): {
+     *         output (Optional): {
+     *             voice: String (Optional)
+     *             voice_type: String(openai/azure-standard/azure-custom/azure-personal/avatar-voice-sync/azure-realtime-native) (Optional)
+     *             voice_locale: String (Optional)
+     *             format (Optional): {
+     *                 type: String(audio/pcm/audio/pcmu/audio/pcma) (Required)
+     *             }
+     *         }
+     *     }
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     temperature: Double (Optional)
+     *     created_at: Long (Optional)
+     *     completed_at: Long (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response to retrieve. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation response + * + * Retrieves a single response from the specified conversation by its id, including its `output` items, + * `usage`, and status along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationResponseWithResponse(String agentName, String conversationId, + String responseId, RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getAgentConversationResponseSync(this.client.getEndpoint(), agentName, conversationId, + responseId, this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * List items produced by a voice agent conversation response + * + * Returns a paged collection of the output items produced by a specific response (the response's output + * projection). For the complete ordered conversation history — including user input and client-created + * tool outputs — use the conversation items route instead. Returns `404` when the conversation or + * response was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response whose output items are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion + * of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> listAgentConversationResponseItemsSinglePageAsync(String agentName, + String conversationId, String responseId, RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.listAgentConversationResponseItems(this.client.getEndpoint(), agentName, + conversationId, responseId, this.client.getServiceVersion().getVersion(), accept, requestOptions, + context)) + .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null)); + } + + /** + * List items produced by a voice agent conversation response + * + * Returns a paged collection of the output items produced by a specific response (the response's output + * projection). For the complete ordered conversation history — including user input and client-created + * tool outputs — use the conversation items route instead. Returns `404` when the conversation or + * response was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response whose output items are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversationResponseItemsAsync(String agentName, String conversationId, + String responseId, RequestOptions requestOptions) { + return new PagedFlux<>(() -> listAgentConversationResponseItemsSinglePageAsync(agentName, conversationId, + responseId, requestOptions)); + } + + /** + * List items produced by a voice agent conversation response + * + * Returns a paged collection of the output items produced by a specific response (the response's output + * projection). For the complete ordered conversation history — including user input and client-created + * tool outputs — use the conversation items route instead. Returns `404` when the conversation or + * response was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response whose output items are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listAgentConversationResponseItemsSinglePage(String agentName, + String conversationId, String responseId, RequestOptions requestOptions) { + final String accept = "application/json"; + Response res + = service.listAgentConversationResponseItemsSync(this.client.getEndpoint(), agentName, conversationId, + responseId, this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null); + } + + /** + * List items produced by a voice agent conversation response + * + * Returns a paged collection of the output items produced by a specific response (the response's output + * projection). For the complete ordered conversation history — including user input and client-created + * tool outputs — use the conversation items route instead. Returns `404` when the conversation or + * response was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the response. + * @param responseId The id of the response whose output items are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversationResponseItems(String agentName, String conversationId, + String responseId, RequestOptions requestOptions) { + return new PagedIterable<>( + () -> listAgentConversationResponseItemsSinglePage(agentName, conversationId, responseId, requestOptions)); + } + + /** + * List items in a voice agent conversation + * + * Returns a paged collection of items — the complete ordered conversation history, including user input, + * assistant output, and client-created tool outputs (transcripts + tool events). Returns `404` when the + * conversation was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose items are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion + * of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> listAgentConversationItemsSinglePageAsync(String agentName, + String conversationId, RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.listAgentConversationItems(this.client.getEndpoint(), agentName, + conversationId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) + .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null)); + } + + /** + * List items in a voice agent conversation + * + * Returns a paged collection of items — the complete ordered conversation history, including user input, + * assistant output, and client-created tool outputs (transcripts + tool events). Returns `404` when the + * conversation was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose items are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentConversationItemsAsync(String agentName, String conversationId, + RequestOptions requestOptions) { + return new PagedFlux<>( + () -> listAgentConversationItemsSinglePageAsync(agentName, conversationId, requestOptions)); + } + + /** + * List items in a voice agent conversation + * + * Returns a paged collection of items — the complete ordered conversation history, including user input, + * assistant output, and client-created tool outputs (transcripts + tool events). Returns `404` when the + * conversation was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose items are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listAgentConversationItemsSinglePage(String agentName, String conversationId, + RequestOptions requestOptions) { + final String accept = "application/json"; + Response res = service.listAgentConversationItemsSync(this.client.getEndpoint(), agentName, + conversationId, this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null); + } + + /** + * List items in a voice agent conversation + * + * Returns a paged collection of items — the complete ordered conversation history, including user input, + * assistant output, and client-created tool outputs (transcripts + tool events). Returns `404` when the + * conversation was not persisted (`store = false`). + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose items are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentConversationItems(String agentName, String conversationId, + RequestOptions requestOptions) { + return new PagedIterable<>( + () -> listAgentConversationItemsSinglePage(agentName, conversationId, requestOptions)); + } + + /** + * Get a voice agent conversation item + * + * Retrieves a single item from the specified conversation by its id, including its transcript. An + * `input_audio`/`output_audio` content part indicates that audio is available for the item; the canonical per-item + * audio metadata is the `/items/{item_id}/audio` resource, and the bytes are streamed by + * `/items/{item_id}/audio/content`. Returns `404` when the conversation or item was not persisted + * (`store = false`). + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item to retrieve. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation item + * + * Retrieves a single item from the specified conversation by its id, including its transcript along with + * {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationItemWithResponseAsync(String agentName, String conversationId, + String itemId, RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.getAgentConversationItem(this.client.getEndpoint(), agentName, + conversationId, itemId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get a voice agent conversation item + * + * Retrieves a single item from the specified conversation by its id, including its transcript. An + * `input_audio`/`output_audio` content part indicates that audio is available for the item; the canonical per-item + * audio metadata is the `/items/{item_id}/audio` resource, and the bytes are streamed by + * `/items/{item_id}/audio/content`. Returns `404` when the conversation or item was not persisted + * (`store = false`). + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item to retrieve. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation item + * + * Retrieves a single item from the specified conversation by its id, including its transcript along with + * {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationItemWithResponse(String agentName, String conversationId, + String itemId, RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getAgentConversationItemSync(this.client.getEndpoint(), agentName, conversationId, itemId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Get a voice agent conversation item's audio metadata + * + * Returns metadata for a single conversation item's audio segment, including the common playback facts + * (role, format/codec, sample rate, channels, offset, duration) for both Foundry-managed and + * bring-your-own-storage (BYOS) recordings; for BYOS the response additionally includes `blob_uri`, the URI + * of the recording in the customer's own storage (no SAS) that the customer downloads with their own credentials. + * Requires the conversation to have persisted audio (`store = true`); returns `404` when the conversation, + * item, or its audio was not persisted. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     conversation_id: String (Required)
+     *     item_id: String (Required)
+     *     role: String(user/agent) (Optional)
+     *     format: String(wav) (Optional)
+     *     codec: String(pcm16/pcmu/pcma) (Optional)
+     *     sample_rate: Integer (Optional)
+     *     channels: Integer (Optional)
+     *     start_offset_ms: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     blob_uri: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose audio metadata is retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation item's audio metadata + * + * Returns metadata for a single conversation item's audio segment, including the common playback facts + * (role, format/codec, sample rate, channels, offset, duration) for both Foundry-managed and + * bring-your-own-storage (BYOS) recordings; for BYOS the response additionally includes `blob_uri`, the URI + * of the recording in the customer's own storage (no SAS) that the customer downloads with their own credentials. + * Requires the conversation to have persisted audio (`store = true`); returns `404` when the conversation, + * item, or its audio was not persisted along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationItemAudioWithResponseAsync(String agentName, + String conversationId, String itemId, RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.getAgentConversationItemAudio(this.client.getEndpoint(), agentName, + conversationId, itemId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get a voice agent conversation item's audio metadata + * + * Returns metadata for a single conversation item's audio segment, including the common playback facts + * (role, format/codec, sample rate, channels, offset, duration) for both Foundry-managed and + * bring-your-own-storage (BYOS) recordings; for BYOS the response additionally includes `blob_uri`, the URI + * of the recording in the customer's own storage (no SAS) that the customer downloads with their own credentials. + * Requires the conversation to have persisted audio (`store = true`); returns `404` when the conversation, + * item, or its audio was not persisted. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     conversation_id: String (Required)
+     *     item_id: String (Required)
+     *     role: String(user/agent) (Optional)
+     *     format: String(wav) (Optional)
+     *     codec: String(pcm16/pcmu/pcma) (Optional)
+     *     sample_rate: Integer (Optional)
+     *     channels: Integer (Optional)
+     *     start_offset_ms: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     blob_uri: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose audio metadata is retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation item's audio metadata + * + * Returns metadata for a single conversation item's audio segment, including the common playback facts + * (role, format/codec, sample rate, channels, offset, duration) for both Foundry-managed and + * bring-your-own-storage (BYOS) recordings; for BYOS the response additionally includes `blob_uri`, the URI + * of the recording in the customer's own storage (no SAS) that the customer downloads with their own credentials. + * Requires the conversation to have persisted audio (`store = true`); returns `404` when the conversation, + * item, or its audio was not persisted along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationItemAudioWithResponse(String agentName, String conversationId, + String itemId, RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getAgentConversationItemAudioSync(this.client.getEndpoint(), agentName, conversationId, itemId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Stream a voice agent conversation item's audio + * + * Streams a single conversation item's audio as a WAV (`audio/wav`) byte stream through the service (no SAS + * URL). This route serves Foundry-managed storage only. For bring-your-own-storage (BYOS) recordings the + * bytes are not proxied — the caller must download directly from customer storage using the `blob_uri` + * returned by the item's `/audio` metadata route — so this route returns `409 Conflict` for BYOS recordings. + * Returns `404` when the conversation, item, or its audio was not persisted (`store = false`). + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose audio is streamed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationItemAudioContentWithResponseAsync(String agentName, + String conversationId, String itemId, RequestOptions requestOptions) { + final String accept = "audio/wav"; + return FluxUtil + .withContext(context -> service.getAgentConversationItemAudioContent(this.client.getEndpoint(), agentName, + conversationId, itemId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Stream a voice agent conversation item's audio + * + * Streams a single conversation item's audio as a WAV (`audio/wav`) byte stream through the service (no SAS + * URL). This route serves Foundry-managed storage only. For bring-your-own-storage (BYOS) recordings the + * bytes are not proxied — the caller must download directly from customer storage using the `blob_uri` + * returned by the item's `/audio` metadata route — so this route returns `409 Conflict` for BYOS recordings. + * Returns `404` when the conversation, item, or its audio was not persisted (`store = false`). + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose audio is streamed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationItemAudioContentWithResponse(String agentName, + String conversationId, String itemId, RequestOptions requestOptions) { + final String accept = "audio/wav"; + return service.getAgentConversationItemAudioContentSync(this.client.getEndpoint(), agentName, conversationId, + itemId, this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Get a voice agent conversation item's generated audio metadata + * + * Returns metadata for a conversation item's generated audio. This subordinate artifact is separate from the + * canonical heard-audio segment and exists only when playback was interrupted and the service rendered more audio + * than the listener heard, including when the response ends as cancelled. Returns `404` when the conversation or + * item was not persisted, or when no generated audio exists beyond the heard segment. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     conversation_id: String (Required)
+     *     item_id: String (Required)
+     *     role: String(user/agent) (Optional)
+     *     format: String(wav) (Optional)
+     *     codec: String(pcm16/pcmu/pcma) (Optional)
+     *     sample_rate: Integer (Optional)
+     *     channels: Integer (Optional)
+     *     start_offset_ms: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     blob_uri: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose generated audio metadata is retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation item's generated audio metadata + * + * Returns metadata for a conversation item's generated audio along with {@link Response} on successful completion + * of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationItemGeneratedAudioWithResponseAsync(String agentName, + String conversationId, String itemId, RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.getAgentConversationItemGeneratedAudio(this.client.getEndpoint(), agentName, + conversationId, itemId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get a voice agent conversation item's generated audio metadata + * + * Returns metadata for a conversation item's generated audio. This subordinate artifact is separate from the + * canonical heard-audio segment and exists only when playback was interrupted and the service rendered more audio + * than the listener heard, including when the response ends as cancelled. Returns `404` when the conversation or + * item was not persisted, or when no generated audio exists beyond the heard segment. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     conversation_id: String (Required)
+     *     item_id: String (Required)
+     *     role: String(user/agent) (Optional)
+     *     format: String(wav) (Optional)
+     *     codec: String(pcm16/pcmu/pcma) (Optional)
+     *     sample_rate: Integer (Optional)
+     *     channels: Integer (Optional)
+     *     start_offset_ms: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     blob_uri: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose generated audio metadata is retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation item's generated audio metadata + * + * Returns metadata for a conversation item's generated audio along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationItemGeneratedAudioWithResponse(String agentName, + String conversationId, String itemId, RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getAgentConversationItemGeneratedAudioSync(this.client.getEndpoint(), agentName, conversationId, + itemId, this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Stream a voice agent conversation item's generated audio + * + * Streams a conversation item's generated audio as a WAV (`audio/wav`) byte stream through the service. This + * subordinate artifact exists only when playback was interrupted and the service rendered more audio than the + * listener heard, including when the response ends as cancelled. This route serves Foundry-managed storage only. + * For bring-your-own-storage (BYOS) recordings the bytes are not proxied, so this route returns `409 Conflict`. + * Returns `404` when the conversation or item was not persisted, or when no generated audio exists beyond the + * heard segment. + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose generated audio is streamed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationItemGeneratedAudioContentWithResponseAsync(String agentName, + String conversationId, String itemId, RequestOptions requestOptions) { + final String accept = "audio/wav"; + return FluxUtil.withContext( + context -> service.getAgentConversationItemGeneratedAudioContent(this.client.getEndpoint(), agentName, + conversationId, itemId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Stream a voice agent conversation item's generated audio + * + * Streams a conversation item's generated audio as a WAV (`audio/wav`) byte stream through the service. This + * subordinate artifact exists only when playback was interrupted and the service rendered more audio than the + * listener heard, including when the response ends as cancelled. This route serves Foundry-managed storage only. + * For bring-your-own-storage (BYOS) recordings the bytes are not proxied, so this route returns `409 Conflict`. + * Returns `404` when the conversation or item was not persisted, or when no generated audio exists beyond the + * heard segment. + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation that contains the item. + * @param itemId The id of the conversation item whose generated audio is streamed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationItemGeneratedAudioContentWithResponse(String agentName, + String conversationId, String itemId, RequestOptions requestOptions) { + final String accept = "audio/wav"; + return service.getAgentConversationItemGeneratedAudioContentSync(this.client.getEndpoint(), agentName, + conversationId, itemId, this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Get a voice agent conversation's merged recording metadata + * + * Returns metadata for the whole-call merged stereo recording (user audio on the left channel, agent audio + * on the right). The common metadata (format, sample rate, channels, channel layout, duration) is returned + * for both Foundry-managed and bring-your-own-storage (BYOS) recordings; for BYOS the response additionally + * includes `blob_uri`, the URI of the recording in the customer's own storage (no SAS) that the customer downloads + * with their own credentials. The recording is built once from the per-turn segments after persistence + * finalization succeeds. While the conversation is `in_progress`, this route returns retriable `409 Conflict` + * with `error.code = recording_not_ready` and a `Retry-After` header when retry guidance is available. When the + * conversation is `failed`, it returns terminal `409 Conflict` with `error.code = recording_unavailable`. + * For a `completed` conversation, metadata is available subject to the existing BYOS behavior. Requires the + * conversation to have persisted audio (`store = true`); otherwise returns `404`. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     conversation_id: String (Required)
+     *     format: String(wav) (Required)
+     *     sample_rate: int (Required)
+     *     channels: int (Required)
+     *     channel_layout (Required): {
+     *         left: String (Required)
+     *         right: String (Required)
+     *     }
+     *     duration_ms: long (Required)
+     *     blob_uri: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose merged recording metadata is retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation's merged recording metadata + * + * Returns metadata for the whole-call merged stereo recording (user audio on the left channel, agent audio + * on the right) along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationAudioWithResponseAsync(String agentName, + String conversationId, RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.getAgentConversationAudio(this.client.getEndpoint(), agentName, + conversationId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get a voice agent conversation's merged recording metadata + * + * Returns metadata for the whole-call merged stereo recording (user audio on the left channel, agent audio + * on the right). The common metadata (format, sample rate, channels, channel layout, duration) is returned + * for both Foundry-managed and bring-your-own-storage (BYOS) recordings; for BYOS the response additionally + * includes `blob_uri`, the URI of the recording in the customer's own storage (no SAS) that the customer downloads + * with their own credentials. The recording is built once from the per-turn segments after persistence + * finalization succeeds. While the conversation is `in_progress`, this route returns retriable `409 Conflict` + * with `error.code = recording_not_ready` and a `Retry-After` header when retry guidance is available. When the + * conversation is `failed`, it returns terminal `409 Conflict` with `error.code = recording_unavailable`. + * For a `completed` conversation, metadata is available subject to the existing BYOS behavior. Requires the + * conversation to have persisted audio (`store = true`); otherwise returns `404`. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     conversation_id: String (Required)
+     *     format: String(wav) (Required)
+     *     sample_rate: int (Required)
+     *     channels: int (Required)
+     *     channel_layout (Required): {
+     *         left: String (Required)
+     *         right: String (Required)
+     *     }
+     *     duration_ms: long (Required)
+     *     blob_uri: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose merged recording metadata is retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a voice agent conversation's merged recording metadata + * + * Returns metadata for the whole-call merged stereo recording (user audio on the left channel, agent audio + * on the right) along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationAudioWithResponse(String agentName, String conversationId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getAgentConversationAudioSync(this.client.getEndpoint(), agentName, conversationId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Stream a voice agent conversation's merged recording + * + * Streams the whole-call merged stereo recording as a WAV (`audio/wav`) byte stream through the service + * (no SAS URL). This route serves Foundry-managed storage only. For bring-your-own-storage (BYOS) + * recordings the bytes are not proxied — the caller must download directly from customer storage using the + * `blob_uri` returned by the metadata route — so this route returns `409 Conflict` for BYOS recordings. + * While the conversation is `in_progress`, this route returns retriable `409 Conflict` with + * `error.code = recording_not_ready` and a `Retry-After` header when retry guidance is available. When the + * conversation is `failed`, it returns terminal `409 Conflict` with `error.code = recording_unavailable`. + * For a `completed` conversation, content is available subject to the existing BYOS behavior. A conversation + * without persisted audio (`store = false`) returns `404`. + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose merged recording is streamed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getAgentConversationAudioContentWithResponseAsync(String agentName, + String conversationId, RequestOptions requestOptions) { + final String accept = "audio/wav"; + return FluxUtil.withContext(context -> service.getAgentConversationAudioContent(this.client.getEndpoint(), + agentName, conversationId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Stream a voice agent conversation's merged recording + * + * Streams the whole-call merged stereo recording as a WAV (`audio/wav`) byte stream through the service + * (no SAS URL). This route serves Foundry-managed storage only. For bring-your-own-storage (BYOS) + * recordings the bytes are not proxied — the caller must download directly from customer storage using the + * `blob_uri` returned by the metadata route — so this route returns `409 Conflict` for BYOS recordings. + * While the conversation is `in_progress`, this route returns retriable `409 Conflict` with + * `error.code = recording_not_ready` and a `Retry-After` header when retry guidance is available. When the + * conversation is `failed`, it returns terminal `409 Conflict` with `error.code = recording_unavailable`. + * For a `completed` conversation, content is available subject to the existing BYOS behavior. A conversation + * without persisted audio (`store = false`) returns `404`. + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + * @param agentName The name of the agent. + * @param conversationId The id of the conversation whose merged recording is streamed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getAgentConversationAudioContentWithResponse(String agentName, String conversationId, + RequestOptions requestOptions) { + final String accept = "audio/wav"; + return service.getAgentConversationAudioContentSync(this.client.getEndpoint(), agentName, conversationId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + private List getValues(BinaryData binaryData, String... path) { + try { + Object value = binaryData.toObject(Map.class); + for (String segment : path) { + value = ((Map) value).get(segment); + } + List values = (List) value; + return values.stream().map(BinaryData::fromObject).collect(Collectors.toList()); + } catch (RuntimeException e) { + return null; + } + } + + private String getNextLink(BinaryData binaryData, String... path) { + try { + Object value = binaryData.toObject(Map.class); + for (String segment : path) { + value = ((Map) value).get(segment); + } + return (String) value; + } catch (RuntimeException e) { + return null; + } + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/JsonMergePatchHelper.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/JsonMergePatchHelper.java index 38525dbb12152..540db1110e7d6 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/JsonMergePatchHelper.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/JsonMergePatchHelper.java @@ -16,6 +16,7 @@ import com.azure.ai.agents.models.ProtocolConfiguration; import com.azure.ai.agents.models.ResponsesProtocolConfiguration; import com.azure.ai.agents.models.UpdateAgentDetailsOptions; +import com.azure.ai.agents.models.UpdateTelephonyBindingRequest; import com.azure.ai.agents.models.VersionSelectionRule; import com.azure.ai.agents.models.VersionSelector; @@ -260,4 +261,21 @@ public static void setUpdateAgentDetailsOptionsAccessor(UpdateAgentDetailsOption public static UpdateAgentDetailsOptionsAccessor getUpdateAgentDetailsOptionsAccessor() { return updateAgentDetailsOptionsAccessor; } + + private static UpdateTelephonyBindingRequestAccessor updateTelephonyBindingRequestAccessor; + + public interface UpdateTelephonyBindingRequestAccessor { + UpdateTelephonyBindingRequest prepareModelForJsonMergePatch( + UpdateTelephonyBindingRequest updateTelephonyBindingRequest, boolean jsonMergePatchEnabled); + + boolean isJsonMergePatch(UpdateTelephonyBindingRequest updateTelephonyBindingRequest); + } + + public static void setUpdateTelephonyBindingRequestAccessor(UpdateTelephonyBindingRequestAccessor accessor) { + updateTelephonyBindingRequestAccessor = accessor; + } + + public static UpdateTelephonyBindingRequestAccessor getUpdateTelephonyBindingRequestAccessor() { + return updateTelephonyBindingRequestAccessor; + } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/models/ReplaceTelephonyTransferTargetsRequest.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/models/ReplaceTelephonyTransferTargetsRequest.java new file mode 100644 index 0000000000000..2a1319f0f9932 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/models/ReplaceTelephonyTransferTargetsRequest.java @@ -0,0 +1,88 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.implementation.models; + +import com.azure.ai.agents.models.TelephonyTransferTarget; +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * The ReplaceTelephonyTransferTargetsRequest model. + */ +@Immutable +public final class ReplaceTelephonyTransferTargetsRequest + implements JsonSerializable { + + /* + * The complete set of destinations to which the voice agent may transfer calls. An empty array clears all targets + * when replacing the configuration. + */ + @Generated + private final List transferTargets; + + /** + * Creates an instance of ReplaceTelephonyTransferTargetsRequest class. + * + * @param transferTargets the transferTargets value to set. + */ + @Generated + public ReplaceTelephonyTransferTargetsRequest(List transferTargets) { + this.transferTargets = transferTargets; + } + + /** + * Get the transferTargets property: The complete set of destinations to which the voice agent may transfer calls. + * An empty array clears all targets when replacing the configuration. + * + * @return the transferTargets value. + */ + @Generated + public List getTransferTargets() { + return this.transferTargets; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("transfer_targets", this.transferTargets, + (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ReplaceTelephonyTransferTargetsRequest from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ReplaceTelephonyTransferTargetsRequest if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the ReplaceTelephonyTransferTargetsRequest. + */ + @Generated + public static ReplaceTelephonyTransferTargetsRequest fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + List transferTargets = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("transfer_targets".equals(fieldName)) { + transferTargets = reader.readArray(reader1 -> TelephonyTransferTarget.fromJson(reader1)); + } else { + reader.skipChildren(); + } + } + return new ReplaceTelephonyTransferTargetsRequest(transferTargets); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/models/TransferTelephonyCallRequest.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/models/TransferTelephonyCallRequest.java new file mode 100644 index 0000000000000..dce9efa92fd0b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/models/TransferTelephonyCallRequest.java @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.implementation.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The TransferTelephonyCallRequest model. + */ +@Immutable +public final class TransferTelephonyCallRequest implements JsonSerializable { + + /* + * The name of a transfer target configured for the voice agent. + */ + @Generated + private final String target; + + /** + * Creates an instance of TransferTelephonyCallRequest class. + * + * @param target the target value to set. + */ + @Generated + public TransferTelephonyCallRequest(String target) { + this.target = target; + } + + /** + * Get the target property: The name of a transfer target configured for the voice agent. + * + * @return the target value. + */ + @Generated + public String getTarget() { + return this.target; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("target", this.target); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TransferTelephonyCallRequest from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TransferTelephonyCallRequest if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TransferTelephonyCallRequest. + */ + @Generated + public static TransferTelephonyCallRequest fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String target = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("target".equals(fieldName)) { + target = reader.getString(); + } else { + reader.skipChildren(); + } + } + return new TransferTelephonyCallRequest(target); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentKind.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentKind.java index 4e0afa59b582f..69d463910e665 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentKind.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentKind.java @@ -66,4 +66,10 @@ public static Collection values() { */ @Generated public static final AgentKind EXTERNAL = fromString("external"); + + /** + * Static value voice for AgentKind. + */ + @Generated + public static final AgentKind VOICE = fromString("voice"); } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationJobProgress.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationJobProgress.java index c0e8b5c5a82d2..bd4d049b270c7 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationJobProgress.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationJobProgress.java @@ -103,16 +103,6 @@ public static AgentOptimizationJobProgress fromJson(JsonReader jsonReader) throw @Generated private final double elapsed; - /** - * Get the elapsed property: Wall-clock time elapsed in seconds since the job began executing. - * - * @return the elapsed value. - */ - @Generated - public Duration getElapsed() { - return Duration.ofNanos((long) (this.elapsed * 1000_000_000L)); - } - /** * Creates an instance of AgentOptimizationJobProgress class. * @@ -130,4 +120,14 @@ private AgentOptimizationJobProgress(int candidatesCompleted, double bestScore, this.elapsed = (double) elapsed.toNanos() / 1000_000_000L; } } + + /** + * Get the elapsed property: Wall-clock time elapsed in seconds since the job began executing. + * + * @return the elapsed value. + */ + @Generated + public Duration getElapsed() { + return Duration.ofNanos((long) (this.elapsed * 1000_000_000L)); + } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AzureCreateResponseOptions.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AzureCreateResponseOptions.java index 78e21d1ec267c..6fd06a9bb034d 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AzureCreateResponseOptions.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AzureCreateResponseOptions.java @@ -101,6 +101,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { } }); jsonWriter.writeJsonField("user_security_context", this.userSecurityContext); + jsonWriter.writeJsonField("routing_config", this.routingConfig); return jsonWriter.writeEndObject(); } @@ -128,6 +129,8 @@ public static AzureCreateResponseOptions fromJson(JsonReader jsonReader) throws } else if ("user_security_context".equals(fieldName)) { deserializedAzureCreateResponseOptions.userSecurityContext = AzureUserSecurityContext.fromJson(reader); + } else if ("routing_config".equals(fieldName)) { + deserializedAzureCreateResponseOptions.routingConfig = RoutingConfiguration.fromJson(reader); } else { reader.skipChildren(); } @@ -175,4 +178,38 @@ public AzureCreateResponseOptions setUserSecurityContext(AzureUserSecurityContex this.userSecurityContext = userSecurityContext; return this; } + + /* + * Per-request configuration for Model Router inference calls. + * Supported on Model Router endpoints (deployed or instant if supported). + * Returns a 400 (Bad Request) error when the target is not a Model Router endpoint. + */ + @Generated + private RoutingConfiguration routingConfig; + + /** + * Get the routingConfig property: Per-request configuration for Model Router inference calls. + * Supported on Model Router endpoints (deployed or instant if supported). + * Returns a 400 (Bad Request) error when the target is not a Model Router endpoint. + * + * @return the routingConfig value. + */ + @Generated + public RoutingConfiguration getRoutingConfig() { + return this.routingConfig; + } + + /** + * Set the routingConfig property: Per-request configuration for Model Router inference calls. + * Supported on Model Router endpoints (deployed or instant if supported). + * Returns a 400 (Bad Request) error when the target is not a Model Router endpoint. + * + * @param routingConfig the routingConfig value to set. + * @return the AzureCreateResponseOptions object itself. + */ + @Generated + public AzureCreateResponseOptions setRoutingConfig(RoutingConfiguration routingConfig) { + this.routingConfig = routingConfig; + return this; + } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTeamsPhoneExtensionTelephonyBindingRequest.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTeamsPhoneExtensionTelephonyBindingRequest.java new file mode 100644 index 0000000000000..cc83d9a3277a4 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTeamsPhoneExtensionTelephonyBindingRequest.java @@ -0,0 +1,159 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The request to create a Microsoft Teams Phone Extension binding. + */ +@Fluent +public final class CreateTeamsPhoneExtensionTelephonyBindingRequest extends CreateTelephonyBindingRequest { + + /* + * The telephony provider. + */ + @Generated + private TelephonyProvider provider = TelephonyProvider.TEAMS_PHONE_EXTENSION; + + /* + * The optional display phone number for the Teams resource account. + */ + @Generated + private String phoneNumber; + + /* + * The Microsoft Teams resource-account object identifier as a GUID. + */ + @Generated + private final String resourceAccountObjectId; + + /** + * Creates an instance of CreateTeamsPhoneExtensionTelephonyBindingRequest class. + * + * @param connection the connection value to set. + * @param resourceAccountObjectId the resourceAccountObjectId value to set. + */ + @Generated + public CreateTeamsPhoneExtensionTelephonyBindingRequest(String connection, String resourceAccountObjectId) { + super(connection); + this.resourceAccountObjectId = resourceAccountObjectId; + } + + /** + * Get the provider property: The telephony provider. + * + * @return the provider value. + */ + @Generated + @Override + public TelephonyProvider getProvider() { + return this.provider; + } + + /** + * Get the phoneNumber property: The optional display phone number for the Teams resource account. + * + * @return the phoneNumber value. + */ + @Generated + public String getPhoneNumber() { + return this.phoneNumber; + } + + /** + * Set the phoneNumber property: The optional display phone number for the Teams resource account. + * + * @param phoneNumber the phoneNumber value to set. + * @return the CreateTeamsPhoneExtensionTelephonyBindingRequest object itself. + */ + @Generated + public CreateTeamsPhoneExtensionTelephonyBindingRequest setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + return this; + } + + /** + * Get the resourceAccountObjectId property: The Microsoft Teams resource-account object identifier as a GUID. + * + * @return the resourceAccountObjectId value. + */ + @Generated + public String getResourceAccountObjectId() { + return this.resourceAccountObjectId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public CreateTeamsPhoneExtensionTelephonyBindingRequest setLabel(String label) { + super.setLabel(label); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("connection", getConnection()); + jsonWriter.writeStringField("label", getLabel()); + jsonWriter.writeStringField("resource_account_object_id", this.resourceAccountObjectId); + jsonWriter.writeStringField("provider", this.provider == null ? null : this.provider.toString()); + jsonWriter.writeStringField("phone_number", this.phoneNumber); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of CreateTeamsPhoneExtensionTelephonyBindingRequest from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of CreateTeamsPhoneExtensionTelephonyBindingRequest if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the CreateTeamsPhoneExtensionTelephonyBindingRequest. + */ + @Generated + public static CreateTeamsPhoneExtensionTelephonyBindingRequest fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String connection = null; + String label = null; + String resourceAccountObjectId = null; + TelephonyProvider provider = TelephonyProvider.TEAMS_PHONE_EXTENSION; + String phoneNumber = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("connection".equals(fieldName)) { + connection = reader.getString(); + } else if ("label".equals(fieldName)) { + label = reader.getString(); + } else if ("resource_account_object_id".equals(fieldName)) { + resourceAccountObjectId = reader.getString(); + } else if ("provider".equals(fieldName)) { + provider = TelephonyProvider.fromString(reader.getString()); + } else if ("phone_number".equals(fieldName)) { + phoneNumber = reader.getString(); + } else { + reader.skipChildren(); + } + } + CreateTeamsPhoneExtensionTelephonyBindingRequest deserializedCreateTeamsPhoneExtensionTelephonyBindingRequest + = new CreateTeamsPhoneExtensionTelephonyBindingRequest(connection, resourceAccountObjectId); + deserializedCreateTeamsPhoneExtensionTelephonyBindingRequest.setLabel(label); + deserializedCreateTeamsPhoneExtensionTelephonyBindingRequest.provider = provider; + deserializedCreateTeamsPhoneExtensionTelephonyBindingRequest.phoneNumber = phoneNumber; + return deserializedCreateTeamsPhoneExtensionTelephonyBindingRequest; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTelephonyBindingRequest.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTelephonyBindingRequest.java new file mode 100644 index 0000000000000..cc06e9ec3f590 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTelephonyBindingRequest.java @@ -0,0 +1,167 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The request to create a telephony binding. + */ +@Fluent +public class CreateTelephonyBindingRequest implements JsonSerializable { + + /* + * The telephony provider. + */ + @Generated + private TelephonyProvider provider = TelephonyProvider.fromString("CreateTelephonyBindingRequest"); + + /* + * The Foundry connection name for the telephony provider. + */ + @Generated + private final String connection; + + /* + * An optional display label for the binding. + */ + @Generated + private String label; + + /** + * Creates an instance of CreateTelephonyBindingRequest class. + * + * @param connection the connection value to set. + */ + @Generated + public CreateTelephonyBindingRequest(String connection) { + this.connection = connection; + } + + /** + * Get the provider property: The telephony provider. + * + * @return the provider value. + */ + @Generated + public TelephonyProvider getProvider() { + return this.provider; + } + + /** + * Get the connection property: The Foundry connection name for the telephony provider. + * + * @return the connection value. + */ + @Generated + public String getConnection() { + return this.connection; + } + + /** + * Get the label property: An optional display label for the binding. + * + * @return the label value. + */ + @Generated + public String getLabel() { + return this.label; + } + + /** + * Set the label property: An optional display label for the binding. + * + * @param label the label value to set. + * @return the CreateTelephonyBindingRequest object itself. + */ + @Generated + public CreateTelephonyBindingRequest setLabel(String label) { + this.label = label; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("connection", this.connection); + jsonWriter.writeStringField("provider", this.provider == null ? null : this.provider.toString()); + jsonWriter.writeStringField("label", this.label); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of CreateTelephonyBindingRequest from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of CreateTelephonyBindingRequest if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the CreateTelephonyBindingRequest. + */ + @Generated + public static CreateTelephonyBindingRequest fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("provider".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("teams_phone_extension".equals(discriminatorValue)) { + return CreateTeamsPhoneExtensionTelephonyBindingRequest.fromJson(readerToUse.reset()); + } else if ("twilio".equals(discriminatorValue)) { + return CreateTwilioTelephonyBindingRequest.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static CreateTelephonyBindingRequest fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String connection = null; + TelephonyProvider provider = null; + String label = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("connection".equals(fieldName)) { + connection = reader.getString(); + } else if ("provider".equals(fieldName)) { + provider = TelephonyProvider.fromString(reader.getString()); + } else if ("label".equals(fieldName)) { + label = reader.getString(); + } else { + reader.skipChildren(); + } + } + CreateTelephonyBindingRequest deserializedCreateTelephonyBindingRequest + = new CreateTelephonyBindingRequest(connection); + deserializedCreateTelephonyBindingRequest.provider = provider; + deserializedCreateTelephonyBindingRequest.label = label; + return deserializedCreateTelephonyBindingRequest; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTelephonyCallJobRequest.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTelephonyCallJobRequest.java new file mode 100644 index 0000000000000..75c1b538ce7ee --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTelephonyCallJobRequest.java @@ -0,0 +1,255 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.Map; + +/** + * A request to create one durable direct outbound call job. + */ +@Fluent +public final class CreateTelephonyCallJobRequest implements JsonSerializable { + + /* + * The phone destination to call. + */ + @Generated + private final TelephonyOutboundDestination destination; + + /* + * The active agent telephony binding used to originate the call. + */ + @Generated + private final String telephonyBindingId; + + /* + * An optional customer-declared purpose for placing the call. + */ + @Generated + private String purpose; + + /* + * Structured input values available to the agent and greeting for this call. Agent-declared inputs are validated + * against their schemas; omitted optional inputs may use their Agent-defined default values, while omitted required + * inputs are rejected. Additional inputs remain available as dynamic template variables. + */ + @Generated + private Map structuredInputs; + + /* + * The optional execution window. + */ + @Generated + private TelephonyCallJobSchedule schedule; + + /* + * The provider-attempt retry policy. Omit it for one attempt with no retry delay. + */ + @Generated + private TelephonyOutboundRetryPolicy retryPolicy; + + /** + * Creates an instance of CreateTelephonyCallJobRequest class. + * + * @param destination the destination value to set. + * @param telephonyBindingId the telephonyBindingId value to set. + */ + @Generated + public CreateTelephonyCallJobRequest(TelephonyOutboundDestination destination, String telephonyBindingId) { + this.destination = destination; + this.telephonyBindingId = telephonyBindingId; + } + + /** + * Get the destination property: The phone destination to call. + * + * @return the destination value. + */ + @Generated + public TelephonyOutboundDestination getDestination() { + return this.destination; + } + + /** + * Get the telephonyBindingId property: The active agent telephony binding used to originate the call. + * + * @return the telephonyBindingId value. + */ + @Generated + public String getTelephonyBindingId() { + return this.telephonyBindingId; + } + + /** + * Get the purpose property: An optional customer-declared purpose for placing the call. + * + * @return the purpose value. + */ + @Generated + public String getPurpose() { + return this.purpose; + } + + /** + * Set the purpose property: An optional customer-declared purpose for placing the call. + * + * @param purpose the purpose value to set. + * @return the CreateTelephonyCallJobRequest object itself. + */ + @Generated + public CreateTelephonyCallJobRequest setPurpose(String purpose) { + this.purpose = purpose; + return this; + } + + /** + * Get the structuredInputs property: Structured input values available to the agent and greeting for this call. + * Agent-declared inputs are validated against their schemas; omitted optional inputs may use their Agent-defined + * default values, while omitted required inputs are rejected. Additional inputs remain available as dynamic + * template variables. + * + * @return the structuredInputs value. + */ + @Generated + public Map getStructuredInputs() { + return this.structuredInputs; + } + + /** + * Set the structuredInputs property: Structured input values available to the agent and greeting for this call. + * Agent-declared inputs are validated against their schemas; omitted optional inputs may use their Agent-defined + * default values, while omitted required inputs are rejected. Additional inputs remain available as dynamic + * template variables. + * + * @param structuredInputs the structuredInputs value to set. + * @return the CreateTelephonyCallJobRequest object itself. + */ + @Generated + public CreateTelephonyCallJobRequest setStructuredInputs(Map structuredInputs) { + this.structuredInputs = structuredInputs; + return this; + } + + /** + * Get the schedule property: The optional execution window. + * + * @return the schedule value. + */ + @Generated + public TelephonyCallJobSchedule getSchedule() { + return this.schedule; + } + + /** + * Set the schedule property: The optional execution window. + * + * @param schedule the schedule value to set. + * @return the CreateTelephonyCallJobRequest object itself. + */ + @Generated + public CreateTelephonyCallJobRequest setSchedule(TelephonyCallJobSchedule schedule) { + this.schedule = schedule; + return this; + } + + /** + * Get the retryPolicy property: The provider-attempt retry policy. Omit it for one attempt with no retry delay. + * + * @return the retryPolicy value. + */ + @Generated + public TelephonyOutboundRetryPolicy getRetryPolicy() { + return this.retryPolicy; + } + + /** + * Set the retryPolicy property: The provider-attempt retry policy. Omit it for one attempt with no retry delay. + * + * @param retryPolicy the retryPolicy value to set. + * @return the CreateTelephonyCallJobRequest object itself. + */ + @Generated + public CreateTelephonyCallJobRequest setRetryPolicy(TelephonyOutboundRetryPolicy retryPolicy) { + this.retryPolicy = retryPolicy; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("destination", this.destination); + jsonWriter.writeStringField("telephony_binding_id", this.telephonyBindingId); + jsonWriter.writeStringField("purpose", this.purpose); + jsonWriter.writeMapField("structured_inputs", this.structuredInputs, (writer, element) -> { + if (element == null) { + writer.writeNull(); + } else { + element.writeTo(writer); + } + }); + jsonWriter.writeJsonField("schedule", this.schedule); + jsonWriter.writeJsonField("retry_policy", this.retryPolicy); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of CreateTelephonyCallJobRequest from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of CreateTelephonyCallJobRequest if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the CreateTelephonyCallJobRequest. + */ + @Generated + public static CreateTelephonyCallJobRequest fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TelephonyOutboundDestination destination = null; + String telephonyBindingId = null; + String purpose = null; + Map structuredInputs = null; + TelephonyCallJobSchedule schedule = null; + TelephonyOutboundRetryPolicy retryPolicy = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("destination".equals(fieldName)) { + destination = TelephonyOutboundDestination.fromJson(reader); + } else if ("telephony_binding_id".equals(fieldName)) { + telephonyBindingId = reader.getString(); + } else if ("purpose".equals(fieldName)) { + purpose = reader.getString(); + } else if ("structured_inputs".equals(fieldName)) { + structuredInputs = reader.readMap(reader1 -> reader1 + .getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped()))); + } else if ("schedule".equals(fieldName)) { + schedule = TelephonyCallJobSchedule.fromJson(reader); + } else if ("retry_policy".equals(fieldName)) { + retryPolicy = TelephonyOutboundRetryPolicy.fromJson(reader); + } else { + reader.skipChildren(); + } + } + CreateTelephonyCallJobRequest deserializedCreateTelephonyCallJobRequest + = new CreateTelephonyCallJobRequest(destination, telephonyBindingId); + deserializedCreateTelephonyCallJobRequest.purpose = purpose; + deserializedCreateTelephonyCallJobRequest.structuredInputs = structuredInputs; + deserializedCreateTelephonyCallJobRequest.schedule = schedule; + deserializedCreateTelephonyCallJobRequest.retryPolicy = retryPolicy; + return deserializedCreateTelephonyCallJobRequest; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTelephonyCampaignRequest.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTelephonyCampaignRequest.java new file mode 100644 index 0000000000000..3c7eb3642d56b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTelephonyCampaignRequest.java @@ -0,0 +1,205 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A request to create a draft outbound campaign. + */ +@Fluent +public final class CreateTelephonyCampaignRequest implements JsonSerializable { + + /* + * A customer-visible name for the campaign. + */ + @Generated + private final String displayName; + + /* + * The active agent telephony binding used to originate campaign calls. + */ + @Generated + private final String telephonyBindingId; + + /* + * An optional customer-declared purpose for campaign calls. + */ + @Generated + private String purpose; + + /* + * When the published campaign becomes eligible to dispatch calls. + */ + @Generated + private TelephonyCampaignSchedule schedule; + + /* + * The provider-attempt retry policy inherited by every materialized call job. + */ + @Generated + private TelephonyOutboundRetryPolicy retryPolicy; + + /** + * Creates an instance of CreateTelephonyCampaignRequest class. + * + * @param displayName the displayName value to set. + * @param telephonyBindingId the telephonyBindingId value to set. + */ + @Generated + public CreateTelephonyCampaignRequest(String displayName, String telephonyBindingId) { + this.displayName = displayName; + this.telephonyBindingId = telephonyBindingId; + } + + /** + * Get the displayName property: A customer-visible name for the campaign. + * + * @return the displayName value. + */ + @Generated + public String getDisplayName() { + return this.displayName; + } + + /** + * Get the telephonyBindingId property: The active agent telephony binding used to originate campaign calls. + * + * @return the telephonyBindingId value. + */ + @Generated + public String getTelephonyBindingId() { + return this.telephonyBindingId; + } + + /** + * Get the purpose property: An optional customer-declared purpose for campaign calls. + * + * @return the purpose value. + */ + @Generated + public String getPurpose() { + return this.purpose; + } + + /** + * Set the purpose property: An optional customer-declared purpose for campaign calls. + * + * @param purpose the purpose value to set. + * @return the CreateTelephonyCampaignRequest object itself. + */ + @Generated + public CreateTelephonyCampaignRequest setPurpose(String purpose) { + this.purpose = purpose; + return this; + } + + /** + * Get the schedule property: When the published campaign becomes eligible to dispatch calls. + * + * @return the schedule value. + */ + @Generated + public TelephonyCampaignSchedule getSchedule() { + return this.schedule; + } + + /** + * Set the schedule property: When the published campaign becomes eligible to dispatch calls. + * + * @param schedule the schedule value to set. + * @return the CreateTelephonyCampaignRequest object itself. + */ + @Generated + public CreateTelephonyCampaignRequest setSchedule(TelephonyCampaignSchedule schedule) { + this.schedule = schedule; + return this; + } + + /** + * Get the retryPolicy property: The provider-attempt retry policy inherited by every materialized call job. + * + * @return the retryPolicy value. + */ + @Generated + public TelephonyOutboundRetryPolicy getRetryPolicy() { + return this.retryPolicy; + } + + /** + * Set the retryPolicy property: The provider-attempt retry policy inherited by every materialized call job. + * + * @param retryPolicy the retryPolicy value to set. + * @return the CreateTelephonyCampaignRequest object itself. + */ + @Generated + public CreateTelephonyCampaignRequest setRetryPolicy(TelephonyOutboundRetryPolicy retryPolicy) { + this.retryPolicy = retryPolicy; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("display_name", this.displayName); + jsonWriter.writeStringField("telephony_binding_id", this.telephonyBindingId); + jsonWriter.writeStringField("purpose", this.purpose); + jsonWriter.writeJsonField("schedule", this.schedule); + jsonWriter.writeJsonField("retry_policy", this.retryPolicy); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of CreateTelephonyCampaignRequest from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of CreateTelephonyCampaignRequest if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the CreateTelephonyCampaignRequest. + */ + @Generated + public static CreateTelephonyCampaignRequest fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String displayName = null; + String telephonyBindingId = null; + String purpose = null; + TelephonyCampaignSchedule schedule = null; + TelephonyOutboundRetryPolicy retryPolicy = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("display_name".equals(fieldName)) { + displayName = reader.getString(); + } else if ("telephony_binding_id".equals(fieldName)) { + telephonyBindingId = reader.getString(); + } else if ("purpose".equals(fieldName)) { + purpose = reader.getString(); + } else if ("schedule".equals(fieldName)) { + schedule = TelephonyCampaignSchedule.fromJson(reader); + } else if ("retry_policy".equals(fieldName)) { + retryPolicy = TelephonyOutboundRetryPolicy.fromJson(reader); + } else { + reader.skipChildren(); + } + } + CreateTelephonyCampaignRequest deserializedCreateTelephonyCampaignRequest + = new CreateTelephonyCampaignRequest(displayName, telephonyBindingId); + deserializedCreateTelephonyCampaignRequest.purpose = purpose; + deserializedCreateTelephonyCampaignRequest.schedule = schedule; + deserializedCreateTelephonyCampaignRequest.retryPolicy = retryPolicy; + return deserializedCreateTelephonyCampaignRequest; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTwilioTelephonyBindingRequest.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTwilioTelephonyBindingRequest.java new file mode 100644 index 0000000000000..76d445ac949c9 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateTwilioTelephonyBindingRequest.java @@ -0,0 +1,126 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The request to create a Twilio binding. + */ +@Fluent +public final class CreateTwilioTelephonyBindingRequest extends CreateTelephonyBindingRequest { + + /* + * The telephony provider. + */ + @Generated + private TelephonyProvider provider = TelephonyProvider.TWILIO; + + /* + * The Twilio E.164 phone number. + */ + @Generated + private final String phoneNumber; + + /** + * Creates an instance of CreateTwilioTelephonyBindingRequest class. + * + * @param connection the connection value to set. + * @param phoneNumber the phoneNumber value to set. + */ + @Generated + public CreateTwilioTelephonyBindingRequest(String connection, String phoneNumber) { + super(connection); + this.phoneNumber = phoneNumber; + } + + /** + * Get the provider property: The telephony provider. + * + * @return the provider value. + */ + @Generated + @Override + public TelephonyProvider getProvider() { + return this.provider; + } + + /** + * Get the phoneNumber property: The Twilio E.164 phone number. + * + * @return the phoneNumber value. + */ + @Generated + public String getPhoneNumber() { + return this.phoneNumber; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public CreateTwilioTelephonyBindingRequest setLabel(String label) { + super.setLabel(label); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("connection", getConnection()); + jsonWriter.writeStringField("label", getLabel()); + jsonWriter.writeStringField("phone_number", this.phoneNumber); + jsonWriter.writeStringField("provider", this.provider == null ? null : this.provider.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of CreateTwilioTelephonyBindingRequest from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of CreateTwilioTelephonyBindingRequest if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the CreateTwilioTelephonyBindingRequest. + */ + @Generated + public static CreateTwilioTelephonyBindingRequest fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String connection = null; + String label = null; + String phoneNumber = null; + TelephonyProvider provider = TelephonyProvider.TWILIO; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("connection".equals(fieldName)) { + connection = reader.getString(); + } else if ("label".equals(fieldName)) { + label = reader.getString(); + } else if ("phone_number".equals(fieldName)) { + phoneNumber = reader.getString(); + } else if ("provider".equals(fieldName)) { + provider = TelephonyProvider.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + CreateTwilioTelephonyBindingRequest deserializedCreateTwilioTelephonyBindingRequest + = new CreateTwilioTelephonyBindingRequest(connection, phoneNumber); + deserializedCreateTwilioTelephonyBindingRequest.setLabel(label); + deserializedCreateTwilioTelephonyBindingRequest.provider = provider; + return deserializedCreateTwilioTelephonyBindingRequest; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ImportTelephonyCampaignRecipientsRequest.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ImportTelephonyCampaignRecipientsRequest.java new file mode 100644 index 0000000000000..08c8b6edd0430 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ImportTelephonyCampaignRecipientsRequest.java @@ -0,0 +1,160 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A request to import campaign recipients from a Dataset CSV, JSON array, or JSONL file. Imported Agent-declared + * structured inputs follow the Agent definition's schema, required, and default-value semantics. + */ +@Fluent +public final class ImportTelephonyCampaignRecipientsRequest + implements JsonSerializable { + + /* + * The source property. + */ + @Generated + private final TelephonyCampaignRecipientImportSource source; + + /* + * Mappings from recipient properties to source fields or columns. Omit this property or an individual entry to use + * same-named source fields. Destination and recipient-key source fields are required. Optional source fields may be + * absent, except the recipient item key when `duplicate_handling` is `keep_each`. + */ + @Generated + private TelephonyCampaignRecipientMappingRequest mapping; + + /* + * The duplicate_handling property. + */ + @Generated + private TelephonyCampaignDuplicateHandling duplicateHandling; + + /** + * Creates an instance of ImportTelephonyCampaignRecipientsRequest class. + * + * @param source the source value to set. + */ + @Generated + public ImportTelephonyCampaignRecipientsRequest(TelephonyCampaignRecipientImportSource source) { + this.source = source; + } + + /** + * Get the source property: The source property. + * + * @return the source value. + */ + @Generated + public TelephonyCampaignRecipientImportSource getSource() { + return this.source; + } + + /** + * Get the mapping property: Mappings from recipient properties to source fields or columns. Omit this property or + * an individual entry to use same-named source fields. Destination and recipient-key source fields are required. + * Optional source fields may be absent, except the recipient item key when `duplicate_handling` is `keep_each`. + * + * @return the mapping value. + */ + @Generated + public TelephonyCampaignRecipientMappingRequest getMapping() { + return this.mapping; + } + + /** + * Set the mapping property: Mappings from recipient properties to source fields or columns. Omit this property or + * an individual entry to use same-named source fields. Destination and recipient-key source fields are required. + * Optional source fields may be absent, except the recipient item key when `duplicate_handling` is `keep_each`. + * + * @param mapping the mapping value to set. + * @return the ImportTelephonyCampaignRecipientsRequest object itself. + */ + @Generated + public ImportTelephonyCampaignRecipientsRequest setMapping(TelephonyCampaignRecipientMappingRequest mapping) { + this.mapping = mapping; + return this; + } + + /** + * Get the duplicateHandling property: The duplicate_handling property. + * + * @return the duplicateHandling value. + */ + @Generated + public TelephonyCampaignDuplicateHandling getDuplicateHandling() { + return this.duplicateHandling; + } + + /** + * Set the duplicateHandling property: The duplicate_handling property. + * + * @param duplicateHandling the duplicateHandling value to set. + * @return the ImportTelephonyCampaignRecipientsRequest object itself. + */ + @Generated + public ImportTelephonyCampaignRecipientsRequest + setDuplicateHandling(TelephonyCampaignDuplicateHandling duplicateHandling) { + this.duplicateHandling = duplicateHandling; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("source", this.source); + jsonWriter.writeJsonField("mapping", this.mapping); + jsonWriter.writeStringField("duplicate_handling", + this.duplicateHandling == null ? null : this.duplicateHandling.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ImportTelephonyCampaignRecipientsRequest from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ImportTelephonyCampaignRecipientsRequest if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the ImportTelephonyCampaignRecipientsRequest. + */ + @Generated + public static ImportTelephonyCampaignRecipientsRequest fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TelephonyCampaignRecipientImportSource source = null; + TelephonyCampaignRecipientMappingRequest mapping = null; + TelephonyCampaignDuplicateHandling duplicateHandling = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("source".equals(fieldName)) { + source = TelephonyCampaignRecipientImportSource.fromJson(reader); + } else if ("mapping".equals(fieldName)) { + mapping = TelephonyCampaignRecipientMappingRequest.fromJson(reader); + } else if ("duplicate_handling".equals(fieldName)) { + duplicateHandling = TelephonyCampaignDuplicateHandling.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + ImportTelephonyCampaignRecipientsRequest deserializedImportTelephonyCampaignRecipientsRequest + = new ImportTelephonyCampaignRecipientsRequest(source); + deserializedImportTelephonyCampaignRecipientsRequest.mapping = mapping; + deserializedImportTelephonyCampaignRecipientsRequest.duplicateHandling = duplicateHandling; + return deserializedImportTelephonyCampaignRecipientsRequest; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/McpListToolsTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/McpListToolsTool.java new file mode 100644 index 0000000000000..99aaab565fbea --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/McpListToolsTool.java @@ -0,0 +1,173 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * MCP list tools tool + * + * A tool available on an MCP server. + */ +@Fluent +public final class McpListToolsTool implements JsonSerializable { + + /* + * The name of the tool. + */ + @Generated + private final String name; + + /* + * The description property. + */ + @Generated + private String description; + + /* + * The JSON schema describing the tool's input. + */ + @Generated + private final McpListToolsToolInputSchema inputSchema; + + /* + * The annotations property. + */ + @Generated + private McpListToolsToolAnnotations annotations; + + /** + * Creates an instance of McpListToolsTool class. + * + * @param name the name value to set. + * @param inputSchema the inputSchema value to set. + */ + @Generated + public McpListToolsTool(String name, McpListToolsToolInputSchema inputSchema) { + this.name = name; + this.inputSchema = inputSchema; + } + + /** + * Get the name property: The name of the tool. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * Get the description property: The description property. + * + * @return the description value. + */ + @Generated + public String getDescription() { + return this.description; + } + + /** + * Set the description property: The description property. + * + * @param description the description value to set. + * @return the McpListToolsTool object itself. + */ + @Generated + public McpListToolsTool setDescription(String description) { + this.description = description; + return this; + } + + /** + * Get the inputSchema property: The JSON schema describing the tool's input. + * + * @return the inputSchema value. + */ + @Generated + public McpListToolsToolInputSchema getInputSchema() { + return this.inputSchema; + } + + /** + * Get the annotations property: The annotations property. + * + * @return the annotations value. + */ + @Generated + public McpListToolsToolAnnotations getAnnotations() { + return this.annotations; + } + + /** + * Set the annotations property: The annotations property. + * + * @param annotations the annotations value to set. + * @return the McpListToolsTool object itself. + */ + @Generated + public McpListToolsTool setAnnotations(McpListToolsToolAnnotations annotations) { + this.annotations = annotations; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeJsonField("input_schema", this.inputSchema); + jsonWriter.writeStringField("description", this.description); + jsonWriter.writeJsonField("annotations", this.annotations); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of McpListToolsTool from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of McpListToolsTool if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the McpListToolsTool. + */ + @Generated + public static McpListToolsTool fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String name = null; + McpListToolsToolInputSchema inputSchema = null; + String description = null; + McpListToolsToolAnnotations annotations = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("input_schema".equals(fieldName)) { + inputSchema = McpListToolsToolInputSchema.fromJson(reader); + } else if ("description".equals(fieldName)) { + description = reader.getString(); + } else if ("annotations".equals(fieldName)) { + annotations = McpListToolsToolAnnotations.fromJson(reader); + } else { + reader.skipChildren(); + } + } + McpListToolsTool deserializedMcpListToolsTool = new McpListToolsTool(name, inputSchema); + deserializedMcpListToolsTool.description = description; + deserializedMcpListToolsTool.annotations = annotations; + return deserializedMcpListToolsTool; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/McpListToolsToolAnnotations.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/McpListToolsToolAnnotations.java new file mode 100644 index 0000000000000..d2cd31f5bf364 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/McpListToolsToolAnnotations.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The McpListToolsToolAnnotations model. + */ +@Immutable +public final class McpListToolsToolAnnotations implements JsonSerializable { + + /** + * Creates an instance of McpListToolsToolAnnotations class. + */ + @Generated + public McpListToolsToolAnnotations() { + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of McpListToolsToolAnnotations from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of McpListToolsToolAnnotations if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the McpListToolsToolAnnotations. + */ + @Generated + public static McpListToolsToolAnnotations fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + McpListToolsToolAnnotations deserializedMcpListToolsToolAnnotations = new McpListToolsToolAnnotations(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + reader.skipChildren(); + } + return deserializedMcpListToolsToolAnnotations; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/McpListToolsToolInputSchema.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/McpListToolsToolInputSchema.java new file mode 100644 index 0000000000000..e2c3dee813add --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/McpListToolsToolInputSchema.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The McpListToolsToolInputSchema model. + */ +@Immutable +public final class McpListToolsToolInputSchema implements JsonSerializable { + + /** + * Creates an instance of McpListToolsToolInputSchema class. + */ + @Generated + public McpListToolsToolInputSchema() { + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of McpListToolsToolInputSchema from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of McpListToolsToolInputSchema if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the McpListToolsToolInputSchema. + */ + @Generated + public static McpListToolsToolInputSchema fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + McpListToolsToolInputSchema deserializedMcpListToolsToolInputSchema = new McpListToolsToolInputSchema(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + reader.skipChildren(); + } + return deserializedMcpListToolsToolInputSchema; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ModelRouterDetails.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ModelRouterDetails.java index f0b70f5e5ace3..cb6619b542ac2 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ModelRouterDetails.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ModelRouterDetails.java @@ -75,6 +75,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); jsonWriter.writeStringField("mode", this.mode == null ? null : this.mode.toString()); jsonWriter.writeArrayField("routing_trace", this.routingTrace, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeJsonField("session_affinity", this.sessionAffinity); return jsonWriter.writeEndObject(); } @@ -92,6 +93,7 @@ public static ModelRouterDetails fromJson(JsonReader jsonReader) throws IOExcept return jsonReader.readObject(reader -> { ModelRouterMode mode = null; List routingTrace = null; + SessionAffinityDetails sessionAffinity = null; while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); reader.nextToken(); @@ -99,11 +101,33 @@ public static ModelRouterDetails fromJson(JsonReader jsonReader) throws IOExcept mode = ModelRouterMode.fromString(reader.getString()); } else if ("routing_trace".equals(fieldName)) { routingTrace = reader.readArray(reader1 -> RoutingTraceEntry.fromJson(reader1)); + } else if ("session_affinity".equals(fieldName)) { + sessionAffinity = SessionAffinityDetails.fromJson(reader); } else { reader.skipChildren(); } } - return new ModelRouterDetails(mode, routingTrace); + ModelRouterDetails deserializedModelRouterDetails = new ModelRouterDetails(mode, routingTrace); + deserializedModelRouterDetails.sessionAffinity = sessionAffinity; + return deserializedModelRouterDetails; }); } + + /* + * Session affinity metadata for the routing decision. Omitted when affinity metadata is unavailable or the preview + * feature is not enabled. + */ + @Generated + private SessionAffinityDetails sessionAffinity; + + /** + * Get the sessionAffinity property: Session affinity metadata for the routing decision. Omitted when affinity + * metadata is unavailable or the preview feature is not enabled. + * + * @return the sessionAffinity value. + */ + @Generated + public SessionAffinityDetails getSessionAffinity() { + return this.sessionAffinity; + } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PSTNTelephonyTransferDestination.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PSTNTelephonyTransferDestination.java new file mode 100644 index 0000000000000..650cb906b88ad --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PSTNTelephonyTransferDestination.java @@ -0,0 +1,105 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A PSTN destination for a telephony transfer target. + */ +@Immutable +public final class PSTNTelephonyTransferDestination extends TelephonyTransferDestination { + + /* + * The telephony transfer destination type. + */ + @Generated + private TelephonyTransferDestinationKind kind = TelephonyTransferDestinationKind.PSTN; + + /* + * The E.164 phone number to call. + */ + @Generated + private final String value; + + /** + * Creates an instance of PSTNTelephonyTransferDestination class. + * + * @param value the value value to set. + */ + @Generated + public PSTNTelephonyTransferDestination(String value) { + this.value = value; + } + + /** + * Get the kind property: The telephony transfer destination type. + * + * @return the kind value. + */ + @Generated + @Override + public TelephonyTransferDestinationKind getKind() { + return this.kind; + } + + /** + * Get the value property: The E.164 phone number to call. + * + * @return the value value. + */ + @Generated + public String getValue() { + return this.value; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("value", this.value); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of PSTNTelephonyTransferDestination from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of PSTNTelephonyTransferDestination if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the PSTNTelephonyTransferDestination. + */ + @Generated + public static PSTNTelephonyTransferDestination fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String value = null; + TelephonyTransferDestinationKind kind = TelephonyTransferDestinationKind.PSTN; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("value".equals(fieldName)) { + value = reader.getString(); + } else if ("kind".equals(fieldName)) { + kind = TelephonyTransferDestinationKind.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + PSTNTelephonyTransferDestination deserializedPSTNTelephonyTransferDestination + = new PSTNTelephonyTransferDestination(value); + deserializedPSTNTelephonyTransferDestination.kind = kind; + return deserializedPSTNTelephonyTransferDestination; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PublishTelephonyCampaignRequest.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PublishTelephonyCampaignRequest.java new file mode 100644 index 0000000000000..d08d28bf90538 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PublishTelephonyCampaignRequest.java @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A request to publish a validated outbound campaign draft. + */ +@Immutable +public final class PublishTelephonyCampaignRequest implements JsonSerializable { + + /* + * The validation_id property. + */ + @Generated + private final String validationId; + + /** + * Creates an instance of PublishTelephonyCampaignRequest class. + * + * @param validationId the validationId value to set. + */ + @Generated + public PublishTelephonyCampaignRequest(String validationId) { + this.validationId = validationId; + } + + /** + * Get the validationId property: The validation_id property. + * + * @return the validationId value. + */ + @Generated + public String getValidationId() { + return this.validationId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("validation_id", this.validationId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of PublishTelephonyCampaignRequest from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of PublishTelephonyCampaignRequest if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the PublishTelephonyCampaignRequest. + */ + @Generated + public static PublishTelephonyCampaignRequest fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String validationId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("validation_id".equals(fieldName)) { + validationId = reader.getString(); + } else { + reader.skipChildren(); + } + } + return new PublishTelephonyCampaignRequest(validationId); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiInvocationContentType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiInvocationContentType.java new file mode 100644 index 0000000000000..64fa9aed9f9ea --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiInvocationContentType.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * How an invocations request/response body is parsed to locate text for content-safety moderation. + */ +public final class RaiInvocationContentType extends ExpandableStringEnum { + + /** + * Parse the body as JSON and evaluate the declared paths/selectors. + */ + @Generated + public static final RaiInvocationContentType JSON = fromString("json"); + + /** + * Treat the whole (size-capped) body as text; paths/selectors are ignored. + */ + @Generated + public static final RaiInvocationContentType TEXT = fromString("text"); + + /** + * Creates a new instance of RaiInvocationContentType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public RaiInvocationContentType() { + } + + /** + * Creates or finds a RaiInvocationContentType from its string representation. + * + * @param name a name to look for. + * @return the corresponding RaiInvocationContentType. + */ + @Generated + public static RaiInvocationContentType fromString(String name) { + return fromString(name, RaiInvocationContentType.class); + } + + /** + * Gets known RaiInvocationContentType values. + * + * @return known RaiInvocationContentType values. + */ + @Generated + public static Collection values() { + return values(RaiInvocationContentType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiInvocationMode.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiInvocationMode.java new file mode 100644 index 0000000000000..41b74445ab079 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiInvocationMode.java @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Author-declared response shape for the invocations protocol. + */ +public final class RaiInvocationMode extends ExpandableStringEnum { + + /** + * Non-streaming response body. + */ + @Generated + public static final RaiInvocationMode NON_STREAMING = fromString("non_streaming"); + + /** + * Streaming response body. + */ + @Generated + public static final RaiInvocationMode STREAMING = fromString("streaming"); + + /** + * Both non-streaming and streaming response bodies. + */ + @Generated + public static final RaiInvocationMode BOTH = fromString("both"); + + /** + * Creates a new instance of RaiInvocationMode value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public RaiInvocationMode() { + } + + /** + * Creates or finds a RaiInvocationMode from its string representation. + * + * @param name a name to look for. + * @return the corresponding RaiInvocationMode. + */ + @Generated + public static RaiInvocationMode fromString(String name) { + return fromString(name, RaiInvocationMode.class); + } + + /** + * Gets known RaiInvocationMode values. + * + * @return known RaiInvocationMode values. + */ + @Generated + public static Collection values() { + return values(RaiInvocationMode.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiInvocationModeration.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiInvocationModeration.java new file mode 100644 index 0000000000000..f14a068fe410e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiInvocationModeration.java @@ -0,0 +1,263 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Declares where request/response text lives so content-safety guardrails can extract it. + */ +@Fluent +public final class RaiInvocationModeration implements JsonSerializable { + + /* + * How the REQUEST body is parsed. When omitted, the service defaults to `json`. + */ + @Generated + private RaiInvocationContentType inputContentType; + + /* + * How the RESPONSE body is parsed. When omitted, the service defaults to `json`. + */ + @Generated + private RaiInvocationContentType outputContentType; + + /* + * Author-declared response shape; drives which output gate runs and which fields are required. + */ + @Generated + private final RaiInvocationMode responseMode; + + /* + * Path(s) to user text in the REQUEST body. Required when input_content_type is `json`. + */ + @Generated + private List inputPaths; + + /* + * Path(s) to agent text in a NON-STREAMING response body. Required when response_mode is non_streaming/both and + * output_content_type is `json`. + */ + @Generated + private List outputPaths; + + /* + * One SSE event->field selector per event type carrying text. Required when response_mode is streaming/both and + * output_content_type is `json`. + */ + @Generated + private List streamSelectors; + + /** + * Creates an instance of RaiInvocationModeration class. + * + * @param responseMode the responseMode value to set. + */ + @Generated + public RaiInvocationModeration(RaiInvocationMode responseMode) { + this.responseMode = responseMode; + } + + /** + * Get the inputContentType property: How the REQUEST body is parsed. When omitted, the service defaults to `json`. + * + * @return the inputContentType value. + */ + @Generated + public RaiInvocationContentType getInputContentType() { + return this.inputContentType; + } + + /** + * Set the inputContentType property: How the REQUEST body is parsed. When omitted, the service defaults to `json`. + * + * @param inputContentType the inputContentType value to set. + * @return the RaiInvocationModeration object itself. + */ + @Generated + public RaiInvocationModeration setInputContentType(RaiInvocationContentType inputContentType) { + this.inputContentType = inputContentType; + return this; + } + + /** + * Get the outputContentType property: How the RESPONSE body is parsed. When omitted, the service defaults to + * `json`. + * + * @return the outputContentType value. + */ + @Generated + public RaiInvocationContentType getOutputContentType() { + return this.outputContentType; + } + + /** + * Set the outputContentType property: How the RESPONSE body is parsed. When omitted, the service defaults to + * `json`. + * + * @param outputContentType the outputContentType value to set. + * @return the RaiInvocationModeration object itself. + */ + @Generated + public RaiInvocationModeration setOutputContentType(RaiInvocationContentType outputContentType) { + this.outputContentType = outputContentType; + return this; + } + + /** + * Get the responseMode property: Author-declared response shape; drives which output gate runs and which fields are + * required. + * + * @return the responseMode value. + */ + @Generated + public RaiInvocationMode getResponseMode() { + return this.responseMode; + } + + /** + * Get the inputPaths property: Path(s) to user text in the REQUEST body. Required when input_content_type is + * `json`. + * + * @return the inputPaths value. + */ + @Generated + public List getInputPaths() { + return this.inputPaths; + } + + /** + * Set the inputPaths property: Path(s) to user text in the REQUEST body. Required when input_content_type is + * `json`. + * + * @param inputPaths the inputPaths value to set. + * @return the RaiInvocationModeration object itself. + */ + @Generated + public RaiInvocationModeration setInputPaths(List inputPaths) { + this.inputPaths = inputPaths; + return this; + } + + /** + * Get the outputPaths property: Path(s) to agent text in a NON-STREAMING response body. Required when response_mode + * is non_streaming/both and output_content_type is `json`. + * + * @return the outputPaths value. + */ + @Generated + public List getOutputPaths() { + return this.outputPaths; + } + + /** + * Set the outputPaths property: Path(s) to agent text in a NON-STREAMING response body. Required when response_mode + * is non_streaming/both and output_content_type is `json`. + * + * @param outputPaths the outputPaths value to set. + * @return the RaiInvocationModeration object itself. + */ + @Generated + public RaiInvocationModeration setOutputPaths(List outputPaths) { + this.outputPaths = outputPaths; + return this; + } + + /** + * Get the streamSelectors property: One SSE event->field selector per event type carrying text. Required when + * response_mode is streaming/both and output_content_type is `json`. + * + * @return the streamSelectors value. + */ + @Generated + public List getStreamSelectors() { + return this.streamSelectors; + } + + /** + * Set the streamSelectors property: One SSE event->field selector per event type carrying text. Required when + * response_mode is streaming/both and output_content_type is `json`. + * + * @param streamSelectors the streamSelectors value to set. + * @return the RaiInvocationModeration object itself. + */ + @Generated + public RaiInvocationModeration setStreamSelectors(List streamSelectors) { + this.streamSelectors = streamSelectors; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("response_mode", this.responseMode == null ? null : this.responseMode.toString()); + jsonWriter.writeStringField("input_content_type", + this.inputContentType == null ? null : this.inputContentType.toString()); + jsonWriter.writeStringField("output_content_type", + this.outputContentType == null ? null : this.outputContentType.toString()); + jsonWriter.writeArrayField("input_paths", this.inputPaths, (writer, element) -> writer.writeString(element)); + jsonWriter.writeArrayField("output_paths", this.outputPaths, (writer, element) -> writer.writeString(element)); + jsonWriter.writeArrayField("stream_selectors", this.streamSelectors, + (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RaiInvocationModeration from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RaiInvocationModeration if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RaiInvocationModeration. + */ + @Generated + public static RaiInvocationModeration fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RaiInvocationMode responseMode = null; + RaiInvocationContentType inputContentType = null; + RaiInvocationContentType outputContentType = null; + List inputPaths = null; + List outputPaths = null; + List streamSelectors = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("response_mode".equals(fieldName)) { + responseMode = RaiInvocationMode.fromString(reader.getString()); + } else if ("input_content_type".equals(fieldName)) { + inputContentType = RaiInvocationContentType.fromString(reader.getString()); + } else if ("output_content_type".equals(fieldName)) { + outputContentType = RaiInvocationContentType.fromString(reader.getString()); + } else if ("input_paths".equals(fieldName)) { + inputPaths = reader.readArray(reader1 -> reader1.getString()); + } else if ("output_paths".equals(fieldName)) { + outputPaths = reader.readArray(reader1 -> reader1.getString()); + } else if ("stream_selectors".equals(fieldName)) { + streamSelectors = reader.readArray(reader1 -> RaiSseTextSelector.fromJson(reader1)); + } else { + reader.skipChildren(); + } + } + RaiInvocationModeration deserializedRaiInvocationModeration = new RaiInvocationModeration(responseMode); + deserializedRaiInvocationModeration.inputContentType = inputContentType; + deserializedRaiInvocationModeration.outputContentType = outputContentType; + deserializedRaiInvocationModeration.inputPaths = inputPaths; + deserializedRaiInvocationModeration.outputPaths = outputPaths; + deserializedRaiInvocationModeration.streamSelectors = streamSelectors; + return deserializedRaiInvocationModeration; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiSseTextSelector.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiSseTextSelector.java new file mode 100644 index 0000000000000..7d90b90dbe8ab --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiSseTextSelector.java @@ -0,0 +1,118 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * An SSE event-type to text-field selector for streaming invocation output. + */ +@Fluent +public final class RaiSseTextSelector implements JsonSerializable { + + /* + * The SSE event `type` value that carries text. + */ + @Generated + private final String eventType; + + /* + * The field on a matched event holding the text delta. When omitted, the service defaults to `delta`. + */ + @Generated + private String textField; + + /** + * Creates an instance of RaiSseTextSelector class. + * + * @param eventType the eventType value to set. + */ + @Generated + public RaiSseTextSelector(String eventType) { + this.eventType = eventType; + } + + /** + * Get the eventType property: The SSE event `type` value that carries text. + * + * @return the eventType value. + */ + @Generated + public String getEventType() { + return this.eventType; + } + + /** + * Get the textField property: The field on a matched event holding the text delta. When omitted, the service + * defaults to `delta`. + * + * @return the textField value. + */ + @Generated + public String getTextField() { + return this.textField; + } + + /** + * Set the textField property: The field on a matched event holding the text delta. When omitted, the service + * defaults to `delta`. + * + * @param textField the textField value to set. + * @return the RaiSseTextSelector object itself. + */ + @Generated + public RaiSseTextSelector setTextField(String textField) { + this.textField = textField; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("event_type", this.eventType); + jsonWriter.writeStringField("text_field", this.textField); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RaiSseTextSelector from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RaiSseTextSelector if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RaiSseTextSelector. + */ + @Generated + public static RaiSseTextSelector fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String eventType = null; + String textField = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("event_type".equals(fieldName)) { + eventType = reader.getString(); + } else if ("text_field".equals(fieldName)) { + textField = reader.getString(); + } else { + reader.skipChildren(); + } + } + RaiSseTextSelector deserializedRaiSseTextSelector = new RaiSseTextSelector(eventType); + deserializedRaiSseTextSelector.textField = textField; + return deserializedRaiSseTextSelector; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormats.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormats.java new file mode 100644 index 0000000000000..f5139706546b0 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormats.java @@ -0,0 +1,109 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeAudioFormats model. + */ +@Immutable +public class RealtimeAudioFormats implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private RealtimeAudioFormatsType type = RealtimeAudioFormatsType.fromString("RealtimeAudioFormats"); + + /** + * Creates an instance of RealtimeAudioFormats class. + */ + @Generated + public RealtimeAudioFormats() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public RealtimeAudioFormatsType getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeAudioFormats from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeAudioFormats if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeAudioFormats. + */ + @Generated + public static RealtimeAudioFormats fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("audio/pcm".equals(discriminatorValue)) { + return RealtimeAudioFormatsAudioPcm.fromJson(readerToUse.reset()); + } else if ("audio/pcmu".equals(discriminatorValue)) { + return RealtimeAudioFormatsAudioPcmu.fromJson(readerToUse.reset()); + } else if ("audio/pcma".equals(discriminatorValue)) { + return RealtimeAudioFormatsAudioPcma.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static RealtimeAudioFormats fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeAudioFormats deserializedRealtimeAudioFormats = new RealtimeAudioFormats(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeAudioFormats.type = RealtimeAudioFormatsType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeAudioFormats; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcm.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcm.java new file mode 100644 index 0000000000000..2b696fae47e12 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcm.java @@ -0,0 +1,111 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeAudioFormatsAudioPcm model. + */ +@Fluent +public final class RealtimeAudioFormatsAudioPcm extends RealtimeAudioFormats { + + /* + * The type property. + */ + @Generated + private RealtimeAudioFormatsType type = RealtimeAudioFormatsType.AUDIO_PCM; + + /* + * The rate property. + */ + @Generated + private RealtimeAudioFormatsAudioPcmRate rate; + + /** + * Creates an instance of RealtimeAudioFormatsAudioPcm class. + */ + @Generated + public RealtimeAudioFormatsAudioPcm() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeAudioFormatsType getType() { + return this.type; + } + + /** + * Get the rate property: The rate property. + * + * @return the rate value. + */ + @Generated + public RealtimeAudioFormatsAudioPcmRate getRate() { + return this.rate; + } + + /** + * Set the rate property: The rate property. + * + * @param rate the rate value to set. + * @return the RealtimeAudioFormatsAudioPcm object itself. + */ + @Generated + public RealtimeAudioFormatsAudioPcm setRate(RealtimeAudioFormatsAudioPcmRate rate) { + this.rate = rate; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeNumberField("rate", this.rate == null ? null : this.rate.toInt()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeAudioFormatsAudioPcm from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeAudioFormatsAudioPcm if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeAudioFormatsAudioPcm. + */ + @Generated + public static RealtimeAudioFormatsAudioPcm fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeAudioFormatsAudioPcm deserializedRealtimeAudioFormatsAudioPcm = new RealtimeAudioFormatsAudioPcm(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeAudioFormatsAudioPcm.type + = RealtimeAudioFormatsType.fromString(reader.getString()); + } else if ("rate".equals(fieldName)) { + deserializedRealtimeAudioFormatsAudioPcm.rate + = RealtimeAudioFormatsAudioPcmRate.fromInt(reader.getInt()); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeAudioFormatsAudioPcm; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcmRate.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcmRate.java new file mode 100644 index 0000000000000..e8812cefa7296 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcmRate.java @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeAudioFormatsAudioPcmRate. + */ +public enum RealtimeAudioFormatsAudioPcmRate { + /** + * Enum value 24000. + */ + TWO_FOUR_ZERO_ZERO_ZERO(24000); + + /** + * The actual serialized value for a RealtimeAudioFormatsAudioPcmRate instance. + */ + private final int value; + + RealtimeAudioFormatsAudioPcmRate(int value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeAudioFormatsAudioPcmRate instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeAudioFormatsAudioPcmRate object, or null if unable to parse. + */ + public static RealtimeAudioFormatsAudioPcmRate fromInt(int value) { + RealtimeAudioFormatsAudioPcmRate[] items = RealtimeAudioFormatsAudioPcmRate.values(); + for (RealtimeAudioFormatsAudioPcmRate item : items) { + if (item.toInt() == value) { + return item; + } + } + return null; + } + + /** + * De-serializes the instance to int value. + * + * @return the int value. + */ + public int toInt() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcma.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcma.java new file mode 100644 index 0000000000000..2897951925cba --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcma.java @@ -0,0 +1,80 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeAudioFormatsAudioPcma model. + */ +@Immutable +public final class RealtimeAudioFormatsAudioPcma extends RealtimeAudioFormats { + + /* + * The type property. + */ + @Generated + private RealtimeAudioFormatsType type = RealtimeAudioFormatsType.AUDIO_PCMA; + + /** + * Creates an instance of RealtimeAudioFormatsAudioPcma class. + */ + @Generated + public RealtimeAudioFormatsAudioPcma() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeAudioFormatsType getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeAudioFormatsAudioPcma from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeAudioFormatsAudioPcma if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeAudioFormatsAudioPcma. + */ + @Generated + public static RealtimeAudioFormatsAudioPcma fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeAudioFormatsAudioPcma deserializedRealtimeAudioFormatsAudioPcma + = new RealtimeAudioFormatsAudioPcma(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeAudioFormatsAudioPcma.type + = RealtimeAudioFormatsType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeAudioFormatsAudioPcma; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcmu.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcmu.java new file mode 100644 index 0000000000000..f89c5ec399288 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcmu.java @@ -0,0 +1,80 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeAudioFormatsAudioPcmu model. + */ +@Immutable +public final class RealtimeAudioFormatsAudioPcmu extends RealtimeAudioFormats { + + /* + * The type property. + */ + @Generated + private RealtimeAudioFormatsType type = RealtimeAudioFormatsType.AUDIO_PCMU; + + /** + * Creates an instance of RealtimeAudioFormatsAudioPcmu class. + */ + @Generated + public RealtimeAudioFormatsAudioPcmu() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeAudioFormatsType getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeAudioFormatsAudioPcmu from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeAudioFormatsAudioPcmu if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeAudioFormatsAudioPcmu. + */ + @Generated + public static RealtimeAudioFormatsAudioPcmu fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeAudioFormatsAudioPcmu deserializedRealtimeAudioFormatsAudioPcmu + = new RealtimeAudioFormatsAudioPcmu(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeAudioFormatsAudioPcmu.type + = RealtimeAudioFormatsType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeAudioFormatsAudioPcmu; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsType.java new file mode 100644 index 0000000000000..b38df842a4322 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsType.java @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Defines values for RealtimeAudioFormatsType. + */ +public final class RealtimeAudioFormatsType extends ExpandableStringEnum { + + /** + * Static value audio/pcm for RealtimeAudioFormatsType. + */ + @Generated + public static final RealtimeAudioFormatsType AUDIO_PCM = fromString("audio/pcm"); + + /** + * Static value audio/pcmu for RealtimeAudioFormatsType. + */ + @Generated + public static final RealtimeAudioFormatsType AUDIO_PCMU = fromString("audio/pcmu"); + + /** + * Static value audio/pcma for RealtimeAudioFormatsType. + */ + @Generated + public static final RealtimeAudioFormatsType AUDIO_PCMA = fromString("audio/pcma"); + + /** + * Creates a new instance of RealtimeAudioFormatsType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public RealtimeAudioFormatsType() { + } + + /** + * Creates or finds a RealtimeAudioFormatsType from its string representation. + * + * @param name a name to look for. + * @return the corresponding RealtimeAudioFormatsType. + */ + @Generated + public static RealtimeAudioFormatsType fromString(String name) { + return fromString(name, RealtimeAudioFormatsType.class); + } + + /** + * Gets known RealtimeAudioFormatsType values. + * + * @return known RealtimeAudioFormatsType values. + */ + @Generated + public static Collection values() { + return values(RealtimeAudioFormatsType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCall.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCall.java new file mode 100644 index 0000000000000..58076f41002ee --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCall.java @@ -0,0 +1,305 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Realtime function call item + * + * A function call item in a Realtime conversation. + */ +@Fluent +public final class RealtimeConversationItemFunctionCall extends RealtimeConversationItem { + + /* + * The type property. + */ + @Generated + private RealtimeConversationItemType type = RealtimeConversationItemType.FUNCTION_CALL; + + /* + * The unique ID of the item. This may be provided by the client or generated by the server. + */ + @Generated + private String id; + + /* + * Identifier for the API object being returned - always `realtime.item`. Optional when creating a new item. + */ + @Generated + private RealtimeConversationItemObject object; + + /* + * The status of the item. Has no effect on the conversation. + */ + @Generated + private RealtimeConversationItemFunctionCallStatus status; + + /* + * The ID of the function call. + */ + @Generated + private String callId; + + /* + * The name of the function being called. + */ + @Generated + private final String name; + + /* + * The arguments of the function call. This is a JSON-encoded string representing the arguments passed to the + * function, for example `{"arg1": "value1", "arg2": 42}`. + */ + @Generated + private final String arguments; + + /* + * The Unix timestamp (in seconds) for when the item was persisted. + */ + @Generated + private Long createdAt; + + /* + * The id of the response that produced this item, when applicable. + */ + @Generated + private String responseId; + + /** + * Creates an instance of RealtimeConversationItemFunctionCall class. + * + * @param name the name value to set. + * @param arguments the arguments value to set. + */ + @Generated + public RealtimeConversationItemFunctionCall(String name, String arguments) { + this.name = name; + this.arguments = arguments; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeConversationItemType getType() { + return this.type; + } + + /** + * Get the id property: The unique ID of the item. This may be provided by the client or generated by the server. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Set the id property: The unique ID of the item. This may be provided by the client or generated by the server. + * + * @param id the id value to set. + * @return the RealtimeConversationItemFunctionCall object itself. + */ + @Generated + public RealtimeConversationItemFunctionCall setId(String id) { + this.id = id; + return this; + } + + /** + * Get the object property: Identifier for the API object being returned - always `realtime.item`. Optional when + * creating a new item. + * + * @return the object value. + */ + @Generated + public RealtimeConversationItemObject getObject() { + return this.object; + } + + /** + * Get the status property: The status of the item. Has no effect on the conversation. + * + * @return the status value. + */ + @Generated + public RealtimeConversationItemFunctionCallStatus getStatus() { + return this.status; + } + + /** + * Set the status property: The status of the item. Has no effect on the conversation. + * + * @param status the status value to set. + * @return the RealtimeConversationItemFunctionCall object itself. + */ + @Generated + public RealtimeConversationItemFunctionCall setStatus(RealtimeConversationItemFunctionCallStatus status) { + this.status = status; + return this; + } + + /** + * Get the callId property: The ID of the function call. + * + * @return the callId value. + */ + @Generated + public String getCallId() { + return this.callId; + } + + /** + * Set the callId property: The ID of the function call. + * + * @param callId the callId value to set. + * @return the RealtimeConversationItemFunctionCall object itself. + */ + @Generated + public RealtimeConversationItemFunctionCall setCallId(String callId) { + this.callId = callId; + return this; + } + + /** + * Get the name property: The name of the function being called. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * Get the arguments property: The arguments of the function call. This is a JSON-encoded string representing the + * arguments passed to the function, for example `{"arg1": "value1", "arg2": 42}`. + * + * @return the arguments value. + */ + @Generated + public String getArguments() { + return this.arguments; + } + + /** + * Get the createdAt property: The Unix timestamp (in seconds) for when the item was persisted. + * + * @return the createdAt value. + */ + @Generated + public Long getCreatedAt() { + return this.createdAt; + } + + /** + * Get the responseId property: The id of the response that produced this item, when applicable. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeStringField("arguments", this.arguments); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("object", this.object == null ? null : this.object.toString()); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + jsonWriter.writeStringField("call_id", this.callId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeConversationItemFunctionCall from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeConversationItemFunctionCall if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeConversationItemFunctionCall. + */ + @Generated + public static RealtimeConversationItemFunctionCall fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String name = null; + String arguments = null; + RealtimeConversationItemType type = RealtimeConversationItemType.FUNCTION_CALL; + String id = null; + RealtimeConversationItemObject object = null; + RealtimeConversationItemFunctionCallStatus status = null; + String callId = null; + Long createdAt = null; + String responseId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("arguments".equals(fieldName)) { + arguments = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeConversationItemType.fromString(reader.getString()); + } else if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("object".equals(fieldName)) { + object = RealtimeConversationItemObject.fromString(reader.getString()); + } else if ("status".equals(fieldName)) { + status = RealtimeConversationItemFunctionCallStatus.fromString(reader.getString()); + } else if ("call_id".equals(fieldName)) { + callId = reader.getString(); + } else if ("created_at".equals(fieldName)) { + createdAt = reader.getNullable(JsonReader::getLong); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeConversationItemFunctionCall deserializedRealtimeConversationItemFunctionCall + = new RealtimeConversationItemFunctionCall(name, arguments); + deserializedRealtimeConversationItemFunctionCall.type = type; + deserializedRealtimeConversationItemFunctionCall.id = id; + deserializedRealtimeConversationItemFunctionCall.object = object; + deserializedRealtimeConversationItemFunctionCall.status = status; + deserializedRealtimeConversationItemFunctionCall.callId = callId; + deserializedRealtimeConversationItemFunctionCall.createdAt = createdAt; + deserializedRealtimeConversationItemFunctionCall.responseId = responseId; + return deserializedRealtimeConversationItemFunctionCall; + }); + } + + /** + * Set the object property: Identifier for the API object being returned - always `realtime.item`. Optional when + * creating a new item. + * + * @param object the object value to set. + * @return the RealtimeConversationItemFunctionCall object itself. + */ + @Generated + public RealtimeConversationItemFunctionCall setObject(RealtimeConversationItemObject object) { + this.object = object; + return this; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallOutput.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallOutput.java new file mode 100644 index 0000000000000..4aae826cd591a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallOutput.java @@ -0,0 +1,308 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Realtime function call output item + * + * A function call output item in a Realtime conversation. + */ +@Fluent +public final class RealtimeConversationItemFunctionCallOutput extends RealtimeConversationItem { + + /* + * The type property. + */ + @Generated + private RealtimeConversationItemType type = RealtimeConversationItemType.FUNCTION_CALL_OUTPUT; + + /* + * The unique ID of the item. This may be provided by the client or generated by the server. + */ + @Generated + private String id; + + /* + * Identifier for the API object being returned - always `realtime.item`. Optional when creating a new item. + */ + @Generated + private RealtimeConversationItemObject object; + + /* + * The status of the item. Has no effect on the conversation. + */ + @Generated + private RealtimeConversationItemFunctionCallOutputStatus status; + + /* + * The ID of the function call this output is for. + */ + @Generated + private final String callId; + + /* + * The output of the function call, this is free text and can contain any information or simply be empty. + */ + @Generated + private final String output; + + /* + * The Unix timestamp (in seconds) for when the item was persisted. + */ + @Generated + private Long createdAt; + + /* + * The id of the response that produced this item, when applicable. + */ + @Generated + private String responseId; + + /* + * The name of the function that was called. A Foundry extension: OpenAI's function_call_output does not carry the + * function name, only `call_id`. + */ + @Generated + private String name; + + /** + * Creates an instance of RealtimeConversationItemFunctionCallOutput class. + * + * @param callId the callId value to set. + * @param output the output value to set. + */ + @Generated + public RealtimeConversationItemFunctionCallOutput(String callId, String output) { + this.callId = callId; + this.output = output; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeConversationItemType getType() { + return this.type; + } + + /** + * Get the id property: The unique ID of the item. This may be provided by the client or generated by the server. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Set the id property: The unique ID of the item. This may be provided by the client or generated by the server. + * + * @param id the id value to set. + * @return the RealtimeConversationItemFunctionCallOutput object itself. + */ + @Generated + public RealtimeConversationItemFunctionCallOutput setId(String id) { + this.id = id; + return this; + } + + /** + * Get the object property: Identifier for the API object being returned - always `realtime.item`. Optional when + * creating a new item. + * + * @return the object value. + */ + @Generated + public RealtimeConversationItemObject getObject() { + return this.object; + } + + /** + * Get the status property: The status of the item. Has no effect on the conversation. + * + * @return the status value. + */ + @Generated + public RealtimeConversationItemFunctionCallOutputStatus getStatus() { + return this.status; + } + + /** + * Set the status property: The status of the item. Has no effect on the conversation. + * + * @param status the status value to set. + * @return the RealtimeConversationItemFunctionCallOutput object itself. + */ + @Generated + public RealtimeConversationItemFunctionCallOutput + setStatus(RealtimeConversationItemFunctionCallOutputStatus status) { + this.status = status; + return this; + } + + /** + * Get the callId property: The ID of the function call this output is for. + * + * @return the callId value. + */ + @Generated + public String getCallId() { + return this.callId; + } + + /** + * Get the output property: The output of the function call, this is free text and can contain any information or + * simply be empty. + * + * @return the output value. + */ + @Generated + public String getOutput() { + return this.output; + } + + /** + * Get the createdAt property: The Unix timestamp (in seconds) for when the item was persisted. + * + * @return the createdAt value. + */ + @Generated + public Long getCreatedAt() { + return this.createdAt; + } + + /** + * Get the responseId property: The id of the response that produced this item, when applicable. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * Get the name property: The name of the function that was called. A Foundry extension: OpenAI's + * function_call_output does not carry the function name, only `call_id`. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * Set the name property: The name of the function that was called. A Foundry extension: OpenAI's + * function_call_output does not carry the function name, only `call_id`. + * + * @param name the name value to set. + * @return the RealtimeConversationItemFunctionCallOutput object itself. + */ + @Generated + public RealtimeConversationItemFunctionCallOutput setName(String name) { + this.name = name; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("call_id", this.callId); + jsonWriter.writeStringField("output", this.output); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("object", this.object == null ? null : this.object.toString()); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + jsonWriter.writeStringField("name", this.name); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeConversationItemFunctionCallOutput from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeConversationItemFunctionCallOutput if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeConversationItemFunctionCallOutput. + */ + @Generated + public static RealtimeConversationItemFunctionCallOutput fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String callId = null; + String output = null; + RealtimeConversationItemType type = RealtimeConversationItemType.FUNCTION_CALL_OUTPUT; + String id = null; + RealtimeConversationItemObject object = null; + RealtimeConversationItemFunctionCallOutputStatus status = null; + Long createdAt = null; + String responseId = null; + String name = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("call_id".equals(fieldName)) { + callId = reader.getString(); + } else if ("output".equals(fieldName)) { + output = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeConversationItemType.fromString(reader.getString()); + } else if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("object".equals(fieldName)) { + object = RealtimeConversationItemObject.fromString(reader.getString()); + } else if ("status".equals(fieldName)) { + status = RealtimeConversationItemFunctionCallOutputStatus.fromString(reader.getString()); + } else if ("created_at".equals(fieldName)) { + createdAt = reader.getNullable(JsonReader::getLong); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else if ("name".equals(fieldName)) { + name = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeConversationItemFunctionCallOutput deserializedRealtimeConversationItemFunctionCallOutput + = new RealtimeConversationItemFunctionCallOutput(callId, output); + deserializedRealtimeConversationItemFunctionCallOutput.type = type; + deserializedRealtimeConversationItemFunctionCallOutput.id = id; + deserializedRealtimeConversationItemFunctionCallOutput.object = object; + deserializedRealtimeConversationItemFunctionCallOutput.status = status; + deserializedRealtimeConversationItemFunctionCallOutput.createdAt = createdAt; + deserializedRealtimeConversationItemFunctionCallOutput.responseId = responseId; + deserializedRealtimeConversationItemFunctionCallOutput.name = name; + return deserializedRealtimeConversationItemFunctionCallOutput; + }); + } + + /** + * Set the object property: Identifier for the API object being returned - always `realtime.item`. Optional when + * creating a new item. + * + * @param object the object value to set. + * @return the RealtimeConversationItemFunctionCallOutput object itself. + */ + @Generated + public RealtimeConversationItemFunctionCallOutput setObject(RealtimeConversationItemObject object) { + this.object = object; + return this; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallOutputStatus.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallOutputStatus.java new file mode 100644 index 0000000000000..a683ee801e72b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallOutputStatus.java @@ -0,0 +1,62 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeConversationItemFunctionCallOutputStatus. + */ +public enum RealtimeConversationItemFunctionCallOutputStatus { + /** + * Enum value completed. + */ + COMPLETED("completed"), + + /** + * Enum value incomplete. + */ + INCOMPLETE("incomplete"), + + /** + * Enum value in_progress. + */ + IN_PROGRESS("in_progress"); + + /** + * The actual serialized value for a RealtimeConversationItemFunctionCallOutputStatus instance. + */ + private final String value; + + RealtimeConversationItemFunctionCallOutputStatus(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeConversationItemFunctionCallOutputStatus instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeConversationItemFunctionCallOutputStatus object, or null if unable to parse. + */ + public static RealtimeConversationItemFunctionCallOutputStatus fromString(String value) { + if (value == null) { + return null; + } + RealtimeConversationItemFunctionCallOutputStatus[] items + = RealtimeConversationItemFunctionCallOutputStatus.values(); + for (RealtimeConversationItemFunctionCallOutputStatus item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallStatus.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallStatus.java new file mode 100644 index 0000000000000..c17087eddc503 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallStatus.java @@ -0,0 +1,61 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeConversationItemFunctionCallStatus. + */ +public enum RealtimeConversationItemFunctionCallStatus { + /** + * Enum value completed. + */ + COMPLETED("completed"), + + /** + * Enum value incomplete. + */ + INCOMPLETE("incomplete"), + + /** + * Enum value in_progress. + */ + IN_PROGRESS("in_progress"); + + /** + * The actual serialized value for a RealtimeConversationItemFunctionCallStatus instance. + */ + private final String value; + + RealtimeConversationItemFunctionCallStatus(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeConversationItemFunctionCallStatus instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeConversationItemFunctionCallStatus object, or null if unable to parse. + */ + public static RealtimeConversationItemFunctionCallStatus fromString(String value) { + if (value == null) { + return null; + } + RealtimeConversationItemFunctionCallStatus[] items = RealtimeConversationItemFunctionCallStatus.values(); + for (RealtimeConversationItemFunctionCallStatus item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemObject.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemObject.java new file mode 100644 index 0000000000000..c82151c1abf54 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemObject.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Defines values for RealtimeConversationItemObject. + */ +public final class RealtimeConversationItemObject extends ExpandableStringEnum { + + /** + * Static value realtime.item for RealtimeConversationItemObject. + */ + @Generated + public static final RealtimeConversationItemObject REALTIME_ITEM = fromString("realtime.item"); + + /** + * Creates a new instance of RealtimeConversationItemObject value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public RealtimeConversationItemObject() { + } + + /** + * Creates or finds a RealtimeConversationItemObject from its string representation. + * + * @param name a name to look for. + * @return the corresponding RealtimeConversationItemObject. + */ + @Generated + public static RealtimeConversationItemObject fromString(String name) { + return fromString(name, RealtimeConversationItemObject.class); + } + + /** + * Gets known RealtimeConversationItemObject values. + * + * @return known RealtimeConversationItemObject values. + */ + @Generated + public static Collection values() { + return values(RealtimeConversationItemObject.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemType.java new file mode 100644 index 0000000000000..c202715a14f76 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemType.java @@ -0,0 +1,87 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Defines values for RealtimeConversationItemType. + */ +public final class RealtimeConversationItemType extends ExpandableStringEnum { + + /** + * Static value function_call for RealtimeConversationItemType. + */ + @Generated + public static final RealtimeConversationItemType FUNCTION_CALL = fromString("function_call"); + + /** + * Static value function_call_output for RealtimeConversationItemType. + */ + @Generated + public static final RealtimeConversationItemType FUNCTION_CALL_OUTPUT = fromString("function_call_output"); + + /** + * Static value mcp_approval_response for RealtimeConversationItemType. + */ + @Generated + public static final RealtimeConversationItemType MCP_APPROVAL_RESPONSE = fromString("mcp_approval_response"); + + /** + * Static value mcp_list_tools for RealtimeConversationItemType. + */ + @Generated + public static final RealtimeConversationItemType MCP_LIST_TOOLS = fromString("mcp_list_tools"); + + /** + * Static value mcp_call for RealtimeConversationItemType. + */ + @Generated + public static final RealtimeConversationItemType MCP_CALL = fromString("mcp_call"); + + /** + * Static value mcp_approval_request for RealtimeConversationItemType. + */ + @Generated + public static final RealtimeConversationItemType MCP_APPROVAL_REQUEST = fromString("mcp_approval_request"); + + /** + * Static value message for RealtimeConversationItemType. + */ + @Generated + public static final RealtimeConversationItemType MESSAGE = fromString("message"); + + /** + * Creates a new instance of RealtimeConversationItemType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public RealtimeConversationItemType() { + } + + /** + * Creates or finds a RealtimeConversationItemType from its string representation. + * + * @param name a name to look for. + * @return the corresponding RealtimeConversationItemType. + */ + @Generated + public static RealtimeConversationItemType fromString(String name) { + return fromString(name, RealtimeConversationItemType.class); + } + + /** + * Gets known RealtimeConversationItemType values. + * + * @return known RealtimeConversationItemType values. + */ + @Generated + public static Collection values() { + return values(RealtimeConversationItemType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPApprovalRequest.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPApprovalRequest.java new file mode 100644 index 0000000000000..8c11762cb2ca0 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPApprovalRequest.java @@ -0,0 +1,213 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Realtime MCP approval request + * + * A Realtime item requesting human approval of a tool invocation. + */ +@Immutable +public final class RealtimeMCPApprovalRequest extends RealtimeConversationItem { + + /* + * The type property. + */ + @Generated + private RealtimeConversationItemType type = RealtimeConversationItemType.MCP_APPROVAL_REQUEST; + + /* + * The unique ID of the approval request. + */ + @Generated + private final String id; + + /* + * The label of the MCP server making the request. + */ + @Generated + private final String serverLabel; + + /* + * The name of the tool to run. + */ + @Generated + private final String name; + + /* + * A JSON string of arguments for the tool. + */ + @Generated + private final String arguments; + + /* + * The Unix timestamp (in seconds) for when the item was persisted. + */ + @Generated + private Long createdAt; + + /* + * The id of the response that produced this item, when applicable. + */ + @Generated + private String responseId; + + /** + * Creates an instance of RealtimeMCPApprovalRequest class. + * + * @param id the id value to set. + * @param serverLabel the serverLabel value to set. + * @param name the name value to set. + * @param arguments the arguments value to set. + */ + @Generated + public RealtimeMCPApprovalRequest(String id, String serverLabel, String name, String arguments) { + this.id = id; + this.serverLabel = serverLabel; + this.name = name; + this.arguments = arguments; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeConversationItemType getType() { + return this.type; + } + + /** + * Get the id property: The unique ID of the approval request. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the serverLabel property: The label of the MCP server making the request. + * + * @return the serverLabel value. + */ + @Generated + public String getServerLabel() { + return this.serverLabel; + } + + /** + * Get the name property: The name of the tool to run. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * Get the arguments property: A JSON string of arguments for the tool. + * + * @return the arguments value. + */ + @Generated + public String getArguments() { + return this.arguments; + } + + /** + * Get the createdAt property: The Unix timestamp (in seconds) for when the item was persisted. + * + * @return the createdAt value. + */ + @Generated + public Long getCreatedAt() { + return this.createdAt; + } + + /** + * Get the responseId property: The id of the response that produced this item, when applicable. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("server_label", this.serverLabel); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeStringField("arguments", this.arguments); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeMCPApprovalRequest from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeMCPApprovalRequest if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeMCPApprovalRequest. + */ + @Generated + public static RealtimeMCPApprovalRequest fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + String serverLabel = null; + String name = null; + String arguments = null; + RealtimeConversationItemType type = RealtimeConversationItemType.MCP_APPROVAL_REQUEST; + Long createdAt = null; + String responseId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("server_label".equals(fieldName)) { + serverLabel = reader.getString(); + } else if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("arguments".equals(fieldName)) { + arguments = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeConversationItemType.fromString(reader.getString()); + } else if ("created_at".equals(fieldName)) { + createdAt = reader.getNullable(JsonReader::getLong); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeMCPApprovalRequest deserializedRealtimeMCPApprovalRequest + = new RealtimeMCPApprovalRequest(id, serverLabel, name, arguments); + deserializedRealtimeMCPApprovalRequest.type = type; + deserializedRealtimeMCPApprovalRequest.createdAt = createdAt; + deserializedRealtimeMCPApprovalRequest.responseId = responseId; + return deserializedRealtimeMCPApprovalRequest; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPApprovalResponse.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPApprovalResponse.java new file mode 100644 index 0000000000000..bf719984e0a17 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPApprovalResponse.java @@ -0,0 +1,224 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Realtime MCP approval response + * + * A Realtime item responding to an MCP approval request. + */ +@Fluent +public final class RealtimeMCPApprovalResponse extends RealtimeConversationItem { + + /* + * The type property. + */ + @Generated + private RealtimeConversationItemType type = RealtimeConversationItemType.MCP_APPROVAL_RESPONSE; + + /* + * The unique ID of the approval response. + */ + @Generated + private final String id; + + /* + * The ID of the approval request being answered. + */ + @Generated + private final String approvalRequestId; + + /* + * Whether the request was approved. + */ + @Generated + private final boolean approve; + + /* + * The reason property. + */ + @Generated + private String reason; + + /* + * The Unix timestamp (in seconds) for when the item was persisted. + */ + @Generated + private Long createdAt; + + /* + * The id of the response that produced this item, when applicable. + */ + @Generated + private String responseId; + + /** + * Creates an instance of RealtimeMCPApprovalResponse class. + * + * @param id the id value to set. + * @param approvalRequestId the approvalRequestId value to set. + * @param approve the approve value to set. + */ + @Generated + public RealtimeMCPApprovalResponse(String id, String approvalRequestId, boolean approve) { + this.id = id; + this.approvalRequestId = approvalRequestId; + this.approve = approve; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeConversationItemType getType() { + return this.type; + } + + /** + * Get the id property: The unique ID of the approval response. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the approvalRequestId property: The ID of the approval request being answered. + * + * @return the approvalRequestId value. + */ + @Generated + public String getApprovalRequestId() { + return this.approvalRequestId; + } + + /** + * Get the approve property: Whether the request was approved. + * + * @return the approve value. + */ + @Generated + public boolean isApprove() { + return this.approve; + } + + /** + * Get the reason property: The reason property. + * + * @return the reason value. + */ + @Generated + public String getReason() { + return this.reason; + } + + /** + * Set the reason property: The reason property. + * + * @param reason the reason value to set. + * @return the RealtimeMCPApprovalResponse object itself. + */ + @Generated + public RealtimeMCPApprovalResponse setReason(String reason) { + this.reason = reason; + return this; + } + + /** + * Get the createdAt property: The Unix timestamp (in seconds) for when the item was persisted. + * + * @return the createdAt value. + */ + @Generated + public Long getCreatedAt() { + return this.createdAt; + } + + /** + * Get the responseId property: The id of the response that produced this item, when applicable. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("approval_request_id", this.approvalRequestId); + jsonWriter.writeBooleanField("approve", this.approve); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("reason", this.reason); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeMCPApprovalResponse from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeMCPApprovalResponse if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeMCPApprovalResponse. + */ + @Generated + public static RealtimeMCPApprovalResponse fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + String approvalRequestId = null; + boolean approve = false; + RealtimeConversationItemType type = RealtimeConversationItemType.MCP_APPROVAL_RESPONSE; + String reason = null; + Long createdAt = null; + String responseId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("approval_request_id".equals(fieldName)) { + approvalRequestId = reader.getString(); + } else if ("approve".equals(fieldName)) { + approve = reader.getBoolean(); + } else if ("type".equals(fieldName)) { + type = RealtimeConversationItemType.fromString(reader.getString()); + } else if ("reason".equals(fieldName)) { + reason = reader.getString(); + } else if ("created_at".equals(fieldName)) { + createdAt = reader.getNullable(JsonReader::getLong); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeMCPApprovalResponse deserializedRealtimeMCPApprovalResponse + = new RealtimeMCPApprovalResponse(id, approvalRequestId, approve); + deserializedRealtimeMCPApprovalResponse.type = type; + deserializedRealtimeMCPApprovalResponse.reason = reason; + deserializedRealtimeMCPApprovalResponse.createdAt = createdAt; + deserializedRealtimeMCPApprovalResponse.responseId = responseId; + return deserializedRealtimeMCPApprovalResponse; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPError.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPError.java new file mode 100644 index 0000000000000..0b4e58a5445c1 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPError.java @@ -0,0 +1,109 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeMCPError model. + */ +@Immutable +public class RealtimeMCPError implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private RealtimeMcpErrorType type = RealtimeMcpErrorType.fromString("RealtimeMCPError"); + + /** + * Creates an instance of RealtimeMCPError class. + */ + @Generated + public RealtimeMCPError() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public RealtimeMcpErrorType getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeMCPError from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeMCPError if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeMCPError. + */ + @Generated + public static RealtimeMCPError fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("protocol_error".equals(discriminatorValue)) { + return RealtimeMCPProtocolError.fromJson(readerToUse.reset()); + } else if ("tool_execution_error".equals(discriminatorValue)) { + return RealtimeMCPToolExecutionError.fromJson(readerToUse.reset()); + } else if ("http_error".equals(discriminatorValue)) { + return RealtimeMCPHttpError.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static RealtimeMCPError fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeMCPError deserializedRealtimeMCPError = new RealtimeMCPError(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeMCPError.type = RealtimeMcpErrorType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeMCPError; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPHttpError.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPHttpError.java new file mode 100644 index 0000000000000..96b74618a3f6c --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPHttpError.java @@ -0,0 +1,126 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Realtime MCP HTTP error. + */ +@Immutable +public final class RealtimeMCPHttpError extends RealtimeMCPError { + + /* + * The type property. + */ + @Generated + private RealtimeMcpErrorType type = RealtimeMcpErrorType.HTTP_ERROR; + + /* + * The code property. + */ + @Generated + private final long code; + + /* + * The message property. + */ + @Generated + private final String message; + + /** + * Creates an instance of RealtimeMCPHttpError class. + * + * @param code the code value to set. + * @param message the message value to set. + */ + @Generated + public RealtimeMCPHttpError(long code, String message) { + this.code = code; + this.message = message; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeMcpErrorType getType() { + return this.type; + } + + /** + * Get the code property: The code property. + * + * @return the code value. + */ + @Generated + public long getCode() { + return this.code; + } + + /** + * Get the message property: The message property. + * + * @return the message value. + */ + @Generated + public String getMessage() { + return this.message; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeLongField("code", this.code); + jsonWriter.writeStringField("message", this.message); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeMCPHttpError from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeMCPHttpError if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeMCPHttpError. + */ + @Generated + public static RealtimeMCPHttpError fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + long code = 0L; + String message = null; + RealtimeMcpErrorType type = RealtimeMcpErrorType.HTTP_ERROR; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("code".equals(fieldName)) { + code = reader.getLong(); + } else if ("message".equals(fieldName)) { + message = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeMcpErrorType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeMCPHttpError deserializedRealtimeMCPHttpError = new RealtimeMCPHttpError(code, message); + deserializedRealtimeMCPHttpError.type = type; + return deserializedRealtimeMCPHttpError; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPListTools.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPListTools.java new file mode 100644 index 0000000000000..e62d594024485 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPListTools.java @@ -0,0 +1,202 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Realtime MCP list tools + * + * A Realtime item listing tools available on an MCP server. + */ +@Fluent +public final class RealtimeMCPListTools extends RealtimeConversationItem { + + /* + * The type property. + */ + @Generated + private RealtimeConversationItemType type = RealtimeConversationItemType.MCP_LIST_TOOLS; + + /* + * The unique ID of the list. + */ + @Generated + private String id; + + /* + * The label of the MCP server. + */ + @Generated + private final String serverLabel; + + /* + * The tools available on the server. + */ + @Generated + private final List tools; + + /* + * The Unix timestamp (in seconds) for when the item was persisted. + */ + @Generated + private Long createdAt; + + /* + * The id of the response that produced this item, when applicable. + */ + @Generated + private String responseId; + + /** + * Creates an instance of RealtimeMCPListTools class. + * + * @param serverLabel the serverLabel value to set. + * @param tools the tools value to set. + */ + @Generated + public RealtimeMCPListTools(String serverLabel, List tools) { + this.serverLabel = serverLabel; + this.tools = tools; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeConversationItemType getType() { + return this.type; + } + + /** + * Get the id property: The unique ID of the list. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Set the id property: The unique ID of the list. + * + * @param id the id value to set. + * @return the RealtimeMCPListTools object itself. + */ + @Generated + public RealtimeMCPListTools setId(String id) { + this.id = id; + return this; + } + + /** + * Get the serverLabel property: The label of the MCP server. + * + * @return the serverLabel value. + */ + @Generated + public String getServerLabel() { + return this.serverLabel; + } + + /** + * Get the tools property: The tools available on the server. + * + * @return the tools value. + */ + @Generated + public List getTools() { + return this.tools; + } + + /** + * Get the createdAt property: The Unix timestamp (in seconds) for when the item was persisted. + * + * @return the createdAt value. + */ + @Generated + public Long getCreatedAt() { + return this.createdAt; + } + + /** + * Get the responseId property: The id of the response that produced this item, when applicable. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("server_label", this.serverLabel); + jsonWriter.writeArrayField("tools", this.tools, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("id", this.id); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeMCPListTools from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeMCPListTools if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeMCPListTools. + */ + @Generated + public static RealtimeMCPListTools fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String serverLabel = null; + List tools = null; + RealtimeConversationItemType type = RealtimeConversationItemType.MCP_LIST_TOOLS; + String id = null; + Long createdAt = null; + String responseId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("server_label".equals(fieldName)) { + serverLabel = reader.getString(); + } else if ("tools".equals(fieldName)) { + tools = reader.readArray(reader1 -> McpListToolsTool.fromJson(reader1)); + } else if ("type".equals(fieldName)) { + type = RealtimeConversationItemType.fromString(reader.getString()); + } else if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("created_at".equals(fieldName)) { + createdAt = reader.getNullable(JsonReader::getLong); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeMCPListTools deserializedRealtimeMCPListTools = new RealtimeMCPListTools(serverLabel, tools); + deserializedRealtimeMCPListTools.type = type; + deserializedRealtimeMCPListTools.id = id; + deserializedRealtimeMCPListTools.createdAt = createdAt; + deserializedRealtimeMCPListTools.responseId = responseId; + return deserializedRealtimeMCPListTools; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPProtocolError.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPProtocolError.java new file mode 100644 index 0000000000000..d8076fa4e40bd --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPProtocolError.java @@ -0,0 +1,126 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Realtime MCP protocol error. + */ +@Immutable +public final class RealtimeMCPProtocolError extends RealtimeMCPError { + + /* + * The type property. + */ + @Generated + private RealtimeMcpErrorType type = RealtimeMcpErrorType.PROTOCOL_ERROR; + + /* + * The code property. + */ + @Generated + private final long code; + + /* + * The message property. + */ + @Generated + private final String message; + + /** + * Creates an instance of RealtimeMCPProtocolError class. + * + * @param code the code value to set. + * @param message the message value to set. + */ + @Generated + public RealtimeMCPProtocolError(long code, String message) { + this.code = code; + this.message = message; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeMcpErrorType getType() { + return this.type; + } + + /** + * Get the code property: The code property. + * + * @return the code value. + */ + @Generated + public long getCode() { + return this.code; + } + + /** + * Get the message property: The message property. + * + * @return the message value. + */ + @Generated + public String getMessage() { + return this.message; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeLongField("code", this.code); + jsonWriter.writeStringField("message", this.message); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeMCPProtocolError from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeMCPProtocolError if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeMCPProtocolError. + */ + @Generated + public static RealtimeMCPProtocolError fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + long code = 0L; + String message = null; + RealtimeMcpErrorType type = RealtimeMcpErrorType.PROTOCOL_ERROR; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("code".equals(fieldName)) { + code = reader.getLong(); + } else if ("message".equals(fieldName)) { + message = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeMcpErrorType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeMCPProtocolError deserializedRealtimeMCPProtocolError = new RealtimeMCPProtocolError(code, message); + deserializedRealtimeMCPProtocolError.type = type; + return deserializedRealtimeMCPProtocolError; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPToolCall.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPToolCall.java new file mode 100644 index 0000000000000..52f9963010dd1 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPToolCall.java @@ -0,0 +1,312 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Realtime MCP tool call + * + * A Realtime item representing an invocation of a tool on an MCP server. + */ +@Fluent +public final class RealtimeMCPToolCall extends RealtimeConversationItem { + + /* + * The type property. + */ + @Generated + private RealtimeConversationItemType type = RealtimeConversationItemType.MCP_CALL; + + /* + * The unique ID of the tool call. + */ + @Generated + private final String id; + + /* + * The label of the MCP server running the tool. + */ + @Generated + private final String serverLabel; + + /* + * The name of the tool that was run. + */ + @Generated + private final String name; + + /* + * A JSON string of the arguments passed to the tool. + */ + @Generated + private final String arguments; + + /* + * The approval_request_id property. + */ + @Generated + private String approvalRequestId; + + /* + * The output property. + */ + @Generated + private String output; + + /* + * The error property. + */ + @Generated + private RealtimeMCPError error; + + /* + * The Unix timestamp (in seconds) for when the item was persisted. + */ + @Generated + private Long createdAt; + + /* + * The id of the response that produced this item, when applicable. + */ + @Generated + private String responseId; + + /** + * Creates an instance of RealtimeMCPToolCall class. + * + * @param id the id value to set. + * @param serverLabel the serverLabel value to set. + * @param name the name value to set. + * @param arguments the arguments value to set. + */ + @Generated + public RealtimeMCPToolCall(String id, String serverLabel, String name, String arguments) { + this.id = id; + this.serverLabel = serverLabel; + this.name = name; + this.arguments = arguments; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeConversationItemType getType() { + return this.type; + } + + /** + * Get the id property: The unique ID of the tool call. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the serverLabel property: The label of the MCP server running the tool. + * + * @return the serverLabel value. + */ + @Generated + public String getServerLabel() { + return this.serverLabel; + } + + /** + * Get the name property: The name of the tool that was run. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * Get the arguments property: A JSON string of the arguments passed to the tool. + * + * @return the arguments value. + */ + @Generated + public String getArguments() { + return this.arguments; + } + + /** + * Get the approvalRequestId property: The approval_request_id property. + * + * @return the approvalRequestId value. + */ + @Generated + public String getApprovalRequestId() { + return this.approvalRequestId; + } + + /** + * Set the approvalRequestId property: The approval_request_id property. + * + * @param approvalRequestId the approvalRequestId value to set. + * @return the RealtimeMCPToolCall object itself. + */ + @Generated + public RealtimeMCPToolCall setApprovalRequestId(String approvalRequestId) { + this.approvalRequestId = approvalRequestId; + return this; + } + + /** + * Get the output property: The output property. + * + * @return the output value. + */ + @Generated + public String getOutput() { + return this.output; + } + + /** + * Set the output property: The output property. + * + * @param output the output value to set. + * @return the RealtimeMCPToolCall object itself. + */ + @Generated + public RealtimeMCPToolCall setOutput(String output) { + this.output = output; + return this; + } + + /** + * Get the error property: The error property. + * + * @return the error value. + */ + @Generated + public RealtimeMCPError getError() { + return this.error; + } + + /** + * Set the error property: The error property. + * + * @param error the error value to set. + * @return the RealtimeMCPToolCall object itself. + */ + @Generated + public RealtimeMCPToolCall setError(RealtimeMCPError error) { + this.error = error; + return this; + } + + /** + * Get the createdAt property: The Unix timestamp (in seconds) for when the item was persisted. + * + * @return the createdAt value. + */ + @Generated + public Long getCreatedAt() { + return this.createdAt; + } + + /** + * Get the responseId property: The id of the response that produced this item, when applicable. + * + * @return the responseId value. + */ + @Generated + public String getResponseId() { + return this.responseId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("server_label", this.serverLabel); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeStringField("arguments", this.arguments); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("approval_request_id", this.approvalRequestId); + jsonWriter.writeStringField("output", this.output); + jsonWriter.writeJsonField("error", this.error); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeMCPToolCall from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeMCPToolCall if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeMCPToolCall. + */ + @Generated + public static RealtimeMCPToolCall fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + String serverLabel = null; + String name = null; + String arguments = null; + RealtimeConversationItemType type = RealtimeConversationItemType.MCP_CALL; + String approvalRequestId = null; + String output = null; + RealtimeMCPError error = null; + Long createdAt = null; + String responseId = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("server_label".equals(fieldName)) { + serverLabel = reader.getString(); + } else if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("arguments".equals(fieldName)) { + arguments = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeConversationItemType.fromString(reader.getString()); + } else if ("approval_request_id".equals(fieldName)) { + approvalRequestId = reader.getString(); + } else if ("output".equals(fieldName)) { + output = reader.getString(); + } else if ("error".equals(fieldName)) { + error = RealtimeMCPError.fromJson(reader); + } else if ("created_at".equals(fieldName)) { + createdAt = reader.getNullable(JsonReader::getLong); + } else if ("response_id".equals(fieldName)) { + responseId = reader.getString(); + } else { + reader.skipChildren(); + } + } + RealtimeMCPToolCall deserializedRealtimeMCPToolCall + = new RealtimeMCPToolCall(id, serverLabel, name, arguments); + deserializedRealtimeMCPToolCall.type = type; + deserializedRealtimeMCPToolCall.approvalRequestId = approvalRequestId; + deserializedRealtimeMCPToolCall.output = output; + deserializedRealtimeMCPToolCall.error = error; + deserializedRealtimeMCPToolCall.createdAt = createdAt; + deserializedRealtimeMCPToolCall.responseId = responseId; + return deserializedRealtimeMCPToolCall; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPToolExecutionError.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPToolExecutionError.java new file mode 100644 index 0000000000000..13dcf21512bdf --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMCPToolExecutionError.java @@ -0,0 +1,105 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Realtime MCP tool execution error. + */ +@Immutable +public final class RealtimeMCPToolExecutionError extends RealtimeMCPError { + + /* + * The type property. + */ + @Generated + private RealtimeMcpErrorType type = RealtimeMcpErrorType.TOOL_EXECUTION_ERROR; + + /* + * The message property. + */ + @Generated + private final String message; + + /** + * Creates an instance of RealtimeMCPToolExecutionError class. + * + * @param message the message value to set. + */ + @Generated + public RealtimeMCPToolExecutionError(String message) { + this.message = message; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public RealtimeMcpErrorType getType() { + return this.type; + } + + /** + * Get the message property: The message property. + * + * @return the message value. + */ + @Generated + public String getMessage() { + return this.message; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("message", this.message); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeMCPToolExecutionError from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeMCPToolExecutionError if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the RealtimeMCPToolExecutionError. + */ + @Generated + public static RealtimeMCPToolExecutionError fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String message = null; + RealtimeMcpErrorType type = RealtimeMcpErrorType.TOOL_EXECUTION_ERROR; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("message".equals(fieldName)) { + message = reader.getString(); + } else if ("type".equals(fieldName)) { + type = RealtimeMcpErrorType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + RealtimeMCPToolExecutionError deserializedRealtimeMCPToolExecutionError + = new RealtimeMCPToolExecutionError(message); + deserializedRealtimeMCPToolExecutionError.type = type; + return deserializedRealtimeMCPToolExecutionError; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMcpErrorType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMcpErrorType.java new file mode 100644 index 0000000000000..830f6204b41ea --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeMcpErrorType.java @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Defines values for RealtimeMcpErrorType. + */ +public final class RealtimeMcpErrorType extends ExpandableStringEnum { + + /** + * Static value protocol_error for RealtimeMcpErrorType. + */ + @Generated + public static final RealtimeMcpErrorType PROTOCOL_ERROR = fromString("protocol_error"); + + /** + * Static value tool_execution_error for RealtimeMcpErrorType. + */ + @Generated + public static final RealtimeMcpErrorType TOOL_EXECUTION_ERROR = fromString("tool_execution_error"); + + /** + * Static value http_error for RealtimeMcpErrorType. + */ + @Generated + public static final RealtimeMcpErrorType HTTP_ERROR = fromString("http_error"); + + /** + * Creates a new instance of RealtimeMcpErrorType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public RealtimeMcpErrorType() { + } + + /** + * Creates or finds a RealtimeMcpErrorType from its string representation. + * + * @param name a name to look for. + * @return the corresponding RealtimeMcpErrorType. + */ + @Generated + public static RealtimeMcpErrorType fromString(String name) { + return fromString(name, RealtimeMcpErrorType.class); + } + + /** + * Gets known RealtimeMcpErrorType values. + * + * @return known RealtimeMcpErrorType values. + */ + @Generated + public static Collection values() { + return values(RealtimeMcpErrorType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetails.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetails.java new file mode 100644 index 0000000000000..0be8aa6628a93 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetails.java @@ -0,0 +1,120 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeResponseStatusDetails model. + */ +@Immutable +public final class RealtimeResponseStatusDetails implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private RealtimeResponseStatusDetailsType type; + + /* + * The reason property. + */ + @Generated + private RealtimeResponseStatusDetailsReason reason; + + /* + * The error property. + */ + @Generated + private RealtimeResponseStatusDetailsError error; + + /** + * Creates an instance of RealtimeResponseStatusDetails class. + */ + @Generated + private RealtimeResponseStatusDetails() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public RealtimeResponseStatusDetailsType getType() { + return this.type; + } + + /** + * Get the reason property: The reason property. + * + * @return the reason value. + */ + @Generated + public RealtimeResponseStatusDetailsReason getReason() { + return this.reason; + } + + /** + * Get the error property: The error property. + * + * @return the error value. + */ + @Generated + public RealtimeResponseStatusDetailsError getError() { + return this.error; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("reason", this.reason == null ? null : this.reason.toString()); + jsonWriter.writeJsonField("error", this.error); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeResponseStatusDetails from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeResponseStatusDetails if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeResponseStatusDetails. + */ + @Generated + public static RealtimeResponseStatusDetails fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeResponseStatusDetails deserializedRealtimeResponseStatusDetails + = new RealtimeResponseStatusDetails(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeResponseStatusDetails.type + = RealtimeResponseStatusDetailsType.fromString(reader.getString()); + } else if ("reason".equals(fieldName)) { + deserializedRealtimeResponseStatusDetails.reason + = RealtimeResponseStatusDetailsReason.fromString(reader.getString()); + } else if ("error".equals(fieldName)) { + deserializedRealtimeResponseStatusDetails.error + = RealtimeResponseStatusDetailsError.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeResponseStatusDetails; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsError.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsError.java new file mode 100644 index 0000000000000..d14f0dd0a7b5a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsError.java @@ -0,0 +1,98 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeResponseStatusDetailsError model. + */ +@Immutable +public final class RealtimeResponseStatusDetailsError implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private String type; + + /* + * The code property. + */ + @Generated + private String code; + + /** + * Creates an instance of RealtimeResponseStatusDetailsError class. + */ + @Generated + private RealtimeResponseStatusDetailsError() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * Get the code property: The code property. + * + * @return the code value. + */ + @Generated + public String getCode() { + return this.code; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("code", this.code); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeResponseStatusDetailsError from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeResponseStatusDetailsError if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeResponseStatusDetailsError. + */ + @Generated + public static RealtimeResponseStatusDetailsError fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeResponseStatusDetailsError deserializedRealtimeResponseStatusDetailsError + = new RealtimeResponseStatusDetailsError(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedRealtimeResponseStatusDetailsError.type = reader.getString(); + } else if ("code".equals(fieldName)) { + deserializedRealtimeResponseStatusDetailsError.code = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeResponseStatusDetailsError; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsReason.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsReason.java new file mode 100644 index 0000000000000..d82522f423d91 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsReason.java @@ -0,0 +1,66 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeResponseStatusDetailsReason. + */ +public enum RealtimeResponseStatusDetailsReason { + /** + * Enum value turn_detected. + */ + TURN_DETECTED("turn_detected"), + + /** + * Enum value client_cancelled. + */ + CLIENT_CANCELLED("client_cancelled"), + + /** + * Enum value max_output_tokens. + */ + MAX_OUTPUT_TOKENS("max_output_tokens"), + + /** + * Enum value content_filter. + */ + CONTENT_FILTER("content_filter"); + + /** + * The actual serialized value for a RealtimeResponseStatusDetailsReason instance. + */ + private final String value; + + RealtimeResponseStatusDetailsReason(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeResponseStatusDetailsReason instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeResponseStatusDetailsReason object, or null if unable to parse. + */ + public static RealtimeResponseStatusDetailsReason fromString(String value) { + if (value == null) { + return null; + } + RealtimeResponseStatusDetailsReason[] items = RealtimeResponseStatusDetailsReason.values(); + for (RealtimeResponseStatusDetailsReason item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsType.java new file mode 100644 index 0000000000000..acec6b4fb4b28 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsType.java @@ -0,0 +1,66 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for RealtimeResponseStatusDetailsType. + */ +public enum RealtimeResponseStatusDetailsType { + /** + * Enum value completed. + */ + COMPLETED("completed"), + + /** + * Enum value cancelled. + */ + CANCELLED("cancelled"), + + /** + * Enum value failed. + */ + FAILED("failed"), + + /** + * Enum value incomplete. + */ + INCOMPLETE("incomplete"); + + /** + * The actual serialized value for a RealtimeResponseStatusDetailsType instance. + */ + private final String value; + + RealtimeResponseStatusDetailsType(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a RealtimeResponseStatusDetailsType instance. + * + * @param value the serialized value to parse. + * @return the parsed RealtimeResponseStatusDetailsType object, or null if unable to parse. + */ + public static RealtimeResponseStatusDetailsType fromString(String value) { + if (value == null) { + return null; + } + RealtimeResponseStatusDetailsType[] items = RealtimeResponseStatusDetailsType.values(); + for (RealtimeResponseStatusDetailsType item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsage.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsage.java new file mode 100644 index 0000000000000..698eaf60b3509 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsage.java @@ -0,0 +1,156 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeResponseUsage model. + */ +@Immutable +public final class RealtimeResponseUsage implements JsonSerializable { + + /* + * The total_tokens property. + */ + @Generated + private Long totalTokens; + + /* + * The input_tokens property. + */ + @Generated + private Long inputTokens; + + /* + * The output_tokens property. + */ + @Generated + private Long outputTokens; + + /* + * The input_token_details property. + */ + @Generated + private RealtimeResponseUsageInputTokenDetails inputTokenDetails; + + /* + * The output_token_details property. + */ + @Generated + private RealtimeResponseUsageOutputTokenDetails outputTokenDetails; + + /** + * Creates an instance of RealtimeResponseUsage class. + */ + @Generated + private RealtimeResponseUsage() { + } + + /** + * Get the totalTokens property: The total_tokens property. + * + * @return the totalTokens value. + */ + @Generated + public Long getTotalTokens() { + return this.totalTokens; + } + + /** + * Get the inputTokens property: The input_tokens property. + * + * @return the inputTokens value. + */ + @Generated + public Long getInputTokens() { + return this.inputTokens; + } + + /** + * Get the outputTokens property: The output_tokens property. + * + * @return the outputTokens value. + */ + @Generated + public Long getOutputTokens() { + return this.outputTokens; + } + + /** + * Get the inputTokenDetails property: The input_token_details property. + * + * @return the inputTokenDetails value. + */ + @Generated + public RealtimeResponseUsageInputTokenDetails getInputTokenDetails() { + return this.inputTokenDetails; + } + + /** + * Get the outputTokenDetails property: The output_token_details property. + * + * @return the outputTokenDetails value. + */ + @Generated + public RealtimeResponseUsageOutputTokenDetails getOutputTokenDetails() { + return this.outputTokenDetails; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeNumberField("total_tokens", this.totalTokens); + jsonWriter.writeNumberField("input_tokens", this.inputTokens); + jsonWriter.writeNumberField("output_tokens", this.outputTokens); + jsonWriter.writeJsonField("input_token_details", this.inputTokenDetails); + jsonWriter.writeJsonField("output_token_details", this.outputTokenDetails); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeResponseUsage from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeResponseUsage if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeResponseUsage. + */ + @Generated + public static RealtimeResponseUsage fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeResponseUsage deserializedRealtimeResponseUsage = new RealtimeResponseUsage(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("total_tokens".equals(fieldName)) { + deserializedRealtimeResponseUsage.totalTokens = reader.getNullable(JsonReader::getLong); + } else if ("input_tokens".equals(fieldName)) { + deserializedRealtimeResponseUsage.inputTokens = reader.getNullable(JsonReader::getLong); + } else if ("output_tokens".equals(fieldName)) { + deserializedRealtimeResponseUsage.outputTokens = reader.getNullable(JsonReader::getLong); + } else if ("input_token_details".equals(fieldName)) { + deserializedRealtimeResponseUsage.inputTokenDetails + = RealtimeResponseUsageInputTokenDetails.fromJson(reader); + } else if ("output_token_details".equals(fieldName)) { + deserializedRealtimeResponseUsage.outputTokenDetails + = RealtimeResponseUsageOutputTokenDetails.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeResponseUsage; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageInputTokenDetails.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageInputTokenDetails.java new file mode 100644 index 0000000000000..acef5787f6aef --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageInputTokenDetails.java @@ -0,0 +1,161 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeResponseUsageInputTokenDetails model. + */ +@Immutable +public final class RealtimeResponseUsageInputTokenDetails + implements JsonSerializable { + + /* + * The cached_tokens property. + */ + @Generated + private Long cachedTokens; + + /* + * The text_tokens property. + */ + @Generated + private Long textTokens; + + /* + * The image_tokens property. + */ + @Generated + private Long imageTokens; + + /* + * The audio_tokens property. + */ + @Generated + private Long audioTokens; + + /* + * The cached_tokens_details property. + */ + @Generated + private RealtimeResponseUsageInputTokenDetailsCachedTokensDetails cachedTokensDetails; + + /** + * Creates an instance of RealtimeResponseUsageInputTokenDetails class. + */ + @Generated + private RealtimeResponseUsageInputTokenDetails() { + } + + /** + * Get the cachedTokens property: The cached_tokens property. + * + * @return the cachedTokens value. + */ + @Generated + public Long getCachedTokens() { + return this.cachedTokens; + } + + /** + * Get the textTokens property: The text_tokens property. + * + * @return the textTokens value. + */ + @Generated + public Long getTextTokens() { + return this.textTokens; + } + + /** + * Get the imageTokens property: The image_tokens property. + * + * @return the imageTokens value. + */ + @Generated + public Long getImageTokens() { + return this.imageTokens; + } + + /** + * Get the audioTokens property: The audio_tokens property. + * + * @return the audioTokens value. + */ + @Generated + public Long getAudioTokens() { + return this.audioTokens; + } + + /** + * Get the cachedTokensDetails property: The cached_tokens_details property. + * + * @return the cachedTokensDetails value. + */ + @Generated + public RealtimeResponseUsageInputTokenDetailsCachedTokensDetails getCachedTokensDetails() { + return this.cachedTokensDetails; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeNumberField("cached_tokens", this.cachedTokens); + jsonWriter.writeNumberField("text_tokens", this.textTokens); + jsonWriter.writeNumberField("image_tokens", this.imageTokens); + jsonWriter.writeNumberField("audio_tokens", this.audioTokens); + jsonWriter.writeJsonField("cached_tokens_details", this.cachedTokensDetails); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeResponseUsageInputTokenDetails from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeResponseUsageInputTokenDetails if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeResponseUsageInputTokenDetails. + */ + @Generated + public static RealtimeResponseUsageInputTokenDetails fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeResponseUsageInputTokenDetails deserializedRealtimeResponseUsageInputTokenDetails + = new RealtimeResponseUsageInputTokenDetails(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("cached_tokens".equals(fieldName)) { + deserializedRealtimeResponseUsageInputTokenDetails.cachedTokens + = reader.getNullable(JsonReader::getLong); + } else if ("text_tokens".equals(fieldName)) { + deserializedRealtimeResponseUsageInputTokenDetails.textTokens + = reader.getNullable(JsonReader::getLong); + } else if ("image_tokens".equals(fieldName)) { + deserializedRealtimeResponseUsageInputTokenDetails.imageTokens + = reader.getNullable(JsonReader::getLong); + } else if ("audio_tokens".equals(fieldName)) { + deserializedRealtimeResponseUsageInputTokenDetails.audioTokens + = reader.getNullable(JsonReader::getLong); + } else if ("cached_tokens_details".equals(fieldName)) { + deserializedRealtimeResponseUsageInputTokenDetails.cachedTokensDetails + = RealtimeResponseUsageInputTokenDetailsCachedTokensDetails.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeResponseUsageInputTokenDetails; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageInputTokenDetailsCachedTokensDetails.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageInputTokenDetailsCachedTokensDetails.java new file mode 100644 index 0000000000000..813dad89151c3 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageInputTokenDetailsCachedTokensDetails.java @@ -0,0 +1,123 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeResponseUsageInputTokenDetailsCachedTokensDetails model. + */ +@Immutable +public final class RealtimeResponseUsageInputTokenDetailsCachedTokensDetails + implements JsonSerializable { + + /* + * The text_tokens property. + */ + @Generated + private Long textTokens; + + /* + * The image_tokens property. + */ + @Generated + private Long imageTokens; + + /* + * The audio_tokens property. + */ + @Generated + private Long audioTokens; + + /** + * Creates an instance of RealtimeResponseUsageInputTokenDetailsCachedTokensDetails class. + */ + @Generated + private RealtimeResponseUsageInputTokenDetailsCachedTokensDetails() { + } + + /** + * Get the textTokens property: The text_tokens property. + * + * @return the textTokens value. + */ + @Generated + public Long getTextTokens() { + return this.textTokens; + } + + /** + * Get the imageTokens property: The image_tokens property. + * + * @return the imageTokens value. + */ + @Generated + public Long getImageTokens() { + return this.imageTokens; + } + + /** + * Get the audioTokens property: The audio_tokens property. + * + * @return the audioTokens value. + */ + @Generated + public Long getAudioTokens() { + return this.audioTokens; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeNumberField("text_tokens", this.textTokens); + jsonWriter.writeNumberField("image_tokens", this.imageTokens); + jsonWriter.writeNumberField("audio_tokens", this.audioTokens); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeResponseUsageInputTokenDetailsCachedTokensDetails from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeResponseUsageInputTokenDetailsCachedTokensDetails if the JsonReader was pointing + * to an instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the + * RealtimeResponseUsageInputTokenDetailsCachedTokensDetails. + */ + @Generated + public static RealtimeResponseUsageInputTokenDetailsCachedTokensDetails fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + RealtimeResponseUsageInputTokenDetailsCachedTokensDetails deserializedRealtimeResponseUsageInputTokenDetailsCachedTokensDetails + = new RealtimeResponseUsageInputTokenDetailsCachedTokensDetails(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("text_tokens".equals(fieldName)) { + deserializedRealtimeResponseUsageInputTokenDetailsCachedTokensDetails.textTokens + = reader.getNullable(JsonReader::getLong); + } else if ("image_tokens".equals(fieldName)) { + deserializedRealtimeResponseUsageInputTokenDetailsCachedTokensDetails.imageTokens + = reader.getNullable(JsonReader::getLong); + } else if ("audio_tokens".equals(fieldName)) { + deserializedRealtimeResponseUsageInputTokenDetailsCachedTokensDetails.audioTokens + = reader.getNullable(JsonReader::getLong); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeResponseUsageInputTokenDetailsCachedTokensDetails; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageOutputTokenDetails.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageOutputTokenDetails.java new file mode 100644 index 0000000000000..100206dad94c7 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageOutputTokenDetails.java @@ -0,0 +1,101 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The RealtimeResponseUsageOutputTokenDetails model. + */ +@Immutable +public final class RealtimeResponseUsageOutputTokenDetails + implements JsonSerializable { + + /* + * The text_tokens property. + */ + @Generated + private Long textTokens; + + /* + * The audio_tokens property. + */ + @Generated + private Long audioTokens; + + /** + * Creates an instance of RealtimeResponseUsageOutputTokenDetails class. + */ + @Generated + private RealtimeResponseUsageOutputTokenDetails() { + } + + /** + * Get the textTokens property: The text_tokens property. + * + * @return the textTokens value. + */ + @Generated + public Long getTextTokens() { + return this.textTokens; + } + + /** + * Get the audioTokens property: The audio_tokens property. + * + * @return the audioTokens value. + */ + @Generated + public Long getAudioTokens() { + return this.audioTokens; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeNumberField("text_tokens", this.textTokens); + jsonWriter.writeNumberField("audio_tokens", this.audioTokens); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RealtimeResponseUsageOutputTokenDetails from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RealtimeResponseUsageOutputTokenDetails if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the RealtimeResponseUsageOutputTokenDetails. + */ + @Generated + public static RealtimeResponseUsageOutputTokenDetails fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RealtimeResponseUsageOutputTokenDetails deserializedRealtimeResponseUsageOutputTokenDetails + = new RealtimeResponseUsageOutputTokenDetails(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("text_tokens".equals(fieldName)) { + deserializedRealtimeResponseUsageOutputTokenDetails.textTokens + = reader.getNullable(JsonReader::getLong); + } else if ("audio_tokens".equals(fieldName)) { + deserializedRealtimeResponseUsageOutputTokenDetails.audioTokens + = reader.getNullable(JsonReader::getLong); + } else { + reader.skipChildren(); + } + } + return deserializedRealtimeResponseUsageOutputTokenDetails; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RoutingConfiguration.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RoutingConfiguration.java new file mode 100644 index 0000000000000..c58caa72c277d --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RoutingConfiguration.java @@ -0,0 +1,97 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Per-request configuration for Model Router inference calls. + * Supported on Model Router endpoints (deployed or instant if supported). + * Returns a 400 (Bad Request) error when the target is not a Model Router endpoint. + */ +@Fluent +public final class RoutingConfiguration implements JsonSerializable { + + /* + * Session affinity configuration for reusing an eligible model across requests in the same conversation. + * If omitted, sticky affinity is used when a supported conversation identifier is available. + */ + @Generated + private SessionAffinityConfiguration sessionAffinity; + + /** + * Creates an instance of RoutingConfiguration class. + */ + @Generated + public RoutingConfiguration() { + } + + /** + * Get the sessionAffinity property: Session affinity configuration for reusing an eligible model across requests in + * the same conversation. + * If omitted, sticky affinity is used when a supported conversation identifier is available. + * + * @return the sessionAffinity value. + */ + @Generated + public SessionAffinityConfiguration getSessionAffinity() { + return this.sessionAffinity; + } + + /** + * Set the sessionAffinity property: Session affinity configuration for reusing an eligible model across requests in + * the same conversation. + * If omitted, sticky affinity is used when a supported conversation identifier is available. + * + * @param sessionAffinity the sessionAffinity value to set. + * @return the RoutingConfiguration object itself. + */ + @Generated + public RoutingConfiguration setSessionAffinity(SessionAffinityConfiguration sessionAffinity) { + this.sessionAffinity = sessionAffinity; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("session_affinity", this.sessionAffinity); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of RoutingConfiguration from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of RoutingConfiguration if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the RoutingConfiguration. + */ + @Generated + public static RoutingConfiguration fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + RoutingConfiguration deserializedRoutingConfiguration = new RoutingConfiguration(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("session_affinity".equals(fieldName)) { + deserializedRoutingConfiguration.sessionAffinity = SessionAffinityConfiguration.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedRoutingConfiguration; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityConfiguration.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityConfiguration.java new file mode 100644 index 0000000000000..0f703df6d7967 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityConfiguration.java @@ -0,0 +1,127 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Request settings that control Model Router session affinity. + */ +@Fluent +public final class SessionAffinityConfiguration implements JsonSerializable { + + /* + * Controls whether Model Router applies session affinity to this request. + */ + @Generated + private SessionAffinityRequestMode mode; + + /* + * An opaque, application-owned conversation identifier. Use the same value for related requests. + * The value is not returned in the response and must not contain secrets or personally identifiable information. + */ + @Generated + private String sessionId; + + /** + * Creates an instance of SessionAffinityConfiguration class. + */ + @Generated + public SessionAffinityConfiguration() { + } + + /** + * Get the mode property: Controls whether Model Router applies session affinity to this request. + * + * @return the mode value. + */ + @Generated + public SessionAffinityRequestMode getMode() { + return this.mode; + } + + /** + * Set the mode property: Controls whether Model Router applies session affinity to this request. + * + * @param mode the mode value to set. + * @return the SessionAffinityConfiguration object itself. + */ + @Generated + public SessionAffinityConfiguration setMode(SessionAffinityRequestMode mode) { + this.mode = mode; + return this; + } + + /** + * Get the sessionId property: An opaque, application-owned conversation identifier. Use the same value for related + * requests. + * The value is not returned in the response and must not contain secrets or personally identifiable information. + * + * @return the sessionId value. + */ + @Generated + public String getSessionId() { + return this.sessionId; + } + + /** + * Set the sessionId property: An opaque, application-owned conversation identifier. Use the same value for related + * requests. + * The value is not returned in the response and must not contain secrets or personally identifiable information. + * + * @param sessionId the sessionId value to set. + * @return the SessionAffinityConfiguration object itself. + */ + @Generated + public SessionAffinityConfiguration setSessionId(String sessionId) { + this.sessionId = sessionId; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("mode", this.mode == null ? null : this.mode.toString()); + jsonWriter.writeStringField("session_id", this.sessionId); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of SessionAffinityConfiguration from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of SessionAffinityConfiguration if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the SessionAffinityConfiguration. + */ + @Generated + public static SessionAffinityConfiguration fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + SessionAffinityConfiguration deserializedSessionAffinityConfiguration = new SessionAffinityConfiguration(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("mode".equals(fieldName)) { + deserializedSessionAffinityConfiguration.mode + = SessionAffinityRequestMode.fromString(reader.getString()); + } else if ("session_id".equals(fieldName)) { + deserializedSessionAffinityConfiguration.sessionId = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedSessionAffinityConfiguration; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityDecision.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityDecision.java new file mode 100644 index 0000000000000..7ed64482bb5b5 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityDecision.java @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Final outcomes reported for Model Router session affinity. + */ +public final class SessionAffinityDecision extends ExpandableStringEnum { + + /** + * A new model association was initialized. + */ + @Generated + public static final SessionAffinityDecision INITIALIZE = fromString("initialize"); + + /** + * The previously associated model served the response. + */ + @Generated + public static final SessionAffinityDecision RETAIN = fromString("retain"); + + /** + * A different model served the response and the association is updated after success. + */ + @Generated + public static final SessionAffinityDecision SWITCH = fromString("switch"); + + /** + * Creates a new instance of SessionAffinityDecision value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public SessionAffinityDecision() { + } + + /** + * Creates or finds a SessionAffinityDecision from its string representation. + * + * @param name a name to look for. + * @return the corresponding SessionAffinityDecision. + */ + @Generated + public static SessionAffinityDecision fromString(String name) { + return fromString(name, SessionAffinityDecision.class); + } + + /** + * Gets known SessionAffinityDecision values. + * + * @return known SessionAffinityDecision values. + */ + @Generated + public static Collection values() { + return values(SessionAffinityDecision.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityDetails.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityDetails.java new file mode 100644 index 0000000000000..1ee8ad93e2e17 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityDetails.java @@ -0,0 +1,129 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Effective Model Router session affinity metadata for a request. + */ +@Immutable +public final class SessionAffinityDetails implements JsonSerializable { + + /* + * The effective session affinity mode. + */ + @Generated + private final SessionAffinityMode mode; + + /* + * The identity source selected after applying precedence. `conversation` and `previous_response_id` apply only to + * the Responses API. Omitted when affinity is disabled. + */ + @Generated + private SessionAffinitySource source; + + /* + * The final affinity outcome for the model that served the response. Omitted when affinity is disabled or no usable + * identity was available. + */ + @Generated + private SessionAffinityDecision decision; + + /** + * Creates an instance of SessionAffinityDetails class. + * + * @param mode the mode value to set. + */ + @Generated + private SessionAffinityDetails(SessionAffinityMode mode) { + this.mode = mode; + } + + /** + * Get the mode property: The effective session affinity mode. + * + * @return the mode value. + */ + @Generated + public SessionAffinityMode getMode() { + return this.mode; + } + + /** + * Get the source property: The identity source selected after applying precedence. `conversation` and + * `previous_response_id` apply only to the Responses API. Omitted when affinity is disabled. + * + * @return the source value. + */ + @Generated + public SessionAffinitySource getSource() { + return this.source; + } + + /** + * Get the decision property: The final affinity outcome for the model that served the response. Omitted when + * affinity is disabled or no usable identity was available. + * + * @return the decision value. + */ + @Generated + public SessionAffinityDecision getDecision() { + return this.decision; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("mode", this.mode == null ? null : this.mode.toString()); + jsonWriter.writeStringField("source", this.source == null ? null : this.source.toString()); + jsonWriter.writeStringField("decision", this.decision == null ? null : this.decision.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of SessionAffinityDetails from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of SessionAffinityDetails if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the SessionAffinityDetails. + */ + @Generated + public static SessionAffinityDetails fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + SessionAffinityMode mode = null; + SessionAffinitySource source = null; + SessionAffinityDecision decision = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("mode".equals(fieldName)) { + mode = SessionAffinityMode.fromString(reader.getString()); + } else if ("source".equals(fieldName)) { + source = SessionAffinitySource.fromString(reader.getString()); + } else if ("decision".equals(fieldName)) { + decision = SessionAffinityDecision.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + SessionAffinityDetails deserializedSessionAffinityDetails = new SessionAffinityDetails(mode); + deserializedSessionAffinityDetails.source = source; + deserializedSessionAffinityDetails.decision = decision; + return deserializedSessionAffinityDetails; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityMode.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityMode.java new file mode 100644 index 0000000000000..1d4c6383f91e6 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityMode.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Effective modes reported for Model Router session affinity. + */ +public final class SessionAffinityMode extends ExpandableStringEnum { + + /** + * Affinity was enabled for the request. + */ + @Generated + public static final SessionAffinityMode STICKY = fromString("sticky"); + + /** + * Affinity was disabled for the request. + */ + @Generated + public static final SessionAffinityMode NONE = fromString("none"); + + /** + * Creates a new instance of SessionAffinityMode value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public SessionAffinityMode() { + } + + /** + * Creates or finds a SessionAffinityMode from its string representation. + * + * @param name a name to look for. + * @return the corresponding SessionAffinityMode. + */ + @Generated + public static SessionAffinityMode fromString(String name) { + return fromString(name, SessionAffinityMode.class); + } + + /** + * Gets known SessionAffinityMode values. + * + * @return known SessionAffinityMode values. + */ + @Generated + public static Collection values() { + return values(SessionAffinityMode.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityRequestMode.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityRequestMode.java new file mode 100644 index 0000000000000..0b4649ca48f97 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinityRequestMode.java @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Request modes supported by Model Router session affinity. + */ +public enum SessionAffinityRequestMode { + /** + * Attempts to reuse the model associated with the selected conversation identifier. + */ + STICKY("sticky"), + + /** + * Disables affinity state lookup and update for this request. + */ + NONE("none"); + + /** + * The actual serialized value for a SessionAffinityRequestMode instance. + */ + private final String value; + + SessionAffinityRequestMode(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a SessionAffinityRequestMode instance. + * + * @param value the serialized value to parse. + * @return the parsed SessionAffinityRequestMode object, or null if unable to parse. + */ + public static SessionAffinityRequestMode fromString(String value) { + if (value == null) { + return null; + } + SessionAffinityRequestMode[] items = SessionAffinityRequestMode.values(); + for (SessionAffinityRequestMode item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinitySource.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinitySource.java new file mode 100644 index 0000000000000..46ba9a5400020 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionAffinitySource.java @@ -0,0 +1,75 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Conversation identifier sources supported by Model Router session affinity. + */ +public final class SessionAffinitySource extends ExpandableStringEnum { + + /** + * An explicit session identifier supplied in the request body. + */ + @Generated + public static final SessionAffinitySource SESSION_ID_PAYLOAD = fromString("session_id_payload"); + + /** + * An explicit session identifier supplied in the `x-ms-session-id` request header. + */ + @Generated + public static final SessionAffinitySource SESSION_ID_HEADER = fromString("session_id_header"); + + /** + * No usable conversation identifier was available. + */ + @Generated + public static final SessionAffinitySource NOT_AVAILABLE = fromString("not_available"); + + /** + * The Responses conversation identifier. + */ + @Generated + public static final SessionAffinitySource CONVERSATION = fromString("conversation"); + + /** + * The Responses previous response identifier. + */ + @Generated + public static final SessionAffinitySource PREVIOUS_RESPONSE_ID = fromString("previous_response_id"); + + /** + * Creates a new instance of SessionAffinitySource value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public SessionAffinitySource() { + } + + /** + * Creates or finds a SessionAffinitySource from its string representation. + * + * @param name a name to look for. + * @return the corresponding SessionAffinitySource. + */ + @Generated + public static SessionAffinitySource fromString(String name) { + return fromString(name, SessionAffinitySource.class); + } + + /** + * Gets known SessionAffinitySource values. + * + * @return known SessionAffinitySource values. + */ + @Generated + public static Collection values() { + return values(SessionAffinitySource.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SipTelephonyTransferDestination.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SipTelephonyTransferDestination.java new file mode 100644 index 0000000000000..a640a6ae53ed6 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SipTelephonyTransferDestination.java @@ -0,0 +1,105 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A SIP destination for a telephony transfer target. + */ +@Immutable +public final class SipTelephonyTransferDestination extends TelephonyTransferDestination { + + /* + * The telephony transfer destination type. + */ + @Generated + private TelephonyTransferDestinationKind kind = TelephonyTransferDestinationKind.SIP; + + /* + * The SIP or SIPS URI to call. + */ + @Generated + private final String value; + + /** + * Creates an instance of SipTelephonyTransferDestination class. + * + * @param value the value value to set. + */ + @Generated + public SipTelephonyTransferDestination(String value) { + this.value = value; + } + + /** + * Get the kind property: The telephony transfer destination type. + * + * @return the kind value. + */ + @Generated + @Override + public TelephonyTransferDestinationKind getKind() { + return this.kind; + } + + /** + * Get the value property: The SIP or SIPS URI to call. + * + * @return the value value. + */ + @Generated + public String getValue() { + return this.value; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("value", this.value); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of SipTelephonyTransferDestination from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of SipTelephonyTransferDestination if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the SipTelephonyTransferDestination. + */ + @Generated + public static SipTelephonyTransferDestination fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String value = null; + TelephonyTransferDestinationKind kind = TelephonyTransferDestinationKind.SIP; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("value".equals(fieldName)) { + value = reader.getString(); + } else if ("kind".equals(fieldName)) { + kind = TelephonyTransferDestinationKind.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + SipTelephonyTransferDestination deserializedSipTelephonyTransferDestination + = new SipTelephonyTransferDestination(value); + deserializedSipTelephonyTransferDestination.kind = kind; + return deserializedSipTelephonyTransferDestination; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TeamsPhoneExtensionTelephonyBinding.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TeamsPhoneExtensionTelephonyBinding.java new file mode 100644 index 0000000000000..0932176cd7d4a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TeamsPhoneExtensionTelephonyBinding.java @@ -0,0 +1,154 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A Microsoft Teams Phone Extension binding owned by a voice agent. + */ +@Immutable +public final class TeamsPhoneExtensionTelephonyBinding extends TelephonyBinding { + + /* + * The telephony provider. + */ + @Generated + private TelephonyProvider provider = TelephonyProvider.TEAMS_PHONE_EXTENSION; + + /* + * The optional display phone number for the Teams resource account. + */ + @Generated + private String phoneNumber; + + /* + * The Microsoft Teams resource-account object identifier as a GUID. + */ + @Generated + private final String resourceAccountObjectId; + + /** + * Creates an instance of TeamsPhoneExtensionTelephonyBinding class. + * + * @param id the id value to set. + * @param connection the connection value to set. + * @param status the status value to set. + * @param incomingCallUrl the incomingCallUrl value to set. + * @param resourceAccountObjectId the resourceAccountObjectId value to set. + */ + @Generated + private TeamsPhoneExtensionTelephonyBinding(String id, String connection, TelephonyBindingStatus status, + String incomingCallUrl, String resourceAccountObjectId) { + super(id, connection, status, incomingCallUrl); + this.resourceAccountObjectId = resourceAccountObjectId; + } + + /** + * Get the provider property: The telephony provider. + * + * @return the provider value. + */ + @Generated + @Override + public TelephonyProvider getProvider() { + return this.provider; + } + + /** + * Get the phoneNumber property: The optional display phone number for the Teams resource account. + * + * @return the phoneNumber value. + */ + @Generated + public String getPhoneNumber() { + return this.phoneNumber; + } + + /** + * Get the resourceAccountObjectId property: The Microsoft Teams resource-account object identifier as a GUID. + * + * @return the resourceAccountObjectId value. + */ + @Generated + public String getResourceAccountObjectId() { + return this.resourceAccountObjectId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", getId()); + jsonWriter.writeStringField("connection", getConnection()); + jsonWriter.writeStringField("status", getStatus() == null ? null : getStatus().toString()); + jsonWriter.writeStringField("incoming_call_url", getIncomingCallUrl()); + jsonWriter.writeStringField("label", getLabel()); + jsonWriter.writeStringField("resource_account_object_id", this.resourceAccountObjectId); + jsonWriter.writeStringField("provider", this.provider == null ? null : this.provider.toString()); + jsonWriter.writeStringField("phone_number", this.phoneNumber); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TeamsPhoneExtensionTelephonyBinding from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TeamsPhoneExtensionTelephonyBinding if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TeamsPhoneExtensionTelephonyBinding. + */ + @Generated + public static TeamsPhoneExtensionTelephonyBinding fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + String connection = null; + TelephonyBindingStatus status = null; + String incomingCallUrl = null; + String label = null; + String resourceAccountObjectId = null; + TelephonyProvider provider = TelephonyProvider.TEAMS_PHONE_EXTENSION; + String phoneNumber = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("connection".equals(fieldName)) { + connection = reader.getString(); + } else if ("status".equals(fieldName)) { + status = TelephonyBindingStatus.fromString(reader.getString()); + } else if ("incoming_call_url".equals(fieldName)) { + incomingCallUrl = reader.getString(); + } else if ("label".equals(fieldName)) { + label = reader.getString(); + } else if ("resource_account_object_id".equals(fieldName)) { + resourceAccountObjectId = reader.getString(); + } else if ("provider".equals(fieldName)) { + provider = TelephonyProvider.fromString(reader.getString()); + } else if ("phone_number".equals(fieldName)) { + phoneNumber = reader.getString(); + } else { + reader.skipChildren(); + } + } + TeamsPhoneExtensionTelephonyBinding deserializedTeamsPhoneExtensionTelephonyBinding + = new TeamsPhoneExtensionTelephonyBinding(id, connection, status, incomingCallUrl, + resourceAccountObjectId); + deserializedTeamsPhoneExtensionTelephonyBinding.setLabel(label); + deserializedTeamsPhoneExtensionTelephonyBinding.provider = provider; + deserializedTeamsPhoneExtensionTelephonyBinding.phoneNumber = phoneNumber; + return deserializedTeamsPhoneExtensionTelephonyBinding; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TeamsPhoneExtensionTelephonyBindingListItem.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TeamsPhoneExtensionTelephonyBindingListItem.java new file mode 100644 index 0000000000000..474e299fbe65f --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TeamsPhoneExtensionTelephonyBindingListItem.java @@ -0,0 +1,158 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A Microsoft Teams Phone Extension binding returned in a list, including its entity tag. + */ +@Immutable +public final class TeamsPhoneExtensionTelephonyBindingListItem extends TelephonyBindingListItem { + + /* + * The telephony provider. + */ + @Generated + private TelephonyProvider provider = TelephonyProvider.TEAMS_PHONE_EXTENSION; + + /* + * The optional display phone number for the Teams resource account. + */ + @Generated + private String phoneNumber; + + /* + * The Microsoft Teams resource-account object identifier as a GUID. + */ + @Generated + private final String resourceAccountObjectId; + + /** + * Creates an instance of TeamsPhoneExtensionTelephonyBindingListItem class. + * + * @param id the id value to set. + * @param connection the connection value to set. + * @param status the status value to set. + * @param incomingCallUrl the incomingCallUrl value to set. + * @param resourceAccountObjectId the resourceAccountObjectId value to set. + */ + @Generated + private TeamsPhoneExtensionTelephonyBindingListItem(String id, String connection, TelephonyBindingStatus status, + String incomingCallUrl, String resourceAccountObjectId) { + super(id, connection, status, incomingCallUrl); + this.resourceAccountObjectId = resourceAccountObjectId; + } + + /** + * Get the provider property: The telephony provider. + * + * @return the provider value. + */ + @Generated + @Override + public TelephonyProvider getProvider() { + return this.provider; + } + + /** + * Get the phoneNumber property: The optional display phone number for the Teams resource account. + * + * @return the phoneNumber value. + */ + @Generated + public String getPhoneNumber() { + return this.phoneNumber; + } + + /** + * Get the resourceAccountObjectId property: The Microsoft Teams resource-account object identifier as a GUID. + * + * @return the resourceAccountObjectId value. + */ + @Generated + public String getResourceAccountObjectId() { + return this.resourceAccountObjectId; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", getId()); + jsonWriter.writeStringField("connection", getConnection()); + jsonWriter.writeStringField("status", getStatus() == null ? null : getStatus().toString()); + jsonWriter.writeStringField("incoming_call_url", getIncomingCallUrl()); + jsonWriter.writeStringField("label", getLabel()); + jsonWriter.writeStringField("resource_account_object_id", this.resourceAccountObjectId); + jsonWriter.writeStringField("provider", this.provider == null ? null : this.provider.toString()); + jsonWriter.writeStringField("phone_number", this.phoneNumber); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TeamsPhoneExtensionTelephonyBindingListItem from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TeamsPhoneExtensionTelephonyBindingListItem if the JsonReader was pointing to an instance + * of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TeamsPhoneExtensionTelephonyBindingListItem. + */ + @Generated + public static TeamsPhoneExtensionTelephonyBindingListItem fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + String connection = null; + TelephonyBindingStatus status = null; + String incomingCallUrl = null; + String etag = null; + String label = null; + String resourceAccountObjectId = null; + TelephonyProvider provider = TelephonyProvider.TEAMS_PHONE_EXTENSION; + String phoneNumber = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("connection".equals(fieldName)) { + connection = reader.getString(); + } else if ("status".equals(fieldName)) { + status = TelephonyBindingStatus.fromString(reader.getString()); + } else if ("incoming_call_url".equals(fieldName)) { + incomingCallUrl = reader.getString(); + } else if ("etag".equals(fieldName)) { + etag = reader.getString(); + } else if ("label".equals(fieldName)) { + label = reader.getString(); + } else if ("resource_account_object_id".equals(fieldName)) { + resourceAccountObjectId = reader.getString(); + } else if ("provider".equals(fieldName)) { + provider = TelephonyProvider.fromString(reader.getString()); + } else if ("phone_number".equals(fieldName)) { + phoneNumber = reader.getString(); + } else { + reader.skipChildren(); + } + } + TeamsPhoneExtensionTelephonyBindingListItem deserializedTeamsPhoneExtensionTelephonyBindingListItem + = new TeamsPhoneExtensionTelephonyBindingListItem(id, connection, status, incomingCallUrl, + resourceAccountObjectId); + deserializedTeamsPhoneExtensionTelephonyBindingListItem.setEtag(etag); + deserializedTeamsPhoneExtensionTelephonyBindingListItem.setLabel(label); + deserializedTeamsPhoneExtensionTelephonyBindingListItem.provider = provider; + deserializedTeamsPhoneExtensionTelephonyBindingListItem.phoneNumber = phoneNumber; + return deserializedTeamsPhoneExtensionTelephonyBindingListItem; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TeamsTelephonyTransferDestination.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TeamsTelephonyTransferDestination.java new file mode 100644 index 0000000000000..bd8cde4562f9c --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TeamsTelephonyTransferDestination.java @@ -0,0 +1,105 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A Microsoft Teams destination for a telephony transfer target. + */ +@Immutable +public final class TeamsTelephonyTransferDestination extends TelephonyTransferDestination { + + /* + * The telephony transfer destination type. + */ + @Generated + private TelephonyTransferDestinationKind kind = TelephonyTransferDestinationKind.TEAMS; + + /* + * The Microsoft Teams user or resource-account identifier. + */ + @Generated + private final String value; + + /** + * Creates an instance of TeamsTelephonyTransferDestination class. + * + * @param value the value value to set. + */ + @Generated + public TeamsTelephonyTransferDestination(String value) { + this.value = value; + } + + /** + * Get the kind property: The telephony transfer destination type. + * + * @return the kind value. + */ + @Generated + @Override + public TelephonyTransferDestinationKind getKind() { + return this.kind; + } + + /** + * Get the value property: The Microsoft Teams user or resource-account identifier. + * + * @return the value value. + */ + @Generated + public String getValue() { + return this.value; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("value", this.value); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TeamsTelephonyTransferDestination from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TeamsTelephonyTransferDestination if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TeamsTelephonyTransferDestination. + */ + @Generated + public static TeamsTelephonyTransferDestination fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String value = null; + TelephonyTransferDestinationKind kind = TelephonyTransferDestinationKind.TEAMS; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("value".equals(fieldName)) { + value = reader.getString(); + } else if ("kind".equals(fieldName)) { + kind = TelephonyTransferDestinationKind.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + TeamsTelephonyTransferDestination deserializedTeamsTelephonyTransferDestination + = new TeamsTelephonyTransferDestination(value); + deserializedTeamsTelephonyTransferDestination.kind = kind; + return deserializedTeamsTelephonyTransferDestination; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyBinding.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyBinding.java new file mode 100644 index 0000000000000..d4954591aaf1a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyBinding.java @@ -0,0 +1,233 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A telephony binding owned by a voice agent. + */ +@Immutable +public class TelephonyBinding implements JsonSerializable { + + /* + * The telephony provider. + */ + @Generated + private TelephonyProvider provider = TelephonyProvider.fromString("TelephonyBinding"); + + /* + * The service-generated binding identifier. + */ + @Generated + private final String id; + + /* + * The Foundry connection name for the telephony provider. + */ + @Generated + private final String connection; + + /* + * The optional display label for the binding. + */ + @Generated + private String label; + + /* + * The lifecycle status. + */ + @Generated + private final TelephonyBindingStatus status; + + /* + * The service-generated webhook URL to configure with the telephony provider. + */ + @Generated + private final String incomingCallUrl; + + /** + * Creates an instance of TelephonyBinding class. + * + * @param id the id value to set. + * @param connection the connection value to set. + * @param status the status value to set. + * @param incomingCallUrl the incomingCallUrl value to set. + */ + @Generated + protected TelephonyBinding(String id, String connection, TelephonyBindingStatus status, String incomingCallUrl) { + this.id = id; + this.connection = connection; + this.status = status; + this.incomingCallUrl = incomingCallUrl; + } + + /** + * Get the provider property: The telephony provider. + * + * @return the provider value. + */ + @Generated + public TelephonyProvider getProvider() { + return this.provider; + } + + /** + * Get the id property: The service-generated binding identifier. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the connection property: The Foundry connection name for the telephony provider. + * + * @return the connection value. + */ + @Generated + public String getConnection() { + return this.connection; + } + + /** + * Get the label property: The optional display label for the binding. + * + * @return the label value. + */ + @Generated + public String getLabel() { + return this.label; + } + + /** + * Set the label property: The optional display label for the binding. + * + * @param label the label value to set. + * @return the TelephonyBinding object itself. + */ + @Generated + TelephonyBinding setLabel(String label) { + this.label = label; + return this; + } + + /** + * Get the status property: The lifecycle status. + * + * @return the status value. + */ + @Generated + public TelephonyBindingStatus getStatus() { + return this.status; + } + + /** + * Get the incomingCallUrl property: The service-generated webhook URL to configure with the telephony provider. + * + * @return the incomingCallUrl value. + */ + @Generated + public String getIncomingCallUrl() { + return this.incomingCallUrl; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("connection", this.connection); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + jsonWriter.writeStringField("incoming_call_url", this.incomingCallUrl); + jsonWriter.writeStringField("provider", this.provider == null ? null : this.provider.toString()); + jsonWriter.writeStringField("label", this.label); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyBinding from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyBinding if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyBinding. + */ + @Generated + public static TelephonyBinding fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("provider".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("teams_phone_extension".equals(discriminatorValue)) { + return TeamsPhoneExtensionTelephonyBinding.fromJson(readerToUse.reset()); + } else if ("twilio".equals(discriminatorValue)) { + return TwilioTelephonyBinding.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static TelephonyBinding fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + String connection = null; + TelephonyBindingStatus status = null; + String incomingCallUrl = null; + TelephonyProvider provider = null; + String label = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("connection".equals(fieldName)) { + connection = reader.getString(); + } else if ("status".equals(fieldName)) { + status = TelephonyBindingStatus.fromString(reader.getString()); + } else if ("incoming_call_url".equals(fieldName)) { + incomingCallUrl = reader.getString(); + } else if ("provider".equals(fieldName)) { + provider = TelephonyProvider.fromString(reader.getString()); + } else if ("label".equals(fieldName)) { + label = reader.getString(); + } else { + reader.skipChildren(); + } + } + TelephonyBinding deserializedTelephonyBinding + = new TelephonyBinding(id, connection, status, incomingCallUrl); + deserializedTelephonyBinding.provider = provider; + deserializedTelephonyBinding.label = label; + return deserializedTelephonyBinding; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyBindingListItem.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyBindingListItem.java new file mode 100644 index 0000000000000..42273da8eca20 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyBindingListItem.java @@ -0,0 +1,266 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A telephony binding returned in a list, including its entity tag. + */ +@Immutable +public class TelephonyBindingListItem implements JsonSerializable { + + /* + * The telephony provider. + */ + @Generated + private TelephonyProvider provider = TelephonyProvider.fromString("TelephonyBindingListItem"); + + /* + * The service-generated binding identifier. + */ + @Generated + private final String id; + + /* + * The Foundry connection name for the telephony provider. + */ + @Generated + private final String connection; + + /* + * The optional display label for the binding. + */ + @Generated + private String label; + + /* + * The lifecycle status. + */ + @Generated + private final TelephonyBindingStatus status; + + /* + * The service-generated webhook URL to configure with the telephony provider. + */ + @Generated + private final String incomingCallUrl; + + /* + * The entity tag to send in the `If-Match` header when updating or deleting this binding. + */ + @Generated + private String etag; + + /** + * Creates an instance of TelephonyBindingListItem class. + * + * @param id the id value to set. + * @param connection the connection value to set. + * @param status the status value to set. + * @param incomingCallUrl the incomingCallUrl value to set. + */ + @Generated + protected TelephonyBindingListItem(String id, String connection, TelephonyBindingStatus status, + String incomingCallUrl) { + this.id = id; + this.connection = connection; + this.status = status; + this.incomingCallUrl = incomingCallUrl; + } + + /** + * Get the provider property: The telephony provider. + * + * @return the provider value. + */ + @Generated + public TelephonyProvider getProvider() { + return this.provider; + } + + /** + * Get the id property: The service-generated binding identifier. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the connection property: The Foundry connection name for the telephony provider. + * + * @return the connection value. + */ + @Generated + public String getConnection() { + return this.connection; + } + + /** + * Get the label property: The optional display label for the binding. + * + * @return the label value. + */ + @Generated + public String getLabel() { + return this.label; + } + + /** + * Set the label property: The optional display label for the binding. + * + * @param label the label value to set. + * @return the TelephonyBindingListItem object itself. + */ + @Generated + TelephonyBindingListItem setLabel(String label) { + this.label = label; + return this; + } + + /** + * Get the status property: The lifecycle status. + * + * @return the status value. + */ + @Generated + public TelephonyBindingStatus getStatus() { + return this.status; + } + + /** + * Get the incomingCallUrl property: The service-generated webhook URL to configure with the telephony provider. + * + * @return the incomingCallUrl value. + */ + @Generated + public String getIncomingCallUrl() { + return this.incomingCallUrl; + } + + /** + * Get the etag property: The entity tag to send in the `If-Match` header when updating or deleting this binding. + * + * @return the etag value. + */ + @Generated + public String getEtag() { + return this.etag; + } + + /** + * Set the etag property: The entity tag to send in the `If-Match` header when updating or deleting this binding. + * + * @param etag the etag value to set. + * @return the TelephonyBindingListItem object itself. + */ + @Generated + TelephonyBindingListItem setEtag(String etag) { + this.etag = etag; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("connection", this.connection); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + jsonWriter.writeStringField("incoming_call_url", this.incomingCallUrl); + jsonWriter.writeStringField("provider", this.provider == null ? null : this.provider.toString()); + jsonWriter.writeStringField("label", this.label); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyBindingListItem from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyBindingListItem if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyBindingListItem. + */ + @Generated + public static TelephonyBindingListItem fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("provider".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("teams_phone_extension".equals(discriminatorValue)) { + return TeamsPhoneExtensionTelephonyBindingListItem.fromJson(readerToUse.reset()); + } else if ("twilio".equals(discriminatorValue)) { + return TwilioTelephonyBindingListItem.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static TelephonyBindingListItem fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + String connection = null; + TelephonyBindingStatus status = null; + String incomingCallUrl = null; + String etag = null; + TelephonyProvider provider = null; + String label = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("connection".equals(fieldName)) { + connection = reader.getString(); + } else if ("status".equals(fieldName)) { + status = TelephonyBindingStatus.fromString(reader.getString()); + } else if ("incoming_call_url".equals(fieldName)) { + incomingCallUrl = reader.getString(); + } else if ("etag".equals(fieldName)) { + etag = reader.getString(); + } else if ("provider".equals(fieldName)) { + provider = TelephonyProvider.fromString(reader.getString()); + } else if ("label".equals(fieldName)) { + label = reader.getString(); + } else { + reader.skipChildren(); + } + } + TelephonyBindingListItem deserializedTelephonyBindingListItem + = new TelephonyBindingListItem(id, connection, status, incomingCallUrl); + deserializedTelephonyBindingListItem.etag = etag; + deserializedTelephonyBindingListItem.provider = provider; + deserializedTelephonyBindingListItem.label = label; + return deserializedTelephonyBindingListItem; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyBindingStatus.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyBindingStatus.java new file mode 100644 index 0000000000000..4918f6ee17918 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyBindingStatus.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The lifecycle status of a telephony binding. + */ +public final class TelephonyBindingStatus extends ExpandableStringEnum { + + /** + * The binding accepts new inbound calls. + */ + @Generated + public static final TelephonyBindingStatus ACTIVE = fromString("active"); + + /** + * The binding remains configured but rejects new inbound calls. + */ + @Generated + public static final TelephonyBindingStatus SUSPENDED = fromString("suspended"); + + /** + * Creates a new instance of TelephonyBindingStatus value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyBindingStatus() { + } + + /** + * Creates or finds a TelephonyBindingStatus from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyBindingStatus. + */ + @Generated + public static TelephonyBindingStatus fromString(String name) { + return fromString(name, TelephonyBindingStatus.class); + } + + /** + * Gets known TelephonyBindingStatus values. + * + * @return known TelephonyBindingStatus values. + */ + @Generated + public static Collection values() { + return values(TelephonyBindingStatus.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallDurationBasis.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallDurationBasis.java new file mode 100644 index 0000000000000..744f7bf079dff --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallDurationBasis.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The timestamp used as the basis for call duration. + */ +public final class TelephonyCallDurationBasis extends ExpandableStringEnum { + + /** + * Duration starts when the provider reports the call as answered. + */ + @Generated + public static final TelephonyCallDurationBasis ANSWERED = fromString("answered"); + + /** + * Duration starts when the inbound webhook is received because no answered timestamp is available. + */ + @Generated + public static final TelephonyCallDurationBasis RECEIVED = fromString("received"); + + /** + * Creates a new instance of TelephonyCallDurationBasis value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCallDurationBasis() { + } + + /** + * Creates or finds a TelephonyCallDurationBasis from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCallDurationBasis. + */ + @Generated + public static TelephonyCallDurationBasis fromString(String name) { + return fromString(name, TelephonyCallDurationBasis.class); + } + + /** + * Gets known TelephonyCallDurationBasis values. + * + * @return known TelephonyCallDurationBasis values. + */ + @Generated + public static Collection values() { + return values(TelephonyCallDurationBasis.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJob.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJob.java new file mode 100644 index 0000000000000..ca03efcea56fc --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJob.java @@ -0,0 +1,455 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.util.Map; + +/** + * A durable direct or campaign-created outbound call intent. + */ +@Immutable +public final class TelephonyCallJob implements JsonSerializable { + + /* + * The phone destination to call. + */ + @Generated + private final TelephonyOutboundDestination destination; + + /* + * The active agent telephony binding used to originate the call. + */ + @Generated + private final String telephonyBindingId; + + /* + * An optional customer-declared purpose for placing the call. + */ + @Generated + private String purpose; + + /* + * Structured input values available to the agent and greeting for this call. Agent-declared inputs are validated + * against their schemas; omitted optional inputs may use their Agent-defined default values, while omitted required + * inputs are rejected. Additional inputs remain available as dynamic template variables. + */ + @Generated + private Map structuredInputs; + + /* + * The optional execution window. + */ + @Generated + private TelephonyCallJobSchedule schedule; + + /* + * The service-generated call-job identifier. + */ + @Generated + private final String id; + + /* + * The object type. Always `telephony.call_job`. + */ + @Generated + private final String object = "telephony.call_job"; + + /* + * The name of the voice agent used at execution time. + */ + @Generated + private final String agentName; + + /* + * The current call-job lifecycle status. + */ + @Generated + private final TelephonyCallJobStatus status; + + /* + * The recorded cancellation request, when cancellation was requested. + */ + @Generated + private TelephonyCallJobCancellation cancellation; + + /* + * The frozen provider-attempt retry policy. + */ + @Generated + private final TelephonyOutboundRetryPolicyResponse retryPolicy; + + /* + * The number of provider attempts created so far. + */ + @Generated + private final int attemptCount; + + /* + * The Unix timestamp in seconds at which the next retry becomes eligible. + */ + @Generated + private Long nextAttemptAt; + + /* + * The stable reason for the terminal status, when available. + */ + @Generated + private String terminalReason; + + /* + * The monotonically increasing optimistic-concurrency revision. + */ + @Generated + private final long revision; + + /* + * The Unix timestamp in seconds when the call job was created. + */ + @Generated + private final long createdAt; + + /* + * The Unix timestamp in seconds when the call job was last updated. + */ + @Generated + private final long updatedAt; + + /** + * Creates an instance of TelephonyCallJob class. + * + * @param destination the destination value to set. + * @param telephonyBindingId the telephonyBindingId value to set. + * @param id the id value to set. + * @param agentName the agentName value to set. + * @param status the status value to set. + * @param retryPolicy the retryPolicy value to set. + * @param attemptCount the attemptCount value to set. + * @param revision the revision value to set. + * @param createdAt the createdAt value to set. + * @param updatedAt the updatedAt value to set. + */ + @Generated + private TelephonyCallJob(TelephonyOutboundDestination destination, String telephonyBindingId, String id, + String agentName, TelephonyCallJobStatus status, TelephonyOutboundRetryPolicyResponse retryPolicy, + int attemptCount, long revision, OffsetDateTime createdAt, OffsetDateTime updatedAt) { + this.destination = destination; + this.telephonyBindingId = telephonyBindingId; + this.id = id; + this.agentName = agentName; + this.status = status; + this.retryPolicy = retryPolicy; + this.attemptCount = attemptCount; + this.revision = revision; + if (createdAt == null) { + this.createdAt = 0L; + } else { + this.createdAt = createdAt.toEpochSecond(); + } + if (updatedAt == null) { + this.updatedAt = 0L; + } else { + this.updatedAt = updatedAt.toEpochSecond(); + } + } + + /** + * Get the destination property: The phone destination to call. + * + * @return the destination value. + */ + @Generated + public TelephonyOutboundDestination getDestination() { + return this.destination; + } + + /** + * Get the telephonyBindingId property: The active agent telephony binding used to originate the call. + * + * @return the telephonyBindingId value. + */ + @Generated + public String getTelephonyBindingId() { + return this.telephonyBindingId; + } + + /** + * Get the purpose property: An optional customer-declared purpose for placing the call. + * + * @return the purpose value. + */ + @Generated + public String getPurpose() { + return this.purpose; + } + + /** + * Get the structuredInputs property: Structured input values available to the agent and greeting for this call. + * Agent-declared inputs are validated against their schemas; omitted optional inputs may use their Agent-defined + * default values, while omitted required inputs are rejected. Additional inputs remain available as dynamic + * template variables. + * + * @return the structuredInputs value. + */ + @Generated + public Map getStructuredInputs() { + return this.structuredInputs; + } + + /** + * Get the schedule property: The optional execution window. + * + * @return the schedule value. + */ + @Generated + public TelephonyCallJobSchedule getSchedule() { + return this.schedule; + } + + /** + * Get the id property: The service-generated call-job identifier. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the object property: The object type. Always `telephony.call_job`. + * + * @return the object value. + */ + @Generated + public String getObject() { + return this.object; + } + + /** + * Get the agentName property: The name of the voice agent used at execution time. + * + * @return the agentName value. + */ + @Generated + public String getAgentName() { + return this.agentName; + } + + /** + * Get the status property: The current call-job lifecycle status. + * + * @return the status value. + */ + @Generated + public TelephonyCallJobStatus getStatus() { + return this.status; + } + + /** + * Get the cancellation property: The recorded cancellation request, when cancellation was requested. + * + * @return the cancellation value. + */ + @Generated + public TelephonyCallJobCancellation getCancellation() { + return this.cancellation; + } + + /** + * Get the retryPolicy property: The frozen provider-attempt retry policy. + * + * @return the retryPolicy value. + */ + @Generated + public TelephonyOutboundRetryPolicyResponse getRetryPolicy() { + return this.retryPolicy; + } + + /** + * Get the attemptCount property: The number of provider attempts created so far. + * + * @return the attemptCount value. + */ + @Generated + public int getAttemptCount() { + return this.attemptCount; + } + + /** + * Get the nextAttemptAt property: The Unix timestamp in seconds at which the next retry becomes eligible. + * + * @return the nextAttemptAt value. + */ + @Generated + public OffsetDateTime getNextAttemptAt() { + if (this.nextAttemptAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.nextAttemptAt), ZoneOffset.UTC); + } + + /** + * Get the terminalReason property: The stable reason for the terminal status, when available. + * + * @return the terminalReason value. + */ + @Generated + public String getTerminalReason() { + return this.terminalReason; + } + + /** + * Get the revision property: The monotonically increasing optimistic-concurrency revision. + * + * @return the revision value. + */ + @Generated + public long getRevision() { + return this.revision; + } + + /** + * Get the createdAt property: The Unix timestamp in seconds when the call job was created. + * + * @return the createdAt value. + */ + @Generated + public OffsetDateTime getCreatedAt() { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.createdAt), ZoneOffset.UTC); + } + + /** + * Get the updatedAt property: The Unix timestamp in seconds when the call job was last updated. + * + * @return the updatedAt value. + */ + @Generated + public OffsetDateTime getUpdatedAt() { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.updatedAt), ZoneOffset.UTC); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("destination", this.destination); + jsonWriter.writeStringField("telephony_binding_id", this.telephonyBindingId); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("object", this.object); + jsonWriter.writeStringField("agent_name", this.agentName); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + jsonWriter.writeJsonField("retry_policy", this.retryPolicy); + jsonWriter.writeIntField("attempt_count", this.attemptCount); + jsonWriter.writeLongField("revision", this.revision); + jsonWriter.writeLongField("created_at", this.createdAt); + jsonWriter.writeLongField("updated_at", this.updatedAt); + jsonWriter.writeStringField("purpose", this.purpose); + jsonWriter.writeMapField("structured_inputs", this.structuredInputs, (writer, element) -> { + if (element == null) { + writer.writeNull(); + } else { + element.writeTo(writer); + } + }); + jsonWriter.writeJsonField("schedule", this.schedule); + jsonWriter.writeJsonField("cancellation", this.cancellation); + jsonWriter.writeNumberField("next_attempt_at", this.nextAttemptAt); + jsonWriter.writeStringField("terminal_reason", this.terminalReason); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyCallJob from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyCallJob if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyCallJob. + */ + @Generated + public static TelephonyCallJob fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TelephonyOutboundDestination destination = null; + String telephonyBindingId = null; + String id = null; + String agentName = null; + TelephonyCallJobStatus status = null; + TelephonyOutboundRetryPolicyResponse retryPolicy = null; + int attemptCount = 0; + long revision = 0L; + OffsetDateTime createdAt = null; + OffsetDateTime updatedAt = null; + String purpose = null; + Map structuredInputs = null; + TelephonyCallJobSchedule schedule = null; + TelephonyCallJobCancellation cancellation = null; + Long nextAttemptAt = null; + String terminalReason = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("destination".equals(fieldName)) { + destination = TelephonyOutboundDestination.fromJson(reader); + } else if ("telephony_binding_id".equals(fieldName)) { + telephonyBindingId = reader.getString(); + } else if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("agent_name".equals(fieldName)) { + agentName = reader.getString(); + } else if ("status".equals(fieldName)) { + status = TelephonyCallJobStatus.fromString(reader.getString()); + } else if ("retry_policy".equals(fieldName)) { + retryPolicy = TelephonyOutboundRetryPolicyResponse.fromJson(reader); + } else if ("attempt_count".equals(fieldName)) { + attemptCount = reader.getInt(); + } else if ("revision".equals(fieldName)) { + revision = reader.getLong(); + } else if ("created_at".equals(fieldName)) { + createdAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC); + } else if ("updated_at".equals(fieldName)) { + updatedAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC); + } else if ("purpose".equals(fieldName)) { + purpose = reader.getString(); + } else if ("structured_inputs".equals(fieldName)) { + structuredInputs = reader.readMap(reader1 -> reader1 + .getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped()))); + } else if ("schedule".equals(fieldName)) { + schedule = TelephonyCallJobSchedule.fromJson(reader); + } else if ("cancellation".equals(fieldName)) { + cancellation = TelephonyCallJobCancellation.fromJson(reader); + } else if ("next_attempt_at".equals(fieldName)) { + nextAttemptAt = reader.getNullable(JsonReader::getLong); + } else if ("terminal_reason".equals(fieldName)) { + terminalReason = reader.getString(); + } else { + reader.skipChildren(); + } + } + TelephonyCallJob deserializedTelephonyCallJob = new TelephonyCallJob(destination, telephonyBindingId, id, + agentName, status, retryPolicy, attemptCount, revision, createdAt, updatedAt); + deserializedTelephonyCallJob.purpose = purpose; + deserializedTelephonyCallJob.structuredInputs = structuredInputs; + deserializedTelephonyCallJob.schedule = schedule; + deserializedTelephonyCallJob.cancellation = cancellation; + deserializedTelephonyCallJob.nextAttemptAt = nextAttemptAt; + deserializedTelephonyCallJob.terminalReason = terminalReason; + return deserializedTelephonyCallJob; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJobCancellation.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJobCancellation.java new file mode 100644 index 0000000000000..0edee8b99ddf8 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJobCancellation.java @@ -0,0 +1,155 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; + +/** + * A cancellation request recorded for an outbound call job. + */ +@Immutable +public final class TelephonyCallJobCancellation implements JsonSerializable { + + /* + * The authenticated principal that requested cancellation. + */ + @Generated + private final String requestedBy; + + /* + * The cancellation mode applied to the call job. + */ + @Generated + private final String mode; + + /* + * The Unix timestamp in seconds when cancellation was requested. + */ + @Generated + private final long requestedAt; + + /* + * The call-job revision at which cancellation was recorded. + */ + @Generated + private final long revision; + + /** + * Creates an instance of TelephonyCallJobCancellation class. + * + * @param requestedBy the requestedBy value to set. + * @param mode the mode value to set. + * @param requestedAt the requestedAt value to set. + * @param revision the revision value to set. + */ + @Generated + private TelephonyCallJobCancellation(String requestedBy, String mode, OffsetDateTime requestedAt, long revision) { + this.requestedBy = requestedBy; + this.mode = mode; + if (requestedAt == null) { + this.requestedAt = 0L; + } else { + this.requestedAt = requestedAt.toEpochSecond(); + } + this.revision = revision; + } + + /** + * Get the requestedBy property: The authenticated principal that requested cancellation. + * + * @return the requestedBy value. + */ + @Generated + public String getRequestedBy() { + return this.requestedBy; + } + + /** + * Get the mode property: The cancellation mode applied to the call job. + * + * @return the mode value. + */ + @Generated + public String getMode() { + return this.mode; + } + + /** + * Get the requestedAt property: The Unix timestamp in seconds when cancellation was requested. + * + * @return the requestedAt value. + */ + @Generated + public OffsetDateTime getRequestedAt() { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.requestedAt), ZoneOffset.UTC); + } + + /** + * Get the revision property: The call-job revision at which cancellation was recorded. + * + * @return the revision value. + */ + @Generated + public long getRevision() { + return this.revision; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("requested_by", this.requestedBy); + jsonWriter.writeStringField("mode", this.mode); + jsonWriter.writeLongField("requested_at", this.requestedAt); + jsonWriter.writeLongField("revision", this.revision); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyCallJobCancellation from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyCallJobCancellation if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyCallJobCancellation. + */ + @Generated + public static TelephonyCallJobCancellation fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String requestedBy = null; + String mode = null; + OffsetDateTime requestedAt = null; + long revision = 0L; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("requested_by".equals(fieldName)) { + requestedBy = reader.getString(); + } else if ("mode".equals(fieldName)) { + mode = reader.getString(); + } else if ("requested_at".equals(fieldName)) { + requestedAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC); + } else if ("revision".equals(fieldName)) { + revision = reader.getLong(); + } else { + reader.skipChildren(); + } + } + return new TelephonyCallJobCancellation(requestedBy, mode, requestedAt, revision); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJobSchedule.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJobSchedule.java new file mode 100644 index 0000000000000..0b7ed932a58b7 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJobSchedule.java @@ -0,0 +1,138 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; + +/** + * The optional execution window for a direct outbound call. + */ +@Fluent +public final class TelephonyCallJobSchedule implements JsonSerializable { + + /* + * The earliest instant at which dispatch may begin. + */ + @Generated + private Long notBefore; + + /* + * The instant after which the call job expires without dispatch. + */ + @Generated + private Long expiresAt; + + /** + * Creates an instance of TelephonyCallJobSchedule class. + */ + @Generated + public TelephonyCallJobSchedule() { + } + + /** + * Get the notBefore property: The earliest instant at which dispatch may begin. + * + * @return the notBefore value. + */ + @Generated + public OffsetDateTime getNotBefore() { + if (this.notBefore == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.notBefore), ZoneOffset.UTC); + } + + /** + * Set the notBefore property: The earliest instant at which dispatch may begin. + * + * @param notBefore the notBefore value to set. + * @return the TelephonyCallJobSchedule object itself. + */ + @Generated + public TelephonyCallJobSchedule setNotBefore(OffsetDateTime notBefore) { + if (notBefore == null) { + this.notBefore = null; + } else { + this.notBefore = notBefore.toEpochSecond(); + } + return this; + } + + /** + * Get the expiresAt property: The instant after which the call job expires without dispatch. + * + * @return the expiresAt value. + */ + @Generated + public OffsetDateTime getExpiresAt() { + if (this.expiresAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.expiresAt), ZoneOffset.UTC); + } + + /** + * Set the expiresAt property: The instant after which the call job expires without dispatch. + * + * @param expiresAt the expiresAt value to set. + * @return the TelephonyCallJobSchedule object itself. + */ + @Generated + public TelephonyCallJobSchedule setExpiresAt(OffsetDateTime expiresAt) { + if (expiresAt == null) { + this.expiresAt = null; + } else { + this.expiresAt = expiresAt.toEpochSecond(); + } + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeNumberField("not_before", this.notBefore); + jsonWriter.writeNumberField("expires_at", this.expiresAt); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyCallJobSchedule from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyCallJobSchedule if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IOException If an error occurs while reading the TelephonyCallJobSchedule. + */ + @Generated + public static TelephonyCallJobSchedule fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TelephonyCallJobSchedule deserializedTelephonyCallJobSchedule = new TelephonyCallJobSchedule(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("not_before".equals(fieldName)) { + deserializedTelephonyCallJobSchedule.notBefore = reader.getNullable(JsonReader::getLong); + } else if ("expires_at".equals(fieldName)) { + deserializedTelephonyCallJobSchedule.expiresAt = reader.getNullable(JsonReader::getLong); + } else { + reader.skipChildren(); + } + } + return deserializedTelephonyCallJobSchedule; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJobStatus.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJobStatus.java new file mode 100644 index 0000000000000..93b54db290065 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallJobStatus.java @@ -0,0 +1,117 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The lifecycle status of a durable outbound call job. + */ +public final class TelephonyCallJobStatus extends ExpandableStringEnum { + + /** + * Static value accepted for TelephonyCallJobStatus. + */ + @Generated + public static final TelephonyCallJobStatus ACCEPTED = fromString("accepted"); + + /** + * Static value waiting_for_schedule for TelephonyCallJobStatus. + */ + @Generated + public static final TelephonyCallJobStatus WAITING_FOR_SCHEDULE = fromString("waiting_for_schedule"); + + /** + * Static value queued for TelephonyCallJobStatus. + */ + @Generated + public static final TelephonyCallJobStatus QUEUED = fromString("queued"); + + /** + * Static value dispatching for TelephonyCallJobStatus. + */ + @Generated + public static final TelephonyCallJobStatus DISPATCHING = fromString("dispatching"); + + /** + * Static value in_progress for TelephonyCallJobStatus. + */ + @Generated + public static final TelephonyCallJobStatus IN_PROGRESS = fromString("in_progress"); + + /** + * Static value waiting_for_retry for TelephonyCallJobStatus. + */ + @Generated + public static final TelephonyCallJobStatus WAITING_FOR_RETRY = fromString("waiting_for_retry"); + + /** + * Static value cancellation_requested for TelephonyCallJobStatus. + */ + @Generated + public static final TelephonyCallJobStatus CANCELLATION_REQUESTED = fromString("cancellation_requested"); + + /** + * Static value completed for TelephonyCallJobStatus. + */ + @Generated + public static final TelephonyCallJobStatus COMPLETED = fromString("completed"); + + /** + * Static value blocked for TelephonyCallJobStatus. + */ + @Generated + public static final TelephonyCallJobStatus BLOCKED = fromString("blocked"); + + /** + * Static value expired for TelephonyCallJobStatus. + */ + @Generated + public static final TelephonyCallJobStatus EXPIRED = fromString("expired"); + + /** + * Static value failed for TelephonyCallJobStatus. + */ + @Generated + public static final TelephonyCallJobStatus FAILED = fromString("failed"); + + /** + * Static value cancelled for TelephonyCallJobStatus. + */ + @Generated + public static final TelephonyCallJobStatus CANCELLED = fromString("cancelled"); + + /** + * Creates a new instance of TelephonyCallJobStatus value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCallJobStatus() { + } + + /** + * Creates or finds a TelephonyCallJobStatus from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCallJobStatus. + */ + @Generated + public static TelephonyCallJobStatus fromString(String name) { + return fromString(name, TelephonyCallJobStatus.class); + } + + /** + * Gets known TelephonyCallJobStatus values. + * + * @return known TelephonyCallJobStatus values. + */ + @Generated + public static Collection values() { + return values(TelephonyCallJobStatus.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEvent.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEvent.java new file mode 100644 index 0000000000000..b23f6df595d3f --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEvent.java @@ -0,0 +1,332 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; + +/** + * A bounded durable observation in the lifecycle of one telephony call. + */ +@Immutable +public final class TelephonyCallLifecycleEvent implements JsonSerializable { + + /* + * The service-assigned order of the event within the call record. + */ + @Generated + private long sequence; + + /* + * The stable provider-neutral event name. + */ + @Generated + private final TelephonyCallLifecycleEventName name; + + /* + * The component that supplied the observation. + */ + @Generated + private final TelephonyCallLifecycleEventSource source; + + /* + * The outcome of the observed lifecycle operation. + */ + @Generated + private final TelephonyCallLifecycleEventOutcome outcome; + + /* + * The Unix timestamp (in seconds) for when the service observed the event. + */ + @Generated + private final long observedAt; + + /* + * The Unix timestamp (in seconds) for when the event occurred according to the provider. + */ + @Generated + private Long occurredAt; + + /* + * The source of the event timestamp. + */ + @Generated + private final TelephonyCallTimestampSource timestampSource; + + /* + * A stable service-generated reason associated with the event. + */ + @Generated + private String reason; + + /* + * The provider event identifier used for idempotency, when supplied. + */ + @Generated + private String providerEventId; + + /* + * The provider event sequence, when supplied. + */ + @Generated + private Long providerSequence; + + /* + * The provider status code associated with the event. + */ + @Generated + private Integer providerStatusCode; + + /* + * The provider subcode associated with the event. + */ + @Generated + private Integer providerSubCode; + + /** + * Creates an instance of TelephonyCallLifecycleEvent class. + * + * @param name the name value to set. + * @param source the source value to set. + * @param outcome the outcome value to set. + * @param observedAt the observedAt value to set. + * @param timestampSource the timestampSource value to set. + */ + @Generated + private TelephonyCallLifecycleEvent(TelephonyCallLifecycleEventName name, TelephonyCallLifecycleEventSource source, + TelephonyCallLifecycleEventOutcome outcome, OffsetDateTime observedAt, + TelephonyCallTimestampSource timestampSource) { + this.name = name; + this.source = source; + this.outcome = outcome; + if (observedAt == null) { + this.observedAt = 0L; + } else { + this.observedAt = observedAt.toEpochSecond(); + } + this.timestampSource = timestampSource; + } + + /** + * Get the sequence property: The service-assigned order of the event within the call record. + * + * @return the sequence value. + */ + @Generated + public long getSequence() { + return this.sequence; + } + + /** + * Get the name property: The stable provider-neutral event name. + * + * @return the name value. + */ + @Generated + public TelephonyCallLifecycleEventName getName() { + return this.name; + } + + /** + * Get the source property: The component that supplied the observation. + * + * @return the source value. + */ + @Generated + public TelephonyCallLifecycleEventSource getSource() { + return this.source; + } + + /** + * Get the outcome property: The outcome of the observed lifecycle operation. + * + * @return the outcome value. + */ + @Generated + public TelephonyCallLifecycleEventOutcome getOutcome() { + return this.outcome; + } + + /** + * Get the observedAt property: The Unix timestamp (in seconds) for when the service observed the event. + * + * @return the observedAt value. + */ + @Generated + public OffsetDateTime getObservedAt() { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.observedAt), ZoneOffset.UTC); + } + + /** + * Get the occurredAt property: The Unix timestamp (in seconds) for when the event occurred according to the + * provider. + * + * @return the occurredAt value. + */ + @Generated + public OffsetDateTime getOccurredAt() { + if (this.occurredAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.occurredAt), ZoneOffset.UTC); + } + + /** + * Get the timestampSource property: The source of the event timestamp. + * + * @return the timestampSource value. + */ + @Generated + public TelephonyCallTimestampSource getTimestampSource() { + return this.timestampSource; + } + + /** + * Get the reason property: A stable service-generated reason associated with the event. + * + * @return the reason value. + */ + @Generated + public String getReason() { + return this.reason; + } + + /** + * Get the providerEventId property: The provider event identifier used for idempotency, when supplied. + * + * @return the providerEventId value. + */ + @Generated + public String getProviderEventId() { + return this.providerEventId; + } + + /** + * Get the providerSequence property: The provider event sequence, when supplied. + * + * @return the providerSequence value. + */ + @Generated + public Long getProviderSequence() { + return this.providerSequence; + } + + /** + * Get the providerStatusCode property: The provider status code associated with the event. + * + * @return the providerStatusCode value. + */ + @Generated + public Integer getProviderStatusCode() { + return this.providerStatusCode; + } + + /** + * Get the providerSubCode property: The provider subcode associated with the event. + * + * @return the providerSubCode value. + */ + @Generated + public Integer getProviderSubCode() { + return this.providerSubCode; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name == null ? null : this.name.toString()); + jsonWriter.writeStringField("source", this.source == null ? null : this.source.toString()); + jsonWriter.writeStringField("outcome", this.outcome == null ? null : this.outcome.toString()); + jsonWriter.writeLongField("observed_at", this.observedAt); + jsonWriter.writeStringField("timestamp_source", + this.timestampSource == null ? null : this.timestampSource.toString()); + jsonWriter.writeNumberField("occurred_at", this.occurredAt); + jsonWriter.writeStringField("reason", this.reason); + jsonWriter.writeStringField("provider_event_id", this.providerEventId); + jsonWriter.writeNumberField("provider_sequence", this.providerSequence); + jsonWriter.writeNumberField("provider_status_code", this.providerStatusCode); + jsonWriter.writeNumberField("provider_sub_code", this.providerSubCode); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyCallLifecycleEvent from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyCallLifecycleEvent if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyCallLifecycleEvent. + */ + @Generated + public static TelephonyCallLifecycleEvent fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + long sequence = 0L; + TelephonyCallLifecycleEventName name = null; + TelephonyCallLifecycleEventSource source = null; + TelephonyCallLifecycleEventOutcome outcome = null; + OffsetDateTime observedAt = null; + TelephonyCallTimestampSource timestampSource = null; + Long occurredAt = null; + String reason = null; + String providerEventId = null; + Long providerSequence = null; + Integer providerStatusCode = null; + Integer providerSubCode = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("sequence".equals(fieldName)) { + sequence = reader.getLong(); + } else if ("name".equals(fieldName)) { + name = TelephonyCallLifecycleEventName.fromString(reader.getString()); + } else if ("source".equals(fieldName)) { + source = TelephonyCallLifecycleEventSource.fromString(reader.getString()); + } else if ("outcome".equals(fieldName)) { + outcome = TelephonyCallLifecycleEventOutcome.fromString(reader.getString()); + } else if ("observed_at".equals(fieldName)) { + observedAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC); + } else if ("timestamp_source".equals(fieldName)) { + timestampSource = TelephonyCallTimestampSource.fromString(reader.getString()); + } else if ("occurred_at".equals(fieldName)) { + occurredAt = reader.getNullable(JsonReader::getLong); + } else if ("reason".equals(fieldName)) { + reason = reader.getString(); + } else if ("provider_event_id".equals(fieldName)) { + providerEventId = reader.getString(); + } else if ("provider_sequence".equals(fieldName)) { + providerSequence = reader.getNullable(JsonReader::getLong); + } else if ("provider_status_code".equals(fieldName)) { + providerStatusCode = reader.getNullable(JsonReader::getInt); + } else if ("provider_sub_code".equals(fieldName)) { + providerSubCode = reader.getNullable(JsonReader::getInt); + } else { + reader.skipChildren(); + } + } + TelephonyCallLifecycleEvent deserializedTelephonyCallLifecycleEvent + = new TelephonyCallLifecycleEvent(name, source, outcome, observedAt, timestampSource); + deserializedTelephonyCallLifecycleEvent.sequence = sequence; + deserializedTelephonyCallLifecycleEvent.occurredAt = occurredAt; + deserializedTelephonyCallLifecycleEvent.reason = reason; + deserializedTelephonyCallLifecycleEvent.providerEventId = providerEventId; + deserializedTelephonyCallLifecycleEvent.providerSequence = providerSequence; + deserializedTelephonyCallLifecycleEvent.providerStatusCode = providerStatusCode; + deserializedTelephonyCallLifecycleEvent.providerSubCode = providerSubCode; + return deserializedTelephonyCallLifecycleEvent; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventName.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventName.java new file mode 100644 index 0000000000000..506cc65657442 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventName.java @@ -0,0 +1,114 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * A provider-neutral lifecycle event name. Known values are stable; additional values may be added over time. + */ +public final class TelephonyCallLifecycleEventName extends ExpandableStringEnum { + + /** + * The provider webhook was received. + */ + @Generated + public static final TelephonyCallLifecycleEventName WEBHOOK_RECEIVED = fromString("telephony.webhook.received"); + + /** + * The provider webhook was validated. + */ + @Generated + public static final TelephonyCallLifecycleEventName WEBHOOK_VALIDATION = fromString("telephony.webhook.validation"); + + /** + * The service attempted to resolve the agent binding. + */ + @Generated + public static final TelephonyCallLifecycleEventName BINDING_RESOLVE = fromString("telephony.binding.resolve"); + + /** + * The service requested or observed provider answer state. + */ + @Generated + public static final TelephonyCallLifecycleEventName PROVIDER_ANSWER = fromString("telephony.provider.answer"); + + /** + * The provider media channel changed connection state. + */ + @Generated + public static final TelephonyCallLifecycleEventName MEDIA_CONNECT = fromString("telephony.media.connect"); + + /** + * The voice-agent session changed connection state. + */ + @Generated + public static final TelephonyCallLifecycleEventName AGENT_SESSION_CONNECT + = fromString("telephony.agent_session.connect"); + + /** + * The first caller audio was observed. + */ + @Generated + public static final TelephonyCallLifecycleEventName FIRST_CALLER_AUDIO + = fromString("telephony.media.first_caller_audio"); + + /** + * The first agent audio was observed. + */ + @Generated + public static final TelephonyCallLifecycleEventName FIRST_AGENT_AUDIO + = fromString("telephony.media.first_agent_audio"); + + /** + * A call transfer changed state. + */ + @Generated + public static final TelephonyCallLifecycleEventName CALL_TRANSFER = fromString("telephony.call.transfer"); + + /** + * A call hang-up changed state. + */ + @Generated + public static final TelephonyCallLifecycleEventName CALL_HANGUP = fromString("telephony.call.hangup"); + + /** + * The call disconnected. + */ + @Generated + public static final TelephonyCallLifecycleEventName CALL_DISCONNECT = fromString("telephony.call.disconnect"); + + /** + * Creates a new instance of TelephonyCallLifecycleEventName value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCallLifecycleEventName() { + } + + /** + * Creates or finds a TelephonyCallLifecycleEventName from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCallLifecycleEventName. + */ + @Generated + public static TelephonyCallLifecycleEventName fromString(String name) { + return fromString(name, TelephonyCallLifecycleEventName.class); + } + + /** + * Gets known TelephonyCallLifecycleEventName values. + * + * @return known TelephonyCallLifecycleEventName values. + */ + @Generated + public static Collection values() { + return values(TelephonyCallLifecycleEventName.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventOutcome.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventOutcome.java new file mode 100644 index 0000000000000..92c4beebf701b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventOutcome.java @@ -0,0 +1,81 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The outcome of one telephony lifecycle observation. + */ +public final class TelephonyCallLifecycleEventOutcome extends ExpandableStringEnum { + + /** + * The event was observed without a success or failure result. + */ + @Generated + public static final TelephonyCallLifecycleEventOutcome OBSERVED = fromString("observed"); + + /** + * The operation started. + */ + @Generated + public static final TelephonyCallLifecycleEventOutcome STARTED = fromString("started"); + + /** + * The operation succeeded. + */ + @Generated + public static final TelephonyCallLifecycleEventOutcome SUCCEEDED = fromString("succeeded"); + + /** + * The operation failed. + */ + @Generated + public static final TelephonyCallLifecycleEventOutcome FAILED = fromString("failed"); + + /** + * The operation or call was rejected. + */ + @Generated + public static final TelephonyCallLifecycleEventOutcome REJECTED = fromString("rejected"); + + /** + * The operation was cancelled. + */ + @Generated + public static final TelephonyCallLifecycleEventOutcome CANCELLED = fromString("cancelled"); + + /** + * Creates a new instance of TelephonyCallLifecycleEventOutcome value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCallLifecycleEventOutcome() { + } + + /** + * Creates or finds a TelephonyCallLifecycleEventOutcome from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCallLifecycleEventOutcome. + */ + @Generated + public static TelephonyCallLifecycleEventOutcome fromString(String name) { + return fromString(name, TelephonyCallLifecycleEventOutcome.class); + } + + /** + * Gets known TelephonyCallLifecycleEventOutcome values. + * + * @return known TelephonyCallLifecycleEventOutcome values. + */ + @Generated + public static Collection values() { + return values(TelephonyCallLifecycleEventOutcome.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventSource.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventSource.java new file mode 100644 index 0000000000000..270fb018e21cd --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventSource.java @@ -0,0 +1,69 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The component that supplied a telephony lifecycle observation. + */ +public final class TelephonyCallLifecycleEventSource extends ExpandableStringEnum { + + /** + * The Foundry telephony gateway supplied the observation. + */ + @Generated + public static final TelephonyCallLifecycleEventSource GATEWAY = fromString("gateway"); + + /** + * Microsoft Teams Phone Extension supplied the observation. + */ + @Generated + public static final TelephonyCallLifecycleEventSource TEAMS_PHONE_EXTENSION = fromString("teams_phone_extension"); + + /** + * Twilio supplied the observation. + */ + @Generated + public static final TelephonyCallLifecycleEventSource TWILIO = fromString("twilio"); + + /** + * The voice-agent runtime supplied the observation. + */ + @Generated + public static final TelephonyCallLifecycleEventSource VOICE_AGENT = fromString("voice_agent"); + + /** + * Creates a new instance of TelephonyCallLifecycleEventSource value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCallLifecycleEventSource() { + } + + /** + * Creates or finds a TelephonyCallLifecycleEventSource from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCallLifecycleEventSource. + */ + @Generated + public static TelephonyCallLifecycleEventSource fromString(String name) { + return fromString(name, TelephonyCallLifecycleEventSource.class); + } + + /** + * Gets known TelephonyCallLifecycleEventSource values. + * + * @return known TelephonyCallLifecycleEventSource values. + */ + @Generated + public static Collection values() { + return values(TelephonyCallLifecycleEventSource.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallPhase.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallPhase.java new file mode 100644 index 0000000000000..beb62608020ce --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallPhase.java @@ -0,0 +1,117 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The provider-neutral phase reached by an inbound telephony call. + */ +public final class TelephonyCallPhase extends ExpandableStringEnum { + + /** + * The provider webhook was received. + */ + @Generated + public static final TelephonyCallPhase RECEIVED = fromString("received"); + + /** + * The provider webhook was validated. + */ + @Generated + public static final TelephonyCallPhase VALIDATED = fromString("validated"); + + /** + * The call was admitted to a configured agent binding. + */ + @Generated + public static final TelephonyCallPhase ADMITTED = fromString("admitted"); + + /** + * The provider was asked to answer the call. + */ + @Generated + public static final TelephonyCallPhase ANSWERING = fromString("answering"); + + /** + * The provider reported that the call was answered. + */ + @Generated + public static final TelephonyCallPhase ANSWERED = fromString("answered"); + + /** + * The provider media channel was connected. + */ + @Generated + public static final TelephonyCallPhase MEDIA_CONNECTED = fromString("media_connected"); + + /** + * The voice-agent session was ready. + */ + @Generated + public static final TelephonyCallPhase AGENT_SESSION_READY = fromString("agent_session_ready"); + + /** + * Media was actively bridged between the caller and the voice agent. + */ + @Generated + public static final TelephonyCallPhase BRIDGING = fromString("bridging"); + + /** + * A mid-call management command was in progress. + */ + @Generated + public static final TelephonyCallPhase MANAGING = fromString("managing"); + + /** + * The call completed. + */ + @Generated + public static final TelephonyCallPhase COMPLETED = fromString("completed"); + + /** + * The call was rejected before admission or answer. + */ + @Generated + public static final TelephonyCallPhase REJECTED = fromString("rejected"); + + /** + * The call failed. + */ + @Generated + public static final TelephonyCallPhase FAILED = fromString("failed"); + + /** + * Creates a new instance of TelephonyCallPhase value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCallPhase() { + } + + /** + * Creates or finds a TelephonyCallPhase from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCallPhase. + */ + @Generated + public static TelephonyCallPhase fromString(String name) { + return fromString(name, TelephonyCallPhase.class); + } + + /** + * Gets known TelephonyCallPhase values. + * + * @return known TelephonyCallPhase values. + */ + @Generated + public static Collection values() { + return values(TelephonyCallPhase.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallRecord.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallRecord.java new file mode 100644 index 0000000000000..03eb0a954453c --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallRecord.java @@ -0,0 +1,538 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.util.List; + +/** + * Detailed diagnostics for a durable inbound call to a voice agent. + */ +@Immutable +public final class TelephonyCallRecord implements JsonSerializable { + + /* + * The service-generated call identifier. + */ + @Generated + private final String id; + + /* + * The telephony provider. + */ + @Generated + private final TelephonyProvider provider; + + /* + * The provider-assigned call identifier, when available. + */ + @Generated + private String providerCallId; + + /* + * The caller's phone number, when supplied by the provider. + */ + @Generated + private String callerNumber; + + /* + * The Teams Phone Extension or Twilio number that received the call. + */ + @Generated + private String providerNumber; + + /* + * The lifecycle status of the call. + */ + @Generated + private final TelephonyCallStatus status; + + /* + * The provider-neutral lifecycle phase reached by the call. + */ + @Generated + private final TelephonyCallPhase phase; + + /* + * The Unix timestamp (in seconds) for when the inbound webhook was received. + */ + @Generated + private final long startedAt; + + /* + * The Unix timestamp (in seconds) for when the provider reported the call as answered. + */ + @Generated + private Long answeredAt; + + /* + * The Unix timestamp (in seconds) for when the provider media channel connected. + */ + @Generated + private Long mediaConnectedAt; + + /* + * The Unix timestamp (in seconds) for when the voice-agent session became ready. + */ + @Generated + private Long agentSessionReadyAt; + + /* + * The Unix timestamp (in seconds) for when the call ended. + */ + @Generated + private Long endedAt; + + /* + * The call duration. + */ + @Generated + private Long durationMs; + + /* + * The service-generated reason that the call ended. + */ + @Generated + private String endReason; + + /* + * The provider status code associated with the terminal result. + */ + @Generated + private Integer providerStatusCode; + + /* + * The provider subcode associated with the terminal result. + */ + @Generated + private Integer providerSubCode; + + /* + * The provider message associated with the terminal result. + */ + @Generated + private String providerMessage; + + /* + * Detailed provider-neutral call timing. + */ + @Generated + private final TelephonyCallTiming timing; + + /* + * Correlation to the customer-facing Foundry trace. + */ + @Generated + private TelephonyCallTrace trace; + + /* + * The lifecycle timeline. + */ + @Generated + private final List events; + + /* + * Whether older lifecycle events were omitted from the timeline. + */ + @Generated + private final boolean eventsTruncated; + + /** + * Creates an instance of TelephonyCallRecord class. + * + * @param id the id value to set. + * @param provider the provider value to set. + * @param status the status value to set. + * @param phase the phase value to set. + * @param startedAt the startedAt value to set. + * @param timing the timing value to set. + * @param events the events value to set. + * @param eventsTruncated the eventsTruncated value to set. + */ + @Generated + private TelephonyCallRecord(String id, TelephonyProvider provider, TelephonyCallStatus status, + TelephonyCallPhase phase, OffsetDateTime startedAt, TelephonyCallTiming timing, + List events, boolean eventsTruncated) { + this.id = id; + this.provider = provider; + this.status = status; + this.phase = phase; + if (startedAt == null) { + this.startedAt = 0L; + } else { + this.startedAt = startedAt.toEpochSecond(); + } + this.timing = timing; + this.events = events; + this.eventsTruncated = eventsTruncated; + } + + /** + * Get the id property: The service-generated call identifier. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the provider property: The telephony provider. + * + * @return the provider value. + */ + @Generated + public TelephonyProvider getProvider() { + return this.provider; + } + + /** + * Get the providerCallId property: The provider-assigned call identifier, when available. + * + * @return the providerCallId value. + */ + @Generated + public String getProviderCallId() { + return this.providerCallId; + } + + /** + * Get the callerNumber property: The caller's phone number, when supplied by the provider. + * + * @return the callerNumber value. + */ + @Generated + public String getCallerNumber() { + return this.callerNumber; + } + + /** + * Get the providerNumber property: The Teams Phone Extension or Twilio number that received the call. + * + * @return the providerNumber value. + */ + @Generated + public String getProviderNumber() { + return this.providerNumber; + } + + /** + * Get the status property: The lifecycle status of the call. + * + * @return the status value. + */ + @Generated + public TelephonyCallStatus getStatus() { + return this.status; + } + + /** + * Get the phase property: The provider-neutral lifecycle phase reached by the call. + * + * @return the phase value. + */ + @Generated + public TelephonyCallPhase getPhase() { + return this.phase; + } + + /** + * Get the startedAt property: The Unix timestamp (in seconds) for when the inbound webhook was received. + * + * @return the startedAt value. + */ + @Generated + public OffsetDateTime getStartedAt() { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.startedAt), ZoneOffset.UTC); + } + + /** + * Get the answeredAt property: The Unix timestamp (in seconds) for when the provider reported the call as answered. + * + * @return the answeredAt value. + */ + @Generated + public OffsetDateTime getAnsweredAt() { + if (this.answeredAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.answeredAt), ZoneOffset.UTC); + } + + /** + * Get the mediaConnectedAt property: The Unix timestamp (in seconds) for when the provider media channel connected. + * + * @return the mediaConnectedAt value. + */ + @Generated + public OffsetDateTime getMediaConnectedAt() { + if (this.mediaConnectedAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.mediaConnectedAt), ZoneOffset.UTC); + } + + /** + * Get the agentSessionReadyAt property: The Unix timestamp (in seconds) for when the voice-agent session became + * ready. + * + * @return the agentSessionReadyAt value. + */ + @Generated + public OffsetDateTime getAgentSessionReadyAt() { + if (this.agentSessionReadyAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.agentSessionReadyAt), ZoneOffset.UTC); + } + + /** + * Get the endedAt property: The Unix timestamp (in seconds) for when the call ended. + * + * @return the endedAt value. + */ + @Generated + public OffsetDateTime getEndedAt() { + if (this.endedAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.endedAt), ZoneOffset.UTC); + } + + /** + * Get the durationMs property: The call duration. + * + * @return the durationMs value. + */ + @Generated + public Duration getDurationMs() { + if (this.durationMs == null) { + return null; + } + return Duration.ofMillis(this.durationMs); + } + + /** + * Get the endReason property: The service-generated reason that the call ended. + * + * @return the endReason value. + */ + @Generated + public String getEndReason() { + return this.endReason; + } + + /** + * Get the providerStatusCode property: The provider status code associated with the terminal result. + * + * @return the providerStatusCode value. + */ + @Generated + public Integer getProviderStatusCode() { + return this.providerStatusCode; + } + + /** + * Get the providerSubCode property: The provider subcode associated with the terminal result. + * + * @return the providerSubCode value. + */ + @Generated + public Integer getProviderSubCode() { + return this.providerSubCode; + } + + /** + * Get the providerMessage property: The provider message associated with the terminal result. + * + * @return the providerMessage value. + */ + @Generated + public String getProviderMessage() { + return this.providerMessage; + } + + /** + * Get the timing property: Detailed provider-neutral call timing. + * + * @return the timing value. + */ + @Generated + public TelephonyCallTiming getTiming() { + return this.timing; + } + + /** + * Get the trace property: Correlation to the customer-facing Foundry trace. + * + * @return the trace value. + */ + @Generated + public TelephonyCallTrace getTrace() { + return this.trace; + } + + /** + * Get the events property: The lifecycle timeline. + * + * @return the events value. + */ + @Generated + public List getEvents() { + return this.events; + } + + /** + * Get the eventsTruncated property: Whether older lifecycle events were omitted from the timeline. + * + * @return the eventsTruncated value. + */ + @Generated + public boolean isEventsTruncated() { + return this.eventsTruncated; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("provider", this.provider == null ? null : this.provider.toString()); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + jsonWriter.writeStringField("phase", this.phase == null ? null : this.phase.toString()); + jsonWriter.writeLongField("started_at", this.startedAt); + jsonWriter.writeJsonField("timing", this.timing); + jsonWriter.writeArrayField("events", this.events, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeBooleanField("events_truncated", this.eventsTruncated); + jsonWriter.writeStringField("provider_call_id", this.providerCallId); + jsonWriter.writeStringField("caller_number", this.callerNumber); + jsonWriter.writeStringField("provider_number", this.providerNumber); + jsonWriter.writeNumberField("answered_at", this.answeredAt); + jsonWriter.writeNumberField("media_connected_at", this.mediaConnectedAt); + jsonWriter.writeNumberField("agent_session_ready_at", this.agentSessionReadyAt); + jsonWriter.writeNumberField("ended_at", this.endedAt); + jsonWriter.writeNumberField("duration_ms", this.durationMs); + jsonWriter.writeStringField("end_reason", this.endReason); + jsonWriter.writeNumberField("provider_status_code", this.providerStatusCode); + jsonWriter.writeNumberField("provider_sub_code", this.providerSubCode); + jsonWriter.writeStringField("provider_message", this.providerMessage); + jsonWriter.writeJsonField("trace", this.trace); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyCallRecord from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyCallRecord if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyCallRecord. + */ + @Generated + public static TelephonyCallRecord fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + TelephonyProvider provider = null; + TelephonyCallStatus status = null; + TelephonyCallPhase phase = null; + OffsetDateTime startedAt = null; + TelephonyCallTiming timing = null; + List events = null; + boolean eventsTruncated = false; + String providerCallId = null; + String callerNumber = null; + String providerNumber = null; + Long answeredAt = null; + Long mediaConnectedAt = null; + Long agentSessionReadyAt = null; + Long endedAt = null; + Long durationMs = null; + String endReason = null; + Integer providerStatusCode = null; + Integer providerSubCode = null; + String providerMessage = null; + TelephonyCallTrace trace = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("provider".equals(fieldName)) { + provider = TelephonyProvider.fromString(reader.getString()); + } else if ("status".equals(fieldName)) { + status = TelephonyCallStatus.fromString(reader.getString()); + } else if ("phase".equals(fieldName)) { + phase = TelephonyCallPhase.fromString(reader.getString()); + } else if ("started_at".equals(fieldName)) { + startedAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC); + } else if ("timing".equals(fieldName)) { + timing = TelephonyCallTiming.fromJson(reader); + } else if ("events".equals(fieldName)) { + events = reader.readArray(reader1 -> TelephonyCallLifecycleEvent.fromJson(reader1)); + } else if ("events_truncated".equals(fieldName)) { + eventsTruncated = reader.getBoolean(); + } else if ("provider_call_id".equals(fieldName)) { + providerCallId = reader.getString(); + } else if ("caller_number".equals(fieldName)) { + callerNumber = reader.getString(); + } else if ("provider_number".equals(fieldName)) { + providerNumber = reader.getString(); + } else if ("answered_at".equals(fieldName)) { + answeredAt = reader.getNullable(JsonReader::getLong); + } else if ("media_connected_at".equals(fieldName)) { + mediaConnectedAt = reader.getNullable(JsonReader::getLong); + } else if ("agent_session_ready_at".equals(fieldName)) { + agentSessionReadyAt = reader.getNullable(JsonReader::getLong); + } else if ("ended_at".equals(fieldName)) { + endedAt = reader.getNullable(JsonReader::getLong); + } else if ("duration_ms".equals(fieldName)) { + durationMs = reader.getNullable(JsonReader::getLong); + } else if ("end_reason".equals(fieldName)) { + endReason = reader.getString(); + } else if ("provider_status_code".equals(fieldName)) { + providerStatusCode = reader.getNullable(JsonReader::getInt); + } else if ("provider_sub_code".equals(fieldName)) { + providerSubCode = reader.getNullable(JsonReader::getInt); + } else if ("provider_message".equals(fieldName)) { + providerMessage = reader.getString(); + } else if ("trace".equals(fieldName)) { + trace = TelephonyCallTrace.fromJson(reader); + } else { + reader.skipChildren(); + } + } + TelephonyCallRecord deserializedTelephonyCallRecord + = new TelephonyCallRecord(id, provider, status, phase, startedAt, timing, events, eventsTruncated); + deserializedTelephonyCallRecord.providerCallId = providerCallId; + deserializedTelephonyCallRecord.callerNumber = callerNumber; + deserializedTelephonyCallRecord.providerNumber = providerNumber; + deserializedTelephonyCallRecord.answeredAt = answeredAt; + deserializedTelephonyCallRecord.mediaConnectedAt = mediaConnectedAt; + deserializedTelephonyCallRecord.agentSessionReadyAt = agentSessionReadyAt; + deserializedTelephonyCallRecord.endedAt = endedAt; + deserializedTelephonyCallRecord.durationMs = durationMs; + deserializedTelephonyCallRecord.endReason = endReason; + deserializedTelephonyCallRecord.providerStatusCode = providerStatusCode; + deserializedTelephonyCallRecord.providerSubCode = providerSubCode; + deserializedTelephonyCallRecord.providerMessage = providerMessage; + deserializedTelephonyCallRecord.trace = trace; + return deserializedTelephonyCallRecord; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallStatus.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallStatus.java new file mode 100644 index 0000000000000..b709d31560375 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallStatus.java @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The lifecycle status of an inbound telephony call. + */ +public final class TelephonyCallStatus extends ExpandableStringEnum { + + /** + * The call has started and has not reached a terminal state. + */ + @Generated + public static final TelephonyCallStatus IN_PROGRESS = fromString("in_progress"); + + /** + * The call ended successfully. + */ + @Generated + public static final TelephonyCallStatus SUCCESS = fromString("success"); + + /** + * The call ended because of a provider or management failure. + */ + @Generated + public static final TelephonyCallStatus FAILED = fromString("failed"); + + /** + * Creates a new instance of TelephonyCallStatus value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCallStatus() { + } + + /** + * Creates or finds a TelephonyCallStatus from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCallStatus. + */ + @Generated + public static TelephonyCallStatus fromString(String name) { + return fromString(name, TelephonyCallStatus.class); + } + + /** + * Gets known TelephonyCallStatus values. + * + * @return known TelephonyCallStatus values. + */ + @Generated + public static Collection values() { + return values(TelephonyCallStatus.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallSummary.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallSummary.java new file mode 100644 index 0000000000000..0c7aac63ec362 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallSummary.java @@ -0,0 +1,449 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; + +/** + * A summary of a durable inbound call to a voice agent. + */ +@Immutable +public final class TelephonyCallSummary implements JsonSerializable { + + /* + * The service-generated call identifier. + */ + @Generated + private final String id; + + /* + * The telephony provider. + */ + @Generated + private final TelephonyProvider provider; + + /* + * The provider-assigned call identifier, when available. + */ + @Generated + private String providerCallId; + + /* + * The caller's phone number, when supplied by the provider. + */ + @Generated + private String callerNumber; + + /* + * The Teams Phone Extension or Twilio number that received the call. + */ + @Generated + private String providerNumber; + + /* + * The lifecycle status of the call. + */ + @Generated + private final TelephonyCallStatus status; + + /* + * The provider-neutral lifecycle phase reached by the call. + */ + @Generated + private final TelephonyCallPhase phase; + + /* + * The Unix timestamp (in seconds) for when the inbound webhook was received. + */ + @Generated + private final long startedAt; + + /* + * The Unix timestamp (in seconds) for when the provider reported the call as answered. + */ + @Generated + private Long answeredAt; + + /* + * The Unix timestamp (in seconds) for when the provider media channel connected. + */ + @Generated + private Long mediaConnectedAt; + + /* + * The Unix timestamp (in seconds) for when the voice-agent session became ready. + */ + @Generated + private Long agentSessionReadyAt; + + /* + * The Unix timestamp (in seconds) for when the call ended. + */ + @Generated + private Long endedAt; + + /* + * The call duration. + */ + @Generated + private Long durationMs; + + /* + * The service-generated reason that the call ended. + */ + @Generated + private String endReason; + + /* + * The provider status code associated with the terminal result. + */ + @Generated + private Integer providerStatusCode; + + /* + * The provider subcode associated with the terminal result. + */ + @Generated + private Integer providerSubCode; + + /* + * The provider message associated with the terminal result. + */ + @Generated + private String providerMessage; + + /** + * Creates an instance of TelephonyCallSummary class. + * + * @param id the id value to set. + * @param provider the provider value to set. + * @param status the status value to set. + * @param phase the phase value to set. + * @param startedAt the startedAt value to set. + */ + @Generated + private TelephonyCallSummary(String id, TelephonyProvider provider, TelephonyCallStatus status, + TelephonyCallPhase phase, OffsetDateTime startedAt) { + this.id = id; + this.provider = provider; + this.status = status; + this.phase = phase; + if (startedAt == null) { + this.startedAt = 0L; + } else { + this.startedAt = startedAt.toEpochSecond(); + } + } + + /** + * Get the id property: The service-generated call identifier. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the provider property: The telephony provider. + * + * @return the provider value. + */ + @Generated + public TelephonyProvider getProvider() { + return this.provider; + } + + /** + * Get the providerCallId property: The provider-assigned call identifier, when available. + * + * @return the providerCallId value. + */ + @Generated + public String getProviderCallId() { + return this.providerCallId; + } + + /** + * Get the callerNumber property: The caller's phone number, when supplied by the provider. + * + * @return the callerNumber value. + */ + @Generated + public String getCallerNumber() { + return this.callerNumber; + } + + /** + * Get the providerNumber property: The Teams Phone Extension or Twilio number that received the call. + * + * @return the providerNumber value. + */ + @Generated + public String getProviderNumber() { + return this.providerNumber; + } + + /** + * Get the status property: The lifecycle status of the call. + * + * @return the status value. + */ + @Generated + public TelephonyCallStatus getStatus() { + return this.status; + } + + /** + * Get the phase property: The provider-neutral lifecycle phase reached by the call. + * + * @return the phase value. + */ + @Generated + public TelephonyCallPhase getPhase() { + return this.phase; + } + + /** + * Get the startedAt property: The Unix timestamp (in seconds) for when the inbound webhook was received. + * + * @return the startedAt value. + */ + @Generated + public OffsetDateTime getStartedAt() { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.startedAt), ZoneOffset.UTC); + } + + /** + * Get the answeredAt property: The Unix timestamp (in seconds) for when the provider reported the call as answered. + * + * @return the answeredAt value. + */ + @Generated + public OffsetDateTime getAnsweredAt() { + if (this.answeredAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.answeredAt), ZoneOffset.UTC); + } + + /** + * Get the mediaConnectedAt property: The Unix timestamp (in seconds) for when the provider media channel connected. + * + * @return the mediaConnectedAt value. + */ + @Generated + public OffsetDateTime getMediaConnectedAt() { + if (this.mediaConnectedAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.mediaConnectedAt), ZoneOffset.UTC); + } + + /** + * Get the agentSessionReadyAt property: The Unix timestamp (in seconds) for when the voice-agent session became + * ready. + * + * @return the agentSessionReadyAt value. + */ + @Generated + public OffsetDateTime getAgentSessionReadyAt() { + if (this.agentSessionReadyAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.agentSessionReadyAt), ZoneOffset.UTC); + } + + /** + * Get the endedAt property: The Unix timestamp (in seconds) for when the call ended. + * + * @return the endedAt value. + */ + @Generated + public OffsetDateTime getEndedAt() { + if (this.endedAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.endedAt), ZoneOffset.UTC); + } + + /** + * Get the durationMs property: The call duration. + * + * @return the durationMs value. + */ + @Generated + public Duration getDurationMs() { + if (this.durationMs == null) { + return null; + } + return Duration.ofMillis(this.durationMs); + } + + /** + * Get the endReason property: The service-generated reason that the call ended. + * + * @return the endReason value. + */ + @Generated + public String getEndReason() { + return this.endReason; + } + + /** + * Get the providerStatusCode property: The provider status code associated with the terminal result. + * + * @return the providerStatusCode value. + */ + @Generated + public Integer getProviderStatusCode() { + return this.providerStatusCode; + } + + /** + * Get the providerSubCode property: The provider subcode associated with the terminal result. + * + * @return the providerSubCode value. + */ + @Generated + public Integer getProviderSubCode() { + return this.providerSubCode; + } + + /** + * Get the providerMessage property: The provider message associated with the terminal result. + * + * @return the providerMessage value. + */ + @Generated + public String getProviderMessage() { + return this.providerMessage; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("provider", this.provider == null ? null : this.provider.toString()); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + jsonWriter.writeStringField("phase", this.phase == null ? null : this.phase.toString()); + jsonWriter.writeLongField("started_at", this.startedAt); + jsonWriter.writeStringField("provider_call_id", this.providerCallId); + jsonWriter.writeStringField("caller_number", this.callerNumber); + jsonWriter.writeStringField("provider_number", this.providerNumber); + jsonWriter.writeNumberField("answered_at", this.answeredAt); + jsonWriter.writeNumberField("media_connected_at", this.mediaConnectedAt); + jsonWriter.writeNumberField("agent_session_ready_at", this.agentSessionReadyAt); + jsonWriter.writeNumberField("ended_at", this.endedAt); + jsonWriter.writeNumberField("duration_ms", this.durationMs); + jsonWriter.writeStringField("end_reason", this.endReason); + jsonWriter.writeNumberField("provider_status_code", this.providerStatusCode); + jsonWriter.writeNumberField("provider_sub_code", this.providerSubCode); + jsonWriter.writeStringField("provider_message", this.providerMessage); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyCallSummary from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyCallSummary if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyCallSummary. + */ + @Generated + public static TelephonyCallSummary fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + TelephonyProvider provider = null; + TelephonyCallStatus status = null; + TelephonyCallPhase phase = null; + OffsetDateTime startedAt = null; + String providerCallId = null; + String callerNumber = null; + String providerNumber = null; + Long answeredAt = null; + Long mediaConnectedAt = null; + Long agentSessionReadyAt = null; + Long endedAt = null; + Long durationMs = null; + String endReason = null; + Integer providerStatusCode = null; + Integer providerSubCode = null; + String providerMessage = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("provider".equals(fieldName)) { + provider = TelephonyProvider.fromString(reader.getString()); + } else if ("status".equals(fieldName)) { + status = TelephonyCallStatus.fromString(reader.getString()); + } else if ("phase".equals(fieldName)) { + phase = TelephonyCallPhase.fromString(reader.getString()); + } else if ("started_at".equals(fieldName)) { + startedAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC); + } else if ("provider_call_id".equals(fieldName)) { + providerCallId = reader.getString(); + } else if ("caller_number".equals(fieldName)) { + callerNumber = reader.getString(); + } else if ("provider_number".equals(fieldName)) { + providerNumber = reader.getString(); + } else if ("answered_at".equals(fieldName)) { + answeredAt = reader.getNullable(JsonReader::getLong); + } else if ("media_connected_at".equals(fieldName)) { + mediaConnectedAt = reader.getNullable(JsonReader::getLong); + } else if ("agent_session_ready_at".equals(fieldName)) { + agentSessionReadyAt = reader.getNullable(JsonReader::getLong); + } else if ("ended_at".equals(fieldName)) { + endedAt = reader.getNullable(JsonReader::getLong); + } else if ("duration_ms".equals(fieldName)) { + durationMs = reader.getNullable(JsonReader::getLong); + } else if ("end_reason".equals(fieldName)) { + endReason = reader.getString(); + } else if ("provider_status_code".equals(fieldName)) { + providerStatusCode = reader.getNullable(JsonReader::getInt); + } else if ("provider_sub_code".equals(fieldName)) { + providerSubCode = reader.getNullable(JsonReader::getInt); + } else if ("provider_message".equals(fieldName)) { + providerMessage = reader.getString(); + } else { + reader.skipChildren(); + } + } + TelephonyCallSummary deserializedTelephonyCallSummary + = new TelephonyCallSummary(id, provider, status, phase, startedAt); + deserializedTelephonyCallSummary.providerCallId = providerCallId; + deserializedTelephonyCallSummary.callerNumber = callerNumber; + deserializedTelephonyCallSummary.providerNumber = providerNumber; + deserializedTelephonyCallSummary.answeredAt = answeredAt; + deserializedTelephonyCallSummary.mediaConnectedAt = mediaConnectedAt; + deserializedTelephonyCallSummary.agentSessionReadyAt = agentSessionReadyAt; + deserializedTelephonyCallSummary.endedAt = endedAt; + deserializedTelephonyCallSummary.durationMs = durationMs; + deserializedTelephonyCallSummary.endReason = endReason; + deserializedTelephonyCallSummary.providerStatusCode = providerStatusCode; + deserializedTelephonyCallSummary.providerSubCode = providerSubCode; + deserializedTelephonyCallSummary.providerMessage = providerMessage; + return deserializedTelephonyCallSummary; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTimestampSource.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTimestampSource.java new file mode 100644 index 0000000000000..f271036390074 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTimestampSource.java @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The source of a telephony lifecycle timestamp. + */ +public final class TelephonyCallTimestampSource extends ExpandableStringEnum { + + /** + * The telephony provider supplied the timestamp. + */ + @Generated + public static final TelephonyCallTimestampSource PROVIDER = fromString("provider"); + + /** + * The Foundry telephony gateway observed the event. + */ + @Generated + public static final TelephonyCallTimestampSource GATEWAY = fromString("gateway"); + + /** + * The service derived the timestamp from another observation. + */ + @Generated + public static final TelephonyCallTimestampSource DERIVED = fromString("derived"); + + /** + * Creates a new instance of TelephonyCallTimestampSource value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCallTimestampSource() { + } + + /** + * Creates or finds a TelephonyCallTimestampSource from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCallTimestampSource. + */ + @Generated + public static TelephonyCallTimestampSource fromString(String name) { + return fromString(name, TelephonyCallTimestampSource.class); + } + + /** + * Gets known TelephonyCallTimestampSource values. + * + * @return known TelephonyCallTimestampSource values. + */ + @Generated + public static Collection values() { + return values(TelephonyCallTimestampSource.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTiming.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTiming.java new file mode 100644 index 0000000000000..a0b0f59ac328a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTiming.java @@ -0,0 +1,354 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; + +/** + * Detailed provider-neutral timing for an inbound telephony call. + */ +@Immutable +public final class TelephonyCallTiming implements JsonSerializable { + + /* + * The Unix timestamp (in seconds) for when the provider webhook was received. + */ + @Generated + private Long receivedAt; + + /* + * The Unix timestamp (in seconds) for when webhook validation completed. + */ + @Generated + private Long validatedAt; + + /* + * The Unix timestamp (in seconds) for when the call was admitted to an agent binding. + */ + @Generated + private Long admittedAt; + + /* + * The Unix timestamp (in seconds) for when the service requested that the provider answer the call. + */ + @Generated + private Long answerRequestedAt; + + /* + * The Unix timestamp (in seconds) for when the provider reported that the call was answered. + */ + @Generated + private Long answeredAt; + + /* + * The Unix timestamp (in seconds) for when the provider media channel connected. + */ + @Generated + private Long mediaConnectedAt; + + /* + * The Unix timestamp (in seconds) for when the voice-agent session became ready. + */ + @Generated + private Long agentSessionReadyAt; + + /* + * The Unix timestamp (in seconds) for when caller audio was first observed. + */ + @Generated + private Long firstCallerAudioAt; + + /* + * The Unix timestamp (in seconds) for when agent audio was first observed. + */ + @Generated + private Long firstAgentAudioAt; + + /* + * The Unix timestamp (in seconds) for when the call reached a terminal state. + */ + @Generated + private Long endedAt; + + /* + * The timestamp used as the basis for duration. + */ + @Generated + private TelephonyCallDurationBasis durationBasis; + + /* + * The primary source of the timing milestones. Individual lifecycle events identify their own timestamp source + * separately. + */ + @Generated + private final TelephonyCallTimestampSource timestampSource; + + /** + * Creates an instance of TelephonyCallTiming class. + * + * @param timestampSource the timestampSource value to set. + */ + @Generated + private TelephonyCallTiming(TelephonyCallTimestampSource timestampSource) { + this.timestampSource = timestampSource; + } + + /** + * Get the receivedAt property: The Unix timestamp (in seconds) for when the provider webhook was received. + * + * @return the receivedAt value. + */ + @Generated + public OffsetDateTime getReceivedAt() { + if (this.receivedAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.receivedAt), ZoneOffset.UTC); + } + + /** + * Get the validatedAt property: The Unix timestamp (in seconds) for when webhook validation completed. + * + * @return the validatedAt value. + */ + @Generated + public OffsetDateTime getValidatedAt() { + if (this.validatedAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.validatedAt), ZoneOffset.UTC); + } + + /** + * Get the admittedAt property: The Unix timestamp (in seconds) for when the call was admitted to an agent binding. + * + * @return the admittedAt value. + */ + @Generated + public OffsetDateTime getAdmittedAt() { + if (this.admittedAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.admittedAt), ZoneOffset.UTC); + } + + /** + * Get the answerRequestedAt property: The Unix timestamp (in seconds) for when the service requested that the + * provider answer the call. + * + * @return the answerRequestedAt value. + */ + @Generated + public OffsetDateTime getAnswerRequestedAt() { + if (this.answerRequestedAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.answerRequestedAt), ZoneOffset.UTC); + } + + /** + * Get the answeredAt property: The Unix timestamp (in seconds) for when the provider reported that the call was + * answered. + * + * @return the answeredAt value. + */ + @Generated + public OffsetDateTime getAnsweredAt() { + if (this.answeredAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.answeredAt), ZoneOffset.UTC); + } + + /** + * Get the mediaConnectedAt property: The Unix timestamp (in seconds) for when the provider media channel connected. + * + * @return the mediaConnectedAt value. + */ + @Generated + public OffsetDateTime getMediaConnectedAt() { + if (this.mediaConnectedAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.mediaConnectedAt), ZoneOffset.UTC); + } + + /** + * Get the agentSessionReadyAt property: The Unix timestamp (in seconds) for when the voice-agent session became + * ready. + * + * @return the agentSessionReadyAt value. + */ + @Generated + public OffsetDateTime getAgentSessionReadyAt() { + if (this.agentSessionReadyAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.agentSessionReadyAt), ZoneOffset.UTC); + } + + /** + * Get the firstCallerAudioAt property: The Unix timestamp (in seconds) for when caller audio was first observed. + * + * @return the firstCallerAudioAt value. + */ + @Generated + public OffsetDateTime getFirstCallerAudioAt() { + if (this.firstCallerAudioAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.firstCallerAudioAt), ZoneOffset.UTC); + } + + /** + * Get the firstAgentAudioAt property: The Unix timestamp (in seconds) for when agent audio was first observed. + * + * @return the firstAgentAudioAt value. + */ + @Generated + public OffsetDateTime getFirstAgentAudioAt() { + if (this.firstAgentAudioAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.firstAgentAudioAt), ZoneOffset.UTC); + } + + /** + * Get the endedAt property: The Unix timestamp (in seconds) for when the call reached a terminal state. + * + * @return the endedAt value. + */ + @Generated + public OffsetDateTime getEndedAt() { + if (this.endedAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.endedAt), ZoneOffset.UTC); + } + + /** + * Get the durationBasis property: The timestamp used as the basis for duration. + * + * @return the durationBasis value. + */ + @Generated + public TelephonyCallDurationBasis getDurationBasis() { + return this.durationBasis; + } + + /** + * Get the timestampSource property: The primary source of the timing milestones. Individual lifecycle events + * identify their own timestamp source separately. + * + * @return the timestampSource value. + */ + @Generated + public TelephonyCallTimestampSource getTimestampSource() { + return this.timestampSource; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("timestamp_source", + this.timestampSource == null ? null : this.timestampSource.toString()); + jsonWriter.writeNumberField("received_at", this.receivedAt); + jsonWriter.writeNumberField("validated_at", this.validatedAt); + jsonWriter.writeNumberField("admitted_at", this.admittedAt); + jsonWriter.writeNumberField("answer_requested_at", this.answerRequestedAt); + jsonWriter.writeNumberField("answered_at", this.answeredAt); + jsonWriter.writeNumberField("media_connected_at", this.mediaConnectedAt); + jsonWriter.writeNumberField("agent_session_ready_at", this.agentSessionReadyAt); + jsonWriter.writeNumberField("first_caller_audio_at", this.firstCallerAudioAt); + jsonWriter.writeNumberField("first_agent_audio_at", this.firstAgentAudioAt); + jsonWriter.writeNumberField("ended_at", this.endedAt); + jsonWriter.writeStringField("duration_basis", + this.durationBasis == null ? null : this.durationBasis.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyCallTiming from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyCallTiming if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyCallTiming. + */ + @Generated + public static TelephonyCallTiming fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TelephonyCallTimestampSource timestampSource = null; + Long receivedAt = null; + Long validatedAt = null; + Long admittedAt = null; + Long answerRequestedAt = null; + Long answeredAt = null; + Long mediaConnectedAt = null; + Long agentSessionReadyAt = null; + Long firstCallerAudioAt = null; + Long firstAgentAudioAt = null; + Long endedAt = null; + TelephonyCallDurationBasis durationBasis = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("timestamp_source".equals(fieldName)) { + timestampSource = TelephonyCallTimestampSource.fromString(reader.getString()); + } else if ("received_at".equals(fieldName)) { + receivedAt = reader.getNullable(JsonReader::getLong); + } else if ("validated_at".equals(fieldName)) { + validatedAt = reader.getNullable(JsonReader::getLong); + } else if ("admitted_at".equals(fieldName)) { + admittedAt = reader.getNullable(JsonReader::getLong); + } else if ("answer_requested_at".equals(fieldName)) { + answerRequestedAt = reader.getNullable(JsonReader::getLong); + } else if ("answered_at".equals(fieldName)) { + answeredAt = reader.getNullable(JsonReader::getLong); + } else if ("media_connected_at".equals(fieldName)) { + mediaConnectedAt = reader.getNullable(JsonReader::getLong); + } else if ("agent_session_ready_at".equals(fieldName)) { + agentSessionReadyAt = reader.getNullable(JsonReader::getLong); + } else if ("first_caller_audio_at".equals(fieldName)) { + firstCallerAudioAt = reader.getNullable(JsonReader::getLong); + } else if ("first_agent_audio_at".equals(fieldName)) { + firstAgentAudioAt = reader.getNullable(JsonReader::getLong); + } else if ("ended_at".equals(fieldName)) { + endedAt = reader.getNullable(JsonReader::getLong); + } else if ("duration_basis".equals(fieldName)) { + durationBasis = TelephonyCallDurationBasis.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + TelephonyCallTiming deserializedTelephonyCallTiming = new TelephonyCallTiming(timestampSource); + deserializedTelephonyCallTiming.receivedAt = receivedAt; + deserializedTelephonyCallTiming.validatedAt = validatedAt; + deserializedTelephonyCallTiming.admittedAt = admittedAt; + deserializedTelephonyCallTiming.answerRequestedAt = answerRequestedAt; + deserializedTelephonyCallTiming.answeredAt = answeredAt; + deserializedTelephonyCallTiming.mediaConnectedAt = mediaConnectedAt; + deserializedTelephonyCallTiming.agentSessionReadyAt = agentSessionReadyAt; + deserializedTelephonyCallTiming.firstCallerAudioAt = firstCallerAudioAt; + deserializedTelephonyCallTiming.firstAgentAudioAt = firstAgentAudioAt; + deserializedTelephonyCallTiming.endedAt = endedAt; + deserializedTelephonyCallTiming.durationBasis = durationBasis; + return deserializedTelephonyCallTiming; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTrace.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTrace.java new file mode 100644 index 0000000000000..0614b16f65fda --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTrace.java @@ -0,0 +1,167 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Correlation from a durable telephony call record to its customer-facing Foundry trace. + */ +@Immutable +public final class TelephonyCallTrace implements JsonSerializable { + + /* + * The trace availability status. + */ + @Generated + private final TelephonyCallTraceStatus status; + + /* + * The W3C trace identifier, when a trace was recorded. + */ + @Generated + private String traceId; + + /* + * The root span identifier, when a trace was recorded. + */ + @Generated + private String rootSpanId; + + /* + * The voice-agent conversation identifier, when a conversation was created. + */ + @Generated + private String conversationId; + + /* + * Whether the trace was emitted live or after the call ended. + */ + @Generated + private TelephonyCallTraceMode mode; + + /** + * Creates an instance of TelephonyCallTrace class. + * + * @param status the status value to set. + */ + @Generated + private TelephonyCallTrace(TelephonyCallTraceStatus status) { + this.status = status; + } + + /** + * Get the status property: The trace availability status. + * + * @return the status value. + */ + @Generated + public TelephonyCallTraceStatus getStatus() { + return this.status; + } + + /** + * Get the traceId property: The W3C trace identifier, when a trace was recorded. + * + * @return the traceId value. + */ + @Generated + public String getTraceId() { + return this.traceId; + } + + /** + * Get the rootSpanId property: The root span identifier, when a trace was recorded. + * + * @return the rootSpanId value. + */ + @Generated + public String getRootSpanId() { + return this.rootSpanId; + } + + /** + * Get the conversationId property: The voice-agent conversation identifier, when a conversation was created. + * + * @return the conversationId value. + */ + @Generated + public String getConversationId() { + return this.conversationId; + } + + /** + * Get the mode property: Whether the trace was emitted live or after the call ended. + * + * @return the mode value. + */ + @Generated + public TelephonyCallTraceMode getMode() { + return this.mode; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + jsonWriter.writeStringField("trace_id", this.traceId); + jsonWriter.writeStringField("root_span_id", this.rootSpanId); + jsonWriter.writeStringField("conversation_id", this.conversationId); + jsonWriter.writeStringField("mode", this.mode == null ? null : this.mode.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyCallTrace from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyCallTrace if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyCallTrace. + */ + @Generated + public static TelephonyCallTrace fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TelephonyCallTraceStatus status = null; + String traceId = null; + String rootSpanId = null; + String conversationId = null; + TelephonyCallTraceMode mode = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("status".equals(fieldName)) { + status = TelephonyCallTraceStatus.fromString(reader.getString()); + } else if ("trace_id".equals(fieldName)) { + traceId = reader.getString(); + } else if ("root_span_id".equals(fieldName)) { + rootSpanId = reader.getString(); + } else if ("conversation_id".equals(fieldName)) { + conversationId = reader.getString(); + } else if ("mode".equals(fieldName)) { + mode = TelephonyCallTraceMode.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + TelephonyCallTrace deserializedTelephonyCallTrace = new TelephonyCallTrace(status); + deserializedTelephonyCallTrace.traceId = traceId; + deserializedTelephonyCallTrace.rootSpanId = rootSpanId; + deserializedTelephonyCallTrace.conversationId = conversationId; + deserializedTelephonyCallTrace.mode = mode; + return deserializedTelephonyCallTrace; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTraceMode.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTraceMode.java new file mode 100644 index 0000000000000..cc3e70c13292d --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTraceMode.java @@ -0,0 +1,58 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The mode used to expose a telephony call as a customer-facing Foundry trace. + */ +public final class TelephonyCallTraceMode extends ExpandableStringEnum { + + /** + * The trace was created while the voice-agent conversation was live. + */ + @Generated + public static final TelephonyCallTraceMode LIVE = fromString("live"); + + /** + * The trace summarizes a validated, customer-owned call that ended before a live voice-agent conversation was + * created. + */ + @Generated + public static final TelephonyCallTraceMode POST_CALL = fromString("post_call"); + + /** + * Creates a new instance of TelephonyCallTraceMode value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCallTraceMode() { + } + + /** + * Creates or finds a TelephonyCallTraceMode from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCallTraceMode. + */ + @Generated + public static TelephonyCallTraceMode fromString(String name) { + return fromString(name, TelephonyCallTraceMode.class); + } + + /** + * Gets known TelephonyCallTraceMode values. + * + * @return known TelephonyCallTraceMode values. + */ + @Generated + public static Collection values() { + return values(TelephonyCallTraceMode.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTraceStatus.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTraceStatus.java new file mode 100644 index 0000000000000..f685bc58ca9fd --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCallTraceStatus.java @@ -0,0 +1,81 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The availability status of a customer-facing telephony call trace. + */ +public final class TelephonyCallTraceStatus extends ExpandableStringEnum { + + /** + * Trace creation has not completed. + */ + @Generated + public static final TelephonyCallTraceStatus PENDING = fromString("pending"); + + /** + * Trace creation is in progress. + */ + @Generated + public static final TelephonyCallTraceStatus EMITTING = fromString("emitting"); + + /** + * The trace is available. + */ + @Generated + public static final TelephonyCallTraceStatus AVAILABLE = fromString("available"); + + /** + * Tracing was disabled or no trace listener recorded the call. + */ + @Generated + public static final TelephonyCallTraceStatus NOT_RECORDED = fromString("not_recorded"); + + /** + * The call was not eligible for a customer-facing trace. + */ + @Generated + public static final TelephonyCallTraceStatus NOT_APPLICABLE = fromString("not_applicable"); + + /** + * Trace creation failed. + */ + @Generated + public static final TelephonyCallTraceStatus FAILED = fromString("failed"); + + /** + * Creates a new instance of TelephonyCallTraceStatus value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCallTraceStatus() { + } + + /** + * Creates or finds a TelephonyCallTraceStatus from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCallTraceStatus. + */ + @Generated + public static TelephonyCallTraceStatus fromString(String name) { + return fromString(name, TelephonyCallTraceStatus.class); + } + + /** + * Gets known TelephonyCallTraceStatus values. + * + * @return known TelephonyCallTraceStatus values. + */ + @Generated + public static Collection values() { + return values(TelephonyCallTraceStatus.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaign.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaign.java new file mode 100644 index 0000000000000..0a5fddbb2d223 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaign.java @@ -0,0 +1,444 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; + +/** + * A durable outbound campaign owned by a voice agent. + */ +@Immutable +public final class TelephonyCampaign implements JsonSerializable { + + /* + * A customer-visible name for the campaign. + */ + @Generated + private final String displayName; + + /* + * The active agent telephony binding used to originate campaign calls. + */ + @Generated + private final String telephonyBindingId; + + /* + * An optional customer-declared purpose for campaign calls. + */ + @Generated + private String purpose; + + /* + * When the published campaign becomes eligible to dispatch calls. + */ + @Generated + private TelephonyCampaignSchedule schedule; + + /* + * The id property. + */ + @Generated + private final String id; + + /* + * The object property. + */ + @Generated + private final String object = "telephony.campaign"; + + /* + * The agent_name property. + */ + @Generated + private final String agentName; + + /* + * The configuration_status property. + */ + @Generated + private final TelephonyCampaignConfigurationStatus configurationStatus; + + /* + * The execution_status property. + */ + @Generated + private final TelephonyCampaignExecutionStatus executionStatus; + + /* + * The retry_policy property. + */ + @Generated + private final TelephonyOutboundRetryPolicyResponse retryPolicy; + + /* + * The latest_successful_validation_id property. + */ + @Generated + private String latestSuccessfulValidationId; + + /* + * The active_validation_id property. + */ + @Generated + private String activeValidationId; + + /* + * The active_recipient_import_id property. + */ + @Generated + private String activeRecipientImportId; + + /* + * The published_at property. + */ + @Generated + private Long publishedAt; + + /* + * The call_job_counts property. + */ + @Generated + private final TelephonyCampaignCallJobCounts callJobCounts; + + /* + * The created_at property. + */ + @Generated + private final long createdAt; + + /* + * The updated_at property. + */ + @Generated + private final long updatedAt; + + /** + * Creates an instance of TelephonyCampaign class. + * + * @param displayName the displayName value to set. + * @param telephonyBindingId the telephonyBindingId value to set. + * @param id the id value to set. + * @param agentName the agentName value to set. + * @param configurationStatus the configurationStatus value to set. + * @param executionStatus the executionStatus value to set. + * @param retryPolicy the retryPolicy value to set. + * @param callJobCounts the callJobCounts value to set. + * @param createdAt the createdAt value to set. + * @param updatedAt the updatedAt value to set. + */ + @Generated + private TelephonyCampaign(String displayName, String telephonyBindingId, String id, String agentName, + TelephonyCampaignConfigurationStatus configurationStatus, TelephonyCampaignExecutionStatus executionStatus, + TelephonyOutboundRetryPolicyResponse retryPolicy, TelephonyCampaignCallJobCounts callJobCounts, + OffsetDateTime createdAt, OffsetDateTime updatedAt) { + this.displayName = displayName; + this.telephonyBindingId = telephonyBindingId; + this.id = id; + this.agentName = agentName; + this.configurationStatus = configurationStatus; + this.executionStatus = executionStatus; + this.retryPolicy = retryPolicy; + this.callJobCounts = callJobCounts; + if (createdAt == null) { + this.createdAt = 0L; + } else { + this.createdAt = createdAt.toEpochSecond(); + } + if (updatedAt == null) { + this.updatedAt = 0L; + } else { + this.updatedAt = updatedAt.toEpochSecond(); + } + } + + /** + * Get the displayName property: A customer-visible name for the campaign. + * + * @return the displayName value. + */ + @Generated + public String getDisplayName() { + return this.displayName; + } + + /** + * Get the telephonyBindingId property: The active agent telephony binding used to originate campaign calls. + * + * @return the telephonyBindingId value. + */ + @Generated + public String getTelephonyBindingId() { + return this.telephonyBindingId; + } + + /** + * Get the purpose property: An optional customer-declared purpose for campaign calls. + * + * @return the purpose value. + */ + @Generated + public String getPurpose() { + return this.purpose; + } + + /** + * Get the schedule property: When the published campaign becomes eligible to dispatch calls. + * + * @return the schedule value. + */ + @Generated + public TelephonyCampaignSchedule getSchedule() { + return this.schedule; + } + + /** + * Get the id property: The id property. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the object property: The object property. + * + * @return the object value. + */ + @Generated + public String getObject() { + return this.object; + } + + /** + * Get the agentName property: The agent_name property. + * + * @return the agentName value. + */ + @Generated + public String getAgentName() { + return this.agentName; + } + + /** + * Get the configurationStatus property: The configuration_status property. + * + * @return the configurationStatus value. + */ + @Generated + public TelephonyCampaignConfigurationStatus getConfigurationStatus() { + return this.configurationStatus; + } + + /** + * Get the executionStatus property: The execution_status property. + * + * @return the executionStatus value. + */ + @Generated + public TelephonyCampaignExecutionStatus getExecutionStatus() { + return this.executionStatus; + } + + /** + * Get the retryPolicy property: The retry_policy property. + * + * @return the retryPolicy value. + */ + @Generated + public TelephonyOutboundRetryPolicyResponse getRetryPolicy() { + return this.retryPolicy; + } + + /** + * Get the latestSuccessfulValidationId property: The latest_successful_validation_id property. + * + * @return the latestSuccessfulValidationId value. + */ + @Generated + public String getLatestSuccessfulValidationId() { + return this.latestSuccessfulValidationId; + } + + /** + * Get the activeValidationId property: The active_validation_id property. + * + * @return the activeValidationId value. + */ + @Generated + public String getActiveValidationId() { + return this.activeValidationId; + } + + /** + * Get the activeRecipientImportId property: The active_recipient_import_id property. + * + * @return the activeRecipientImportId value. + */ + @Generated + public String getActiveRecipientImportId() { + return this.activeRecipientImportId; + } + + /** + * Get the publishedAt property: The published_at property. + * + * @return the publishedAt value. + */ + @Generated + public OffsetDateTime getPublishedAt() { + if (this.publishedAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.publishedAt), ZoneOffset.UTC); + } + + /** + * Get the callJobCounts property: The call_job_counts property. + * + * @return the callJobCounts value. + */ + @Generated + public TelephonyCampaignCallJobCounts getCallJobCounts() { + return this.callJobCounts; + } + + /** + * Get the createdAt property: The created_at property. + * + * @return the createdAt value. + */ + @Generated + public OffsetDateTime getCreatedAt() { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.createdAt), ZoneOffset.UTC); + } + + /** + * Get the updatedAt property: The updated_at property. + * + * @return the updatedAt value. + */ + @Generated + public OffsetDateTime getUpdatedAt() { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.updatedAt), ZoneOffset.UTC); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("display_name", this.displayName); + jsonWriter.writeStringField("telephony_binding_id", this.telephonyBindingId); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("object", this.object); + jsonWriter.writeStringField("agent_name", this.agentName); + jsonWriter.writeStringField("configuration_status", + this.configurationStatus == null ? null : this.configurationStatus.toString()); + jsonWriter.writeStringField("execution_status", + this.executionStatus == null ? null : this.executionStatus.toString()); + jsonWriter.writeJsonField("retry_policy", this.retryPolicy); + jsonWriter.writeJsonField("call_job_counts", this.callJobCounts); + jsonWriter.writeLongField("created_at", this.createdAt); + jsonWriter.writeLongField("updated_at", this.updatedAt); + jsonWriter.writeStringField("purpose", this.purpose); + jsonWriter.writeJsonField("schedule", this.schedule); + jsonWriter.writeStringField("latest_successful_validation_id", this.latestSuccessfulValidationId); + jsonWriter.writeStringField("active_validation_id", this.activeValidationId); + jsonWriter.writeStringField("active_recipient_import_id", this.activeRecipientImportId); + jsonWriter.writeNumberField("published_at", this.publishedAt); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyCampaign from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyCampaign if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyCampaign. + */ + @Generated + public static TelephonyCampaign fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String displayName = null; + String telephonyBindingId = null; + String id = null; + String agentName = null; + TelephonyCampaignConfigurationStatus configurationStatus = null; + TelephonyCampaignExecutionStatus executionStatus = null; + TelephonyOutboundRetryPolicyResponse retryPolicy = null; + TelephonyCampaignCallJobCounts callJobCounts = null; + OffsetDateTime createdAt = null; + OffsetDateTime updatedAt = null; + String purpose = null; + TelephonyCampaignSchedule schedule = null; + String latestSuccessfulValidationId = null; + String activeValidationId = null; + String activeRecipientImportId = null; + Long publishedAt = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("display_name".equals(fieldName)) { + displayName = reader.getString(); + } else if ("telephony_binding_id".equals(fieldName)) { + telephonyBindingId = reader.getString(); + } else if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("agent_name".equals(fieldName)) { + agentName = reader.getString(); + } else if ("configuration_status".equals(fieldName)) { + configurationStatus = TelephonyCampaignConfigurationStatus.fromString(reader.getString()); + } else if ("execution_status".equals(fieldName)) { + executionStatus = TelephonyCampaignExecutionStatus.fromString(reader.getString()); + } else if ("retry_policy".equals(fieldName)) { + retryPolicy = TelephonyOutboundRetryPolicyResponse.fromJson(reader); + } else if ("call_job_counts".equals(fieldName)) { + callJobCounts = TelephonyCampaignCallJobCounts.fromJson(reader); + } else if ("created_at".equals(fieldName)) { + createdAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC); + } else if ("updated_at".equals(fieldName)) { + updatedAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC); + } else if ("purpose".equals(fieldName)) { + purpose = reader.getString(); + } else if ("schedule".equals(fieldName)) { + schedule = TelephonyCampaignSchedule.fromJson(reader); + } else if ("latest_successful_validation_id".equals(fieldName)) { + latestSuccessfulValidationId = reader.getString(); + } else if ("active_validation_id".equals(fieldName)) { + activeValidationId = reader.getString(); + } else if ("active_recipient_import_id".equals(fieldName)) { + activeRecipientImportId = reader.getString(); + } else if ("published_at".equals(fieldName)) { + publishedAt = reader.getNullable(JsonReader::getLong); + } else { + reader.skipChildren(); + } + } + TelephonyCampaign deserializedTelephonyCampaign = new TelephonyCampaign(displayName, telephonyBindingId, id, + agentName, configurationStatus, executionStatus, retryPolicy, callJobCounts, createdAt, updatedAt); + deserializedTelephonyCampaign.purpose = purpose; + deserializedTelephonyCampaign.schedule = schedule; + deserializedTelephonyCampaign.latestSuccessfulValidationId = latestSuccessfulValidationId; + deserializedTelephonyCampaign.activeValidationId = activeValidationId; + deserializedTelephonyCampaign.activeRecipientImportId = activeRecipientImportId; + deserializedTelephonyCampaign.publishedAt = publishedAt; + return deserializedTelephonyCampaign; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignCallJobCounts.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignCallJobCounts.java new file mode 100644 index 0000000000000..daeba73d02f3b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignCallJobCounts.java @@ -0,0 +1,238 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Aggregate call-job counts for an outbound campaign. + */ +@Immutable +public final class TelephonyCampaignCallJobCounts implements JsonSerializable { + + /* + * The total property. + */ + @Generated + private final long total; + + /* + * The pending property. + */ + @Generated + private final long pending; + + /* + * The in_progress property. + */ + @Generated + private final long inProgress; + + /* + * The completed property. + */ + @Generated + private final long completed; + + /* + * The failed property. + */ + @Generated + private final long failed; + + /* + * The blocked property. + */ + @Generated + private final long blocked; + + /* + * The cancelled property. + */ + @Generated + private final long cancelled; + + /* + * The expired property. + */ + @Generated + private final long expired; + + /** + * Creates an instance of TelephonyCampaignCallJobCounts class. + * + * @param total the total value to set. + * @param pending the pending value to set. + * @param inProgress the inProgress value to set. + * @param completed the completed value to set. + * @param failed the failed value to set. + * @param blocked the blocked value to set. + * @param cancelled the cancelled value to set. + * @param expired the expired value to set. + */ + @Generated + private TelephonyCampaignCallJobCounts(long total, long pending, long inProgress, long completed, long failed, + long blocked, long cancelled, long expired) { + this.total = total; + this.pending = pending; + this.inProgress = inProgress; + this.completed = completed; + this.failed = failed; + this.blocked = blocked; + this.cancelled = cancelled; + this.expired = expired; + } + + /** + * Get the total property: The total property. + * + * @return the total value. + */ + @Generated + public long getTotal() { + return this.total; + } + + /** + * Get the pending property: The pending property. + * + * @return the pending value. + */ + @Generated + public long getPending() { + return this.pending; + } + + /** + * Get the inProgress property: The in_progress property. + * + * @return the inProgress value. + */ + @Generated + public long getInProgress() { + return this.inProgress; + } + + /** + * Get the completed property: The completed property. + * + * @return the completed value. + */ + @Generated + public long getCompleted() { + return this.completed; + } + + /** + * Get the failed property: The failed property. + * + * @return the failed value. + */ + @Generated + public long getFailed() { + return this.failed; + } + + /** + * Get the blocked property: The blocked property. + * + * @return the blocked value. + */ + @Generated + public long getBlocked() { + return this.blocked; + } + + /** + * Get the cancelled property: The cancelled property. + * + * @return the cancelled value. + */ + @Generated + public long getCancelled() { + return this.cancelled; + } + + /** + * Get the expired property: The expired property. + * + * @return the expired value. + */ + @Generated + public long getExpired() { + return this.expired; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeLongField("total", this.total); + jsonWriter.writeLongField("pending", this.pending); + jsonWriter.writeLongField("in_progress", this.inProgress); + jsonWriter.writeLongField("completed", this.completed); + jsonWriter.writeLongField("failed", this.failed); + jsonWriter.writeLongField("blocked", this.blocked); + jsonWriter.writeLongField("cancelled", this.cancelled); + jsonWriter.writeLongField("expired", this.expired); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyCampaignCallJobCounts from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyCampaignCallJobCounts if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyCampaignCallJobCounts. + */ + @Generated + public static TelephonyCampaignCallJobCounts fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + long total = 0L; + long pending = 0L; + long inProgress = 0L; + long completed = 0L; + long failed = 0L; + long blocked = 0L; + long cancelled = 0L; + long expired = 0L; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("total".equals(fieldName)) { + total = reader.getLong(); + } else if ("pending".equals(fieldName)) { + pending = reader.getLong(); + } else if ("in_progress".equals(fieldName)) { + inProgress = reader.getLong(); + } else if ("completed".equals(fieldName)) { + completed = reader.getLong(); + } else if ("failed".equals(fieldName)) { + failed = reader.getLong(); + } else if ("blocked".equals(fieldName)) { + blocked = reader.getLong(); + } else if ("cancelled".equals(fieldName)) { + cancelled = reader.getLong(); + } else if ("expired".equals(fieldName)) { + expired = reader.getLong(); + } else { + reader.skipChildren(); + } + } + return new TelephonyCampaignCallJobCounts(total, pending, inProgress, completed, failed, blocked, cancelled, + expired); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignConfigurationStatus.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignConfigurationStatus.java new file mode 100644 index 0000000000000..7afadd345fcb6 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignConfigurationStatus.java @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The immutable-configuration lifecycle status of an outbound campaign. + */ +public final class TelephonyCampaignConfigurationStatus + extends ExpandableStringEnum { + + /** + * Static value draft for TelephonyCampaignConfigurationStatus. + */ + @Generated + public static final TelephonyCampaignConfigurationStatus DRAFT = fromString("draft"); + + /** + * Static value importing for TelephonyCampaignConfigurationStatus. + */ + @Generated + public static final TelephonyCampaignConfigurationStatus IMPORTING = fromString("importing"); + + /** + * Static value validating for TelephonyCampaignConfigurationStatus. + */ + @Generated + public static final TelephonyCampaignConfigurationStatus VALIDATING = fromString("validating"); + + /** + * Static value publishing for TelephonyCampaignConfigurationStatus. + */ + @Generated + public static final TelephonyCampaignConfigurationStatus PUBLISHING = fromString("publishing"); + + /** + * Static value published for TelephonyCampaignConfigurationStatus. + */ + @Generated + public static final TelephonyCampaignConfigurationStatus PUBLISHED = fromString("published"); + + /** + * Static value publish_failed for TelephonyCampaignConfigurationStatus. + */ + @Generated + public static final TelephonyCampaignConfigurationStatus PUBLISH_FAILED = fromString("publish_failed"); + + /** + * Creates a new instance of TelephonyCampaignConfigurationStatus value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCampaignConfigurationStatus() { + } + + /** + * Creates or finds a TelephonyCampaignConfigurationStatus from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCampaignConfigurationStatus. + */ + @Generated + public static TelephonyCampaignConfigurationStatus fromString(String name) { + return fromString(name, TelephonyCampaignConfigurationStatus.class); + } + + /** + * Gets known TelephonyCampaignConfigurationStatus values. + * + * @return known TelephonyCampaignConfigurationStatus values. + */ + @Generated + public static Collection values() { + return values(TelephonyCampaignConfigurationStatus.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignDuplicateHandling.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignDuplicateHandling.java new file mode 100644 index 0000000000000..6fc5b4e1ae4e6 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignDuplicateHandling.java @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * How duplicate recipient keys in an import are handled. + */ +public final class TelephonyCampaignDuplicateHandling extends ExpandableStringEnum { + + /** + * Reject duplicate recipient keys. + */ + @Generated + public static final TelephonyCampaignDuplicateHandling REJECT = fromString("reject"); + + /** + * Keep each recipient entry, distinguishing duplicates by recipient item key. + */ + @Generated + public static final TelephonyCampaignDuplicateHandling KEEP_EACH = fromString("keep_each"); + + /** + * Merge entries with the same recipient key. + */ + @Generated + public static final TelephonyCampaignDuplicateHandling MERGE = fromString("merge"); + + /** + * Creates a new instance of TelephonyCampaignDuplicateHandling value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCampaignDuplicateHandling() { + } + + /** + * Creates or finds a TelephonyCampaignDuplicateHandling from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCampaignDuplicateHandling. + */ + @Generated + public static TelephonyCampaignDuplicateHandling fromString(String name) { + return fromString(name, TelephonyCampaignDuplicateHandling.class); + } + + /** + * Gets known TelephonyCampaignDuplicateHandling values. + * + * @return known TelephonyCampaignDuplicateHandling values. + */ + @Generated + public static Collection values() { + return values(TelephonyCampaignDuplicateHandling.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignExecutionStatus.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignExecutionStatus.java new file mode 100644 index 0000000000000..421e5cea8d14f --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignExecutionStatus.java @@ -0,0 +1,87 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The execution lifecycle status of a published outbound campaign. + */ +public final class TelephonyCampaignExecutionStatus extends ExpandableStringEnum { + + /** + * Static value none for TelephonyCampaignExecutionStatus. + */ + @Generated + public static final TelephonyCampaignExecutionStatus NONE = fromString("none"); + + /** + * Static value scheduled for TelephonyCampaignExecutionStatus. + */ + @Generated + public static final TelephonyCampaignExecutionStatus SCHEDULED = fromString("scheduled"); + + /** + * Static value running for TelephonyCampaignExecutionStatus. + */ + @Generated + public static final TelephonyCampaignExecutionStatus RUNNING = fromString("running"); + + /** + * Static value paused for TelephonyCampaignExecutionStatus. + */ + @Generated + public static final TelephonyCampaignExecutionStatus PAUSED = fromString("paused"); + + /** + * Static value completed for TelephonyCampaignExecutionStatus. + */ + @Generated + public static final TelephonyCampaignExecutionStatus COMPLETED = fromString("completed"); + + /** + * Static value failed for TelephonyCampaignExecutionStatus. + */ + @Generated + public static final TelephonyCampaignExecutionStatus FAILED = fromString("failed"); + + /** + * Static value cancelled for TelephonyCampaignExecutionStatus. + */ + @Generated + public static final TelephonyCampaignExecutionStatus CANCELLED = fromString("cancelled"); + + /** + * Creates a new instance of TelephonyCampaignExecutionStatus value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCampaignExecutionStatus() { + } + + /** + * Creates or finds a TelephonyCampaignExecutionStatus from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCampaignExecutionStatus. + */ + @Generated + public static TelephonyCampaignExecutionStatus fromString(String name) { + return fromString(name, TelephonyCampaignExecutionStatus.class); + } + + /** + * Gets known TelephonyCampaignExecutionStatus values. + * + * @return known TelephonyCampaignExecutionStatus values. + */ + @Generated + public static Collection values() { + return values(TelephonyCampaignExecutionStatus.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImport.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImport.java new file mode 100644 index 0000000000000..9890c9d5e1d66 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImport.java @@ -0,0 +1,378 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; + +/** + * A durable campaign recipient-import record. + */ +@Immutable +public final class TelephonyCampaignRecipientImport implements JsonSerializable { + + /* + * The id property. + */ + @Generated + private final String id; + + /* + * The object property. + */ + @Generated + private final String object = "telephony.campaign.recipient_import"; + + /* + * The campaign_id property. + */ + @Generated + private final String campaignId; + + /* + * The status property. + */ + @Generated + private final TelephonyCampaignRecipientImportStatus status; + + /* + * The source property. + */ + @Generated + private final TelephonyCampaignRecipientImportSource source; + + /* + * The mapping property. + */ + @Generated + private TelephonyCampaignRecipientMapping mapping; + + /* + * The duplicate_handling property. + */ + @Generated + private final TelephonyCampaignDuplicateHandling duplicateHandling; + + /* + * The rows_processed property. + */ + @Generated + private final long rowsProcessed; + + /* + * The eligible_recipient_count property. + */ + @Generated + private final long eligibleRecipientCount; + + /* + * The invalid_recipient_count property. + */ + @Generated + private final long invalidRecipientCount; + + /* + * The error_code property. + */ + @Generated + private String errorCode; + + /* + * The error_message property. + */ + @Generated + private String errorMessage; + + /* + * The created_at property. + */ + @Generated + private final long createdAt; + + /* + * The updated_at property. + */ + @Generated + private final long updatedAt; + + /** + * Creates an instance of TelephonyCampaignRecipientImport class. + * + * @param id the id value to set. + * @param campaignId the campaignId value to set. + * @param status the status value to set. + * @param source the source value to set. + * @param duplicateHandling the duplicateHandling value to set. + * @param rowsProcessed the rowsProcessed value to set. + * @param eligibleRecipientCount the eligibleRecipientCount value to set. + * @param invalidRecipientCount the invalidRecipientCount value to set. + * @param createdAt the createdAt value to set. + * @param updatedAt the updatedAt value to set. + */ + @Generated + private TelephonyCampaignRecipientImport(String id, String campaignId, + TelephonyCampaignRecipientImportStatus status, TelephonyCampaignRecipientImportSource source, + TelephonyCampaignDuplicateHandling duplicateHandling, long rowsProcessed, long eligibleRecipientCount, + long invalidRecipientCount, OffsetDateTime createdAt, OffsetDateTime updatedAt) { + this.id = id; + this.campaignId = campaignId; + this.status = status; + this.source = source; + this.duplicateHandling = duplicateHandling; + this.rowsProcessed = rowsProcessed; + this.eligibleRecipientCount = eligibleRecipientCount; + this.invalidRecipientCount = invalidRecipientCount; + if (createdAt == null) { + this.createdAt = 0L; + } else { + this.createdAt = createdAt.toEpochSecond(); + } + if (updatedAt == null) { + this.updatedAt = 0L; + } else { + this.updatedAt = updatedAt.toEpochSecond(); + } + } + + /** + * Get the id property: The id property. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the object property: The object property. + * + * @return the object value. + */ + @Generated + public String getObject() { + return this.object; + } + + /** + * Get the campaignId property: The campaign_id property. + * + * @return the campaignId value. + */ + @Generated + public String getCampaignId() { + return this.campaignId; + } + + /** + * Get the status property: The status property. + * + * @return the status value. + */ + @Generated + public TelephonyCampaignRecipientImportStatus getStatus() { + return this.status; + } + + /** + * Get the source property: The source property. + * + * @return the source value. + */ + @Generated + public TelephonyCampaignRecipientImportSource getSource() { + return this.source; + } + + /** + * Get the mapping property: The mapping property. + * + * @return the mapping value. + */ + @Generated + public TelephonyCampaignRecipientMapping getMapping() { + return this.mapping; + } + + /** + * Get the duplicateHandling property: The duplicate_handling property. + * + * @return the duplicateHandling value. + */ + @Generated + public TelephonyCampaignDuplicateHandling getDuplicateHandling() { + return this.duplicateHandling; + } + + /** + * Get the rowsProcessed property: The rows_processed property. + * + * @return the rowsProcessed value. + */ + @Generated + public long getRowsProcessed() { + return this.rowsProcessed; + } + + /** + * Get the eligibleRecipientCount property: The eligible_recipient_count property. + * + * @return the eligibleRecipientCount value. + */ + @Generated + public long getEligibleRecipientCount() { + return this.eligibleRecipientCount; + } + + /** + * Get the invalidRecipientCount property: The invalid_recipient_count property. + * + * @return the invalidRecipientCount value. + */ + @Generated + public long getInvalidRecipientCount() { + return this.invalidRecipientCount; + } + + /** + * Get the errorCode property: The error_code property. + * + * @return the errorCode value. + */ + @Generated + public String getErrorCode() { + return this.errorCode; + } + + /** + * Get the errorMessage property: The error_message property. + * + * @return the errorMessage value. + */ + @Generated + public String getErrorMessage() { + return this.errorMessage; + } + + /** + * Get the createdAt property: The created_at property. + * + * @return the createdAt value. + */ + @Generated + public OffsetDateTime getCreatedAt() { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.createdAt), ZoneOffset.UTC); + } + + /** + * Get the updatedAt property: The updated_at property. + * + * @return the updatedAt value. + */ + @Generated + public OffsetDateTime getUpdatedAt() { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.updatedAt), ZoneOffset.UTC); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("object", this.object); + jsonWriter.writeStringField("campaign_id", this.campaignId); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + jsonWriter.writeJsonField("source", this.source); + jsonWriter.writeStringField("duplicate_handling", + this.duplicateHandling == null ? null : this.duplicateHandling.toString()); + jsonWriter.writeLongField("rows_processed", this.rowsProcessed); + jsonWriter.writeLongField("eligible_recipient_count", this.eligibleRecipientCount); + jsonWriter.writeLongField("invalid_recipient_count", this.invalidRecipientCount); + jsonWriter.writeLongField("created_at", this.createdAt); + jsonWriter.writeLongField("updated_at", this.updatedAt); + jsonWriter.writeJsonField("mapping", this.mapping); + jsonWriter.writeStringField("error_code", this.errorCode); + jsonWriter.writeStringField("error_message", this.errorMessage); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyCampaignRecipientImport from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyCampaignRecipientImport if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyCampaignRecipientImport. + */ + @Generated + public static TelephonyCampaignRecipientImport fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + String campaignId = null; + TelephonyCampaignRecipientImportStatus status = null; + TelephonyCampaignRecipientImportSource source = null; + TelephonyCampaignDuplicateHandling duplicateHandling = null; + long rowsProcessed = 0L; + long eligibleRecipientCount = 0L; + long invalidRecipientCount = 0L; + OffsetDateTime createdAt = null; + OffsetDateTime updatedAt = null; + TelephonyCampaignRecipientMapping mapping = null; + String errorCode = null; + String errorMessage = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("campaign_id".equals(fieldName)) { + campaignId = reader.getString(); + } else if ("status".equals(fieldName)) { + status = TelephonyCampaignRecipientImportStatus.fromString(reader.getString()); + } else if ("source".equals(fieldName)) { + source = TelephonyCampaignRecipientImportSource.fromJson(reader); + } else if ("duplicate_handling".equals(fieldName)) { + duplicateHandling = TelephonyCampaignDuplicateHandling.fromString(reader.getString()); + } else if ("rows_processed".equals(fieldName)) { + rowsProcessed = reader.getLong(); + } else if ("eligible_recipient_count".equals(fieldName)) { + eligibleRecipientCount = reader.getLong(); + } else if ("invalid_recipient_count".equals(fieldName)) { + invalidRecipientCount = reader.getLong(); + } else if ("created_at".equals(fieldName)) { + createdAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC); + } else if ("updated_at".equals(fieldName)) { + updatedAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC); + } else if ("mapping".equals(fieldName)) { + mapping = TelephonyCampaignRecipientMapping.fromJson(reader); + } else if ("error_code".equals(fieldName)) { + errorCode = reader.getString(); + } else if ("error_message".equals(fieldName)) { + errorMessage = reader.getString(); + } else { + reader.skipChildren(); + } + } + TelephonyCampaignRecipientImport deserializedTelephonyCampaignRecipientImport + = new TelephonyCampaignRecipientImport(id, campaignId, status, source, duplicateHandling, rowsProcessed, + eligibleRecipientCount, invalidRecipientCount, createdAt, updatedAt); + deserializedTelephonyCampaignRecipientImport.mapping = mapping; + deserializedTelephonyCampaignRecipientImport.errorCode = errorCode; + deserializedTelephonyCampaignRecipientImport.errorMessage = errorMessage; + return deserializedTelephonyCampaignRecipientImport; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportFormat.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportFormat.java new file mode 100644 index 0000000000000..cd7b2a2b16e9f --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportFormat.java @@ -0,0 +1,64 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * A supported Dataset recipient file format. + */ +public final class TelephonyCampaignRecipientImportFormat + extends ExpandableStringEnum { + + /** + * A comma-separated values file. + */ + @Generated + public static final TelephonyCampaignRecipientImportFormat CSV = fromString("csv"); + + /** + * A JSON file containing an array of recipient objects. + */ + @Generated + public static final TelephonyCampaignRecipientImportFormat JSON = fromString("json"); + + /** + * A JSON Lines file containing one recipient object per line. + */ + @Generated + public static final TelephonyCampaignRecipientImportFormat JSONL = fromString("jsonl"); + + /** + * Creates a new instance of TelephonyCampaignRecipientImportFormat value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCampaignRecipientImportFormat() { + } + + /** + * Creates or finds a TelephonyCampaignRecipientImportFormat from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCampaignRecipientImportFormat. + */ + @Generated + public static TelephonyCampaignRecipientImportFormat fromString(String name) { + return fromString(name, TelephonyCampaignRecipientImportFormat.class); + } + + /** + * Gets known TelephonyCampaignRecipientImportFormat values. + * + * @return known TelephonyCampaignRecipientImportFormat values. + */ + @Generated + public static Collection values() { + return values(TelephonyCampaignRecipientImportFormat.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportSource.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportSource.java new file mode 100644 index 0000000000000..03271f0f825b5 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportSource.java @@ -0,0 +1,167 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A Dataset source for campaign recipient import. + */ +@Immutable +public final class TelephonyCampaignRecipientImportSource + implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private final String type = "dataset"; + + /* + * The dataset_name property. + */ + @Generated + private final String datasetName; + + /* + * The dataset_version property. + */ + @Generated + private final String datasetVersion; + + /* + * A relative path to a CSV, JSON array, or JSONL file in the Dataset version. + */ + @Generated + private final String fileName; + + /* + * The format property. + */ + @Generated + private final TelephonyCampaignRecipientImportFormat format; + + /** + * Creates an instance of TelephonyCampaignRecipientImportSource class. + * + * @param datasetName the datasetName value to set. + * @param datasetVersion the datasetVersion value to set. + * @param fileName the fileName value to set. + * @param format the format value to set. + */ + @Generated + public TelephonyCampaignRecipientImportSource(String datasetName, String datasetVersion, String fileName, + TelephonyCampaignRecipientImportFormat format) { + this.datasetName = datasetName; + this.datasetVersion = datasetVersion; + this.fileName = fileName; + this.format = format; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * Get the datasetName property: The dataset_name property. + * + * @return the datasetName value. + */ + @Generated + public String getDatasetName() { + return this.datasetName; + } + + /** + * Get the datasetVersion property: The dataset_version property. + * + * @return the datasetVersion value. + */ + @Generated + public String getDatasetVersion() { + return this.datasetVersion; + } + + /** + * Get the fileName property: A relative path to a CSV, JSON array, or JSONL file in the Dataset version. + * + * @return the fileName value. + */ + @Generated + public String getFileName() { + return this.fileName; + } + + /** + * Get the format property: The format property. + * + * @return the format value. + */ + @Generated + public TelephonyCampaignRecipientImportFormat getFormat() { + return this.format; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("dataset_name", this.datasetName); + jsonWriter.writeStringField("dataset_version", this.datasetVersion); + jsonWriter.writeStringField("file_name", this.fileName); + jsonWriter.writeStringField("format", this.format == null ? null : this.format.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyCampaignRecipientImportSource from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyCampaignRecipientImportSource if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyCampaignRecipientImportSource. + */ + @Generated + public static TelephonyCampaignRecipientImportSource fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String datasetName = null; + String datasetVersion = null; + String fileName = null; + TelephonyCampaignRecipientImportFormat format = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("dataset_name".equals(fieldName)) { + datasetName = reader.getString(); + } else if ("dataset_version".equals(fieldName)) { + datasetVersion = reader.getString(); + } else if ("file_name".equals(fieldName)) { + fileName = reader.getString(); + } else if ("format".equals(fieldName)) { + format = TelephonyCampaignRecipientImportFormat.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return new TelephonyCampaignRecipientImportSource(datasetName, datasetVersion, fileName, format); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportStatus.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportStatus.java new file mode 100644 index 0000000000000..beddbc6ed6552 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportStatus.java @@ -0,0 +1,64 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The lifecycle status of a campaign recipient import. + */ +public final class TelephonyCampaignRecipientImportStatus + extends ExpandableStringEnum { + + /** + * Static value running for TelephonyCampaignRecipientImportStatus. + */ + @Generated + public static final TelephonyCampaignRecipientImportStatus RUNNING = fromString("running"); + + /** + * Static value succeeded for TelephonyCampaignRecipientImportStatus. + */ + @Generated + public static final TelephonyCampaignRecipientImportStatus SUCCEEDED = fromString("succeeded"); + + /** + * Static value failed for TelephonyCampaignRecipientImportStatus. + */ + @Generated + public static final TelephonyCampaignRecipientImportStatus FAILED = fromString("failed"); + + /** + * Creates a new instance of TelephonyCampaignRecipientImportStatus value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCampaignRecipientImportStatus() { + } + + /** + * Creates or finds a TelephonyCampaignRecipientImportStatus from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCampaignRecipientImportStatus. + */ + @Generated + public static TelephonyCampaignRecipientImportStatus fromString(String name) { + return fromString(name, TelephonyCampaignRecipientImportStatus.class); + } + + /** + * Gets known TelephonyCampaignRecipientImportStatus values. + * + * @return known TelephonyCampaignRecipientImportStatus values. + */ + @Generated + public static Collection values() { + return values(TelephonyCampaignRecipientImportStatus.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientMapping.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientMapping.java new file mode 100644 index 0000000000000..7702111e526af --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientMapping.java @@ -0,0 +1,182 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Source fields or CSV columns mapped into each campaign recipient. Every unmapped CSV column or JSON/JSONL top-level + * property becomes a same-named structured input. CSV cells are preserved as strings until Agent-declared inputs are + * parsed according to their schemas; additional inputs remain strings. + */ +@Immutable +public final class TelephonyCampaignRecipientMapping implements JsonSerializable { + + /* + * The source field containing the destination E.164 phone number. Defaults to `destination`. The source field is + * required for each recipient. + */ + @Generated + private final String destination; + + /* + * The source field containing the recipient key. Defaults to `recipient_key`. The source field is required for each + * recipient. + */ + @Generated + private final String recipientKey; + + /* + * The source field containing the recipient item key. Defaults to `recipient_item_key`. The source field is + * required when `duplicate_handling` is `keep_each`; otherwise it may be absent. + */ + @Generated + private String recipientItemKey; + + /* + * The source field containing the earliest dispatch time as a Unix timestamp in seconds. Defaults to `not_before`. + * If the source field is absent, no per-recipient start bound is applied. + */ + @Generated + private String notBefore; + + /* + * The source field containing the expiry time as a Unix timestamp in seconds. Defaults to `expires_at`. If the + * source field is absent, no per-recipient expiry bound is applied. + */ + @Generated + private String expiresAt; + + /** + * Creates an instance of TelephonyCampaignRecipientMapping class. + * + * @param destination the destination value to set. + * @param recipientKey the recipientKey value to set. + */ + @Generated + private TelephonyCampaignRecipientMapping(String destination, String recipientKey) { + this.destination = destination; + this.recipientKey = recipientKey; + } + + /** + * Get the destination property: The source field containing the destination E.164 phone number. Defaults to + * `destination`. The source field is required for each recipient. + * + * @return the destination value. + */ + @Generated + public String getDestination() { + return this.destination; + } + + /** + * Get the recipientKey property: The source field containing the recipient key. Defaults to `recipient_key`. The + * source field is required for each recipient. + * + * @return the recipientKey value. + */ + @Generated + public String getRecipientKey() { + return this.recipientKey; + } + + /** + * Get the recipientItemKey property: The source field containing the recipient item key. Defaults to + * `recipient_item_key`. The source field is required when `duplicate_handling` is `keep_each`; otherwise it may be + * absent. + * + * @return the recipientItemKey value. + */ + @Generated + public String getRecipientItemKey() { + return this.recipientItemKey; + } + + /** + * Get the notBefore property: The source field containing the earliest dispatch time as a Unix timestamp in + * seconds. Defaults to `not_before`. If the source field is absent, no per-recipient start bound is applied. + * + * @return the notBefore value. + */ + @Generated + public String getNotBefore() { + return this.notBefore; + } + + /** + * Get the expiresAt property: The source field containing the expiry time as a Unix timestamp in seconds. Defaults + * to `expires_at`. If the source field is absent, no per-recipient expiry bound is applied. + * + * @return the expiresAt value. + */ + @Generated + public String getExpiresAt() { + return this.expiresAt; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("destination", this.destination); + jsonWriter.writeStringField("recipient_key", this.recipientKey); + jsonWriter.writeStringField("recipient_item_key", this.recipientItemKey); + jsonWriter.writeStringField("not_before", this.notBefore); + jsonWriter.writeStringField("expires_at", this.expiresAt); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyCampaignRecipientMapping from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyCampaignRecipientMapping if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyCampaignRecipientMapping. + */ + @Generated + public static TelephonyCampaignRecipientMapping fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String destination = null; + String recipientKey = null; + String recipientItemKey = null; + String notBefore = null; + String expiresAt = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("destination".equals(fieldName)) { + destination = reader.getString(); + } else if ("recipient_key".equals(fieldName)) { + recipientKey = reader.getString(); + } else if ("recipient_item_key".equals(fieldName)) { + recipientItemKey = reader.getString(); + } else if ("not_before".equals(fieldName)) { + notBefore = reader.getString(); + } else if ("expires_at".equals(fieldName)) { + expiresAt = reader.getString(); + } else { + reader.skipChildren(); + } + } + TelephonyCampaignRecipientMapping deserializedTelephonyCampaignRecipientMapping + = new TelephonyCampaignRecipientMapping(destination, recipientKey); + deserializedTelephonyCampaignRecipientMapping.recipientItemKey = recipientItemKey; + deserializedTelephonyCampaignRecipientMapping.notBefore = notBefore; + deserializedTelephonyCampaignRecipientMapping.expiresAt = expiresAt; + return deserializedTelephonyCampaignRecipientMapping; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientMappingRequest.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientMappingRequest.java new file mode 100644 index 0000000000000..02b3f442a155b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientMappingRequest.java @@ -0,0 +1,233 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Optional source-field mappings for a recipient import. Each omitted entry uses its same-named source field. + */ +@Fluent +public final class TelephonyCampaignRecipientMappingRequest + implements JsonSerializable { + + /* + * The source field containing the destination E.164 phone number. Defaults to `destination`. The source field is + * required for each recipient. + */ + @Generated + private String destination; + + /* + * The source field containing the recipient key. Defaults to `recipient_key`. The source field is required for each + * recipient. + */ + @Generated + private String recipientKey; + + /* + * The source field containing the recipient item key. Defaults to `recipient_item_key`. The source field is + * required when `duplicate_handling` is `keep_each`; otherwise it may be absent. + */ + @Generated + private String recipientItemKey; + + /* + * The source field containing the earliest dispatch time as a Unix timestamp in seconds. Defaults to `not_before`. + * If the source field is absent, no per-recipient start bound is applied. + */ + @Generated + private String notBefore; + + /* + * The source field containing the expiry time as a Unix timestamp in seconds. Defaults to `expires_at`. If the + * source field is absent, no per-recipient expiry bound is applied. + */ + @Generated + private String expiresAt; + + /** + * Creates an instance of TelephonyCampaignRecipientMappingRequest class. + */ + @Generated + public TelephonyCampaignRecipientMappingRequest() { + } + + /** + * Get the destination property: The source field containing the destination E.164 phone number. Defaults to + * `destination`. The source field is required for each recipient. + * + * @return the destination value. + */ + @Generated + public String getDestination() { + return this.destination; + } + + /** + * Set the destination property: The source field containing the destination E.164 phone number. Defaults to + * `destination`. The source field is required for each recipient. + * + * @param destination the destination value to set. + * @return the TelephonyCampaignRecipientMappingRequest object itself. + */ + @Generated + public TelephonyCampaignRecipientMappingRequest setDestination(String destination) { + this.destination = destination; + return this; + } + + /** + * Get the recipientKey property: The source field containing the recipient key. Defaults to `recipient_key`. The + * source field is required for each recipient. + * + * @return the recipientKey value. + */ + @Generated + public String getRecipientKey() { + return this.recipientKey; + } + + /** + * Set the recipientKey property: The source field containing the recipient key. Defaults to `recipient_key`. The + * source field is required for each recipient. + * + * @param recipientKey the recipientKey value to set. + * @return the TelephonyCampaignRecipientMappingRequest object itself. + */ + @Generated + public TelephonyCampaignRecipientMappingRequest setRecipientKey(String recipientKey) { + this.recipientKey = recipientKey; + return this; + } + + /** + * Get the recipientItemKey property: The source field containing the recipient item key. Defaults to + * `recipient_item_key`. The source field is required when `duplicate_handling` is `keep_each`; otherwise it may be + * absent. + * + * @return the recipientItemKey value. + */ + @Generated + public String getRecipientItemKey() { + return this.recipientItemKey; + } + + /** + * Set the recipientItemKey property: The source field containing the recipient item key. Defaults to + * `recipient_item_key`. The source field is required when `duplicate_handling` is `keep_each`; otherwise it may be + * absent. + * + * @param recipientItemKey the recipientItemKey value to set. + * @return the TelephonyCampaignRecipientMappingRequest object itself. + */ + @Generated + public TelephonyCampaignRecipientMappingRequest setRecipientItemKey(String recipientItemKey) { + this.recipientItemKey = recipientItemKey; + return this; + } + + /** + * Get the notBefore property: The source field containing the earliest dispatch time as a Unix timestamp in + * seconds. Defaults to `not_before`. If the source field is absent, no per-recipient start bound is applied. + * + * @return the notBefore value. + */ + @Generated + public String getNotBefore() { + return this.notBefore; + } + + /** + * Set the notBefore property: The source field containing the earliest dispatch time as a Unix timestamp in + * seconds. Defaults to `not_before`. If the source field is absent, no per-recipient start bound is applied. + * + * @param notBefore the notBefore value to set. + * @return the TelephonyCampaignRecipientMappingRequest object itself. + */ + @Generated + public TelephonyCampaignRecipientMappingRequest setNotBefore(String notBefore) { + this.notBefore = notBefore; + return this; + } + + /** + * Get the expiresAt property: The source field containing the expiry time as a Unix timestamp in seconds. Defaults + * to `expires_at`. If the source field is absent, no per-recipient expiry bound is applied. + * + * @return the expiresAt value. + */ + @Generated + public String getExpiresAt() { + return this.expiresAt; + } + + /** + * Set the expiresAt property: The source field containing the expiry time as a Unix timestamp in seconds. Defaults + * to `expires_at`. If the source field is absent, no per-recipient expiry bound is applied. + * + * @param expiresAt the expiresAt value to set. + * @return the TelephonyCampaignRecipientMappingRequest object itself. + */ + @Generated + public TelephonyCampaignRecipientMappingRequest setExpiresAt(String expiresAt) { + this.expiresAt = expiresAt; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("destination", this.destination); + jsonWriter.writeStringField("recipient_key", this.recipientKey); + jsonWriter.writeStringField("recipient_item_key", this.recipientItemKey); + jsonWriter.writeStringField("not_before", this.notBefore); + jsonWriter.writeStringField("expires_at", this.expiresAt); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyCampaignRecipientMappingRequest from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyCampaignRecipientMappingRequest if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the TelephonyCampaignRecipientMappingRequest. + */ + @Generated + public static TelephonyCampaignRecipientMappingRequest fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TelephonyCampaignRecipientMappingRequest deserializedTelephonyCampaignRecipientMappingRequest + = new TelephonyCampaignRecipientMappingRequest(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("destination".equals(fieldName)) { + deserializedTelephonyCampaignRecipientMappingRequest.destination = reader.getString(); + } else if ("recipient_key".equals(fieldName)) { + deserializedTelephonyCampaignRecipientMappingRequest.recipientKey = reader.getString(); + } else if ("recipient_item_key".equals(fieldName)) { + deserializedTelephonyCampaignRecipientMappingRequest.recipientItemKey = reader.getString(); + } else if ("not_before".equals(fieldName)) { + deserializedTelephonyCampaignRecipientMappingRequest.notBefore = reader.getString(); + } else if ("expires_at".equals(fieldName)) { + deserializedTelephonyCampaignRecipientMappingRequest.expiresAt = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedTelephonyCampaignRecipientMappingRequest; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignSchedule.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignSchedule.java new file mode 100644 index 0000000000000..e3895dffba4b2 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignSchedule.java @@ -0,0 +1,126 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; + +/** + * The schedule for an outbound campaign. + */ +@Fluent +public final class TelephonyCampaignSchedule implements JsonSerializable { + + /* + * Whether calls are eligible immediately after publication or at a future instant. + */ + @Generated + private final TelephonyCampaignScheduleType type; + + /* + * The scheduled start instant. Required only when `type` is `scheduled`. + */ + @Generated + private Long startAt; + + /** + * Creates an instance of TelephonyCampaignSchedule class. + * + * @param type the type value to set. + */ + @Generated + public TelephonyCampaignSchedule(TelephonyCampaignScheduleType type) { + this.type = type; + } + + /** + * Get the type property: Whether calls are eligible immediately after publication or at a future instant. + * + * @return the type value. + */ + @Generated + public TelephonyCampaignScheduleType getType() { + return this.type; + } + + /** + * Get the startAt property: The scheduled start instant. Required only when `type` is `scheduled`. + * + * @return the startAt value. + */ + @Generated + public OffsetDateTime getStartAt() { + if (this.startAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.startAt), ZoneOffset.UTC); + } + + /** + * Set the startAt property: The scheduled start instant. Required only when `type` is `scheduled`. + * + * @param startAt the startAt value to set. + * @return the TelephonyCampaignSchedule object itself. + */ + @Generated + public TelephonyCampaignSchedule setStartAt(OffsetDateTime startAt) { + if (startAt == null) { + this.startAt = null; + } else { + this.startAt = startAt.toEpochSecond(); + } + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeNumberField("start_at", this.startAt); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyCampaignSchedule from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyCampaignSchedule if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyCampaignSchedule. + */ + @Generated + public static TelephonyCampaignSchedule fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TelephonyCampaignScheduleType type = null; + Long startAt = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + type = TelephonyCampaignScheduleType.fromString(reader.getString()); + } else if ("start_at".equals(fieldName)) { + startAt = reader.getNullable(JsonReader::getLong); + } else { + reader.skipChildren(); + } + } + TelephonyCampaignSchedule deserializedTelephonyCampaignSchedule = new TelephonyCampaignSchedule(type); + deserializedTelephonyCampaignSchedule.startAt = startAt; + return deserializedTelephonyCampaignSchedule; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignScheduleType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignScheduleType.java new file mode 100644 index 0000000000000..0cfee7cea49ae --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyCampaignScheduleType.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * When a published outbound campaign becomes eligible to dispatch calls. + */ +public final class TelephonyCampaignScheduleType extends ExpandableStringEnum { + + /** + * Calls are eligible immediately after publication. + */ + @Generated + public static final TelephonyCampaignScheduleType IMMEDIATE = fromString("immediate"); + + /** + * Calls are eligible at the scheduled start instant. + */ + @Generated + public static final TelephonyCampaignScheduleType SCHEDULED = fromString("scheduled"); + + /** + * Creates a new instance of TelephonyCampaignScheduleType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyCampaignScheduleType() { + } + + /** + * Creates or finds a TelephonyCampaignScheduleType from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyCampaignScheduleType. + */ + @Generated + public static TelephonyCampaignScheduleType fromString(String name) { + return fromString(name, TelephonyCampaignScheduleType.class); + } + + /** + * Gets known TelephonyCampaignScheduleType values. + * + * @return known TelephonyCampaignScheduleType values. + */ + @Generated + public static Collection values() { + return values(TelephonyCampaignScheduleType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOperation.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOperation.java new file mode 100644 index 0000000000000..acf9c284f854f --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOperation.java @@ -0,0 +1,191 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; + +/** + * An asynchronous outbound telephony operation. + */ +@Immutable +public final class TelephonyOperation implements JsonSerializable { + + /* + * The id property. + */ + @Generated + private final String id; + + /* + * The object property. + */ + @Generated + private final String object = "telephony.operation"; + + /* + * The status property. + */ + @Generated + private final TelephonyOperationStatus status; + + /* + * The created_at property. + */ + @Generated + private Long createdAt; + + /* + * The error property. + */ + @Generated + private ApiError error; + + /* + * The resource property. + */ + @Generated + private TelephonyOperationResource resource; + + /** + * Creates an instance of TelephonyOperation class. + * + * @param id the id value to set. + * @param status the status value to set. + */ + @Generated + private TelephonyOperation(String id, TelephonyOperationStatus status) { + this.id = id; + this.status = status; + } + + /** + * Get the id property: The id property. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the object property: The object property. + * + * @return the object value. + */ + @Generated + public String getObject() { + return this.object; + } + + /** + * Get the status property: The status property. + * + * @return the status value. + */ + @Generated + public TelephonyOperationStatus getStatus() { + return this.status; + } + + /** + * Get the createdAt property: The created_at property. + * + * @return the createdAt value. + */ + @Generated + public OffsetDateTime getCreatedAt() { + if (this.createdAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.createdAt), ZoneOffset.UTC); + } + + /** + * Get the error property: The error property. + * + * @return the error value. + */ + @Generated + public ApiError getError() { + return this.error; + } + + /** + * Get the resource property: The resource property. + * + * @return the resource value. + */ + @Generated + public TelephonyOperationResource getResource() { + return this.resource; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("object", this.object); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + jsonWriter.writeNumberField("created_at", this.createdAt); + jsonWriter.writeJsonField("error", this.error); + jsonWriter.writeJsonField("resource", this.resource); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyOperation from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyOperation if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyOperation. + */ + @Generated + public static TelephonyOperation fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + TelephonyOperationStatus status = null; + Long createdAt = null; + ApiError error = null; + TelephonyOperationResource resource = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("status".equals(fieldName)) { + status = TelephonyOperationStatus.fromString(reader.getString()); + } else if ("created_at".equals(fieldName)) { + createdAt = reader.getNullable(JsonReader::getLong); + } else if ("error".equals(fieldName)) { + error = ApiError.fromJson(reader); + } else if ("resource".equals(fieldName)) { + resource = TelephonyOperationResource.fromJson(reader); + } else { + reader.skipChildren(); + } + } + TelephonyOperation deserializedTelephonyOperation = new TelephonyOperation(id, status); + deserializedTelephonyOperation.createdAt = createdAt; + deserializedTelephonyOperation.error = error; + deserializedTelephonyOperation.resource = resource; + return deserializedTelephonyOperation; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOperationResource.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOperationResource.java new file mode 100644 index 0000000000000..fe3c06d9fcf0b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOperationResource.java @@ -0,0 +1,104 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A resource produced by a successful outbound telephony operation. + */ +@Immutable +public final class TelephonyOperationResource implements JsonSerializable { + + /* + * The id property. + */ + @Generated + private final String id; + + /* + * The type property. + */ + @Generated + private final String type; + + /** + * Creates an instance of TelephonyOperationResource class. + * + * @param id the id value to set. + * @param type the type value to set. + */ + @Generated + private TelephonyOperationResource(String id, String type) { + this.id = id; + this.type = type; + } + + /** + * Get the id property: The id property. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("type", this.type); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyOperationResource from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyOperationResource if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyOperationResource. + */ + @Generated + public static TelephonyOperationResource fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + String type = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("type".equals(fieldName)) { + type = reader.getString(); + } else { + reader.skipChildren(); + } + } + return new TelephonyOperationResource(id, type); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOperationStatus.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOperationStatus.java new file mode 100644 index 0000000000000..bc28fd77fe253 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOperationStatus.java @@ -0,0 +1,81 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The lifecycle status of an outbound telephony operation. + */ +public final class TelephonyOperationStatus extends ExpandableStringEnum { + + /** + * Static value not_started for TelephonyOperationStatus. + */ + @Generated + public static final TelephonyOperationStatus NOT_STARTED = fromString("not_started"); + + /** + * Static value running for TelephonyOperationStatus. + */ + @Generated + public static final TelephonyOperationStatus RUNNING = fromString("running"); + + /** + * Static value succeeded for TelephonyOperationStatus. + */ + @Generated + public static final TelephonyOperationStatus SUCCEEDED = fromString("succeeded"); + + /** + * Static value failed for TelephonyOperationStatus. + */ + @Generated + public static final TelephonyOperationStatus FAILED = fromString("failed"); + + /** + * Static value cancelled for TelephonyOperationStatus. + */ + @Generated + public static final TelephonyOperationStatus CANCELLED = fromString("cancelled"); + + /** + * Static value unknown for TelephonyOperationStatus. + */ + @Generated + public static final TelephonyOperationStatus UNKNOWN_STATUS = fromString("unknown"); + + /** + * Creates a new instance of TelephonyOperationStatus value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyOperationStatus() { + } + + /** + * Creates or finds a TelephonyOperationStatus from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyOperationStatus. + */ + @Generated + public static TelephonyOperationStatus fromString(String name) { + return fromString(name, TelephonyOperationStatus.class); + } + + /** + * Gets known TelephonyOperationStatus values. + * + * @return known TelephonyOperationStatus values. + */ + @Generated + public static Collection values() { + return values(TelephonyOperationStatus.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundDestination.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundDestination.java new file mode 100644 index 0000000000000..88ddbd20b83f0 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundDestination.java @@ -0,0 +1,104 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The destination of an outbound call. + */ +@Immutable +public final class TelephonyOutboundDestination implements JsonSerializable { + + /* + * The destination type. Only E.164 phone numbers are currently supported. + */ + @Generated + private final TelephonyOutboundDestinationType type; + + /* + * The destination E.164 phone number. + */ + @Generated + private final String value; + + /** + * Creates an instance of TelephonyOutboundDestination class. + * + * @param type the type value to set. + * @param value the value value to set. + */ + @Generated + public TelephonyOutboundDestination(TelephonyOutboundDestinationType type, String value) { + this.type = type; + this.value = value; + } + + /** + * Get the type property: The destination type. Only E.164 phone numbers are currently supported. + * + * @return the type value. + */ + @Generated + public TelephonyOutboundDestinationType getType() { + return this.type; + } + + /** + * Get the value property: The destination E.164 phone number. + * + * @return the value value. + */ + @Generated + public String getValue() { + return this.value; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("value", this.value); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyOutboundDestination from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyOutboundDestination if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyOutboundDestination. + */ + @Generated + public static TelephonyOutboundDestination fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TelephonyOutboundDestinationType type = null; + String value = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + type = TelephonyOutboundDestinationType.fromString(reader.getString()); + } else if ("value".equals(fieldName)) { + value = reader.getString(); + } else { + reader.skipChildren(); + } + } + return new TelephonyOutboundDestination(type, value); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundDestinationType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundDestinationType.java new file mode 100644 index 0000000000000..89ac88babc60c --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundDestinationType.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The type of destination for an outbound call. + */ +public final class TelephonyOutboundDestinationType extends ExpandableStringEnum { + + /** + * An E.164 phone number. + */ + @Generated + public static final TelephonyOutboundDestinationType PHONE_NUMBER = fromString("phone_number"); + + /** + * Creates a new instance of TelephonyOutboundDestinationType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyOutboundDestinationType() { + } + + /** + * Creates or finds a TelephonyOutboundDestinationType from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyOutboundDestinationType. + */ + @Generated + public static TelephonyOutboundDestinationType fromString(String name) { + return fromString(name, TelephonyOutboundDestinationType.class); + } + + /** + * Gets known TelephonyOutboundDestinationType values. + * + * @return known TelephonyOutboundDestinationType values. + */ + @Generated + public static Collection values() { + return values(TelephonyOutboundDestinationType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundFixedIntervalRetryPolicy.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundFixedIntervalRetryPolicy.java new file mode 100644 index 0000000000000..0ef2fc1947f6e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundFixedIntervalRetryPolicy.java @@ -0,0 +1,137 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; + +/** + * A retry policy with a fixed interval between outbound call attempts. + */ +@Fluent +public final class TelephonyOutboundFixedIntervalRetryPolicy extends TelephonyOutboundRetryPolicy { + + /* + * The retry strategy. Only fixed-interval retries are currently supported. + */ + @Generated + private TelephonyOutboundRetryPolicyType type = TelephonyOutboundRetryPolicyType.FIXED_INTERVAL; + + /* + * The fixed delay in seconds between attempts. It must be 0 when `max_attempts` is 1, and from 60 through 86400 + * when retries are enabled. + */ + @Generated + private Long interval; + + /** + * Creates an instance of TelephonyOutboundFixedIntervalRetryPolicy class. + */ + @Generated + public TelephonyOutboundFixedIntervalRetryPolicy() { + } + + /** + * Get the type property: The retry strategy. Only fixed-interval retries are currently supported. + * + * @return the type value. + */ + @Generated + @Override + public TelephonyOutboundRetryPolicyType getType() { + return this.type; + } + + /** + * Get the interval property: The fixed delay in seconds between attempts. It must be 0 when `max_attempts` is 1, + * and from 60 through 86400 when retries are enabled. + * + * @return the interval value. + */ + @Generated + public Duration getInterval() { + if (this.interval == null) { + return null; + } + return Duration.ofSeconds(this.interval); + } + + /** + * Set the interval property: The fixed delay in seconds between attempts. It must be 0 when `max_attempts` is 1, + * and from 60 through 86400 when retries are enabled. + * + * @param interval the interval value to set. + * @return the TelephonyOutboundFixedIntervalRetryPolicy object itself. + */ + @Generated + public TelephonyOutboundFixedIntervalRetryPolicy setInterval(Duration interval) { + if (interval == null) { + this.interval = null; + } else { + this.interval = interval.getSeconds(); + } + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public TelephonyOutboundFixedIntervalRetryPolicy setMaxAttempts(Integer maxAttempts) { + super.setMaxAttempts(maxAttempts); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeNumberField("max_attempts", getMaxAttempts()); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeNumberField("interval", this.interval); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyOutboundFixedIntervalRetryPolicy from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyOutboundFixedIntervalRetryPolicy if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the TelephonyOutboundFixedIntervalRetryPolicy. + */ + @Generated + public static TelephonyOutboundFixedIntervalRetryPolicy fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TelephonyOutboundFixedIntervalRetryPolicy deserializedTelephonyOutboundFixedIntervalRetryPolicy + = new TelephonyOutboundFixedIntervalRetryPolicy(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("max_attempts".equals(fieldName)) { + deserializedTelephonyOutboundFixedIntervalRetryPolicy + .setMaxAttempts(reader.getNullable(JsonReader::getInt)); + } else if ("type".equals(fieldName)) { + deserializedTelephonyOutboundFixedIntervalRetryPolicy.type + = TelephonyOutboundRetryPolicyType.fromString(reader.getString()); + } else if ("interval".equals(fieldName)) { + deserializedTelephonyOutboundFixedIntervalRetryPolicy.interval + = reader.getNullable(JsonReader::getLong); + } else { + reader.skipChildren(); + } + } + return deserializedTelephonyOutboundFixedIntervalRetryPolicy; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundFixedIntervalRetryPolicyResponse.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundFixedIntervalRetryPolicyResponse.java new file mode 100644 index 0000000000000..9a72bdcd37eea --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundFixedIntervalRetryPolicyResponse.java @@ -0,0 +1,116 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; + +/** + * The frozen fixed-interval retry policy returned for an outbound call or campaign. + */ +@Immutable +public final class TelephonyOutboundFixedIntervalRetryPolicyResponse extends TelephonyOutboundRetryPolicyResponse { + + /* + * The retry strategy. + */ + @Generated + private TelephonyOutboundRetryPolicyType type = TelephonyOutboundRetryPolicyType.FIXED_INTERVAL; + + /* + * The fixed delay in seconds between attempts. + */ + @Generated + private final long interval; + + /** + * Creates an instance of TelephonyOutboundFixedIntervalRetryPolicyResponse class. + * + * @param maxAttempts the maxAttempts value to set. + * @param interval the interval value to set. + */ + @Generated + private TelephonyOutboundFixedIntervalRetryPolicyResponse(int maxAttempts, Duration interval) { + super(maxAttempts); + if (interval == null) { + this.interval = 0L; + } else { + this.interval = interval.getSeconds(); + } + } + + /** + * Get the type property: The retry strategy. + * + * @return the type value. + */ + @Generated + @Override + public TelephonyOutboundRetryPolicyType getType() { + return this.type; + } + + /** + * Get the interval property: The fixed delay in seconds between attempts. + * + * @return the interval value. + */ + @Generated + public Duration getInterval() { + return Duration.ofSeconds(this.interval); + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeIntField("max_attempts", getMaxAttempts()); + jsonWriter.writeLongField("interval", this.interval); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyOutboundFixedIntervalRetryPolicyResponse from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyOutboundFixedIntervalRetryPolicyResponse if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyOutboundFixedIntervalRetryPolicyResponse. + */ + @Generated + public static TelephonyOutboundFixedIntervalRetryPolicyResponse fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + int maxAttempts = 0; + Duration interval = null; + TelephonyOutboundRetryPolicyType type = TelephonyOutboundRetryPolicyType.FIXED_INTERVAL; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("max_attempts".equals(fieldName)) { + maxAttempts = reader.getInt(); + } else if ("interval".equals(fieldName)) { + interval = Duration.ofSeconds(reader.getLong()); + } else if ("type".equals(fieldName)) { + type = TelephonyOutboundRetryPolicyType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + TelephonyOutboundFixedIntervalRetryPolicyResponse deserializedTelephonyOutboundFixedIntervalRetryPolicyResponse + = new TelephonyOutboundFixedIntervalRetryPolicyResponse(maxAttempts, interval); + deserializedTelephonyOutboundFixedIntervalRetryPolicyResponse.type = type; + return deserializedTelephonyOutboundFixedIntervalRetryPolicyResponse; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicy.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicy.java new file mode 100644 index 0000000000000..11c416d99d6c7 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicy.java @@ -0,0 +1,141 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The retry policy for one durable outbound call intent. `max_attempts` includes the first attempt. Strategy-specific + * settings are defined by the derived policy. + */ +@Fluent +public class TelephonyOutboundRetryPolicy implements JsonSerializable { + + /* + * The retry strategy. Only fixed-interval retries are currently supported. + */ + @Generated + private TelephonyOutboundRetryPolicyType type + = TelephonyOutboundRetryPolicyType.fromString("TelephonyOutboundRetryPolicy"); + + /* + * The maximum number of provider attempts, including the first attempt. Defaults to 1. + */ + @Generated + private Integer maxAttempts; + + /** + * Creates an instance of TelephonyOutboundRetryPolicy class. + */ + @Generated + public TelephonyOutboundRetryPolicy() { + } + + /** + * Get the type property: The retry strategy. Only fixed-interval retries are currently supported. + * + * @return the type value. + */ + @Generated + public TelephonyOutboundRetryPolicyType getType() { + return this.type; + } + + /** + * Get the maxAttempts property: The maximum number of provider attempts, including the first attempt. Defaults to + * 1. + * + * @return the maxAttempts value. + */ + @Generated + public Integer getMaxAttempts() { + return this.maxAttempts; + } + + /** + * Set the maxAttempts property: The maximum number of provider attempts, including the first attempt. Defaults to + * 1. + * + * @param maxAttempts the maxAttempts value to set. + * @return the TelephonyOutboundRetryPolicy object itself. + */ + @Generated + public TelephonyOutboundRetryPolicy setMaxAttempts(Integer maxAttempts) { + this.maxAttempts = maxAttempts; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeNumberField("max_attempts", this.maxAttempts); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyOutboundRetryPolicy from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyOutboundRetryPolicy if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the TelephonyOutboundRetryPolicy. + */ + @Generated + public static TelephonyOutboundRetryPolicy fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("fixed_interval".equals(discriminatorValue)) { + return TelephonyOutboundFixedIntervalRetryPolicy.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static TelephonyOutboundRetryPolicy fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TelephonyOutboundRetryPolicy deserializedTelephonyOutboundRetryPolicy = new TelephonyOutboundRetryPolicy(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedTelephonyOutboundRetryPolicy.type + = TelephonyOutboundRetryPolicyType.fromString(reader.getString()); + } else if ("max_attempts".equals(fieldName)) { + deserializedTelephonyOutboundRetryPolicy.maxAttempts = reader.getNullable(JsonReader::getInt); + } else { + reader.skipChildren(); + } + } + return deserializedTelephonyOutboundRetryPolicy; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicyResponse.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicyResponse.java new file mode 100644 index 0000000000000..c428ffcf610f6 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicyResponse.java @@ -0,0 +1,133 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The frozen retry policy returned for an outbound call or campaign. + */ +@Immutable +public class TelephonyOutboundRetryPolicyResponse implements JsonSerializable { + + /* + * The retry strategy. + */ + @Generated + private TelephonyOutboundRetryPolicyType type + = TelephonyOutboundRetryPolicyType.fromString("TelephonyOutboundRetryPolicyResponse"); + + /* + * The maximum number of provider attempts, including the first attempt. + */ + @Generated + private final int maxAttempts; + + /** + * Creates an instance of TelephonyOutboundRetryPolicyResponse class. + * + * @param maxAttempts the maxAttempts value to set. + */ + @Generated + protected TelephonyOutboundRetryPolicyResponse(int maxAttempts) { + this.maxAttempts = maxAttempts; + } + + /** + * Get the type property: The retry strategy. + * + * @return the type value. + */ + @Generated + public TelephonyOutboundRetryPolicyType getType() { + return this.type; + } + + /** + * Get the maxAttempts property: The maximum number of provider attempts, including the first attempt. + * + * @return the maxAttempts value. + */ + @Generated + public int getMaxAttempts() { + return this.maxAttempts; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeIntField("max_attempts", this.maxAttempts); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyOutboundRetryPolicyResponse from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyOutboundRetryPolicyResponse if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyOutboundRetryPolicyResponse. + */ + @Generated + public static TelephonyOutboundRetryPolicyResponse fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("fixed_interval".equals(discriminatorValue)) { + return TelephonyOutboundFixedIntervalRetryPolicyResponse.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static TelephonyOutboundRetryPolicyResponse fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + int maxAttempts = 0; + TelephonyOutboundRetryPolicyType type = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("max_attempts".equals(fieldName)) { + maxAttempts = reader.getInt(); + } else if ("type".equals(fieldName)) { + type = TelephonyOutboundRetryPolicyType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + TelephonyOutboundRetryPolicyResponse deserializedTelephonyOutboundRetryPolicyResponse + = new TelephonyOutboundRetryPolicyResponse(maxAttempts); + deserializedTelephonyOutboundRetryPolicyResponse.type = type; + return deserializedTelephonyOutboundRetryPolicyResponse; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicyType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicyType.java new file mode 100644 index 0000000000000..8dc2b46e5fa61 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicyType.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The retry strategy for an outbound call. + */ +public final class TelephonyOutboundRetryPolicyType extends ExpandableStringEnum { + + /** + * Retry after a fixed interval between attempts. + */ + @Generated + public static final TelephonyOutboundRetryPolicyType FIXED_INTERVAL = fromString("fixed_interval"); + + /** + * Creates a new instance of TelephonyOutboundRetryPolicyType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyOutboundRetryPolicyType() { + } + + /** + * Creates or finds a TelephonyOutboundRetryPolicyType from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyOutboundRetryPolicyType. + */ + @Generated + public static TelephonyOutboundRetryPolicyType fromString(String name) { + return fromString(name, TelephonyOutboundRetryPolicyType.class); + } + + /** + * Gets known TelephonyOutboundRetryPolicyType values. + * + * @return known TelephonyOutboundRetryPolicyType values. + */ + @Generated + public static Collection values() { + return values(TelephonyOutboundRetryPolicyType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyProvider.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyProvider.java new file mode 100644 index 0000000000000..61a70a24c0040 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyProvider.java @@ -0,0 +1,58 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * A telephony provider supported by an agent binding. Known values are stable; additional values may be added over + * time. + */ +public final class TelephonyProvider extends ExpandableStringEnum { + + /** + * Microsoft Teams Phone Extension. + */ + @Generated + public static final TelephonyProvider TEAMS_PHONE_EXTENSION = fromString("teams_phone_extension"); + + /** + * Twilio Programmable Voice. + */ + @Generated + public static final TelephonyProvider TWILIO = fromString("twilio"); + + /** + * Creates a new instance of TelephonyProvider value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyProvider() { + } + + /** + * Creates or finds a TelephonyProvider from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyProvider. + */ + @Generated + public static TelephonyProvider fromString(String name) { + return fromString(name, TelephonyProvider.class); + } + + /** + * Gets known TelephonyProvider values. + * + * @return known TelephonyProvider values. + */ + @Generated + public static Collection values() { + return values(TelephonyProvider.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferDestination.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferDestination.java new file mode 100644 index 0000000000000..04c8b1a94f772 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferDestination.java @@ -0,0 +1,111 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A destination for a telephony transfer target. + */ +@Immutable +public class TelephonyTransferDestination implements JsonSerializable { + + /* + * The telephony transfer destination type. + */ + @Generated + private TelephonyTransferDestinationKind kind + = TelephonyTransferDestinationKind.fromString("TelephonyTransferDestination"); + + /** + * Creates an instance of TelephonyTransferDestination class. + */ + @Generated + public TelephonyTransferDestination() { + } + + /** + * Get the kind property: The telephony transfer destination type. + * + * @return the kind value. + */ + @Generated + public TelephonyTransferDestinationKind getKind() { + return this.kind; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyTransferDestination from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyTransferDestination if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the TelephonyTransferDestination. + */ + @Generated + public static TelephonyTransferDestination fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("kind".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("pstn".equals(discriminatorValue)) { + return PSTNTelephonyTransferDestination.fromJson(readerToUse.reset()); + } else if ("teams".equals(discriminatorValue)) { + return TeamsTelephonyTransferDestination.fromJson(readerToUse.reset()); + } else if ("sip".equals(discriminatorValue)) { + return SipTelephonyTransferDestination.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static TelephonyTransferDestination fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + TelephonyTransferDestination deserializedTelephonyTransferDestination = new TelephonyTransferDestination(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("kind".equals(fieldName)) { + deserializedTelephonyTransferDestination.kind + = TelephonyTransferDestinationKind.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedTelephonyTransferDestination; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferDestinationKind.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferDestinationKind.java new file mode 100644 index 0000000000000..3fbc284ae4910 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferDestinationKind.java @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The kind of telephony transfer destination. Known values are stable; additional values may be added over time. + */ +public final class TelephonyTransferDestinationKind extends ExpandableStringEnum { + + /** + * A public switched telephone network destination. + */ + @Generated + public static final TelephonyTransferDestinationKind PSTN = fromString("pstn"); + + /** + * A Microsoft Teams user or resource-account destination. + */ + @Generated + public static final TelephonyTransferDestinationKind TEAMS = fromString("teams"); + + /** + * A Session Initiation Protocol destination. + */ + @Generated + public static final TelephonyTransferDestinationKind SIP = fromString("sip"); + + /** + * Creates a new instance of TelephonyTransferDestinationKind value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public TelephonyTransferDestinationKind() { + } + + /** + * Creates or finds a TelephonyTransferDestinationKind from its string representation. + * + * @param name a name to look for. + * @return the corresponding TelephonyTransferDestinationKind. + */ + @Generated + public static TelephonyTransferDestinationKind fromString(String name) { + return fromString(name, TelephonyTransferDestinationKind.class); + } + + /** + * Gets known TelephonyTransferDestinationKind values. + * + * @return known TelephonyTransferDestinationKind values. + */ + @Generated + public static Collection values() { + return values(TelephonyTransferDestinationKind.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferTarget.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferTarget.java new file mode 100644 index 0000000000000..be98f04f5a7f5 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferTarget.java @@ -0,0 +1,126 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A named destination to which the voice agent may transfer a call. + */ +@Immutable +public final class TelephonyTransferTarget implements JsonSerializable { + + /* + * The unique name exposed to the voice agent for this transfer target. + */ + @Generated + private final String name; + + /* + * A description that helps the voice agent decide when to use this target. + */ + @Generated + private final String description; + + /* + * The provider-specific transfer destination. + */ + @Generated + private final TelephonyTransferDestination destination; + + /** + * Creates an instance of TelephonyTransferTarget class. + * + * @param name the name value to set. + * @param description the description value to set. + * @param destination the destination value to set. + */ + @Generated + public TelephonyTransferTarget(String name, String description, TelephonyTransferDestination destination) { + this.name = name; + this.description = description; + this.destination = destination; + } + + /** + * Get the name property: The unique name exposed to the voice agent for this transfer target. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * Get the description property: A description that helps the voice agent decide when to use this target. + * + * @return the description value. + */ + @Generated + public String getDescription() { + return this.description; + } + + /** + * Get the destination property: The provider-specific transfer destination. + * + * @return the destination value. + */ + @Generated + public TelephonyTransferDestination getDestination() { + return this.destination; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeStringField("description", this.description); + jsonWriter.writeJsonField("destination", this.destination); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyTransferTarget from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyTransferTarget if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyTransferTarget. + */ + @Generated + public static TelephonyTransferTarget fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String name = null; + String description = null; + TelephonyTransferDestination destination = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("description".equals(fieldName)) { + description = reader.getString(); + } else if ("destination".equals(fieldName)) { + destination = TelephonyTransferDestination.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return new TelephonyTransferTarget(name, description, destination); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferTargets.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferTargets.java new file mode 100644 index 0000000000000..eda734194d652 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelephonyTransferTargets.java @@ -0,0 +1,86 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * The telephony transfer targets configured for one voice agent. + */ +@Immutable +public final class TelephonyTransferTargets implements JsonSerializable { + + /* + * The complete set of destinations to which the voice agent may transfer calls. An empty array clears all targets + * when replacing the configuration. + */ + @Generated + private final List transferTargets; + + /** + * Creates an instance of TelephonyTransferTargets class. + * + * @param transferTargets the transferTargets value to set. + */ + @Generated + private TelephonyTransferTargets(List transferTargets) { + this.transferTargets = transferTargets; + } + + /** + * Get the transferTargets property: The complete set of destinations to which the voice agent may transfer calls. + * An empty array clears all targets when replacing the configuration. + * + * @return the transferTargets value. + */ + @Generated + public List getTransferTargets() { + return this.transferTargets; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("transfer_targets", this.transferTargets, + (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TelephonyTransferTargets from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TelephonyTransferTargets if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TelephonyTransferTargets. + */ + @Generated + public static TelephonyTransferTargets fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + List transferTargets = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("transfer_targets".equals(fieldName)) { + transferTargets = reader.readArray(reader1 -> TelephonyTransferTarget.fromJson(reader1)); + } else { + reader.skipChildren(); + } + } + return new TelephonyTransferTargets(transferTargets); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceFunction.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceFunction.java new file mode 100644 index 0000000000000..9f54a40f4f9fc --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceFunction.java @@ -0,0 +1,106 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Function tool + * + * Use this option to force the model to call a specific function. + */ +@Immutable +public final class ToolChoiceFunction extends ToolChoiceParam { + + /* + * The type property. + */ + @Generated + private ToolChoiceParamType type = ToolChoiceParamType.FUNCTION; + + /* + * The name of the function to call. + */ + @Generated + private final String name; + + /** + * Creates an instance of ToolChoiceFunction class. + * + * @param name the name value to set. + */ + @Generated + public ToolChoiceFunction(String name) { + this.name = name; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public ToolChoiceParamType getType() { + return this.type; + } + + /** + * Get the name property: The name of the function to call. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ToolChoiceFunction from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ToolChoiceFunction if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the ToolChoiceFunction. + */ + @Generated + public static ToolChoiceFunction fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String name = null; + ToolChoiceParamType type = ToolChoiceParamType.FUNCTION; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("type".equals(fieldName)) { + type = ToolChoiceParamType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + ToolChoiceFunction deserializedToolChoiceFunction = new ToolChoiceFunction(name); + deserializedToolChoiceFunction.type = type; + return deserializedToolChoiceFunction; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceMCP.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceMCP.java new file mode 100644 index 0000000000000..5b380a36145f9 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceMCP.java @@ -0,0 +1,139 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * MCP tool + * + * Use this option to force the model to call a specific tool on a remote MCP server. + */ +@Fluent +public final class ToolChoiceMCP extends ToolChoiceParam { + + /* + * The type property. + */ + @Generated + private ToolChoiceParamType type = ToolChoiceParamType.MCP; + + /* + * The label of the MCP server to use. + */ + @Generated + private final String serverLabel; + + /* + * The name property. + */ + @Generated + private String name; + + /** + * Creates an instance of ToolChoiceMCP class. + * + * @param serverLabel the serverLabel value to set. + */ + @Generated + public ToolChoiceMCP(String serverLabel) { + this.serverLabel = serverLabel; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public ToolChoiceParamType getType() { + return this.type; + } + + /** + * Get the serverLabel property: The label of the MCP server to use. + * + * @return the serverLabel value. + */ + @Generated + public String getServerLabel() { + return this.serverLabel; + } + + /** + * Get the name property: The name property. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * Set the name property: The name property. + * + * @param name the name value to set. + * @return the ToolChoiceMCP object itself. + */ + @Generated + public ToolChoiceMCP setName(String name) { + this.name = name; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("server_label", this.serverLabel); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("name", this.name); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ToolChoiceMCP from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ToolChoiceMCP if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the ToolChoiceMCP. + */ + @Generated + public static ToolChoiceMCP fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String serverLabel = null; + ToolChoiceParamType type = ToolChoiceParamType.MCP; + String name = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("server_label".equals(fieldName)) { + serverLabel = reader.getString(); + } else if ("type".equals(fieldName)) { + type = ToolChoiceParamType.fromString(reader.getString()); + } else if ("name".equals(fieldName)) { + name = reader.getString(); + } else { + reader.skipChildren(); + } + } + ToolChoiceMCP deserializedToolChoiceMCP = new ToolChoiceMCP(serverLabel); + deserializedToolChoiceMCP.type = type; + deserializedToolChoiceMCP.name = name; + return deserializedToolChoiceMCP; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceParam.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceParam.java new file mode 100644 index 0000000000000..3b9b0a35330c3 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceParam.java @@ -0,0 +1,109 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * How the model should select which tool (or tools) to use when generating + * a response. See the `tools` parameter to see how to specify which tools + * the model can call. + */ +@Immutable +public class ToolChoiceParam implements JsonSerializable { + + /* + * The type property. + */ + @Generated + private ToolChoiceParamType type = ToolChoiceParamType.fromString("ToolChoiceParam"); + + /** + * Creates an instance of ToolChoiceParam class. + */ + @Generated + public ToolChoiceParam() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + public ToolChoiceParamType getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ToolChoiceParam from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ToolChoiceParam if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the ToolChoiceParam. + */ + @Generated + public static ToolChoiceParam fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("mcp".equals(discriminatorValue)) { + return ToolChoiceMCP.fromJson(readerToUse.reset()); + } else if ("function".equals(discriminatorValue)) { + return ToolChoiceFunction.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static ToolChoiceParam fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ToolChoiceParam deserializedToolChoiceParam = new ToolChoiceParam(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedToolChoiceParam.type = ToolChoiceParamType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedToolChoiceParam; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceParamType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceParamType.java new file mode 100644 index 0000000000000..bfece252c8ace --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolChoiceParamType.java @@ -0,0 +1,135 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * Defines values for ToolChoiceParamType. + */ +public final class ToolChoiceParamType extends ExpandableStringEnum { + + /** + * Static value allowed_tools for ToolChoiceParamType. + */ + @Generated + public static final ToolChoiceParamType ALLOWED_TOOLS = fromString("allowed_tools"); + + /** + * Static value function for ToolChoiceParamType. + */ + @Generated + public static final ToolChoiceParamType FUNCTION = fromString("function"); + + /** + * Static value mcp for ToolChoiceParamType. + */ + @Generated + public static final ToolChoiceParamType MCP = fromString("mcp"); + + /** + * Static value custom for ToolChoiceParamType. + */ + @Generated + public static final ToolChoiceParamType CUSTOM = fromString("custom"); + + /** + * Static value programmatic_tool_calling for ToolChoiceParamType. + */ + @Generated + public static final ToolChoiceParamType PROGRAMMATIC_TOOL_CALLING = fromString("programmatic_tool_calling"); + + /** + * Static value apply_patch for ToolChoiceParamType. + */ + @Generated + public static final ToolChoiceParamType APPLY_PATCH = fromString("apply_patch"); + + /** + * Static value shell for ToolChoiceParamType. + */ + @Generated + public static final ToolChoiceParamType SHELL = fromString("shell"); + + /** + * Static value file_search for ToolChoiceParamType. + */ + @Generated + public static final ToolChoiceParamType FILE_SEARCH = fromString("file_search"); + + /** + * Static value web_search_preview for ToolChoiceParamType. + */ + @Generated + public static final ToolChoiceParamType WEB_SEARCH_PREVIEW = fromString("web_search_preview"); + + /** + * Static value computer_use_preview for ToolChoiceParamType. + */ + @Generated + public static final ToolChoiceParamType COMPUTER_USE_PREVIEW = fromString("computer_use_preview"); + + /** + * Static value web_search_preview_2025_03_11 for ToolChoiceParamType. + */ + @Generated + public static final ToolChoiceParamType WEB_SEARCH_PREVIEW_2025_03_11 = fromString("web_search_preview_2025_03_11"); + + /** + * Static value image_generation for ToolChoiceParamType. + */ + @Generated + public static final ToolChoiceParamType IMAGE_GENERATION = fromString("image_generation"); + + /** + * Static value code_interpreter for ToolChoiceParamType. + */ + @Generated + public static final ToolChoiceParamType CODE_INTERPRETER = fromString("code_interpreter"); + + /** + * Static value computer for ToolChoiceParamType. + */ + @Generated + public static final ToolChoiceParamType COMPUTER = fromString("computer"); + + /** + * Static value computer_use for ToolChoiceParamType. + */ + @Generated + public static final ToolChoiceParamType COMPUTER_USE = fromString("computer_use"); + + /** + * Creates a new instance of ToolChoiceParamType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public ToolChoiceParamType() { + } + + /** + * Creates or finds a ToolChoiceParamType from its string representation. + * + * @param name a name to look for. + * @return the corresponding ToolChoiceParamType. + */ + @Generated + public static ToolChoiceParamType fromString(String name) { + return fromString(name, ToolChoiceParamType.class); + } + + /** + * Gets known ToolChoiceParamType values. + * + * @return known ToolChoiceParamType values. + */ + @Generated + public static Collection values() { + return values(ToolChoiceParamType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TwilioTelephonyBinding.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TwilioTelephonyBinding.java new file mode 100644 index 0000000000000..3101b5913ec2f --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TwilioTelephonyBinding.java @@ -0,0 +1,132 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A Twilio binding owned by a voice agent. + */ +@Immutable +public final class TwilioTelephonyBinding extends TelephonyBinding { + + /* + * The telephony provider. + */ + @Generated + private TelephonyProvider provider = TelephonyProvider.TWILIO; + + /* + * The Twilio E.164 phone number. + */ + @Generated + private final String phoneNumber; + + /** + * Creates an instance of TwilioTelephonyBinding class. + * + * @param id the id value to set. + * @param connection the connection value to set. + * @param status the status value to set. + * @param incomingCallUrl the incomingCallUrl value to set. + * @param phoneNumber the phoneNumber value to set. + */ + @Generated + private TwilioTelephonyBinding(String id, String connection, TelephonyBindingStatus status, String incomingCallUrl, + String phoneNumber) { + super(id, connection, status, incomingCallUrl); + this.phoneNumber = phoneNumber; + } + + /** + * Get the provider property: The telephony provider. + * + * @return the provider value. + */ + @Generated + @Override + public TelephonyProvider getProvider() { + return this.provider; + } + + /** + * Get the phoneNumber property: The Twilio E.164 phone number. + * + * @return the phoneNumber value. + */ + @Generated + public String getPhoneNumber() { + return this.phoneNumber; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", getId()); + jsonWriter.writeStringField("connection", getConnection()); + jsonWriter.writeStringField("status", getStatus() == null ? null : getStatus().toString()); + jsonWriter.writeStringField("incoming_call_url", getIncomingCallUrl()); + jsonWriter.writeStringField("label", getLabel()); + jsonWriter.writeStringField("phone_number", this.phoneNumber); + jsonWriter.writeStringField("provider", this.provider == null ? null : this.provider.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TwilioTelephonyBinding from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TwilioTelephonyBinding if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TwilioTelephonyBinding. + */ + @Generated + public static TwilioTelephonyBinding fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + String connection = null; + TelephonyBindingStatus status = null; + String incomingCallUrl = null; + String label = null; + String phoneNumber = null; + TelephonyProvider provider = TelephonyProvider.TWILIO; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("connection".equals(fieldName)) { + connection = reader.getString(); + } else if ("status".equals(fieldName)) { + status = TelephonyBindingStatus.fromString(reader.getString()); + } else if ("incoming_call_url".equals(fieldName)) { + incomingCallUrl = reader.getString(); + } else if ("label".equals(fieldName)) { + label = reader.getString(); + } else if ("phone_number".equals(fieldName)) { + phoneNumber = reader.getString(); + } else if ("provider".equals(fieldName)) { + provider = TelephonyProvider.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + TwilioTelephonyBinding deserializedTwilioTelephonyBinding + = new TwilioTelephonyBinding(id, connection, status, incomingCallUrl, phoneNumber); + deserializedTwilioTelephonyBinding.setLabel(label); + deserializedTwilioTelephonyBinding.provider = provider; + return deserializedTwilioTelephonyBinding; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TwilioTelephonyBindingListItem.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TwilioTelephonyBindingListItem.java new file mode 100644 index 0000000000000..e09eb58279eb8 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TwilioTelephonyBindingListItem.java @@ -0,0 +1,136 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A Twilio binding returned in a list, including its entity tag. + */ +@Immutable +public final class TwilioTelephonyBindingListItem extends TelephonyBindingListItem { + + /* + * The telephony provider. + */ + @Generated + private TelephonyProvider provider = TelephonyProvider.TWILIO; + + /* + * The Twilio E.164 phone number. + */ + @Generated + private final String phoneNumber; + + /** + * Creates an instance of TwilioTelephonyBindingListItem class. + * + * @param id the id value to set. + * @param connection the connection value to set. + * @param status the status value to set. + * @param incomingCallUrl the incomingCallUrl value to set. + * @param phoneNumber the phoneNumber value to set. + */ + @Generated + private TwilioTelephonyBindingListItem(String id, String connection, TelephonyBindingStatus status, + String incomingCallUrl, String phoneNumber) { + super(id, connection, status, incomingCallUrl); + this.phoneNumber = phoneNumber; + } + + /** + * Get the provider property: The telephony provider. + * + * @return the provider value. + */ + @Generated + @Override + public TelephonyProvider getProvider() { + return this.provider; + } + + /** + * Get the phoneNumber property: The Twilio E.164 phone number. + * + * @return the phoneNumber value. + */ + @Generated + public String getPhoneNumber() { + return this.phoneNumber; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", getId()); + jsonWriter.writeStringField("connection", getConnection()); + jsonWriter.writeStringField("status", getStatus() == null ? null : getStatus().toString()); + jsonWriter.writeStringField("incoming_call_url", getIncomingCallUrl()); + jsonWriter.writeStringField("label", getLabel()); + jsonWriter.writeStringField("phone_number", this.phoneNumber); + jsonWriter.writeStringField("provider", this.provider == null ? null : this.provider.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of TwilioTelephonyBindingListItem from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of TwilioTelephonyBindingListItem if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the TwilioTelephonyBindingListItem. + */ + @Generated + public static TwilioTelephonyBindingListItem fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + String connection = null; + TelephonyBindingStatus status = null; + String incomingCallUrl = null; + String etag = null; + String label = null; + String phoneNumber = null; + TelephonyProvider provider = TelephonyProvider.TWILIO; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("connection".equals(fieldName)) { + connection = reader.getString(); + } else if ("status".equals(fieldName)) { + status = TelephonyBindingStatus.fromString(reader.getString()); + } else if ("incoming_call_url".equals(fieldName)) { + incomingCallUrl = reader.getString(); + } else if ("etag".equals(fieldName)) { + etag = reader.getString(); + } else if ("label".equals(fieldName)) { + label = reader.getString(); + } else if ("phone_number".equals(fieldName)) { + phoneNumber = reader.getString(); + } else if ("provider".equals(fieldName)) { + provider = TelephonyProvider.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + TwilioTelephonyBindingListItem deserializedTwilioTelephonyBindingListItem + = new TwilioTelephonyBindingListItem(id, connection, status, incomingCallUrl, phoneNumber); + deserializedTwilioTelephonyBindingListItem.setEtag(etag); + deserializedTwilioTelephonyBindingListItem.setLabel(label); + deserializedTwilioTelephonyBindingListItem.provider = provider; + return deserializedTwilioTelephonyBindingListItem; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/UpdateTelephonyBindingRequest.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/UpdateTelephonyBindingRequest.java new file mode 100644 index 0000000000000..936a57a3ea660 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/UpdateTelephonyBindingRequest.java @@ -0,0 +1,271 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.ai.agents.implementation.JsonMergePatchHelper; +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; + +/** + * The request to update an existing telephony binding. Every property is optional and the binding's provider is + * immutable. + */ +@Fluent +public final class UpdateTelephonyBindingRequest implements JsonSerializable { + + /* + * The new lifecycle status. + */ + @Generated + private TelephonyBindingStatus status; + + /* + * The replacement display label. Omit it to preserve the current value; use null to clear it. + */ + @Generated + private String label; + + /* + * The replacement Foundry connection name. This property is valid only for a Teams Phone Extension binding; a + * Twilio binding's connection is immutable. + */ + @Generated + private String connection; + + /* + * The replacement Teams Phone Extension display phone number. Omit it to preserve the current value; use null to + * clear it. This property is valid only for a Teams Phone Extension binding. + */ + @Generated + private String phoneNumber; + + /** + * Stores updated model property, the value is property name, not serialized name. + */ + @Generated + private final Set updatedProperties = new HashSet<>(); + + @Generated + private boolean jsonMergePatch; + + @Generated + private void serializeAsJsonMergePatch(boolean jsonMergePatch) { + this.jsonMergePatch = jsonMergePatch; + } + + static { + JsonMergePatchHelper + .setUpdateTelephonyBindingRequestAccessor(new JsonMergePatchHelper.UpdateTelephonyBindingRequestAccessor() { + + @Override + public UpdateTelephonyBindingRequest prepareModelForJsonMergePatch(UpdateTelephonyBindingRequest model, + boolean jsonMergePatchEnabled) { + model.serializeAsJsonMergePatch(jsonMergePatchEnabled); + return model; + } + + @Override + public boolean isJsonMergePatch(UpdateTelephonyBindingRequest model) { + return model.jsonMergePatch; + } + }); + } + + /** + * Creates an instance of UpdateTelephonyBindingRequest class. + */ + @Generated + public UpdateTelephonyBindingRequest() { + } + + /** + * Get the status property: The new lifecycle status. + * + * @return the status value. + */ + @Generated + public TelephonyBindingStatus getStatus() { + return this.status; + } + + /** + * Set the status property: The new lifecycle status. + * + * @param status the status value to set. + * @return the UpdateTelephonyBindingRequest object itself. + */ + @Generated + public UpdateTelephonyBindingRequest setStatus(TelephonyBindingStatus status) { + this.status = status; + this.updatedProperties.add("status"); + return this; + } + + /** + * Get the label property: The replacement display label. Omit it to preserve the current value; use null to clear + * it. + * + * @return the label value. + */ + @Generated + public String getLabel() { + return this.label; + } + + /** + * Set the label property: The replacement display label. Omit it to preserve the current value; use null to clear + * it. + * + * @param label the label value to set. + * @return the UpdateTelephonyBindingRequest object itself. + */ + @Generated + public UpdateTelephonyBindingRequest setLabel(String label) { + this.label = label; + this.updatedProperties.add("label"); + return this; + } + + /** + * Get the connection property: The replacement Foundry connection name. This property is valid only for a Teams + * Phone Extension binding; a Twilio binding's connection is immutable. + * + * @return the connection value. + */ + @Generated + public String getConnection() { + return this.connection; + } + + /** + * Set the connection property: The replacement Foundry connection name. This property is valid only for a Teams + * Phone Extension binding; a Twilio binding's connection is immutable. + * + * @param connection the connection value to set. + * @return the UpdateTelephonyBindingRequest object itself. + */ + @Generated + public UpdateTelephonyBindingRequest setConnection(String connection) { + this.connection = connection; + this.updatedProperties.add("connection"); + return this; + } + + /** + * Get the phoneNumber property: The replacement Teams Phone Extension display phone number. Omit it to preserve the + * current value; use null to clear it. This property is valid only for a Teams Phone Extension binding. + * + * @return the phoneNumber value. + */ + @Generated + public String getPhoneNumber() { + return this.phoneNumber; + } + + /** + * Set the phoneNumber property: The replacement Teams Phone Extension display phone number. Omit it to preserve the + * current value; use null to clear it. This property is valid only for a Teams Phone Extension binding. + * + * @param phoneNumber the phoneNumber value to set. + * @return the UpdateTelephonyBindingRequest object itself. + */ + @Generated + public UpdateTelephonyBindingRequest setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + this.updatedProperties.add("phoneNumber"); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + if (jsonMergePatch) { + return toJsonMergePatch(jsonWriter); + } else { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + jsonWriter.writeStringField("label", this.label); + jsonWriter.writeStringField("connection", this.connection); + jsonWriter.writeStringField("phone_number", this.phoneNumber); + return jsonWriter.writeEndObject(); + } + } + + @Generated + private JsonWriter toJsonMergePatch(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + if (updatedProperties.contains("status")) { + if (this.status == null) { + jsonWriter.writeNullField("status"); + } else { + jsonWriter.writeStringField("status", this.status.toString()); + } + } + if (updatedProperties.contains("label")) { + if (this.label == null) { + jsonWriter.writeNullField("label"); + } else { + jsonWriter.writeStringField("label", this.label); + } + } + if (updatedProperties.contains("connection")) { + if (this.connection == null) { + jsonWriter.writeNullField("connection"); + } else { + jsonWriter.writeStringField("connection", this.connection); + } + } + if (updatedProperties.contains("phoneNumber")) { + if (this.phoneNumber == null) { + jsonWriter.writeNullField("phone_number"); + } else { + jsonWriter.writeStringField("phone_number", this.phoneNumber); + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of UpdateTelephonyBindingRequest from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of UpdateTelephonyBindingRequest if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the UpdateTelephonyBindingRequest. + */ + @Generated + public static UpdateTelephonyBindingRequest fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + UpdateTelephonyBindingRequest deserializedUpdateTelephonyBindingRequest + = new UpdateTelephonyBindingRequest(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("status".equals(fieldName)) { + deserializedUpdateTelephonyBindingRequest.status + = TelephonyBindingStatus.fromString(reader.getString()); + } else if ("label".equals(fieldName)) { + deserializedUpdateTelephonyBindingRequest.label = reader.getString(); + } else if ("connection".equals(fieldName)) { + deserializedUpdateTelephonyBindingRequest.connection = reader.getString(); + } else if ("phone_number".equals(fieldName)) { + deserializedUpdateTelephonyBindingRequest.phoneNumber = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedUpdateTelephonyBindingRequest; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioConfig.java new file mode 100644 index 0000000000000..e6009f3b06135 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioConfig.java @@ -0,0 +1,121 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The audio configuration for a voice agent. These values are session defaults and may be overridden when connecting. + */ +@Fluent +public final class VoiceAgentAudioConfig implements JsonSerializable { + + /* + * Input (microphone) audio configuration. + */ + @Generated + private VoiceAgentAudioInputConfig input; + + /* + * Output (agent speech) audio configuration. + */ + @Generated + private VoiceAgentAudioOutputConfig output; + + /** + * Creates an instance of VoiceAgentAudioConfig class. + */ + @Generated + public VoiceAgentAudioConfig() { + } + + /** + * Get the input property: Input (microphone) audio configuration. + * + * @return the input value. + */ + @Generated + public VoiceAgentAudioInputConfig getInput() { + return this.input; + } + + /** + * Set the input property: Input (microphone) audio configuration. + * + * @param input the input value to set. + * @return the VoiceAgentAudioConfig object itself. + */ + @Generated + public VoiceAgentAudioConfig setInput(VoiceAgentAudioInputConfig input) { + this.input = input; + return this; + } + + /** + * Get the output property: Output (agent speech) audio configuration. + * + * @return the output value. + */ + @Generated + public VoiceAgentAudioOutputConfig getOutput() { + return this.output; + } + + /** + * Set the output property: Output (agent speech) audio configuration. + * + * @param output the output value to set. + * @return the VoiceAgentAudioConfig object itself. + */ + @Generated + public VoiceAgentAudioConfig setOutput(VoiceAgentAudioOutputConfig output) { + this.output = output; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("input", this.input); + jsonWriter.writeJsonField("output", this.output); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentAudioConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentAudioConfig if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentAudioConfig. + */ + @Generated + public static VoiceAgentAudioConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentAudioConfig deserializedVoiceAgentAudioConfig = new VoiceAgentAudioConfig(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("input".equals(fieldName)) { + deserializedVoiceAgentAudioConfig.input = VoiceAgentAudioInputConfig.fromJson(reader); + } else if ("output".equals(fieldName)) { + deserializedVoiceAgentAudioConfig.output = VoiceAgentAudioOutputConfig.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentAudioConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfig.java new file mode 100644 index 0000000000000..5d51e485767af --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfig.java @@ -0,0 +1,220 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Input audio configuration for a voice agent. + */ +@Fluent +public final class VoiceAgentAudioInputConfig implements JsonSerializable { + + /* + * The input audio format. + */ + @Generated + private RealtimeAudioFormats format; + + /* + * Input noise reduction. Set to null to disable. + */ + @Generated + private VoiceAgentNoiseReduction noiseReduction; + + /* + * Turn (end-of-speech) detection. Server-side turn detection is enabled by default; set to null to disable it, in + * which case the client must trigger responses manually. + */ + @Generated + private VoiceAgentTurnDetectionConfig turnDetection; + + /* + * Optional server-side echo cancellation settings. + */ + @Generated + private VoiceAgentEchoCancellation echoCancellation; + + /* + * Asynchronous input-audio transcription. Set to null to disable transcription. + */ + @Generated + private VoiceAgentInputTranscription transcription; + + /** + * Creates an instance of VoiceAgentAudioInputConfig class. + */ + @Generated + public VoiceAgentAudioInputConfig() { + } + + /** + * Get the format property: The input audio format. + * + * @return the format value. + */ + @Generated + public RealtimeAudioFormats getFormat() { + return this.format; + } + + /** + * Set the format property: The input audio format. + * + * @param format the format value to set. + * @return the VoiceAgentAudioInputConfig object itself. + */ + @Generated + public VoiceAgentAudioInputConfig setFormat(RealtimeAudioFormats format) { + this.format = format; + return this; + } + + /** + * Get the noiseReduction property: Input noise reduction. Set to null to disable. + * + * @return the noiseReduction value. + */ + @Generated + public VoiceAgentNoiseReduction getNoiseReduction() { + return this.noiseReduction; + } + + /** + * Set the noiseReduction property: Input noise reduction. Set to null to disable. + * + * @param noiseReduction the noiseReduction value to set. + * @return the VoiceAgentAudioInputConfig object itself. + */ + @Generated + public VoiceAgentAudioInputConfig setNoiseReduction(VoiceAgentNoiseReduction noiseReduction) { + this.noiseReduction = noiseReduction; + return this; + } + + /** + * Get the turnDetection property: Turn (end-of-speech) detection. Server-side turn detection is enabled by default; + * set to null to disable it, in which case the client must trigger responses manually. + * + * @return the turnDetection value. + */ + @Generated + public VoiceAgentTurnDetectionConfig getTurnDetection() { + return this.turnDetection; + } + + /** + * Set the turnDetection property: Turn (end-of-speech) detection. Server-side turn detection is enabled by default; + * set to null to disable it, in which case the client must trigger responses manually. + * + * @param turnDetection the turnDetection value to set. + * @return the VoiceAgentAudioInputConfig object itself. + */ + @Generated + public VoiceAgentAudioInputConfig setTurnDetection(VoiceAgentTurnDetectionConfig turnDetection) { + this.turnDetection = turnDetection; + return this; + } + + /** + * Get the echoCancellation property: Optional server-side echo cancellation settings. + * + * @return the echoCancellation value. + */ + @Generated + public VoiceAgentEchoCancellation getEchoCancellation() { + return this.echoCancellation; + } + + /** + * Set the echoCancellation property: Optional server-side echo cancellation settings. + * + * @param echoCancellation the echoCancellation value to set. + * @return the VoiceAgentAudioInputConfig object itself. + */ + @Generated + public VoiceAgentAudioInputConfig setEchoCancellation(VoiceAgentEchoCancellation echoCancellation) { + this.echoCancellation = echoCancellation; + return this; + } + + /** + * Get the transcription property: Asynchronous input-audio transcription. Set to null to disable transcription. + * + * @return the transcription value. + */ + @Generated + public VoiceAgentInputTranscription getTranscription() { + return this.transcription; + } + + /** + * Set the transcription property: Asynchronous input-audio transcription. Set to null to disable transcription. + * + * @param transcription the transcription value to set. + * @return the VoiceAgentAudioInputConfig object itself. + */ + @Generated + public VoiceAgentAudioInputConfig setTranscription(VoiceAgentInputTranscription transcription) { + this.transcription = transcription; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("format", this.format); + jsonWriter.writeJsonField("noise_reduction", this.noiseReduction); + jsonWriter.writeJsonField("turn_detection", this.turnDetection); + jsonWriter.writeJsonField("echo_cancellation", this.echoCancellation); + jsonWriter.writeJsonField("transcription", this.transcription); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentAudioInputConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentAudioInputConfig if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentAudioInputConfig. + */ + @Generated + public static VoiceAgentAudioInputConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentAudioInputConfig deserializedVoiceAgentAudioInputConfig = new VoiceAgentAudioInputConfig(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("format".equals(fieldName)) { + deserializedVoiceAgentAudioInputConfig.format = RealtimeAudioFormats.fromJson(reader); + } else if ("noise_reduction".equals(fieldName)) { + deserializedVoiceAgentAudioInputConfig.noiseReduction = VoiceAgentNoiseReduction.fromJson(reader); + } else if ("turn_detection".equals(fieldName)) { + deserializedVoiceAgentAudioInputConfig.turnDetection + = VoiceAgentTurnDetectionConfig.fromJson(reader); + } else if ("echo_cancellation".equals(fieldName)) { + deserializedVoiceAgentAudioInputConfig.echoCancellation + = VoiceAgentEchoCancellation.fromJson(reader); + } else if ("transcription".equals(fieldName)) { + deserializedVoiceAgentAudioInputConfig.transcription + = VoiceAgentInputTranscription.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentAudioInputConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfigTranscriptionDelay.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfigTranscriptionDelay.java new file mode 100644 index 0000000000000..bbce63e172c73 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfigTranscriptionDelay.java @@ -0,0 +1,71 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for VoiceAgentAudioInputConfigTranscriptionDelay. + */ +public enum VoiceAgentAudioInputConfigTranscriptionDelay { + /** + * Enum value minimal. + */ + MINIMAL("minimal"), + + /** + * Enum value low. + */ + LOW("low"), + + /** + * Enum value medium. + */ + MEDIUM("medium"), + + /** + * Enum value high. + */ + HIGH("high"), + + /** + * Enum value xhigh. + */ + XHIGH("xhigh"); + + /** + * The actual serialized value for a VoiceAgentAudioInputConfigTranscriptionDelay instance. + */ + private final String value; + + VoiceAgentAudioInputConfigTranscriptionDelay(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a VoiceAgentAudioInputConfigTranscriptionDelay instance. + * + * @param value the serialized value to parse. + * @return the parsed VoiceAgentAudioInputConfigTranscriptionDelay object, or null if unable to parse. + */ + public static VoiceAgentAudioInputConfigTranscriptionDelay fromString(String value) { + if (value == null) { + return null; + } + VoiceAgentAudioInputConfigTranscriptionDelay[] items = VoiceAgentAudioInputConfigTranscriptionDelay.values(); + for (VoiceAgentAudioInputConfigTranscriptionDelay item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioOutputConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioOutputConfig.java new file mode 100644 index 0000000000000..10a1019ae6a44 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioOutputConfig.java @@ -0,0 +1,577 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Output audio configuration for a voice agent. + * Provider-specific fields are selected by `voice_type`: + * - `openai`: `voice` and `speed`. + * - `azure-standard`: `voice`, `voice_locale`, `speed`, `voice_temperature`, `custom_lexicon_url`, + * `custom_text_normalization_url`, `prefer_locales`, `style`, `pitch`, and `volume`. + * - `azure-custom`: all `azure-standard` fields except `style`, plus `custom_voice_endpoint_id`. + * - `azure-personal`: all `azure-standard` fields except `style`, plus `personal_voice_model`. + * - `avatar-voice-sync`: all `azure-standard` fields except `voice` and `style`, plus `personal_voice_model`; the voice + * name is derived from the avatar. + * - `azure-realtime-native`: `voice` and `speed`. + * `format` and `output_audio_timestamp_types` apply to every voice type. + */ +@Fluent +public final class VoiceAgentAudioOutputConfig implements JsonSerializable { + + /* + * The output audio format. Applies to every `voice_type` and defaults to 24 kHz PCM. + */ + @Generated + private RealtimeAudioFormats format; + + /* + * The voice name or identifier. Applies to `openai`, `azure-standard`, `azure-custom`, `azure-personal`, and + * `azure-realtime-native`. It does not apply to `avatar-voice-sync`, which derives the voice name from the avatar. + */ + @Generated + private String voice; + + /* + * The voice implementation. + */ + @Generated + private VoiceType voiceType; + + /* + * The enforced BCP-47 output locale. Applies to `azure-standard`, `azure-custom`, `azure-personal`, and + * `avatar-voice-sync`. + */ + @Generated + private String voiceLocale; + + /* + * The numeric output speed multiplier. Applies to all known `voice_type` values and defaults to 1. + */ + @Generated + private Double speed; + + /* + * The voice variation temperature. Applies to `azure-standard`, `azure-custom`, `azure-personal`, and + * `avatar-voice-sync`. + */ + @Generated + private Double voiceTemperature; + + /* + * The URL of a custom pronunciation lexicon. Applies to `azure-standard`, `azure-custom`, `azure-personal`, and + * `avatar-voice-sync`. + */ + @Generated + private String customLexiconUrl; + + /* + * The URL of a custom text-normalization configuration. Applies to `azure-standard`, `azure-custom`, + * `azure-personal`, and `avatar-voice-sync`. + */ + @Generated + private String customTextNormalizationUrl; + + /* + * Preferred BCP-47 locales for multilingual synthesis. Applies to `azure-standard`, `azure-custom`, + * `azure-personal`, and `avatar-voice-sync`. + */ + @Generated + private List preferLocales; + + /* + * The voice speaking style. Applies only when `voice_type` is `azure-standard`. + */ + @Generated + private String style; + + /* + * The voice pitch adjustment. Applies to `azure-standard`, `azure-custom`, `azure-personal`, and + * `avatar-voice-sync`. + */ + @Generated + private String pitch; + + /* + * The voice volume adjustment. Applies to `azure-standard`, `azure-custom`, `azure-personal`, and + * `avatar-voice-sync`. + */ + @Generated + private String volume; + + /* + * The Azure custom-voice deployment endpoint identifier. Applies only when `voice_type` is `azure-custom`. + */ + @Generated + private String customVoiceEndpointId; + + /* + * The Azure personal or avatar voice model. Applies only when `voice_type` is `azure-personal` or + * `avatar-voice-sync`. + */ + @Generated + private String personalVoiceModel; + + /* + * Timestamp kinds to include with output audio. Applies to every `voice_type`. + */ + @Generated + private List outputAudioTimestampTypes; + + /** + * Creates an instance of VoiceAgentAudioOutputConfig class. + */ + @Generated + public VoiceAgentAudioOutputConfig() { + } + + /** + * Get the format property: The output audio format. Applies to every `voice_type` and defaults to 24 kHz PCM. + * + * @return the format value. + */ + @Generated + public RealtimeAudioFormats getFormat() { + return this.format; + } + + /** + * Set the format property: The output audio format. Applies to every `voice_type` and defaults to 24 kHz PCM. + * + * @param format the format value to set. + * @return the VoiceAgentAudioOutputConfig object itself. + */ + @Generated + public VoiceAgentAudioOutputConfig setFormat(RealtimeAudioFormats format) { + this.format = format; + return this; + } + + /** + * Get the voice property: The voice name or identifier. Applies to `openai`, `azure-standard`, `azure-custom`, + * `azure-personal`, and `azure-realtime-native`. It does not apply to `avatar-voice-sync`, which derives the voice + * name from the avatar. + * + * @return the voice value. + */ + @Generated + public String getVoice() { + return this.voice; + } + + /** + * Set the voice property: The voice name or identifier. Applies to `openai`, `azure-standard`, `azure-custom`, + * `azure-personal`, and `azure-realtime-native`. It does not apply to `avatar-voice-sync`, which derives the voice + * name from the avatar. + * + * @param voice the voice value to set. + * @return the VoiceAgentAudioOutputConfig object itself. + */ + @Generated + public VoiceAgentAudioOutputConfig setVoice(String voice) { + this.voice = voice; + return this; + } + + /** + * Get the voiceType property: The voice implementation. + * + * @return the voiceType value. + */ + @Generated + public VoiceType getVoiceType() { + return this.voiceType; + } + + /** + * Set the voiceType property: The voice implementation. + * + * @param voiceType the voiceType value to set. + * @return the VoiceAgentAudioOutputConfig object itself. + */ + @Generated + public VoiceAgentAudioOutputConfig setVoiceType(VoiceType voiceType) { + this.voiceType = voiceType; + return this; + } + + /** + * Get the voiceLocale property: The enforced BCP-47 output locale. Applies to `azure-standard`, `azure-custom`, + * `azure-personal`, and `avatar-voice-sync`. + * + * @return the voiceLocale value. + */ + @Generated + public String getVoiceLocale() { + return this.voiceLocale; + } + + /** + * Set the voiceLocale property: The enforced BCP-47 output locale. Applies to `azure-standard`, `azure-custom`, + * `azure-personal`, and `avatar-voice-sync`. + * + * @param voiceLocale the voiceLocale value to set. + * @return the VoiceAgentAudioOutputConfig object itself. + */ + @Generated + public VoiceAgentAudioOutputConfig setVoiceLocale(String voiceLocale) { + this.voiceLocale = voiceLocale; + return this; + } + + /** + * Get the speed property: The numeric output speed multiplier. Applies to all known `voice_type` values and + * defaults to 1. + * + * @return the speed value. + */ + @Generated + public Double getSpeed() { + return this.speed; + } + + /** + * Set the speed property: The numeric output speed multiplier. Applies to all known `voice_type` values and + * defaults to 1. + * + * @param speed the speed value to set. + * @return the VoiceAgentAudioOutputConfig object itself. + */ + @Generated + public VoiceAgentAudioOutputConfig setSpeed(Double speed) { + this.speed = speed; + return this; + } + + /** + * Get the voiceTemperature property: The voice variation temperature. Applies to `azure-standard`, `azure-custom`, + * `azure-personal`, and `avatar-voice-sync`. + * + * @return the voiceTemperature value. + */ + @Generated + public Double getVoiceTemperature() { + return this.voiceTemperature; + } + + /** + * Set the voiceTemperature property: The voice variation temperature. Applies to `azure-standard`, `azure-custom`, + * `azure-personal`, and `avatar-voice-sync`. + * + * @param voiceTemperature the voiceTemperature value to set. + * @return the VoiceAgentAudioOutputConfig object itself. + */ + @Generated + public VoiceAgentAudioOutputConfig setVoiceTemperature(Double voiceTemperature) { + this.voiceTemperature = voiceTemperature; + return this; + } + + /** + * Get the customLexiconUrl property: The URL of a custom pronunciation lexicon. Applies to `azure-standard`, + * `azure-custom`, `azure-personal`, and `avatar-voice-sync`. + * + * @return the customLexiconUrl value. + */ + @Generated + public String getCustomLexiconUrl() { + return this.customLexiconUrl; + } + + /** + * Set the customLexiconUrl property: The URL of a custom pronunciation lexicon. Applies to `azure-standard`, + * `azure-custom`, `azure-personal`, and `avatar-voice-sync`. + * + * @param customLexiconUrl the customLexiconUrl value to set. + * @return the VoiceAgentAudioOutputConfig object itself. + */ + @Generated + public VoiceAgentAudioOutputConfig setCustomLexiconUrl(String customLexiconUrl) { + this.customLexiconUrl = customLexiconUrl; + return this; + } + + /** + * Get the customTextNormalizationUrl property: The URL of a custom text-normalization configuration. Applies to + * `azure-standard`, `azure-custom`, `azure-personal`, and `avatar-voice-sync`. + * + * @return the customTextNormalizationUrl value. + */ + @Generated + public String getCustomTextNormalizationUrl() { + return this.customTextNormalizationUrl; + } + + /** + * Set the customTextNormalizationUrl property: The URL of a custom text-normalization configuration. Applies to + * `azure-standard`, `azure-custom`, `azure-personal`, and `avatar-voice-sync`. + * + * @param customTextNormalizationUrl the customTextNormalizationUrl value to set. + * @return the VoiceAgentAudioOutputConfig object itself. + */ + @Generated + public VoiceAgentAudioOutputConfig setCustomTextNormalizationUrl(String customTextNormalizationUrl) { + this.customTextNormalizationUrl = customTextNormalizationUrl; + return this; + } + + /** + * Get the preferLocales property: Preferred BCP-47 locales for multilingual synthesis. Applies to `azure-standard`, + * `azure-custom`, `azure-personal`, and `avatar-voice-sync`. + * + * @return the preferLocales value. + */ + @Generated + public List getPreferLocales() { + return this.preferLocales; + } + + /** + * Set the preferLocales property: Preferred BCP-47 locales for multilingual synthesis. Applies to `azure-standard`, + * `azure-custom`, `azure-personal`, and `avatar-voice-sync`. + * + * @param preferLocales the preferLocales value to set. + * @return the VoiceAgentAudioOutputConfig object itself. + */ + @Generated + public VoiceAgentAudioOutputConfig setPreferLocales(List preferLocales) { + this.preferLocales = preferLocales; + return this; + } + + /** + * Get the style property: The voice speaking style. Applies only when `voice_type` is `azure-standard`. + * + * @return the style value. + */ + @Generated + public String getStyle() { + return this.style; + } + + /** + * Set the style property: The voice speaking style. Applies only when `voice_type` is `azure-standard`. + * + * @param style the style value to set. + * @return the VoiceAgentAudioOutputConfig object itself. + */ + @Generated + public VoiceAgentAudioOutputConfig setStyle(String style) { + this.style = style; + return this; + } + + /** + * Get the pitch property: The voice pitch adjustment. Applies to `azure-standard`, `azure-custom`, + * `azure-personal`, and `avatar-voice-sync`. + * + * @return the pitch value. + */ + @Generated + public String getPitch() { + return this.pitch; + } + + /** + * Set the pitch property: The voice pitch adjustment. Applies to `azure-standard`, `azure-custom`, + * `azure-personal`, and `avatar-voice-sync`. + * + * @param pitch the pitch value to set. + * @return the VoiceAgentAudioOutputConfig object itself. + */ + @Generated + public VoiceAgentAudioOutputConfig setPitch(String pitch) { + this.pitch = pitch; + return this; + } + + /** + * Get the volume property: The voice volume adjustment. Applies to `azure-standard`, `azure-custom`, + * `azure-personal`, and `avatar-voice-sync`. + * + * @return the volume value. + */ + @Generated + public String getVolume() { + return this.volume; + } + + /** + * Set the volume property: The voice volume adjustment. Applies to `azure-standard`, `azure-custom`, + * `azure-personal`, and `avatar-voice-sync`. + * + * @param volume the volume value to set. + * @return the VoiceAgentAudioOutputConfig object itself. + */ + @Generated + public VoiceAgentAudioOutputConfig setVolume(String volume) { + this.volume = volume; + return this; + } + + /** + * Get the customVoiceEndpointId property: The Azure custom-voice deployment endpoint identifier. Applies only when + * `voice_type` is `azure-custom`. + * + * @return the customVoiceEndpointId value. + */ + @Generated + public String getCustomVoiceEndpointId() { + return this.customVoiceEndpointId; + } + + /** + * Set the customVoiceEndpointId property: The Azure custom-voice deployment endpoint identifier. Applies only when + * `voice_type` is `azure-custom`. + * + * @param customVoiceEndpointId the customVoiceEndpointId value to set. + * @return the VoiceAgentAudioOutputConfig object itself. + */ + @Generated + public VoiceAgentAudioOutputConfig setCustomVoiceEndpointId(String customVoiceEndpointId) { + this.customVoiceEndpointId = customVoiceEndpointId; + return this; + } + + /** + * Get the personalVoiceModel property: The Azure personal or avatar voice model. Applies only when `voice_type` is + * `azure-personal` or `avatar-voice-sync`. + * + * @return the personalVoiceModel value. + */ + @Generated + public String getPersonalVoiceModel() { + return this.personalVoiceModel; + } + + /** + * Set the personalVoiceModel property: The Azure personal or avatar voice model. Applies only when `voice_type` is + * `azure-personal` or `avatar-voice-sync`. + * + * @param personalVoiceModel the personalVoiceModel value to set. + * @return the VoiceAgentAudioOutputConfig object itself. + */ + @Generated + public VoiceAgentAudioOutputConfig setPersonalVoiceModel(String personalVoiceModel) { + this.personalVoiceModel = personalVoiceModel; + return this; + } + + /** + * Get the outputAudioTimestampTypes property: Timestamp kinds to include with output audio. Applies to every + * `voice_type`. + * + * @return the outputAudioTimestampTypes value. + */ + @Generated + public List getOutputAudioTimestampTypes() { + return this.outputAudioTimestampTypes; + } + + /** + * Set the outputAudioTimestampTypes property: Timestamp kinds to include with output audio. Applies to every + * `voice_type`. + * + * @param outputAudioTimestampTypes the outputAudioTimestampTypes value to set. + * @return the VoiceAgentAudioOutputConfig object itself. + */ + @Generated + public VoiceAgentAudioOutputConfig + setOutputAudioTimestampTypes(List outputAudioTimestampTypes) { + this.outputAudioTimestampTypes = outputAudioTimestampTypes; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("format", this.format); + jsonWriter.writeStringField("voice", this.voice); + jsonWriter.writeStringField("voice_type", this.voiceType == null ? null : this.voiceType.toString()); + jsonWriter.writeStringField("voice_locale", this.voiceLocale); + jsonWriter.writeNumberField("speed", this.speed); + jsonWriter.writeNumberField("voice_temperature", this.voiceTemperature); + jsonWriter.writeStringField("custom_lexicon_url", this.customLexiconUrl); + jsonWriter.writeStringField("custom_text_normalization_url", this.customTextNormalizationUrl); + jsonWriter.writeArrayField("prefer_locales", this.preferLocales, + (writer, element) -> writer.writeString(element)); + jsonWriter.writeStringField("style", this.style); + jsonWriter.writeStringField("pitch", this.pitch); + jsonWriter.writeStringField("volume", this.volume); + jsonWriter.writeStringField("custom_voice_endpoint_id", this.customVoiceEndpointId); + jsonWriter.writeStringField("personal_voice_model", this.personalVoiceModel); + jsonWriter.writeArrayField("output_audio_timestamp_types", this.outputAudioTimestampTypes, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentAudioOutputConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentAudioOutputConfig if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentAudioOutputConfig. + */ + @Generated + public static VoiceAgentAudioOutputConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentAudioOutputConfig deserializedVoiceAgentAudioOutputConfig = new VoiceAgentAudioOutputConfig(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("format".equals(fieldName)) { + deserializedVoiceAgentAudioOutputConfig.format = RealtimeAudioFormats.fromJson(reader); + } else if ("voice".equals(fieldName)) { + deserializedVoiceAgentAudioOutputConfig.voice = reader.getString(); + } else if ("voice_type".equals(fieldName)) { + deserializedVoiceAgentAudioOutputConfig.voiceType = VoiceType.fromString(reader.getString()); + } else if ("voice_locale".equals(fieldName)) { + deserializedVoiceAgentAudioOutputConfig.voiceLocale = reader.getString(); + } else if ("speed".equals(fieldName)) { + deserializedVoiceAgentAudioOutputConfig.speed = reader.getNullable(JsonReader::getDouble); + } else if ("voice_temperature".equals(fieldName)) { + deserializedVoiceAgentAudioOutputConfig.voiceTemperature + = reader.getNullable(JsonReader::getDouble); + } else if ("custom_lexicon_url".equals(fieldName)) { + deserializedVoiceAgentAudioOutputConfig.customLexiconUrl = reader.getString(); + } else if ("custom_text_normalization_url".equals(fieldName)) { + deserializedVoiceAgentAudioOutputConfig.customTextNormalizationUrl = reader.getString(); + } else if ("prefer_locales".equals(fieldName)) { + List preferLocales = reader.readArray(reader1 -> reader1.getString()); + deserializedVoiceAgentAudioOutputConfig.preferLocales = preferLocales; + } else if ("style".equals(fieldName)) { + deserializedVoiceAgentAudioOutputConfig.style = reader.getString(); + } else if ("pitch".equals(fieldName)) { + deserializedVoiceAgentAudioOutputConfig.pitch = reader.getString(); + } else if ("volume".equals(fieldName)) { + deserializedVoiceAgentAudioOutputConfig.volume = reader.getString(); + } else if ("custom_voice_endpoint_id".equals(fieldName)) { + deserializedVoiceAgentAudioOutputConfig.customVoiceEndpointId = reader.getString(); + } else if ("personal_voice_model".equals(fieldName)) { + deserializedVoiceAgentAudioOutputConfig.personalVoiceModel = reader.getString(); + } else if ("output_audio_timestamp_types".equals(fieldName)) { + List outputAudioTimestampTypes + = reader.readArray(reader1 -> VoiceAgentAudioTimestampType.fromString(reader1.getString())); + deserializedVoiceAgentAudioOutputConfig.outputAudioTimestampTypes = outputAudioTimestampTypes; + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentAudioOutputConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioTimestampType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioTimestampType.java new file mode 100644 index 0000000000000..a86d856b8bceb --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioTimestampType.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * An output-audio timestamp kind supported by a voice agent. + */ +public enum VoiceAgentAudioTimestampType { + /** + * Word-level timestamps. + */ + WORD("word"); + + /** + * The actual serialized value for a VoiceAgentAudioTimestampType instance. + */ + private final String value; + + VoiceAgentAudioTimestampType(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a VoiceAgentAudioTimestampType instance. + * + * @param value the serialized value to parse. + * @return the parsed VoiceAgentAudioTimestampType object, or null if unable to parse. + */ + public static VoiceAgentAudioTimestampType fromString(String value) { + if (value == null) { + return null; + } + VoiceAgentAudioTimestampType[] items = VoiceAgentAudioTimestampType.values(); + for (VoiceAgentAudioTimestampType item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarConfig.java new file mode 100644 index 0000000000000..91a34177f4b75 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarConfig.java @@ -0,0 +1,337 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Avatar configuration for a voice agent. These values are session defaults and may be overridden when connecting. + */ +@Fluent +public class VoiceAgentAvatarConfig implements JsonSerializable { + + /* + * The avatar type. + */ + @Generated + private final VoiceAgentAvatarType type; + + /* + * The avatar character identifier, e.g. 'lisa'. + */ + @Generated + private final String character; + + /* + * The avatar style, e.g. 'casual-sitting'. + */ + @Generated + private String style; + + /* + * Whether the avatar is a customer-customized avatar. Defaults to false. + */ + @Generated + private Boolean customized; + + /* + * The transport used to deliver the avatar video stream. + */ + @Generated + private VoiceAgentAvatarOutputProtocol outputProtocol; + + /* + * The avatar model identifier. + */ + @Generated + private String model; + + /* + * Avatar video encoder and presentation settings. + */ + @Generated + private VoiceAgentAvatarVideoParams video; + + /* + * Avatar placement and motion settings. + */ + @Generated + private VoiceAgentAvatarScene scene; + + /* + * Whether audit audio is emitted with avatar output. Defaults to false. + */ + @Generated + private Boolean outputAuditAudio; + + /** + * Creates an instance of VoiceAgentAvatarConfig class. + * + * @param type the type value to set. + * @param character the character value to set. + */ + @Generated + public VoiceAgentAvatarConfig(VoiceAgentAvatarType type, String character) { + this.type = type; + this.character = character; + } + + /** + * Get the type property: The avatar type. + * + * @return the type value. + */ + @Generated + public VoiceAgentAvatarType getType() { + return this.type; + } + + /** + * Get the character property: The avatar character identifier, e.g. 'lisa'. + * + * @return the character value. + */ + @Generated + public String getCharacter() { + return this.character; + } + + /** + * Get the style property: The avatar style, e.g. 'casual-sitting'. + * + * @return the style value. + */ + @Generated + public String getStyle() { + return this.style; + } + + /** + * Set the style property: The avatar style, e.g. 'casual-sitting'. + * + * @param style the style value to set. + * @return the VoiceAgentAvatarConfig object itself. + */ + @Generated + public VoiceAgentAvatarConfig setStyle(String style) { + this.style = style; + return this; + } + + /** + * Get the customized property: Whether the avatar is a customer-customized avatar. Defaults to false. + * + * @return the customized value. + */ + @Generated + public Boolean isCustomized() { + return this.customized; + } + + /** + * Set the customized property: Whether the avatar is a customer-customized avatar. Defaults to false. + * + * @param customized the customized value to set. + * @return the VoiceAgentAvatarConfig object itself. + */ + @Generated + public VoiceAgentAvatarConfig setCustomized(Boolean customized) { + this.customized = customized; + return this; + } + + /** + * Get the outputProtocol property: The transport used to deliver the avatar video stream. + * + * @return the outputProtocol value. + */ + @Generated + public VoiceAgentAvatarOutputProtocol getOutputProtocol() { + return this.outputProtocol; + } + + /** + * Set the outputProtocol property: The transport used to deliver the avatar video stream. + * + * @param outputProtocol the outputProtocol value to set. + * @return the VoiceAgentAvatarConfig object itself. + */ + @Generated + public VoiceAgentAvatarConfig setOutputProtocol(VoiceAgentAvatarOutputProtocol outputProtocol) { + this.outputProtocol = outputProtocol; + return this; + } + + /** + * Get the model property: The avatar model identifier. + * + * @return the model value. + */ + @Generated + public String getModel() { + return this.model; + } + + /** + * Set the model property: The avatar model identifier. + * + * @param model the model value to set. + * @return the VoiceAgentAvatarConfig object itself. + */ + @Generated + public VoiceAgentAvatarConfig setModel(String model) { + this.model = model; + return this; + } + + /** + * Get the video property: Avatar video encoder and presentation settings. + * + * @return the video value. + */ + @Generated + public VoiceAgentAvatarVideoParams getVideo() { + return this.video; + } + + /** + * Set the video property: Avatar video encoder and presentation settings. + * + * @param video the video value to set. + * @return the VoiceAgentAvatarConfig object itself. + */ + @Generated + public VoiceAgentAvatarConfig setVideo(VoiceAgentAvatarVideoParams video) { + this.video = video; + return this; + } + + /** + * Get the scene property: Avatar placement and motion settings. + * + * @return the scene value. + */ + @Generated + public VoiceAgentAvatarScene getScene() { + return this.scene; + } + + /** + * Set the scene property: Avatar placement and motion settings. + * + * @param scene the scene value to set. + * @return the VoiceAgentAvatarConfig object itself. + */ + @Generated + public VoiceAgentAvatarConfig setScene(VoiceAgentAvatarScene scene) { + this.scene = scene; + return this; + } + + /** + * Get the outputAuditAudio property: Whether audit audio is emitted with avatar output. Defaults to false. + * + * @return the outputAuditAudio value. + */ + @Generated + public Boolean isOutputAuditAudio() { + return this.outputAuditAudio; + } + + /** + * Set the outputAuditAudio property: Whether audit audio is emitted with avatar output. Defaults to false. + * + * @param outputAuditAudio the outputAuditAudio value to set. + * @return the VoiceAgentAvatarConfig object itself. + */ + @Generated + public VoiceAgentAvatarConfig setOutputAuditAudio(Boolean outputAuditAudio) { + this.outputAuditAudio = outputAuditAudio; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("character", this.character); + jsonWriter.writeStringField("style", this.style); + jsonWriter.writeBooleanField("customized", this.customized); + jsonWriter.writeStringField("output_protocol", + this.outputProtocol == null ? null : this.outputProtocol.toString()); + jsonWriter.writeStringField("model", this.model); + jsonWriter.writeJsonField("video", this.video); + jsonWriter.writeJsonField("scene", this.scene); + jsonWriter.writeBooleanField("output_audit_audio", this.outputAuditAudio); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentAvatarConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentAvatarConfig if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentAvatarConfig. + */ + @Generated + public static VoiceAgentAvatarConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentAvatarType type = null; + String character = null; + String style = null; + Boolean customized = null; + VoiceAgentAvatarOutputProtocol outputProtocol = null; + String model = null; + VoiceAgentAvatarVideoParams video = null; + VoiceAgentAvatarScene scene = null; + Boolean outputAuditAudio = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + type = VoiceAgentAvatarType.fromString(reader.getString()); + } else if ("character".equals(fieldName)) { + character = reader.getString(); + } else if ("style".equals(fieldName)) { + style = reader.getString(); + } else if ("customized".equals(fieldName)) { + customized = reader.getNullable(JsonReader::getBoolean); + } else if ("output_protocol".equals(fieldName)) { + outputProtocol = VoiceAgentAvatarOutputProtocol.fromString(reader.getString()); + } else if ("model".equals(fieldName)) { + model = reader.getString(); + } else if ("video".equals(fieldName)) { + video = VoiceAgentAvatarVideoParams.fromJson(reader); + } else if ("scene".equals(fieldName)) { + scene = VoiceAgentAvatarScene.fromJson(reader); + } else if ("output_audit_audio".equals(fieldName)) { + outputAuditAudio = reader.getNullable(JsonReader::getBoolean); + } else { + reader.skipChildren(); + } + } + VoiceAgentAvatarConfig deserializedVoiceAgentAvatarConfig = new VoiceAgentAvatarConfig(type, character); + deserializedVoiceAgentAvatarConfig.style = style; + deserializedVoiceAgentAvatarConfig.customized = customized; + deserializedVoiceAgentAvatarConfig.outputProtocol = outputProtocol; + deserializedVoiceAgentAvatarConfig.model = model; + deserializedVoiceAgentAvatarConfig.video = video; + deserializedVoiceAgentAvatarConfig.scene = scene; + deserializedVoiceAgentAvatarConfig.outputAuditAudio = outputAuditAudio; + return deserializedVoiceAgentAvatarConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarOutputProtocol.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarOutputProtocol.java new file mode 100644 index 0000000000000..aa204107b586a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarOutputProtocol.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The transport used to deliver the avatar video stream. + */ +public final class VoiceAgentAvatarOutputProtocol extends ExpandableStringEnum { + + /** + * Static value webrtc for VoiceAgentAvatarOutputProtocol. + */ + @Generated + public static final VoiceAgentAvatarOutputProtocol WEBRTC = fromString("webrtc"); + + /** + * Static value websocket for VoiceAgentAvatarOutputProtocol. + */ + @Generated + public static final VoiceAgentAvatarOutputProtocol WEBSOCKET = fromString("websocket"); + + /** + * Creates a new instance of VoiceAgentAvatarOutputProtocol value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAgentAvatarOutputProtocol() { + } + + /** + * Creates or finds a VoiceAgentAvatarOutputProtocol from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAgentAvatarOutputProtocol. + */ + @Generated + public static VoiceAgentAvatarOutputProtocol fromString(String name) { + return fromString(name, VoiceAgentAvatarOutputProtocol.class); + } + + /** + * Gets known VoiceAgentAvatarOutputProtocol values. + * + * @return known VoiceAgentAvatarOutputProtocol values. + */ + @Generated + public static Collection values() { + return values(VoiceAgentAvatarOutputProtocol.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarScene.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarScene.java new file mode 100644 index 0000000000000..cdc16ba863d1e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarScene.java @@ -0,0 +1,276 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Avatar placement and motion settings. + */ +@Fluent +public final class VoiceAgentAvatarScene implements JsonSerializable { + + /* + * The zoom property. + */ + @Generated + private Double zoom; + + /* + * The position_x property. + */ + @Generated + private Double positionX; + + /* + * The position_y property. + */ + @Generated + private Double positionY; + + /* + * The rotation_x property. + */ + @Generated + private Double rotationX; + + /* + * The rotation_y property. + */ + @Generated + private Double rotationY; + + /* + * The rotation_z property. + */ + @Generated + private Double rotationZ; + + /* + * The amplitude property. + */ + @Generated + private Double amplitude; + + /** + * Creates an instance of VoiceAgentAvatarScene class. + */ + @Generated + public VoiceAgentAvatarScene() { + } + + /** + * Get the zoom property: The zoom property. + * + * @return the zoom value. + */ + @Generated + public Double getZoom() { + return this.zoom; + } + + /** + * Set the zoom property: The zoom property. + * + * @param zoom the zoom value to set. + * @return the VoiceAgentAvatarScene object itself. + */ + @Generated + public VoiceAgentAvatarScene setZoom(Double zoom) { + this.zoom = zoom; + return this; + } + + /** + * Get the positionX property: The position_x property. + * + * @return the positionX value. + */ + @Generated + public Double getPositionX() { + return this.positionX; + } + + /** + * Set the positionX property: The position_x property. + * + * @param positionX the positionX value to set. + * @return the VoiceAgentAvatarScene object itself. + */ + @Generated + public VoiceAgentAvatarScene setPositionX(Double positionX) { + this.positionX = positionX; + return this; + } + + /** + * Get the positionY property: The position_y property. + * + * @return the positionY value. + */ + @Generated + public Double getPositionY() { + return this.positionY; + } + + /** + * Set the positionY property: The position_y property. + * + * @param positionY the positionY value to set. + * @return the VoiceAgentAvatarScene object itself. + */ + @Generated + public VoiceAgentAvatarScene setPositionY(Double positionY) { + this.positionY = positionY; + return this; + } + + /** + * Get the rotationX property: The rotation_x property. + * + * @return the rotationX value. + */ + @Generated + public Double getRotationX() { + return this.rotationX; + } + + /** + * Set the rotationX property: The rotation_x property. + * + * @param rotationX the rotationX value to set. + * @return the VoiceAgentAvatarScene object itself. + */ + @Generated + public VoiceAgentAvatarScene setRotationX(Double rotationX) { + this.rotationX = rotationX; + return this; + } + + /** + * Get the rotationY property: The rotation_y property. + * + * @return the rotationY value. + */ + @Generated + public Double getRotationY() { + return this.rotationY; + } + + /** + * Set the rotationY property: The rotation_y property. + * + * @param rotationY the rotationY value to set. + * @return the VoiceAgentAvatarScene object itself. + */ + @Generated + public VoiceAgentAvatarScene setRotationY(Double rotationY) { + this.rotationY = rotationY; + return this; + } + + /** + * Get the rotationZ property: The rotation_z property. + * + * @return the rotationZ value. + */ + @Generated + public Double getRotationZ() { + return this.rotationZ; + } + + /** + * Set the rotationZ property: The rotation_z property. + * + * @param rotationZ the rotationZ value to set. + * @return the VoiceAgentAvatarScene object itself. + */ + @Generated + public VoiceAgentAvatarScene setRotationZ(Double rotationZ) { + this.rotationZ = rotationZ; + return this; + } + + /** + * Get the amplitude property: The amplitude property. + * + * @return the amplitude value. + */ + @Generated + public Double getAmplitude() { + return this.amplitude; + } + + /** + * Set the amplitude property: The amplitude property. + * + * @param amplitude the amplitude value to set. + * @return the VoiceAgentAvatarScene object itself. + */ + @Generated + public VoiceAgentAvatarScene setAmplitude(Double amplitude) { + this.amplitude = amplitude; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeNumberField("zoom", this.zoom); + jsonWriter.writeNumberField("position_x", this.positionX); + jsonWriter.writeNumberField("position_y", this.positionY); + jsonWriter.writeNumberField("rotation_x", this.rotationX); + jsonWriter.writeNumberField("rotation_y", this.rotationY); + jsonWriter.writeNumberField("rotation_z", this.rotationZ); + jsonWriter.writeNumberField("amplitude", this.amplitude); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentAvatarScene from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentAvatarScene if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentAvatarScene. + */ + @Generated + public static VoiceAgentAvatarScene fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentAvatarScene deserializedVoiceAgentAvatarScene = new VoiceAgentAvatarScene(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("zoom".equals(fieldName)) { + deserializedVoiceAgentAvatarScene.zoom = reader.getNullable(JsonReader::getDouble); + } else if ("position_x".equals(fieldName)) { + deserializedVoiceAgentAvatarScene.positionX = reader.getNullable(JsonReader::getDouble); + } else if ("position_y".equals(fieldName)) { + deserializedVoiceAgentAvatarScene.positionY = reader.getNullable(JsonReader::getDouble); + } else if ("rotation_x".equals(fieldName)) { + deserializedVoiceAgentAvatarScene.rotationX = reader.getNullable(JsonReader::getDouble); + } else if ("rotation_y".equals(fieldName)) { + deserializedVoiceAgentAvatarScene.rotationY = reader.getNullable(JsonReader::getDouble); + } else if ("rotation_z".equals(fieldName)) { + deserializedVoiceAgentAvatarScene.rotationZ = reader.getNullable(JsonReader::getDouble); + } else if ("amplitude".equals(fieldName)) { + deserializedVoiceAgentAvatarScene.amplitude = reader.getNullable(JsonReader::getDouble); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentAvatarScene; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarType.java new file mode 100644 index 0000000000000..192f3b8d5ba1a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarType.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The avatar type. + */ +public final class VoiceAgentAvatarType extends ExpandableStringEnum { + + /** + * Static value video_avatar for VoiceAgentAvatarType. + */ + @Generated + public static final VoiceAgentAvatarType VIDEO_AVATAR = fromString("video_avatar"); + + /** + * Static value photo_avatar for VoiceAgentAvatarType. + */ + @Generated + public static final VoiceAgentAvatarType PHOTO_AVATAR = fromString("photo_avatar"); + + /** + * Creates a new instance of VoiceAgentAvatarType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAgentAvatarType() { + } + + /** + * Creates or finds a VoiceAgentAvatarType from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAgentAvatarType. + */ + @Generated + public static VoiceAgentAvatarType fromString(String name) { + return fromString(name, VoiceAgentAvatarType.class); + } + + /** + * Gets known VoiceAgentAvatarType values. + * + * @return known VoiceAgentAvatarType values. + */ + @Generated + public static Collection values() { + return values(VoiceAgentAvatarType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoBackground.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoBackground.java new file mode 100644 index 0000000000000..73cadd0e653d0 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoBackground.java @@ -0,0 +1,122 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The avatar video background. + */ +@Fluent +public final class VoiceAgentAvatarVideoBackground implements JsonSerializable { + + /* + * The image_url property. + */ + @Generated + private String imageUrl; + + /* + * The color property. + */ + @Generated + private String color; + + /** + * Creates an instance of VoiceAgentAvatarVideoBackground class. + */ + @Generated + public VoiceAgentAvatarVideoBackground() { + } + + /** + * Get the imageUrl property: The image_url property. + * + * @return the imageUrl value. + */ + @Generated + public String getImageUrl() { + return this.imageUrl; + } + + /** + * Set the imageUrl property: The image_url property. + * + * @param imageUrl the imageUrl value to set. + * @return the VoiceAgentAvatarVideoBackground object itself. + */ + @Generated + public VoiceAgentAvatarVideoBackground setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + return this; + } + + /** + * Get the color property: The color property. + * + * @return the color value. + */ + @Generated + public String getColor() { + return this.color; + } + + /** + * Set the color property: The color property. + * + * @param color the color value to set. + * @return the VoiceAgentAvatarVideoBackground object itself. + */ + @Generated + public VoiceAgentAvatarVideoBackground setColor(String color) { + this.color = color; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("image_url", this.imageUrl); + jsonWriter.writeStringField("color", this.color); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentAvatarVideoBackground from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentAvatarVideoBackground if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentAvatarVideoBackground. + */ + @Generated + public static VoiceAgentAvatarVideoBackground fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentAvatarVideoBackground deserializedVoiceAgentAvatarVideoBackground + = new VoiceAgentAvatarVideoBackground(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("image_url".equals(fieldName)) { + deserializedVoiceAgentAvatarVideoBackground.imageUrl = reader.getString(); + } else if ("color".equals(fieldName)) { + deserializedVoiceAgentAvatarVideoBackground.color = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentAvatarVideoBackground; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoCrop.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoCrop.java new file mode 100644 index 0000000000000..e12a3e7b745d4 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoCrop.java @@ -0,0 +1,105 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * The rectangular crop applied to avatar video. + */ +@Immutable +public final class VoiceAgentAvatarVideoCrop implements JsonSerializable { + + /* + * The bottom_right property. + */ + @Generated + private final List bottomRight; + + /* + * The top_left property. + */ + @Generated + private final List topLeft; + + /** + * Creates an instance of VoiceAgentAvatarVideoCrop class. + * + * @param bottomRight the bottomRight value to set. + * @param topLeft the topLeft value to set. + */ + @Generated + public VoiceAgentAvatarVideoCrop(List bottomRight, List topLeft) { + this.bottomRight = bottomRight; + this.topLeft = topLeft; + } + + /** + * Get the bottomRight property: The bottom_right property. + * + * @return the bottomRight value. + */ + @Generated + public List getBottomRight() { + return this.bottomRight; + } + + /** + * Get the topLeft property: The top_left property. + * + * @return the topLeft value. + */ + @Generated + public List getTopLeft() { + return this.topLeft; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("bottom_right", this.bottomRight, (writer, element) -> writer.writeInt(element)); + jsonWriter.writeArrayField("top_left", this.topLeft, (writer, element) -> writer.writeInt(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentAvatarVideoCrop from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentAvatarVideoCrop if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentAvatarVideoCrop. + */ + @Generated + public static VoiceAgentAvatarVideoCrop fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + List bottomRight = null; + List topLeft = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("bottom_right".equals(fieldName)) { + bottomRight = reader.readArray(reader1 -> reader1.getInt()); + } else if ("top_left".equals(fieldName)) { + topLeft = reader.readArray(reader1 -> reader1.getInt()); + } else { + reader.skipChildren(); + } + } + return new VoiceAgentAvatarVideoCrop(bottomRight, topLeft); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoParams.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoParams.java new file mode 100644 index 0000000000000..97901584371ad --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoParams.java @@ -0,0 +1,216 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Avatar video encoder and presentation settings. + */ +@Fluent +public final class VoiceAgentAvatarVideoParams implements JsonSerializable { + + /* + * The target video bitrate in bits per second. + */ + @Generated + private Integer bitrate; + + /* + * The crop property. + */ + @Generated + private VoiceAgentAvatarVideoCrop crop; + + /* + * The resolution property. + */ + @Generated + private VoiceAgentAvatarVideoResolution resolution; + + /* + * The background property. + */ + @Generated + private VoiceAgentAvatarVideoBackground background; + + /* + * The gop_size property. + */ + @Generated + private Integer gopSize; + + /** + * Creates an instance of VoiceAgentAvatarVideoParams class. + */ + @Generated + public VoiceAgentAvatarVideoParams() { + } + + /** + * Get the bitrate property: The target video bitrate in bits per second. + * + * @return the bitrate value. + */ + @Generated + public Integer getBitrate() { + return this.bitrate; + } + + /** + * Set the bitrate property: The target video bitrate in bits per second. + * + * @param bitrate the bitrate value to set. + * @return the VoiceAgentAvatarVideoParams object itself. + */ + @Generated + public VoiceAgentAvatarVideoParams setBitrate(Integer bitrate) { + this.bitrate = bitrate; + return this; + } + + /** + * Get the crop property: The crop property. + * + * @return the crop value. + */ + @Generated + public VoiceAgentAvatarVideoCrop getCrop() { + return this.crop; + } + + /** + * Set the crop property: The crop property. + * + * @param crop the crop value to set. + * @return the VoiceAgentAvatarVideoParams object itself. + */ + @Generated + public VoiceAgentAvatarVideoParams setCrop(VoiceAgentAvatarVideoCrop crop) { + this.crop = crop; + return this; + } + + /** + * Get the resolution property: The resolution property. + * + * @return the resolution value. + */ + @Generated + public VoiceAgentAvatarVideoResolution getResolution() { + return this.resolution; + } + + /** + * Set the resolution property: The resolution property. + * + * @param resolution the resolution value to set. + * @return the VoiceAgentAvatarVideoParams object itself. + */ + @Generated + public VoiceAgentAvatarVideoParams setResolution(VoiceAgentAvatarVideoResolution resolution) { + this.resolution = resolution; + return this; + } + + /** + * Get the background property: The background property. + * + * @return the background value. + */ + @Generated + public VoiceAgentAvatarVideoBackground getBackground() { + return this.background; + } + + /** + * Set the background property: The background property. + * + * @param background the background value to set. + * @return the VoiceAgentAvatarVideoParams object itself. + */ + @Generated + public VoiceAgentAvatarVideoParams setBackground(VoiceAgentAvatarVideoBackground background) { + this.background = background; + return this; + } + + /** + * Get the gopSize property: The gop_size property. + * + * @return the gopSize value. + */ + @Generated + public Integer getGopSize() { + return this.gopSize; + } + + /** + * Set the gopSize property: The gop_size property. + * + * @param gopSize the gopSize value to set. + * @return the VoiceAgentAvatarVideoParams object itself. + */ + @Generated + public VoiceAgentAvatarVideoParams setGopSize(Integer gopSize) { + this.gopSize = gopSize; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeNumberField("bitrate", this.bitrate); + jsonWriter.writeJsonField("crop", this.crop); + jsonWriter.writeJsonField("resolution", this.resolution); + jsonWriter.writeJsonField("background", this.background); + jsonWriter.writeNumberField("gop_size", this.gopSize); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentAvatarVideoParams from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentAvatarVideoParams if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentAvatarVideoParams. + */ + @Generated + public static VoiceAgentAvatarVideoParams fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentAvatarVideoParams deserializedVoiceAgentAvatarVideoParams = new VoiceAgentAvatarVideoParams(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("bitrate".equals(fieldName)) { + deserializedVoiceAgentAvatarVideoParams.bitrate = reader.getNullable(JsonReader::getInt); + } else if ("crop".equals(fieldName)) { + deserializedVoiceAgentAvatarVideoParams.crop = VoiceAgentAvatarVideoCrop.fromJson(reader); + } else if ("resolution".equals(fieldName)) { + deserializedVoiceAgentAvatarVideoParams.resolution + = VoiceAgentAvatarVideoResolution.fromJson(reader); + } else if ("background".equals(fieldName)) { + deserializedVoiceAgentAvatarVideoParams.background + = VoiceAgentAvatarVideoBackground.fromJson(reader); + } else if ("gop_size".equals(fieldName)) { + deserializedVoiceAgentAvatarVideoParams.gopSize = reader.getNullable(JsonReader::getInt); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentAvatarVideoParams; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoResolution.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoResolution.java new file mode 100644 index 0000000000000..ca43ef4586178 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoResolution.java @@ -0,0 +1,104 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The avatar video resolution. + */ +@Immutable +public final class VoiceAgentAvatarVideoResolution implements JsonSerializable { + + /* + * The width property. + */ + @Generated + private final int width; + + /* + * The height property. + */ + @Generated + private final int height; + + /** + * Creates an instance of VoiceAgentAvatarVideoResolution class. + * + * @param width the width value to set. + * @param height the height value to set. + */ + @Generated + public VoiceAgentAvatarVideoResolution(int width, int height) { + this.width = width; + this.height = height; + } + + /** + * Get the width property: The width property. + * + * @return the width value. + */ + @Generated + public int getWidth() { + return this.width; + } + + /** + * Get the height property: The height property. + * + * @return the height value. + */ + @Generated + public int getHeight() { + return this.height; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeIntField("width", this.width); + jsonWriter.writeIntField("height", this.height); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentAvatarVideoResolution from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentAvatarVideoResolution if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentAvatarVideoResolution. + */ + @Generated + public static VoiceAgentAvatarVideoResolution fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + int width = 0; + int height = 0; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("width".equals(fieldName)) { + width = reader.getInt(); + } else if ("height".equals(fieldName)) { + height = reader.getInt(); + } else { + reader.skipChildren(); + } + } + return new VoiceAgentAvatarVideoResolution(width, height); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadEnTurnDetection.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadEnTurnDetection.java new file mode 100644 index 0000000000000..877f9057f0a9c --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadEnTurnDetection.java @@ -0,0 +1,414 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; + +/** + * English-optimized Azure semantic voice activity detection. + */ +@Fluent +public final class VoiceAgentAzureSemanticVadEnTurnDetection extends VoiceAgentTurnDetectionConfig { + + /* + * The turn-detection strategy. + */ + @Generated + private VoiceAgentTurnDetectionType type = VoiceAgentTurnDetectionType.AZURE_SEMANTIC_VAD_EN; + + /* + * Activation threshold for voice activity detection, from 0 to 1. + */ + @Generated + private Double threshold; + + /* + * Audio to include before detected speech, in milliseconds. + */ + @Generated + private Long prefixPaddingMs; + + /* + * Silence required to end speech detection, in milliseconds. + */ + @Generated + private Long silenceDurationMs; + + /* + * Maximum idle time before the detector ends the turn, in milliseconds. + */ + @Generated + private Long idleTimeoutMs; + + /* + * Semantic end-of-utterance detection configuration. Set to null to disable it. + */ + @Generated + private VoiceAgentEndOfUtteranceDetection endOfUtteranceDetection; + + /* + * Minimum speech duration required to trigger detection, in milliseconds. + */ + @Generated + private Long speechDurationMs; + + /* + * Whether filler words are removed from transcription. + */ + @Generated + private Boolean removeFillerWords; + + /* + * Whether a response is created automatically when speech stops. + */ + @Generated + private Boolean createResponse; + + /* + * Whether user speech may interrupt the agent's response. + */ + @Generated + private Boolean interruptResponse; + + /** + * Creates an instance of VoiceAgentAzureSemanticVadEnTurnDetection class. + */ + @Generated + public VoiceAgentAzureSemanticVadEnTurnDetection() { + } + + /** + * Get the type property: The turn-detection strategy. + * + * @return the type value. + */ + @Generated + @Override + public VoiceAgentTurnDetectionType getType() { + return this.type; + } + + /** + * Get the threshold property: Activation threshold for voice activity detection, from 0 to 1. + * + * @return the threshold value. + */ + @Generated + public Double getThreshold() { + return this.threshold; + } + + /** + * Set the threshold property: Activation threshold for voice activity detection, from 0 to 1. + * + * @param threshold the threshold value to set. + * @return the VoiceAgentAzureSemanticVadEnTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadEnTurnDetection setThreshold(Double threshold) { + this.threshold = threshold; + return this; + } + + /** + * Get the prefixPaddingMs property: Audio to include before detected speech, in milliseconds. + * + * @return the prefixPaddingMs value. + */ + @Generated + public Duration getPrefixPaddingMs() { + if (this.prefixPaddingMs == null) { + return null; + } + return Duration.ofMillis(this.prefixPaddingMs); + } + + /** + * Set the prefixPaddingMs property: Audio to include before detected speech, in milliseconds. + * + * @param prefixPaddingMs the prefixPaddingMs value to set. + * @return the VoiceAgentAzureSemanticVadEnTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadEnTurnDetection setPrefixPaddingMs(Duration prefixPaddingMs) { + if (prefixPaddingMs == null) { + this.prefixPaddingMs = null; + } else { + this.prefixPaddingMs = prefixPaddingMs.toMillis(); + } + return this; + } + + /** + * Get the silenceDurationMs property: Silence required to end speech detection, in milliseconds. + * + * @return the silenceDurationMs value. + */ + @Generated + public Duration getSilenceDurationMs() { + if (this.silenceDurationMs == null) { + return null; + } + return Duration.ofMillis(this.silenceDurationMs); + } + + /** + * Set the silenceDurationMs property: Silence required to end speech detection, in milliseconds. + * + * @param silenceDurationMs the silenceDurationMs value to set. + * @return the VoiceAgentAzureSemanticVadEnTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadEnTurnDetection setSilenceDurationMs(Duration silenceDurationMs) { + if (silenceDurationMs == null) { + this.silenceDurationMs = null; + } else { + this.silenceDurationMs = silenceDurationMs.toMillis(); + } + return this; + } + + /** + * Get the idleTimeoutMs property: Maximum idle time before the detector ends the turn, in milliseconds. + * + * @return the idleTimeoutMs value. + */ + @Generated + public Duration getIdleTimeoutMs() { + if (this.idleTimeoutMs == null) { + return null; + } + return Duration.ofMillis(this.idleTimeoutMs); + } + + /** + * Set the idleTimeoutMs property: Maximum idle time before the detector ends the turn, in milliseconds. + * + * @param idleTimeoutMs the idleTimeoutMs value to set. + * @return the VoiceAgentAzureSemanticVadEnTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadEnTurnDetection setIdleTimeoutMs(Duration idleTimeoutMs) { + if (idleTimeoutMs == null) { + this.idleTimeoutMs = null; + } else { + this.idleTimeoutMs = idleTimeoutMs.toMillis(); + } + return this; + } + + /** + * Get the endOfUtteranceDetection property: Semantic end-of-utterance detection configuration. Set to null to + * disable it. + * + * @return the endOfUtteranceDetection value. + */ + @Generated + public VoiceAgentEndOfUtteranceDetection getEndOfUtteranceDetection() { + return this.endOfUtteranceDetection; + } + + /** + * Set the endOfUtteranceDetection property: Semantic end-of-utterance detection configuration. Set to null to + * disable it. + * + * @param endOfUtteranceDetection the endOfUtteranceDetection value to set. + * @return the VoiceAgentAzureSemanticVadEnTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadEnTurnDetection + setEndOfUtteranceDetection(VoiceAgentEndOfUtteranceDetection endOfUtteranceDetection) { + this.endOfUtteranceDetection = endOfUtteranceDetection; + return this; + } + + /** + * Get the speechDurationMs property: Minimum speech duration required to trigger detection, in milliseconds. + * + * @return the speechDurationMs value. + */ + @Generated + public Duration getSpeechDurationMs() { + if (this.speechDurationMs == null) { + return null; + } + return Duration.ofMillis(this.speechDurationMs); + } + + /** + * Set the speechDurationMs property: Minimum speech duration required to trigger detection, in milliseconds. + * + * @param speechDurationMs the speechDurationMs value to set. + * @return the VoiceAgentAzureSemanticVadEnTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadEnTurnDetection setSpeechDurationMs(Duration speechDurationMs) { + if (speechDurationMs == null) { + this.speechDurationMs = null; + } else { + this.speechDurationMs = speechDurationMs.toMillis(); + } + return this; + } + + /** + * Get the removeFillerWords property: Whether filler words are removed from transcription. + * + * @return the removeFillerWords value. + */ + @Generated + public Boolean isRemoveFillerWords() { + return this.removeFillerWords; + } + + /** + * Set the removeFillerWords property: Whether filler words are removed from transcription. + * + * @param removeFillerWords the removeFillerWords value to set. + * @return the VoiceAgentAzureSemanticVadEnTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadEnTurnDetection setRemoveFillerWords(Boolean removeFillerWords) { + this.removeFillerWords = removeFillerWords; + return this; + } + + /** + * Get the createResponse property: Whether a response is created automatically when speech stops. + * + * @return the createResponse value. + */ + @Generated + public Boolean isCreateResponse() { + return this.createResponse; + } + + /** + * Set the createResponse property: Whether a response is created automatically when speech stops. + * + * @param createResponse the createResponse value to set. + * @return the VoiceAgentAzureSemanticVadEnTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadEnTurnDetection setCreateResponse(Boolean createResponse) { + this.createResponse = createResponse; + return this; + } + + /** + * Get the interruptResponse property: Whether user speech may interrupt the agent's response. + * + * @return the interruptResponse value. + */ + @Generated + public Boolean isInterruptResponse() { + return this.interruptResponse; + } + + /** + * Set the interruptResponse property: Whether user speech may interrupt the agent's response. + * + * @param interruptResponse the interruptResponse value to set. + * @return the VoiceAgentAzureSemanticVadEnTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadEnTurnDetection setInterruptResponse(Boolean interruptResponse) { + this.interruptResponse = interruptResponse; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentAzureSemanticVadEnTurnDetection setAutoTruncate(Boolean autoTruncate) { + super.setAutoTruncate(autoTruncate); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeBooleanField("auto_truncate", isAutoTruncate()); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeNumberField("threshold", this.threshold); + jsonWriter.writeNumberField("prefix_padding_ms", this.prefixPaddingMs); + jsonWriter.writeNumberField("silence_duration_ms", this.silenceDurationMs); + jsonWriter.writeNumberField("idle_timeout_ms", this.idleTimeoutMs); + jsonWriter.writeJsonField("end_of_utterance_detection", this.endOfUtteranceDetection); + jsonWriter.writeNumberField("speech_duration_ms", this.speechDurationMs); + jsonWriter.writeBooleanField("remove_filler_words", this.removeFillerWords); + jsonWriter.writeBooleanField("create_response", this.createResponse); + jsonWriter.writeBooleanField("interrupt_response", this.interruptResponse); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentAzureSemanticVadEnTurnDetection from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentAzureSemanticVadEnTurnDetection if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentAzureSemanticVadEnTurnDetection. + */ + @Generated + public static VoiceAgentAzureSemanticVadEnTurnDetection fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentAzureSemanticVadEnTurnDetection deserializedVoiceAgentAzureSemanticVadEnTurnDetection + = new VoiceAgentAzureSemanticVadEnTurnDetection(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("auto_truncate".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadEnTurnDetection + .setAutoTruncate(reader.getNullable(JsonReader::getBoolean)); + } else if ("type".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadEnTurnDetection.type + = VoiceAgentTurnDetectionType.fromString(reader.getString()); + } else if ("threshold".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadEnTurnDetection.threshold + = reader.getNullable(JsonReader::getDouble); + } else if ("prefix_padding_ms".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadEnTurnDetection.prefixPaddingMs + = reader.getNullable(JsonReader::getLong); + } else if ("silence_duration_ms".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadEnTurnDetection.silenceDurationMs + = reader.getNullable(JsonReader::getLong); + } else if ("idle_timeout_ms".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadEnTurnDetection.idleTimeoutMs + = reader.getNullable(JsonReader::getLong); + } else if ("end_of_utterance_detection".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadEnTurnDetection.endOfUtteranceDetection + = VoiceAgentEndOfUtteranceDetection.fromJson(reader); + } else if ("speech_duration_ms".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadEnTurnDetection.speechDurationMs + = reader.getNullable(JsonReader::getLong); + } else if ("remove_filler_words".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadEnTurnDetection.removeFillerWords + = reader.getNullable(JsonReader::getBoolean); + } else if ("create_response".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadEnTurnDetection.createResponse + = reader.getNullable(JsonReader::getBoolean); + } else if ("interrupt_response".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadEnTurnDetection.interruptResponse + = reader.getNullable(JsonReader::getBoolean); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentAzureSemanticVadEnTurnDetection; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadMultilingualTurnDetection.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadMultilingualTurnDetection.java new file mode 100644 index 0000000000000..0a247ffcf20df --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadMultilingualTurnDetection.java @@ -0,0 +1,448 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; +import java.util.List; + +/** + * Multilingual Azure semantic voice activity detection. + */ +@Fluent +public final class VoiceAgentAzureSemanticVadMultilingualTurnDetection extends VoiceAgentTurnDetectionConfig { + + /* + * The turn-detection strategy. + */ + @Generated + private VoiceAgentTurnDetectionType type = VoiceAgentTurnDetectionType.AZURE_SEMANTIC_VAD_MULTILINGUAL; + + /* + * Activation threshold for voice activity detection, from 0 to 1. + */ + @Generated + private Double threshold; + + /* + * Audio to include before detected speech, in milliseconds. + */ + @Generated + private Long prefixPaddingMs; + + /* + * Silence required to end speech detection, in milliseconds. + */ + @Generated + private Long silenceDurationMs; + + /* + * Maximum idle time before the detector ends the turn, in milliseconds. + */ + @Generated + private Long idleTimeoutMs; + + /* + * Semantic end-of-utterance detection configuration. Set to null to disable it. + */ + @Generated + private VoiceAgentEndOfUtteranceDetection endOfUtteranceDetection; + + /* + * Minimum speech duration required to trigger detection, in milliseconds. + */ + @Generated + private Long speechDurationMs; + + /* + * Whether filler words are removed from transcription. + */ + @Generated + private Boolean removeFillerWords; + + /* + * Whether a response is created automatically when speech stops. + */ + @Generated + private Boolean createResponse; + + /* + * Whether user speech may interrupt the agent's response. + */ + @Generated + private Boolean interruptResponse; + + /* + * BCP-47 language codes used for speech detection. + */ + @Generated + private List languages; + + /** + * Creates an instance of VoiceAgentAzureSemanticVadMultilingualTurnDetection class. + */ + @Generated + public VoiceAgentAzureSemanticVadMultilingualTurnDetection() { + } + + /** + * Get the type property: The turn-detection strategy. + * + * @return the type value. + */ + @Generated + @Override + public VoiceAgentTurnDetectionType getType() { + return this.type; + } + + /** + * Get the threshold property: Activation threshold for voice activity detection, from 0 to 1. + * + * @return the threshold value. + */ + @Generated + public Double getThreshold() { + return this.threshold; + } + + /** + * Set the threshold property: Activation threshold for voice activity detection, from 0 to 1. + * + * @param threshold the threshold value to set. + * @return the VoiceAgentAzureSemanticVadMultilingualTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadMultilingualTurnDetection setThreshold(Double threshold) { + this.threshold = threshold; + return this; + } + + /** + * Get the prefixPaddingMs property: Audio to include before detected speech, in milliseconds. + * + * @return the prefixPaddingMs value. + */ + @Generated + public Duration getPrefixPaddingMs() { + if (this.prefixPaddingMs == null) { + return null; + } + return Duration.ofMillis(this.prefixPaddingMs); + } + + /** + * Set the prefixPaddingMs property: Audio to include before detected speech, in milliseconds. + * + * @param prefixPaddingMs the prefixPaddingMs value to set. + * @return the VoiceAgentAzureSemanticVadMultilingualTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadMultilingualTurnDetection setPrefixPaddingMs(Duration prefixPaddingMs) { + if (prefixPaddingMs == null) { + this.prefixPaddingMs = null; + } else { + this.prefixPaddingMs = prefixPaddingMs.toMillis(); + } + return this; + } + + /** + * Get the silenceDurationMs property: Silence required to end speech detection, in milliseconds. + * + * @return the silenceDurationMs value. + */ + @Generated + public Duration getSilenceDurationMs() { + if (this.silenceDurationMs == null) { + return null; + } + return Duration.ofMillis(this.silenceDurationMs); + } + + /** + * Set the silenceDurationMs property: Silence required to end speech detection, in milliseconds. + * + * @param silenceDurationMs the silenceDurationMs value to set. + * @return the VoiceAgentAzureSemanticVadMultilingualTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadMultilingualTurnDetection setSilenceDurationMs(Duration silenceDurationMs) { + if (silenceDurationMs == null) { + this.silenceDurationMs = null; + } else { + this.silenceDurationMs = silenceDurationMs.toMillis(); + } + return this; + } + + /** + * Get the idleTimeoutMs property: Maximum idle time before the detector ends the turn, in milliseconds. + * + * @return the idleTimeoutMs value. + */ + @Generated + public Duration getIdleTimeoutMs() { + if (this.idleTimeoutMs == null) { + return null; + } + return Duration.ofMillis(this.idleTimeoutMs); + } + + /** + * Set the idleTimeoutMs property: Maximum idle time before the detector ends the turn, in milliseconds. + * + * @param idleTimeoutMs the idleTimeoutMs value to set. + * @return the VoiceAgentAzureSemanticVadMultilingualTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadMultilingualTurnDetection setIdleTimeoutMs(Duration idleTimeoutMs) { + if (idleTimeoutMs == null) { + this.idleTimeoutMs = null; + } else { + this.idleTimeoutMs = idleTimeoutMs.toMillis(); + } + return this; + } + + /** + * Get the endOfUtteranceDetection property: Semantic end-of-utterance detection configuration. Set to null to + * disable it. + * + * @return the endOfUtteranceDetection value. + */ + @Generated + public VoiceAgentEndOfUtteranceDetection getEndOfUtteranceDetection() { + return this.endOfUtteranceDetection; + } + + /** + * Set the endOfUtteranceDetection property: Semantic end-of-utterance detection configuration. Set to null to + * disable it. + * + * @param endOfUtteranceDetection the endOfUtteranceDetection value to set. + * @return the VoiceAgentAzureSemanticVadMultilingualTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadMultilingualTurnDetection + setEndOfUtteranceDetection(VoiceAgentEndOfUtteranceDetection endOfUtteranceDetection) { + this.endOfUtteranceDetection = endOfUtteranceDetection; + return this; + } + + /** + * Get the speechDurationMs property: Minimum speech duration required to trigger detection, in milliseconds. + * + * @return the speechDurationMs value. + */ + @Generated + public Duration getSpeechDurationMs() { + if (this.speechDurationMs == null) { + return null; + } + return Duration.ofMillis(this.speechDurationMs); + } + + /** + * Set the speechDurationMs property: Minimum speech duration required to trigger detection, in milliseconds. + * + * @param speechDurationMs the speechDurationMs value to set. + * @return the VoiceAgentAzureSemanticVadMultilingualTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadMultilingualTurnDetection setSpeechDurationMs(Duration speechDurationMs) { + if (speechDurationMs == null) { + this.speechDurationMs = null; + } else { + this.speechDurationMs = speechDurationMs.toMillis(); + } + return this; + } + + /** + * Get the removeFillerWords property: Whether filler words are removed from transcription. + * + * @return the removeFillerWords value. + */ + @Generated + public Boolean isRemoveFillerWords() { + return this.removeFillerWords; + } + + /** + * Set the removeFillerWords property: Whether filler words are removed from transcription. + * + * @param removeFillerWords the removeFillerWords value to set. + * @return the VoiceAgentAzureSemanticVadMultilingualTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadMultilingualTurnDetection setRemoveFillerWords(Boolean removeFillerWords) { + this.removeFillerWords = removeFillerWords; + return this; + } + + /** + * Get the createResponse property: Whether a response is created automatically when speech stops. + * + * @return the createResponse value. + */ + @Generated + public Boolean isCreateResponse() { + return this.createResponse; + } + + /** + * Set the createResponse property: Whether a response is created automatically when speech stops. + * + * @param createResponse the createResponse value to set. + * @return the VoiceAgentAzureSemanticVadMultilingualTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadMultilingualTurnDetection setCreateResponse(Boolean createResponse) { + this.createResponse = createResponse; + return this; + } + + /** + * Get the interruptResponse property: Whether user speech may interrupt the agent's response. + * + * @return the interruptResponse value. + */ + @Generated + public Boolean isInterruptResponse() { + return this.interruptResponse; + } + + /** + * Set the interruptResponse property: Whether user speech may interrupt the agent's response. + * + * @param interruptResponse the interruptResponse value to set. + * @return the VoiceAgentAzureSemanticVadMultilingualTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadMultilingualTurnDetection setInterruptResponse(Boolean interruptResponse) { + this.interruptResponse = interruptResponse; + return this; + } + + /** + * Get the languages property: BCP-47 language codes used for speech detection. + * + * @return the languages value. + */ + @Generated + public List getLanguages() { + return this.languages; + } + + /** + * Set the languages property: BCP-47 language codes used for speech detection. + * + * @param languages the languages value to set. + * @return the VoiceAgentAzureSemanticVadMultilingualTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadMultilingualTurnDetection setLanguages(List languages) { + this.languages = languages; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentAzureSemanticVadMultilingualTurnDetection setAutoTruncate(Boolean autoTruncate) { + super.setAutoTruncate(autoTruncate); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeBooleanField("auto_truncate", isAutoTruncate()); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeNumberField("threshold", this.threshold); + jsonWriter.writeNumberField("prefix_padding_ms", this.prefixPaddingMs); + jsonWriter.writeNumberField("silence_duration_ms", this.silenceDurationMs); + jsonWriter.writeNumberField("idle_timeout_ms", this.idleTimeoutMs); + jsonWriter.writeJsonField("end_of_utterance_detection", this.endOfUtteranceDetection); + jsonWriter.writeNumberField("speech_duration_ms", this.speechDurationMs); + jsonWriter.writeBooleanField("remove_filler_words", this.removeFillerWords); + jsonWriter.writeBooleanField("create_response", this.createResponse); + jsonWriter.writeBooleanField("interrupt_response", this.interruptResponse); + jsonWriter.writeArrayField("languages", this.languages, (writer, element) -> writer.writeString(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentAzureSemanticVadMultilingualTurnDetection from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentAzureSemanticVadMultilingualTurnDetection if the JsonReader was pointing to an + * instance of it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentAzureSemanticVadMultilingualTurnDetection. + */ + @Generated + public static VoiceAgentAzureSemanticVadMultilingualTurnDetection fromJson(JsonReader jsonReader) + throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentAzureSemanticVadMultilingualTurnDetection deserializedVoiceAgentAzureSemanticVadMultilingualTurnDetection + = new VoiceAgentAzureSemanticVadMultilingualTurnDetection(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("auto_truncate".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadMultilingualTurnDetection + .setAutoTruncate(reader.getNullable(JsonReader::getBoolean)); + } else if ("type".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadMultilingualTurnDetection.type + = VoiceAgentTurnDetectionType.fromString(reader.getString()); + } else if ("threshold".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadMultilingualTurnDetection.threshold + = reader.getNullable(JsonReader::getDouble); + } else if ("prefix_padding_ms".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadMultilingualTurnDetection.prefixPaddingMs + = reader.getNullable(JsonReader::getLong); + } else if ("silence_duration_ms".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadMultilingualTurnDetection.silenceDurationMs + = reader.getNullable(JsonReader::getLong); + } else if ("idle_timeout_ms".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadMultilingualTurnDetection.idleTimeoutMs + = reader.getNullable(JsonReader::getLong); + } else if ("end_of_utterance_detection".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadMultilingualTurnDetection.endOfUtteranceDetection + = VoiceAgentEndOfUtteranceDetection.fromJson(reader); + } else if ("speech_duration_ms".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadMultilingualTurnDetection.speechDurationMs + = reader.getNullable(JsonReader::getLong); + } else if ("remove_filler_words".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadMultilingualTurnDetection.removeFillerWords + = reader.getNullable(JsonReader::getBoolean); + } else if ("create_response".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadMultilingualTurnDetection.createResponse + = reader.getNullable(JsonReader::getBoolean); + } else if ("interrupt_response".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadMultilingualTurnDetection.interruptResponse + = reader.getNullable(JsonReader::getBoolean); + } else if ("languages".equals(fieldName)) { + List languages = reader.readArray(reader1 -> reader1.getString()); + deserializedVoiceAgentAzureSemanticVadMultilingualTurnDetection.languages = languages; + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentAzureSemanticVadMultilingualTurnDetection; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadTurnDetection.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadTurnDetection.java new file mode 100644 index 0000000000000..86509376a6036 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadTurnDetection.java @@ -0,0 +1,447 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; +import java.util.List; + +/** + * Azure semantic voice activity detection. + */ +@Fluent +public final class VoiceAgentAzureSemanticVadTurnDetection extends VoiceAgentTurnDetectionConfig { + + /* + * The turn-detection strategy. + */ + @Generated + private VoiceAgentTurnDetectionType type = VoiceAgentTurnDetectionType.AZURE_SEMANTIC_VAD; + + /* + * Activation threshold for voice activity detection, from 0 to 1. + */ + @Generated + private Double threshold; + + /* + * Audio to include before detected speech, in milliseconds. + */ + @Generated + private Long prefixPaddingMs; + + /* + * Silence required to end speech detection, in milliseconds. + */ + @Generated + private Long silenceDurationMs; + + /* + * Maximum idle time before the detector ends the turn, in milliseconds. + */ + @Generated + private Long idleTimeoutMs; + + /* + * Semantic end-of-utterance detection configuration. Set to null to disable it. + */ + @Generated + private VoiceAgentEndOfUtteranceDetection endOfUtteranceDetection; + + /* + * Minimum speech duration required to trigger detection, in milliseconds. + */ + @Generated + private Long speechDurationMs; + + /* + * Whether filler words are removed from transcription. + */ + @Generated + private Boolean removeFillerWords; + + /* + * Whether a response is created automatically when speech stops. + */ + @Generated + private Boolean createResponse; + + /* + * Whether user speech may interrupt the agent's response. + */ + @Generated + private Boolean interruptResponse; + + /* + * BCP-47 language codes used for speech detection. + */ + @Generated + private List languages; + + /** + * Creates an instance of VoiceAgentAzureSemanticVadTurnDetection class. + */ + @Generated + public VoiceAgentAzureSemanticVadTurnDetection() { + } + + /** + * Get the type property: The turn-detection strategy. + * + * @return the type value. + */ + @Generated + @Override + public VoiceAgentTurnDetectionType getType() { + return this.type; + } + + /** + * Get the threshold property: Activation threshold for voice activity detection, from 0 to 1. + * + * @return the threshold value. + */ + @Generated + public Double getThreshold() { + return this.threshold; + } + + /** + * Set the threshold property: Activation threshold for voice activity detection, from 0 to 1. + * + * @param threshold the threshold value to set. + * @return the VoiceAgentAzureSemanticVadTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadTurnDetection setThreshold(Double threshold) { + this.threshold = threshold; + return this; + } + + /** + * Get the prefixPaddingMs property: Audio to include before detected speech, in milliseconds. + * + * @return the prefixPaddingMs value. + */ + @Generated + public Duration getPrefixPaddingMs() { + if (this.prefixPaddingMs == null) { + return null; + } + return Duration.ofMillis(this.prefixPaddingMs); + } + + /** + * Set the prefixPaddingMs property: Audio to include before detected speech, in milliseconds. + * + * @param prefixPaddingMs the prefixPaddingMs value to set. + * @return the VoiceAgentAzureSemanticVadTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadTurnDetection setPrefixPaddingMs(Duration prefixPaddingMs) { + if (prefixPaddingMs == null) { + this.prefixPaddingMs = null; + } else { + this.prefixPaddingMs = prefixPaddingMs.toMillis(); + } + return this; + } + + /** + * Get the silenceDurationMs property: Silence required to end speech detection, in milliseconds. + * + * @return the silenceDurationMs value. + */ + @Generated + public Duration getSilenceDurationMs() { + if (this.silenceDurationMs == null) { + return null; + } + return Duration.ofMillis(this.silenceDurationMs); + } + + /** + * Set the silenceDurationMs property: Silence required to end speech detection, in milliseconds. + * + * @param silenceDurationMs the silenceDurationMs value to set. + * @return the VoiceAgentAzureSemanticVadTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadTurnDetection setSilenceDurationMs(Duration silenceDurationMs) { + if (silenceDurationMs == null) { + this.silenceDurationMs = null; + } else { + this.silenceDurationMs = silenceDurationMs.toMillis(); + } + return this; + } + + /** + * Get the idleTimeoutMs property: Maximum idle time before the detector ends the turn, in milliseconds. + * + * @return the idleTimeoutMs value. + */ + @Generated + public Duration getIdleTimeoutMs() { + if (this.idleTimeoutMs == null) { + return null; + } + return Duration.ofMillis(this.idleTimeoutMs); + } + + /** + * Set the idleTimeoutMs property: Maximum idle time before the detector ends the turn, in milliseconds. + * + * @param idleTimeoutMs the idleTimeoutMs value to set. + * @return the VoiceAgentAzureSemanticVadTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadTurnDetection setIdleTimeoutMs(Duration idleTimeoutMs) { + if (idleTimeoutMs == null) { + this.idleTimeoutMs = null; + } else { + this.idleTimeoutMs = idleTimeoutMs.toMillis(); + } + return this; + } + + /** + * Get the endOfUtteranceDetection property: Semantic end-of-utterance detection configuration. Set to null to + * disable it. + * + * @return the endOfUtteranceDetection value. + */ + @Generated + public VoiceAgentEndOfUtteranceDetection getEndOfUtteranceDetection() { + return this.endOfUtteranceDetection; + } + + /** + * Set the endOfUtteranceDetection property: Semantic end-of-utterance detection configuration. Set to null to + * disable it. + * + * @param endOfUtteranceDetection the endOfUtteranceDetection value to set. + * @return the VoiceAgentAzureSemanticVadTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadTurnDetection + setEndOfUtteranceDetection(VoiceAgentEndOfUtteranceDetection endOfUtteranceDetection) { + this.endOfUtteranceDetection = endOfUtteranceDetection; + return this; + } + + /** + * Get the speechDurationMs property: Minimum speech duration required to trigger detection, in milliseconds. + * + * @return the speechDurationMs value. + */ + @Generated + public Duration getSpeechDurationMs() { + if (this.speechDurationMs == null) { + return null; + } + return Duration.ofMillis(this.speechDurationMs); + } + + /** + * Set the speechDurationMs property: Minimum speech duration required to trigger detection, in milliseconds. + * + * @param speechDurationMs the speechDurationMs value to set. + * @return the VoiceAgentAzureSemanticVadTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadTurnDetection setSpeechDurationMs(Duration speechDurationMs) { + if (speechDurationMs == null) { + this.speechDurationMs = null; + } else { + this.speechDurationMs = speechDurationMs.toMillis(); + } + return this; + } + + /** + * Get the removeFillerWords property: Whether filler words are removed from transcription. + * + * @return the removeFillerWords value. + */ + @Generated + public Boolean isRemoveFillerWords() { + return this.removeFillerWords; + } + + /** + * Set the removeFillerWords property: Whether filler words are removed from transcription. + * + * @param removeFillerWords the removeFillerWords value to set. + * @return the VoiceAgentAzureSemanticVadTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadTurnDetection setRemoveFillerWords(Boolean removeFillerWords) { + this.removeFillerWords = removeFillerWords; + return this; + } + + /** + * Get the createResponse property: Whether a response is created automatically when speech stops. + * + * @return the createResponse value. + */ + @Generated + public Boolean isCreateResponse() { + return this.createResponse; + } + + /** + * Set the createResponse property: Whether a response is created automatically when speech stops. + * + * @param createResponse the createResponse value to set. + * @return the VoiceAgentAzureSemanticVadTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadTurnDetection setCreateResponse(Boolean createResponse) { + this.createResponse = createResponse; + return this; + } + + /** + * Get the interruptResponse property: Whether user speech may interrupt the agent's response. + * + * @return the interruptResponse value. + */ + @Generated + public Boolean isInterruptResponse() { + return this.interruptResponse; + } + + /** + * Set the interruptResponse property: Whether user speech may interrupt the agent's response. + * + * @param interruptResponse the interruptResponse value to set. + * @return the VoiceAgentAzureSemanticVadTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadTurnDetection setInterruptResponse(Boolean interruptResponse) { + this.interruptResponse = interruptResponse; + return this; + } + + /** + * Get the languages property: BCP-47 language codes used for speech detection. + * + * @return the languages value. + */ + @Generated + public List getLanguages() { + return this.languages; + } + + /** + * Set the languages property: BCP-47 language codes used for speech detection. + * + * @param languages the languages value to set. + * @return the VoiceAgentAzureSemanticVadTurnDetection object itself. + */ + @Generated + public VoiceAgentAzureSemanticVadTurnDetection setLanguages(List languages) { + this.languages = languages; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentAzureSemanticVadTurnDetection setAutoTruncate(Boolean autoTruncate) { + super.setAutoTruncate(autoTruncate); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeBooleanField("auto_truncate", isAutoTruncate()); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeNumberField("threshold", this.threshold); + jsonWriter.writeNumberField("prefix_padding_ms", this.prefixPaddingMs); + jsonWriter.writeNumberField("silence_duration_ms", this.silenceDurationMs); + jsonWriter.writeNumberField("idle_timeout_ms", this.idleTimeoutMs); + jsonWriter.writeJsonField("end_of_utterance_detection", this.endOfUtteranceDetection); + jsonWriter.writeNumberField("speech_duration_ms", this.speechDurationMs); + jsonWriter.writeBooleanField("remove_filler_words", this.removeFillerWords); + jsonWriter.writeBooleanField("create_response", this.createResponse); + jsonWriter.writeBooleanField("interrupt_response", this.interruptResponse); + jsonWriter.writeArrayField("languages", this.languages, (writer, element) -> writer.writeString(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentAzureSemanticVadTurnDetection from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentAzureSemanticVadTurnDetection if the JsonReader was pointing to an instance of + * it, or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentAzureSemanticVadTurnDetection. + */ + @Generated + public static VoiceAgentAzureSemanticVadTurnDetection fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentAzureSemanticVadTurnDetection deserializedVoiceAgentAzureSemanticVadTurnDetection + = new VoiceAgentAzureSemanticVadTurnDetection(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("auto_truncate".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadTurnDetection + .setAutoTruncate(reader.getNullable(JsonReader::getBoolean)); + } else if ("type".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadTurnDetection.type + = VoiceAgentTurnDetectionType.fromString(reader.getString()); + } else if ("threshold".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadTurnDetection.threshold + = reader.getNullable(JsonReader::getDouble); + } else if ("prefix_padding_ms".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadTurnDetection.prefixPaddingMs + = reader.getNullable(JsonReader::getLong); + } else if ("silence_duration_ms".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadTurnDetection.silenceDurationMs + = reader.getNullable(JsonReader::getLong); + } else if ("idle_timeout_ms".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadTurnDetection.idleTimeoutMs + = reader.getNullable(JsonReader::getLong); + } else if ("end_of_utterance_detection".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadTurnDetection.endOfUtteranceDetection + = VoiceAgentEndOfUtteranceDetection.fromJson(reader); + } else if ("speech_duration_ms".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadTurnDetection.speechDurationMs + = reader.getNullable(JsonReader::getLong); + } else if ("remove_filler_words".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadTurnDetection.removeFillerWords + = reader.getNullable(JsonReader::getBoolean); + } else if ("create_response".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadTurnDetection.createResponse + = reader.getNullable(JsonReader::getBoolean); + } else if ("interrupt_response".equals(fieldName)) { + deserializedVoiceAgentAzureSemanticVadTurnDetection.interruptResponse + = reader.getNullable(JsonReader::getBoolean); + } else if ("languages".equals(fieldName)) { + List languages = reader.readArray(reader1 -> reader1.getString()); + deserializedVoiceAgentAzureSemanticVadTurnDetection.languages = languages; + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentAzureSemanticVadTurnDetection; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentDefinition.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentDefinition.java new file mode 100644 index 0000000000000..e0b2c4f6cdb45 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentDefinition.java @@ -0,0 +1,722 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * The voice agent definition. Its configuration (model, instructions, audio, tools, and optional avatar) drives a + * managed speech-to-speech experience. Establish realtime voice sessions through + * `GET /agents/{agent_name}/endpoint/protocols/voice`. Every create or update produces a new immutable version. + */ +@Fluent +public final class VoiceAgentDefinition extends AgentDefinition { + + /* + * The kind property. + */ + @Generated + private AgentKind kind = AgentKind.VOICE; + + /* + * How the model backing this voice agent is served. Required with `model` for a model-backed voice agent and + * omitted when `conversation_engine` is provided. This is independent of the architecture (realtime or cascaded), + * which the service derives from the selected model. + */ + @Generated + private VoiceModelType modelType; + + /* + * The model to use for this agent. Required with `model_type` for a model-backed voice agent and omitted when + * `conversation_engine` is provided. The model must support realtime or cascaded voice. + */ + @Generated + private String model; + + /* + * A system (or developer) message inserted into the model's context. Supports template substitution via + * `structured_inputs`, rendered per session before the live session starts. + */ + @Generated + private String instructions; + + /* + * Optional session-start greeting. Template mode speaks exact rendered text; LLM-generated mode asks the session + * model to author the opening response and may use configured tools. + */ + @Generated + private VoiceAgentGreetingConfig greeting; + + /* + * The audio configuration, including input and output formats, voice, turn detection, noise reduction, and + * transcription. These values are session defaults; a client may override supported fields when connecting. + */ + @Generated + private VoiceAgentAudioConfig audio; + + /* + * The output modalities the agent produces. Defaults to `["audio"]`. `animation` and `avatar` are available + * when an avatar is configured. + */ + @Generated + private List outputModalities; + + /* + * The maximum output-token count for one response. + */ + @Generated + private BinaryData maxOutputTokens; + + /* + * Additional fields to include in service outputs. + */ + @Generated + private List include; + + /* + * Interim-response settings for latency and tool execution. + */ + @Generated + private VoiceAgentInterimResponseConfig interimResponse; + + /* + * Optional avatar configuration. These values are session defaults and may be overridden when connecting. + */ + @Generated + private VoiceAgentAvatarConfig avatar; + + /* + * The tools the voice agent may use. Supported tool kinds are `function` (executed by the client), `mcp`, + * `system` (service-managed session controls), and `toolbox`. Server-side tools such as `web_search`, + * `azure_ai_search`, and `openapi` are provided through a toolbox rather than declared directly. + */ + @Generated + private List tools; + + /* + * How the model chooses tools for generated responses. `none` prevents tool calls, `auto` lets the model decide, + * `required` requires at least one tool call, and a specific function or MCP tool can be selected with an object. + * Defaults to `auto`. + */ + @Generated + private BinaryData toolChoice; + + /* + * Whether the model may call multiple tools in parallel. + */ + @Generated + private Boolean parallelToolCalls; + + /* + * Set of structured inputs that participate in prompt template substitution, rendered per session before the live + * session starts. + */ + @Generated + private Map structuredInputs; + + /* + * Whether conversations with this agent are persisted. A single, all-or-nothing persistence switch that defaults to + * `false` (privacy-safe: off by default). When `true`, Foundry persists the full conversation — the + * transcript/event + * timeline and raw audio. When `false`, nothing is persisted and no conversation is surfaced. There is no separate + * audio-logging control; audio is persisted only as part of this switch. Latency/performance telemetry (e.g. + * time-to-first-audio, inter-token latency, interruption) is observability-only (customer trace / App Insights) and + * is not part of the persisted conversation content. + */ + @Generated + private Boolean store; + + /** + * Get the kind property: The kind property. + * + * @return the kind value. + */ + @Generated + @Override + public AgentKind getKind() { + return this.kind; + } + + /** + * Get the modelType property: How the model backing this voice agent is served. Required with `model` for a + * model-backed voice agent and omitted when `conversation_engine` is provided. This is independent of the + * architecture (realtime or cascaded), which the service derives from the selected model. + * + * @return the modelType value. + */ + @Generated + public VoiceModelType getModelType() { + return this.modelType; + } + + /** + * Get the model property: The model to use for this agent. Required with `model_type` for a model-backed voice + * agent and omitted when `conversation_engine` is provided. The model must support realtime or cascaded voice. + * + * @return the model value. + */ + @Generated + public String getModel() { + return this.model; + } + + /** + * Get the instructions property: A system (or developer) message inserted into the model's context. Supports + * template substitution via `structured_inputs`, rendered per session before the live session starts. + * + * @return the instructions value. + */ + @Generated + public String getInstructions() { + return this.instructions; + } + + /** + * Set the instructions property: A system (or developer) message inserted into the model's context. Supports + * template substitution via `structured_inputs`, rendered per session before the live session starts. + * + * @param instructions the instructions value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setInstructions(String instructions) { + this.instructions = instructions; + return this; + } + + /** + * Get the greeting property: Optional session-start greeting. Template mode speaks exact rendered text; + * LLM-generated mode asks the session model to author the opening response and may use configured tools. + * + * @return the greeting value. + */ + @Generated + public VoiceAgentGreetingConfig getGreeting() { + return this.greeting; + } + + /** + * Set the greeting property: Optional session-start greeting. Template mode speaks exact rendered text; + * LLM-generated mode asks the session model to author the opening response and may use configured tools. + * + * @param greeting the greeting value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setGreeting(VoiceAgentGreetingConfig greeting) { + this.greeting = greeting; + return this; + } + + /** + * Get the audio property: The audio configuration, including input and output formats, voice, turn detection, noise + * reduction, and + * transcription. These values are session defaults; a client may override supported fields when connecting. + * + * @return the audio value. + */ + @Generated + public VoiceAgentAudioConfig getAudio() { + return this.audio; + } + + /** + * Set the audio property: The audio configuration, including input and output formats, voice, turn detection, noise + * reduction, and + * transcription. These values are session defaults; a client may override supported fields when connecting. + * + * @param audio the audio value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setAudio(VoiceAgentAudioConfig audio) { + this.audio = audio; + return this; + } + + /** + * Get the outputModalities property: The output modalities the agent produces. Defaults to `["audio"]`. `animation` + * and `avatar` are available + * when an avatar is configured. + * + * @return the outputModalities value. + */ + @Generated + public List getOutputModalities() { + return this.outputModalities; + } + + /** + * Set the outputModalities property: The output modalities the agent produces. Defaults to `["audio"]`. `animation` + * and `avatar` are available + * when an avatar is configured. + * + * @param outputModalities the outputModalities value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setOutputModalities(List outputModalities) { + this.outputModalities = outputModalities; + return this; + } + + /** + * Get the maxOutputTokens property: The maximum output-token count for one response. + * + * @return the maxOutputTokens value. + */ + @Generated + public BinaryData getMaxOutputTokens() { + return this.maxOutputTokens; + } + + /** + * Set the maxOutputTokens property: The maximum output-token count for one response. + * + * @param maxOutputTokens the maxOutputTokens value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setMaxOutputTokens(BinaryData maxOutputTokens) { + this.maxOutputTokens = maxOutputTokens; + return this; + } + + /** + * Get the include property: Additional fields to include in service outputs. + * + * @return the include value. + */ + @Generated + public List getInclude() { + return this.include; + } + + /** + * Set the include property: Additional fields to include in service outputs. + * + * @param include the include value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setInclude(List include) { + this.include = include; + return this; + } + + /** + * Get the interimResponse property: Interim-response settings for latency and tool execution. + * + * @return the interimResponse value. + */ + @Generated + public VoiceAgentInterimResponseConfig getInterimResponse() { + return this.interimResponse; + } + + /** + * Set the interimResponse property: Interim-response settings for latency and tool execution. + * + * @param interimResponse the interimResponse value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setInterimResponse(VoiceAgentInterimResponseConfig interimResponse) { + this.interimResponse = interimResponse; + return this; + } + + /** + * Get the avatar property: Optional avatar configuration. These values are session defaults and may be overridden + * when connecting. + * + * @return the avatar value. + */ + @Generated + public VoiceAgentAvatarConfig getAvatar() { + return this.avatar; + } + + /** + * Set the avatar property: Optional avatar configuration. These values are session defaults and may be overridden + * when connecting. + * + * @param avatar the avatar value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setAvatar(VoiceAgentAvatarConfig avatar) { + this.avatar = avatar; + return this; + } + + /** + * Get the tools property: The tools the voice agent may use. Supported tool kinds are `function` (executed by the + * client), `mcp`, + * `system` (service-managed session controls), and `toolbox`. Server-side tools such as `web_search`, + * `azure_ai_search`, and `openapi` are provided through a toolbox rather than declared directly. + * + * @return the tools value. + */ + @Generated + public List getTools() { + return this.tools; + } + + /** + * Set the tools property: The tools the voice agent may use. Supported tool kinds are `function` (executed by the + * client), `mcp`, + * `system` (service-managed session controls), and `toolbox`. Server-side tools such as `web_search`, + * `azure_ai_search`, and `openapi` are provided through a toolbox rather than declared directly. + * + * @param tools the tools value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setTools(List tools) { + this.tools = tools; + return this; + } + + /** + * Get the toolChoice property: How the model chooses tools for generated responses. `none` prevents tool calls, + * `auto` lets the model decide, + * `required` requires at least one tool call, and a specific function or MCP tool can be selected with an object. + * Defaults to `auto`. + * + * @return the toolChoice value. + */ + @Generated + public BinaryData getToolChoice() { + return this.toolChoice; + } + + /** + * Set the toolChoice property: How the model chooses tools for generated responses. `none` prevents tool calls, + * `auto` lets the model decide, + * `required` requires at least one tool call, and a specific function or MCP tool can be selected with an object. + * Defaults to `auto`. + * + * @param toolChoice the toolChoice value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setToolChoice(BinaryData toolChoice) { + this.toolChoice = toolChoice; + return this; + } + + /** + * Get the parallelToolCalls property: Whether the model may call multiple tools in parallel. + * + * @return the parallelToolCalls value. + */ + @Generated + public Boolean isParallelToolCalls() { + return this.parallelToolCalls; + } + + /** + * Set the parallelToolCalls property: Whether the model may call multiple tools in parallel. + * + * @param parallelToolCalls the parallelToolCalls value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setParallelToolCalls(Boolean parallelToolCalls) { + this.parallelToolCalls = parallelToolCalls; + return this; + } + + /** + * Get the structuredInputs property: Set of structured inputs that participate in prompt template substitution, + * rendered per session before the live session starts. + * + * @return the structuredInputs value. + */ + @Generated + public Map getStructuredInputs() { + return this.structuredInputs; + } + + /** + * Set the structuredInputs property: Set of structured inputs that participate in prompt template substitution, + * rendered per session before the live session starts. + * + * @param structuredInputs the structuredInputs value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setStructuredInputs(Map structuredInputs) { + this.structuredInputs = structuredInputs; + return this; + } + + /** + * Get the store property: Whether conversations with this agent are persisted. A single, all-or-nothing persistence + * switch that defaults to + * `false` (privacy-safe: off by default). When `true`, Foundry persists the full conversation — the + * transcript/event + * timeline and raw audio. When `false`, nothing is persisted and no conversation is surfaced. There is no separate + * audio-logging control; audio is persisted only as part of this switch. Latency/performance telemetry (e.g. + * time-to-first-audio, inter-token latency, interruption) is observability-only (customer trace / App Insights) and + * is not part of the persisted conversation content. + * + * @return the store value. + */ + @Generated + public Boolean isStore() { + return this.store; + } + + /** + * Set the store property: Whether conversations with this agent are persisted. A single, all-or-nothing persistence + * switch that defaults to + * `false` (privacy-safe: off by default). When `true`, Foundry persists the full conversation — the + * transcript/event + * timeline and raw audio. When `false`, nothing is persisted and no conversation is surfaced. There is no separate + * audio-logging control; audio is persisted only as part of this switch. Latency/performance telemetry (e.g. + * time-to-first-audio, inter-token latency, interruption) is observability-only (customer trace / App Insights) and + * is not part of the persisted conversation content. + * + * @param store the store value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setStore(Boolean store) { + this.store = store; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentDefinition setRaiConfig(RaiConfig raiConfig) { + super.setRaiConfig(raiConfig); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("rai_config", getRaiConfig()); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + jsonWriter.writeStringField("model_type", this.modelType == null ? null : this.modelType.toString()); + jsonWriter.writeStringField("model", this.model); + jsonWriter.writeJsonField("conversation_engine", this.conversationEngine); + jsonWriter.writeStringField("instructions", this.instructions); + jsonWriter.writeJsonField("greeting", this.greeting); + jsonWriter.writeJsonField("audio", this.audio); + jsonWriter.writeArrayField("output_modalities", this.outputModalities, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + if (this.maxOutputTokens != null) { + jsonWriter.writeFieldName("max_output_tokens"); + this.maxOutputTokens.writeTo(jsonWriter); + } + jsonWriter.writeArrayField("include", this.include, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + jsonWriter.writeJsonField("interim_response", this.interimResponse); + jsonWriter.writeJsonField("avatar", this.avatar); + jsonWriter.writeArrayField("tools", this.tools, (writer, element) -> writer.writeJson(element)); + if (this.toolChoice != null) { + jsonWriter.writeFieldName("tool_choice"); + this.toolChoice.writeTo(jsonWriter); + } + jsonWriter.writeBooleanField("parallel_tool_calls", this.parallelToolCalls); + jsonWriter.writeMapField("structured_inputs", this.structuredInputs, + (writer, element) -> writer.writeJson(element)); + jsonWriter.writeJsonField("subagent_config", this.subagentConfig); + jsonWriter.writeBooleanField("store", this.store); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentDefinition from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentDefinition if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentDefinition. + */ + @Generated + public static VoiceAgentDefinition fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentDefinition deserializedVoiceAgentDefinition = new VoiceAgentDefinition(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("rai_config".equals(fieldName)) { + deserializedVoiceAgentDefinition.setRaiConfig(RaiConfig.fromJson(reader)); + } else if ("kind".equals(fieldName)) { + deserializedVoiceAgentDefinition.kind = AgentKind.fromString(reader.getString()); + } else if ("model_type".equals(fieldName)) { + deserializedVoiceAgentDefinition.modelType = VoiceModelType.fromString(reader.getString()); + } else if ("model".equals(fieldName)) { + deserializedVoiceAgentDefinition.model = reader.getString(); + } else if ("conversation_engine".equals(fieldName)) { + deserializedVoiceAgentDefinition.conversationEngine = VoiceConversationEngine.fromJson(reader); + } else if ("instructions".equals(fieldName)) { + deserializedVoiceAgentDefinition.instructions = reader.getString(); + } else if ("greeting".equals(fieldName)) { + deserializedVoiceAgentDefinition.greeting = VoiceAgentGreetingConfig.fromJson(reader); + } else if ("audio".equals(fieldName)) { + deserializedVoiceAgentDefinition.audio = VoiceAgentAudioConfig.fromJson(reader); + } else if ("output_modalities".equals(fieldName)) { + List outputModalities + = reader.readArray(reader1 -> VoiceOutputModality.fromString(reader1.getString())); + deserializedVoiceAgentDefinition.outputModalities = outputModalities; + } else if ("max_output_tokens".equals(fieldName)) { + deserializedVoiceAgentDefinition.maxOutputTokens + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("include".equals(fieldName)) { + List include + = reader.readArray(reader1 -> VoiceAgentSessionIncludeOption.fromString(reader1.getString())); + deserializedVoiceAgentDefinition.include = include; + } else if ("interim_response".equals(fieldName)) { + deserializedVoiceAgentDefinition.interimResponse = VoiceAgentInterimResponseConfig.fromJson(reader); + } else if ("avatar".equals(fieldName)) { + deserializedVoiceAgentDefinition.avatar = VoiceAgentAvatarConfig.fromJson(reader); + } else if ("tools".equals(fieldName)) { + List tools = reader.readArray(reader1 -> VoiceAgentTool.fromJson(reader1)); + deserializedVoiceAgentDefinition.tools = tools; + } else if ("tool_choice".equals(fieldName)) { + deserializedVoiceAgentDefinition.toolChoice + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("parallel_tool_calls".equals(fieldName)) { + deserializedVoiceAgentDefinition.parallelToolCalls = reader.getNullable(JsonReader::getBoolean); + } else if ("structured_inputs".equals(fieldName)) { + Map structuredInputs + = reader.readMap(reader1 -> StructuredInputDefinition.fromJson(reader1)); + deserializedVoiceAgentDefinition.structuredInputs = structuredInputs; + } else if ("subagent_config".equals(fieldName)) { + deserializedVoiceAgentDefinition.subagentConfig = VoiceAgentSubagentConfig.fromJson(reader); + } else if ("store".equals(fieldName)) { + deserializedVoiceAgentDefinition.store = reader.getNullable(JsonReader::getBoolean); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentDefinition; + }); + } + + /* + * The engine that owns conversation handling for this voice agent. Exactly one of this property and the + * model-backed configuration (`model_type` with `model`) must be provided. When this property is provided, + * `model_type`, `model`, `instructions`, `tools`, and `tool_choice` must be omitted, and `greeting.tool_choice` + * cannot be `required`, because the engine owns the conversation logic. The initial implementation supports a + * hosted-agent engine. + */ + @Generated + private VoiceConversationEngine conversationEngine; + + /* + * Optional configuration for sibling Foundry text agents that this voice agent may consult as background + * specialists. + */ + @Generated + private VoiceAgentSubagentConfig subagentConfig; + + /** + * Creates an instance of VoiceAgentDefinition class. + */ + @Generated + public VoiceAgentDefinition() { + } + + /** + * Set the modelType property: How the model backing this voice agent is served. Required with `model` for a + * model-backed voice agent and omitted when `conversation_engine` is provided. This is independent of the + * architecture (realtime or cascaded), which the service derives from the selected model. + * + * @param modelType the modelType value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setModelType(VoiceModelType modelType) { + this.modelType = modelType; + return this; + } + + /** + * Set the model property: The model to use for this agent. Required with `model_type` for a model-backed voice + * agent and omitted when `conversation_engine` is provided. The model must support realtime or cascaded voice. + * + * @param model the model value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setModel(String model) { + this.model = model; + return this; + } + + /** + * Get the conversationEngine property: The engine that owns conversation handling for this voice agent. Exactly one + * of this property and the model-backed configuration (`model_type` with `model`) must be provided. When this + * property is provided, `model_type`, `model`, `instructions`, `tools`, and `tool_choice` must be omitted, and + * `greeting.tool_choice` cannot be `required`, because the engine owns the conversation logic. The initial + * implementation supports a hosted-agent engine. + * + * @return the conversationEngine value. + */ + @Generated + public VoiceConversationEngine getConversationEngine() { + return this.conversationEngine; + } + + /** + * Set the conversationEngine property: The engine that owns conversation handling for this voice agent. Exactly one + * of this property and the model-backed configuration (`model_type` with `model`) must be provided. When this + * property is provided, `model_type`, `model`, `instructions`, `tools`, and `tool_choice` must be omitted, and + * `greeting.tool_choice` cannot be `required`, because the engine owns the conversation logic. The initial + * implementation supports a hosted-agent engine. + * + * @param conversationEngine the conversationEngine value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setConversationEngine(VoiceConversationEngine conversationEngine) { + this.conversationEngine = conversationEngine; + return this; + } + + /** + * Get the subagentConfig property: Optional configuration for sibling Foundry text agents that this voice agent may + * consult as background specialists. + * + * @return the subagentConfig value. + */ + @Generated + public VoiceAgentSubagentConfig getSubagentConfig() { + return this.subagentConfig; + } + + /** + * Set the subagentConfig property: Optional configuration for sibling Foundry text agents that this voice agent may + * consult as background specialists. + * + * @param subagentConfig the subagentConfig value to set. + * @return the VoiceAgentDefinition object itself. + */ + @Generated + public VoiceAgentDefinition setSubagentConfig(VoiceAgentSubagentConfig subagentConfig) { + this.subagentConfig = subagentConfig; + return this; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEchoCancellation.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEchoCancellation.java new file mode 100644 index 0000000000000..5dddbbf9fb292 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEchoCancellation.java @@ -0,0 +1,145 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Server-side echo cancellation settings for input audio. + */ +@Fluent +public final class VoiceAgentEchoCancellation implements JsonSerializable { + + /* + * The echo cancellation implementation. Always `server_echo_cancellation`. + */ + @Generated + private final String type = "server_echo_cancellation"; + + /* + * Whether reference audio comes from server playback or a client-provided channel. + */ + @Generated + private VoiceAgentEchoCancellationReferenceSource referenceSource; + + /* + * The number of input channels. Use two interleaved channels when `reference_source` is `client`. + */ + @Generated + private Integer channels; + + /** + * Creates an instance of VoiceAgentEchoCancellation class. + */ + @Generated + public VoiceAgentEchoCancellation() { + } + + /** + * Get the type property: The echo cancellation implementation. Always `server_echo_cancellation`. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * Get the referenceSource property: Whether reference audio comes from server playback or a client-provided + * channel. + * + * @return the referenceSource value. + */ + @Generated + public VoiceAgentEchoCancellationReferenceSource getReferenceSource() { + return this.referenceSource; + } + + /** + * Set the referenceSource property: Whether reference audio comes from server playback or a client-provided + * channel. + * + * @param referenceSource the referenceSource value to set. + * @return the VoiceAgentEchoCancellation object itself. + */ + @Generated + public VoiceAgentEchoCancellation setReferenceSource(VoiceAgentEchoCancellationReferenceSource referenceSource) { + this.referenceSource = referenceSource; + return this; + } + + /** + * Get the channels property: The number of input channels. Use two interleaved channels when `reference_source` is + * `client`. + * + * @return the channels value. + */ + @Generated + public Integer getChannels() { + return this.channels; + } + + /** + * Set the channels property: The number of input channels. Use two interleaved channels when `reference_source` is + * `client`. + * + * @param channels the channels value to set. + * @return the VoiceAgentEchoCancellation object itself. + */ + @Generated + public VoiceAgentEchoCancellation setChannels(Integer channels) { + this.channels = channels; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("reference_source", + this.referenceSource == null ? null : this.referenceSource.toString()); + jsonWriter.writeNumberField("channels", this.channels); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentEchoCancellation from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentEchoCancellation if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentEchoCancellation. + */ + @Generated + public static VoiceAgentEchoCancellation fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentEchoCancellation deserializedVoiceAgentEchoCancellation = new VoiceAgentEchoCancellation(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("reference_source".equals(fieldName)) { + deserializedVoiceAgentEchoCancellation.referenceSource + = VoiceAgentEchoCancellationReferenceSource.fromString(reader.getString()); + } else if ("channels".equals(fieldName)) { + deserializedVoiceAgentEchoCancellation.channels = reader.getNullable(JsonReader::getInt); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentEchoCancellation; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEchoCancellationReferenceSource.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEchoCancellationReferenceSource.java new file mode 100644 index 0000000000000..d1cf9181a1f4b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEchoCancellationReferenceSource.java @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * The source of reference audio used for echo cancellation. + */ +public enum VoiceAgentEchoCancellationReferenceSource { + /** + * Enum value server. + */ + SERVER("server"), + + /** + * Enum value client. + */ + CLIENT("client"); + + /** + * The actual serialized value for a VoiceAgentEchoCancellationReferenceSource instance. + */ + private final String value; + + VoiceAgentEchoCancellationReferenceSource(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a VoiceAgentEchoCancellationReferenceSource instance. + * + * @param value the serialized value to parse. + * @return the parsed VoiceAgentEchoCancellationReferenceSource object, or null if unable to parse. + */ + public static VoiceAgentEchoCancellationReferenceSource fromString(String value) { + if (value == null) { + return null; + } + VoiceAgentEchoCancellationReferenceSource[] items = VoiceAgentEchoCancellationReferenceSource.values(); + for (VoiceAgentEchoCancellationReferenceSource item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndConversationSystemTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndConversationSystemTool.java new file mode 100644 index 0000000000000..eee57892422e4 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndConversationSystemTool.java @@ -0,0 +1,112 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A service-managed control that ends the active conversation. + */ +@Fluent +public final class VoiceAgentEndConversationSystemTool extends VoiceAgentSystemTool { + + /* + * The tool kind. + */ + @Generated + private final String type = "system"; + + /* + * The service-managed control action. Known values are stable; additional values may be added over time. + */ + @Generated + private VoiceAgentSystemToolName name = VoiceAgentSystemToolName.END_CONVERSATION; + + /** + * Creates an instance of VoiceAgentEndConversationSystemTool class. + */ + @Generated + public VoiceAgentEndConversationSystemTool() { + } + + /** + * Get the type property: The tool kind. + * + * @return the type value. + */ + @Generated + @Override + public String getType() { + return this.type; + } + + /** + * Get the name property: The service-managed control action. Known values are stable; additional values may be + * added over time. + * + * @return the name value. + */ + @Generated + @Override + public VoiceAgentSystemToolName getName() { + return this.name; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentEndConversationSystemTool setDescription(String description) { + super.setDescription(description); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("description", getDescription()); + jsonWriter.writeStringField("name", this.name == null ? null : this.name.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentEndConversationSystemTool from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentEndConversationSystemTool if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentEndConversationSystemTool. + */ + @Generated + public static VoiceAgentEndConversationSystemTool fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentEndConversationSystemTool deserializedVoiceAgentEndConversationSystemTool + = new VoiceAgentEndConversationSystemTool(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("description".equals(fieldName)) { + deserializedVoiceAgentEndConversationSystemTool.setDescription(reader.getString()); + } else if ("name".equals(fieldName)) { + deserializedVoiceAgentEndConversationSystemTool.name + = VoiceAgentSystemToolName.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentEndConversationSystemTool; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetection.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetection.java new file mode 100644 index 0000000000000..97e6e6283e72a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetection.java @@ -0,0 +1,159 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; + +/** + * Semantic end-of-utterance detection configuration. + */ +@Fluent +public final class VoiceAgentEndOfUtteranceDetection implements JsonSerializable { + + /* + * The semantic detection model. + */ + @Generated + private final VoiceAgentEndOfUtteranceDetectionModel model; + + /* + * The sensitivity threshold. + */ + @Generated + private VoiceAgentEndOfUtteranceThresholdLevel thresholdLevel; + + /* + * The detection timeout in milliseconds. + */ + @Generated + private Long timeoutMs; + + /** + * Creates an instance of VoiceAgentEndOfUtteranceDetection class. + * + * @param model the model value to set. + */ + @Generated + public VoiceAgentEndOfUtteranceDetection(VoiceAgentEndOfUtteranceDetectionModel model) { + this.model = model; + } + + /** + * Get the model property: The semantic detection model. + * + * @return the model value. + */ + @Generated + public VoiceAgentEndOfUtteranceDetectionModel getModel() { + return this.model; + } + + /** + * Get the thresholdLevel property: The sensitivity threshold. + * + * @return the thresholdLevel value. + */ + @Generated + public VoiceAgentEndOfUtteranceThresholdLevel getThresholdLevel() { + return this.thresholdLevel; + } + + /** + * Set the thresholdLevel property: The sensitivity threshold. + * + * @param thresholdLevel the thresholdLevel value to set. + * @return the VoiceAgentEndOfUtteranceDetection object itself. + */ + @Generated + public VoiceAgentEndOfUtteranceDetection setThresholdLevel(VoiceAgentEndOfUtteranceThresholdLevel thresholdLevel) { + this.thresholdLevel = thresholdLevel; + return this; + } + + /** + * Get the timeoutMs property: The detection timeout in milliseconds. + * + * @return the timeoutMs value. + */ + @Generated + public Duration getTimeoutMs() { + if (this.timeoutMs == null) { + return null; + } + return Duration.ofMillis(this.timeoutMs); + } + + /** + * Set the timeoutMs property: The detection timeout in milliseconds. + * + * @param timeoutMs the timeoutMs value to set. + * @return the VoiceAgentEndOfUtteranceDetection object itself. + */ + @Generated + public VoiceAgentEndOfUtteranceDetection setTimeoutMs(Duration timeoutMs) { + if (timeoutMs == null) { + this.timeoutMs = null; + } else { + this.timeoutMs = timeoutMs.toMillis(); + } + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("model", this.model == null ? null : this.model.toString()); + jsonWriter.writeStringField("threshold_level", + this.thresholdLevel == null ? null : this.thresholdLevel.toString()); + jsonWriter.writeNumberField("timeout_ms", this.timeoutMs); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentEndOfUtteranceDetection from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentEndOfUtteranceDetection if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentEndOfUtteranceDetection. + */ + @Generated + public static VoiceAgentEndOfUtteranceDetection fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentEndOfUtteranceDetectionModel model = null; + VoiceAgentEndOfUtteranceThresholdLevel thresholdLevel = null; + Long timeoutMs = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("model".equals(fieldName)) { + model = VoiceAgentEndOfUtteranceDetectionModel.fromString(reader.getString()); + } else if ("threshold_level".equals(fieldName)) { + thresholdLevel = VoiceAgentEndOfUtteranceThresholdLevel.fromString(reader.getString()); + } else if ("timeout_ms".equals(fieldName)) { + timeoutMs = reader.getNullable(JsonReader::getLong); + } else { + reader.skipChildren(); + } + } + VoiceAgentEndOfUtteranceDetection deserializedVoiceAgentEndOfUtteranceDetection + = new VoiceAgentEndOfUtteranceDetection(model); + deserializedVoiceAgentEndOfUtteranceDetection.thresholdLevel = thresholdLevel; + deserializedVoiceAgentEndOfUtteranceDetection.timeoutMs = timeoutMs; + return deserializedVoiceAgentEndOfUtteranceDetection; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetectionModel.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetectionModel.java new file mode 100644 index 0000000000000..9d03c5c900dd2 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetectionModel.java @@ -0,0 +1,74 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The semantic end-of-utterance detection model. + */ +public final class VoiceAgentEndOfUtteranceDetectionModel + extends ExpandableStringEnum { + + /** + * The default semantic detection model. + */ + @Generated + public static final VoiceAgentEndOfUtteranceDetectionModel SEMANTIC_DETECTION_V1 + = fromString("semantic_detection_v1"); + + /** + * The English-optimized semantic detection model. + */ + @Generated + public static final VoiceAgentEndOfUtteranceDetectionModel SEMANTIC_DETECTION_V1_EN + = fromString("semantic_detection_v1_en"); + + /** + * The multilingual semantic detection model. + */ + @Generated + public static final VoiceAgentEndOfUtteranceDetectionModel SEMANTIC_DETECTION_V1_MULTILINGUAL + = fromString("semantic_detection_v1_multilingual"); + + /** + * The smart end-of-turn detection model. + */ + @Generated + public static final VoiceAgentEndOfUtteranceDetectionModel SMART_END_OF_TURN_DETECTION + = fromString("smart_end_of_turn_detection"); + + /** + * Creates a new instance of VoiceAgentEndOfUtteranceDetectionModel value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAgentEndOfUtteranceDetectionModel() { + } + + /** + * Creates or finds a VoiceAgentEndOfUtteranceDetectionModel from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAgentEndOfUtteranceDetectionModel. + */ + @Generated + public static VoiceAgentEndOfUtteranceDetectionModel fromString(String name) { + return fromString(name, VoiceAgentEndOfUtteranceDetectionModel.class); + } + + /** + * Gets known VoiceAgentEndOfUtteranceDetectionModel values. + * + * @return known VoiceAgentEndOfUtteranceDetectionModel values. + */ + @Generated + public static Collection values() { + return values(VoiceAgentEndOfUtteranceDetectionModel.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceThresholdLevel.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceThresholdLevel.java new file mode 100644 index 0000000000000..c44063108ba2a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceThresholdLevel.java @@ -0,0 +1,70 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The sensitivity threshold for semantic end-of-utterance detection. + */ +public final class VoiceAgentEndOfUtteranceThresholdLevel + extends ExpandableStringEnum { + + /** + * The low sensitivity threshold. + */ + @Generated + public static final VoiceAgentEndOfUtteranceThresholdLevel LOW = fromString("low"); + + /** + * The medium sensitivity threshold. + */ + @Generated + public static final VoiceAgentEndOfUtteranceThresholdLevel MEDIUM = fromString("medium"); + + /** + * The high sensitivity threshold. + */ + @Generated + public static final VoiceAgentEndOfUtteranceThresholdLevel HIGH = fromString("high"); + + /** + * The service-selected sensitivity threshold. + */ + @Generated + public static final VoiceAgentEndOfUtteranceThresholdLevel DEFAULT = fromString("default"); + + /** + * Creates a new instance of VoiceAgentEndOfUtteranceThresholdLevel value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAgentEndOfUtteranceThresholdLevel() { + } + + /** + * Creates or finds a VoiceAgentEndOfUtteranceThresholdLevel from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAgentEndOfUtteranceThresholdLevel. + */ + @Generated + public static VoiceAgentEndOfUtteranceThresholdLevel fromString(String name) { + return fromString(name, VoiceAgentEndOfUtteranceThresholdLevel.class); + } + + /** + * Gets known VoiceAgentEndOfUtteranceThresholdLevel values. + * + * @return known VoiceAgentEndOfUtteranceThresholdLevel values. + */ + @Generated + public static Collection values() { + return values(VoiceAgentEndOfUtteranceThresholdLevel.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentFunctionTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentFunctionTool.java new file mode 100644 index 0000000000000..94e2fcce58763 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentFunctionTool.java @@ -0,0 +1,181 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A native function tool executed by the client. + */ +@Fluent +public final class VoiceAgentFunctionTool extends VoiceAgentTool { + + /* + * The tool kind. + */ + @Generated + private String type = "function"; + + /* + * The description of the function, including guidance on when and how + * to call it, and guidance about what to tell the user when calling + * (if anything). + */ + @Generated + private String description; + + /* + * Parameters of the function in JSON Schema. + */ + @Generated + private BinaryData parameters; + + /* + * The function name. + */ + @Generated + private final String name; + + /** + * Creates an instance of VoiceAgentFunctionTool class. + * + * @param name the name value to set. + */ + @Generated + public VoiceAgentFunctionTool(String name) { + this.name = name; + } + + /** + * Get the type property: The tool kind. + * + * @return the type value. + */ + @Generated + @Override + public String getType() { + return this.type; + } + + /** + * Get the description property: The description of the function, including guidance on when and how + * to call it, and guidance about what to tell the user when calling + * (if anything). + * + * @return the description value. + */ + @Generated + public String getDescription() { + return this.description; + } + + /** + * Set the description property: The description of the function, including guidance on when and how + * to call it, and guidance about what to tell the user when calling + * (if anything). + * + * @param description the description value to set. + * @return the VoiceAgentFunctionTool object itself. + */ + @Generated + public VoiceAgentFunctionTool setDescription(String description) { + this.description = description; + return this; + } + + /** + * Get the parameters property: Parameters of the function in JSON Schema. + * + * @return the parameters value. + */ + @Generated + public BinaryData getParameters() { + return this.parameters; + } + + /** + * Get the name property: The function name. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("description", this.description); + if (this.parameters != null) { + jsonWriter.writeFieldName("parameters"); + this.parameters.writeTo(jsonWriter); + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentFunctionTool from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentFunctionTool if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentFunctionTool. + */ + @Generated + public static VoiceAgentFunctionTool fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String name = null; + String type = "function"; + String description = null; + BinaryData parameters = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("type".equals(fieldName)) { + type = reader.getString(); + } else if ("description".equals(fieldName)) { + description = reader.getString(); + } else if ("parameters".equals(fieldName)) { + parameters + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else { + reader.skipChildren(); + } + } + VoiceAgentFunctionTool deserializedVoiceAgentFunctionTool = new VoiceAgentFunctionTool(name); + deserializedVoiceAgentFunctionTool.type = type; + deserializedVoiceAgentFunctionTool.description = description; + deserializedVoiceAgentFunctionTool.parameters = parameters; + return deserializedVoiceAgentFunctionTool; + }); + } + + /** + * Set the parameters property: Parameters of the function in JSON Schema. + * + * @param parameters the parameters value to set. + * @return the VoiceAgentFunctionTool object itself. + */ + @Generated + public VoiceAgentFunctionTool setParameters(BinaryData parameters) { + this.parameters = parameters; + return this; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentGreetingConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentGreetingConfig.java new file mode 100644 index 0000000000000..818a6e2210127 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentGreetingConfig.java @@ -0,0 +1,107 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Session-start greeting configuration for a voice agent. + */ +@Immutable +public class VoiceAgentGreetingConfig implements JsonSerializable { + + /* + * The greeting mode. + */ + @Generated + private String type = "VoiceAgentGreetingConfig"; + + /** + * Creates an instance of VoiceAgentGreetingConfig class. + */ + @Generated + public VoiceAgentGreetingConfig() { + } + + /** + * Get the type property: The greeting mode. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentGreetingConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentGreetingConfig if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentGreetingConfig. + */ + @Generated + public static VoiceAgentGreetingConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("template".equals(discriminatorValue)) { + return VoiceAgentTemplateGreetingConfig.fromJson(readerToUse.reset()); + } else if ("llm_generated".equals(discriminatorValue)) { + return VoiceAgentLlmGeneratedGreetingConfig.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static VoiceAgentGreetingConfig fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentGreetingConfig deserializedVoiceAgentGreetingConfig = new VoiceAgentGreetingConfig(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedVoiceAgentGreetingConfig.type = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentGreetingConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscription.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscription.java new file mode 100644 index 0000000000000..a1153083dee91 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscription.java @@ -0,0 +1,354 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * Asynchronous input-audio transcription configuration. Extends the OpenAI Realtime transcription + * options with the Azure and MAI transcription models, custom speech models, and phrase hints. + */ +@Fluent +public final class VoiceAgentInputTranscription implements JsonSerializable { + + /* + * The language of the input audio. Supplying the input language in + * [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) (e.g. `en`) format + * will improve accuracy and latency. + */ + @Generated + private String language; + + /* + * Possible languages of the input audio, in [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) + * format. Supported by `gpt-transcribe` and `gpt-live-transcribe`. + */ + @Generated + private List languages; + + /* + * Words or phrases to guide transcription of the input audio. Supported by `gpt-transcribe` and + * `gpt-live-transcribe`. + */ + @Generated + private List keywords; + + /* + * An optional text to guide the model's style or continue a previous audio + * segment. + * For `whisper-1`, the [prompt is a list of keywords](/docs/guides/speech-to-text#prompting). + * For `gpt-4o-transcribe` models (excluding `gpt-4o-transcribe-diarize`), the prompt is a free text string, for + * example "expect words related to technology". + * Prompt is not supported with `gpt-realtime-whisper` in GA Realtime sessions. + */ + @Generated + private String prompt; + + /* + * Controls how long the model waits before emitting transcription text. + * Higher values can improve transcription accuracy at the cost of latency. + * Only supported with `gpt-realtime-whisper` in GA Realtime sessions. + */ + @Generated + private VoiceAgentAudioInputConfigTranscriptionDelay delay; + + /* + * The transcription model identifier. Configure customer custom speech deployments in `custom_speech`. + */ + @Generated + private final VoiceAgentInputTranscriptionModel model; + + /* + * Optional customer custom speech deployment configuration, keyed by locale. + */ + @Generated + private Map customSpeech; + + /* + * Optional phrase hints that bias recognition toward domain terms. + */ + @Generated + private List phraseList; + + /** + * Creates an instance of VoiceAgentInputTranscription class. + * + * @param model the model value to set. + */ + @Generated + public VoiceAgentInputTranscription(VoiceAgentInputTranscriptionModel model) { + this.model = model; + } + + /** + * Get the language property: The language of the input audio. Supplying the input language in + * [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) (e.g. `en`) format + * will improve accuracy and latency. + * + * @return the language value. + */ + @Generated + public String getLanguage() { + return this.language; + } + + /** + * Set the language property: The language of the input audio. Supplying the input language in + * [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) (e.g. `en`) format + * will improve accuracy and latency. + * + * @param language the language value to set. + * @return the VoiceAgentInputTranscription object itself. + */ + @Generated + public VoiceAgentInputTranscription setLanguage(String language) { + this.language = language; + return this; + } + + /** + * Get the languages property: Possible languages of the input audio, in + * [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format. Supported by `gpt-transcribe` and + * `gpt-live-transcribe`. + * + * @return the languages value. + */ + @Generated + public List getLanguages() { + return this.languages; + } + + /** + * Set the languages property: Possible languages of the input audio, in + * [ISO-639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) format. Supported by `gpt-transcribe` and + * `gpt-live-transcribe`. + * + * @param languages the languages value to set. + * @return the VoiceAgentInputTranscription object itself. + */ + @Generated + public VoiceAgentInputTranscription setLanguages(List languages) { + this.languages = languages; + return this; + } + + /** + * Get the keywords property: Words or phrases to guide transcription of the input audio. Supported by + * `gpt-transcribe` and `gpt-live-transcribe`. + * + * @return the keywords value. + */ + @Generated + public List getKeywords() { + return this.keywords; + } + + /** + * Set the keywords property: Words or phrases to guide transcription of the input audio. Supported by + * `gpt-transcribe` and `gpt-live-transcribe`. + * + * @param keywords the keywords value to set. + * @return the VoiceAgentInputTranscription object itself. + */ + @Generated + public VoiceAgentInputTranscription setKeywords(List keywords) { + this.keywords = keywords; + return this; + } + + /** + * Get the prompt property: An optional text to guide the model's style or continue a previous audio + * segment. + * For `whisper-1`, the [prompt is a list of keywords](/docs/guides/speech-to-text#prompting). + * For `gpt-4o-transcribe` models (excluding `gpt-4o-transcribe-diarize`), the prompt is a free text string, for + * example "expect words related to technology". + * Prompt is not supported with `gpt-realtime-whisper` in GA Realtime sessions. + * + * @return the prompt value. + */ + @Generated + public String getPrompt() { + return this.prompt; + } + + /** + * Set the prompt property: An optional text to guide the model's style or continue a previous audio + * segment. + * For `whisper-1`, the [prompt is a list of keywords](/docs/guides/speech-to-text#prompting). + * For `gpt-4o-transcribe` models (excluding `gpt-4o-transcribe-diarize`), the prompt is a free text string, for + * example "expect words related to technology". + * Prompt is not supported with `gpt-realtime-whisper` in GA Realtime sessions. + * + * @param prompt the prompt value to set. + * @return the VoiceAgentInputTranscription object itself. + */ + @Generated + public VoiceAgentInputTranscription setPrompt(String prompt) { + this.prompt = prompt; + return this; + } + + /** + * Get the delay property: Controls how long the model waits before emitting transcription text. + * Higher values can improve transcription accuracy at the cost of latency. + * Only supported with `gpt-realtime-whisper` in GA Realtime sessions. + * + * @return the delay value. + */ + @Generated + public VoiceAgentAudioInputConfigTranscriptionDelay getDelay() { + return this.delay; + } + + /** + * Set the delay property: Controls how long the model waits before emitting transcription text. + * Higher values can improve transcription accuracy at the cost of latency. + * Only supported with `gpt-realtime-whisper` in GA Realtime sessions. + * + * @param delay the delay value to set. + * @return the VoiceAgentInputTranscription object itself. + */ + @Generated + public VoiceAgentInputTranscription setDelay(VoiceAgentAudioInputConfigTranscriptionDelay delay) { + this.delay = delay; + return this; + } + + /** + * Get the model property: The transcription model identifier. Configure customer custom speech deployments in + * `custom_speech`. + * + * @return the model value. + */ + @Generated + public VoiceAgentInputTranscriptionModel getModel() { + return this.model; + } + + /** + * Get the customSpeech property: Optional customer custom speech deployment configuration, keyed by locale. + * + * @return the customSpeech value. + */ + @Generated + public Map getCustomSpeech() { + return this.customSpeech; + } + + /** + * Set the customSpeech property: Optional customer custom speech deployment configuration, keyed by locale. + * + * @param customSpeech the customSpeech value to set. + * @return the VoiceAgentInputTranscription object itself. + */ + @Generated + public VoiceAgentInputTranscription setCustomSpeech(Map customSpeech) { + this.customSpeech = customSpeech; + return this; + } + + /** + * Get the phraseList property: Optional phrase hints that bias recognition toward domain terms. + * + * @return the phraseList value. + */ + @Generated + public List getPhraseList() { + return this.phraseList; + } + + /** + * Set the phraseList property: Optional phrase hints that bias recognition toward domain terms. + * + * @param phraseList the phraseList value to set. + * @return the VoiceAgentInputTranscription object itself. + */ + @Generated + public VoiceAgentInputTranscription setPhraseList(List phraseList) { + this.phraseList = phraseList; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("model", this.model == null ? null : this.model.toString()); + jsonWriter.writeStringField("language", this.language); + jsonWriter.writeArrayField("languages", this.languages, (writer, element) -> writer.writeString(element)); + jsonWriter.writeArrayField("keywords", this.keywords, (writer, element) -> writer.writeString(element)); + jsonWriter.writeStringField("prompt", this.prompt); + jsonWriter.writeStringField("delay", this.delay == null ? null : this.delay.toString()); + jsonWriter.writeMapField("custom_speech", this.customSpeech, (writer, element) -> writer.writeString(element)); + jsonWriter.writeArrayField("phrase_list", this.phraseList, (writer, element) -> writer.writeString(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentInputTranscription from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentInputTranscription if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentInputTranscription. + */ + @Generated + public static VoiceAgentInputTranscription fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentInputTranscriptionModel model = null; + String language = null; + List languages = null; + List keywords = null; + String prompt = null; + VoiceAgentAudioInputConfigTranscriptionDelay delay = null; + Map customSpeech = null; + List phraseList = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("model".equals(fieldName)) { + model = VoiceAgentInputTranscriptionModel.fromString(reader.getString()); + } else if ("language".equals(fieldName)) { + language = reader.getString(); + } else if ("languages".equals(fieldName)) { + languages = reader.readArray(reader1 -> reader1.getString()); + } else if ("keywords".equals(fieldName)) { + keywords = reader.readArray(reader1 -> reader1.getString()); + } else if ("prompt".equals(fieldName)) { + prompt = reader.getString(); + } else if ("delay".equals(fieldName)) { + delay = VoiceAgentAudioInputConfigTranscriptionDelay.fromString(reader.getString()); + } else if ("custom_speech".equals(fieldName)) { + customSpeech = reader.readMap(reader1 -> reader1.getString()); + } else if ("phrase_list".equals(fieldName)) { + phraseList = reader.readArray(reader1 -> reader1.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentInputTranscription deserializedVoiceAgentInputTranscription + = new VoiceAgentInputTranscription(model); + deserializedVoiceAgentInputTranscription.language = language; + deserializedVoiceAgentInputTranscription.languages = languages; + deserializedVoiceAgentInputTranscription.keywords = keywords; + deserializedVoiceAgentInputTranscription.prompt = prompt; + deserializedVoiceAgentInputTranscription.delay = delay; + deserializedVoiceAgentInputTranscription.customSpeech = customSpeech; + deserializedVoiceAgentInputTranscription.phraseList = phraseList; + return deserializedVoiceAgentInputTranscription; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscriptionModel.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscriptionModel.java new file mode 100644 index 0000000000000..d40de2b6704b9 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscriptionModel.java @@ -0,0 +1,103 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The input-audio transcription model identifier. This is a model name, not a Foundry deployment name. Mirrors the + * transcription models supported by the managed + * voice backend, covering the OpenAI Realtime transcription models plus the Azure and MAI models. + * Additional values may be added over time. + */ +public final class VoiceAgentInputTranscriptionModel extends ExpandableStringEnum { + + /** + * OpenAI Whisper. + */ + @Generated + public static final VoiceAgentInputTranscriptionModel WHISPER_1 = fromString("whisper-1"); + + /** + * OpenAI GPT Realtime Whisper. + */ + @Generated + public static final VoiceAgentInputTranscriptionModel GPT_REALTIME_WHISPER = fromString("gpt-realtime-whisper"); + + /** + * OpenAI GPT-4o transcribe. + */ + @Generated + public static final VoiceAgentInputTranscriptionModel GPT_4O_TRANSCRIBE = fromString("gpt-4o-transcribe"); + + /** + * OpenAI GPT-4o mini transcribe. + */ + @Generated + public static final VoiceAgentInputTranscriptionModel GPT_4O_MINI_TRANSCRIBE = fromString("gpt-4o-mini-transcribe"); + + /** + * OpenAI GPT-4o transcribe with speaker diarization. + */ + @Generated + public static final VoiceAgentInputTranscriptionModel GPT_4O_TRANSCRIBE_DIARIZE + = fromString("gpt-4o-transcribe-diarize"); + + /** + * OpenAI GPT Transcribe. + */ + @Generated + public static final VoiceAgentInputTranscriptionModel GPT_TRANSCRIBE = fromString("gpt-transcribe"); + + /** + * OpenAI GPT Live Transcribe. + */ + @Generated + public static final VoiceAgentInputTranscriptionModel GPT_LIVE_TRANSCRIBE = fromString("gpt-live-transcribe"); + + /** + * MAI transcription. + */ + @Generated + public static final VoiceAgentInputTranscriptionModel MAI_TRANSCRIBE = fromString("mai-transcribe"); + + /** + * Azure AI Speech to text. + */ + @Generated + public static final VoiceAgentInputTranscriptionModel AZURE_SPEECH = fromString("azure-speech"); + + /** + * Creates a new instance of VoiceAgentInputTranscriptionModel value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAgentInputTranscriptionModel() { + } + + /** + * Creates or finds a VoiceAgentInputTranscriptionModel from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAgentInputTranscriptionModel. + */ + @Generated + public static VoiceAgentInputTranscriptionModel fromString(String name) { + return fromString(name, VoiceAgentInputTranscriptionModel.class); + } + + /** + * Gets known VoiceAgentInputTranscriptionModel values. + * + * @return known VoiceAgentInputTranscriptionModel values. + */ + @Generated + public static Collection values() { + return values(VoiceAgentInputTranscriptionModel.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInterimResponseConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInterimResponseConfig.java new file mode 100644 index 0000000000000..dc7b0e798be48 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInterimResponseConfig.java @@ -0,0 +1,183 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; +import java.util.List; + +/** + * Fields shared by interim-response configurations. + */ +@Fluent +public class VoiceAgentInterimResponseConfig implements JsonSerializable { + + /* + * The interim-response implementation. + */ + @Generated + private String type = "VoiceAgentInterimResponseConfig"; + + /* + * Conditions that may trigger one interim response. + */ + @Generated + private List triggers; + + /* + * The latency threshold in milliseconds. + */ + @Generated + private Long latencyThresholdMs; + + /** + * Creates an instance of VoiceAgentInterimResponseConfig class. + */ + @Generated + public VoiceAgentInterimResponseConfig() { + } + + /** + * Get the type property: The interim-response implementation. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * Get the triggers property: Conditions that may trigger one interim response. + * + * @return the triggers value. + */ + @Generated + public List getTriggers() { + return this.triggers; + } + + /** + * Set the triggers property: Conditions that may trigger one interim response. + * + * @param triggers the triggers value to set. + * @return the VoiceAgentInterimResponseConfig object itself. + */ + @Generated + public VoiceAgentInterimResponseConfig setTriggers(List triggers) { + this.triggers = triggers; + return this; + } + + /** + * Get the latencyThresholdMs property: The latency threshold in milliseconds. + * + * @return the latencyThresholdMs value. + */ + @Generated + public Duration getLatencyThresholdMs() { + if (this.latencyThresholdMs == null) { + return null; + } + return Duration.ofMillis(this.latencyThresholdMs); + } + + /** + * Set the latencyThresholdMs property: The latency threshold in milliseconds. + * + * @param latencyThresholdMs the latencyThresholdMs value to set. + * @return the VoiceAgentInterimResponseConfig object itself. + */ + @Generated + public VoiceAgentInterimResponseConfig setLatencyThresholdMs(Duration latencyThresholdMs) { + if (latencyThresholdMs == null) { + this.latencyThresholdMs = null; + } else { + this.latencyThresholdMs = latencyThresholdMs.toMillis(); + } + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeArrayField("triggers", this.triggers, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + jsonWriter.writeNumberField("latency_threshold_ms", this.latencyThresholdMs); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentInterimResponseConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentInterimResponseConfig if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentInterimResponseConfig. + */ + @Generated + public static VoiceAgentInterimResponseConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("static_interim_response".equals(discriminatorValue)) { + return VoiceAgentStaticInterimResponseConfig.fromJson(readerToUse.reset()); + } else if ("llm_interim_response".equals(discriminatorValue)) { + return VoiceAgentLlmInterimResponseConfig.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static VoiceAgentInterimResponseConfig fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentInterimResponseConfig deserializedVoiceAgentInterimResponseConfig + = new VoiceAgentInterimResponseConfig(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedVoiceAgentInterimResponseConfig.type = reader.getString(); + } else if ("triggers".equals(fieldName)) { + List triggers + = reader.readArray(reader1 -> VoiceAgentInterimResponseTrigger.fromString(reader1.getString())); + deserializedVoiceAgentInterimResponseConfig.triggers = triggers; + } else if ("latency_threshold_ms".equals(fieldName)) { + deserializedVoiceAgentInterimResponseConfig.latencyThresholdMs + = reader.getNullable(JsonReader::getLong); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentInterimResponseConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInterimResponseTrigger.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInterimResponseTrigger.java new file mode 100644 index 0000000000000..c37fa4231328f --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInterimResponseTrigger.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * A condition that may trigger an interim response. + */ +public final class VoiceAgentInterimResponseTrigger extends ExpandableStringEnum { + + /** + * Static value latency for VoiceAgentInterimResponseTrigger. + */ + @Generated + public static final VoiceAgentInterimResponseTrigger LATENCY = fromString("latency"); + + /** + * Static value tool for VoiceAgentInterimResponseTrigger. + */ + @Generated + public static final VoiceAgentInterimResponseTrigger TOOL = fromString("tool"); + + /** + * Creates a new instance of VoiceAgentInterimResponseTrigger value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAgentInterimResponseTrigger() { + } + + /** + * Creates or finds a VoiceAgentInterimResponseTrigger from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAgentInterimResponseTrigger. + */ + @Generated + public static VoiceAgentInterimResponseTrigger fromString(String name) { + return fromString(name, VoiceAgentInterimResponseTrigger.class); + } + + /** + * Gets known VoiceAgentInterimResponseTrigger values. + * + * @return known VoiceAgentInterimResponseTrigger values. + */ + @Generated + public static Collection values() { + return values(VoiceAgentInterimResponseTrigger.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentLlmGeneratedGreetingConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentLlmGeneratedGreetingConfig.java new file mode 100644 index 0000000000000..2ad58376605d7 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentLlmGeneratedGreetingConfig.java @@ -0,0 +1,143 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A greeting authored by the session model from a scoped opening-turn prompt. + */ +@Fluent +public final class VoiceAgentLlmGeneratedGreetingConfig extends VoiceAgentGreetingConfig { + + /* + * The greeting mode. + */ + @Generated + private String type = "llm_generated"; + + /* + * The Handlebars prompt that guides the opening turn. + */ + @Generated + private final String prompt; + + /* + * The tool-selection policy for the opening response. Defaults to `none`. + */ + @Generated + private BinaryData toolChoice; + + /** + * Creates an instance of VoiceAgentLlmGeneratedGreetingConfig class. + * + * @param prompt the prompt value to set. + */ + @Generated + public VoiceAgentLlmGeneratedGreetingConfig(String prompt) { + this.prompt = prompt; + } + + /** + * Get the type property: The greeting mode. + * + * @return the type value. + */ + @Generated + @Override + public String getType() { + return this.type; + } + + /** + * Get the prompt property: The Handlebars prompt that guides the opening turn. + * + * @return the prompt value. + */ + @Generated + public String getPrompt() { + return this.prompt; + } + + /** + * Get the toolChoice property: The tool-selection policy for the opening response. Defaults to `none`. + * + * @return the toolChoice value. + */ + @Generated + public BinaryData getToolChoice() { + return this.toolChoice; + } + + /** + * Set the toolChoice property: The tool-selection policy for the opening response. Defaults to `none`. + * + * @param toolChoice the toolChoice value to set. + * @return the VoiceAgentLlmGeneratedGreetingConfig object itself. + */ + @Generated + public VoiceAgentLlmGeneratedGreetingConfig setToolChoice(BinaryData toolChoice) { + this.toolChoice = toolChoice; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("prompt", this.prompt); + jsonWriter.writeStringField("type", this.type); + if (this.toolChoice != null) { + jsonWriter.writeFieldName("tool_choice"); + this.toolChoice.writeTo(jsonWriter); + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentLlmGeneratedGreetingConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentLlmGeneratedGreetingConfig if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentLlmGeneratedGreetingConfig. + */ + @Generated + public static VoiceAgentLlmGeneratedGreetingConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String prompt = null; + String type = "llm_generated"; + BinaryData toolChoice = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("prompt".equals(fieldName)) { + prompt = reader.getString(); + } else if ("type".equals(fieldName)) { + type = reader.getString(); + } else if ("tool_choice".equals(fieldName)) { + toolChoice + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else { + reader.skipChildren(); + } + } + VoiceAgentLlmGeneratedGreetingConfig deserializedVoiceAgentLlmGeneratedGreetingConfig + = new VoiceAgentLlmGeneratedGreetingConfig(prompt); + deserializedVoiceAgentLlmGeneratedGreetingConfig.type = type; + deserializedVoiceAgentLlmGeneratedGreetingConfig.toolChoice = toolChoice; + return deserializedVoiceAgentLlmGeneratedGreetingConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentLlmInterimResponseConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentLlmInterimResponseConfig.java new file mode 100644 index 0000000000000..e43c10d789f2e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentLlmInterimResponseConfig.java @@ -0,0 +1,210 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; +import java.util.List; + +/** + * An interim response generated by a language model. + */ +@Fluent +public final class VoiceAgentLlmInterimResponseConfig extends VoiceAgentInterimResponseConfig { + + /* + * The interim-response implementation. + */ + @Generated + private String type = "llm_interim_response"; + + /* + * The model used to generate interim responses. + */ + @Generated + private String model; + + /* + * Optional instructions for generating interim responses. + */ + @Generated + private String instructions; + + /* + * The maximum completion-token count for an interim response. + */ + @Generated + private Integer maxCompletionTokens; + + /** + * Creates an instance of VoiceAgentLlmInterimResponseConfig class. + */ + @Generated + public VoiceAgentLlmInterimResponseConfig() { + } + + /** + * Get the type property: The interim-response implementation. + * + * @return the type value. + */ + @Generated + @Override + public String getType() { + return this.type; + } + + /** + * Get the model property: The model used to generate interim responses. + * + * @return the model value. + */ + @Generated + public String getModel() { + return this.model; + } + + /** + * Set the model property: The model used to generate interim responses. + * + * @param model the model value to set. + * @return the VoiceAgentLlmInterimResponseConfig object itself. + */ + @Generated + public VoiceAgentLlmInterimResponseConfig setModel(String model) { + this.model = model; + return this; + } + + /** + * Get the instructions property: Optional instructions for generating interim responses. + * + * @return the instructions value. + */ + @Generated + public String getInstructions() { + return this.instructions; + } + + /** + * Set the instructions property: Optional instructions for generating interim responses. + * + * @param instructions the instructions value to set. + * @return the VoiceAgentLlmInterimResponseConfig object itself. + */ + @Generated + public VoiceAgentLlmInterimResponseConfig setInstructions(String instructions) { + this.instructions = instructions; + return this; + } + + /** + * Get the maxCompletionTokens property: The maximum completion-token count for an interim response. + * + * @return the maxCompletionTokens value. + */ + @Generated + public Integer getMaxCompletionTokens() { + return this.maxCompletionTokens; + } + + /** + * Set the maxCompletionTokens property: The maximum completion-token count for an interim response. + * + * @param maxCompletionTokens the maxCompletionTokens value to set. + * @return the VoiceAgentLlmInterimResponseConfig object itself. + */ + @Generated + public VoiceAgentLlmInterimResponseConfig setMaxCompletionTokens(Integer maxCompletionTokens) { + this.maxCompletionTokens = maxCompletionTokens; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentLlmInterimResponseConfig setTriggers(List triggers) { + super.setTriggers(triggers); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentLlmInterimResponseConfig setLatencyThresholdMs(Duration latencyThresholdMs) { + super.setLatencyThresholdMs(latencyThresholdMs); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("triggers", getTriggers(), + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + if (getLatencyThresholdMs() != null) { + jsonWriter.writeNumberField("latency_threshold_ms", getLatencyThresholdMs().toMillis()); + } + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("model", this.model); + jsonWriter.writeStringField("instructions", this.instructions); + jsonWriter.writeNumberField("max_completion_tokens", this.maxCompletionTokens); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentLlmInterimResponseConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentLlmInterimResponseConfig if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentLlmInterimResponseConfig. + */ + @Generated + public static VoiceAgentLlmInterimResponseConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentLlmInterimResponseConfig deserializedVoiceAgentLlmInterimResponseConfig + = new VoiceAgentLlmInterimResponseConfig(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("triggers".equals(fieldName)) { + List triggers + = reader.readArray(reader1 -> VoiceAgentInterimResponseTrigger.fromString(reader1.getString())); + deserializedVoiceAgentLlmInterimResponseConfig.setTriggers(triggers); + } else if ("latency_threshold_ms".equals(fieldName)) { + Long latencyThresholdMsHolder = reader.getNullable(JsonReader::getLong); + if (latencyThresholdMsHolder != null) { + deserializedVoiceAgentLlmInterimResponseConfig + .setLatencyThresholdMs(Duration.ofMillis(latencyThresholdMsHolder)); + } + } else if ("type".equals(fieldName)) { + deserializedVoiceAgentLlmInterimResponseConfig.type = reader.getString(); + } else if ("model".equals(fieldName)) { + deserializedVoiceAgentLlmInterimResponseConfig.model = reader.getString(); + } else if ("instructions".equals(fieldName)) { + deserializedVoiceAgentLlmInterimResponseConfig.instructions = reader.getString(); + } else if ("max_completion_tokens".equals(fieldName)) { + deserializedVoiceAgentLlmInterimResponseConfig.maxCompletionTokens + = reader.getNullable(JsonReader::getInt); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentLlmInterimResponseConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentMcpTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentMcpTool.java new file mode 100644 index 0000000000000..f456df5b30372 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentMcpTool.java @@ -0,0 +1,492 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +/** + * An MCP tool available to a voice agent. + */ +@Fluent +public final class VoiceAgentMcpTool extends VoiceAgentTool { + + /* + * The tool kind. + */ + @Generated + private String type = "mcp"; + + /* + * A label for this MCP server, used to identify it in tool calls. + */ + @Generated + private final String serverLabel; + + /* + * An OAuth access token that can be used with a remote MCP server, either + * with a custom MCP server URL or a service connector. Your application + * must handle the OAuth authorization flow and provide the token here. + */ + @Generated + private String authorization; + + /* + * Optional description of the MCP server, used to provide more context. + */ + @Generated + private String serverDescription; + + /* + * The headers property. + */ + @Generated + private Map headers; + + /* + * The allowed_tools property. + */ + @Generated + private BinaryData allowedTools; + + /* + * The allowed_callers property. + */ + @Generated + private List allowedCallers; + + /* + * The require_approval property. + */ + @Generated + private BinaryData requireApproval; + + /* + * Whether this MCP tool is deferred and discovered via tool search. + */ + @Generated + private Boolean deferLoading; + + /* + * The connection ID in the project for the MCP server. The connection stores authentication and other connection + * details needed to connect to the MCP server. + */ + @Generated + private String projectConnectionId; + + /* + * Deprecated. This property is deprecated and will be removed in a future version. + */ + @Generated + private Map toolConfigs; + + /* + * The URL for the MCP server. + */ + @Generated + private String serverUrl; + + /* + * When the MCP invocation creates a follow-up response. Defaults to `when_idle`. + */ + @Generated + private VoiceAgentToolResponseScheduling responseScheduling; + + /** + * Creates an instance of VoiceAgentMcpTool class. + * + * @param serverLabel the serverLabel value to set. + */ + @Generated + public VoiceAgentMcpTool(String serverLabel) { + this.serverLabel = serverLabel; + } + + /** + * Get the type property: The tool kind. + * + * @return the type value. + */ + @Generated + @Override + public String getType() { + return this.type; + } + + /** + * Get the serverLabel property: A label for this MCP server, used to identify it in tool calls. + * + * @return the serverLabel value. + */ + @Generated + public String getServerLabel() { + return this.serverLabel; + } + + /** + * Get the authorization property: An OAuth access token that can be used with a remote MCP server, either + * with a custom MCP server URL or a service connector. Your application + * must handle the OAuth authorization flow and provide the token here. + * + * @return the authorization value. + */ + @Generated + public String getAuthorization() { + return this.authorization; + } + + /** + * Set the authorization property: An OAuth access token that can be used with a remote MCP server, either + * with a custom MCP server URL or a service connector. Your application + * must handle the OAuth authorization flow and provide the token here. + * + * @param authorization the authorization value to set. + * @return the VoiceAgentMcpTool object itself. + */ + @Generated + public VoiceAgentMcpTool setAuthorization(String authorization) { + this.authorization = authorization; + return this; + } + + /** + * Get the serverDescription property: Optional description of the MCP server, used to provide more context. + * + * @return the serverDescription value. + */ + @Generated + public String getServerDescription() { + return this.serverDescription; + } + + /** + * Set the serverDescription property: Optional description of the MCP server, used to provide more context. + * + * @param serverDescription the serverDescription value to set. + * @return the VoiceAgentMcpTool object itself. + */ + @Generated + public VoiceAgentMcpTool setServerDescription(String serverDescription) { + this.serverDescription = serverDescription; + return this; + } + + /** + * Get the headers property: The headers property. + * + * @return the headers value. + */ + @Generated + public Map getHeaders() { + return this.headers; + } + + /** + * Set the headers property: The headers property. + * + * @param headers the headers value to set. + * @return the VoiceAgentMcpTool object itself. + */ + @Generated + public VoiceAgentMcpTool setHeaders(Map headers) { + this.headers = headers; + return this; + } + + /** + * Get the allowedTools property: The allowed_tools property. + * + * @return the allowedTools value. + */ + @Generated + public BinaryData getAllowedTools() { + return this.allowedTools; + } + + /** + * Set the allowedTools property: The allowed_tools property. + * + * @param allowedTools the allowedTools value to set. + * @return the VoiceAgentMcpTool object itself. + */ + @Generated + public VoiceAgentMcpTool setAllowedTools(BinaryData allowedTools) { + this.allowedTools = allowedTools; + return this; + } + + /** + * Get the allowedCallers property: The allowed_callers property. + * + * @return the allowedCallers value. + */ + @Generated + public List getAllowedCallers() { + return this.allowedCallers; + } + + /** + * Set the allowedCallers property: The allowed_callers property. + * + * @param allowedCallers the allowedCallers value to set. + * @return the VoiceAgentMcpTool object itself. + */ + @Generated + public VoiceAgentMcpTool setAllowedCallers(List allowedCallers) { + this.allowedCallers = allowedCallers; + return this; + } + + /** + * Get the requireApproval property: The require_approval property. + * + * @return the requireApproval value. + */ + @Generated + public BinaryData getRequireApproval() { + return this.requireApproval; + } + + /** + * Set the requireApproval property: The require_approval property. + * + * @param requireApproval the requireApproval value to set. + * @return the VoiceAgentMcpTool object itself. + */ + @Generated + public VoiceAgentMcpTool setRequireApproval(BinaryData requireApproval) { + this.requireApproval = requireApproval; + return this; + } + + /** + * Get the deferLoading property: Whether this MCP tool is deferred and discovered via tool search. + * + * @return the deferLoading value. + */ + @Generated + public Boolean isDeferLoading() { + return this.deferLoading; + } + + /** + * Set the deferLoading property: Whether this MCP tool is deferred and discovered via tool search. + * + * @param deferLoading the deferLoading value to set. + * @return the VoiceAgentMcpTool object itself. + */ + @Generated + public VoiceAgentMcpTool setDeferLoading(Boolean deferLoading) { + this.deferLoading = deferLoading; + return this; + } + + /** + * Get the projectConnectionId property: The connection ID in the project for the MCP server. The connection stores + * authentication and other connection details needed to connect to the MCP server. + * + * @return the projectConnectionId value. + */ + @Generated + public String getProjectConnectionId() { + return this.projectConnectionId; + } + + /** + * Set the projectConnectionId property: The connection ID in the project for the MCP server. The connection stores + * authentication and other connection details needed to connect to the MCP server. + * + * @param projectConnectionId the projectConnectionId value to set. + * @return the VoiceAgentMcpTool object itself. + */ + @Generated + public VoiceAgentMcpTool setProjectConnectionId(String projectConnectionId) { + this.projectConnectionId = projectConnectionId; + return this; + } + + /** + * Get the toolConfigs property: Deprecated. This property is deprecated and will be removed in a future version. + * + * @return the toolConfigs value. + */ + @Generated + public Map getToolConfigs() { + return this.toolConfigs; + } + + /** + * Set the toolConfigs property: Deprecated. This property is deprecated and will be removed in a future version. + * + * @param toolConfigs the toolConfigs value to set. + * @return the VoiceAgentMcpTool object itself. + */ + @Generated + public VoiceAgentMcpTool setToolConfigs(Map toolConfigs) { + this.toolConfigs = toolConfigs; + return this; + } + + /** + * Get the serverUrl property: The URL for the MCP server. + * + * @return the serverUrl value. + */ + @Generated + public String getServerUrl() { + return this.serverUrl; + } + + /** + * Set the serverUrl property: The URL for the MCP server. + * + * @param serverUrl the serverUrl value to set. + * @return the VoiceAgentMcpTool object itself. + */ + @Generated + public VoiceAgentMcpTool setServerUrl(String serverUrl) { + this.serverUrl = serverUrl; + return this; + } + + /** + * Get the responseScheduling property: When the MCP invocation creates a follow-up response. Defaults to + * `when_idle`. + * + * @return the responseScheduling value. + */ + @Generated + public VoiceAgentToolResponseScheduling getResponseScheduling() { + return this.responseScheduling; + } + + /** + * Set the responseScheduling property: When the MCP invocation creates a follow-up response. Defaults to + * `when_idle`. + * + * @param responseScheduling the responseScheduling value to set. + * @return the VoiceAgentMcpTool object itself. + */ + @Generated + public VoiceAgentMcpTool setResponseScheduling(VoiceAgentToolResponseScheduling responseScheduling) { + this.responseScheduling = responseScheduling; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("server_label", this.serverLabel); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("authorization", this.authorization); + jsonWriter.writeStringField("server_description", this.serverDescription); + jsonWriter.writeMapField("headers", this.headers, (writer, element) -> writer.writeString(element)); + if (this.allowedTools != null) { + jsonWriter.writeFieldName("allowed_tools"); + this.allowedTools.writeTo(jsonWriter); + } + jsonWriter.writeArrayField("allowed_callers", this.allowedCallers, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + if (this.requireApproval != null) { + jsonWriter.writeFieldName("require_approval"); + this.requireApproval.writeTo(jsonWriter); + } + jsonWriter.writeBooleanField("defer_loading", this.deferLoading); + jsonWriter.writeStringField("project_connection_id", this.projectConnectionId); + jsonWriter.writeMapField("tool_configs", this.toolConfigs, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeStringField("server_url", this.serverUrl); + jsonWriter.writeStringField("response_scheduling", + this.responseScheduling == null ? null : this.responseScheduling.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentMcpTool from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentMcpTool if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentMcpTool. + */ + @Generated + public static VoiceAgentMcpTool fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String serverLabel = null; + String type = "mcp"; + String authorization = null; + String serverDescription = null; + Map headers = null; + BinaryData allowedTools = null; + List allowedCallers = null; + BinaryData requireApproval = null; + Boolean deferLoading = null; + String projectConnectionId = null; + Map toolConfigs = null; + String serverUrl = null; + VoiceAgentToolResponseScheduling responseScheduling = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("server_label".equals(fieldName)) { + serverLabel = reader.getString(); + } else if ("type".equals(fieldName)) { + type = reader.getString(); + } else if ("authorization".equals(fieldName)) { + authorization = reader.getString(); + } else if ("server_description".equals(fieldName)) { + serverDescription = reader.getString(); + } else if ("headers".equals(fieldName)) { + headers = reader.readMap(reader1 -> reader1.getString()); + } else if ("allowed_tools".equals(fieldName)) { + allowedTools + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("allowed_callers".equals(fieldName)) { + allowedCallers + = reader.readArray(reader1 -> CallableToolAllowedCaller.fromString(reader1.getString())); + } else if ("require_approval".equals(fieldName)) { + requireApproval + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("defer_loading".equals(fieldName)) { + deferLoading = reader.getNullable(JsonReader::getBoolean); + } else if ("project_connection_id".equals(fieldName)) { + projectConnectionId = reader.getString(); + } else if ("tool_configs".equals(fieldName)) { + toolConfigs = reader.readMap(reader1 -> ToolConfig.fromJson(reader1)); + } else if ("server_url".equals(fieldName)) { + serverUrl = reader.getString(); + } else if ("response_scheduling".equals(fieldName)) { + responseScheduling = VoiceAgentToolResponseScheduling.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentMcpTool deserializedVoiceAgentMcpTool = new VoiceAgentMcpTool(serverLabel); + deserializedVoiceAgentMcpTool.type = type; + deserializedVoiceAgentMcpTool.authorization = authorization; + deserializedVoiceAgentMcpTool.serverDescription = serverDescription; + deserializedVoiceAgentMcpTool.headers = headers; + deserializedVoiceAgentMcpTool.allowedTools = allowedTools; + deserializedVoiceAgentMcpTool.allowedCallers = allowedCallers; + deserializedVoiceAgentMcpTool.requireApproval = requireApproval; + deserializedVoiceAgentMcpTool.deferLoading = deferLoading; + deserializedVoiceAgentMcpTool.projectConnectionId = projectConnectionId; + deserializedVoiceAgentMcpTool.toolConfigs = toolConfigs; + deserializedVoiceAgentMcpTool.serverUrl = serverUrl; + deserializedVoiceAgentMcpTool.responseScheduling = responseScheduling; + return deserializedVoiceAgentMcpTool; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReduction.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReduction.java new file mode 100644 index 0000000000000..5f7a4bb040750 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReduction.java @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Input audio noise reduction configuration. + */ +@Immutable +public final class VoiceAgentNoiseReduction implements JsonSerializable { + + /* + * The noise reduction mode. + */ + @Generated + private final VoiceAgentNoiseReductionType type; + + /** + * Creates an instance of VoiceAgentNoiseReduction class. + * + * @param type the type value to set. + */ + @Generated + public VoiceAgentNoiseReduction(VoiceAgentNoiseReductionType type) { + this.type = type; + } + + /** + * Get the type property: The noise reduction mode. + * + * @return the type value. + */ + @Generated + public VoiceAgentNoiseReductionType getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentNoiseReduction from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentNoiseReduction if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentNoiseReduction. + */ + @Generated + public static VoiceAgentNoiseReduction fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentNoiseReductionType type = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + type = VoiceAgentNoiseReductionType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + return new VoiceAgentNoiseReduction(type); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReductionType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReductionType.java new file mode 100644 index 0000000000000..fd5a38bfcf81f --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReductionType.java @@ -0,0 +1,64 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The input audio noise reduction mode. + */ +public final class VoiceAgentNoiseReductionType extends ExpandableStringEnum { + + /** + * Static value near_field for VoiceAgentNoiseReductionType. + */ + @Generated + public static final VoiceAgentNoiseReductionType NEAR_FIELD = fromString("near_field"); + + /** + * Static value far_field for VoiceAgentNoiseReductionType. + */ + @Generated + public static final VoiceAgentNoiseReductionType FAR_FIELD = fromString("far_field"); + + /** + * Azure deep noise suppression. + */ + @Generated + public static final VoiceAgentNoiseReductionType AZURE_DEEP_NOISE_SUPPRESSION + = fromString("azure_deep_noise_suppression"); + + /** + * Creates a new instance of VoiceAgentNoiseReductionType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAgentNoiseReductionType() { + } + + /** + * Creates or finds a VoiceAgentNoiseReductionType from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAgentNoiseReductionType. + */ + @Generated + public static VoiceAgentNoiseReductionType fromString(String name) { + return fromString(name, VoiceAgentNoiseReductionType.class); + } + + /** + * Gets known VoiceAgentNoiseReductionType values. + * + * @return known VoiceAgentNoiseReductionType values. + */ + @Generated + public static Collection values() { + return values(VoiceAgentNoiseReductionType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSemanticVadTurnDetection.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSemanticVadTurnDetection.java new file mode 100644 index 0000000000000..6b8168238be7e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSemanticVadTurnDetection.java @@ -0,0 +1,190 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * OpenAI semantic VAD turn-detection settings. + */ +@Fluent +public final class VoiceAgentSemanticVadTurnDetection extends VoiceAgentTurnDetectionConfig { + + /* + * The turn-detection strategy. + */ + @Generated + private VoiceAgentTurnDetectionType type = VoiceAgentTurnDetectionType.SEMANTIC_VAD; + + /* + * The eagerness property. + */ + @Generated + private VoiceAgentSemanticVadTurnDetectionEagerness eagerness; + + /* + * The create_response property. + */ + @Generated + private Boolean createResponse; + + /* + * The interrupt_response property. + */ + @Generated + private Boolean interruptResponse; + + /** + * Creates an instance of VoiceAgentSemanticVadTurnDetection class. + */ + @Generated + public VoiceAgentSemanticVadTurnDetection() { + } + + /** + * Get the type property: The turn-detection strategy. + * + * @return the type value. + */ + @Generated + @Override + public VoiceAgentTurnDetectionType getType() { + return this.type; + } + + /** + * Get the eagerness property: The eagerness property. + * + * @return the eagerness value. + */ + @Generated + public VoiceAgentSemanticVadTurnDetectionEagerness getEagerness() { + return this.eagerness; + } + + /** + * Set the eagerness property: The eagerness property. + * + * @param eagerness the eagerness value to set. + * @return the VoiceAgentSemanticVadTurnDetection object itself. + */ + @Generated + public VoiceAgentSemanticVadTurnDetection setEagerness(VoiceAgentSemanticVadTurnDetectionEagerness eagerness) { + this.eagerness = eagerness; + return this; + } + + /** + * Get the createResponse property: The create_response property. + * + * @return the createResponse value. + */ + @Generated + public Boolean isCreateResponse() { + return this.createResponse; + } + + /** + * Set the createResponse property: The create_response property. + * + * @param createResponse the createResponse value to set. + * @return the VoiceAgentSemanticVadTurnDetection object itself. + */ + @Generated + public VoiceAgentSemanticVadTurnDetection setCreateResponse(Boolean createResponse) { + this.createResponse = createResponse; + return this; + } + + /** + * Get the interruptResponse property: The interrupt_response property. + * + * @return the interruptResponse value. + */ + @Generated + public Boolean isInterruptResponse() { + return this.interruptResponse; + } + + /** + * Set the interruptResponse property: The interrupt_response property. + * + * @param interruptResponse the interruptResponse value to set. + * @return the VoiceAgentSemanticVadTurnDetection object itself. + */ + @Generated + public VoiceAgentSemanticVadTurnDetection setInterruptResponse(Boolean interruptResponse) { + this.interruptResponse = interruptResponse; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentSemanticVadTurnDetection setAutoTruncate(Boolean autoTruncate) { + super.setAutoTruncate(autoTruncate); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeBooleanField("auto_truncate", isAutoTruncate()); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeStringField("eagerness", this.eagerness == null ? null : this.eagerness.toString()); + jsonWriter.writeBooleanField("create_response", this.createResponse); + jsonWriter.writeBooleanField("interrupt_response", this.interruptResponse); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentSemanticVadTurnDetection from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentSemanticVadTurnDetection if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentSemanticVadTurnDetection. + */ + @Generated + public static VoiceAgentSemanticVadTurnDetection fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentSemanticVadTurnDetection deserializedVoiceAgentSemanticVadTurnDetection + = new VoiceAgentSemanticVadTurnDetection(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("auto_truncate".equals(fieldName)) { + deserializedVoiceAgentSemanticVadTurnDetection + .setAutoTruncate(reader.getNullable(JsonReader::getBoolean)); + } else if ("type".equals(fieldName)) { + deserializedVoiceAgentSemanticVadTurnDetection.type + = VoiceAgentTurnDetectionType.fromString(reader.getString()); + } else if ("eagerness".equals(fieldName)) { + deserializedVoiceAgentSemanticVadTurnDetection.eagerness + = VoiceAgentSemanticVadTurnDetectionEagerness.fromString(reader.getString()); + } else if ("create_response".equals(fieldName)) { + deserializedVoiceAgentSemanticVadTurnDetection.createResponse + = reader.getNullable(JsonReader::getBoolean); + } else if ("interrupt_response".equals(fieldName)) { + deserializedVoiceAgentSemanticVadTurnDetection.interruptResponse + = reader.getNullable(JsonReader::getBoolean); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentSemanticVadTurnDetection; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSemanticVadTurnDetectionEagerness.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSemanticVadTurnDetectionEagerness.java new file mode 100644 index 0000000000000..f553ce7ec04cd --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSemanticVadTurnDetectionEagerness.java @@ -0,0 +1,66 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for VoiceAgentSemanticVadTurnDetectionEagerness. + */ +public enum VoiceAgentSemanticVadTurnDetectionEagerness { + /** + * Enum value low. + */ + LOW("low"), + + /** + * Enum value medium. + */ + MEDIUM("medium"), + + /** + * Enum value high. + */ + HIGH("high"), + + /** + * Enum value auto. + */ + AUTO("auto"); + + /** + * The actual serialized value for a VoiceAgentSemanticVadTurnDetectionEagerness instance. + */ + private final String value; + + VoiceAgentSemanticVadTurnDetectionEagerness(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a VoiceAgentSemanticVadTurnDetectionEagerness instance. + * + * @param value the serialized value to parse. + * @return the parsed VoiceAgentSemanticVadTurnDetectionEagerness object, or null if unable to parse. + */ + public static VoiceAgentSemanticVadTurnDetectionEagerness fromString(String value) { + if (value == null) { + return null; + } + VoiceAgentSemanticVadTurnDetectionEagerness[] items = VoiceAgentSemanticVadTurnDetectionEagerness.values(); + for (VoiceAgentSemanticVadTurnDetectionEagerness item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerVadTurnDetection.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerVadTurnDetection.java new file mode 100644 index 0000000000000..adde9f01d982e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerVadTurnDetection.java @@ -0,0 +1,360 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; + +/** + * Server-side voice activity detection. + */ +@Fluent +public final class VoiceAgentServerVadTurnDetection extends VoiceAgentTurnDetectionConfig { + + /* + * The turn-detection strategy. + */ + @Generated + private VoiceAgentTurnDetectionType type = VoiceAgentTurnDetectionType.SERVER_VAD; + + /* + * The threshold property. + */ + @Generated + private Double threshold; + + /* + * The prefix_padding_ms property. + */ + @Generated + private Long prefixPaddingMs; + + /* + * The silence_duration_ms property. + */ + @Generated + private Long silenceDurationMs; + + /* + * The create_response property. + */ + @Generated + private Boolean createResponse; + + /* + * The interrupt_response property. + */ + @Generated + private Boolean interruptResponse; + + /* + * The idle_timeout_ms property. + */ + @Generated + private Long idleTimeoutMs; + + /* + * Minimum speech duration required to trigger detection, in milliseconds. + */ + @Generated + private Long speechDurationMs; + + /* + * Semantic end-of-utterance detection configuration. Set to null to disable it. + */ + @Generated + private VoiceAgentEndOfUtteranceDetection endOfUtteranceDetection; + + /** + * Creates an instance of VoiceAgentServerVadTurnDetection class. + */ + @Generated + public VoiceAgentServerVadTurnDetection() { + } + + /** + * Get the type property: The turn-detection strategy. + * + * @return the type value. + */ + @Generated + @Override + public VoiceAgentTurnDetectionType getType() { + return this.type; + } + + /** + * Get the threshold property: The threshold property. + * + * @return the threshold value. + */ + @Generated + public Double getThreshold() { + return this.threshold; + } + + /** + * Set the threshold property: The threshold property. + * + * @param threshold the threshold value to set. + * @return the VoiceAgentServerVadTurnDetection object itself. + */ + @Generated + public VoiceAgentServerVadTurnDetection setThreshold(Double threshold) { + this.threshold = threshold; + return this; + } + + /** + * Get the prefixPaddingMs property: The prefix_padding_ms property. + * + * @return the prefixPaddingMs value. + */ + @Generated + public Long getPrefixPaddingMs() { + return this.prefixPaddingMs; + } + + /** + * Set the prefixPaddingMs property: The prefix_padding_ms property. + * + * @param prefixPaddingMs the prefixPaddingMs value to set. + * @return the VoiceAgentServerVadTurnDetection object itself. + */ + @Generated + public VoiceAgentServerVadTurnDetection setPrefixPaddingMs(Long prefixPaddingMs) { + this.prefixPaddingMs = prefixPaddingMs; + return this; + } + + /** + * Get the silenceDurationMs property: The silence_duration_ms property. + * + * @return the silenceDurationMs value. + */ + @Generated + public Long getSilenceDurationMs() { + return this.silenceDurationMs; + } + + /** + * Set the silenceDurationMs property: The silence_duration_ms property. + * + * @param silenceDurationMs the silenceDurationMs value to set. + * @return the VoiceAgentServerVadTurnDetection object itself. + */ + @Generated + public VoiceAgentServerVadTurnDetection setSilenceDurationMs(Long silenceDurationMs) { + this.silenceDurationMs = silenceDurationMs; + return this; + } + + /** + * Get the createResponse property: The create_response property. + * + * @return the createResponse value. + */ + @Generated + public Boolean isCreateResponse() { + return this.createResponse; + } + + /** + * Set the createResponse property: The create_response property. + * + * @param createResponse the createResponse value to set. + * @return the VoiceAgentServerVadTurnDetection object itself. + */ + @Generated + public VoiceAgentServerVadTurnDetection setCreateResponse(Boolean createResponse) { + this.createResponse = createResponse; + return this; + } + + /** + * Get the interruptResponse property: The interrupt_response property. + * + * @return the interruptResponse value. + */ + @Generated + public Boolean isInterruptResponse() { + return this.interruptResponse; + } + + /** + * Set the interruptResponse property: The interrupt_response property. + * + * @param interruptResponse the interruptResponse value to set. + * @return the VoiceAgentServerVadTurnDetection object itself. + */ + @Generated + public VoiceAgentServerVadTurnDetection setInterruptResponse(Boolean interruptResponse) { + this.interruptResponse = interruptResponse; + return this; + } + + /** + * Get the idleTimeoutMs property: The idle_timeout_ms property. + * + * @return the idleTimeoutMs value. + */ + @Generated + public Long getIdleTimeoutMs() { + return this.idleTimeoutMs; + } + + /** + * Set the idleTimeoutMs property: The idle_timeout_ms property. + * + * @param idleTimeoutMs the idleTimeoutMs value to set. + * @return the VoiceAgentServerVadTurnDetection object itself. + */ + @Generated + public VoiceAgentServerVadTurnDetection setIdleTimeoutMs(Long idleTimeoutMs) { + this.idleTimeoutMs = idleTimeoutMs; + return this; + } + + /** + * Get the speechDurationMs property: Minimum speech duration required to trigger detection, in milliseconds. + * + * @return the speechDurationMs value. + */ + @Generated + public Duration getSpeechDurationMs() { + if (this.speechDurationMs == null) { + return null; + } + return Duration.ofMillis(this.speechDurationMs); + } + + /** + * Set the speechDurationMs property: Minimum speech duration required to trigger detection, in milliseconds. + * + * @param speechDurationMs the speechDurationMs value to set. + * @return the VoiceAgentServerVadTurnDetection object itself. + */ + @Generated + public VoiceAgentServerVadTurnDetection setSpeechDurationMs(Duration speechDurationMs) { + if (speechDurationMs == null) { + this.speechDurationMs = null; + } else { + this.speechDurationMs = speechDurationMs.toMillis(); + } + return this; + } + + /** + * Get the endOfUtteranceDetection property: Semantic end-of-utterance detection configuration. Set to null to + * disable it. + * + * @return the endOfUtteranceDetection value. + */ + @Generated + public VoiceAgentEndOfUtteranceDetection getEndOfUtteranceDetection() { + return this.endOfUtteranceDetection; + } + + /** + * Set the endOfUtteranceDetection property: Semantic end-of-utterance detection configuration. Set to null to + * disable it. + * + * @param endOfUtteranceDetection the endOfUtteranceDetection value to set. + * @return the VoiceAgentServerVadTurnDetection object itself. + */ + @Generated + public VoiceAgentServerVadTurnDetection + setEndOfUtteranceDetection(VoiceAgentEndOfUtteranceDetection endOfUtteranceDetection) { + this.endOfUtteranceDetection = endOfUtteranceDetection; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentServerVadTurnDetection setAutoTruncate(Boolean autoTruncate) { + super.setAutoTruncate(autoTruncate); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeBooleanField("auto_truncate", isAutoTruncate()); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeNumberField("threshold", this.threshold); + jsonWriter.writeNumberField("prefix_padding_ms", this.prefixPaddingMs); + jsonWriter.writeNumberField("silence_duration_ms", this.silenceDurationMs); + jsonWriter.writeBooleanField("create_response", this.createResponse); + jsonWriter.writeBooleanField("interrupt_response", this.interruptResponse); + jsonWriter.writeNumberField("idle_timeout_ms", this.idleTimeoutMs); + jsonWriter.writeNumberField("speech_duration_ms", this.speechDurationMs); + jsonWriter.writeJsonField("end_of_utterance_detection", this.endOfUtteranceDetection); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentServerVadTurnDetection from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentServerVadTurnDetection if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentServerVadTurnDetection. + */ + @Generated + public static VoiceAgentServerVadTurnDetection fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentServerVadTurnDetection deserializedVoiceAgentServerVadTurnDetection + = new VoiceAgentServerVadTurnDetection(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("auto_truncate".equals(fieldName)) { + deserializedVoiceAgentServerVadTurnDetection + .setAutoTruncate(reader.getNullable(JsonReader::getBoolean)); + } else if ("type".equals(fieldName)) { + deserializedVoiceAgentServerVadTurnDetection.type + = VoiceAgentTurnDetectionType.fromString(reader.getString()); + } else if ("threshold".equals(fieldName)) { + deserializedVoiceAgentServerVadTurnDetection.threshold = reader.getNullable(JsonReader::getDouble); + } else if ("prefix_padding_ms".equals(fieldName)) { + deserializedVoiceAgentServerVadTurnDetection.prefixPaddingMs + = reader.getNullable(JsonReader::getLong); + } else if ("silence_duration_ms".equals(fieldName)) { + deserializedVoiceAgentServerVadTurnDetection.silenceDurationMs + = reader.getNullable(JsonReader::getLong); + } else if ("create_response".equals(fieldName)) { + deserializedVoiceAgentServerVadTurnDetection.createResponse + = reader.getNullable(JsonReader::getBoolean); + } else if ("interrupt_response".equals(fieldName)) { + deserializedVoiceAgentServerVadTurnDetection.interruptResponse + = reader.getNullable(JsonReader::getBoolean); + } else if ("idle_timeout_ms".equals(fieldName)) { + deserializedVoiceAgentServerVadTurnDetection.idleTimeoutMs + = reader.getNullable(JsonReader::getLong); + } else if ("speech_duration_ms".equals(fieldName)) { + deserializedVoiceAgentServerVadTurnDetection.speechDurationMs + = reader.getNullable(JsonReader::getLong); + } else if ("end_of_utterance_detection".equals(fieldName)) { + deserializedVoiceAgentServerVadTurnDetection.endOfUtteranceDetection + = VoiceAgentEndOfUtteranceDetection.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentServerVadTurnDetection; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionIncludeOption.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionIncludeOption.java new file mode 100644 index 0000000000000..d550bda532fc4 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionIncludeOption.java @@ -0,0 +1,61 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Additional fields that a voice-agent session may include in service outputs. + */ +public enum VoiceAgentSessionIncludeOption { + /** + * Enum value item.input_audio_transcription.logprobs. + */ + INPUT_AUDIO_TRANSCRIPTION_LOGPROBS("item.input_audio_transcription.logprobs"), + + /** + * Enum value item.input_audio_transcription.phrases. + */ + INPUT_AUDIO_TRANSCRIPTION_PHRASES("item.input_audio_transcription.phrases"), + + /** + * Enum value file_search_call.results. + */ + FILE_SEARCH_CALL_RESULTS("file_search_call.results"); + + /** + * The actual serialized value for a VoiceAgentSessionIncludeOption instance. + */ + private final String value; + + VoiceAgentSessionIncludeOption(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a VoiceAgentSessionIncludeOption instance. + * + * @param value the serialized value to parse. + * @return the parsed VoiceAgentSessionIncludeOption object, or null if unable to parse. + */ + public static VoiceAgentSessionIncludeOption fromString(String value) { + if (value == null) { + return null; + } + VoiceAgentSessionIncludeOption[] items = VoiceAgentSessionIncludeOption.values(); + for (VoiceAgentSessionIncludeOption item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentStaticInterimResponseConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentStaticInterimResponseConfig.java new file mode 100644 index 0000000000000..8ce6b201a71e0 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentStaticInterimResponseConfig.java @@ -0,0 +1,148 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; +import java.util.List; + +/** + * A static interim response selected from configured text. + */ +@Fluent +public final class VoiceAgentStaticInterimResponseConfig extends VoiceAgentInterimResponseConfig { + + /* + * The interim-response implementation. + */ + @Generated + private String type = "static_interim_response"; + + /* + * Candidate text values for the interim response. + */ + @Generated + private List texts; + + /** + * Creates an instance of VoiceAgentStaticInterimResponseConfig class. + */ + @Generated + public VoiceAgentStaticInterimResponseConfig() { + } + + /** + * Get the type property: The interim-response implementation. + * + * @return the type value. + */ + @Generated + @Override + public String getType() { + return this.type; + } + + /** + * Get the texts property: Candidate text values for the interim response. + * + * @return the texts value. + */ + @Generated + public List getTexts() { + return this.texts; + } + + /** + * Set the texts property: Candidate text values for the interim response. + * + * @param texts the texts value to set. + * @return the VoiceAgentStaticInterimResponseConfig object itself. + */ + @Generated + public VoiceAgentStaticInterimResponseConfig setTexts(List texts) { + this.texts = texts; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentStaticInterimResponseConfig setTriggers(List triggers) { + super.setTriggers(triggers); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public VoiceAgentStaticInterimResponseConfig setLatencyThresholdMs(Duration latencyThresholdMs) { + super.setLatencyThresholdMs(latencyThresholdMs); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("triggers", getTriggers(), + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + if (getLatencyThresholdMs() != null) { + jsonWriter.writeNumberField("latency_threshold_ms", getLatencyThresholdMs().toMillis()); + } + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeArrayField("texts", this.texts, (writer, element) -> writer.writeString(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentStaticInterimResponseConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentStaticInterimResponseConfig if the JsonReader was pointing to an instance of it, + * or null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentStaticInterimResponseConfig. + */ + @Generated + public static VoiceAgentStaticInterimResponseConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentStaticInterimResponseConfig deserializedVoiceAgentStaticInterimResponseConfig + = new VoiceAgentStaticInterimResponseConfig(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("triggers".equals(fieldName)) { + List triggers + = reader.readArray(reader1 -> VoiceAgentInterimResponseTrigger.fromString(reader1.getString())); + deserializedVoiceAgentStaticInterimResponseConfig.setTriggers(triggers); + } else if ("latency_threshold_ms".equals(fieldName)) { + Long latencyThresholdMsHolder = reader.getNullable(JsonReader::getLong); + if (latencyThresholdMsHolder != null) { + deserializedVoiceAgentStaticInterimResponseConfig + .setLatencyThresholdMs(Duration.ofMillis(latencyThresholdMsHolder)); + } + } else if ("type".equals(fieldName)) { + deserializedVoiceAgentStaticInterimResponseConfig.type = reader.getString(); + } else if ("texts".equals(fieldName)) { + List texts = reader.readArray(reader1 -> reader1.getString()); + deserializedVoiceAgentStaticInterimResponseConfig.texts = texts; + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentStaticInterimResponseConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagent.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagent.java new file mode 100644 index 0000000000000..445889b1e3f50 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagent.java @@ -0,0 +1,219 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; + +/** + * A sibling Foundry text agent that a voice agent may consult as a background specialist. + */ +@Fluent +public final class VoiceAgentSubagent implements JsonSerializable { + + /* + * The name of the subagent. The subagent must be in the same project as the voice agent. + */ + @Generated + private final String agentName; + + /* + * The version of the subagent. When omitted, the active version is used. + */ + @Generated + private String agentVersion; + + /* + * A description of the subagent's capabilities, used by the voice agent to decide whether to forward a query. + */ + @Generated + private final String agentCapabilities; + + /* + * Policy for acknowledging forwarded requests and filling gaps while waiting for this subagent's response. + */ + @Generated + private VoiceAgentSubagentResponsePolicy responsePolicy; + + /* + * The wall-clock timeout, in seconds, for each invocation of this subagent. When omitted, the service timeout is + * used. + */ + @Generated + private Long invokeTimeoutSeconds; + + /** + * Creates an instance of VoiceAgentSubagent class. + * + * @param agentName the agentName value to set. + * @param agentCapabilities the agentCapabilities value to set. + */ + @Generated + public VoiceAgentSubagent(String agentName, String agentCapabilities) { + this.agentName = agentName; + this.agentCapabilities = agentCapabilities; + } + + /** + * Get the agentName property: The name of the subagent. The subagent must be in the same project as the voice + * agent. + * + * @return the agentName value. + */ + @Generated + public String getAgentName() { + return this.agentName; + } + + /** + * Get the agentVersion property: The version of the subagent. When omitted, the active version is used. + * + * @return the agentVersion value. + */ + @Generated + public String getAgentVersion() { + return this.agentVersion; + } + + /** + * Set the agentVersion property: The version of the subagent. When omitted, the active version is used. + * + * @param agentVersion the agentVersion value to set. + * @return the VoiceAgentSubagent object itself. + */ + @Generated + public VoiceAgentSubagent setAgentVersion(String agentVersion) { + this.agentVersion = agentVersion; + return this; + } + + /** + * Get the agentCapabilities property: A description of the subagent's capabilities, used by the voice agent to + * decide whether to forward a query. + * + * @return the agentCapabilities value. + */ + @Generated + public String getAgentCapabilities() { + return this.agentCapabilities; + } + + /** + * Get the responsePolicy property: Policy for acknowledging forwarded requests and filling gaps while waiting for + * this subagent's response. + * + * @return the responsePolicy value. + */ + @Generated + public VoiceAgentSubagentResponsePolicy getResponsePolicy() { + return this.responsePolicy; + } + + /** + * Set the responsePolicy property: Policy for acknowledging forwarded requests and filling gaps while waiting for + * this subagent's response. + * + * @param responsePolicy the responsePolicy value to set. + * @return the VoiceAgentSubagent object itself. + */ + @Generated + public VoiceAgentSubagent setResponsePolicy(VoiceAgentSubagentResponsePolicy responsePolicy) { + this.responsePolicy = responsePolicy; + return this; + } + + /** + * Get the invokeTimeoutSeconds property: The wall-clock timeout, in seconds, for each invocation of this subagent. + * When omitted, the service timeout is used. + * + * @return the invokeTimeoutSeconds value. + */ + @Generated + public Duration getInvokeTimeoutSeconds() { + if (this.invokeTimeoutSeconds == null) { + return null; + } + return Duration.ofSeconds(this.invokeTimeoutSeconds); + } + + /** + * Set the invokeTimeoutSeconds property: The wall-clock timeout, in seconds, for each invocation of this subagent. + * When omitted, the service timeout is used. + * + * @param invokeTimeoutSeconds the invokeTimeoutSeconds value to set. + * @return the VoiceAgentSubagent object itself. + */ + @Generated + public VoiceAgentSubagent setInvokeTimeoutSeconds(Duration invokeTimeoutSeconds) { + if (invokeTimeoutSeconds == null) { + this.invokeTimeoutSeconds = null; + } else { + this.invokeTimeoutSeconds = invokeTimeoutSeconds.getSeconds(); + } + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("agent_name", this.agentName); + jsonWriter.writeStringField("agent_capabilities", this.agentCapabilities); + jsonWriter.writeStringField("agent_version", this.agentVersion); + jsonWriter.writeJsonField("response_policy", this.responsePolicy); + jsonWriter.writeNumberField("invoke_timeout_seconds", this.invokeTimeoutSeconds); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentSubagent from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentSubagent if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentSubagent. + */ + @Generated + public static VoiceAgentSubagent fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String agentName = null; + String agentCapabilities = null; + String agentVersion = null; + VoiceAgentSubagentResponsePolicy responsePolicy = null; + Long invokeTimeoutSeconds = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("agent_name".equals(fieldName)) { + agentName = reader.getString(); + } else if ("agent_capabilities".equals(fieldName)) { + agentCapabilities = reader.getString(); + } else if ("agent_version".equals(fieldName)) { + agentVersion = reader.getString(); + } else if ("response_policy".equals(fieldName)) { + responsePolicy = VoiceAgentSubagentResponsePolicy.fromJson(reader); + } else if ("invoke_timeout_seconds".equals(fieldName)) { + invokeTimeoutSeconds = reader.getNullable(JsonReader::getLong); + } else { + reader.skipChildren(); + } + } + VoiceAgentSubagent deserializedVoiceAgentSubagent = new VoiceAgentSubagent(agentName, agentCapabilities); + deserializedVoiceAgentSubagent.agentVersion = agentVersion; + deserializedVoiceAgentSubagent.responsePolicy = responsePolicy; + deserializedVoiceAgentSubagent.invokeTimeoutSeconds = invokeTimeoutSeconds; + return deserializedVoiceAgentSubagent; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentConfig.java new file mode 100644 index 0000000000000..70ab0af5ba5b7 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentConfig.java @@ -0,0 +1,84 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Configuration for sibling Foundry text agents that a voice agent may consult. + */ +@Immutable +public final class VoiceAgentSubagentConfig implements JsonSerializable { + + /* + * The sibling Foundry text agents, in the same project, that this voice agent may consult. + */ + @Generated + private final List subagents; + + /** + * Creates an instance of VoiceAgentSubagentConfig class. + * + * @param subagents the subagents value to set. + */ + @Generated + public VoiceAgentSubagentConfig(List subagents) { + this.subagents = subagents; + } + + /** + * Get the subagents property: The sibling Foundry text agents, in the same project, that this voice agent may + * consult. + * + * @return the subagents value. + */ + @Generated + public List getSubagents() { + return this.subagents; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeArrayField("subagents", this.subagents, (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentSubagentConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentSubagentConfig if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentSubagentConfig. + */ + @Generated + public static VoiceAgentSubagentConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + List subagents = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("subagents".equals(fieldName)) { + subagents = reader.readArray(reader1 -> VoiceAgentSubagent.fromJson(reader1)); + } else { + reader.skipChildren(); + } + } + return new VoiceAgentSubagentConfig(subagents); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentResponsePolicy.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentResponsePolicy.java new file mode 100644 index 0000000000000..770268a748c3b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentResponsePolicy.java @@ -0,0 +1,306 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; + +/** + * Policy for delivering responses while a voice agent waits for a subagent. + */ +@Fluent +public final class VoiceAgentSubagentResponsePolicy implements JsonSerializable { + + /* + * Whether the voice agent provides an immediate acknowledgement before forwarding a request to a subagent. + */ + @Generated + private Boolean immediateAck; + + /* + * The number of seconds without subagent content or user input before the voice agent provides a gap-filling + * response. + */ + @Generated + private Long gapFillingInterval; + + /* + * Instructions used to generate the immediate acknowledgement. + */ + @Generated + private String ackInstructions; + + /* + * Instructions used to generate gap-filling speech while waiting for progress. + */ + @Generated + private String gapFillingInstructions; + + /* + * Whether progress updates are emitted incrementally instead of only when the subagent invocation completes. + * Defaults to `false`. + */ + @Generated + private Boolean enableDeltaProgress; + + /* + * Instructions used to summarize streamed subagent progress for speech. + */ + @Generated + private String progressInstructions; + + /* + * The minimum number of seconds between spoken progress updates. + */ + @Generated + private Long progressUpdateInterval; + + /** + * Creates an instance of VoiceAgentSubagentResponsePolicy class. + */ + @Generated + public VoiceAgentSubagentResponsePolicy() { + } + + /** + * Get the immediateAck property: Whether the voice agent provides an immediate acknowledgement before forwarding a + * request to a subagent. + * + * @return the immediateAck value. + */ + @Generated + public Boolean isImmediateAck() { + return this.immediateAck; + } + + /** + * Set the immediateAck property: Whether the voice agent provides an immediate acknowledgement before forwarding a + * request to a subagent. + * + * @param immediateAck the immediateAck value to set. + * @return the VoiceAgentSubagentResponsePolicy object itself. + */ + @Generated + public VoiceAgentSubagentResponsePolicy setImmediateAck(Boolean immediateAck) { + this.immediateAck = immediateAck; + return this; + } + + /** + * Get the gapFillingInterval property: The number of seconds without subagent content or user input before the + * voice agent provides a gap-filling response. + * + * @return the gapFillingInterval value. + */ + @Generated + public Duration getGapFillingInterval() { + if (this.gapFillingInterval == null) { + return null; + } + return Duration.ofSeconds(this.gapFillingInterval); + } + + /** + * Set the gapFillingInterval property: The number of seconds without subagent content or user input before the + * voice agent provides a gap-filling response. + * + * @param gapFillingInterval the gapFillingInterval value to set. + * @return the VoiceAgentSubagentResponsePolicy object itself. + */ + @Generated + public VoiceAgentSubagentResponsePolicy setGapFillingInterval(Duration gapFillingInterval) { + if (gapFillingInterval == null) { + this.gapFillingInterval = null; + } else { + this.gapFillingInterval = gapFillingInterval.getSeconds(); + } + return this; + } + + /** + * Get the ackInstructions property: Instructions used to generate the immediate acknowledgement. + * + * @return the ackInstructions value. + */ + @Generated + public String getAckInstructions() { + return this.ackInstructions; + } + + /** + * Set the ackInstructions property: Instructions used to generate the immediate acknowledgement. + * + * @param ackInstructions the ackInstructions value to set. + * @return the VoiceAgentSubagentResponsePolicy object itself. + */ + @Generated + public VoiceAgentSubagentResponsePolicy setAckInstructions(String ackInstructions) { + this.ackInstructions = ackInstructions; + return this; + } + + /** + * Get the gapFillingInstructions property: Instructions used to generate gap-filling speech while waiting for + * progress. + * + * @return the gapFillingInstructions value. + */ + @Generated + public String getGapFillingInstructions() { + return this.gapFillingInstructions; + } + + /** + * Set the gapFillingInstructions property: Instructions used to generate gap-filling speech while waiting for + * progress. + * + * @param gapFillingInstructions the gapFillingInstructions value to set. + * @return the VoiceAgentSubagentResponsePolicy object itself. + */ + @Generated + public VoiceAgentSubagentResponsePolicy setGapFillingInstructions(String gapFillingInstructions) { + this.gapFillingInstructions = gapFillingInstructions; + return this; + } + + /** + * Get the enableDeltaProgress property: Whether progress updates are emitted incrementally instead of only when the + * subagent invocation completes. Defaults to `false`. + * + * @return the enableDeltaProgress value. + */ + @Generated + public Boolean isEnableDeltaProgress() { + return this.enableDeltaProgress; + } + + /** + * Set the enableDeltaProgress property: Whether progress updates are emitted incrementally instead of only when the + * subagent invocation completes. Defaults to `false`. + * + * @param enableDeltaProgress the enableDeltaProgress value to set. + * @return the VoiceAgentSubagentResponsePolicy object itself. + */ + @Generated + public VoiceAgentSubagentResponsePolicy setEnableDeltaProgress(Boolean enableDeltaProgress) { + this.enableDeltaProgress = enableDeltaProgress; + return this; + } + + /** + * Get the progressInstructions property: Instructions used to summarize streamed subagent progress for speech. + * + * @return the progressInstructions value. + */ + @Generated + public String getProgressInstructions() { + return this.progressInstructions; + } + + /** + * Set the progressInstructions property: Instructions used to summarize streamed subagent progress for speech. + * + * @param progressInstructions the progressInstructions value to set. + * @return the VoiceAgentSubagentResponsePolicy object itself. + */ + @Generated + public VoiceAgentSubagentResponsePolicy setProgressInstructions(String progressInstructions) { + this.progressInstructions = progressInstructions; + return this; + } + + /** + * Get the progressUpdateInterval property: The minimum number of seconds between spoken progress updates. + * + * @return the progressUpdateInterval value. + */ + @Generated + public Duration getProgressUpdateInterval() { + if (this.progressUpdateInterval == null) { + return null; + } + return Duration.ofSeconds(this.progressUpdateInterval); + } + + /** + * Set the progressUpdateInterval property: The minimum number of seconds between spoken progress updates. + * + * @param progressUpdateInterval the progressUpdateInterval value to set. + * @return the VoiceAgentSubagentResponsePolicy object itself. + */ + @Generated + public VoiceAgentSubagentResponsePolicy setProgressUpdateInterval(Duration progressUpdateInterval) { + if (progressUpdateInterval == null) { + this.progressUpdateInterval = null; + } else { + this.progressUpdateInterval = progressUpdateInterval.getSeconds(); + } + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeBooleanField("immediate_ack", this.immediateAck); + jsonWriter.writeNumberField("gap_filling_interval", this.gapFillingInterval); + jsonWriter.writeStringField("ack_instructions", this.ackInstructions); + jsonWriter.writeStringField("gap_filling_instructions", this.gapFillingInstructions); + jsonWriter.writeBooleanField("enable_delta_progress", this.enableDeltaProgress); + jsonWriter.writeStringField("progress_instructions", this.progressInstructions); + jsonWriter.writeNumberField("progress_update_interval", this.progressUpdateInterval); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentSubagentResponsePolicy from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentSubagentResponsePolicy if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentSubagentResponsePolicy. + */ + @Generated + public static VoiceAgentSubagentResponsePolicy fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentSubagentResponsePolicy deserializedVoiceAgentSubagentResponsePolicy + = new VoiceAgentSubagentResponsePolicy(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("immediate_ack".equals(fieldName)) { + deserializedVoiceAgentSubagentResponsePolicy.immediateAck + = reader.getNullable(JsonReader::getBoolean); + } else if ("gap_filling_interval".equals(fieldName)) { + deserializedVoiceAgentSubagentResponsePolicy.gapFillingInterval + = reader.getNullable(JsonReader::getLong); + } else if ("ack_instructions".equals(fieldName)) { + deserializedVoiceAgentSubagentResponsePolicy.ackInstructions = reader.getString(); + } else if ("gap_filling_instructions".equals(fieldName)) { + deserializedVoiceAgentSubagentResponsePolicy.gapFillingInstructions = reader.getString(); + } else if ("enable_delta_progress".equals(fieldName)) { + deserializedVoiceAgentSubagentResponsePolicy.enableDeltaProgress + = reader.getNullable(JsonReader::getBoolean); + } else if ("progress_instructions".equals(fieldName)) { + deserializedVoiceAgentSubagentResponsePolicy.progressInstructions = reader.getString(); + } else if ("progress_update_interval".equals(fieldName)) { + deserializedVoiceAgentSubagentResponsePolicy.progressUpdateInterval + = reader.getNullable(JsonReader::getLong); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentSubagentResponsePolicy; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemTool.java new file mode 100644 index 0000000000000..e552e38e6b311 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemTool.java @@ -0,0 +1,154 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A service-managed control that acts on the active voice session without customer code or external authentication. + */ +@Fluent +public class VoiceAgentSystemTool extends VoiceAgentTool { + + /* + * The tool kind. + */ + @Generated + private final String type = "system"; + + /* + * The service-managed control action. Known values are stable; additional values may be added over time. + */ + @Generated + private VoiceAgentSystemToolName name = VoiceAgentSystemToolName.fromString("system"); + + /* + * An optional description of the system tool. + */ + @Generated + private String description; + + /** + * Get the type property: The tool kind. + * + * @return the type value. + */ + @Generated + @Override + public String getType() { + return this.type; + } + + /** + * Get the name property: The service-managed control action. Known values are stable; additional values may be + * added over time. + * + * @return the name value. + */ + @Generated + public VoiceAgentSystemToolName getName() { + return this.name; + } + + /** + * Get the description property: An optional description of the system tool. + * + * @return the description value. + */ + @Generated + public String getDescription() { + return this.description; + } + + /** + * Set the description property: An optional description of the system tool. + * + * @param description the description value to set. + * @return the VoiceAgentSystemTool object itself. + */ + @Generated + public VoiceAgentSystemTool setDescription(String description) { + this.description = description; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("name", this.name == null ? null : this.name.toString()); + jsonWriter.writeStringField("description", this.description); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentSystemTool from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentSystemTool if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentSystemTool. + */ + @Generated + public static VoiceAgentSystemTool fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("name".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("end_conversation".equals(discriminatorValue)) { + return VoiceAgentEndConversationSystemTool.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + /** + * Creates an instance of VoiceAgentSystemTool class. + */ + @Generated + public VoiceAgentSystemTool() { + } + + @Generated + static VoiceAgentSystemTool fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentSystemTool deserializedVoiceAgentSystemTool = new VoiceAgentSystemTool(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + deserializedVoiceAgentSystemTool.name = VoiceAgentSystemToolName.fromString(reader.getString()); + } else if ("description".equals(fieldName)) { + deserializedVoiceAgentSystemTool.description = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentSystemTool; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemToolName.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemToolName.java new file mode 100644 index 0000000000000..caa0a2d02ceda --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemToolName.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * A service-managed voice-session control action. Known values are stable; additional values may be added over time. + */ +public final class VoiceAgentSystemToolName extends ExpandableStringEnum { + + /** + * Ends the active conversation. + */ + @Generated + public static final VoiceAgentSystemToolName END_CONVERSATION = fromString("end_conversation"); + + /** + * Creates a new instance of VoiceAgentSystemToolName value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAgentSystemToolName() { + } + + /** + * Creates or finds a VoiceAgentSystemToolName from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAgentSystemToolName. + */ + @Generated + public static VoiceAgentSystemToolName fromString(String name) { + return fromString(name, VoiceAgentSystemToolName.class); + } + + /** + * Gets known VoiceAgentSystemToolName values. + * + * @return known VoiceAgentSystemToolName values. + */ + @Generated + public static Collection values() { + return values(VoiceAgentSystemToolName.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTemplateGreetingConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTemplateGreetingConfig.java new file mode 100644 index 0000000000000..2fcde0868bfac --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTemplateGreetingConfig.java @@ -0,0 +1,106 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A deterministic greeting rendered with the voice agent's structured inputs and synthesized without model-authored + * generation. + */ +@Immutable +public final class VoiceAgentTemplateGreetingConfig extends VoiceAgentGreetingConfig { + + /* + * The greeting mode. + */ + @Generated + private String type = "template"; + + /* + * The Handlebars text template spoken at session start. + */ + @Generated + private final String text; + + /** + * Creates an instance of VoiceAgentTemplateGreetingConfig class. + * + * @param text the text value to set. + */ + @Generated + public VoiceAgentTemplateGreetingConfig(String text) { + this.text = text; + } + + /** + * Get the type property: The greeting mode. + * + * @return the type value. + */ + @Generated + @Override + public String getType() { + return this.type; + } + + /** + * Get the text property: The Handlebars text template spoken at session start. + * + * @return the text value. + */ + @Generated + public String getText() { + return this.text; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("text", this.text); + jsonWriter.writeStringField("type", this.type); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentTemplateGreetingConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentTemplateGreetingConfig if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentTemplateGreetingConfig. + */ + @Generated + public static VoiceAgentTemplateGreetingConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String text = null; + String type = "template"; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("text".equals(fieldName)) { + text = reader.getString(); + } else if ("type".equals(fieldName)) { + type = reader.getString(); + } else { + reader.skipChildren(); + } + } + VoiceAgentTemplateGreetingConfig deserializedVoiceAgentTemplateGreetingConfig + = new VoiceAgentTemplateGreetingConfig(text); + deserializedVoiceAgentTemplateGreetingConfig.type = type; + return deserializedVoiceAgentTemplateGreetingConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTool.java new file mode 100644 index 0000000000000..9cebd8904b375 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTool.java @@ -0,0 +1,111 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A tool usable by a voice agent. + */ +@Immutable +public class VoiceAgentTool implements JsonSerializable { + + /* + * The tool kind. + */ + @Generated + private String type = "VoiceAgentTool"; + + /** + * Creates an instance of VoiceAgentTool class. + */ + @Generated + public VoiceAgentTool() { + } + + /** + * Get the type property: The tool kind. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentTool from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentTool if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentTool. + */ + @Generated + public static VoiceAgentTool fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("function".equals(discriminatorValue)) { + return VoiceAgentFunctionTool.fromJson(readerToUse.reset()); + } else if ("mcp".equals(discriminatorValue)) { + return VoiceAgentMcpTool.fromJson(readerToUse.reset()); + } else if ("system".equals(discriminatorValue)) { + return VoiceAgentSystemTool.fromJson(readerToUse.reset()); + } else if ("toolbox".equals(discriminatorValue)) { + return VoiceAgentToolboxTool.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static VoiceAgentTool fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentTool deserializedVoiceAgentTool = new VoiceAgentTool(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedVoiceAgentTool.type = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentTool; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolResponseScheduling.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolResponseScheduling.java new file mode 100644 index 0000000000000..3b84befe8ac2d --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolResponseScheduling.java @@ -0,0 +1,69 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * When a tool invocation creates a follow-up response. Additional values may be added over time. + */ +public final class VoiceAgentToolResponseScheduling extends ExpandableStringEnum { + + /** + * Do not create a follow-up response after the service-executed tool invocation completes. + */ + @Generated + public static final VoiceAgentToolResponseScheduling SILENT = fromString("silent"); + + /** + * Create a follow-up response when the conversation is idle. + */ + @Generated + public static final VoiceAgentToolResponseScheduling WHEN_IDLE = fromString("when_idle"); + + /** + * Interrupt the active response and create a follow-up response. + */ + @Generated + public static final VoiceAgentToolResponseScheduling INTERRUPT = fromString("interrupt"); + + /** + * Create a follow-up response only when no response is active. + */ + @Generated + public static final VoiceAgentToolResponseScheduling SKIP_IF_BUSY = fromString("skip_if_busy"); + + /** + * Creates a new instance of VoiceAgentToolResponseScheduling value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAgentToolResponseScheduling() { + } + + /** + * Creates or finds a VoiceAgentToolResponseScheduling from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAgentToolResponseScheduling. + */ + @Generated + public static VoiceAgentToolResponseScheduling fromString(String name) { + return fromString(name, VoiceAgentToolResponseScheduling.class); + } + + /** + * Gets known VoiceAgentToolResponseScheduling values. + * + * @return known VoiceAgentToolResponseScheduling values. + */ + @Generated + public static Collection values() { + return values(VoiceAgentToolResponseScheduling.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolboxTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolboxTool.java new file mode 100644 index 0000000000000..2657c577ca278 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolboxTool.java @@ -0,0 +1,163 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A reference to a Foundry toolbox, which is a versioned bundle of tools executed through its MCP endpoint. + */ +@Fluent +public final class VoiceAgentToolboxTool extends VoiceAgentTool { + + /* + * The tool kind. + */ + @Generated + private String type = "toolbox"; + + /* + * The name of the toolbox to attach. + */ + @Generated + private final String toolboxName; + + /* + * The immutable version of the toolbox to attach. + */ + @Generated + private final String toolboxVersion; + + /* + * When the toolbox invocation creates a follow-up response. Defaults to `when_idle`. + */ + @Generated + private VoiceAgentToolResponseScheduling responseScheduling; + + /** + * Creates an instance of VoiceAgentToolboxTool class. + * + * @param toolboxName the toolboxName value to set. + * @param toolboxVersion the toolboxVersion value to set. + */ + @Generated + public VoiceAgentToolboxTool(String toolboxName, String toolboxVersion) { + this.toolboxName = toolboxName; + this.toolboxVersion = toolboxVersion; + } + + /** + * Get the type property: The tool kind. + * + * @return the type value. + */ + @Generated + @Override + public String getType() { + return this.type; + } + + /** + * Get the toolboxName property: The name of the toolbox to attach. + * + * @return the toolboxName value. + */ + @Generated + public String getToolboxName() { + return this.toolboxName; + } + + /** + * Get the toolboxVersion property: The immutable version of the toolbox to attach. + * + * @return the toolboxVersion value. + */ + @Generated + public String getToolboxVersion() { + return this.toolboxVersion; + } + + /** + * Get the responseScheduling property: When the toolbox invocation creates a follow-up response. Defaults to + * `when_idle`. + * + * @return the responseScheduling value. + */ + @Generated + public VoiceAgentToolResponseScheduling getResponseScheduling() { + return this.responseScheduling; + } + + /** + * Set the responseScheduling property: When the toolbox invocation creates a follow-up response. Defaults to + * `when_idle`. + * + * @param responseScheduling the responseScheduling value to set. + * @return the VoiceAgentToolboxTool object itself. + */ + @Generated + public VoiceAgentToolboxTool setResponseScheduling(VoiceAgentToolResponseScheduling responseScheduling) { + this.responseScheduling = responseScheduling; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("toolbox_name", this.toolboxName); + jsonWriter.writeStringField("toolbox_version", this.toolboxVersion); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("response_scheduling", + this.responseScheduling == null ? null : this.responseScheduling.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentToolboxTool from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentToolboxTool if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceAgentToolboxTool. + */ + @Generated + public static VoiceAgentToolboxTool fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String toolboxName = null; + String toolboxVersion = null; + String type = "toolbox"; + VoiceAgentToolResponseScheduling responseScheduling = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("toolbox_name".equals(fieldName)) { + toolboxName = reader.getString(); + } else if ("toolbox_version".equals(fieldName)) { + toolboxVersion = reader.getString(); + } else if ("type".equals(fieldName)) { + type = reader.getString(); + } else if ("response_scheduling".equals(fieldName)) { + responseScheduling = VoiceAgentToolResponseScheduling.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + VoiceAgentToolboxTool deserializedVoiceAgentToolboxTool + = new VoiceAgentToolboxTool(toolboxName, toolboxVersion); + deserializedVoiceAgentToolboxTool.type = type; + deserializedVoiceAgentToolboxTool.responseScheduling = responseScheduling; + return deserializedVoiceAgentToolboxTool; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTransport.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTransport.java new file mode 100644 index 0000000000000..3ff7ded6f8b03 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTransport.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The transport used for a voice-agent connection. + */ +public final class VoiceAgentTransport extends ExpandableStringEnum { + + /** + * Signaling and audio are exchanged as JSON events over the WebSocket. This is the default. + */ + @Generated + public static final VoiceAgentTransport WEBSOCKET = fromString("websocket"); + + /** + * WebRTC: the WebSocket carries only SDP signaling; media and the data channel are peer-to-peer. + */ + @Generated + public static final VoiceAgentTransport WEBRTC = fromString("webrtc"); + + /** + * Creates a new instance of VoiceAgentTransport value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAgentTransport() { + } + + /** + * Creates or finds a VoiceAgentTransport from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAgentTransport. + */ + @Generated + public static VoiceAgentTransport fromString(String name) { + return fromString(name, VoiceAgentTransport.class); + } + + /** + * Gets known VoiceAgentTransport values. + * + * @return known VoiceAgentTransport values. + */ + @Generated + public static Collection values() { + return values(VoiceAgentTransport.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionConfig.java new file mode 100644 index 0000000000000..71717fc8338ec --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionConfig.java @@ -0,0 +1,146 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Turn-detection configuration for a voice agent. + */ +@Fluent +public class VoiceAgentTurnDetectionConfig implements JsonSerializable { + + /* + * The turn-detection strategy. + */ + @Generated + private VoiceAgentTurnDetectionType type = VoiceAgentTurnDetectionType.fromString("VoiceAgentTurnDetectionConfig"); + + /* + * Whether the input audio buffer is truncated automatically when speech stops. + */ + @Generated + private Boolean autoTruncate; + + /** + * Creates an instance of VoiceAgentTurnDetectionConfig class. + */ + @Generated + public VoiceAgentTurnDetectionConfig() { + } + + /** + * Get the type property: The turn-detection strategy. + * + * @return the type value. + */ + @Generated + public VoiceAgentTurnDetectionType getType() { + return this.type; + } + + /** + * Get the autoTruncate property: Whether the input audio buffer is truncated automatically when speech stops. + * + * @return the autoTruncate value. + */ + @Generated + public Boolean isAutoTruncate() { + return this.autoTruncate; + } + + /** + * Set the autoTruncate property: Whether the input audio buffer is truncated automatically when speech stops. + * + * @param autoTruncate the autoTruncate value to set. + * @return the VoiceAgentTurnDetectionConfig object itself. + */ + @Generated + public VoiceAgentTurnDetectionConfig setAutoTruncate(Boolean autoTruncate) { + this.autoTruncate = autoTruncate; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeBooleanField("auto_truncate", this.autoTruncate); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceAgentTurnDetectionConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceAgentTurnDetectionConfig if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceAgentTurnDetectionConfig. + */ + @Generated + public static VoiceAgentTurnDetectionConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("server_vad".equals(discriminatorValue)) { + return VoiceAgentServerVadTurnDetection.fromJson(readerToUse.reset()); + } else if ("azure_semantic_vad".equals(discriminatorValue)) { + return VoiceAgentAzureSemanticVadTurnDetection.fromJson(readerToUse.reset()); + } else if ("azure_semantic_vad_en".equals(discriminatorValue)) { + return VoiceAgentAzureSemanticVadEnTurnDetection.fromJson(readerToUse.reset()); + } else if ("azure_semantic_vad_multilingual".equals(discriminatorValue)) { + return VoiceAgentAzureSemanticVadMultilingualTurnDetection.fromJson(readerToUse.reset()); + } else if ("semantic_vad".equals(discriminatorValue)) { + return VoiceAgentSemanticVadTurnDetection.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static VoiceAgentTurnDetectionConfig fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceAgentTurnDetectionConfig deserializedVoiceAgentTurnDetectionConfig + = new VoiceAgentTurnDetectionConfig(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedVoiceAgentTurnDetectionConfig.type + = VoiceAgentTurnDetectionType.fromString(reader.getString()); + } else if ("auto_truncate".equals(fieldName)) { + deserializedVoiceAgentTurnDetectionConfig.autoTruncate = reader.getNullable(JsonReader::getBoolean); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceAgentTurnDetectionConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionType.java new file mode 100644 index 0000000000000..b15546ec36da3 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionType.java @@ -0,0 +1,76 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The turn-detection strategy. Additional values may be added over time. + */ +public final class VoiceAgentTurnDetectionType extends ExpandableStringEnum { + + /** + * Server-side voice activity detection. + */ + @Generated + public static final VoiceAgentTurnDetectionType SERVER_VAD = fromString("server_vad"); + + /** + * Semantic voice activity detection. + */ + @Generated + public static final VoiceAgentTurnDetectionType SEMANTIC_VAD = fromString("semantic_vad"); + + /** + * Azure semantic voice activity detection. + */ + @Generated + public static final VoiceAgentTurnDetectionType AZURE_SEMANTIC_VAD = fromString("azure_semantic_vad"); + + /** + * English-optimized Azure semantic voice activity detection. + */ + @Generated + public static final VoiceAgentTurnDetectionType AZURE_SEMANTIC_VAD_EN = fromString("azure_semantic_vad_en"); + + /** + * Multilingual Azure semantic voice activity detection. + */ + @Generated + public static final VoiceAgentTurnDetectionType AZURE_SEMANTIC_VAD_MULTILINGUAL + = fromString("azure_semantic_vad_multilingual"); + + /** + * Creates a new instance of VoiceAgentTurnDetectionType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAgentTurnDetectionType() { + } + + /** + * Creates or finds a VoiceAgentTurnDetectionType from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAgentTurnDetectionType. + */ + @Generated + public static VoiceAgentTurnDetectionType fromString(String name) { + return fromString(name, VoiceAgentTurnDetectionType.class); + } + + /** + * Gets known VoiceAgentTurnDetectionType values. + * + * @return known VoiceAgentTurnDetectionType values. + */ + @Generated + public static Collection values() { + return values(VoiceAgentTurnDetectionType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAudioCodec.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAudioCodec.java new file mode 100644 index 0000000000000..c05d9e6dbc2cf --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAudioCodec.java @@ -0,0 +1,63 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * An audio codec. Additional values may be added over time. + */ +public final class VoiceAudioCodec extends ExpandableStringEnum { + + /** + * 16-bit pulse-code modulation. + */ + @Generated + public static final VoiceAudioCodec PCM16 = fromString("pcm16"); + + /** + * G.711 mu-law. + */ + @Generated + public static final VoiceAudioCodec PCMU = fromString("pcmu"); + + /** + * G.711 A-law. + */ + @Generated + public static final VoiceAudioCodec PCMA = fromString("pcma"); + + /** + * Creates a new instance of VoiceAudioCodec value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAudioCodec() { + } + + /** + * Creates or finds a VoiceAudioCodec from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAudioCodec. + */ + @Generated + public static VoiceAudioCodec fromString(String name) { + return fromString(name, VoiceAudioCodec.class); + } + + /** + * Gets known VoiceAudioCodec values. + * + * @return known VoiceAudioCodec values. + */ + @Generated + public static Collection values() { + return values(VoiceAudioCodec.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAudioContainerFormat.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAudioContainerFormat.java new file mode 100644 index 0000000000000..1987a8364d624 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAudioContainerFormat.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * An audio container format. Additional values may be added over time. + */ +public final class VoiceAudioContainerFormat extends ExpandableStringEnum { + + /** + * Waveform Audio File Format. + */ + @Generated + public static final VoiceAudioContainerFormat WAV = fromString("wav"); + + /** + * Creates a new instance of VoiceAudioContainerFormat value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAudioContainerFormat() { + } + + /** + * Creates or finds a VoiceAudioContainerFormat from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAudioContainerFormat. + */ + @Generated + public static VoiceAudioContainerFormat fromString(String name) { + return fromString(name, VoiceAudioContainerFormat.class); + } + + /** + * Gets known VoiceAudioContainerFormat values. + * + * @return known VoiceAudioContainerFormat values. + */ + @Generated + public static Collection values() { + return values(VoiceAudioContainerFormat.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAudioRole.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAudioRole.java new file mode 100644 index 0000000000000..358e59272178c --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAudioRole.java @@ -0,0 +1,57 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * A voice-audio participant role. Additional values may be added over time. + */ +public final class VoiceAudioRole extends ExpandableStringEnum { + + /** + * Audio produced by the user. + */ + @Generated + public static final VoiceAudioRole USER = fromString("user"); + + /** + * Audio produced by the agent. + */ + @Generated + public static final VoiceAudioRole AGENT = fromString("agent"); + + /** + * Creates a new instance of VoiceAudioRole value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceAudioRole() { + } + + /** + * Creates or finds a VoiceAudioRole from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceAudioRole. + */ + @Generated + public static VoiceAudioRole fromString(String name) { + return fromString(name, VoiceAudioRole.class); + } + + /** + * Gets known VoiceAudioRole values. + * + * @return known VoiceAudioRole values. + */ + @Generated + public static Collection values() { + return values(VoiceAudioRole.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceConversation.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceConversation.java new file mode 100644 index 0000000000000..dc71ae3c02f8c --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceConversation.java @@ -0,0 +1,249 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.util.Map; + +/** + * A persisted voice conversation. The Foundry envelope that owns a voice agent's stored + * transcript, responses, per-turn metrics, and audio. It is the parent, retention, and delete boundary: + * deleting it cascades to its responses, items, metrics, and audio. When finalization fails, any partial persisted + * responses, items, and item audio remain readable. + */ +@Immutable +public final class VoiceConversation implements JsonSerializable { + + /* + * The unique id of the conversation. + */ + @Generated + private final String id; + + /* + * The object type. Always `voice.conversation`. + */ + @Generated + private final String object = "voice.conversation"; + + /* + * The lifecycle status of the conversation. + */ + @Generated + private final VoiceConversationStatus status; + + /* + * The Unix timestamp (in seconds) for when the conversation was created. + */ + @Generated + private final long createdAt; + + /* + * The Unix timestamp (in seconds) for when session and persistence finalization reached the terminal `completed` or + * `failed` status. Absent while `status` is `in_progress`. + */ + @Generated + private Long completedAt; + + /* + * A set of key-value pairs attached to the conversation. + */ + @Generated + private Map metadata; + + /* + * Final aggregate token usage across all responses in this conversation. Absent while `status` is `in_progress` and + * populated after successful `completed` finalization; it may be absent when `status` is `failed`, and values are + * not guaranteed to be reported incrementally. + */ + @Generated + private RealtimeResponseUsage usage; + + /* + * The terminal error that prevented persistence finalization. Present only when `status` is `failed`. + */ + @Generated + private ApiError lastError; + + /** + * Creates an instance of VoiceConversation class. + * + * @param id the id value to set. + * @param status the status value to set. + * @param createdAt the createdAt value to set. + */ + @Generated + private VoiceConversation(String id, VoiceConversationStatus status, OffsetDateTime createdAt) { + this.id = id; + this.status = status; + if (createdAt == null) { + this.createdAt = 0L; + } else { + this.createdAt = createdAt.toEpochSecond(); + } + } + + /** + * Get the id property: The unique id of the conversation. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the object property: The object type. Always `voice.conversation`. + * + * @return the object value. + */ + @Generated + public String getObject() { + return this.object; + } + + /** + * Get the status property: The lifecycle status of the conversation. + * + * @return the status value. + */ + @Generated + public VoiceConversationStatus getStatus() { + return this.status; + } + + /** + * Get the createdAt property: The Unix timestamp (in seconds) for when the conversation was created. + * + * @return the createdAt value. + */ + @Generated + public OffsetDateTime getCreatedAt() { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.createdAt), ZoneOffset.UTC); + } + + /** + * Get the completedAt property: The Unix timestamp (in seconds) for when session and persistence finalization + * reached the terminal `completed` or `failed` status. Absent while `status` is `in_progress`. + * + * @return the completedAt value. + */ + @Generated + public OffsetDateTime getCompletedAt() { + if (this.completedAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.completedAt), ZoneOffset.UTC); + } + + /** + * Get the metadata property: A set of key-value pairs attached to the conversation. + * + * @return the metadata value. + */ + @Generated + public Map getMetadata() { + return this.metadata; + } + + /** + * Get the usage property: Final aggregate token usage across all responses in this conversation. Absent while + * `status` is `in_progress` and populated after successful `completed` finalization; it may be absent when `status` + * is `failed`, and values are not guaranteed to be reported incrementally. + * + * @return the usage value. + */ + @Generated + public RealtimeResponseUsage getUsage() { + return this.usage; + } + + /** + * Get the lastError property: The terminal error that prevented persistence finalization. Present only when + * `status` is `failed`. + * + * @return the lastError value. + */ + @Generated + public ApiError getLastError() { + return this.lastError; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("object", this.object); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + jsonWriter.writeLongField("created_at", this.createdAt); + jsonWriter.writeNumberField("completed_at", this.completedAt); + jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element)); + jsonWriter.writeJsonField("usage", this.usage); + jsonWriter.writeJsonField("last_error", this.lastError); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceConversation from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceConversation if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceConversation. + */ + @Generated + public static VoiceConversation fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String id = null; + VoiceConversationStatus status = null; + OffsetDateTime createdAt = null; + Long completedAt = null; + Map metadata = null; + RealtimeResponseUsage usage = null; + ApiError lastError = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("status".equals(fieldName)) { + status = VoiceConversationStatus.fromString(reader.getString()); + } else if ("created_at".equals(fieldName)) { + createdAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC); + } else if ("completed_at".equals(fieldName)) { + completedAt = reader.getNullable(JsonReader::getLong); + } else if ("metadata".equals(fieldName)) { + metadata = reader.readMap(reader1 -> reader1.getString()); + } else if ("usage".equals(fieldName)) { + usage = RealtimeResponseUsage.fromJson(reader); + } else if ("last_error".equals(fieldName)) { + lastError = ApiError.fromJson(reader); + } else { + reader.skipChildren(); + } + } + VoiceConversation deserializedVoiceConversation = new VoiceConversation(id, status, createdAt); + deserializedVoiceConversation.completedAt = completedAt; + deserializedVoiceConversation.metadata = metadata; + deserializedVoiceConversation.usage = usage; + deserializedVoiceConversation.lastError = lastError; + return deserializedVoiceConversation; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceConversationEngine.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceConversationEngine.java new file mode 100644 index 0000000000000..549e0fb69cd05 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceConversationEngine.java @@ -0,0 +1,105 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * An engine that owns conversation handling for a voice agent. + */ +@Immutable +public class VoiceConversationEngine implements JsonSerializable { + + /* + * The conversation engine type. + */ + @Generated + private String type = "VoiceConversationEngine"; + + /** + * Creates an instance of VoiceConversationEngine class. + */ + @Generated + public VoiceConversationEngine() { + } + + /** + * Get the type property: The conversation engine type. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceConversationEngine from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceConversationEngine if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceConversationEngine. + */ + @Generated + public static VoiceConversationEngine fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("hosted_agent".equals(discriminatorValue)) { + return VoiceHostedAgentConversationEngine.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static VoiceConversationEngine fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceConversationEngine deserializedVoiceConversationEngine = new VoiceConversationEngine(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedVoiceConversationEngine.type = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceConversationEngine; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceConversationStatus.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceConversationStatus.java new file mode 100644 index 0000000000000..2ec5dae1b324f --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceConversationStatus.java @@ -0,0 +1,68 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The lifecycle status of a persisted voice conversation: + * - `in_progress`: the live session is active, or post-session persistence finalization is pending. + * - `completed`: finalization succeeded after normal or client close, `end_conversation`, a max-duration `1001` + * close, or a client or network disconnect that the service can still finalize. + * - `failed`: a terminal service, bridge, storage, or unrecoverable transport failure prevented finalization. + */ +public final class VoiceConversationStatus extends ExpandableStringEnum { + + /** + * The live session is active, or post-session persistence finalization is still pending. + */ + @Generated + public static final VoiceConversationStatus IN_PROGRESS = fromString("in_progress"); + + /** + * Persistence finalization succeeded. This includes normal or client-initiated close, the `end_conversation` system + * tool, a max-duration `1001` close, and client or network disconnects that the service can still finalize. + */ + @Generated + public static final VoiceConversationStatus COMPLETED = fromString("completed"); + + /** + * A terminal service, bridge, storage, or unrecoverable transport failure prevented persistence finalization. + */ + @Generated + public static final VoiceConversationStatus FAILED = fromString("failed"); + + /** + * Creates a new instance of VoiceConversationStatus value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceConversationStatus() { + } + + /** + * Creates or finds a VoiceConversationStatus from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceConversationStatus. + */ + @Generated + public static VoiceConversationStatus fromString(String name) { + return fromString(name, VoiceConversationStatus.class); + } + + /** + * Gets known VoiceConversationStatus values. + * + * @return known VoiceConversationStatus values. + */ + @Generated + public static Collection values() { + return values(VoiceConversationStatus.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceGeneratedItemAudioResponse.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceGeneratedItemAudioResponse.java new file mode 100644 index 0000000000000..1d3f5ed809847 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceGeneratedItemAudioResponse.java @@ -0,0 +1,289 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; + +/** + * Metadata for a conversation item's generated audio. For bring-your-own-storage (BYOS), the response includes + * `blob_uri`, a direct customer-storage URI without a SAS token, that the customer accesses with their own + * credentials. For Foundry-managed storage, `blob_uri` is absent and the bytes are streamed through the item's + * `/audio/generated/content` route. + */ +@Immutable +public final class VoiceGeneratedItemAudioResponse implements JsonSerializable { + + /* + * The id of the conversation the item belongs to. + */ + @Generated + private final String conversationId; + + /* + * The id of the item this audio belongs to. + */ + @Generated + private final String itemId; + + /* + * The role the audio belongs to. + */ + @Generated + private VoiceAudioRole role; + + /* + * The container format of the audio. + */ + @Generated + private VoiceAudioContainerFormat format; + + /* + * The audio codec. + */ + @Generated + private VoiceAudioCodec codec; + + /* + * The sample rate in Hz. + */ + @Generated + private Integer sampleRate; + + /* + * The number of audio channels. + */ + @Generated + private Integer channels; + + /* + * The offset from the session start at which this segment begins. + */ + @Generated + private Long startOffsetMs; + + /* + * The duration of the audio segment. + */ + @Generated + private Long durationMs; + + /* + * For bring-your-own-storage (BYOS) recordings only: the URI of the generated audio in the customer's own storage, + * without a SAS token. The customer downloads it using their own storage credentials. Absent for Foundry-managed + * storage, where the bytes are streamed via the item's `/audio/generated/content` route instead. + */ + @Generated + private String blobUri; + + /** + * Creates an instance of VoiceGeneratedItemAudioResponse class. + * + * @param conversationId the conversationId value to set. + * @param itemId the itemId value to set. + */ + @Generated + private VoiceGeneratedItemAudioResponse(String conversationId, String itemId) { + this.conversationId = conversationId; + this.itemId = itemId; + } + + /** + * Get the conversationId property: The id of the conversation the item belongs to. + * + * @return the conversationId value. + */ + @Generated + public String getConversationId() { + return this.conversationId; + } + + /** + * Get the itemId property: The id of the item this audio belongs to. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the role property: The role the audio belongs to. + * + * @return the role value. + */ + @Generated + public VoiceAudioRole getRole() { + return this.role; + } + + /** + * Get the format property: The container format of the audio. + * + * @return the format value. + */ + @Generated + public VoiceAudioContainerFormat getFormat() { + return this.format; + } + + /** + * Get the codec property: The audio codec. + * + * @return the codec value. + */ + @Generated + public VoiceAudioCodec getCodec() { + return this.codec; + } + + /** + * Get the sampleRate property: The sample rate in Hz. + * + * @return the sampleRate value. + */ + @Generated + public Integer getSampleRate() { + return this.sampleRate; + } + + /** + * Get the channels property: The number of audio channels. + * + * @return the channels value. + */ + @Generated + public Integer getChannels() { + return this.channels; + } + + /** + * Get the startOffsetMs property: The offset from the session start at which this segment begins. + * + * @return the startOffsetMs value. + */ + @Generated + public Duration getStartOffsetMs() { + if (this.startOffsetMs == null) { + return null; + } + return Duration.ofMillis(this.startOffsetMs); + } + + /** + * Get the durationMs property: The duration of the audio segment. + * + * @return the durationMs value. + */ + @Generated + public Duration getDurationMs() { + if (this.durationMs == null) { + return null; + } + return Duration.ofMillis(this.durationMs); + } + + /** + * Get the blobUri property: For bring-your-own-storage (BYOS) recordings only: the URI of the generated audio in + * the customer's own storage, without a SAS token. The customer downloads it using their own storage credentials. + * Absent for Foundry-managed storage, where the bytes are streamed via the item's `/audio/generated/content` route + * instead. + * + * @return the blobUri value. + */ + @Generated + public String getBlobUri() { + return this.blobUri; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("conversation_id", this.conversationId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("role", this.role == null ? null : this.role.toString()); + jsonWriter.writeStringField("format", this.format == null ? null : this.format.toString()); + jsonWriter.writeStringField("codec", this.codec == null ? null : this.codec.toString()); + jsonWriter.writeNumberField("sample_rate", this.sampleRate); + jsonWriter.writeNumberField("channels", this.channels); + jsonWriter.writeNumberField("start_offset_ms", this.startOffsetMs); + jsonWriter.writeNumberField("duration_ms", this.durationMs); + jsonWriter.writeStringField("blob_uri", this.blobUri); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceGeneratedItemAudioResponse from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceGeneratedItemAudioResponse if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceGeneratedItemAudioResponse. + */ + @Generated + public static VoiceGeneratedItemAudioResponse fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String conversationId = null; + String itemId = null; + VoiceAudioRole role = null; + VoiceAudioContainerFormat format = null; + VoiceAudioCodec codec = null; + Integer sampleRate = null; + Integer channels = null; + Long startOffsetMs = null; + Long durationMs = null; + String blobUri = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("conversation_id".equals(fieldName)) { + conversationId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("role".equals(fieldName)) { + role = VoiceAudioRole.fromString(reader.getString()); + } else if ("format".equals(fieldName)) { + format = VoiceAudioContainerFormat.fromString(reader.getString()); + } else if ("codec".equals(fieldName)) { + codec = VoiceAudioCodec.fromString(reader.getString()); + } else if ("sample_rate".equals(fieldName)) { + sampleRate = reader.getNullable(JsonReader::getInt); + } else if ("channels".equals(fieldName)) { + channels = reader.getNullable(JsonReader::getInt); + } else if ("start_offset_ms".equals(fieldName)) { + startOffsetMs = reader.getNullable(JsonReader::getLong); + } else if ("duration_ms".equals(fieldName)) { + durationMs = reader.getNullable(JsonReader::getLong); + } else if ("blob_uri".equals(fieldName)) { + blobUri = reader.getString(); + } else { + reader.skipChildren(); + } + } + VoiceGeneratedItemAudioResponse deserializedVoiceGeneratedItemAudioResponse + = new VoiceGeneratedItemAudioResponse(conversationId, itemId); + deserializedVoiceGeneratedItemAudioResponse.role = role; + deserializedVoiceGeneratedItemAudioResponse.format = format; + deserializedVoiceGeneratedItemAudioResponse.codec = codec; + deserializedVoiceGeneratedItemAudioResponse.sampleRate = sampleRate; + deserializedVoiceGeneratedItemAudioResponse.channels = channels; + deserializedVoiceGeneratedItemAudioResponse.startOffsetMs = startOffsetMs; + deserializedVoiceGeneratedItemAudioResponse.durationMs = durationMs; + deserializedVoiceGeneratedItemAudioResponse.blobUri = blobUri; + return deserializedVoiceGeneratedItemAudioResponse; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceHostedAgentConversationEngine.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceHostedAgentConversationEngine.java new file mode 100644 index 0000000000000..2b444bf362d9d --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceHostedAgentConversationEngine.java @@ -0,0 +1,199 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * A closed reference to the hosted text agent that owns conversation handling for a voice agent. The hosted agent is + * resolved within the same project and must support the `invocations_ws` protocol, Voice Live compatibility, and Bridge + * Protocol 1.0. + */ +@Fluent +public final class VoiceHostedAgentConversationEngine extends VoiceConversationEngine { + + /* + * The conversation engine type. + */ + @Generated + private String type = "hosted_agent"; + + /* + * The non-empty DNS-like name of the target hosted text agent in the same project. + */ + @Generated + private final String name; + + /* + * The target agent version. Omit this property to select the latest version when the voice session starts. When + * supplied, use a positive integer or `draft-{positive-unix-timestamp}` whose numeric component fits in a signed + * 64-bit integer. + */ + @Generated + private String version; + + /* + * A closed reference to the hosted text agent that owns conversation handling for a voice agent. The hosted agent + * is resolved within the same project and must support the `invocations_ws` protocol, Voice Live compatibility, and + * Bridge Protocol 1.0. + */ + @Generated + private Map additionalProperties; + + /** + * Creates an instance of VoiceHostedAgentConversationEngine class. + * + * @param name the name value to set. + */ + @Generated + public VoiceHostedAgentConversationEngine(String name) { + this.name = name; + } + + /** + * Get the type property: The conversation engine type. + * + * @return the type value. + */ + @Generated + @Override + public String getType() { + return this.type; + } + + /** + * Get the name property: The non-empty DNS-like name of the target hosted text agent in the same project. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * Get the version property: The target agent version. Omit this property to select the latest version when the + * voice session starts. When supplied, use a positive integer or `draft-{positive-unix-timestamp}` whose numeric + * component fits in a signed 64-bit integer. + * + * @return the version value. + */ + @Generated + public String getVersion() { + return this.version; + } + + /** + * Set the version property: The target agent version. Omit this property to select the latest version when the + * voice session starts. When supplied, use a positive integer or `draft-{positive-unix-timestamp}` whose numeric + * component fits in a signed 64-bit integer. + * + * @param version the version value to set. + * @return the VoiceHostedAgentConversationEngine object itself. + */ + @Generated + public VoiceHostedAgentConversationEngine setVersion(String version) { + this.version = version; + return this; + } + + /** + * Get the additionalProperties property: A closed reference to the hosted text agent that owns conversation + * handling for a voice agent. The hosted agent is resolved within the same project and must support the + * `invocations_ws` protocol, Voice Live compatibility, and Bridge Protocol 1.0. + * + * @return the additionalProperties value. + */ + @Generated + public Map getAdditionalProperties() { + return this.additionalProperties; + } + + /** + * Set the additionalProperties property: A closed reference to the hosted text agent that owns conversation + * handling for a voice agent. The hosted agent is resolved within the same project and must support the + * `invocations_ws` protocol, Voice Live compatibility, and Bridge Protocol 1.0. + * + * @param additionalProperties the additionalProperties value to set. + * @return the VoiceHostedAgentConversationEngine object itself. + */ + @Generated + public VoiceHostedAgentConversationEngine setAdditionalProperties(Map additionalProperties) { + this.additionalProperties = additionalProperties; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeStringField("type", this.type); + jsonWriter.writeStringField("version", this.version); + if (additionalProperties != null) { + for (Map.Entry additionalProperty : additionalProperties.entrySet()) { + jsonWriter.writeFieldName(additionalProperty.getKey()); + if (additionalProperty.getValue() == null) { + jsonWriter.writeNull(); + } else { + additionalProperty.getValue().writeTo(jsonWriter); + } + } + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceHostedAgentConversationEngine from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceHostedAgentConversationEngine if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceHostedAgentConversationEngine. + */ + @Generated + public static VoiceHostedAgentConversationEngine fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String name = null; + String type = "hosted_agent"; + String version = null; + Map additionalProperties = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("type".equals(fieldName)) { + type = reader.getString(); + } else if ("version".equals(fieldName)) { + version = reader.getString(); + } else { + if (additionalProperties == null) { + additionalProperties = new LinkedHashMap<>(); + } + additionalProperties.put(fieldName, + reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped()))); + } + } + VoiceHostedAgentConversationEngine deserializedVoiceHostedAgentConversationEngine + = new VoiceHostedAgentConversationEngine(name); + deserializedVoiceHostedAgentConversationEngine.type = type; + deserializedVoiceHostedAgentConversationEngine.version = version; + deserializedVoiceHostedAgentConversationEngine.additionalProperties = additionalProperties; + return deserializedVoiceHostedAgentConversationEngine; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceItemAudioResponse.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceItemAudioResponse.java new file mode 100644 index 0000000000000..04c5a37521946 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceItemAudioResponse.java @@ -0,0 +1,288 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; + +/** + * Metadata for a single conversation item's audio segment. For bring-your-own-storage (BYOS), the response includes + * `blob_uri`, a direct customer-storage URI without a SAS token, that the customer accesses with their own + * credentials. For Foundry-managed storage, `blob_uri` is absent and the bytes are streamed through the item's + * `/audio/content` route. + */ +@Immutable +public final class VoiceItemAudioResponse implements JsonSerializable { + + /* + * The id of the conversation the item belongs to. + */ + @Generated + private final String conversationId; + + /* + * The id of the item this audio belongs to. + */ + @Generated + private final String itemId; + + /* + * The role the audio belongs to. + */ + @Generated + private VoiceAudioRole role; + + /* + * The container format of the audio. + */ + @Generated + private VoiceAudioContainerFormat format; + + /* + * The audio codec. + */ + @Generated + private VoiceAudioCodec codec; + + /* + * The sample rate in Hz. + */ + @Generated + private Integer sampleRate; + + /* + * The number of audio channels. + */ + @Generated + private Integer channels; + + /* + * The offset from the session start at which this segment begins. + */ + @Generated + private Long startOffsetMs; + + /* + * The duration of the audio segment. + */ + @Generated + private Long durationMs; + + /* + * For bring-your-own-storage (BYOS) recordings only: the URI of the recording in the customer's own storage, + * without a SAS token. The customer downloads it using their own storage credentials. Absent for Foundry-managed + * storage, where the bytes are streamed via the item's `/audio/content` route instead. + */ + @Generated + private String blobUri; + + /** + * Creates an instance of VoiceItemAudioResponse class. + * + * @param conversationId the conversationId value to set. + * @param itemId the itemId value to set. + */ + @Generated + private VoiceItemAudioResponse(String conversationId, String itemId) { + this.conversationId = conversationId; + this.itemId = itemId; + } + + /** + * Get the conversationId property: The id of the conversation the item belongs to. + * + * @return the conversationId value. + */ + @Generated + public String getConversationId() { + return this.conversationId; + } + + /** + * Get the itemId property: The id of the item this audio belongs to. + * + * @return the itemId value. + */ + @Generated + public String getItemId() { + return this.itemId; + } + + /** + * Get the role property: The role the audio belongs to. + * + * @return the role value. + */ + @Generated + public VoiceAudioRole getRole() { + return this.role; + } + + /** + * Get the format property: The container format of the audio. + * + * @return the format value. + */ + @Generated + public VoiceAudioContainerFormat getFormat() { + return this.format; + } + + /** + * Get the codec property: The audio codec. + * + * @return the codec value. + */ + @Generated + public VoiceAudioCodec getCodec() { + return this.codec; + } + + /** + * Get the sampleRate property: The sample rate in Hz. + * + * @return the sampleRate value. + */ + @Generated + public Integer getSampleRate() { + return this.sampleRate; + } + + /** + * Get the channels property: The number of audio channels. + * + * @return the channels value. + */ + @Generated + public Integer getChannels() { + return this.channels; + } + + /** + * Get the startOffsetMs property: The offset from the session start at which this segment begins. + * + * @return the startOffsetMs value. + */ + @Generated + public Duration getStartOffsetMs() { + if (this.startOffsetMs == null) { + return null; + } + return Duration.ofMillis(this.startOffsetMs); + } + + /** + * Get the durationMs property: The duration of the audio segment. + * + * @return the durationMs value. + */ + @Generated + public Duration getDurationMs() { + if (this.durationMs == null) { + return null; + } + return Duration.ofMillis(this.durationMs); + } + + /** + * Get the blobUri property: For bring-your-own-storage (BYOS) recordings only: the URI of the recording in the + * customer's own storage, without a SAS token. The customer downloads it using their own storage credentials. + * Absent for Foundry-managed storage, where the bytes are streamed via the item's `/audio/content` route instead. + * + * @return the blobUri value. + */ + @Generated + public String getBlobUri() { + return this.blobUri; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("conversation_id", this.conversationId); + jsonWriter.writeStringField("item_id", this.itemId); + jsonWriter.writeStringField("role", this.role == null ? null : this.role.toString()); + jsonWriter.writeStringField("format", this.format == null ? null : this.format.toString()); + jsonWriter.writeStringField("codec", this.codec == null ? null : this.codec.toString()); + jsonWriter.writeNumberField("sample_rate", this.sampleRate); + jsonWriter.writeNumberField("channels", this.channels); + jsonWriter.writeNumberField("start_offset_ms", this.startOffsetMs); + jsonWriter.writeNumberField("duration_ms", this.durationMs); + jsonWriter.writeStringField("blob_uri", this.blobUri); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceItemAudioResponse from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceItemAudioResponse if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceItemAudioResponse. + */ + @Generated + public static VoiceItemAudioResponse fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String conversationId = null; + String itemId = null; + VoiceAudioRole role = null; + VoiceAudioContainerFormat format = null; + VoiceAudioCodec codec = null; + Integer sampleRate = null; + Integer channels = null; + Long startOffsetMs = null; + Long durationMs = null; + String blobUri = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("conversation_id".equals(fieldName)) { + conversationId = reader.getString(); + } else if ("item_id".equals(fieldName)) { + itemId = reader.getString(); + } else if ("role".equals(fieldName)) { + role = VoiceAudioRole.fromString(reader.getString()); + } else if ("format".equals(fieldName)) { + format = VoiceAudioContainerFormat.fromString(reader.getString()); + } else if ("codec".equals(fieldName)) { + codec = VoiceAudioCodec.fromString(reader.getString()); + } else if ("sample_rate".equals(fieldName)) { + sampleRate = reader.getNullable(JsonReader::getInt); + } else if ("channels".equals(fieldName)) { + channels = reader.getNullable(JsonReader::getInt); + } else if ("start_offset_ms".equals(fieldName)) { + startOffsetMs = reader.getNullable(JsonReader::getLong); + } else if ("duration_ms".equals(fieldName)) { + durationMs = reader.getNullable(JsonReader::getLong); + } else if ("blob_uri".equals(fieldName)) { + blobUri = reader.getString(); + } else { + reader.skipChildren(); + } + } + VoiceItemAudioResponse deserializedVoiceItemAudioResponse + = new VoiceItemAudioResponse(conversationId, itemId); + deserializedVoiceItemAudioResponse.role = role; + deserializedVoiceItemAudioResponse.format = format; + deserializedVoiceItemAudioResponse.codec = codec; + deserializedVoiceItemAudioResponse.sampleRate = sampleRate; + deserializedVoiceItemAudioResponse.channels = channels; + deserializedVoiceItemAudioResponse.startOffsetMs = startOffsetMs; + deserializedVoiceItemAudioResponse.durationMs = durationMs; + deserializedVoiceItemAudioResponse.blobUri = blobUri; + return deserializedVoiceItemAudioResponse; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceModelType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceModelType.java new file mode 100644 index 0000000000000..4a469e25bacfa --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceModelType.java @@ -0,0 +1,58 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * How the model backing a voice agent is served. This is independent of the architecture (realtime or cascaded), + * which the service derives from the selected model. + */ +public final class VoiceModelType extends ExpandableStringEnum { + + /** + * The service hosts and manages the named model, for example `gpt-realtime`. + */ + @Generated + public static final VoiceModelType MANAGED = fromString("managed"); + + /** + * The service uses the customer's own Foundry deployment named by `model`. + */ + @Generated + public static final VoiceModelType SELF_DEPLOYED = fromString("self_deployed"); + + /** + * Creates a new instance of VoiceModelType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceModelType() { + } + + /** + * Creates or finds a VoiceModelType from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceModelType. + */ + @Generated + public static VoiceModelType fromString(String name) { + return fromString(name, VoiceModelType.class); + } + + /** + * Gets known VoiceModelType values. + * + * @return known VoiceModelType values. + */ + @Generated + public static Collection values() { + return values(VoiceModelType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceOutputModality.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceOutputModality.java new file mode 100644 index 0000000000000..a010889d41bdf --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceOutputModality.java @@ -0,0 +1,69 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * An output modality the agent may produce. `animation` and `avatar` are used when an avatar is configured. + */ +public final class VoiceOutputModality extends ExpandableStringEnum { + + /** + * Static value text for VoiceOutputModality. + */ + @Generated + public static final VoiceOutputModality TEXT = fromString("text"); + + /** + * Static value audio for VoiceOutputModality. + */ + @Generated + public static final VoiceOutputModality AUDIO = fromString("audio"); + + /** + * Static value animation for VoiceOutputModality. + */ + @Generated + public static final VoiceOutputModality ANIMATION = fromString("animation"); + + /** + * Static value avatar for VoiceOutputModality. + */ + @Generated + public static final VoiceOutputModality AVATAR = fromString("avatar"); + + /** + * Creates a new instance of VoiceOutputModality value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceOutputModality() { + } + + /** + * Creates or finds a VoiceOutputModality from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceOutputModality. + */ + @Generated + public static VoiceOutputModality fromString(String name) { + return fromString(name, VoiceOutputModality.class); + } + + /** + * Gets known VoiceOutputModality values. + * + * @return known VoiceOutputModality values. + */ + @Generated + public static Collection values() { + return values(VoiceOutputModality.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceRecordingChannelLayout.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceRecordingChannelLayout.java new file mode 100644 index 0000000000000..c89a05547b12a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceRecordingChannelLayout.java @@ -0,0 +1,92 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The role assigned to each channel of a merged stereo voice recording. + */ +@Immutable +public final class VoiceRecordingChannelLayout implements JsonSerializable { + + /* + * The role carried on the left channel. Always `user`. + */ + @Generated + private final String left = "user"; + + /* + * The role carried on the right channel. Always `agent`. + */ + @Generated + private final String right = "agent"; + + /** + * Creates an instance of VoiceRecordingChannelLayout class. + */ + @Generated + private VoiceRecordingChannelLayout() { + } + + /** + * Get the left property: The role carried on the left channel. Always `user`. + * + * @return the left value. + */ + @Generated + public String getLeft() { + return this.left; + } + + /** + * Get the right property: The role carried on the right channel. Always `agent`. + * + * @return the right value. + */ + @Generated + public String getRight() { + return this.right; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("left", this.left); + jsonWriter.writeStringField("right", this.right); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceRecordingChannelLayout from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceRecordingChannelLayout if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceRecordingChannelLayout. + */ + @Generated + public static VoiceRecordingChannelLayout fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceRecordingChannelLayout deserializedVoiceRecordingChannelLayout = new VoiceRecordingChannelLayout(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + reader.skipChildren(); + } + return deserializedVoiceRecordingChannelLayout; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceRecordingResponse.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceRecordingResponse.java new file mode 100644 index 0000000000000..f03335b7b6f24 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceRecordingResponse.java @@ -0,0 +1,231 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Duration; + +/** + * Metadata for the merged, whole-call stereo recording of a voice conversation (user audio on the left channel, + * agent audio on the right). Built once from the per-turn segments after the session ends and durably cached. + * The common metadata (format, sample rate, channels, channel layout, duration) is returned for both + * Foundry-managed and bring-your-own-storage (BYOS) recordings. For BYOS the response also includes `blob_uri`, + * the URI of the recording in the customer's own storage (no SAS token), which the customer downloads using their + * own storage credentials. For Foundry-managed storage `blob_uri` is absent and the bytes are streamed via the + * `/audio/content` route instead. + */ +@Immutable +public final class VoiceRecordingResponse implements JsonSerializable { + + /* + * The id of the conversation this recording belongs to. + */ + @Generated + private final String conversationId; + + /* + * The container format of the recording. + */ + @Generated + private final VoiceAudioContainerFormat format; + + /* + * The sample rate of the recording in Hz, e.g. 24000. + */ + @Generated + private final int sampleRate; + + /* + * The number of audio channels. The merged recording is stereo (`2`). + */ + @Generated + private final int channels; + + /* + * The role assigned to each stereo channel. + */ + @Generated + private final VoiceRecordingChannelLayout channelLayout; + + /* + * The total duration of the recording. + */ + @Generated + private final long durationMs; + + /* + * For bring-your-own-storage (BYOS) recordings only: the URI of the recording in the customer's own storage, + * without a SAS token. The customer downloads it using their own storage credentials. Absent for Foundry-managed + * storage, where the bytes are streamed via the `/audio/content` route instead. + */ + @Generated + private String blobUri; + + /** + * Creates an instance of VoiceRecordingResponse class. + * + * @param conversationId the conversationId value to set. + * @param format the format value to set. + * @param sampleRate the sampleRate value to set. + * @param channels the channels value to set. + * @param channelLayout the channelLayout value to set. + * @param durationMs the durationMs value to set. + */ + @Generated + private VoiceRecordingResponse(String conversationId, VoiceAudioContainerFormat format, int sampleRate, + int channels, VoiceRecordingChannelLayout channelLayout, Duration durationMs) { + this.conversationId = conversationId; + this.format = format; + this.sampleRate = sampleRate; + this.channels = channels; + this.channelLayout = channelLayout; + if (durationMs == null) { + this.durationMs = 0L; + } else { + this.durationMs = durationMs.toMillis(); + } + } + + /** + * Get the conversationId property: The id of the conversation this recording belongs to. + * + * @return the conversationId value. + */ + @Generated + public String getConversationId() { + return this.conversationId; + } + + /** + * Get the format property: The container format of the recording. + * + * @return the format value. + */ + @Generated + public VoiceAudioContainerFormat getFormat() { + return this.format; + } + + /** + * Get the sampleRate property: The sample rate of the recording in Hz, e.g. 24000. + * + * @return the sampleRate value. + */ + @Generated + public int getSampleRate() { + return this.sampleRate; + } + + /** + * Get the channels property: The number of audio channels. The merged recording is stereo (`2`). + * + * @return the channels value. + */ + @Generated + public int getChannels() { + return this.channels; + } + + /** + * Get the channelLayout property: The role assigned to each stereo channel. + * + * @return the channelLayout value. + */ + @Generated + public VoiceRecordingChannelLayout getChannelLayout() { + return this.channelLayout; + } + + /** + * Get the durationMs property: The total duration of the recording. + * + * @return the durationMs value. + */ + @Generated + public Duration getDurationMs() { + return Duration.ofMillis(this.durationMs); + } + + /** + * Get the blobUri property: For bring-your-own-storage (BYOS) recordings only: the URI of the recording in the + * customer's own storage, without a SAS token. The customer downloads it using their own storage credentials. + * Absent for Foundry-managed storage, where the bytes are streamed via the `/audio/content` route instead. + * + * @return the blobUri value. + */ + @Generated + public String getBlobUri() { + return this.blobUri; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("conversation_id", this.conversationId); + jsonWriter.writeStringField("format", this.format == null ? null : this.format.toString()); + jsonWriter.writeIntField("sample_rate", this.sampleRate); + jsonWriter.writeIntField("channels", this.channels); + jsonWriter.writeJsonField("channel_layout", this.channelLayout); + jsonWriter.writeLongField("duration_ms", this.durationMs); + jsonWriter.writeStringField("blob_uri", this.blobUri); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceRecordingResponse from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceRecordingResponse if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceRecordingResponse. + */ + @Generated + public static VoiceRecordingResponse fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String conversationId = null; + VoiceAudioContainerFormat format = null; + int sampleRate = 0; + int channels = 0; + VoiceRecordingChannelLayout channelLayout = null; + Duration durationMs = null; + String blobUri = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("conversation_id".equals(fieldName)) { + conversationId = reader.getString(); + } else if ("format".equals(fieldName)) { + format = VoiceAudioContainerFormat.fromString(reader.getString()); + } else if ("sample_rate".equals(fieldName)) { + sampleRate = reader.getInt(); + } else if ("channels".equals(fieldName)) { + channels = reader.getInt(); + } else if ("channel_layout".equals(fieldName)) { + channelLayout = VoiceRecordingChannelLayout.fromJson(reader); + } else if ("duration_ms".equals(fieldName)) { + durationMs = Duration.ofMillis(reader.getLong()); + } else if ("blob_uri".equals(fieldName)) { + blobUri = reader.getString(); + } else { + reader.skipChildren(); + } + } + VoiceRecordingResponse deserializedVoiceRecordingResponse + = new VoiceRecordingResponse(conversationId, format, sampleRate, channels, channelLayout, durationMs); + deserializedVoiceRecordingResponse.blobUri = blobUri; + return deserializedVoiceRecordingResponse; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponse.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponse.java new file mode 100644 index 0000000000000..362741e669037 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponse.java @@ -0,0 +1,406 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; +import java.util.List; +import java.util.Map; + +/** + * A persisted voice response representing one model inference turn within a conversation. In list results the + * `output` projection may be omitted; retrieve the + * full response (`GET .../responses/{response_id}`) or the paged response-items route + * (`GET .../responses/{response_id}/items`) for its output items. `created_at`/`completed_at` are Foundry + * durable ordering extensions. + */ +@Immutable +public final class VoiceResponse extends VoiceResponseBase { + + /* + * The unique id of the response. + */ + @Generated + private final String id; + + /* + * The output items produced by the response. May be omitted in list results; retrieve the full response (GET + * .../responses/{response_id}) or use the paged response-items route (GET .../responses/{response_id}/items) for + * its output items. Each item's `response_id` also links it back to this response in the conversation-level items + * list. + */ + @Generated + private List output; + + /* + * The id of the conversation this response belongs to. + */ + @Generated + private final String conversationId; + + /* + * The audio configuration used for the response, including the voice and audio format used for output. + */ + @Generated + private VoiceResponseAudio audio; + + /* + * A set of key-value pairs attached to the response. + */ + @Generated + private Map metadata; + + /* + * The sampling temperature used for the response. + */ + @Generated + private Double temperature; + + /* + * The Unix timestamp (in seconds) for when the response was created. + */ + @Generated + private Long createdAt; + + /* + * The Unix timestamp (in seconds) for when the response completed. + */ + @Generated + private Long completedAt; + + /* + * Maximum number of output tokens for a single assistant response, + * inclusive of tool calls, that was used in this response. + */ + @Generated + private BinaryData maxOutputTokens; + + /* + * The set of modalities the model used to respond, currently the only possible values are + * `[\"audio\"]`, `[\"text\"]`. Audio output always include a text transcript. Setting the + * output to mode `text` will disable audio output from the model. + */ + @Generated + private List outputModalities; + + /* + * Usage statistics for the Response, this will correspond to billing. A + * Realtime API session will maintain a conversation context and append new + * Items to the Conversation, thus output from previous turns (text and + * audio tokens) will become the input for later turns. + */ + @Generated + private RealtimeResponseUsage usage; + + /* + * Additional details about the status. + */ + @Generated + private RealtimeResponseStatusDetails statusDetails; + + /* + * The final status of the response (`completed`, `cancelled`, `failed`, or + * `incomplete`, `in_progress`). + */ + @Generated + private VoiceResponseBaseStatus status; + + /* + * The object type, must be `realtime.response`. + */ + @Generated + private VoiceResponseBaseObject object; + + /** + * Creates an instance of VoiceResponse class. + * + * @param id the id value to set. + * @param conversationId the conversationId value to set. + */ + @Generated + private VoiceResponse(String id, String conversationId) { + this.id = id; + this.conversationId = conversationId; + } + + /** + * Get the id property: The unique id of the response. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Get the output property: The output items produced by the response. May be omitted in list results; retrieve the + * full response (GET .../responses/{response_id}) or use the paged response-items route (GET + * .../responses/{response_id}/items) for its output items. Each item's `response_id` also links it back to this + * response in the conversation-level items list. + * + * @return the output value. + */ + @Generated + public List getOutput() { + return this.output; + } + + /** + * Get the conversationId property: The id of the conversation this response belongs to. + * + * @return the conversationId value. + */ + @Generated + public String getConversationId() { + return this.conversationId; + } + + /** + * Get the audio property: The audio configuration used for the response, including the voice and audio format used + * for output. + * + * @return the audio value. + */ + @Generated + public VoiceResponseAudio getAudio() { + return this.audio; + } + + /** + * Get the metadata property: A set of key-value pairs attached to the response. + * + * @return the metadata value. + */ + @Generated + public Map getMetadata() { + return this.metadata; + } + + /** + * Get the temperature property: The sampling temperature used for the response. + * + * @return the temperature value. + */ + @Generated + public Double getTemperature() { + return this.temperature; + } + + /** + * Get the createdAt property: The Unix timestamp (in seconds) for when the response was created. + * + * @return the createdAt value. + */ + @Generated + public OffsetDateTime getCreatedAt() { + if (this.createdAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.createdAt), ZoneOffset.UTC); + } + + /** + * Get the completedAt property: The Unix timestamp (in seconds) for when the response completed. + * + * @return the completedAt value. + */ + @Generated + public OffsetDateTime getCompletedAt() { + if (this.completedAt == null) { + return null; + } + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.completedAt), ZoneOffset.UTC); + } + + /** + * Get the maxOutputTokens property: Maximum number of output tokens for a single assistant response, + * inclusive of tool calls, that was used in this response. + * + * @return the maxOutputTokens value. + */ + @Generated + @Override + public BinaryData getMaxOutputTokens() { + return this.maxOutputTokens; + } + + /** + * Get the outputModalities property: The set of modalities the model used to respond, currently the only possible + * values are + * `[\"audio\"]`, `[\"text\"]`. Audio output always include a text transcript. Setting the + * output to mode `text` will disable audio output from the model. + * + * @return the outputModalities value. + */ + @Generated + @Override + public List getOutputModalities() { + return this.outputModalities; + } + + /** + * Get the usage property: Usage statistics for the Response, this will correspond to billing. A + * Realtime API session will maintain a conversation context and append new + * Items to the Conversation, thus output from previous turns (text and + * audio tokens) will become the input for later turns. + * + * @return the usage value. + */ + @Generated + @Override + public RealtimeResponseUsage getUsage() { + return this.usage; + } + + /** + * Get the statusDetails property: Additional details about the status. + * + * @return the statusDetails value. + */ + @Generated + @Override + public RealtimeResponseStatusDetails getStatusDetails() { + return this.statusDetails; + } + + /** + * Get the status property: The final status of the response (`completed`, `cancelled`, `failed`, or + * `incomplete`, `in_progress`). + * + * @return the status value. + */ + @Generated + @Override + public VoiceResponseBaseStatus getStatus() { + return this.status; + } + + /** + * Get the object property: The object type, must be `realtime.response`. + * + * @return the object value. + */ + @Generated + @Override + public VoiceResponseBaseObject getObject() { + return this.object; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("object", getObject() == null ? null : getObject().toString()); + jsonWriter.writeStringField("status", getStatus() == null ? null : getStatus().toString()); + jsonWriter.writeJsonField("status_details", getStatusDetails()); + jsonWriter.writeJsonField("usage", getUsage()); + jsonWriter.writeArrayField("output_modalities", getOutputModalities(), + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + if (getMaxOutputTokens() != null) { + jsonWriter.writeFieldName("max_output_tokens"); + getMaxOutputTokens().writeTo(jsonWriter); + } + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("conversation_id", this.conversationId); + jsonWriter.writeArrayField("output", this.output, (writer, element) -> writer.writeJson(element)); + jsonWriter.writeJsonField("audio", this.audio); + jsonWriter.writeMapField("metadata", this.metadata, (writer, element) -> writer.writeString(element)); + jsonWriter.writeNumberField("temperature", this.temperature); + jsonWriter.writeNumberField("created_at", this.createdAt); + jsonWriter.writeNumberField("completed_at", this.completedAt); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceResponse from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceResponse if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the VoiceResponse. + */ + @Generated + public static VoiceResponse fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceResponseBaseObject object = null; + VoiceResponseBaseStatus status = null; + RealtimeResponseStatusDetails statusDetails = null; + RealtimeResponseUsage usage = null; + List outputModalities = null; + BinaryData maxOutputTokens = null; + String id = null; + String conversationId = null; + List output = null; + VoiceResponseAudio audio = null; + Map metadata = null; + Double temperature = null; + Long createdAt = null; + Long completedAt = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("object".equals(fieldName)) { + object = VoiceResponseBaseObject.fromString(reader.getString()); + } else if ("status".equals(fieldName)) { + status = VoiceResponseBaseStatus.fromString(reader.getString()); + } else if ("status_details".equals(fieldName)) { + statusDetails = RealtimeResponseStatusDetails.fromJson(reader); + } else if ("usage".equals(fieldName)) { + usage = RealtimeResponseUsage.fromJson(reader); + } else if ("output_modalities".equals(fieldName)) { + outputModalities + = reader.readArray(reader1 -> VoiceResponseBaseOutputModality.fromString(reader1.getString())); + } else if ("max_output_tokens".equals(fieldName)) { + maxOutputTokens + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else if ("id".equals(fieldName)) { + id = reader.getString(); + } else if ("conversation_id".equals(fieldName)) { + conversationId = reader.getString(); + } else if ("output".equals(fieldName)) { + output = reader.readArray(reader1 -> RealtimeConversationItem.fromJson(reader1)); + } else if ("audio".equals(fieldName)) { + audio = VoiceResponseAudio.fromJson(reader); + } else if ("metadata".equals(fieldName)) { + metadata = reader.readMap(reader1 -> reader1.getString()); + } else if ("temperature".equals(fieldName)) { + temperature = reader.getNullable(JsonReader::getDouble); + } else if ("created_at".equals(fieldName)) { + createdAt = reader.getNullable(JsonReader::getLong); + } else if ("completed_at".equals(fieldName)) { + completedAt = reader.getNullable(JsonReader::getLong); + } else { + reader.skipChildren(); + } + } + VoiceResponse deserializedVoiceResponse = new VoiceResponse(id, conversationId); + deserializedVoiceResponse.object = object; + deserializedVoiceResponse.status = status; + deserializedVoiceResponse.statusDetails = statusDetails; + deserializedVoiceResponse.usage = usage; + deserializedVoiceResponse.outputModalities = outputModalities; + deserializedVoiceResponse.maxOutputTokens = maxOutputTokens; + deserializedVoiceResponse.output = output; + deserializedVoiceResponse.audio = audio; + deserializedVoiceResponse.metadata = metadata; + deserializedVoiceResponse.temperature = temperature; + deserializedVoiceResponse.createdAt = createdAt; + deserializedVoiceResponse.completedAt = completedAt; + return deserializedVoiceResponse; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudio.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudio.java new file mode 100644 index 0000000000000..1040f142017db --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudio.java @@ -0,0 +1,78 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Audio configuration for a response. Follows the OpenAI Realtime GA `audio` object shape. + */ +@Immutable +public final class VoiceResponseAudio implements JsonSerializable { + + /* + * The audio output configuration used for the response. + */ + @Generated + private VoiceResponseAudioOutput output; + + /** + * Creates an instance of VoiceResponseAudio class. + */ + @Generated + private VoiceResponseAudio() { + } + + /** + * Get the output property: The audio output configuration used for the response. + * + * @return the output value. + */ + @Generated + public VoiceResponseAudioOutput getOutput() { + return this.output; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("output", this.output); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceResponseAudio from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceResponseAudio if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceResponseAudio. + */ + @Generated + public static VoiceResponseAudio fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceResponseAudio deserializedVoiceResponseAudio = new VoiceResponseAudio(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("output".equals(fieldName)) { + deserializedVoiceResponseAudio.output = VoiceResponseAudioOutput.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceResponseAudio; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudioOutput.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudioOutput.java new file mode 100644 index 0000000000000..153ff4284f080 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudioOutput.java @@ -0,0 +1,135 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The flat response audio-output projection, with optional `voice`, `voice_type`, `voice_locale`, and `format` fields. + */ +@Immutable +public final class VoiceResponseAudioOutput implements JsonSerializable { + + /* + * The voice name used for the response's audio output. + */ + @Generated + private String voice; + + /* + * The extensible provider/type of the voice used for the response's audio output. + */ + @Generated + private VoiceType voiceType; + + /* + * The BCP-47 locale of the voice used for the response's audio output. + */ + @Generated + private String voiceLocale; + + /* + * The audio format used for the response's audio output. + */ + @Generated + private RealtimeAudioFormats format; + + /** + * Creates an instance of VoiceResponseAudioOutput class. + */ + @Generated + private VoiceResponseAudioOutput() { + } + + /** + * Get the voice property: The voice name used for the response's audio output. + * + * @return the voice value. + */ + @Generated + public String getVoice() { + return this.voice; + } + + /** + * Get the voiceType property: The extensible provider/type of the voice used for the response's audio output. + * + * @return the voiceType value. + */ + @Generated + public VoiceType getVoiceType() { + return this.voiceType; + } + + /** + * Get the voiceLocale property: The BCP-47 locale of the voice used for the response's audio output. + * + * @return the voiceLocale value. + */ + @Generated + public String getVoiceLocale() { + return this.voiceLocale; + } + + /** + * Get the format property: The audio format used for the response's audio output. + * + * @return the format value. + */ + @Generated + public RealtimeAudioFormats getFormat() { + return this.format; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("voice", this.voice); + jsonWriter.writeStringField("voice_type", this.voiceType == null ? null : this.voiceType.toString()); + jsonWriter.writeStringField("voice_locale", this.voiceLocale); + jsonWriter.writeJsonField("format", this.format); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceResponseAudioOutput from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceResponseAudioOutput if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceResponseAudioOutput. + */ + @Generated + public static VoiceResponseAudioOutput fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceResponseAudioOutput deserializedVoiceResponseAudioOutput = new VoiceResponseAudioOutput(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("voice".equals(fieldName)) { + deserializedVoiceResponseAudioOutput.voice = reader.getString(); + } else if ("voice_type".equals(fieldName)) { + deserializedVoiceResponseAudioOutput.voiceType = VoiceType.fromString(reader.getString()); + } else if ("voice_locale".equals(fieldName)) { + deserializedVoiceResponseAudioOutput.voiceLocale = reader.getString(); + } else if ("format".equals(fieldName)) { + deserializedVoiceResponseAudioOutput.format = RealtimeAudioFormats.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceResponseAudioOutput; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBase.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBase.java new file mode 100644 index 0000000000000..11b9242160080 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBase.java @@ -0,0 +1,354 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.core.util.BinaryData; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Properties shared by persisted voice responses. + */ +@Immutable +public class VoiceResponseBase implements JsonSerializable { + + /* + * The unique ID of the response, will look like `resp_1234`. + */ + @Generated + private String id; + + /* + * The object type, must be `realtime.response`. + */ + @Generated + private VoiceResponseBaseObject object; + + /* + * The final status of the response (`completed`, `cancelled`, `failed`, or + * `incomplete`, `in_progress`). + */ + @Generated + private VoiceResponseBaseStatus status; + + /* + * Additional details about the status. + */ + @Generated + private RealtimeResponseStatusDetails statusDetails; + + /* + * Usage statistics for the Response, this will correspond to billing. A + * Realtime API session will maintain a conversation context and append new + * Items to the Conversation, thus output from previous turns (text and + * audio tokens) will become the input for later turns. + */ + @Generated + private RealtimeResponseUsage usage; + + /* + * Which conversation the response is added to, determined by the `conversation` + * field in the `response.create` event. If `auto`, the response will be added to + * the default conversation and the value of `conversation_id` will be an id like + * `conv_1234`. If `none`, the response will not be added to any conversation and + * the value of `conversation_id` will be `null`. If responses are being triggered + * automatically by VAD the response will be added to the default conversation + */ + @Generated + private String conversationId; + + /* + * The set of modalities the model used to respond, currently the only possible values are + * `[\"audio\"]`, `[\"text\"]`. Audio output always include a text transcript. Setting the + * output to mode `text` will disable audio output from the model. + */ + @Generated + private List outputModalities; + + /* + * Maximum number of output tokens for a single assistant response, + * inclusive of tool calls, that was used in this response. + */ + @Generated + private BinaryData maxOutputTokens; + + /** + * Creates an instance of VoiceResponseBase class. + */ + @Generated + protected VoiceResponseBase() { + } + + /** + * Get the id property: The unique ID of the response, will look like `resp_1234`. + * + * @return the id value. + */ + @Generated + public String getId() { + return this.id; + } + + /** + * Set the id property: The unique ID of the response, will look like `resp_1234`. + * + * @param id the id value to set. + * @return the VoiceResponseBase object itself. + */ + @Generated + VoiceResponseBase setId(String id) { + this.id = id; + return this; + } + + /** + * Get the object property: The object type, must be `realtime.response`. + * + * @return the object value. + */ + @Generated + public VoiceResponseBaseObject getObject() { + return this.object; + } + + /** + * Set the object property: The object type, must be `realtime.response`. + * + * @param object the object value to set. + * @return the VoiceResponseBase object itself. + */ + @Generated + VoiceResponseBase setObject(VoiceResponseBaseObject object) { + this.object = object; + return this; + } + + /** + * Get the status property: The final status of the response (`completed`, `cancelled`, `failed`, or + * `incomplete`, `in_progress`). + * + * @return the status value. + */ + @Generated + public VoiceResponseBaseStatus getStatus() { + return this.status; + } + + /** + * Set the status property: The final status of the response (`completed`, `cancelled`, `failed`, or + * `incomplete`, `in_progress`). + * + * @param status the status value to set. + * @return the VoiceResponseBase object itself. + */ + @Generated + VoiceResponseBase setStatus(VoiceResponseBaseStatus status) { + this.status = status; + return this; + } + + /** + * Get the statusDetails property: Additional details about the status. + * + * @return the statusDetails value. + */ + @Generated + public RealtimeResponseStatusDetails getStatusDetails() { + return this.statusDetails; + } + + /** + * Set the statusDetails property: Additional details about the status. + * + * @param statusDetails the statusDetails value to set. + * @return the VoiceResponseBase object itself. + */ + @Generated + VoiceResponseBase setStatusDetails(RealtimeResponseStatusDetails statusDetails) { + this.statusDetails = statusDetails; + return this; + } + + /** + * Get the usage property: Usage statistics for the Response, this will correspond to billing. A + * Realtime API session will maintain a conversation context and append new + * Items to the Conversation, thus output from previous turns (text and + * audio tokens) will become the input for later turns. + * + * @return the usage value. + */ + @Generated + public RealtimeResponseUsage getUsage() { + return this.usage; + } + + /** + * Set the usage property: Usage statistics for the Response, this will correspond to billing. A + * Realtime API session will maintain a conversation context and append new + * Items to the Conversation, thus output from previous turns (text and + * audio tokens) will become the input for later turns. + * + * @param usage the usage value to set. + * @return the VoiceResponseBase object itself. + */ + @Generated + VoiceResponseBase setUsage(RealtimeResponseUsage usage) { + this.usage = usage; + return this; + } + + /** + * Get the conversationId property: Which conversation the response is added to, determined by the `conversation` + * field in the `response.create` event. If `auto`, the response will be added to + * the default conversation and the value of `conversation_id` will be an id like + * `conv_1234`. If `none`, the response will not be added to any conversation and + * the value of `conversation_id` will be `null`. If responses are being triggered + * automatically by VAD the response will be added to the default conversation. + * + * @return the conversationId value. + */ + @Generated + public String getConversationId() { + return this.conversationId; + } + + /** + * Set the conversationId property: Which conversation the response is added to, determined by the `conversation` + * field in the `response.create` event. If `auto`, the response will be added to + * the default conversation and the value of `conversation_id` will be an id like + * `conv_1234`. If `none`, the response will not be added to any conversation and + * the value of `conversation_id` will be `null`. If responses are being triggered + * automatically by VAD the response will be added to the default conversation. + * + * @param conversationId the conversationId value to set. + * @return the VoiceResponseBase object itself. + */ + @Generated + VoiceResponseBase setConversationId(String conversationId) { + this.conversationId = conversationId; + return this; + } + + /** + * Get the outputModalities property: The set of modalities the model used to respond, currently the only possible + * values are + * `[\"audio\"]`, `[\"text\"]`. Audio output always include a text transcript. Setting the + * output to mode `text` will disable audio output from the model. + * + * @return the outputModalities value. + */ + @Generated + public List getOutputModalities() { + return this.outputModalities; + } + + /** + * Set the outputModalities property: The set of modalities the model used to respond, currently the only possible + * values are + * `[\"audio\"]`, `[\"text\"]`. Audio output always include a text transcript. Setting the + * output to mode `text` will disable audio output from the model. + * + * @param outputModalities the outputModalities value to set. + * @return the VoiceResponseBase object itself. + */ + @Generated + VoiceResponseBase setOutputModalities(List outputModalities) { + this.outputModalities = outputModalities; + return this; + } + + /** + * Get the maxOutputTokens property: Maximum number of output tokens for a single assistant response, + * inclusive of tool calls, that was used in this response. + * + * @return the maxOutputTokens value. + */ + @Generated + public BinaryData getMaxOutputTokens() { + return this.maxOutputTokens; + } + + /** + * Set the maxOutputTokens property: Maximum number of output tokens for a single assistant response, + * inclusive of tool calls, that was used in this response. + * + * @param maxOutputTokens the maxOutputTokens value to set. + * @return the VoiceResponseBase object itself. + */ + @Generated + VoiceResponseBase setMaxOutputTokens(BinaryData maxOutputTokens) { + this.maxOutputTokens = maxOutputTokens; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("id", this.id); + jsonWriter.writeStringField("object", this.object == null ? null : this.object.toString()); + jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); + jsonWriter.writeJsonField("status_details", this.statusDetails); + jsonWriter.writeJsonField("usage", this.usage); + jsonWriter.writeStringField("conversation_id", this.conversationId); + jsonWriter.writeArrayField("output_modalities", this.outputModalities, + (writer, element) -> writer.writeString(element == null ? null : element.toString())); + if (this.maxOutputTokens != null) { + jsonWriter.writeFieldName("max_output_tokens"); + this.maxOutputTokens.writeTo(jsonWriter); + } + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of VoiceResponseBase from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of VoiceResponseBase if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the VoiceResponseBase. + */ + @Generated + public static VoiceResponseBase fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + VoiceResponseBase deserializedVoiceResponseBase = new VoiceResponseBase(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("id".equals(fieldName)) { + deserializedVoiceResponseBase.id = reader.getString(); + } else if ("object".equals(fieldName)) { + deserializedVoiceResponseBase.object = VoiceResponseBaseObject.fromString(reader.getString()); + } else if ("status".equals(fieldName)) { + deserializedVoiceResponseBase.status = VoiceResponseBaseStatus.fromString(reader.getString()); + } else if ("status_details".equals(fieldName)) { + deserializedVoiceResponseBase.statusDetails = RealtimeResponseStatusDetails.fromJson(reader); + } else if ("usage".equals(fieldName)) { + deserializedVoiceResponseBase.usage = RealtimeResponseUsage.fromJson(reader); + } else if ("conversation_id".equals(fieldName)) { + deserializedVoiceResponseBase.conversationId = reader.getString(); + } else if ("output_modalities".equals(fieldName)) { + List outputModalities + = reader.readArray(reader1 -> VoiceResponseBaseOutputModality.fromString(reader1.getString())); + deserializedVoiceResponseBase.outputModalities = outputModalities; + } else if ("max_output_tokens".equals(fieldName)) { + deserializedVoiceResponseBase.maxOutputTokens + = reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped())); + } else { + reader.skipChildren(); + } + } + return deserializedVoiceResponseBase; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseObject.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseObject.java new file mode 100644 index 0000000000000..012cc60d2df17 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseObject.java @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for VoiceResponseBaseObject. + */ +public enum VoiceResponseBaseObject { + /** + * Enum value realtime.response. + */ + REALTIME_RESPONSE("realtime.response"); + + /** + * The actual serialized value for a VoiceResponseBaseObject instance. + */ + private final String value; + + VoiceResponseBaseObject(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a VoiceResponseBaseObject instance. + * + * @param value the serialized value to parse. + * @return the parsed VoiceResponseBaseObject object, or null if unable to parse. + */ + public static VoiceResponseBaseObject fromString(String value) { + if (value == null) { + return null; + } + VoiceResponseBaseObject[] items = VoiceResponseBaseObject.values(); + for (VoiceResponseBaseObject item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseOutputModality.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseOutputModality.java new file mode 100644 index 0000000000000..6b80eea349aed --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseOutputModality.java @@ -0,0 +1,56 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for VoiceResponseBaseOutputModality. + */ +public enum VoiceResponseBaseOutputModality { + /** + * Enum value text. + */ + TEXT("text"), + + /** + * Enum value audio. + */ + AUDIO("audio"); + + /** + * The actual serialized value for a VoiceResponseBaseOutputModality instance. + */ + private final String value; + + VoiceResponseBaseOutputModality(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a VoiceResponseBaseOutputModality instance. + * + * @param value the serialized value to parse. + * @return the parsed VoiceResponseBaseOutputModality object, or null if unable to parse. + */ + public static VoiceResponseBaseOutputModality fromString(String value) { + if (value == null) { + return null; + } + VoiceResponseBaseOutputModality[] items = VoiceResponseBaseOutputModality.values(); + for (VoiceResponseBaseOutputModality item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseStatus.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseStatus.java new file mode 100644 index 0000000000000..8f93d5bd5f504 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBaseStatus.java @@ -0,0 +1,71 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * Defines values for VoiceResponseBaseStatus. + */ +public enum VoiceResponseBaseStatus { + /** + * Enum value completed. + */ + COMPLETED("completed"), + + /** + * Enum value cancelled. + */ + CANCELLED("cancelled"), + + /** + * Enum value failed. + */ + FAILED("failed"), + + /** + * Enum value incomplete. + */ + INCOMPLETE("incomplete"), + + /** + * Enum value in_progress. + */ + IN_PROGRESS("in_progress"); + + /** + * The actual serialized value for a VoiceResponseBaseStatus instance. + */ + private final String value; + + VoiceResponseBaseStatus(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a VoiceResponseBaseStatus instance. + * + * @param value the serialized value to parse. + * @return the parsed VoiceResponseBaseStatus object, or null if unable to parse. + */ + public static VoiceResponseBaseStatus fromString(String value) { + if (value == null) { + return null; + } + VoiceResponseBaseStatus[] items = VoiceResponseBaseStatus.values(); + for (VoiceResponseBaseStatus item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceType.java new file mode 100644 index 0000000000000..268b5ad44bd21 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceType.java @@ -0,0 +1,81 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The voice implementation. Additional values may be added over time. + */ +public final class VoiceType extends ExpandableStringEnum { + + /** + * An OpenAI voice. + */ + @Generated + public static final VoiceType OPENAI = fromString("openai"); + + /** + * An Azure standard voice. + */ + @Generated + public static final VoiceType AZURE_STANDARD = fromString("azure-standard"); + + /** + * An Azure custom voice. + */ + @Generated + public static final VoiceType AZURE_CUSTOM = fromString("azure-custom"); + + /** + * An Azure personal voice. + */ + @Generated + public static final VoiceType AZURE_PERSONAL = fromString("azure-personal"); + + /** + * A voice synchronized with an avatar. + */ + @Generated + public static final VoiceType AVATAR_VOICE_SYNC = fromString("avatar-voice-sync"); + + /** + * An Azure native realtime voice. + */ + @Generated + public static final VoiceType AZURE_REALTIME_NATIVE = fromString("azure-realtime-native"); + + /** + * Creates a new instance of VoiceType value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public VoiceType() { + } + + /** + * Creates or finds a VoiceType from its string representation. + * + * @param name a name to look for. + * @return the corresponding VoiceType. + */ + @Generated + public static VoiceType fromString(String name) { + return fromString(name, VoiceType.class); + } + + /** + * Gets known VoiceType values. + * + * @return known VoiceType values. + */ + @Generated + public static Collection values() { + return values(VoiceType.class); + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchAgent.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/MemorySearchAgent.java similarity index 95% rename from sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchAgent.java rename to sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/MemorySearchAgent.java index f1459b3dd6632..579f608fec56c 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchAgent.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/MemorySearchAgent.java @@ -1,13 +1,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.ai.agents.memory; +package com.azure.ai.agents; -import com.azure.ai.agents.AgentsClient; -import com.azure.ai.agents.AgentsClientBuilder; -import com.azure.ai.agents.AgentsServiceVersion; -import com.azure.ai.agents.BetaMemoryStoresClient; -import com.azure.ai.agents.ResponsesClient; import com.azure.ai.agents.models.AgentReference; import com.azure.ai.agents.models.AzureCreateResponseOptions; import com.azure.ai.agents.models.AgentVersionDetails; @@ -50,7 +45,7 @@ public static void main(String[] args) { ConversationService conversationService = builder.buildOpenAIClient().conversations(); ResponsesClient responsesClient = builder.buildResponsesClient(); - String memoryStoreName = "my-memory-store"; + String memoryStoreName = "my_memory_store"; String agentName = "MyAgent"; String description = "Example memory store for conversations"; String scope = "user_123"; diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/MultipleAgentsConversation.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/MultipleAgentsConversation.java index bba8e603b6b35..019292cbc34f0 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/MultipleAgentsConversation.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/MultipleAgentsConversation.java @@ -9,9 +9,7 @@ import com.azure.ai.agents.models.PromptAgentDefinition; import com.azure.core.util.Configuration; import com.azure.identity.DefaultAzureCredentialBuilder; -import com.openai.client.OpenAIClient; import com.openai.models.conversations.Conversation; -import com.openai.models.conversations.Message; import com.openai.models.conversations.items.ItemCreateParams; import com.openai.models.conversations.items.ItemListPage; import com.openai.models.responses.EasyInputMessage; @@ -37,75 +35,53 @@ public static void main(String[] args) { .serviceVersion(AgentsServiceVersion.getLatest()) .endpoint(endpoint); AgentsClient agentsClient = builder.buildAgentsClient(); - OpenAIClient openAIClient = builder.buildOpenAIClient(); - ResponsesClient responsesClient = new ResponsesClient(openAIClient); - ConversationService conversationsClient = openAIClient.conversations(); - - Conversation conversation = null; - AgentVersionDetails agent1 = null; - AgentVersionDetails agent2 = null; - try { - // Setting up the conversation with initial messages - conversation = startConversation(conversationsClient); - addMessageToConversation(conversationsClient, conversation.id(), - "If the user prompt is missing the location in their prompt, assume they are talking about Berlin, Germany.", - EasyInputMessage.Role.SYSTEM); - addMessageToConversation(conversationsClient, conversation.id(), "What's the weather like?", - EasyInputMessage.Role.USER); - - printConversationItems(conversationsClient, conversation.id(), 2); - - // creating a new agent and their references for future responses - agent1 = createPromptAgent(agentsClient, model, "weather-agent-1"); - agent2 = createPromptAgent(agentsClient, model, "weather-agent-2"); - - AgentReference agent1Reference = new AgentReference(agent1.getName()).setVersion(agent1.getVersion()); - AgentReference agent2Reference = new AgentReference(agent2.getName()).setVersion(agent2.getVersion()); - - // Get response from agent1 - Response response = responsesClient.createAzureResponse( - new AzureCreateResponseOptions().setAgentReference(agent1Reference), - ResponseCreateParams.builder().conversation(conversation.id())); - System.out.println("Agent response from: " + agent1.getName()); - SampleUtils.printResponseText(response); - - // Add clarification to the conversation - addMessageToConversation(conversationsClient, conversation.id(), + ResponsesClient responsesClient = builder.buildResponsesClient(); + ConversationService conversationsClient = builder.buildOpenAIClient().conversations(); + + // Setting up the conversation with initial messages + Conversation conversation = startConversation(conversationsClient); + addMessageToConversation(conversationsClient, conversation.id(), + "If the user prompt is missing the location in their prompt, assume they are talking about Berlin, Germany.", EasyInputMessage.Role.SYSTEM); + addMessageToConversation(conversationsClient, conversation.id(), "What's the weather like?", EasyInputMessage.Role.USER); + + printConversationItems(conversationsClient, conversation.id(), 2); + + // creating a new agent and their references for future responses + AgentVersionDetails agent1 = createPromptAgent(agentsClient, model, "weather-agent-1"); + AgentVersionDetails agent2 = createPromptAgent(agentsClient, model, "weather-agent-2"); + + AgentReference agent1Reference = new AgentReference(agent1.getName()).setVersion(agent1.getVersion()); + AgentReference agent2Reference = new AgentReference(agent2.getName()).setVersion(agent2.getVersion()); + + // Get response from agent1 + Response response = responsesClient.createAzureResponse( + new AzureCreateResponseOptions().setAgentReference(agent1Reference), + ResponseCreateParams.builder().conversation(conversation.id())); + System.out.println("Agent response from: " + agent1.getName()); + System.out.println("\tResponse: " + response.output().get(0).asMessage().content().get(0).asOutputText().text()); + + // Add clarification to the conversation + addMessageToConversation(conversationsClient, conversation.id(), "You can make assumptions based on historical data. Today is October 7th.", EasyInputMessage.Role.USER); - printConversationItems(conversationsClient, conversation.id(), 3); + printConversationItems(conversationsClient, conversation.id(), 3); - // Get follow-up response from agent1 - Response followUpResponse = responsesClient.createAzureResponse( - new AzureCreateResponseOptions().setAgentReference(agent1Reference), - ResponseCreateParams.builder().conversation(conversation.id())); - System.out.println("Agent response from: " + agent1.getName()); - SampleUtils.printResponseText(followUpResponse); + // Get follow-up response from agent1 + Response followUpResponse = responsesClient.createAzureResponse( + new AzureCreateResponseOptions().setAgentReference(agent1Reference), + ResponseCreateParams.builder().conversation(conversation.id())); + System.out.println("Agent response from: " + agent1.getName()); + System.out.println("\tResponse: " + followUpResponse.output().get(0).asMessage().content().get(0).asOutputText().text()); - // Provide all the past context and more to agent2 - addMessageToConversation(conversationsClient, conversation.id(), + // Provide all the past context and more to agent2 + addMessageToConversation(conversationsClient, conversation.id(), "Provide suggestions opposite of what historical data indicates.", EasyInputMessage.Role.SYSTEM); - printConversationItems(conversationsClient, conversation.id(), 4); - - Response newMessageThread = responsesClient.createAzureResponse( - new AzureCreateResponseOptions().setAgentReference(agent2Reference), - ResponseCreateParams.builder().conversation(conversation.id())); - System.out.println("Agent response from: " + agent2.getName()); - SampleUtils.printResponseText(newMessageThread); - } finally { - try { - if (conversation != null) { - conversationsClient.delete(conversation.id()); - } - if (agent2 != null) { - agentsClient.deleteAgentVersion(agent2.getName(), agent2.getVersion()); - } - if (agent1 != null) { - agentsClient.deleteAgentVersion(agent1.getName(), agent1.getVersion()); - } - } finally { - openAIClient.close(); - } - } + printConversationItems(conversationsClient, conversation.id(), 4); + + Response newMessageThread = responsesClient.createAzureResponse( + new AzureCreateResponseOptions().setAgentReference(agent2Reference), + ResponseCreateParams.builder().conversation(conversation.id())); + System.out.println("Agent response from: " + agent2.getName()); + System.out.println("\tResponse: " + newMessageThread.output().get(0).asMessage().content().get(0).asOutputText().text()); } private static AgentVersionDetails createPromptAgent(AgentsClient agentsClient, String model, String name) { @@ -130,26 +106,12 @@ private static void addMessageToConversation(ConversationService conversationSer conversationService.items().create(itemParams); } - private static void printConversationItems(ConversationService conversationsClient, String conversationId, - int limit) { + private static void printConversationItems(ConversationService conversationsClient, String conversationId, int limit) { System.out.println("Printing conversation items:"); ItemListPage page = conversationsClient.items().list(conversationId); - page.autoPager().stream().filter(item -> item.isMessage()).limit(limit).forEach(item -> { - Message message = item.asMessage(); - message.content().stream().map(MultipleAgentsConversation::getText).filter(text -> text != null) - .forEach(text -> System.out.println("\t" + message.role() + ": " + text)); + page.autoPager().stream().limit(limit).forEach(item -> { + System.out.println("\t" + item.asMessage().role() + ": " + item.asMessage().content().get(0).asInputText().text()); }); System.out.println("End of conversation items.\n"); } - - private static String getText(Message.Content content) { - if (content.isInputText()) { - return content.asInputText().text(); - } else if (content.isOutputText()) { - return content.asOutputText().text(); - } else if (content.isText()) { - return content.asText().text(); - } - return null; - } } diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/CreateAgent.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/CreateAgent.java new file mode 100644 index 0000000000000..06b45f4a9146d --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/CreateAgent.java @@ -0,0 +1,30 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.agents; + +import com.azure.ai.agents.AgentsClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.models.AgentVersionDetails; +import com.azure.ai.agents.models.PromptAgentDefinition; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; + +public class CreateAgent { + public static void main(String[] args) { + String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); + String model = Configuration.getGlobalConfiguration().get("FOUNDRY_MODEL_NAME"); + // Code sample for creating an agent + AgentsClient agentsClient = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .buildAgentsClient(); + + PromptAgentDefinition request = new PromptAgentDefinition(model); + AgentVersionDetails agent = agentsClient.createAgentVersion("agent-created-from-java", request); + + System.out.println("Agent ID: " + agent.getId()); + System.out.println("Agent Name: " + agent.getName()); + System.out.println("Agent Version: " + agent.getVersion()); + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/DeleteAgent.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/DeleteAgent.java new file mode 100644 index 0000000000000..039990d6e4cca --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/DeleteAgent.java @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.agents; + +import com.azure.ai.agents.AgentsClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; + +public class DeleteAgent { + public static void main(String[] args) { + String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); + String agentName = "agent-created-from-java"; // Replace with actual agent name + // Code sample for creating an agent + AgentsClient agentsClient = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .buildAgentsClient(); + + agentsClient.deleteAgent(agentName); + + System.out.println("Deleted agent with the following details:"); + System.out.println("\tAgent Name: " + agentName); + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/GetAgent.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/GetAgent.java new file mode 100644 index 0000000000000..19a8141a7d5ea --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/GetAgent.java @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.agents; + +import com.azure.ai.agents.AgentsClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.models.AgentDetails; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; + +public class GetAgent { + public static void main(String[] args) { + String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); + String agentName = "agent-created-from-java"; // Replace with actual agent name + // Code sample for creating an agent + AgentsClient agentsClient = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .buildAgentsClient(); + + AgentDetails agent = agentsClient.getAgent(agentName); + + System.out.println("Agent ID: " + agent.getId()); + System.out.println("Agent Name: " + agent.getName()); + System.out.println("Agent Version: " + agent.getVersions().getLatest()); + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/ListAgentsSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/ListAgents.java similarity index 82% rename from sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/ListAgentsSample.java rename to sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/ListAgents.java index b045092d6e4cf..993b0d6b02340 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/ListAgentsSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/ListAgents.java @@ -9,15 +9,7 @@ import com.azure.core.util.Configuration; import com.azure.identity.DefaultAzureCredentialBuilder; -/** - * Demonstrates listing all agents in an Azure AI Foundry project. - * - *

Before running the sample, set this environment variable:

- *
    - *
  • {@code FOUNDRY_PROJECT_ENDPOINT} - The Azure AI Project endpoint.
  • - *
- */ -public class ListAgentsSample { +public class ListAgents { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); // Code sample for listing all agents diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/CreateConversation.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/CreateConversation.java new file mode 100644 index 0000000000000..ea1e104699daf --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/CreateConversation.java @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.conversations; + +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import com.openai.models.conversations.Conversation; +import com.openai.services.blocking.ConversationService; + +public class CreateConversation { + public static void main(String[] args) { + String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); + // Code sample for creating a conversation + ConversationService conversationService = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .buildOpenAIClient() + .conversations(); + + Conversation conversation = conversationService.create(); + + System.out.println("Conversation ID: " + conversation.id()); + System.out.println("Conversation Created At: " + conversation.createdAt()); + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/DeleteConversation.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/DeleteConversation.java new file mode 100644 index 0000000000000..0ef93059bde6b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/DeleteConversation.java @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.conversations; + +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import com.openai.models.conversations.ConversationDeletedResource; +import com.openai.services.blocking.ConversationService; + +public class DeleteConversation { + public static void main(String[] args) { + String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); + String conversationId = "your-conversation-id"; // Replace with actual conversation ID + // Code sample for deleting a conversation + ConversationService conversationService = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .buildOpenAIClient() + .conversations(); + + ConversationDeletedResource deletedConversation = conversationService.delete(conversationId); + + System.out.println("Deleted conversation with the following details:"); + System.out.println("\tConversation ID: " + deletedConversation.id()); + System.out.println("\tConversation was deleted: " + deletedConversation.deleted()); + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/UpdateConversation.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/UpdateConversation.java new file mode 100644 index 0000000000000..889a554dbaafc --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/conversations/UpdateConversation.java @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.conversations; + +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import com.openai.core.JsonValue; +import com.openai.models.conversations.Conversation; +import com.openai.models.conversations.ConversationUpdateParams; +import com.openai.services.blocking.ConversationService; + +public class UpdateConversation { + public static void main(String[] args) { + String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); + String conversationId = "your-conversation-id"; // Replace with actual conversation ID + // Code sample for updating a conversation + ConversationService conversationService = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .buildOpenAIClient() + .conversations(); + + // Create metadata for the update + ConversationUpdateParams.Metadata metadata = ConversationUpdateParams.Metadata.builder() + .putAdditionalProperty("updated_by", JsonValue.from("java_sample")) + .putAdditionalProperty("update_timestamp", JsonValue.from(Long.toString(System.currentTimeMillis()))) + .build(); + + ConversationUpdateParams updateParams = ConversationUpdateParams.builder() + .metadata(metadata) + .build(); + + Conversation updatedConversation = conversationService.update(conversationId, updateParams); + + System.out.println("Updated Conversation ID: " + updatedConversation.id()); + System.out.println("Updated Conversation Metadata: " + updatedConversation._metadata()); + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/AgentEndpointAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/AgentEndpointAsyncSample.java index b966b88cafe2d..2c4f0a4b051eb 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/AgentEndpointAsyncSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/AgentEndpointAsyncSample.java @@ -17,7 +17,6 @@ import com.azure.identity.DefaultAzureCredentialBuilder; import com.openai.client.OpenAIClientAsync; import com.openai.core.JsonValue; -import com.openai.models.responses.Response; import com.openai.models.responses.ResponseCreateParams; import reactor.core.publisher.Mono; @@ -66,12 +65,11 @@ public static void main(String[] args) { new UpdateAgentDetailsOptions().setAgentEndpoint(endpointConfig)) .doOnNext(updated -> System.out.printf("Agent endpoint configured for agent: %s%n", updated.getName())) - .then(Mono.defer(() -> Mono.fromFuture(openAIAsyncClient.responses().create(ResponseCreateParams.builder() + .then(Mono.fromFuture(openAIAsyncClient.responses().create(ResponseCreateParams.builder() .input("What is the size of France in square miles?") .putAdditionalBodyProperty("agent_session_id", JsonValue.from(resources.getSession().getAgentSessionId())) - .build())))) - .cast(Response.class) + .build()))) .doOnNext(HostedAgentsSampleUtils::printResponseOutput) .then(); }); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/SessionLogStreamAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/SessionLogStreamAsyncSample.java index 84ec6062d6d5d..5e1b728dda4c7 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/SessionLogStreamAsyncSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/hostedagents/SessionLogStreamAsyncSample.java @@ -18,7 +18,6 @@ import com.azure.identity.DefaultAzureCredentialBuilder; import com.openai.client.OpenAIClientAsync; import com.openai.core.JsonValue; -import com.openai.models.responses.Response; import com.openai.models.responses.ResponseCreateParams; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; @@ -67,12 +66,11 @@ public static void main(String[] args) { new UpdateAgentDetailsOptions().setAgentEndpoint(endpointConfig)) .doOnNext(updated -> System.out.printf("Agent endpoint configured for agent: %s%n", updated.getName())) - .then(Mono.defer(() -> Mono.fromFuture(openAIAsyncClient.responses().create(ResponseCreateParams.builder() + .then(Mono.fromFuture(openAIAsyncClient.responses().create(ResponseCreateParams.builder() .input("Say hello in one short sentence.") .putAdditionalBodyProperty("agent_session_id", JsonValue.from(resources.getSession().getAgentSessionId())) - .build())))) - .cast(Response.class) + .build()))) .doOnNext(HostedAgentsSampleUtils::printResponseOutput) .then(agentsAsyncClient.getSessionLogStreamWithResponse(agentName, resources.getAgent().getVersion(), resources.getSession().getAgentSessionId(), new RequestOptions())) diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/CreateMemoryStore.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/CreateMemoryStore.java index ae993ae5baeee..50bf867f65b4d 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/CreateMemoryStore.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/CreateMemoryStore.java @@ -24,7 +24,7 @@ public static void main(String[] args) { .beta() .buildBetaMemoryStoresClient(); - String memoryStoreName = "my-memory-store-java"; + String memoryStoreName = "my_memory_store_java"; String description = "Example memory store for conversations"; MemoryStoreDefaultDefinition definition = new MemoryStoreDefaultDefinition(chatModel, embeddingModel); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/DeleteMemoryStore.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/DeleteMemoryStore.java index 4b1a95ac0d4df..15db38a8b620b 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/DeleteMemoryStore.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/DeleteMemoryStore.java @@ -11,7 +11,7 @@ public class DeleteMemoryStore { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String memoryStoreName = "my-memory-store-java"; + String memoryStoreName = "my_memory_store_java"; // Code sample for deleting a memory store BetaMemoryStoresClient memoryStoresClient = new AgentsClientBuilder() diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/GetMemoryStore.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/GetMemoryStore.java index eea70181e5e20..61b8e5f4d23d6 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/GetMemoryStore.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/GetMemoryStore.java @@ -12,7 +12,7 @@ public class GetMemoryStore { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String memoryStoreName = "my-memory-store-java"; + String memoryStoreName = "my_memory_store_java"; // Code sample for getting a memory store BetaMemoryStoresClient memoryStoresClient = new AgentsClientBuilder() diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedAsyncSample.java index 1b14cfec5ef7d..a24db3dc14892 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedAsyncSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedAsyncSample.java @@ -5,7 +5,6 @@ import com.azure.ai.agents.AgentsClientBuilder; import com.azure.ai.agents.BetaMemoryStoresAsyncClient; -import com.azure.ai.agents.models.ApiError; import com.azure.ai.agents.models.MemoryOperation; import com.azure.ai.agents.models.MemorySearchItem; import com.azure.ai.agents.models.MemorySearchOptions; @@ -39,7 +38,7 @@ * */ public class MemoryStoreAdvancedAsyncSample { - private static final String MEMORY_STORE_NAME = "memory-advanced-store-java-async"; + private static final String MEMORY_STORE_NAME = "memory_advanced_store_java_async"; private static final Duration POLL_TIMEOUT = Duration.ofMinutes(3); private static final Duration CLEANUP_TIMEOUT = Duration.ofMinutes(1); @@ -158,15 +157,7 @@ private static Mono waitForUpdateCompletion( PollerFlux poller) { return poller.takeUntil(response -> response.getStatus().isComplete()) .last() - .flatMap(response -> { - MemoryStoreUpdateResponse update = response.getValue(); - ApiError error = update == null ? null : update.getError(); - if (error != null) { - return Mono.error(new IllegalStateException(String.format( - "Memory update failed: [%s] %s", error.getCode(), error.getMessage()))); - } - return response.getFinalResult(); - }) + .flatMap(AsyncPollResponse::getFinalResult) .timeout(POLL_TIMEOUT); } diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedSample.java index 9752ba5683dd0..2405a8cd8be4d 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreAdvancedSample.java @@ -35,7 +35,7 @@ * */ public class MemoryStoreAdvancedSample { - private static final String MEMORY_STORE_NAME = "memory-advanced-store-java-sync"; + private static final String MEMORY_STORE_NAME = "memory_advanced_store_java_sync"; private static final Duration POLL_TIMEOUT = Duration.ofMinutes(3); public static void main(String[] args) { diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsAsyncSample.java index 2e4947485f38d..bec6c9fdaae25 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsAsyncSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsAsyncSample.java @@ -25,7 +25,7 @@ * */ public class MemoryStoreItemsAsyncSample { - private static final String MEMORY_STORE_NAME = "memory-items-store-java-async"; + private static final String MEMORY_STORE_NAME = "memory_items_store_java"; public static void main(String[] args) { Configuration configuration = Configuration.getGlobalConfiguration(); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsSample.java index 3bb887ade2877..38f04ecc5c301 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemoryStoreItemsSample.java @@ -26,7 +26,7 @@ * */ public class MemoryStoreItemsSample { - private static final String MEMORY_STORE_NAME = "memory-items-store-java"; + private static final String MEMORY_STORE_NAME = "memory_items_store_java"; public static void main(String[] args) { Configuration configuration = Configuration.getGlobalConfiguration(); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/UpdateMemoryStore.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/UpdateMemoryStore.java index a6dafe77c578f..6689cbd82b8a6 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/UpdateMemoryStore.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/UpdateMemoryStore.java @@ -12,7 +12,7 @@ public class UpdateMemoryStore { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String memoryStoreName = "my-memory-store-java"; + String memoryStoreName = "my_memory_store_java"; // Code sample for updating a memory store BetaMemoryStoresClient memoryStoresClient = new AgentsClientBuilder() diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/CreateToolboxVersion.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/CreateToolboxVersion.java index b28f26d808765..5b5bb84e63ea2 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/CreateToolboxVersion.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/CreateToolboxVersion.java @@ -43,7 +43,7 @@ public static void main(String[] args) { ); ToolboxVersionDetails toolboxVersion = toolboxesClient.createToolboxVersion( - "toolbox-created-from-java", tools, + "toolbox_created_from_java", tools, "Toolbox with MCP tool requiring approval 'never'.", null, null, null); System.out.println("Toolbox Name: " + toolboxVersion.getName()); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolbox.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolbox.java index 5f7eef701e43e..a6a798e905117 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolbox.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolbox.java @@ -23,7 +23,7 @@ public class DeleteToolbox { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String toolboxName = "toolbox-created-from-java"; + String toolboxName = "toolbox_created_from_java"; // Code sample for deleting a toolbox ToolboxesClient toolboxesClient = new AgentsClientBuilder() .credential(new DefaultAzureCredentialBuilder().build()) diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolboxVersion.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolboxVersion.java index 4c91a7d9b5f7b..d777ab2c12a9f 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolboxVersion.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/DeleteToolboxVersion.java @@ -23,7 +23,7 @@ public class DeleteToolboxVersion { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String toolboxName = "toolbox-created-from-java"; + String toolboxName = "toolbox_created_from_java"; String version = "1"; // Replace with the version to delete // Code sample for deleting a specific toolbox version ToolboxesClient toolboxesClient = new AgentsClientBuilder() diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolbox.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolbox.java index 439dc18318576..b1c260bc1b368 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolbox.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolbox.java @@ -23,7 +23,7 @@ public class GetToolbox { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String toolboxName = "toolbox-created-from-java"; + String toolboxName = "toolbox_created_from_java"; // Code sample for retrieving a toolbox ToolboxesClient toolboxesClient = new AgentsClientBuilder() .credential(new DefaultAzureCredentialBuilder().build()) diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolboxVersion.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolboxVersion.java index 07cf02a4d8949..3fd6cd4ec7336 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolboxVersion.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/GetToolboxVersion.java @@ -26,7 +26,7 @@ public class GetToolboxVersion { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String toolboxName = "toolbox-created-from-java"; + String toolboxName = "toolbox_created_from_java"; String version = "1"; // Replace with the desired version // Code sample for retrieving a specific toolbox version ToolboxesClient toolboxesClient = new AgentsClientBuilder() diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/ListToolboxVersions.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/ListToolboxVersions.java index e5ab773e2364f..978d13b12d623 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/ListToolboxVersions.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/ListToolboxVersions.java @@ -24,7 +24,7 @@ public class ListToolboxVersions { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String toolboxName = "toolbox-created-from-java"; + String toolboxName = "toolbox_created_from_java"; // Code sample for listing all versions of a toolbox ToolboxesClient toolboxesClient = new AgentsClientBuilder() .credential(new DefaultAzureCredentialBuilder().build()) diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/UpdateToolbox.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/UpdateToolbox.java index 4b1314a6b092e..2bcdfc7163074 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/UpdateToolbox.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/toolboxes/UpdateToolbox.java @@ -24,14 +24,14 @@ public class UpdateToolbox { public static void main(String[] args) { String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); - String toolboxName = "toolbox-created-from-java"; + String toolboxName = "toolbox_created_from_java"; // Code sample for updating a toolbox's default version ToolboxesClient toolboxesClient = new AgentsClientBuilder() .credential(new DefaultAzureCredentialBuilder().build()) .endpoint(endpoint) .buildToolboxesClient(); - ToolboxDetails updatedToolbox = toolboxesClient.updateToolbox(toolboxName, "1"); + ToolboxDetails updatedToolbox = toolboxesClient.updateToolbox(toolboxName, "2"); System.out.println("Updated Toolbox Name: " + updatedToolbox.getName()); System.out.println("Updated Default Version: " + updatedToolbox.getDefaultVersion()); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/FileSearchAsync.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/FileSearchAsync.java new file mode 100644 index 0000000000000..3e5d423c229be --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/FileSearchAsync.java @@ -0,0 +1,175 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.tools; + +import com.azure.ai.agents.AgentsAsyncClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.ResponsesAsyncClient; +import com.azure.ai.agents.models.AgentReference; +import com.azure.ai.agents.models.AzureCreateResponseOptions; +import com.azure.ai.agents.models.AgentVersionDetails; +import com.azure.ai.agents.models.FileSearchTool; +import com.azure.ai.agents.models.PromptAgentDefinition; +import com.azure.core.credential.TokenCredential; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import com.openai.client.OpenAIClient; +import com.openai.models.files.FileCreateParams; +import com.openai.models.files.FileObject; +import com.openai.models.files.FilePurpose; +import com.openai.models.responses.Response; +import com.openai.models.responses.ResponseCreateParams; +import com.openai.models.responses.ResponseFileSearchToolCall; +import com.openai.models.responses.ResponseOutputItem; +import com.openai.models.responses.ResponseOutputMessage; +import com.openai.models.vectorstores.VectorStore; +import com.openai.models.vectorstores.VectorStoreCreateParams; +import com.openai.services.async.ConversationServiceAsync; +import reactor.core.publisher.Mono; + +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.time.Duration; +import java.util.Collections; +import java.util.concurrent.atomic.AtomicReference; + +/** + * This sample demonstrates how to create an agent with the File Search tool + * using the async client. It creates a vector store, uploads a file, and uses + * the agent to search the file within a conversation. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • FOUNDRY_PROJECT_ENDPOINT - The Azure AI Project endpoint.
  • + *
  • FOUNDRY_MODEL_NAME - The model deployment name.
  • + *
+ */ +public class FileSearchAsync { + public static void main(String[] args) throws Exception { + String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); + String model = Configuration.getGlobalConfiguration().get("FOUNDRY_MODEL_NAME"); + + TokenCredential credential = new DefaultAzureCredentialBuilder().build(); + + AgentsClientBuilder builder = new AgentsClientBuilder() + .credential(credential) + .endpoint(endpoint); + + AgentsAsyncClient agentsAsyncClient = builder.buildAgentsAsyncClient(); + ResponsesAsyncClient responsesAsyncClient = builder.buildResponsesAsyncClient(); + ConversationServiceAsync conversationServiceAsync = builder.buildOpenAIAsyncClient().conversations(); + // Vector store and file operations use the sync OpenAI client for setup + OpenAIClient openAIClient = builder.buildOpenAIClient(); + + AtomicReference agentRef = new AtomicReference<>(); + AtomicReference conversationIdRef = new AtomicReference<>(); + + // Create a sample document and upload it + String sampleContent = "The Solar System consists of the Sun and the celestial objects bound to it by gravity. " + + "The eight planets in order from the Sun are: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune. " + + "Earth is the third planet from the Sun and the only known planet to harbor life. " + + "Jupiter is the largest planet, while Mercury is the smallest."; + + Path tempFile = Files.createTempFile("sample_document", ".txt"); + Files.write(tempFile, sampleContent.getBytes(StandardCharsets.UTF_8)); + + FileObject uploadedFile = openAIClient.files().create(FileCreateParams.builder() + .file(tempFile) + .purpose(FilePurpose.ASSISTANTS) + .build()); + System.out.println("Uploaded file: " + uploadedFile.id()); + + VectorStore vectorStore = openAIClient.vectorStores().create(VectorStoreCreateParams.builder() + .name("SampleVectorStore") + .fileIds(Collections.singletonList(uploadedFile.id())) + .build()); + System.out.println("Created vector store: " + vectorStore.id()); + + Thread.sleep(5000); // Wait for vector store to process + + FileSearchTool tool = new FileSearchTool(Collections.singletonList(vectorStore.id())); + + PromptAgentDefinition agentDefinition = new PromptAgentDefinition(model) + .setInstructions("You are a helpful assistant that can search through uploaded files to answer questions.") + .setTools(Collections.singletonList(tool)); + + agentsAsyncClient.createAgentVersion("file-search-agent", agentDefinition) + .flatMap(agent -> { + agentRef.set(agent); + System.out.printf("Agent created: %s (version %s)%n", agent.getName(), agent.getVersion()); + + AgentReference agentReference = new AgentReference(agent.getName()) + .setVersion(agent.getVersion()); + + return Mono.fromFuture(conversationServiceAsync.create()) + .flatMap(conversation -> { + conversationIdRef.set(conversation.id()); + System.out.println("Created conversation: " + conversation.id()); + + return responsesAsyncClient.createAzureResponse( + new AzureCreateResponseOptions().setAgentReference(agentReference), + ResponseCreateParams.builder() + .conversation(conversation.id()) + .input("What is the largest planet in the Solar System?")); + }); + }) + .doOnNext(response -> { + for (ResponseOutputItem outputItem : response.output()) { + if (outputItem.message().isPresent()) { + ResponseOutputMessage message = outputItem.message().get(); + message.content().forEach(content -> { + content.outputText().ifPresent(text -> { + System.out.println("Assistant: " + text.text()); + }); + }); + } + + if (outputItem.fileSearchCall().isPresent()) { + ResponseFileSearchToolCall fileSearchCall = outputItem.fileSearchCall().get(); + System.out.println("\n--- File Search Execution ---"); + System.out.println("Call ID: " + fileSearchCall.id()); + System.out.println("Status: " + fileSearchCall.status()); + fileSearchCall.results().ifPresent(results -> { + System.out.println("Results found: " + results.size()); + results.forEach(result -> { + System.out.println(" - File ID: " + result.fileId()); + result.filename().ifPresent(name -> System.out.println(" Filename: " + name)); + result.score().ifPresent(score -> System.out.println(" Score: " + score)); + }); + }); + } + } + }) + .then(Mono.defer(() -> { + String convId = conversationIdRef.get(); + if (convId != null) { + return Mono.fromFuture(conversationServiceAsync.delete(convId)) + .then(); + } + return Mono.empty(); + })) + .then(Mono.defer(() -> { + AgentVersionDetails agent = agentRef.get(); + if (agent != null) { + return agentsAsyncClient.deleteAgentVersion(agent.getName(), agent.getVersion()) + .doOnSuccess(v -> System.out.println("Agent deleted")); + } + return Mono.empty(); + })) + .doFinally(signal -> { + openAIClient.vectorStores().delete(vectorStore.id()); + openAIClient.files().delete(uploadedFile.id()); + try { + Files.deleteIfExists(tempFile); + } catch (Exception ignored) { + // best-effort + } + System.out.println("Vector store and file deleted"); + }) + .doOnError(error -> System.err.println("Error: " + error.getMessage())) + .timeout(Duration.ofSeconds(300)) + .block(); + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationAsync.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationAsync.java new file mode 100644 index 0000000000000..6468833a74f6b --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationAsync.java @@ -0,0 +1,89 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.tools; + +import com.azure.ai.agents.AgentsAsyncClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.ResponsesAsyncClient; +import com.azure.ai.agents.models.AgentReference; +import com.azure.ai.agents.models.AzureCreateResponseOptions; +import com.azure.ai.agents.models.AgentVersionDetails; +import com.azure.ai.agents.models.ImageGenTool; +import com.azure.ai.agents.models.ImageGenToolModel; +import com.azure.ai.agents.models.ImageGenToolQuality; +import com.azure.ai.agents.models.ImageGenToolSize; +import com.azure.ai.agents.models.PromptAgentDefinition; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import com.openai.models.responses.ResponseCreateParams; +import java.time.Duration; +import java.util.Collections; +import java.util.concurrent.atomic.AtomicReference; +import reactor.core.publisher.Mono; + +/** + * This sample demonstrates (using the async client) how to create an agent with the Image Generation tool + * to generate images from text descriptions. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • FOUNDRY_PROJECT_ENDPOINT - The Azure AI Project endpoint.
  • + *
  • FOUNDRY_MODEL_NAME - The model deployment name.
  • + *
  • IMAGE_GENERATION_MODEL_DEPLOYMENT_NAME - The image generation model deployment name.
  • + *
+ */ +public class ImageGenerationAsync { + public static void main(String[] args) { + String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); + String model = Configuration.getGlobalConfiguration().get("FOUNDRY_MODEL_NAME"); + String imageModel = Configuration.getGlobalConfiguration().get("IMAGE_GENERATION_MODEL_DEPLOYMENT_NAME"); + + AgentsClientBuilder builder = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint); + + AgentsAsyncClient agentsAsyncClient = builder.buildAgentsAsyncClient(); + ResponsesAsyncClient responsesAsyncClient = builder.buildResponsesAsyncClient(); + + AtomicReference agentRef = new AtomicReference<>(); + + // Create image generation tool with model, quality, and size + ImageGenTool imageGenTool = new ImageGenTool() + .setModel(ImageGenToolModel.fromString(imageModel)) + .setQuality(ImageGenToolQuality.LOW) + .setSize(ImageGenToolSize.fromString("1024x1024")); + // Create agent with image generation tool + PromptAgentDefinition agentDefinition = new PromptAgentDefinition(model) + .setInstructions("You are a creative assistant that can generate images based on descriptions.") + .setTools(Collections.singletonList(imageGenTool)); + + agentsAsyncClient.createAgentVersion("image-gen-agent", agentDefinition) + .flatMap(agent -> { + agentRef.set(agent); + System.out.printf("Agent created: %s (version %s)%n", agent.getName(), agent.getVersion()); + + AgentReference agentReference = new AgentReference(agent.getName()) + .setVersion(agent.getVersion()); + + return responsesAsyncClient.createAzureResponse( + new AzureCreateResponseOptions().setAgentReference(agentReference), + ResponseCreateParams.builder() + .input("Generate an image of a sunset over a mountain range")); + }) + .doOnNext(response -> { + System.out.println("Response: " + response.output()); + }) + .then(Mono.defer(() -> { + AgentVersionDetails agent = agentRef.get(); + if (agent != null) { + return agentsAsyncClient.deleteAgentVersion(agent.getName(), agent.getVersion()) + .doOnSuccess(v -> System.out.println("Agent deleted")); + } + return Mono.empty(); + })) + .doOnError(error -> System.err.println("Error: " + error.getMessage())) + .timeout(Duration.ofSeconds(300)) + .block(); + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationSync.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationSync.java new file mode 100644 index 0000000000000..dbff886b33131 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/ImageGenerationSync.java @@ -0,0 +1,84 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.tools; + +import com.azure.ai.agents.AgentsClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.ResponsesClient; +import com.azure.ai.agents.models.AgentReference; +import com.azure.ai.agents.models.AzureCreateResponseOptions; +import com.azure.ai.agents.models.AgentVersionDetails; +import com.azure.ai.agents.models.ImageGenTool; +import com.azure.ai.agents.models.ImageGenToolModel; +import com.azure.ai.agents.models.ImageGenToolQuality; +import com.azure.ai.agents.models.ImageGenToolSize; +import com.azure.ai.agents.models.PromptAgentDefinition; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import com.openai.models.responses.Response; +import com.openai.models.responses.ResponseCreateParams; + +import java.util.Collections; + +/** + * This sample demonstrates how to create an agent with the Image Generation tool + * to generate images from text descriptions. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • FOUNDRY_PROJECT_ENDPOINT - The Azure AI Project endpoint.
  • + *
  • FOUNDRY_MODEL_NAME - The model deployment name.
  • + *
  • IMAGE_GENERATION_MODEL_DEPLOYMENT_NAME - The image generation model deployment name.
  • + *
+ */ +public class ImageGenerationSync { + public static void main(String[] args) { + String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); + String model = Configuration.getGlobalConfiguration().get("FOUNDRY_MODEL_NAME"); + String imageModel = Configuration.getGlobalConfiguration().get("IMAGE_GENERATION_MODEL_DEPLOYMENT_NAME"); + + AgentsClientBuilder builder = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint); + + AgentsClient agentsClient = builder.buildAgentsClient(); + ResponsesClient responsesClient = builder.buildResponsesClient(); + + // BEGIN: com.azure.ai.agents.define_image_generation + // Create image generation tool with model, quality, and size + ImageGenTool imageGenTool = new ImageGenTool() + .setModel(ImageGenToolModel.fromString(imageModel)) + .setQuality(ImageGenToolQuality.LOW) + .setSize(ImageGenToolSize.fromString("1024x1024")); + // END: com.azure.ai.agents.define_image_generation + + // Create agent with image generation tool + PromptAgentDefinition agentDefinition = new PromptAgentDefinition(model) + .setInstructions("You are a creative assistant that can generate images based on descriptions.") + .setTools(Collections.singletonList(imageGenTool)); + + AgentVersionDetails agent = agentsClient.createAgentVersion("image-gen-agent", agentDefinition); + System.out.printf("Agent created: %s (version %s)%n", agent.getName(), agent.getVersion()); + + try { + // Create a response + AgentReference agentReference = new AgentReference(agent.getName()) + .setVersion(agent.getVersion()); + + Response response = responsesClient.createAzureResponse( + new AzureCreateResponseOptions().setAgentReference(agentReference), + ResponseCreateParams.builder() + .input("Generate an image of a sunset over a mountain range")); + + // The response output may include image_generation_call items with base64-encoded image data. + // This sample prints the response status and the number of output items; image extraction + // and saving would require additional parsing logic that is not shown here. + System.out.println("Response status: " + response.status().map(Object::toString).orElse("unknown")); + System.out.println("Output items: " + response.output().size()); + } finally { + // Clean up + agentsClient.deleteAgentVersion(agent.getName(), agent.getVersion()); + } + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchAsync.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/MemorySearchAsync.java similarity index 98% rename from sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchAsync.java rename to sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/MemorySearchAsync.java index 4f6bf8e20d76d..1abd7896df4f7 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchAsync.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/MemorySearchAsync.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.ai.agents.memory; +package com.azure.ai.agents.tools; import com.azure.ai.agents.AgentsAsyncClient; import com.azure.ai.agents.AgentsClientBuilder; @@ -58,7 +58,7 @@ public static void main(String[] args) throws Exception { // Memory store operations use sync client for setup/teardown BetaMemoryStoresClient memoryStoresClient = builder.beta().buildBetaMemoryStoresClient(); - String memoryStoreName = "my-memory-store"; + String memoryStoreName = "my_memory_store"; String scope = "user_123"; AtomicReference agentRef = new AtomicReference<>(); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchSync.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/MemorySearchSync.java similarity index 98% rename from sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchSync.java rename to sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/MemorySearchSync.java index 975ebc4e32daa..051faf45c1c81 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchSync.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/MemorySearchSync.java @@ -1,7 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.ai.agents.memory; +package com.azure.ai.agents.tools; import com.azure.ai.agents.AgentsClient; import com.azure.ai.agents.AgentsClientBuilder; @@ -56,7 +56,7 @@ public static void main(String[] args) { ConversationService conversationService = builder.buildOpenAIClient().conversations(); ResponsesClient responsesClient = builder.buildResponsesClient(); - String memoryStoreName = "my-memory-store"; + String memoryStoreName = "my_memory_store"; String scope = "user_123"; AgentVersionDetails agent = null; String firstConversationId = null; diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSample.java new file mode 100644 index 0000000000000..f37d2b4e947fc --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSample.java @@ -0,0 +1,111 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.tools; + +import com.azure.ai.agents.AgentsClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.ResponsesClient; +import com.azure.ai.agents.SampleUtils; +import com.azure.ai.agents.models.AgentReference; +import com.azure.ai.agents.models.AzureCreateResponseOptions; +import com.azure.ai.agents.models.AgentVersionDetails; +import com.azure.ai.agents.models.OpenApiAnonymousAuthDetails; +import com.azure.ai.agents.models.OpenApiFunctionDefinition; +import com.azure.ai.agents.models.OpenApiTool; +import com.azure.ai.agents.models.PromptAgentDefinition; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import com.openai.models.conversations.Conversation; +import com.openai.models.conversations.items.ItemCreateParams; +import com.openai.models.responses.EasyInputMessage; +import com.openai.models.responses.Response; +import com.openai.models.responses.ResponseCreateParams; +import com.openai.services.blocking.ConversationService; + +import java.util.Arrays; +import java.util.Map; + +/** + * This sample demonstrates how to create an agent with an OpenAPI tool that calls + * an external API defined by an OpenAPI specification file. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • FOUNDRY_PROJECT_ENDPOINT - The Azure AI Project endpoint.
  • + *
  • FOUNDRY_MODEL_NAME - The model deployment name.
  • + *
+ * + *

Also place an OpenAPI spec JSON file at {@code src/samples/resources/assets/httpbin_openapi.json}.

+ */ +public class OpenApiSample { + public static void main(String[] args) throws Exception { + String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); + String model = Configuration.getGlobalConfiguration().get("FOUNDRY_MODEL_NAME"); + + AgentsClientBuilder builder = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint); + + AgentsClient agentsClient = builder.buildAgentsClient(); + ResponsesClient responsesClient = builder.buildResponsesClient(); + ConversationService conversationService = builder.buildOpenAIClient().conversations(); + + + // Load the OpenAPI spec from a JSON file + Map spec = OpenApiFunctionDefinition.readSpecFromFile( + SampleUtils.getResourcePath("assets/httpbin_openapi.json")); + + OpenApiFunctionDefinition toolDefinition = new OpenApiFunctionDefinition( + "httpbin_get", + spec, + new OpenApiAnonymousAuthDetails()) + .setDescription("Get request metadata from an OpenAPI endpoint."); + + PromptAgentDefinition agentDefinition = new PromptAgentDefinition(model) + .setInstructions("Use the OpenAPI tool for HTTP request metadata.") + .setTools(Arrays.asList(new OpenApiTool(toolDefinition))); + + AgentVersionDetails agentVersion = agentsClient.createAgentVersion("openapi-agent", agentDefinition); + System.out.println("Agent: " + agentVersion.getName() + ", version: " + agentVersion.getVersion()); + + // Create a conversation and add a user message + Conversation conversation = conversationService.create(); + conversationService.items().create( + ItemCreateParams.builder() + .conversationId(conversation.id()) + .addItem(EasyInputMessage.builder() + .role(EasyInputMessage.Role.USER) + .content("Use the OpenAPI tool and summarize the returned URL and origin in one sentence.") + .build()) + .build()); + + try { + AgentReference agentReference = new AgentReference(agentVersion.getName()) + .setVersion(agentVersion.getVersion()); + + ResponseCreateParams.Builder options = ResponseCreateParams.builder() + .maxOutputTokens(300L); + + Response response = responsesClient.createAzureResponse( + new AzureCreateResponseOptions().setAgentReference(agentReference), + options.conversation(conversation.id())); + + String text = response.output().stream() + .filter(item -> item.isMessage()) + .map(item -> item.asMessage().content() + .get(item.asMessage().content().size() - 1) + .asOutputText() + .text()) + .reduce((first, second) -> second) + .orElse(""); + + System.out.println("Status: " + response.status().map(Object::toString).orElse("unknown")); + System.out.println("Response: " + text); + } finally { + agentsClient.deleteAgentVersion(agentVersion.getName(), agentVersion.getVersion()); + System.out.println("Agent deleted"); + } + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSync.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSync.java new file mode 100644 index 0000000000000..947b842665ee3 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/OpenApiSync.java @@ -0,0 +1,114 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.tools; + +import com.azure.ai.agents.AgentsClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.ResponsesClient; +import com.azure.ai.agents.SampleUtils; +import com.azure.ai.agents.models.AgentReference; +import com.azure.ai.agents.models.AzureCreateResponseOptions; +import com.azure.ai.agents.models.AgentVersionDetails; +import com.azure.ai.agents.models.OpenApiAnonymousAuthDetails; +import com.azure.ai.agents.models.OpenApiFunctionDefinition; +import com.azure.ai.agents.models.OpenApiTool; +import com.azure.ai.agents.models.PromptAgentDefinition; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import com.openai.models.conversations.Conversation; +import com.openai.models.conversations.items.ItemCreateParams; +import com.openai.models.responses.EasyInputMessage; +import com.openai.models.responses.Response; +import com.openai.models.responses.ResponseCreateParams; +import com.openai.services.blocking.ConversationService; + +import java.util.Arrays; +import java.util.Map; + +/** + * This sample demonstrates how to create an agent with an OpenAPI tool that calls + * an external API defined by an OpenAPI specification file. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • FOUNDRY_PROJECT_ENDPOINT - The Azure AI Project endpoint.
  • + *
  • FOUNDRY_MODEL_NAME - The model deployment name.
  • + *
+ * + *

Also place an OpenAPI spec JSON file at {@code src/samples/resources/assets/httpbin_openapi.json}.

+ */ +public class OpenApiSync { + public static void main(String[] args) throws Exception { + String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); + String model = Configuration.getGlobalConfiguration().get("FOUNDRY_MODEL_NAME"); + + AgentsClientBuilder builder = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint); + + AgentsClient agentsClient = builder.buildAgentsClient(); + ResponsesClient responsesClient = builder.buildResponsesClient(); + ConversationService conversationService = builder.buildOpenAIClient().conversations(); + + + // BEGIN: com.azure.ai.agents.define_openapi + // Load the OpenAPI spec from a JSON file + Map spec = OpenApiFunctionDefinition.readSpecFromFile( + SampleUtils.getResourcePath("assets/httpbin_openapi.json")); + + OpenApiTool tool = new OpenApiTool( + new OpenApiFunctionDefinition( + "httpbin_get", + spec, + new OpenApiAnonymousAuthDetails()) + .setDescription("Get request metadata from an OpenAPI endpoint.")); + // END: com.azure.ai.agents.define_openapi + + PromptAgentDefinition agentDefinition = new PromptAgentDefinition(model) + .setInstructions("Use the OpenAPI tool for HTTP request metadata.") + .setTools(Arrays.asList(tool)); + + AgentVersionDetails agentVersion = agentsClient.createAgentVersion("openapi-agent", agentDefinition); + System.out.println("Agent: " + agentVersion.getName() + ", version: " + agentVersion.getVersion()); + + // Create a conversation and add a user message + Conversation conversation = conversationService.create(); + conversationService.items().create( + ItemCreateParams.builder() + .conversationId(conversation.id()) + .addItem(EasyInputMessage.builder() + .role(EasyInputMessage.Role.USER) + .content("Use the OpenAPI tool and summarize the returned URL and origin in one sentence.") + .build()) + .build()); + + try { + AgentReference agentReference = new AgentReference(agentVersion.getName()) + .setVersion(agentVersion.getVersion()); + + ResponseCreateParams.Builder options = ResponseCreateParams.builder() + .maxOutputTokens(300L); + + Response response = responsesClient.createAzureResponse( + new AzureCreateResponseOptions().setAgentReference(agentReference), + options.conversation(conversation.id())); + + String text = response.output().stream() + .filter(item -> item.isMessage()) + .map(item -> item.asMessage().content() + .get(item.asMessage().content().size() - 1) + .asOutputText() + .text()) + .reduce((first, second) -> second) + .orElse(""); + + System.out.println("Status: " + response.status().map(Object::toString).orElse("unknown")); + System.out.println("Response: " + text); + } finally { + agentsClient.deleteAgentVersion(agentVersion.getName(), agentVersion.getVersion()); + System.out.println("Agent deleted"); + } + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/WebSearchAsync.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/WebSearchAsync.java new file mode 100644 index 0000000000000..7b91c54a49f4a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/WebSearchAsync.java @@ -0,0 +1,94 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.tools; + +import com.azure.ai.agents.AgentsAsyncClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.ResponsesAsyncClient; +import com.azure.ai.agents.models.AgentReference; +import com.azure.ai.agents.models.AzureCreateResponseOptions; +import com.azure.ai.agents.models.AgentVersionDetails; +import com.azure.ai.agents.models.PromptAgentDefinition; +import com.azure.ai.agents.models.WebSearchPreviewTool; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import com.openai.models.responses.ResponseCreateParams; +import com.openai.models.responses.ResponseOutputItem; +import com.openai.models.responses.ResponseOutputMessage; +import reactor.core.publisher.Mono; + +import java.time.Duration; +import java.util.Collections; +import java.util.concurrent.atomic.AtomicReference; + +/** + * This sample demonstrates how to create an agent with the Web Search tool + * to search the web for current information, using the async client. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • FOUNDRY_PROJECT_ENDPOINT - The Azure AI Project endpoint.
  • + *
  • FOUNDRY_MODEL_NAME - The model deployment name.
  • + *
+ */ +public class WebSearchAsync { + public static void main(String[] args) { + String endpoint = Configuration.getGlobalConfiguration().get("FOUNDRY_PROJECT_ENDPOINT"); + String model = Configuration.getGlobalConfiguration().get("FOUNDRY_MODEL_NAME"); + + AgentsClientBuilder builder = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint); + + AgentsAsyncClient agentsAsyncClient = builder.buildAgentsAsyncClient(); + ResponsesAsyncClient responsesAsyncClient = builder.buildResponsesAsyncClient(); + + AtomicReference agentRef = new AtomicReference<>(); + + // Create a WebSearchPreviewTool + WebSearchPreviewTool tool = new WebSearchPreviewTool(); + + PromptAgentDefinition agentDefinition = new PromptAgentDefinition(model) + .setInstructions("You are a helpful assistant that can perform web searches to find information. " + + "When asked to find information, use the web search tool to gather relevant data.") + .setTools(Collections.singletonList(tool)); + + agentsAsyncClient.createAgentVersion("web-search-agent", agentDefinition) + .flatMap(agent -> { + agentRef.set(agent); + System.out.printf("Agent created: %s (version %s)%n", agent.getName(), agent.getVersion()); + + AgentReference agentReference = new AgentReference(agent.getName()) + .setVersion(agent.getVersion()); + + return responsesAsyncClient.createAzureResponse( + new AzureCreateResponseOptions().setAgentReference(agentReference), + ResponseCreateParams.builder() + .input("What are the latest trends in renewable energy?")); + }) + .doOnNext(response -> { + for (ResponseOutputItem outputItem : response.output()) { + if (outputItem.message().isPresent()) { + ResponseOutputMessage message = outputItem.message().get(); + message.content().forEach(content -> { + content.outputText().ifPresent(text -> { + System.out.println("Assistant: " + text.text()); + }); + }); + } + } + }) + .then(Mono.defer(() -> { + AgentVersionDetails agent = agentRef.get(); + if (agent != null) { + return agentsAsyncClient.deleteAgentVersion(agent.getName(), agent.getVersion()) + .doOnSuccess(v -> System.out.println("Agent deleted")); + } + return Mono.empty(); + })) + .doOnError(error -> System.err.println("Error: " + error.getMessage())) + .timeout(Duration.ofSeconds(30)) + .block(); + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentBasicAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentBasicAsyncSample.java new file mode 100644 index 0000000000000..9e6c6beac7075 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentBasicAsyncSample.java @@ -0,0 +1,64 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.voice; + +import com.azure.ai.agents.AgentsAsyncClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import com.azure.ai.agents.models.AgentKind; +import com.azure.ai.agents.models.CreateAgentVersionInput; +import com.azure.ai.agents.models.VoiceModelType; +import reactor.core.publisher.Mono; + +/** + * Demonstrates the asynchronous voice-agent lifecycle. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • {@code FOUNDRY_PROJECT_ENDPOINT} - The Azure AI Project endpoint.
  • + *
  • {@code FOUNDRY_VOICE_MODEL} - Optional. The voice model or deployment name. Defaults to {@code gpt-realtime}.
  • + *
  • {@code FOUNDRY_VOICE_MODEL_TYPE} - Optional. The voice model type. Defaults to {@code managed}.
  • + *
  • {@code FOUNDRY_VOICE_AGENT_NAME} - The voice agent name. Defaults to {@code voice-agent-async-java}.
  • + *
+ */ +public class VoiceAgentBasicAsyncSample { + public static void main(String[] args) { + Configuration configuration = Configuration.getGlobalConfiguration(); + String endpoint = configuration.get("FOUNDRY_PROJECT_ENDPOINT"); + String model = configuration.get("FOUNDRY_VOICE_MODEL", "gpt-realtime"); + VoiceModelType modelType = VoiceModelType.fromString(configuration.get( + "FOUNDRY_VOICE_MODEL_TYPE", VoiceModelType.MANAGED.toString())); + String agentName = configuration.get("FOUNDRY_VOICE_AGENT_NAME", "voice-agent-async-java"); + + AgentsAsyncClient client = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .allowPreview(true) + .buildAgentsAsyncClient(); + + client.createAgentVersion(agentName, + new CreateAgentVersionInput(VoiceAgentSampleUtils.createDefinition(modelType, model, + "You are a friendly voice assistant. Keep replies short and natural."))) + .doOnNext(created -> System.out.printf("Created voice agent %s, version %s%n", + created.getName(), created.getVersion())) + .then(client.getAgent(agentName)) + .doOnNext(agent -> System.out.printf("Retrieved voice agent %s, state %s%n", + agent.getName(), agent.getState())) + .thenMany(client.listAgents(AgentKind.VOICE, null, null, null, null)) + .doOnNext(agent -> System.out.println("Voice agent: " + agent.getName())) + .then(client.createAgentVersion(agentName, + new CreateAgentVersionInput(VoiceAgentSampleUtils.createDefinition(modelType, model, + "You are a friendly voice assistant. Always greet the caller warmly.")) + .setDescription("Updated voice-agent instructions."))) + .doOnNext(updated -> System.out.println("Created updated version: " + updated.getVersion())) + .then(client.disableAgent(agentName)) + .then(client.enableAgent(agentName)) + .then(client.deleteAgent(agentName)) + .onErrorResume(error -> client.deleteAgent(agentName) + .onErrorResume(cleanupError -> Mono.empty()) + .then(Mono.error(error))) + .block(); + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentBasicSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentBasicSample.java new file mode 100644 index 0000000000000..e03ab19962386 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentBasicSample.java @@ -0,0 +1,67 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.voice; + +import com.azure.ai.agents.AgentsClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import com.azure.ai.agents.models.AgentDetails; +import com.azure.ai.agents.models.AgentKind; +import com.azure.ai.agents.models.AgentVersionDetails; +import com.azure.ai.agents.models.CreateAgentVersionInput; +import com.azure.ai.agents.models.VoiceModelType; + +/** + * Demonstrates the synchronous voice-agent lifecycle. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • {@code FOUNDRY_PROJECT_ENDPOINT} - The Azure AI Project endpoint.
  • + *
  • {@code FOUNDRY_VOICE_MODEL} - Optional. The voice model or deployment name. Defaults to {@code gpt-realtime}.
  • + *
  • {@code FOUNDRY_VOICE_MODEL_TYPE} - Optional. The voice model type. Defaults to {@code managed}.
  • + *
  • {@code FOUNDRY_VOICE_AGENT_NAME} - The voice agent name. Defaults to {@code voice-agent-java}.
  • + *
+ */ +public class VoiceAgentBasicSample { + public static void main(String[] args) { + Configuration configuration = Configuration.getGlobalConfiguration(); + String endpoint = configuration.get("FOUNDRY_PROJECT_ENDPOINT"); + String model = configuration.get("FOUNDRY_VOICE_MODEL", "gpt-realtime"); + VoiceModelType modelType = VoiceModelType.fromString(configuration.get( + "FOUNDRY_VOICE_MODEL_TYPE", VoiceModelType.MANAGED.toString())); + String agentName = configuration.get("FOUNDRY_VOICE_AGENT_NAME", "voice-agent-java"); + + AgentsClient client = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .allowPreview(true) + .buildAgentsClient(); + try { + AgentVersionDetails created = client.createAgentVersion(agentName, + new CreateAgentVersionInput(VoiceAgentSampleUtils.createDefinition(modelType, model, + "You are a friendly voice assistant. Keep replies short and natural."))); + System.out.printf("Created voice agent %s, version %s%n", created.getName(), created.getVersion()); + + AgentDetails agent = client.getAgent(agentName); + System.out.printf("Retrieved voice agent %s, state %s%n", agent.getName(), agent.getState()); + for (AgentDetails item : client.listAgents(AgentKind.VOICE, null, null, null, null)) { + System.out.println("Voice agent: " + item.getName()); + } + + AgentVersionDetails updated = client.createAgentVersion(agentName, + new CreateAgentVersionInput(VoiceAgentSampleUtils.createDefinition(modelType, model, + "You are a friendly voice assistant. Always greet the caller warmly.")) + .setDescription("Updated voice-agent instructions.")); + System.out.println("Created updated version: " + updated.getVersion()); + client.disableAgent(agentName); + System.out.println("Disabled voice agent"); + client.enableAgent(agentName); + System.out.println("Enabled voice agent"); + } finally { + client.deleteAgent(agentName); + System.out.println("Deleted voice agent: " + agentName); + } + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentGenerateSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentGenerateSample.java new file mode 100644 index 0000000000000..0d8d590e91452 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentGenerateSample.java @@ -0,0 +1,54 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.voice; + +import com.azure.ai.agents.AgentsClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import com.azure.ai.agents.models.AgentDetails; +import com.azure.ai.agents.models.AgentVersionDetails; +import com.azure.ai.agents.models.VoiceAgentDefinition; +import com.azure.core.util.BinaryData; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * Demonstrates guided authoring of a voice agent through the agent generation API. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • {@code FOUNDRY_PROJECT_ENDPOINT} - The Azure AI Project endpoint.
  • + *
  • {@code FOUNDRY_VOICE_AGENT_NAME} - The voice agent name. Defaults to {@code generated-voice-agent-java}.
  • + *
+ */ +public class VoiceAgentGenerateSample { + public static void main(String[] args) { + Configuration configuration = Configuration.getGlobalConfiguration(); + String endpoint = configuration.get("FOUNDRY_PROJECT_ENDPOINT"); + String agentName = configuration.get("FOUNDRY_VOICE_AGENT_NAME", "generated-voice-agent-java"); + + AgentsClient client = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .allowPreview(true) + .buildAgentsClient(); + + Map request = new LinkedHashMap<>(); + request.put("kind", "voice"); + request.put("name", agentName); + AgentDetails generated = client.generateAgent(BinaryData.fromObject(request)); + try { + System.out.println("Generated voice agent: " + generated.getName()); + AgentVersionDetails latest = generated.getVersions().getLatest(); + if (latest != null && latest.getDefinition() instanceof VoiceAgentDefinition) { + VoiceAgentDefinition definition = (VoiceAgentDefinition) latest.getDefinition(); + System.out.println("Instructions: " + definition.getInstructions()); + } + } finally { + client.deleteAgent(generated.getName()); + } + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentReadConversationAudioSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentReadConversationAudioSample.java new file mode 100644 index 0000000000000..82572695b212f --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentReadConversationAudioSample.java @@ -0,0 +1,78 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.voice; + +import com.azure.ai.agents.BetaAgentEndpointConversationsClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.models.VoiceItemAudioResponse; +import com.azure.ai.agents.models.VoiceRecordingResponse; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Map; + +/** + * Demonstrates downloading whole-call and item-level audio from a persisted voice conversation. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • {@code FOUNDRY_PROJECT_ENDPOINT} - The Azure AI Project endpoint.
  • + *
  • {@code FOUNDRY_VOICE_AGENT_NAME} - The voice agent name.
  • + *
  • {@code FOUNDRY_VOICE_CONVERSATION_ID} - The persisted voice conversation ID.
  • + *
+ */ +public class VoiceAgentReadConversationAudioSample { + public static void main(String[] args) throws IOException { + Configuration configuration = Configuration.getGlobalConfiguration(); + String endpoint = configuration.get("FOUNDRY_PROJECT_ENDPOINT"); + String agentName = configuration.get("FOUNDRY_VOICE_AGENT_NAME"); + String conversationId = configuration.get("FOUNDRY_VOICE_CONVERSATION_ID"); + BetaAgentEndpointConversationsClient conversations = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .buildBetaAgentEndpointConversationsClient(); + + VoiceRecordingResponse recording = conversations.getAgentConversationAudio(agentName, conversationId); + System.out.printf("Recording: format=%s, rate=%d, channels=%d, duration=%s%n", + recording.getFormat(), recording.getSampleRate(), recording.getChannels(), recording.getDurationMs()); + if (recording.getBlobUri() != null) { + System.out.println("Recording is stored in customer storage: " + recording.getBlobUri()); + } else { + Path output = Files.createTempFile(conversationId + "-", ".wav"); + Files.write(output, conversations.getAgentConversationAudioContent(agentName, conversationId).toBytes()); + System.out.println("Wrote merged recording: " + output); + } + + for (BinaryData itemData : conversations.listAgentConversationItems(agentName, conversationId, + new RequestOptions())) { + @SuppressWarnings("unchecked") + Map item = itemData.toObject(Map.class); + String itemId = (String) item.get("id"); + if (itemId == null) { + continue; + } + try { + VoiceItemAudioResponse metadata = conversations.getAgentConversationItemAudio( + agentName, conversationId, itemId); + if (metadata.getBlobUri() != null) { + System.out.println("Item audio is stored in customer storage: " + metadata.getBlobUri()); + } else { + Path output = Files.createTempFile(conversationId + "-" + itemId + "-", ".wav"); + Files.write(output, conversations.getAgentConversationItemAudioContent( + agentName, conversationId, itemId).toBytes()); + System.out.println("Wrote item audio: " + output); + } + break; + } catch (ResourceNotFoundException ignored) { + // This transcript item has no persisted audio. + } + } + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentReadConversationSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentReadConversationSample.java new file mode 100644 index 0000000000000..d63e6f4438520 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentReadConversationSample.java @@ -0,0 +1,67 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.voice; + +import com.azure.ai.agents.BetaAgentEndpointConversationsClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.models.RealtimeConversationItem; +import com.azure.ai.agents.models.VoiceConversation; +import com.azure.ai.agents.models.VoiceResponse; +import com.azure.core.http.rest.RequestOptions; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; + +import java.util.Map; + +/** + * Demonstrates reading a persisted voice conversation, its responses, and transcript items. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • {@code FOUNDRY_PROJECT_ENDPOINT} - The Azure AI Project endpoint.
  • + *
  • {@code FOUNDRY_VOICE_AGENT_NAME} - The voice agent name.
  • + *
  • {@code FOUNDRY_VOICE_CONVERSATION_ID} - The persisted voice conversation ID.
  • + *
+ */ +public class VoiceAgentReadConversationSample { + public static void main(String[] args) { + Configuration configuration = Configuration.getGlobalConfiguration(); + String endpoint = configuration.get("FOUNDRY_PROJECT_ENDPOINT"); + String agentName = configuration.get("FOUNDRY_VOICE_AGENT_NAME"); + String conversationId = configuration.get("FOUNDRY_VOICE_CONVERSATION_ID"); + BetaAgentEndpointConversationsClient conversations = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .buildBetaAgentEndpointConversationsClient(); + + VoiceConversation conversation = conversations.getAgentConversation(agentName, conversationId); + System.out.printf("Conversation %s: status=%s, created=%s, usage=%s%n", + conversation.getId(), conversation.getStatus(), conversation.getCreatedAt(), conversation.getUsage()); + + for (VoiceResponse response : conversations.listAgentConversationResponses(agentName, conversationId)) { + VoiceResponse detail = conversations.getAgentConversationResponse(agentName, conversationId, + response.getId()); + System.out.printf("Response %s: status=%s, usage=%s%n", + detail.getId(), detail.getStatus(), detail.getUsage()); + for (RealtimeConversationItem item : conversations.listAgentConversationResponseItems( + agentName, conversationId, response.getId())) { + System.out.println(" Response item type: " + item.getType()); + } + } + + for (BinaryData itemData : conversations.listAgentConversationItems(agentName, conversationId, + new RequestOptions())) { + @SuppressWarnings("unchecked") + Map item = itemData.toObject(Map.class); + String itemId = (String) item.get("id"); + System.out.printf("Transcript item: type=%s, id=%s%n", item.get("type"), itemId); + if (itemId != null) { + RealtimeConversationItem fetched = conversations.getAgentConversationItem(agentName, + conversationId, itemId); + System.out.println(" Fetched item type: " + fetched.getType()); + } + } + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentSampleUtils.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentSampleUtils.java new file mode 100644 index 0000000000000..5f7a8da6ddf82 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentSampleUtils.java @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.voice; + +import com.azure.ai.agents.models.VoiceAgentAudioConfig; +import com.azure.ai.agents.models.VoiceAgentAudioOutputConfig; +import com.azure.ai.agents.models.VoiceAgentDefinition; +import com.azure.ai.agents.models.VoiceModelType; +import com.azure.ai.agents.models.VoiceOutputModality; +import com.azure.ai.agents.models.VoiceType; + +import java.util.Collections; + +final class VoiceAgentSampleUtils { + private VoiceAgentSampleUtils() { + } + + static VoiceAgentDefinition createDefinition(VoiceModelType modelType, String model, String instructions) { + VoiceAgentAudioOutputConfig output = new VoiceAgentAudioOutputConfig() + .setVoice("en-US-AvaNeural") + .setVoiceType(VoiceType.AZURE_STANDARD); + return new VoiceAgentDefinition() + .setModelType(modelType) + .setModel(model) + .setInstructions(instructions) + .setAudio(new VoiceAgentAudioConfig().setOutput(output)) + .setOutputModalities(Collections.singletonList(VoiceOutputModality.AUDIO)) + .setStore(true); + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentVersionsSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentVersionsSample.java new file mode 100644 index 0000000000000..a7b7c2d381f4c --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentVersionsSample.java @@ -0,0 +1,69 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.voice; + +import com.azure.ai.agents.AgentsClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import com.azure.ai.agents.models.AgentVersionDetails; +import com.azure.ai.agents.models.CreateAgentVersionInput; +import com.azure.ai.agents.models.VoiceModelType; + +/** + * Demonstrates released and draft voice-agent versions. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • {@code FOUNDRY_PROJECT_ENDPOINT} - The Azure AI Project endpoint.
  • + *
  • {@code FOUNDRY_VOICE_MODEL} - Optional. The voice model or deployment name. Defaults to {@code gpt-realtime}.
  • + *
  • {@code FOUNDRY_VOICE_MODEL_TYPE} - Optional. The voice model type. Defaults to {@code managed}.
  • + *
  • {@code FOUNDRY_VOICE_AGENT_NAME} - The voice agent name. Defaults to {@code versioned-voice-agent-java}.
  • + *
+ */ +public class VoiceAgentVersionsSample { + public static void main(String[] args) { + Configuration configuration = Configuration.getGlobalConfiguration(); + String endpoint = configuration.get("FOUNDRY_PROJECT_ENDPOINT"); + String model = configuration.get("FOUNDRY_VOICE_MODEL", "gpt-realtime"); + VoiceModelType modelType = VoiceModelType.fromString(configuration.get( + "FOUNDRY_VOICE_MODEL_TYPE", VoiceModelType.MANAGED.toString())); + String agentName = configuration.get("FOUNDRY_VOICE_AGENT_NAME", "versioned-voice-agent-java"); + + AgentsClient client = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .allowPreview(true) + .buildAgentsClient(); + try { + AgentVersionDetails first = client.createAgentVersion(agentName, + new CreateAgentVersionInput(VoiceAgentSampleUtils.createDefinition(modelType, model, + "You are a helpful voice assistant."))); + AgentVersionDetails released = client.createAgentVersion(agentName, + new CreateAgentVersionInput(VoiceAgentSampleUtils.createDefinition(modelType, model, + "You are a helpful voice assistant. Greet the caller by name.")) + .setDescription("Added a personalized greeting.")); + AgentVersionDetails draft = client.createAgentVersion(agentName, + new CreateAgentVersionInput(VoiceAgentSampleUtils.createDefinition(modelType, model, + "You are an experimental voice assistant.")) + .setDescription("Candidate persona under review.") + .setDraft(true)); + System.out.printf("Created versions %s, %s and draft %s%n", + first.getVersion(), released.getVersion(), draft.getVersion()); + + System.out.println("Released versions:"); + for (AgentVersionDetails version : client.listAgentVersions(agentName)) { + System.out.printf(" %s (draft=%s)%n", version.getVersion(), version.isDraft()); + } + System.out.println("All versions including drafts:"); + for (AgentVersionDetails version : client.listAgentVersions(agentName, null, null, null, null, true)) { + System.out.printf(" %s (draft=%s)%n", version.getVersion(), version.isDraft()); + } + AgentVersionDetails fetched = client.getAgentVersionDetails(agentName, released.getVersion()); + System.out.println("Fetched version: " + fetched.getVersion()); + } finally { + client.deleteAgent(agentName); + } + } +} diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentWithToolsSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentWithToolsSample.java new file mode 100644 index 0000000000000..0c0dc693ea14e --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentWithToolsSample.java @@ -0,0 +1,111 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.voice; + +import com.azure.ai.agents.AgentsClient; +import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.core.util.BinaryData; +import com.azure.core.util.Configuration; +import com.azure.identity.DefaultAzureCredentialBuilder; +import com.azure.ai.agents.models.AgentVersionDetails; +import com.azure.ai.agents.models.CreateAgentVersionInput; +import com.azure.ai.agents.models.RealtimeAudioFormatsAudioPcm; +import com.azure.ai.agents.models.RealtimeAudioFormatsAudioPcmRate; +import com.azure.ai.agents.models.VoiceAgentAudioConfig; +import com.azure.ai.agents.models.VoiceAgentAudioInputConfig; +import com.azure.ai.agents.models.VoiceAgentAudioOutputConfig; +import com.azure.ai.agents.models.VoiceAgentDefinition; +import com.azure.ai.agents.models.VoiceAgentFunctionTool; +import com.azure.ai.agents.models.VoiceAgentInputTranscription; +import com.azure.ai.agents.models.VoiceAgentInputTranscriptionModel; +import com.azure.ai.agents.models.VoiceAgentServerVadTurnDetection; +import com.azure.ai.agents.models.VoiceAgentEndConversationSystemTool; +import com.azure.ai.agents.models.VoiceAgentTool; +import com.azure.ai.agents.models.VoiceOutputModality; +import com.azure.ai.agents.models.VoiceType; +import com.azure.ai.agents.models.VoiceModelType; + +import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * Demonstrates a voice-agent definition with audio processing, transcription, and tools. + * + *

Before running the sample, set these environment variables:

+ *
    + *
  • {@code FOUNDRY_PROJECT_ENDPOINT} - The Azure AI Project endpoint.
  • + *
  • {@code FOUNDRY_VOICE_MODEL} - Optional. The voice model or deployment name. Defaults to {@code gpt-realtime}.
  • + *
  • {@code FOUNDRY_VOICE_MODEL_TYPE} - Optional. The voice model type. Defaults to {@code managed}.
  • + *
  • {@code FOUNDRY_VOICE_AGENT_NAME} - The voice agent name. Defaults to {@code voice-agent-with-tools-java}.
  • + *
+ */ +public class VoiceAgentWithToolsSample { + public static void main(String[] args) { + Configuration configuration = Configuration.getGlobalConfiguration(); + String endpoint = configuration.get("FOUNDRY_PROJECT_ENDPOINT"); + String model = configuration.get("FOUNDRY_VOICE_MODEL", "gpt-realtime"); + VoiceModelType modelType = VoiceModelType.fromString(configuration.get( + "FOUNDRY_VOICE_MODEL_TYPE", VoiceModelType.MANAGED.toString())); + String agentName = configuration.get("FOUNDRY_VOICE_AGENT_NAME", "voice-agent-with-tools-java"); + + AgentsClient client = new AgentsClientBuilder() + .credential(new DefaultAzureCredentialBuilder().build()) + .endpoint(endpoint) + .allowPreview(true) + .buildAgentsClient(); + + RealtimeAudioFormatsAudioPcm pcm = new RealtimeAudioFormatsAudioPcm() + .setRate(RealtimeAudioFormatsAudioPcmRate.TWO_FOUR_ZERO_ZERO_ZERO); + VoiceAgentAudioInputConfig input = new VoiceAgentAudioInputConfig() + .setFormat(pcm) + .setTurnDetection(new VoiceAgentServerVadTurnDetection() + .setThreshold(0.5) + .setPrefixPaddingMs(300L) + .setSilenceDurationMs(500L)) + .setTranscription(new VoiceAgentInputTranscription(VoiceAgentInputTranscriptionModel.WHISPER_1)); + VoiceAgentAudioOutputConfig output = new VoiceAgentAudioOutputConfig() + .setVoice("en-US-AvaNeural") + .setVoiceType(VoiceType.AZURE_STANDARD); + Map cityProperty = new LinkedHashMap<>(); + cityProperty.put("type", "string"); + cityProperty.put("description", "City name, for example Seattle."); + Map properties = new LinkedHashMap<>(); + properties.put("city", cityProperty); + Map parameters = new LinkedHashMap<>(); + parameters.put("type", "object"); + parameters.put("properties", properties); + parameters.put("required", Collections.singletonList("city")); + VoiceAgentFunctionTool weather = new VoiceAgentFunctionTool("get_weather") + .setDescription("Get the current weather for a city.") + .setParameters(BinaryData.fromObject(parameters)); + VoiceAgentEndConversationSystemTool endCall = new VoiceAgentEndConversationSystemTool(); + VoiceAgentDefinition definition = new VoiceAgentDefinition() + .setModelType(modelType) + .setModel(model) + .setInstructions("Use tools when they help answer the caller.") + .setAudio(new VoiceAgentAudioConfig().setInput(input).setOutput(output)) + .setOutputModalities(Collections.singletonList(VoiceOutputModality.AUDIO)) + .setTools(Arrays.asList(weather, endCall)) + .setStore(true); + + boolean agentCreated = false; + try { + AgentVersionDetails created = client.createAgentVersion(agentName, + new CreateAgentVersionInput(definition)); + agentCreated = true; + AgentVersionDetails fetched = client.getAgentVersionDetails(agentName, created.getVersion()); + VoiceAgentDefinition fetchedDefinition = (VoiceAgentDefinition) fetched.getDefinition(); + System.out.println("Configured voice tools: " + fetchedDefinition.getTools().size()); + for (VoiceAgentTool tool : fetchedDefinition.getTools()) { + System.out.printf(" %s%n", tool.getType()); + } + } finally { + if (agentCreated) { + client.deleteAgent(agentName); + } + } + } +} diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/FoundryFeaturesHeaderVerificationTest.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/FoundryFeaturesHeaderVerificationTest.java index 429a2fe44bc20..331011f11b899 100644 --- a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/FoundryFeaturesHeaderVerificationTest.java +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/FoundryFeaturesHeaderVerificationTest.java @@ -72,17 +72,6 @@ public void betaClientsAddAreaSpecificHeadersByDefault() { builder.beta().buildBetaMemoryStoresClient().getMemoryStoreWithResponse("store", new RequestOptions()); assertEquals(FoundryFeaturesOptInKeys.MEMORY_STORES_V1_PREVIEW.toString(), foundryFeatures(httpClient)); - - builder.buildBetaAgentEndpointConversationsClient() - .getAgentConversationWithResponse("agent", "conversation", new RequestOptions()); - assertEquals(AgentDefinitionOptInKeys.VOICE_AGENTS_V1_PREVIEW.toString(), foundryFeatures(httpClient)); - - StepVerifier - .create(builder.buildBetaAgentEndpointConversationsAsyncClient() - .getAgentConversationWithResponse("agent", "conversation", new RequestOptions())) - .expectNextCount(1) - .verifyComplete(); - assertEquals(AgentDefinitionOptInKeys.VOICE_AGENTS_V1_PREVIEW.toString(), foundryFeatures(httpClient)); } @Test diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresAsyncTests.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresAsyncTests.java index 8006e219183b3..e510a0de0070c 100644 --- a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresAsyncTests.java +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresAsyncTests.java @@ -42,7 +42,7 @@ public class MemoryStoresAsyncTests extends ClientTestBase { public void basicMemoryStoresCrud(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresAsyncClient memoryStoreClient = getMemoryStoresAsyncClient(httpClient, serviceVersion); - String memoryStoreName = "my-memory-store-java"; + String memoryStoreName = "my_memory_store_java"; String initialDescription = "Example memory store for conversations"; String updatedDescription = "Updated description"; @@ -104,7 +104,7 @@ public void basicMemoryStoresCrud(HttpClient httpClient, AgentsServiceVersion se public void basicMemoryStores(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresAsyncClient memoryStoreClient = getMemoryStoresAsyncClient(httpClient, serviceVersion); - String memoryStoreName = "my-memory-store"; + String memoryStoreName = "my_memory_store"; String description = "Example memory store for conversations"; String scope = "user_123"; String userMessageContent = "I prefer dark roast coffee and usually drink it in the morning"; @@ -164,7 +164,7 @@ public void basicMemoryStores(HttpClient httpClient, AgentsServiceVersion servic public void advancedMemoryStores(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresAsyncClient memoryStoreClient = getMemoryStoresAsyncClient(httpClient, serviceVersion); - String memoryStoreName = "my-memory-store"; + String memoryStoreName = "my_memory_store"; String description = "Example memory store for conversations"; String scope = "user_123"; String firstMessageContent = "I prefer dark roast coffee and usually drink it in the morning"; diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresTests.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresTests.java index b64f8b94d97f2..53b53cb2f62b3 100644 --- a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresTests.java +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresTests.java @@ -33,7 +33,7 @@ public class MemoryStoresTests extends ClientTestBase { public void basicMemoryStoresCrud(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresClient memoryStoreClient = getMemoryStoresSyncClient(httpClient, serviceVersion); - String memoryStoreName = "my-memory-store-java"; + String memoryStoreName = "my_memory_store_java"; String initialDescription = "Example memory store for conversations"; String updatedDescription = "Updated description"; @@ -92,7 +92,7 @@ public void basicMemoryStoresCrud(HttpClient httpClient, AgentsServiceVersion se public void basicMemoryStores(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresClient memoryStoreClient = getMemoryStoresSyncClient(httpClient, serviceVersion); - String memoryStoreName = "my-memory-store"; + String memoryStoreName = "my_memory_store"; String description = "Example memory store for conversations"; String scope = "user_123"; String userMessageContent = "I prefer dark roast coffee and usually drink it in the morning"; @@ -160,7 +160,7 @@ public void basicMemoryStores(HttpClient httpClient, AgentsServiceVersion servic public void advancedMemoryStores(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresClient memoryStoreClient = getMemoryStoresSyncClient(httpClient, serviceVersion); - String memoryStoreName = "my-memory-store"; + String memoryStoreName = "my_memory_store"; String description = "Example memory store for conversations"; String scope = "user_123"; String firstMessageContent = "I prefer dark roast coffee and usually drink it in the morning"; diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/implementation/AgentsServicePollUtilsTest.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/implementation/AgentsServicePollUtilsTest.java index 8b7be501fbceb..56b1c3fbc0ca9 100644 --- a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/implementation/AgentsServicePollUtilsTest.java +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/implementation/AgentsServicePollUtilsTest.java @@ -24,12 +24,7 @@ static Stream remapStatusCases() { Arguments.of("Completed", LongRunningOperationStatus.SUCCESSFULLY_COMPLETED), Arguments.of("COMPLETED", LongRunningOperationStatus.SUCCESSFULLY_COMPLETED), Arguments.of("superseded", LongRunningOperationStatus.USER_CANCELLED), - Arguments.of("Superseded", LongRunningOperationStatus.USER_CANCELLED), - Arguments.of("queued", LongRunningOperationStatus.IN_PROGRESS), - Arguments.of("in_progress", LongRunningOperationStatus.IN_PROGRESS), - Arguments.of("succeeded", LongRunningOperationStatus.SUCCESSFULLY_COMPLETED), - Arguments.of("failed", LongRunningOperationStatus.FAILED), - Arguments.of("cancelled", LongRunningOperationStatus.USER_CANCELLED)); + Arguments.of("Superseded", LongRunningOperationStatus.USER_CANCELLED)); } @ParameterizedTest diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/models/VoiceAgentDefinitionSerializationTests.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/models/VoiceAgentDefinitionSerializationTests.java new file mode 100644 index 0000000000000..d7c1103f78d51 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/models/VoiceAgentDefinitionSerializationTests.java @@ -0,0 +1,104 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.ai.agents.models; + +import com.azure.core.util.BinaryData; +import com.azure.json.JsonProviders; +import com.azure.json.JsonReader; +import com.azure.json.JsonWriter; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Arrays; +import java.util.Collections; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class VoiceAgentDefinitionSerializationTests { + + @Test + public void fullVoiceDefinitionRoundTrips() throws IOException { + RealtimeAudioFormatsAudioPcm pcm + = new RealtimeAudioFormatsAudioPcm().setRate(RealtimeAudioFormatsAudioPcmRate.TWO_FOUR_ZERO_ZERO_ZERO); + VoiceAgentAudioInputConfig input = new VoiceAgentAudioInputConfig().setFormat(pcm) + .setTurnDetection(new VoiceAgentServerVadTurnDetection().setThreshold(0.5) + .setPrefixPaddingMs(300L) + .setSilenceDurationMs(500L)) + .setTranscription(new VoiceAgentInputTranscription(VoiceAgentInputTranscriptionModel.WHISPER_1)); + VoiceAgentAudioOutputConfig output = new VoiceAgentAudioOutputConfig().setFormat(pcm) + .setVoice("en-US-AvaNeural") + .setVoiceType(VoiceType.AZURE_STANDARD); + VoiceAgentFunctionTool functionTool + = new VoiceAgentFunctionTool("get_weather").setDescription("Get weather for a city.") + .setParameters(BinaryData.fromString("{}")); + VoiceAgentSystemTool systemTool = new VoiceAgentEndConversationSystemTool(); + + VoiceAgentDefinition original = new VoiceAgentDefinition().setModelType(VoiceModelType.MANAGED) + .setModel("gpt-realtime") + .setInstructions("Keep replies short and natural.") + .setAudio(new VoiceAgentAudioConfig().setInput(input).setOutput(output)) + .setOutputModalities(Collections.singletonList(VoiceOutputModality.AUDIO)) + .setTools(Arrays.asList(functionTool, systemTool)) + .setStore(true); + + String json = serialize(original); + assertTrue(json.contains("\"kind\":\"voice\"")); + assertTrue(json.contains("\"model_type\":\"managed\"")); + assertTrue(json.contains("\"model\":\"gpt-realtime\"")); + assertTrue(json.contains("\"voice\":\"en-US-AvaNeural\"")); + assertTrue(json.contains("\"voice_type\":\"azure-standard\"")); + assertTrue(json.contains("\"rate\":24000")); + assertTrue(json.contains("\"type\":\"server_vad\"")); + assertTrue(json.contains("\"model\":\"whisper-1\"")); + assertTrue(json.contains("\"output_modalities\":[\"audio\"]")); + assertTrue(json.contains("\"store\":true")); + assertTrue(json.contains("\"name\":\"get_weather\"")); + assertTrue(json.contains("\"name\":\"end_conversation\"")); + + AgentDefinition deserialized; + try (JsonReader reader = JsonProviders.createReader(json)) { + deserialized = AgentDefinition.fromJson(reader); + } + assertInstanceOf(VoiceAgentDefinition.class, deserialized); + VoiceAgentDefinition voice = (VoiceAgentDefinition) deserialized; + assertEquals(AgentKind.VOICE, voice.getKind()); + assertEquals(VoiceModelType.MANAGED, voice.getModelType()); + assertEquals("gpt-realtime", voice.getModel()); + assertEquals(Boolean.TRUE, voice.isStore()); + assertEquals(VoiceOutputModality.AUDIO, voice.getOutputModalities().get(0)); + assertEquals(2, voice.getTools().size()); + assertInstanceOf(VoiceAgentFunctionTool.class, voice.getTools().get(0)); + assertInstanceOf(VoiceAgentSystemTool.class, voice.getTools().get(1)); + assertNotNull(voice.getAudio().getInput().getTurnDetection()); + } + + @Test + public void selfDeployedVoiceDefinitionRoundTrips() throws IOException { + VoiceAgentDefinition original = new VoiceAgentDefinition().setModelType(VoiceModelType.SELF_DEPLOYED) + .setModel("customer-realtime-deployment") + .setInstructions("Use the customer deployment."); + + String json = serialize(original); + VoiceAgentDefinition deserialized; + try (JsonReader reader = JsonProviders.createReader(json)) { + deserialized = VoiceAgentDefinition.fromJson(reader); + } + + assertEquals(VoiceModelType.SELF_DEPLOYED, deserialized.getModelType()); + assertEquals("customer-realtime-deployment", deserialized.getModel()); + assertEquals("Use the customer deployment.", deserialized.getInstructions()); + } + + private static String serialize(VoiceAgentDefinition definition) throws IOException { + ByteArrayOutputStream output = new ByteArrayOutputStream(); + try (JsonWriter writer = JsonProviders.createWriter(output)) { + definition.toJson(writer); + } + return output.toString("UTF-8"); + } +} diff --git a/sdk/ai/azure-ai-projects/CHANGELOG.md b/sdk/ai/azure-ai-projects/CHANGELOG.md index 90db0a049b367..ec11979caef3b 100644 --- a/sdk/ai/azure-ai-projects/CHANGELOG.md +++ b/sdk/ai/azure-ai-projects/CHANGELOG.md @@ -24,6 +24,10 @@ ### Breaking Changes - `BetaRoutinesClient.createOrUpdateRoutine(String, String, Boolean, Map, RoutineAction)` and its `BetaRoutinesAsyncClient` counterpart now require an additional trailing `RoutineAuthorization authorization` parameter. Pass `null` to retain the previous agent-identity dispatch behavior. +- Replaced `Target` with `FoundryEvaluationTarget`. `AzureAIAgentTarget` and `AzureAIModelTarget` now inherit from `FoundryEvaluationTarget`; update imports and declarations that use `Target`. +- `AgentTaxonomyInput` now accepts `FoundryEvaluationTarget` instead of `Target` in its constructor, and `getTarget()` returns `FoundryEvaluationTarget`. + +### Bugs Fixed - Regenerated client from the updated TypeSpec specification. diff --git a/sdk/ai/azure-ai-projects/customizations/src/main/java/ProjectsCustomizations.java b/sdk/ai/azure-ai-projects/customizations/src/main/java/ProjectsCustomizations.java index 45e265388ee6b..21ad1cb09fcc5 100644 --- a/sdk/ai/azure-ai-projects/customizations/src/main/java/ProjectsCustomizations.java +++ b/sdk/ai/azure-ai-projects/customizations/src/main/java/ProjectsCustomizations.java @@ -1,10 +1,13 @@ import com.azure.autorest.customization.ClassCustomization; import com.azure.autorest.customization.Customization; import com.azure.autorest.customization.LibraryCustomization; +import com.github.javaparser.StaticJavaParser; +import com.github.javaparser.ast.Modifier; import com.github.javaparser.ast.body.FieldDeclaration; import com.github.javaparser.ast.body.MethodDeclaration; import com.github.javaparser.ast.body.TypeDeclaration; import com.github.javaparser.ast.expr.AnnotationExpr; +import com.github.javaparser.ast.expr.MethodCallExpr; import com.github.javaparser.ast.expr.NormalAnnotationExpr; import com.github.javaparser.ast.expr.StringLiteralExpr; import java.io.IOException; @@ -25,11 +28,92 @@ public class ProjectsCustomizations extends Customization { @Override public void customize(LibraryCustomization libraryCustomization, Logger logger) { + preserveRoutineCompatibilityOverloads(libraryCustomization, logger); + renameCreateSkillVersionFromFilesHelpers(libraryCustomization, logger); annotateBetaClients(libraryCustomization, logger); annotateBetaFields(libraryCustomization, loadBetaAnnotations(logger), logger); } - private void annotateBetaClients(LibraryCustomization customization, Logger logger) { + private void preserveRoutineCompatibilityOverloads(LibraryCustomization customization, Logger logger) { + addRoutineCompatibilityOverload(customization, "BetaRoutinesClient", "Routine", false, logger); + addRoutineCompatibilityOverload(customization, "BetaRoutinesAsyncClient", "Mono", true, logger); + } + + private void addRoutineCompatibilityOverload(LibraryCustomization customization, String className, + String returnType, boolean isAsync, Logger logger) { + customization.getClass("com.azure.ai.projects", className).customizeAst(ast -> { + ast.addImport("com.azure.ai.projects.models.Routine"); + ast.addImport("com.azure.ai.projects.models.RoutineAction"); + ast.addImport("com.azure.ai.projects.models.RoutineTrigger"); + ast.addImport("com.azure.core.annotation.ServiceMethod"); + ast.addImport("java.util.Map"); + if (isAsync) { + ast.addImport("reactor.core.publisher.Mono"); + } + + ast.getClassByName(className).ifPresent(clazz -> { + if (hasRoutineCompatibilityOverload(clazz)) { + return; + } + + logger.info("Adding Revapi compatibility overload to {}", className); + clazz.addMethod("createOrUpdateRoutine", Modifier.Keyword.PUBLIC) + .setType(returnType) + .addParameter("String", "routineName") + .addParameter("String", "description") + .addParameter("Boolean", "enabled") + .addParameter("Map", "triggers") + .addParameter("RoutineAction", "action") + .addAnnotation(StaticJavaParser.parseAnnotation( + "@ServiceMethod(returns = com.azure.core.annotation.ReturnType.SINGLE)")) + .setJavadocComment("Creates a new routine or replaces an existing routine without authorization.\n" + + "\n" + + "@param routineName The unique name of the routine.\n" + + "@param description The routine description.\n" + + "@param enabled Whether the routine is enabled.\n" + + "@param triggers The triggers that invoke the routine.\n" + + "@param action The action performed by the routine.\n" + + "@return The created or updated routine.") + .setBody(StaticJavaParser.parseBlock("{ return createOrUpdateRoutine(routineName, description, " + + "enabled, triggers, action, null); }")); + }); + }); + } + + private boolean hasRoutineCompatibilityOverload(TypeDeclaration type) { + return type.getMethodsByName("createOrUpdateRoutine").stream().anyMatch(method -> + method.getParameters().size() == 5 + && "String".equals(method.getParameter(0).getType().asString()) + && "String".equals(method.getParameter(1).getType().asString()) + && "Boolean".equals(method.getParameter(2).getType().asString()) + && "Map".equals(method.getParameter(3).getType().asString()) + && "RoutineAction".equals(method.getParameter(4).getType().asString())); + } + + private void renameCreateSkillVersionFromFilesHelpers(LibraryCustomization customization, Logger logger) { + String oldName = "createSkillVersionFromFilesWithResponseInternal"; + String newName = "createSkillVersionFromFilesInternalWithResponse"; + for (String className : new String[] { "BetaSkillsClient", "BetaSkillsAsyncClient" }) { + customization.getClass("com.azure.ai.projects", className).customizeAst(ast -> { + TypeDeclaration type = ast.getClassByName(className) + .orElseThrow(() -> new IllegalStateException("Could not find class " + className + ".")); + MethodDeclaration helper = type.getMethodsByName(oldName) + .stream() + .filter(method -> !method.isPublic() && !method.isProtected() && !method.isPrivate()) + .findFirst() + .orElseThrow(() -> new IllegalStateException( + "Could not find package-private method '" + oldName + "' on " + className + ".")); + + logger.info("Renaming {}#{} to {}", className, oldName, newName); + helper.setName(newName); + type.findAll(MethodCallExpr.class).stream() + .filter(call -> !call.getScope().isPresent() && call.getNameAsString().equals(oldName)) + .forEach(call -> call.setName(newName)); + }); + } + } + + private void annotateBetaClients(LibraryCustomization customization, Logger logger) { customization.getPackage("com.azure.ai.projects") .listClasses() .stream() diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaSkillsAsyncClient.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaSkillsAsyncClient.java index 8d12c2206e141..6773c8e3fd1da 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaSkillsAsyncClient.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaSkillsAsyncClient.java @@ -705,7 +705,7 @@ public Mono createSkillVersion(String name) { public Mono createSkillVersionFromFiles(String name, CreateSkillVersionFromFilesBody content) { // Generated convenience method for createSkillVersionFromFilesWithResponseInternal RequestOptions requestOptions = new RequestOptions(); - return createSkillVersionFromFilesWithResponseInternal(name, + return createSkillVersionFromFilesInternalWithResponse(name, new MultipartFormDataHelper(requestOptions) .serializeFileFields("files", content.getFiles().stream().map(SkillFileDetails::getContent).collect(Collectors.toList()), @@ -908,7 +908,7 @@ public Mono getSkillVersionContent(String name, String version) { */ @Generated @ServiceMethod(returns = ReturnType.SINGLE) - Mono> createSkillVersionFromFilesWithResponseInternal(String name, BinaryData content, + Mono> createSkillVersionFromFilesInternalWithResponse(String name, BinaryData content, RequestOptions requestOptions) { // Operation 'createSkillVersionFromFiles' is of content-type 'multipart/form-data'. Protocol API is not usable // and hence not generated. diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaSkillsClient.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaSkillsClient.java index f722c8a91713f..00865e0a634db 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaSkillsClient.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaSkillsClient.java @@ -674,7 +674,7 @@ public SkillVersion createSkillVersion(String name) { public SkillVersion createSkillVersionFromFiles(String name, CreateSkillVersionFromFilesBody content) { // Generated convenience method for createSkillVersionFromFilesWithResponseInternal RequestOptions requestOptions = new RequestOptions(); - return createSkillVersionFromFilesWithResponseInternal(name, + return createSkillVersionFromFilesInternalWithResponse(name, new MultipartFormDataHelper(requestOptions) .serializeFileFields("files", content.getFiles().stream().map(SkillFileDetails::getContent).collect(Collectors.toList()), @@ -853,7 +853,7 @@ public BinaryData getSkillVersionContent(String name, String version) { */ @Generated @ServiceMethod(returns = ReturnType.SINGLE) - Response createSkillVersionFromFilesWithResponseInternal(String name, BinaryData content, + Response createSkillVersionFromFilesInternalWithResponse(String name, BinaryData content, RequestOptions requestOptions) { // Operation 'createSkillVersionFromFiles' is of content-type 'multipart/form-data'. Protocol API is not usable // and hence not generated. diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AgentTaxonomyInput.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AgentTaxonomyInput.java index 91a761ecb6ef2..81da6c6fc6e5d 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AgentTaxonomyInput.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AgentTaxonomyInput.java @@ -29,7 +29,7 @@ public final class AgentTaxonomyInput extends EvaluationTaxonomyInput { * Target configuration for the agent. */ @Generated - private final Target target; + private final FoundryEvaluationTarget target; /* * List of risk categories to evaluate against. @@ -54,7 +54,7 @@ public EvaluationTaxonomyInputType getType() { * @return the target value. */ @Generated - public Target getTarget() { + public FoundryEvaluationTarget getTarget() { return this.target; } @@ -94,14 +94,14 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { @Generated public static AgentTaxonomyInput fromJson(JsonReader jsonReader) throws IOException { return jsonReader.readObject(reader -> { - Target target = null; + FoundryEvaluationTarget target = null; List riskCategories = null; EvaluationTaxonomyInputType type = EvaluationTaxonomyInputType.AGENT; while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); reader.nextToken(); if ("target".equals(fieldName)) { - target = Target.fromJson(reader); + target = FoundryEvaluationTarget.fromJson(reader); } else if ("riskCategories".equals(fieldName)) { riskCategories = reader.readArray(reader1 -> RiskCategory.fromString(reader1.getString())); } else if ("type".equals(fieldName)) { @@ -123,7 +123,7 @@ public static AgentTaxonomyInput fromJson(JsonReader jsonReader) throws IOExcept * @param riskCategories the riskCategories value to set. */ @Generated - public AgentTaxonomyInput(Target target, List riskCategories) { + public AgentTaxonomyInput(FoundryEvaluationTarget target, List riskCategories) { this.target = target; this.riskCategories = riskCategories; } diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AzureAIAgentTarget.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AzureAIAgentTarget.java index 8dc78d28352ae..afcaeac29eff6 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AzureAIAgentTarget.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AzureAIAgentTarget.java @@ -17,7 +17,7 @@ * Represents a target specifying an Azure AI agent. */ @Fluent -public final class AzureAIAgentTarget extends Target { +public final class AzureAIAgentTarget extends FoundryEvaluationTarget { /* * The type of target. diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AzureAIModelTarget.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AzureAIModelTarget.java index bf79835bdc491..0b2a96b28143b 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AzureAIModelTarget.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AzureAIModelTarget.java @@ -14,7 +14,7 @@ * Represents a target specifying an Azure AI model for operations requiring model selection. */ @Fluent -public final class AzureAIModelTarget extends Target { +public final class AzureAIModelTarget extends FoundryEvaluationTarget { /* * The type of target. diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/Target.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/FoundryEvaluationTarget.java similarity index 75% rename from sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/Target.java rename to sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/FoundryEvaluationTarget.java index 4cefc8b8bbe8b..d210d9a991838 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/Target.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/FoundryEvaluationTarget.java @@ -15,19 +15,19 @@ * Base class for targets with discriminator support. */ @Immutable -public class Target implements JsonSerializable { +public class FoundryEvaluationTarget implements JsonSerializable { /* * The type of target. */ @Generated - private String type = "Target"; + private String type = "FoundryEvaluationTarget"; /** - * Creates an instance of Target class. + * Creates an instance of FoundryEvaluationTarget class. */ @Generated - public Target() { + public FoundryEvaluationTarget() { } /** @@ -52,15 +52,15 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { } /** - * Reads an instance of Target from the JsonReader. + * Reads an instance of FoundryEvaluationTarget from the JsonReader. * * @param jsonReader The JsonReader being read. - * @return An instance of Target if the JsonReader was pointing to an instance of it, or null if it was pointing to - * JSON null. - * @throws IOException If an error occurs while reading the Target. + * @return An instance of FoundryEvaluationTarget if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the FoundryEvaluationTarget. */ @Generated - public static Target fromJson(JsonReader jsonReader) throws IOException { + public static FoundryEvaluationTarget fromJson(JsonReader jsonReader) throws IOException { return jsonReader.readObject(reader -> { String discriminatorValue = null; try (JsonReader readerToUse = reader.bufferObject()) { @@ -89,19 +89,19 @@ public static Target fromJson(JsonReader jsonReader) throws IOException { } @Generated - static Target fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + static FoundryEvaluationTarget fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { return jsonReader.readObject(reader -> { - Target deserializedTarget = new Target(); + FoundryEvaluationTarget deserializedFoundryEvaluationTarget = new FoundryEvaluationTarget(); while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); reader.nextToken(); if ("type".equals(fieldName)) { - deserializedTarget.type = reader.getString(); + deserializedFoundryEvaluationTarget.type = reader.getString(); } else { reader.skipChildren(); } } - return deserializedTarget; + return deserializedFoundryEvaluationTarget; }); } } diff --git a/sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_metadata.json b/sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_metadata.json index c2b3139aac305..aed9bc66185fc 100644 --- a/sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_metadata.json +++ b/sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_metadata.json @@ -1 +1 @@ -{"flavor":"azure","apiVersions":{"Azure.AI.Projects":"v1"},"crossLanguagePackageId":"Azure.AI.Projects","crossLanguageVersion":"eda2c016ab74","crossLanguageDefinitions":{"com.azure.ai.projects.AIProjectClientBuilder":"Azure.AI.Projects","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient":"Azure.AI.Projects.Beta.AgentInsightMonitors","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.beginCreateAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.beginCreateAgentInsightRunWithModel":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.cancelAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.cancelAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.createAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.createAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.deleteAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.deleteAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsightMonitors":"Azure.AI.Projects.AgentInsightMonitors.list","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsightRuns":"Azure.AI.Projects.AgentInsightMonitors.listRuns","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsights":"Azure.AI.Projects.AgentInsightMonitors.listInsights","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.resetAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.resetAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient":"Azure.AI.Projects.Beta.AgentInsightMonitors","com.azure.ai.projects.BetaAgentInsightMonitorsClient.beginCreateAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.beginCreateAgentInsightRunWithModel":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.cancelAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.cancelAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.createAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsClient.createAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsClient.deleteAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsClient.deleteAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsightMonitors":"Azure.AI.Projects.AgentInsightMonitors.list","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsightRuns":"Azure.AI.Projects.AgentInsightMonitors.listRuns","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsights":"Azure.AI.Projects.AgentInsightMonitors.listInsights","com.azure.ai.projects.BetaAgentInsightMonitorsClient.resetAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsClient.resetAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaDatasetsAsyncClient":"Azure.AI.Projects.Beta.Datasets","com.azure.ai.projects.BetaDatasetsAsyncClient.beginCreateGenerationJob":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsAsyncClient.beginCreateGenerationJobWithModel":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsAsyncClient.cancelGenerationJob":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsAsyncClient.cancelGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsAsyncClient.deleteGenerationJob":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsAsyncClient.deleteGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsAsyncClient.getGenerationJob":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsAsyncClient.getGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsAsyncClient.listGenerationJobs":"Azure.AI.Projects.DataGenerationJobs.list","com.azure.ai.projects.BetaDatasetsClient":"Azure.AI.Projects.Beta.Datasets","com.azure.ai.projects.BetaDatasetsClient.beginCreateGenerationJob":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsClient.beginCreateGenerationJobWithModel":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsClient.cancelGenerationJob":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsClient.cancelGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsClient.deleteGenerationJob":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsClient.deleteGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsClient.getGenerationJob":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsClient.getGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsClient.listGenerationJobs":"Azure.AI.Projects.DataGenerationJobs.list","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient":"Azure.AI.Projects.Beta.EvaluationTaxonomies","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.createEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.createEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.deleteEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.deleteEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.getEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.getEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.listEvaluationTaxonomies":"Azure.AI.Projects.EvaluationTaxonomies.list","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.updateEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.updateEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesClient":"Azure.AI.Projects.Beta.EvaluationTaxonomies","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.createEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.createEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.deleteEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.deleteEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.getEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.getEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.listEvaluationTaxonomies":"Azure.AI.Projects.EvaluationTaxonomies.list","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.updateEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.updateEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluatorsAsyncClient":"Azure.AI.Projects.Beta.Evaluators","com.azure.ai.projects.BetaEvaluatorsAsyncClient.beginCreateEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsAsyncClient.beginCreateEvaluatorGenerationJobWithModel":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsAsyncClient.cancelEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsAsyncClient.cancelEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsAsyncClient.createEvaluatorVersion":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.createEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorVersion":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getCredentials":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getCredentialsWithResponse":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorVersion":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listEvaluatorGenerationJobs":"Azure.AI.Projects.EvaluatorGenerationJobs.list","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listEvaluatorVersions":"Azure.AI.Projects.Evaluators.listVersions","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listLatestEvaluatorVersions":"Azure.AI.Projects.Evaluators.listLatestVersions","com.azure.ai.projects.BetaEvaluatorsAsyncClient.startPendingUpload":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsAsyncClient.startPendingUploadWithResponse":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsAsyncClient.updateEvaluatorVersion":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.updateEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsClient":"Azure.AI.Projects.Beta.Evaluators","com.azure.ai.projects.BetaEvaluatorsClient.beginCreateEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsClient.beginCreateEvaluatorGenerationJobWithModel":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsClient.cancelEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsClient.cancelEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsClient.createEvaluatorVersion":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsClient.createEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorVersion":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsClient.getCredentials":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsClient.getCredentialsWithResponse":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorVersion":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsClient.listEvaluatorGenerationJobs":"Azure.AI.Projects.EvaluatorGenerationJobs.list","com.azure.ai.projects.BetaEvaluatorsClient.listEvaluatorVersions":"Azure.AI.Projects.Evaluators.listVersions","com.azure.ai.projects.BetaEvaluatorsClient.listLatestEvaluatorVersions":"Azure.AI.Projects.Evaluators.listLatestVersions","com.azure.ai.projects.BetaEvaluatorsClient.startPendingUpload":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsClient.startPendingUploadWithResponse":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsClient.updateEvaluatorVersion":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsClient.updateEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaInsightsAsyncClient":"Azure.AI.Projects.Beta.Insights","com.azure.ai.projects.BetaInsightsAsyncClient.generateInsight":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsAsyncClient.generateInsightWithResponse":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsAsyncClient.getInsight":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsAsyncClient.getInsightWithResponse":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsAsyncClient.listInsights":"Azure.AI.Projects.Insights.list","com.azure.ai.projects.BetaInsightsClient":"Azure.AI.Projects.Beta.Insights","com.azure.ai.projects.BetaInsightsClient.generateInsight":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsClient.generateInsightWithResponse":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsClient.getInsight":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsClient.getInsightWithResponse":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsClient.listInsights":"Azure.AI.Projects.Insights.list","com.azure.ai.projects.BetaModelsAsyncClient":"Azure.AI.Projects.Beta.Models","com.azure.ai.projects.BetaModelsAsyncClient.createModelVersionAsyncWithResponse":"Azure.AI.Projects.Models.createAsync","com.azure.ai.projects.BetaModelsAsyncClient.deleteModelVersion":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsAsyncClient.deleteModelVersionWithResponse":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsAsyncClient.getModelCredentials":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsAsyncClient.getModelCredentialsWithResponse":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsAsyncClient.getModelVersion":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsAsyncClient.getModelVersionWithResponse":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsAsyncClient.listLatestModelVersions":"Azure.AI.Projects.Models.listLatest","com.azure.ai.projects.BetaModelsAsyncClient.listModelVersions":"Azure.AI.Projects.Models.listVersions","com.azure.ai.projects.BetaModelsAsyncClient.startModelPendingUpload":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsAsyncClient.startModelPendingUploadWithResponse":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsAsyncClient.updateModelVersion":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsAsyncClient.updateModelVersionWithResponse":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsClient":"Azure.AI.Projects.Beta.Models","com.azure.ai.projects.BetaModelsClient.createModelVersionAsyncWithResponse":"Azure.AI.Projects.Models.createAsync","com.azure.ai.projects.BetaModelsClient.deleteModelVersion":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsClient.deleteModelVersionWithResponse":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsClient.getModelCredentials":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsClient.getModelCredentialsWithResponse":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsClient.getModelVersion":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsClient.getModelVersionWithResponse":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsClient.listLatestModelVersions":"Azure.AI.Projects.Models.listLatest","com.azure.ai.projects.BetaModelsClient.listModelVersions":"Azure.AI.Projects.Models.listVersions","com.azure.ai.projects.BetaModelsClient.startModelPendingUpload":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsClient.startModelPendingUploadWithResponse":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsClient.updateModelVersion":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsClient.updateModelVersionWithResponse":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaRedTeamsAsyncClient":"Azure.AI.Projects.Beta.RedTeams","com.azure.ai.projects.BetaRedTeamsAsyncClient.createRedTeamRun":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsAsyncClient.createRedTeamRunWithResponse":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsAsyncClient.getRedTeam":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsAsyncClient.getRedTeamWithResponse":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsAsyncClient.listRedTeams":"Azure.AI.Projects.RedTeams.list","com.azure.ai.projects.BetaRedTeamsClient":"Azure.AI.Projects.Beta.RedTeams","com.azure.ai.projects.BetaRedTeamsClient.createRedTeamRun":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsClient.createRedTeamRunWithResponse":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsClient.getRedTeam":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsClient.getRedTeamWithResponse":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsClient.listRedTeams":"Azure.AI.Projects.RedTeams.list","com.azure.ai.projects.BetaRoutinesAsyncClient":"Azure.AI.Projects.Beta.Routines","com.azure.ai.projects.BetaRoutinesAsyncClient.createOrUpdateRoutine":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.createOrUpdateRoutineWithResponse":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.deleteRoutine":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.deleteRoutineWithResponse":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.disableRoutine":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.disableRoutineWithResponse":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.dispatchRoutine":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesAsyncClient.dispatchRoutineWithResponse":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesAsyncClient.enableRoutine":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.enableRoutineWithResponse":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.getRoutine":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.getRoutineWithResponse":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.listRoutineRuns":"Azure.AI.Projects.Routines.listRoutineRuns","com.azure.ai.projects.BetaRoutinesAsyncClient.listRoutines":"Azure.AI.Projects.Routines.listRoutines","com.azure.ai.projects.BetaRoutinesClient":"Azure.AI.Projects.Beta.Routines","com.azure.ai.projects.BetaRoutinesClient.createOrUpdateRoutine":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesClient.createOrUpdateRoutineWithResponse":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesClient.deleteRoutine":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesClient.deleteRoutineWithResponse":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesClient.disableRoutine":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesClient.disableRoutineWithResponse":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesClient.dispatchRoutine":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesClient.dispatchRoutineWithResponse":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesClient.enableRoutine":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesClient.enableRoutineWithResponse":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesClient.getRoutine":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesClient.getRoutineWithResponse":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesClient.listRoutineRuns":"Azure.AI.Projects.Routines.listRoutineRuns","com.azure.ai.projects.BetaRoutinesClient.listRoutines":"Azure.AI.Projects.Routines.listRoutines","com.azure.ai.projects.BetaSchedulesAsyncClient":"Azure.AI.Projects.Beta.Schedules","com.azure.ai.projects.BetaSchedulesAsyncClient.createOrUpdateSchedule":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesAsyncClient.createOrUpdateScheduleWithResponse":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesAsyncClient.deleteSchedule":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesAsyncClient.deleteScheduleWithResponse":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesAsyncClient.getSchedule":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleRun":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleRunWithResponse":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleWithResponse":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesAsyncClient.listScheduleRuns":"Azure.AI.Projects.Schedules.listRuns","com.azure.ai.projects.BetaSchedulesAsyncClient.listSchedules":"Azure.AI.Projects.Schedules.list","com.azure.ai.projects.BetaSchedulesClient":"Azure.AI.Projects.Beta.Schedules","com.azure.ai.projects.BetaSchedulesClient.createOrUpdateSchedule":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesClient.createOrUpdateScheduleWithResponse":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesClient.deleteSchedule":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesClient.deleteScheduleWithResponse":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesClient.getSchedule":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesClient.getScheduleRun":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesClient.getScheduleRunWithResponse":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesClient.getScheduleWithResponse":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesClient.listScheduleRuns":"Azure.AI.Projects.Schedules.listRuns","com.azure.ai.projects.BetaSchedulesClient.listSchedules":"Azure.AI.Projects.Schedules.list","com.azure.ai.projects.BetaSkillsAsyncClient":"Azure.AI.Projects.Beta.Skills","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersion":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionFromFiles":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionFromFilesWithResponseInternal":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionWithResponse":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkill":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillContent":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillContentWithResponse":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersion":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionContent":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionContentWithResponse":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionWithResponse":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillWithResponse":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsAsyncClient.listSkillVersions":"Azure.AI.Projects.Skills.listSkillVersions","com.azure.ai.projects.BetaSkillsAsyncClient.listSkills":"Azure.AI.Projects.Skills.listSkills","com.azure.ai.projects.BetaSkillsAsyncClient.updateSkill":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsAsyncClient.updateSkillWithResponse":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsClient":"Azure.AI.Projects.Beta.Skills","com.azure.ai.projects.BetaSkillsClient.createSkillVersion":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsClient.createSkillVersionFromFiles":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsClient.createSkillVersionFromFilesWithResponseInternal":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsClient.createSkillVersionWithResponse":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkill":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsClient.getSkillContent":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsClient.getSkillContentWithResponse":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersion":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkillVersionContent":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersionContentWithResponse":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersionWithResponse":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkillWithResponse":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsClient.listSkillVersions":"Azure.AI.Projects.Skills.listSkillVersions","com.azure.ai.projects.BetaSkillsClient.listSkills":"Azure.AI.Projects.Skills.listSkills","com.azure.ai.projects.BetaSkillsClient.updateSkill":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsClient.updateSkillWithResponse":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.ConnectionsAsyncClient":"Azure.AI.Projects.Connections","com.azure.ai.projects.ConnectionsAsyncClient.getConnection":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithCredentials":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithCredentialsWithResponse":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithResponse":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsAsyncClient.listConnections":"Azure.AI.Projects.Connections.list","com.azure.ai.projects.ConnectionsClient":"Azure.AI.Projects.Connections","com.azure.ai.projects.ConnectionsClient.getConnection":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsClient.getConnectionWithCredentials":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsClient.getConnectionWithCredentialsWithResponse":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsClient.getConnectionWithResponse":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsClient.listConnections":"Azure.AI.Projects.Connections.list","com.azure.ai.projects.DatasetsAsyncClient":"Azure.AI.Projects.Datasets","com.azure.ai.projects.DatasetsAsyncClient.createOrUpdateDatasetVersion":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsAsyncClient.createOrUpdateDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsAsyncClient.deleteDatasetVersion":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsAsyncClient.deleteDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsAsyncClient.getCredentials":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsAsyncClient.getCredentialsWithResponse":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsAsyncClient.getDatasetVersion":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsAsyncClient.getDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsAsyncClient.listDatasetVersions":"Azure.AI.Projects.Datasets.listVersions","com.azure.ai.projects.DatasetsAsyncClient.listLatestDatasetVersions":"Azure.AI.Projects.Datasets.listLatest","com.azure.ai.projects.DatasetsAsyncClient.pendingUpload":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsAsyncClient.pendingUploadWithResponse":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsClient":"Azure.AI.Projects.Datasets","com.azure.ai.projects.DatasetsClient.createOrUpdateDatasetVersion":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsClient.createOrUpdateDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsClient.deleteDatasetVersion":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsClient.deleteDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsClient.getCredentials":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsClient.getCredentialsWithResponse":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsClient.getDatasetVersion":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsClient.getDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsClient.listDatasetVersions":"Azure.AI.Projects.Datasets.listVersions","com.azure.ai.projects.DatasetsClient.listLatestDatasetVersions":"Azure.AI.Projects.Datasets.listLatest","com.azure.ai.projects.DatasetsClient.pendingUpload":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsClient.pendingUploadWithResponse":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DeploymentsAsyncClient":"Azure.AI.Projects.Deployments","com.azure.ai.projects.DeploymentsAsyncClient.getDeployment":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsAsyncClient.getDeploymentWithResponse":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsAsyncClient.listDeployments":"Azure.AI.Projects.Deployments.list","com.azure.ai.projects.DeploymentsClient":"Azure.AI.Projects.Deployments","com.azure.ai.projects.DeploymentsClient.getDeployment":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsClient.getDeploymentWithResponse":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsClient.listDeployments":"Azure.AI.Projects.Deployments.list","com.azure.ai.projects.EvaluationRulesAsyncClient":"Azure.AI.Projects.EvaluationRules","com.azure.ai.projects.EvaluationRulesAsyncClient.createOrUpdateEvaluationRule":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesAsyncClient.createOrUpdateEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesAsyncClient.deleteEvaluationRule":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesAsyncClient.deleteEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesAsyncClient.getEvaluationRule":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesAsyncClient.getEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesAsyncClient.listEvaluationRules":"Azure.AI.Projects.EvaluationRules.list","com.azure.ai.projects.EvaluationRulesClient":"Azure.AI.Projects.EvaluationRules","com.azure.ai.projects.EvaluationRulesClient.createOrUpdateEvaluationRule":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesClient.createOrUpdateEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesClient.deleteEvaluationRule":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesClient.deleteEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesClient.getEvaluationRule":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesClient.getEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesClient.listEvaluationRules":"Azure.AI.Projects.EvaluationRules.list","com.azure.ai.projects.IndexesAsyncClient":"Azure.AI.Projects.Indexes","com.azure.ai.projects.IndexesAsyncClient.createOrUpdateIndexVersion":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesAsyncClient.createOrUpdateIndexVersionWithResponse":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesAsyncClient.deleteIndexVersion":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesAsyncClient.deleteIndexVersionWithResponse":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesAsyncClient.getIndexVersion":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesAsyncClient.getIndexVersionWithResponse":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesAsyncClient.listIndexVersions":"Azure.AI.Projects.Indexes.listVersions","com.azure.ai.projects.IndexesAsyncClient.listLatestIndexVersions":"Azure.AI.Projects.Indexes.listLatest","com.azure.ai.projects.IndexesClient":"Azure.AI.Projects.Indexes","com.azure.ai.projects.IndexesClient.createOrUpdateIndexVersion":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesClient.createOrUpdateIndexVersionWithResponse":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesClient.deleteIndexVersion":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesClient.deleteIndexVersionWithResponse":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesClient.getIndexVersion":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesClient.getIndexVersionWithResponse":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesClient.listIndexVersions":"Azure.AI.Projects.Indexes.listVersions","com.azure.ai.projects.IndexesClient.listLatestIndexVersions":"Azure.AI.Projects.Indexes.listLatest","com.azure.ai.projects.implementation.models.CreateOrUpdateRoutineRequest":"Azure.AI.Projects.createOrUpdateRoutine.Request.anonymous","com.azure.ai.projects.implementation.models.CreateSkillVersionRequest":"Azure.AI.Projects.createSkillVersion.Request.anonymous","com.azure.ai.projects.implementation.models.DispatchRoutineAsyncRequest":"Azure.AI.Projects.dispatchRoutineAsync.Request.anonymous","com.azure.ai.projects.implementation.models.FoundryFeaturesOptInKeys":"Azure.AI.Projects.FoundryFeaturesOptInKeys","com.azure.ai.projects.implementation.models.UpdateSkillRequest":"Azure.AI.Projects.updateSkill.Request.anonymous","com.azure.ai.projects.models.AIProjectIndex":"Azure.AI.Projects.Index","com.azure.ai.projects.models.AgentClusterInsightRequest":"Azure.AI.Projects.AgentClusterInsightRequest","com.azure.ai.projects.models.AgentClusterInsightResult":"Azure.AI.Projects.AgentClusterInsightResult","com.azure.ai.projects.models.AgentDataGenerationJobSource":"Azure.AI.Projects.AgentDataGenerationJobSource","com.azure.ai.projects.models.AgentEvaluatorGenerationJobSource":"Azure.AI.Projects.AgentEvaluatorGenerationJobSource","com.azure.ai.projects.models.AgentInsight":"Azure.AI.Projects.AgentInsight","com.azure.ai.projects.models.AgentInsightDetails":"Azure.AI.Projects.AgentInsightDetails","com.azure.ai.projects.models.AgentInsightEstimatedCost":"Azure.AI.Projects.AgentInsightEstimatedCost","com.azure.ai.projects.models.AgentInsightHighlightedTrace":"Azure.AI.Projects.AgentInsightHighlightedTrace","com.azure.ai.projects.models.AgentInsightLinkedTrace":"Azure.AI.Projects.AgentInsightLinkedTrace","com.azure.ai.projects.models.AgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitor","com.azure.ai.projects.models.AgentInsightMonitorCreate":"Azure.AI.Projects.AgentInsightMonitorCreate","com.azure.ai.projects.models.AgentInsightMonitorListItem":"Azure.AI.Projects.AgentInsightMonitorListItem","com.azure.ai.projects.models.AgentInsightMonitorUpdate":"Azure.AI.Projects.AgentInsightMonitorUpdate","com.azure.ai.projects.models.AgentInsightOverviewSource":"Azure.AI.Projects.AgentInsightOverviewSource","com.azure.ai.projects.models.AgentInsightPromptSurface":"Azure.AI.Projects.AgentInsightPromptSurface","com.azure.ai.projects.models.AgentInsightProposedFix":"Azure.AI.Projects.AgentInsightProposedFix","com.azure.ai.projects.models.AgentInsightProposedFixChange":"Azure.AI.Projects.AgentInsightProposedFixChange","com.azure.ai.projects.models.AgentInsightProposedFixKind":"Azure.AI.Projects.AgentInsightProposedFixKind","com.azure.ai.projects.models.AgentInsightRecommendedAction":"Azure.AI.Projects.AgentInsightRecommendedAction","com.azure.ai.projects.models.AgentInsightRun":"Azure.AI.Projects.AgentInsightRun","com.azure.ai.projects.models.AgentInsightRunCreate":"Azure.AI.Projects.AgentInsightRunCreate","com.azure.ai.projects.models.AgentInsightRunResult":"Azure.AI.Projects.AgentInsightRunResult","com.azure.ai.projects.models.AgentInsightRunTrigger":"Azure.AI.Projects.AgentInsightRunTrigger","com.azure.ai.projects.models.AgentInsightSeverity":"Azure.AI.Projects.AgentInsightSeverity","com.azure.ai.projects.models.AgentInsightStatus":"Azure.AI.Projects.AgentInsightStatus","com.azure.ai.projects.models.AgentInsightSuspension":"Azure.AI.Projects.AgentInsightSuspension","com.azure.ai.projects.models.AgentInsightTokenUsage":"Azure.AI.Projects.AgentInsightTokenUsage","com.azure.ai.projects.models.AgentInsightUpdate":"Azure.AI.Projects.AgentInsightUpdate","com.azure.ai.projects.models.AgentInsightsOverview":"Azure.AI.Projects.AgentInsightsOverview","com.azure.ai.projects.models.AgentInsightsOverviewOverride":"Azure.AI.Projects.AgentInsightsOverviewOverride","com.azure.ai.projects.models.AgentTaxonomyInput":"Azure.AI.Projects.AgentTaxonomyInput","com.azure.ai.projects.models.AgenticIdentityPreviewCredential":"Azure.AI.Projects.AgenticIdentityPreviewCredentials","com.azure.ai.projects.models.ApiError":"OpenAI.Error","com.azure.ai.projects.models.ApiKeyCredential":"Azure.AI.Projects.ApiKeyCredentials","com.azure.ai.projects.models.ArtifactProfile":"Azure.AI.Projects.ArtifactProfile","com.azure.ai.projects.models.AttackStrategy":"Azure.AI.Projects.AttackStrategy","com.azure.ai.projects.models.AzureAIAgentTarget":"Azure.AI.Projects.AzureAIAgentTarget","com.azure.ai.projects.models.AzureAIModelTarget":"Azure.AI.Projects.AzureAIModelTarget","com.azure.ai.projects.models.AzureAISearchIndex":"Azure.AI.Projects.AzureAISearchIndex","com.azure.ai.projects.models.AzureOpenAIModelConfiguration":"Azure.AI.Projects.AzureOpenAIModelConfiguration","com.azure.ai.projects.models.BaseCredential":"Azure.AI.Projects.BaseCredentials","com.azure.ai.projects.models.BlobReference":"Azure.AI.Projects.BlobReference","com.azure.ai.projects.models.BlobReferenceSasCredential":"Azure.AI.Projects.SasCredential","com.azure.ai.projects.models.ChartCoordinate":"Azure.AI.Projects.ChartCoordinate","com.azure.ai.projects.models.ClusterInsightResult":"Azure.AI.Projects.ClusterInsightResult","com.azure.ai.projects.models.ClusterTokenUsage":"Azure.AI.Projects.ClusterTokenUsage","com.azure.ai.projects.models.CodeBasedEvaluatorDefinition":"Azure.AI.Projects.CodeBasedEvaluatorDefinition","com.azure.ai.projects.models.Connection":"Azure.AI.Projects.Connection","com.azure.ai.projects.models.ConnectionType":"Azure.AI.Projects.ConnectionType","com.azure.ai.projects.models.ContinuousEvaluationRuleAction":"Azure.AI.Projects.ContinuousEvaluationRuleAction","com.azure.ai.projects.models.CosmosDBIndex":"Azure.AI.Projects.CosmosDBIndex","com.azure.ai.projects.models.CreateAsyncResponse":"Azure.AI.Projects.createAsync.Response.anonymous","com.azure.ai.projects.models.CreateSkillVersionFromFilesBody":"Azure.AI.Projects.CreateSkillVersionFromFilesBody","com.azure.ai.projects.models.CredentialType":"Azure.AI.Projects.CredentialType","com.azure.ai.projects.models.CronTrigger":"Azure.AI.Projects.CronTrigger","com.azure.ai.projects.models.CustomCredential":"Azure.AI.Projects.CustomCredential","com.azure.ai.projects.models.CustomRoutineTrigger":"Azure.AI.Projects.CustomRoutineTrigger","com.azure.ai.projects.models.DailyRecurrenceSchedule":"Azure.AI.Projects.DailyRecurrenceSchedule","com.azure.ai.projects.models.DataGenerationJob":"Azure.AI.Projects.DataGenerationJob","com.azure.ai.projects.models.DataGenerationJobInputs":"Azure.AI.Projects.DataGenerationJobInputs","com.azure.ai.projects.models.DataGenerationJobOptions":"Azure.AI.Projects.DataGenerationJobOptions","com.azure.ai.projects.models.DataGenerationJobOutput":"Azure.AI.Projects.DataGenerationJobOutput","com.azure.ai.projects.models.DataGenerationJobOutputOptions":"Azure.AI.Projects.DataGenerationJobOutputOptions","com.azure.ai.projects.models.DataGenerationJobOutputType":"Azure.AI.Projects.DataGenerationJobOutputType","com.azure.ai.projects.models.DataGenerationJobResult":"Azure.AI.Projects.DataGenerationJobResult","com.azure.ai.projects.models.DataGenerationJobScenario":"Azure.AI.Projects.DataGenerationJobScenario","com.azure.ai.projects.models.DataGenerationJobSource":"Azure.AI.Projects.DataGenerationJobSource","com.azure.ai.projects.models.DataGenerationJobSourceType":"Azure.AI.Projects.DataGenerationJobSourceType","com.azure.ai.projects.models.DataGenerationJobType":"Azure.AI.Projects.DataGenerationJobType","com.azure.ai.projects.models.DataGenerationModelOptions":"Azure.AI.Projects.DataGenerationModelOptions","com.azure.ai.projects.models.DataGenerationTokenUsage":"Azure.AI.Projects.DataGenerationTokenUsage","com.azure.ai.projects.models.DatasetCredential":"Azure.AI.Projects.AssetCredentialResponse","com.azure.ai.projects.models.DatasetDataGenerationJobOutput":"Azure.AI.Projects.DatasetDataGenerationJobOutput","com.azure.ai.projects.models.DatasetEvaluatorGenerationJobSource":"Azure.AI.Projects.DatasetEvaluatorGenerationJobSource","com.azure.ai.projects.models.DatasetReference":"Azure.AI.Projects.DatasetReference","com.azure.ai.projects.models.DatasetType":"Azure.AI.Projects.DatasetType","com.azure.ai.projects.models.DatasetVersion":"Azure.AI.Projects.DatasetVersion","com.azure.ai.projects.models.Deployment":"Azure.AI.Projects.Deployment","com.azure.ai.projects.models.DeploymentType":"Azure.AI.Projects.DeploymentType","com.azure.ai.projects.models.Dimension":"Azure.AI.Projects.Dimension","com.azure.ai.projects.models.DispatchRoutineResult":"Azure.AI.Projects.DispatchRoutineResponse","com.azure.ai.projects.models.EmbeddingConfiguration":"Azure.AI.Projects.EmbeddingConfiguration","com.azure.ai.projects.models.EndpointBasedEvaluatorDefinition":"Azure.AI.Projects.EndpointBasedEvaluatorDefinition","com.azure.ai.projects.models.EntraIdCredential":"Azure.AI.Projects.EntraIDCredentials","com.azure.ai.projects.models.EvaluationComparisonInsightRequest":"Azure.AI.Projects.EvaluationComparisonInsightRequest","com.azure.ai.projects.models.EvaluationComparisonInsightResult":"Azure.AI.Projects.EvaluationComparisonInsightResult","com.azure.ai.projects.models.EvaluationLevel":"Azure.AI.Projects.EvaluationLevel","com.azure.ai.projects.models.EvaluationResult":"Azure.AI.Projects.EvalResult","com.azure.ai.projects.models.EvaluationResultSample":"Azure.AI.Projects.EvaluationResultSample","com.azure.ai.projects.models.EvaluationRule":"Azure.AI.Projects.EvaluationRule","com.azure.ai.projects.models.EvaluationRuleAction":"Azure.AI.Projects.EvaluationRuleAction","com.azure.ai.projects.models.EvaluationRuleActionType":"Azure.AI.Projects.EvaluationRuleActionType","com.azure.ai.projects.models.EvaluationRuleEventType":"Azure.AI.Projects.EvaluationRuleEventType","com.azure.ai.projects.models.EvaluationRuleFilter":"Azure.AI.Projects.EvaluationRuleFilter","com.azure.ai.projects.models.EvaluationRunClusterInsightRequest":"Azure.AI.Projects.EvaluationRunClusterInsightRequest","com.azure.ai.projects.models.EvaluationRunClusterInsightResult":"Azure.AI.Projects.EvaluationRunClusterInsightResult","com.azure.ai.projects.models.EvaluationRunResultCompareItem":"Azure.AI.Projects.EvalRunResultCompareItem","com.azure.ai.projects.models.EvaluationRunResultComparison":"Azure.AI.Projects.EvalRunResultComparison","com.azure.ai.projects.models.EvaluationRunResultSummary":"Azure.AI.Projects.EvalRunResultSummary","com.azure.ai.projects.models.EvaluationScheduleTask":"Azure.AI.Projects.EvaluationScheduleTask","com.azure.ai.projects.models.EvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomy","com.azure.ai.projects.models.EvaluationTaxonomyInput":"Azure.AI.Projects.EvaluationTaxonomyInput","com.azure.ai.projects.models.EvaluationTaxonomyInputType":"Azure.AI.Projects.EvaluationTaxonomyInputType","com.azure.ai.projects.models.EvaluatorCategory":"Azure.AI.Projects.EvaluatorCategory","com.azure.ai.projects.models.EvaluatorCredentialInput":"Azure.AI.Projects.EvaluatorCredentialRequest","com.azure.ai.projects.models.EvaluatorDefinition":"Azure.AI.Projects.EvaluatorDefinition","com.azure.ai.projects.models.EvaluatorDefinitionType":"Azure.AI.Projects.EvaluatorDefinitionType","com.azure.ai.projects.models.EvaluatorGenerationArtifacts":"Azure.AI.Projects.EvaluatorGenerationArtifacts","com.azure.ai.projects.models.EvaluatorGenerationInputs":"Azure.AI.Projects.EvaluatorGenerationInputs","com.azure.ai.projects.models.EvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJob","com.azure.ai.projects.models.EvaluatorGenerationJobSource":"Azure.AI.Projects.EvaluatorGenerationJobSource","com.azure.ai.projects.models.EvaluatorGenerationJobSourceType":"Azure.AI.Projects.EvaluatorGenerationJobSourceType","com.azure.ai.projects.models.EvaluatorGenerationTokenUsage":"Azure.AI.Projects.EvaluatorGenerationTokenUsage","com.azure.ai.projects.models.EvaluatorMetric":"Azure.AI.Projects.EvaluatorMetric","com.azure.ai.projects.models.EvaluatorMetricDirection":"Azure.AI.Projects.EvaluatorMetricDirection","com.azure.ai.projects.models.EvaluatorMetricType":"Azure.AI.Projects.EvaluatorMetricType","com.azure.ai.projects.models.EvaluatorType":"Azure.AI.Projects.EvaluatorType","com.azure.ai.projects.models.EvaluatorVersion":"Azure.AI.Projects.EvaluatorVersion","com.azure.ai.projects.models.FieldMapping":"Azure.AI.Projects.FieldMapping","com.azure.ai.projects.models.FileDataGenerationJobOutput":"Azure.AI.Projects.FileDataGenerationJobOutput","com.azure.ai.projects.models.FileDataGenerationJobSource":"Azure.AI.Projects.FileDataGenerationJobSource","com.azure.ai.projects.models.FileDatasetVersion":"Azure.AI.Projects.FileDatasetVersion","com.azure.ai.projects.models.FolderDatasetVersion":"Azure.AI.Projects.FolderDatasetVersion","com.azure.ai.projects.models.FoundryModelArtifactProfileCategory":"Azure.AI.Projects.FoundryModelArtifactProfileCategory","com.azure.ai.projects.models.FoundryModelArtifactProfileSignal":"Azure.AI.Projects.FoundryModelArtifactProfileSignal","com.azure.ai.projects.models.FoundryModelSourceType":"Azure.AI.Projects.FoundryModelSourceType","com.azure.ai.projects.models.FoundryModelWarning":"Azure.AI.Projects.FoundryModelWarning","com.azure.ai.projects.models.FoundryModelWarningCode":"Azure.AI.Projects.FoundryModelWarningCode","com.azure.ai.projects.models.FoundryModelWeightType":"Azure.AI.Projects.FoundryModelWeightType","com.azure.ai.projects.models.GenerationWarningType":"Azure.AI.Projects.GenerationWarningType","com.azure.ai.projects.models.GitHubIssueEvent":"Azure.AI.Projects.GitHubIssueEvent","com.azure.ai.projects.models.GitHubIssueRoutineTrigger":"Azure.AI.Projects.GitHubIssueRoutineTrigger","com.azure.ai.projects.models.GraderAzureAIEvaluator":"Azure.AI.Projects.GraderAzureAIEvaluator","com.azure.ai.projects.models.HourlyRecurrenceSchedule":"Azure.AI.Projects.HourlyRecurrenceSchedule","com.azure.ai.projects.models.HumanEvaluationPreviewRuleAction":"Azure.AI.Projects.HumanEvaluationPreviewRuleAction","com.azure.ai.projects.models.IndexType":"Azure.AI.Projects.IndexType","com.azure.ai.projects.models.Insight":"Azure.AI.Projects.Insight","com.azure.ai.projects.models.InsightCluster":"Azure.AI.Projects.InsightCluster","com.azure.ai.projects.models.InsightModelConfiguration":"Azure.AI.Projects.InsightModelConfiguration","com.azure.ai.projects.models.InsightRequest":"Azure.AI.Projects.InsightRequest","com.azure.ai.projects.models.InsightResult":"Azure.AI.Projects.InsightResult","com.azure.ai.projects.models.InsightSample":"Azure.AI.Projects.InsightSample","com.azure.ai.projects.models.InsightScheduleTask":"Azure.AI.Projects.InsightScheduleTask","com.azure.ai.projects.models.InsightSummary":"Azure.AI.Projects.InsightSummary","com.azure.ai.projects.models.InsightType":"Azure.AI.Projects.InsightType","com.azure.ai.projects.models.InsightsMetadata":"Azure.AI.Projects.InsightsMetadata","com.azure.ai.projects.models.InvokeAgentInvocationsApiDispatchPayload":"Azure.AI.Projects.InvokeAgentInvocationsApiDispatchPayload","com.azure.ai.projects.models.InvokeAgentInvocationsApiRoutineAction":"Azure.AI.Projects.InvokeAgentInvocationsApiRoutineAction","com.azure.ai.projects.models.InvokeAgentResponsesApiDispatchPayload":"Azure.AI.Projects.InvokeAgentResponsesApiDispatchPayload","com.azure.ai.projects.models.InvokeAgentResponsesApiRoutineAction":"Azure.AI.Projects.InvokeAgentResponsesApiRoutineAction","com.azure.ai.projects.models.JobStatus":"Azure.AI.Projects.JobStatus","com.azure.ai.projects.models.ListVersionsRequestType":"Azure.AI.Projects.listVersions.RequestType.anonymous","com.azure.ai.projects.models.LoraConfig":"Azure.AI.Projects.LoraConfig","com.azure.ai.projects.models.ManagedAzureAISearchIndex":"Azure.AI.Projects.ManagedAzureAISearchIndex","com.azure.ai.projects.models.ModelCredentialInput":"Azure.AI.Projects.ModelCredentialRequest","com.azure.ai.projects.models.ModelDeployment":"Azure.AI.Projects.ModelDeployment","com.azure.ai.projects.models.ModelDeploymentSku":"Azure.AI.Projects.Sku","com.azure.ai.projects.models.ModelPendingUploadInput":"Azure.AI.Projects.ModelPendingUploadRequest","com.azure.ai.projects.models.ModelPendingUploadResult":"Azure.AI.Projects.ModelPendingUploadResponse","com.azure.ai.projects.models.ModelSamplingParams":"Azure.AI.Projects.ModelSamplingParams","com.azure.ai.projects.models.ModelSourceData":"Azure.AI.Projects.ModelSourceData","com.azure.ai.projects.models.ModelVersion":"Azure.AI.Projects.ModelVersion","com.azure.ai.projects.models.MonthlyRecurrenceSchedule":"Azure.AI.Projects.MonthlyRecurrenceSchedule","com.azure.ai.projects.models.NoAuthenticationCredential":"Azure.AI.Projects.NoAuthenticationCredentials","com.azure.ai.projects.models.OneTimeTrigger":"Azure.AI.Projects.OneTimeTrigger","com.azure.ai.projects.models.OperationStatus":"Azure.Core.Foundations.OperationState","com.azure.ai.projects.models.PendingUploadRequest":"Azure.AI.Projects.PendingUploadRequest","com.azure.ai.projects.models.PendingUploadResponse":"Azure.AI.Projects.PendingUploadResponse","com.azure.ai.projects.models.PendingUploadType":"Azure.AI.Projects.PendingUploadType","com.azure.ai.projects.models.PromptBasedEvaluatorDefinition":"Azure.AI.Projects.PromptBasedEvaluatorDefinition","com.azure.ai.projects.models.PromptDataGenerationJobSource":"Azure.AI.Projects.PromptDataGenerationJobSource","com.azure.ai.projects.models.PromptEvaluatorGenerationJobSource":"Azure.AI.Projects.PromptEvaluatorGenerationJobSource","com.azure.ai.projects.models.RecurrenceSchedule":"Azure.AI.Projects.RecurrenceSchedule","com.azure.ai.projects.models.RecurrenceTrigger":"Azure.AI.Projects.RecurrenceTrigger","com.azure.ai.projects.models.RecurrenceType":"Azure.AI.Projects.RecurrenceType","com.azure.ai.projects.models.RedTeam":"Azure.AI.Projects.RedTeam","com.azure.ai.projects.models.RiskCategory":"Azure.AI.Projects.RiskCategory","com.azure.ai.projects.models.Routine":"Azure.AI.Projects.Routine","com.azure.ai.projects.models.RoutineAction":"Azure.AI.Projects.RoutineAction","com.azure.ai.projects.models.RoutineActionType":"Azure.AI.Projects.RoutineActionType","com.azure.ai.projects.models.RoutineAttemptSource":"Azure.AI.Projects.RoutineAttemptSource","com.azure.ai.projects.models.RoutineAuthorization":"Azure.AI.Projects.RoutineAuthorization","com.azure.ai.projects.models.RoutineDispatchIdentity":"Azure.AI.Projects.RoutineDispatchIdentity","com.azure.ai.projects.models.RoutineDispatchPayload":"Azure.AI.Projects.RoutineDispatchPayload","com.azure.ai.projects.models.RoutineDispatchPayloadType":"Azure.AI.Projects.RoutineDispatchPayloadType","com.azure.ai.projects.models.RoutineRun":"Azure.AI.Projects.RoutineRun","com.azure.ai.projects.models.RoutineRunPhase":"Azure.AI.Projects.RoutineRunPhase","com.azure.ai.projects.models.RoutineTrigger":"Azure.AI.Projects.RoutineTrigger","com.azure.ai.projects.models.RoutineTriggerType":"Azure.AI.Projects.RoutineTriggerType","com.azure.ai.projects.models.RubricBasedEvaluatorDefinition":"Azure.AI.Projects.RubricBasedEvaluatorDefinition","com.azure.ai.projects.models.RubricGenerationInputQualityWarning":"Azure.AI.Projects.RubricGenerationInputQualityWarning","com.azure.ai.projects.models.RubricGenerationInputQualityWarningCode":"Azure.AI.Projects.RubricGenerationInputQualityWarningCode","com.azure.ai.projects.models.RubricGenerationInputQualityWarningSeverity":"Azure.AI.Projects.RubricGenerationInputQualityWarningSeverity","com.azure.ai.projects.models.RubricGenerationInputQualityWarningSource":"Azure.AI.Projects.RubricGenerationInputQualityWarningSource","com.azure.ai.projects.models.SampleType":"Azure.AI.Projects.SampleType","com.azure.ai.projects.models.SasCredential":"Azure.AI.Projects.SASCredentials","com.azure.ai.projects.models.Schedule":"Azure.AI.Projects.Schedule","com.azure.ai.projects.models.ScheduleProvisioningStatus":"Azure.AI.Projects.ScheduleProvisioningStatus","com.azure.ai.projects.models.ScheduleRoutineTrigger":"Azure.AI.Projects.ScheduleRoutineTrigger","com.azure.ai.projects.models.ScheduleRun":"Azure.AI.Projects.ScheduleRun","com.azure.ai.projects.models.ScheduleTask":"Azure.AI.Projects.ScheduleTask","com.azure.ai.projects.models.ScheduleTaskType":"Azure.AI.Projects.ScheduleTaskType","com.azure.ai.projects.models.SimpleQnADataGenerationJobOptions":"Azure.AI.Projects.SimpleQnADataGenerationJobOptions","com.azure.ai.projects.models.SimpleQnAFineTuningQuestionType":"Azure.AI.Projects.SimpleQnAFineTuningQuestionType","com.azure.ai.projects.models.SimulationSeedDataGenerationJobOptions":"Azure.AI.Projects.SimulationSeedDataGenerationJobOptions","com.azure.ai.projects.models.SkillDetails":"Azure.AI.Projects.Skill","com.azure.ai.projects.models.SkillFileDetails":"TypeSpec.Http.File","com.azure.ai.projects.models.SkillInlineContent":"Azure.AI.Projects.SkillInlineContent","com.azure.ai.projects.models.SkillVersion":"Azure.AI.Projects.SkillVersion","com.azure.ai.projects.models.Target":"Azure.AI.Projects.Target","com.azure.ai.projects.models.TargetConfig":"Azure.AI.Projects.RedTeamTargetConfig","com.azure.ai.projects.models.TaxonomyCategory":"Azure.AI.Projects.TaxonomyCategory","com.azure.ai.projects.models.TaxonomySubCategory":"Azure.AI.Projects.TaxonomySubCategory","com.azure.ai.projects.models.TestingCriterionAzureAIEvaluator":"Azure.AI.Projects.TestingCriterionAzureAIEvaluator","com.azure.ai.projects.models.TimerRoutineTrigger":"Azure.AI.Projects.TimerRoutineTrigger","com.azure.ai.projects.models.ToolDescription":"Azure.AI.Projects.ToolDescription","com.azure.ai.projects.models.ToolUseFineTuningDataGenerationJobOptions":"Azure.AI.Projects.ToolUseFineTuningDataGenerationJobOptions","com.azure.ai.projects.models.TracesDataGenerationJobOptions":"Azure.AI.Projects.TracesDataGenerationJobOptions","com.azure.ai.projects.models.TracesDataGenerationJobSource":"Azure.AI.Projects.TracesDataGenerationJobSource","com.azure.ai.projects.models.TracesEvaluatorGenerationJobSource":"Azure.AI.Projects.TracesEvaluatorGenerationJobSource","com.azure.ai.projects.models.TreatmentEffectType":"Azure.AI.Projects.TreatmentEffectType","com.azure.ai.projects.models.Trigger":"Azure.AI.Projects.Trigger","com.azure.ai.projects.models.TriggerType":"Azure.AI.Projects.TriggerType","com.azure.ai.projects.models.UpdateModelVersionInput":"Azure.AI.Projects.UpdateModelVersionRequest","com.azure.ai.projects.models.WeeklyRecurrenceSchedule":"Azure.AI.Projects.WeeklyRecurrenceSchedule"},"generatedFiles":["src/main/java/com/azure/ai/projects/AIProjectClientBuilder.java","src/main/java/com/azure/ai/projects/AIProjectsServiceVersion.java","src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsClient.java","src/main/java/com/azure/ai/projects/BetaDatasetsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaDatasetsClient.java","src/main/java/com/azure/ai/projects/BetaEvaluationTaxonomiesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaEvaluationTaxonomiesClient.java","src/main/java/com/azure/ai/projects/BetaEvaluatorsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaEvaluatorsClient.java","src/main/java/com/azure/ai/projects/BetaInsightsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaInsightsClient.java","src/main/java/com/azure/ai/projects/BetaModelsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaModelsClient.java","src/main/java/com/azure/ai/projects/BetaRedTeamsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaRedTeamsClient.java","src/main/java/com/azure/ai/projects/BetaRoutinesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaRoutinesClient.java","src/main/java/com/azure/ai/projects/BetaSchedulesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaSchedulesClient.java","src/main/java/com/azure/ai/projects/BetaSkillsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaSkillsClient.java","src/main/java/com/azure/ai/projects/ConnectionsAsyncClient.java","src/main/java/com/azure/ai/projects/ConnectionsClient.java","src/main/java/com/azure/ai/projects/DatasetsAsyncClient.java","src/main/java/com/azure/ai/projects/DatasetsClient.java","src/main/java/com/azure/ai/projects/DeploymentsAsyncClient.java","src/main/java/com/azure/ai/projects/DeploymentsClient.java","src/main/java/com/azure/ai/projects/EvaluationRulesAsyncClient.java","src/main/java/com/azure/ai/projects/EvaluationRulesClient.java","src/main/java/com/azure/ai/projects/IndexesAsyncClient.java","src/main/java/com/azure/ai/projects/IndexesClient.java","src/main/java/com/azure/ai/projects/implementation/AIProjectClientImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaAgentInsightMonitorsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaDatasetsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaEvaluationTaxonomiesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaEvaluatorsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaInsightsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaModelsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaRedTeamsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaRoutinesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaSchedulesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaSkillsImpl.java","src/main/java/com/azure/ai/projects/implementation/ConnectionsImpl.java","src/main/java/com/azure/ai/projects/implementation/DatasetsImpl.java","src/main/java/com/azure/ai/projects/implementation/DeploymentsImpl.java","src/main/java/com/azure/ai/projects/implementation/EvaluationRulesImpl.java","src/main/java/com/azure/ai/projects/implementation/IndexesImpl.java","src/main/java/com/azure/ai/projects/implementation/JsonMergePatchHelper.java","src/main/java/com/azure/ai/projects/implementation/MultipartFormDataHelper.java","src/main/java/com/azure/ai/projects/implementation/OperationLocationPollingStrategy.java","src/main/java/com/azure/ai/projects/implementation/PollingUtils.java","src/main/java/com/azure/ai/projects/implementation/SyncOperationLocationPollingStrategy.java","src/main/java/com/azure/ai/projects/implementation/models/CreateOrUpdateRoutineRequest.java","src/main/java/com/azure/ai/projects/implementation/models/CreateSkillVersionRequest.java","src/main/java/com/azure/ai/projects/implementation/models/DispatchRoutineAsyncRequest.java","src/main/java/com/azure/ai/projects/implementation/models/FoundryFeaturesOptInKeys.java","src/main/java/com/azure/ai/projects/implementation/models/UpdateSkillRequest.java","src/main/java/com/azure/ai/projects/implementation/models/package-info.java","src/main/java/com/azure/ai/projects/implementation/package-info.java","src/main/java/com/azure/ai/projects/models/AIProjectIndex.java","src/main/java/com/azure/ai/projects/models/AgentClusterInsightRequest.java","src/main/java/com/azure/ai/projects/models/AgentClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/AgentDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/AgentEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/AgentInsight.java","src/main/java/com/azure/ai/projects/models/AgentInsightDetails.java","src/main/java/com/azure/ai/projects/models/AgentInsightEstimatedCost.java","src/main/java/com/azure/ai/projects/models/AgentInsightHighlightedTrace.java","src/main/java/com/azure/ai/projects/models/AgentInsightLinkedTrace.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitor.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorCreate.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorListItem.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorUpdate.java","src/main/java/com/azure/ai/projects/models/AgentInsightOverviewSource.java","src/main/java/com/azure/ai/projects/models/AgentInsightPromptSurface.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFix.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFixChange.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFixKind.java","src/main/java/com/azure/ai/projects/models/AgentInsightRecommendedAction.java","src/main/java/com/azure/ai/projects/models/AgentInsightRun.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunCreate.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunResult.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunTrigger.java","src/main/java/com/azure/ai/projects/models/AgentInsightSeverity.java","src/main/java/com/azure/ai/projects/models/AgentInsightStatus.java","src/main/java/com/azure/ai/projects/models/AgentInsightSuspension.java","src/main/java/com/azure/ai/projects/models/AgentInsightTokenUsage.java","src/main/java/com/azure/ai/projects/models/AgentInsightUpdate.java","src/main/java/com/azure/ai/projects/models/AgentInsightsOverview.java","src/main/java/com/azure/ai/projects/models/AgentInsightsOverviewOverride.java","src/main/java/com/azure/ai/projects/models/AgentTaxonomyInput.java","src/main/java/com/azure/ai/projects/models/AgenticIdentityPreviewCredential.java","src/main/java/com/azure/ai/projects/models/ApiError.java","src/main/java/com/azure/ai/projects/models/ApiKeyCredential.java","src/main/java/com/azure/ai/projects/models/ArtifactProfile.java","src/main/java/com/azure/ai/projects/models/AttackStrategy.java","src/main/java/com/azure/ai/projects/models/AzureAIAgentTarget.java","src/main/java/com/azure/ai/projects/models/AzureAIModelTarget.java","src/main/java/com/azure/ai/projects/models/AzureAISearchIndex.java","src/main/java/com/azure/ai/projects/models/AzureOpenAIModelConfiguration.java","src/main/java/com/azure/ai/projects/models/BaseCredential.java","src/main/java/com/azure/ai/projects/models/BlobReference.java","src/main/java/com/azure/ai/projects/models/BlobReferenceSasCredential.java","src/main/java/com/azure/ai/projects/models/ChartCoordinate.java","src/main/java/com/azure/ai/projects/models/ClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/ClusterTokenUsage.java","src/main/java/com/azure/ai/projects/models/CodeBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/Connection.java","src/main/java/com/azure/ai/projects/models/ConnectionType.java","src/main/java/com/azure/ai/projects/models/ContinuousEvaluationRuleAction.java","src/main/java/com/azure/ai/projects/models/CosmosDBIndex.java","src/main/java/com/azure/ai/projects/models/CreateAsyncResponse.java","src/main/java/com/azure/ai/projects/models/CreateSkillVersionFromFilesBody.java","src/main/java/com/azure/ai/projects/models/CredentialType.java","src/main/java/com/azure/ai/projects/models/CronTrigger.java","src/main/java/com/azure/ai/projects/models/CustomCredential.java","src/main/java/com/azure/ai/projects/models/CustomRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/DailyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/DataGenerationJob.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobInputs.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputType.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobResult.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobScenario.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobSourceType.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobType.java","src/main/java/com/azure/ai/projects/models/DataGenerationModelOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationTokenUsage.java","src/main/java/com/azure/ai/projects/models/DatasetCredential.java","src/main/java/com/azure/ai/projects/models/DatasetDataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/DatasetEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/DatasetReference.java","src/main/java/com/azure/ai/projects/models/DatasetType.java","src/main/java/com/azure/ai/projects/models/DatasetVersion.java","src/main/java/com/azure/ai/projects/models/Deployment.java","src/main/java/com/azure/ai/projects/models/DeploymentType.java","src/main/java/com/azure/ai/projects/models/Dimension.java","src/main/java/com/azure/ai/projects/models/DispatchRoutineResult.java","src/main/java/com/azure/ai/projects/models/EmbeddingConfiguration.java","src/main/java/com/azure/ai/projects/models/EndpointBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/EntraIdCredential.java","src/main/java/com/azure/ai/projects/models/EvaluationComparisonInsightRequest.java","src/main/java/com/azure/ai/projects/models/EvaluationComparisonInsightResult.java","src/main/java/com/azure/ai/projects/models/EvaluationLevel.java","src/main/java/com/azure/ai/projects/models/EvaluationResult.java","src/main/java/com/azure/ai/projects/models/EvaluationResultSample.java","src/main/java/com/azure/ai/projects/models/EvaluationRule.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleAction.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleActionType.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleEventType.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleFilter.java","src/main/java/com/azure/ai/projects/models/EvaluationRunClusterInsightRequest.java","src/main/java/com/azure/ai/projects/models/EvaluationRunClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultCompareItem.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultComparison.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultSummary.java","src/main/java/com/azure/ai/projects/models/EvaluationScheduleTask.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomy.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomyInput.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomyInputType.java","src/main/java/com/azure/ai/projects/models/EvaluatorCategory.java","src/main/java/com/azure/ai/projects/models/EvaluatorCredentialInput.java","src/main/java/com/azure/ai/projects/models/EvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/EvaluatorDefinitionType.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationArtifacts.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationInputs.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJob.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJobSourceType.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationTokenUsage.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetric.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetricDirection.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetricType.java","src/main/java/com/azure/ai/projects/models/EvaluatorType.java","src/main/java/com/azure/ai/projects/models/EvaluatorVersion.java","src/main/java/com/azure/ai/projects/models/FieldMapping.java","src/main/java/com/azure/ai/projects/models/FileDataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/FileDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/FileDatasetVersion.java","src/main/java/com/azure/ai/projects/models/FolderDatasetVersion.java","src/main/java/com/azure/ai/projects/models/FoundryModelArtifactProfileCategory.java","src/main/java/com/azure/ai/projects/models/FoundryModelArtifactProfileSignal.java","src/main/java/com/azure/ai/projects/models/FoundryModelSourceType.java","src/main/java/com/azure/ai/projects/models/FoundryModelWarning.java","src/main/java/com/azure/ai/projects/models/FoundryModelWarningCode.java","src/main/java/com/azure/ai/projects/models/FoundryModelWeightType.java","src/main/java/com/azure/ai/projects/models/GenerationWarningType.java","src/main/java/com/azure/ai/projects/models/GitHubIssueEvent.java","src/main/java/com/azure/ai/projects/models/GitHubIssueRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/GraderAzureAIEvaluator.java","src/main/java/com/azure/ai/projects/models/HourlyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/HumanEvaluationPreviewRuleAction.java","src/main/java/com/azure/ai/projects/models/IndexType.java","src/main/java/com/azure/ai/projects/models/Insight.java","src/main/java/com/azure/ai/projects/models/InsightCluster.java","src/main/java/com/azure/ai/projects/models/InsightModelConfiguration.java","src/main/java/com/azure/ai/projects/models/InsightRequest.java","src/main/java/com/azure/ai/projects/models/InsightResult.java","src/main/java/com/azure/ai/projects/models/InsightSample.java","src/main/java/com/azure/ai/projects/models/InsightScheduleTask.java","src/main/java/com/azure/ai/projects/models/InsightSummary.java","src/main/java/com/azure/ai/projects/models/InsightType.java","src/main/java/com/azure/ai/projects/models/InsightsMetadata.java","src/main/java/com/azure/ai/projects/models/InvokeAgentInvocationsApiDispatchPayload.java","src/main/java/com/azure/ai/projects/models/InvokeAgentInvocationsApiRoutineAction.java","src/main/java/com/azure/ai/projects/models/InvokeAgentResponsesApiDispatchPayload.java","src/main/java/com/azure/ai/projects/models/InvokeAgentResponsesApiRoutineAction.java","src/main/java/com/azure/ai/projects/models/JobStatus.java","src/main/java/com/azure/ai/projects/models/ListVersionsRequestType.java","src/main/java/com/azure/ai/projects/models/LoraConfig.java","src/main/java/com/azure/ai/projects/models/ManagedAzureAISearchIndex.java","src/main/java/com/azure/ai/projects/models/ModelCredentialInput.java","src/main/java/com/azure/ai/projects/models/ModelDeployment.java","src/main/java/com/azure/ai/projects/models/ModelDeploymentSku.java","src/main/java/com/azure/ai/projects/models/ModelPendingUploadInput.java","src/main/java/com/azure/ai/projects/models/ModelPendingUploadResult.java","src/main/java/com/azure/ai/projects/models/ModelSamplingParams.java","src/main/java/com/azure/ai/projects/models/ModelSourceData.java","src/main/java/com/azure/ai/projects/models/ModelVersion.java","src/main/java/com/azure/ai/projects/models/MonthlyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/NoAuthenticationCredential.java","src/main/java/com/azure/ai/projects/models/OneTimeTrigger.java","src/main/java/com/azure/ai/projects/models/OperationStatus.java","src/main/java/com/azure/ai/projects/models/PendingUploadRequest.java","src/main/java/com/azure/ai/projects/models/PendingUploadResponse.java","src/main/java/com/azure/ai/projects/models/PendingUploadType.java","src/main/java/com/azure/ai/projects/models/PromptBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/PromptDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/PromptEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/RecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/RecurrenceTrigger.java","src/main/java/com/azure/ai/projects/models/RecurrenceType.java","src/main/java/com/azure/ai/projects/models/RedTeam.java","src/main/java/com/azure/ai/projects/models/RiskCategory.java","src/main/java/com/azure/ai/projects/models/Routine.java","src/main/java/com/azure/ai/projects/models/RoutineAction.java","src/main/java/com/azure/ai/projects/models/RoutineActionType.java","src/main/java/com/azure/ai/projects/models/RoutineAttemptSource.java","src/main/java/com/azure/ai/projects/models/RoutineAuthorization.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchIdentity.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchPayload.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchPayloadType.java","src/main/java/com/azure/ai/projects/models/RoutineRun.java","src/main/java/com/azure/ai/projects/models/RoutineRunPhase.java","src/main/java/com/azure/ai/projects/models/RoutineTrigger.java","src/main/java/com/azure/ai/projects/models/RoutineTriggerType.java","src/main/java/com/azure/ai/projects/models/RubricBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarning.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningCode.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningSeverity.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningSource.java","src/main/java/com/azure/ai/projects/models/SampleType.java","src/main/java/com/azure/ai/projects/models/SasCredential.java","src/main/java/com/azure/ai/projects/models/Schedule.java","src/main/java/com/azure/ai/projects/models/ScheduleProvisioningStatus.java","src/main/java/com/azure/ai/projects/models/ScheduleRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/ScheduleRun.java","src/main/java/com/azure/ai/projects/models/ScheduleTask.java","src/main/java/com/azure/ai/projects/models/ScheduleTaskType.java","src/main/java/com/azure/ai/projects/models/SimpleQnADataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/SimpleQnAFineTuningQuestionType.java","src/main/java/com/azure/ai/projects/models/SimulationSeedDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/SkillDetails.java","src/main/java/com/azure/ai/projects/models/SkillFileDetails.java","src/main/java/com/azure/ai/projects/models/SkillInlineContent.java","src/main/java/com/azure/ai/projects/models/SkillVersion.java","src/main/java/com/azure/ai/projects/models/Target.java","src/main/java/com/azure/ai/projects/models/TargetConfig.java","src/main/java/com/azure/ai/projects/models/TaxonomyCategory.java","src/main/java/com/azure/ai/projects/models/TaxonomySubCategory.java","src/main/java/com/azure/ai/projects/models/TestingCriterionAzureAIEvaluator.java","src/main/java/com/azure/ai/projects/models/TimerRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/ToolDescription.java","src/main/java/com/azure/ai/projects/models/ToolUseFineTuningDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/TracesEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/TreatmentEffectType.java","src/main/java/com/azure/ai/projects/models/Trigger.java","src/main/java/com/azure/ai/projects/models/TriggerType.java","src/main/java/com/azure/ai/projects/models/UpdateModelVersionInput.java","src/main/java/com/azure/ai/projects/models/WeeklyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/package-info.java","src/main/java/com/azure/ai/projects/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file +{"flavor":"azure","apiVersions":{"Azure.AI.Projects":"v1"},"crossLanguagePackageId":"Azure.AI.Projects","crossLanguageVersion":"66b942121dae","crossLanguageDefinitions":{"com.azure.ai.projects.AIProjectClientBuilder":"Azure.AI.Projects","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient":"Azure.AI.Projects.Beta.AgentInsightMonitors","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.beginCreateAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.beginCreateAgentInsightRunWithModel":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.cancelAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.cancelAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.createAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.createAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.deleteAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.deleteAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsightMonitors":"Azure.AI.Projects.AgentInsightMonitors.list","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsightRuns":"Azure.AI.Projects.AgentInsightMonitors.listRuns","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsights":"Azure.AI.Projects.AgentInsightMonitors.listInsights","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.resetAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.resetAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient":"Azure.AI.Projects.Beta.AgentInsightMonitors","com.azure.ai.projects.BetaAgentInsightMonitorsClient.beginCreateAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.beginCreateAgentInsightRunWithModel":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.cancelAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.cancelAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.createAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsClient.createAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsClient.deleteAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsClient.deleteAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsightMonitors":"Azure.AI.Projects.AgentInsightMonitors.list","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsightRuns":"Azure.AI.Projects.AgentInsightMonitors.listRuns","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsights":"Azure.AI.Projects.AgentInsightMonitors.listInsights","com.azure.ai.projects.BetaAgentInsightMonitorsClient.resetAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsClient.resetAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaDatasetsAsyncClient":"Azure.AI.Projects.Beta.Datasets","com.azure.ai.projects.BetaDatasetsAsyncClient.beginCreateGenerationJob":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsAsyncClient.beginCreateGenerationJobWithModel":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsAsyncClient.cancelGenerationJob":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsAsyncClient.cancelGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsAsyncClient.deleteGenerationJob":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsAsyncClient.deleteGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsAsyncClient.getGenerationJob":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsAsyncClient.getGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsAsyncClient.listGenerationJobs":"Azure.AI.Projects.DataGenerationJobs.list","com.azure.ai.projects.BetaDatasetsClient":"Azure.AI.Projects.Beta.Datasets","com.azure.ai.projects.BetaDatasetsClient.beginCreateGenerationJob":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsClient.beginCreateGenerationJobWithModel":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsClient.cancelGenerationJob":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsClient.cancelGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsClient.deleteGenerationJob":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsClient.deleteGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsClient.getGenerationJob":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsClient.getGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsClient.listGenerationJobs":"Azure.AI.Projects.DataGenerationJobs.list","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient":"Azure.AI.Projects.Beta.EvaluationTaxonomies","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.createEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.createEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.deleteEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.deleteEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.getEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.getEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.listEvaluationTaxonomies":"Azure.AI.Projects.EvaluationTaxonomies.list","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.updateEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.updateEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesClient":"Azure.AI.Projects.Beta.EvaluationTaxonomies","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.createEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.createEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.deleteEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.deleteEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.getEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.getEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.listEvaluationTaxonomies":"Azure.AI.Projects.EvaluationTaxonomies.list","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.updateEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.updateEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluatorsAsyncClient":"Azure.AI.Projects.Beta.Evaluators","com.azure.ai.projects.BetaEvaluatorsAsyncClient.beginCreateEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsAsyncClient.beginCreateEvaluatorGenerationJobWithModel":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsAsyncClient.cancelEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsAsyncClient.cancelEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsAsyncClient.createEvaluatorVersion":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.createEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorVersion":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getCredentials":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getCredentialsWithResponse":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorVersion":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listEvaluatorGenerationJobs":"Azure.AI.Projects.EvaluatorGenerationJobs.list","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listEvaluatorVersions":"Azure.AI.Projects.Evaluators.listVersions","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listLatestEvaluatorVersions":"Azure.AI.Projects.Evaluators.listLatestVersions","com.azure.ai.projects.BetaEvaluatorsAsyncClient.startPendingUpload":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsAsyncClient.startPendingUploadWithResponse":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsAsyncClient.updateEvaluatorVersion":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.updateEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsClient":"Azure.AI.Projects.Beta.Evaluators","com.azure.ai.projects.BetaEvaluatorsClient.beginCreateEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsClient.beginCreateEvaluatorGenerationJobWithModel":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsClient.cancelEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsClient.cancelEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsClient.createEvaluatorVersion":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsClient.createEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorVersion":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsClient.getCredentials":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsClient.getCredentialsWithResponse":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorVersion":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsClient.listEvaluatorGenerationJobs":"Azure.AI.Projects.EvaluatorGenerationJobs.list","com.azure.ai.projects.BetaEvaluatorsClient.listEvaluatorVersions":"Azure.AI.Projects.Evaluators.listVersions","com.azure.ai.projects.BetaEvaluatorsClient.listLatestEvaluatorVersions":"Azure.AI.Projects.Evaluators.listLatestVersions","com.azure.ai.projects.BetaEvaluatorsClient.startPendingUpload":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsClient.startPendingUploadWithResponse":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsClient.updateEvaluatorVersion":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsClient.updateEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaInsightsAsyncClient":"Azure.AI.Projects.Beta.Insights","com.azure.ai.projects.BetaInsightsAsyncClient.generateInsight":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsAsyncClient.generateInsightWithResponse":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsAsyncClient.getInsight":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsAsyncClient.getInsightWithResponse":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsAsyncClient.listInsights":"Azure.AI.Projects.Insights.list","com.azure.ai.projects.BetaInsightsClient":"Azure.AI.Projects.Beta.Insights","com.azure.ai.projects.BetaInsightsClient.generateInsight":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsClient.generateInsightWithResponse":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsClient.getInsight":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsClient.getInsightWithResponse":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsClient.listInsights":"Azure.AI.Projects.Insights.list","com.azure.ai.projects.BetaModelsAsyncClient":"Azure.AI.Projects.Beta.Models","com.azure.ai.projects.BetaModelsAsyncClient.createModelVersionAsyncWithResponse":"Azure.AI.Projects.Models.createAsync","com.azure.ai.projects.BetaModelsAsyncClient.deleteModelVersion":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsAsyncClient.deleteModelVersionWithResponse":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsAsyncClient.getModelCredentials":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsAsyncClient.getModelCredentialsWithResponse":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsAsyncClient.getModelVersion":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsAsyncClient.getModelVersionWithResponse":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsAsyncClient.listLatestModelVersions":"Azure.AI.Projects.Models.listLatest","com.azure.ai.projects.BetaModelsAsyncClient.listModelVersions":"Azure.AI.Projects.Models.listVersions","com.azure.ai.projects.BetaModelsAsyncClient.startModelPendingUpload":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsAsyncClient.startModelPendingUploadWithResponse":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsAsyncClient.updateModelVersion":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsAsyncClient.updateModelVersionWithResponse":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsClient":"Azure.AI.Projects.Beta.Models","com.azure.ai.projects.BetaModelsClient.createModelVersionAsyncWithResponse":"Azure.AI.Projects.Models.createAsync","com.azure.ai.projects.BetaModelsClient.deleteModelVersion":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsClient.deleteModelVersionWithResponse":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsClient.getModelCredentials":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsClient.getModelCredentialsWithResponse":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsClient.getModelVersion":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsClient.getModelVersionWithResponse":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsClient.listLatestModelVersions":"Azure.AI.Projects.Models.listLatest","com.azure.ai.projects.BetaModelsClient.listModelVersions":"Azure.AI.Projects.Models.listVersions","com.azure.ai.projects.BetaModelsClient.startModelPendingUpload":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsClient.startModelPendingUploadWithResponse":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsClient.updateModelVersion":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsClient.updateModelVersionWithResponse":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaRedTeamsAsyncClient":"Azure.AI.Projects.Beta.RedTeams","com.azure.ai.projects.BetaRedTeamsAsyncClient.createRedTeamRun":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsAsyncClient.createRedTeamRunWithResponse":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsAsyncClient.getRedTeam":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsAsyncClient.getRedTeamWithResponse":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsAsyncClient.listRedTeams":"Azure.AI.Projects.RedTeams.list","com.azure.ai.projects.BetaRedTeamsClient":"Azure.AI.Projects.Beta.RedTeams","com.azure.ai.projects.BetaRedTeamsClient.createRedTeamRun":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsClient.createRedTeamRunWithResponse":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsClient.getRedTeam":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsClient.getRedTeamWithResponse":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsClient.listRedTeams":"Azure.AI.Projects.RedTeams.list","com.azure.ai.projects.BetaRoutinesAsyncClient":"Azure.AI.Projects.Beta.Routines","com.azure.ai.projects.BetaRoutinesAsyncClient.createOrUpdateRoutine":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.createOrUpdateRoutineWithResponse":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.deleteRoutine":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.deleteRoutineWithResponse":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.disableRoutine":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.disableRoutineWithResponse":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.dispatchRoutine":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesAsyncClient.dispatchRoutineWithResponse":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesAsyncClient.enableRoutine":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.enableRoutineWithResponse":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.getRoutine":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.getRoutineWithResponse":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.listRoutineRuns":"Azure.AI.Projects.Routines.listRoutineRuns","com.azure.ai.projects.BetaRoutinesAsyncClient.listRoutines":"Azure.AI.Projects.Routines.listRoutines","com.azure.ai.projects.BetaRoutinesClient":"Azure.AI.Projects.Beta.Routines","com.azure.ai.projects.BetaRoutinesClient.createOrUpdateRoutine":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesClient.createOrUpdateRoutineWithResponse":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesClient.deleteRoutine":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesClient.deleteRoutineWithResponse":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesClient.disableRoutine":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesClient.disableRoutineWithResponse":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesClient.dispatchRoutine":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesClient.dispatchRoutineWithResponse":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesClient.enableRoutine":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesClient.enableRoutineWithResponse":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesClient.getRoutine":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesClient.getRoutineWithResponse":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesClient.listRoutineRuns":"Azure.AI.Projects.Routines.listRoutineRuns","com.azure.ai.projects.BetaRoutinesClient.listRoutines":"Azure.AI.Projects.Routines.listRoutines","com.azure.ai.projects.BetaSchedulesAsyncClient":"Azure.AI.Projects.Beta.Schedules","com.azure.ai.projects.BetaSchedulesAsyncClient.createOrUpdateSchedule":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesAsyncClient.createOrUpdateScheduleWithResponse":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesAsyncClient.deleteSchedule":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesAsyncClient.deleteScheduleWithResponse":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesAsyncClient.getSchedule":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleRun":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleRunWithResponse":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleWithResponse":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesAsyncClient.listScheduleRuns":"Azure.AI.Projects.Schedules.listRuns","com.azure.ai.projects.BetaSchedulesAsyncClient.listSchedules":"Azure.AI.Projects.Schedules.list","com.azure.ai.projects.BetaSchedulesClient":"Azure.AI.Projects.Beta.Schedules","com.azure.ai.projects.BetaSchedulesClient.createOrUpdateSchedule":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesClient.createOrUpdateScheduleWithResponse":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesClient.deleteSchedule":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesClient.deleteScheduleWithResponse":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesClient.getSchedule":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesClient.getScheduleRun":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesClient.getScheduleRunWithResponse":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesClient.getScheduleWithResponse":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesClient.listScheduleRuns":"Azure.AI.Projects.Schedules.listRuns","com.azure.ai.projects.BetaSchedulesClient.listSchedules":"Azure.AI.Projects.Schedules.list","com.azure.ai.projects.BetaSkillsAsyncClient":"Azure.AI.Projects.Beta.Skills","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersion":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionFromFiles":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionFromFilesWithResponseInternal":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionWithResponse":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkill":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillContent":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillContentWithResponse":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersion":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionContent":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionContentWithResponse":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionWithResponse":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillWithResponse":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsAsyncClient.listSkillVersions":"Azure.AI.Projects.Skills.listSkillVersions","com.azure.ai.projects.BetaSkillsAsyncClient.listSkills":"Azure.AI.Projects.Skills.listSkills","com.azure.ai.projects.BetaSkillsAsyncClient.updateSkill":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsAsyncClient.updateSkillWithResponse":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsClient":"Azure.AI.Projects.Beta.Skills","com.azure.ai.projects.BetaSkillsClient.createSkillVersion":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsClient.createSkillVersionFromFiles":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsClient.createSkillVersionFromFilesWithResponseInternal":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsClient.createSkillVersionWithResponse":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkill":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsClient.getSkillContent":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsClient.getSkillContentWithResponse":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersion":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkillVersionContent":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersionContentWithResponse":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersionWithResponse":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkillWithResponse":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsClient.listSkillVersions":"Azure.AI.Projects.Skills.listSkillVersions","com.azure.ai.projects.BetaSkillsClient.listSkills":"Azure.AI.Projects.Skills.listSkills","com.azure.ai.projects.BetaSkillsClient.updateSkill":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsClient.updateSkillWithResponse":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.ConnectionsAsyncClient":"Azure.AI.Projects.Connections","com.azure.ai.projects.ConnectionsAsyncClient.getConnection":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithCredentials":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithCredentialsWithResponse":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithResponse":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsAsyncClient.listConnections":"Azure.AI.Projects.Connections.list","com.azure.ai.projects.ConnectionsClient":"Azure.AI.Projects.Connections","com.azure.ai.projects.ConnectionsClient.getConnection":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsClient.getConnectionWithCredentials":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsClient.getConnectionWithCredentialsWithResponse":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsClient.getConnectionWithResponse":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsClient.listConnections":"Azure.AI.Projects.Connections.list","com.azure.ai.projects.DatasetsAsyncClient":"Azure.AI.Projects.Datasets","com.azure.ai.projects.DatasetsAsyncClient.createOrUpdateDatasetVersion":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsAsyncClient.createOrUpdateDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsAsyncClient.deleteDatasetVersion":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsAsyncClient.deleteDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsAsyncClient.getCredentials":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsAsyncClient.getCredentialsWithResponse":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsAsyncClient.getDatasetVersion":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsAsyncClient.getDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsAsyncClient.listDatasetVersions":"Azure.AI.Projects.Datasets.listVersions","com.azure.ai.projects.DatasetsAsyncClient.listLatestDatasetVersions":"Azure.AI.Projects.Datasets.listLatest","com.azure.ai.projects.DatasetsAsyncClient.pendingUpload":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsAsyncClient.pendingUploadWithResponse":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsClient":"Azure.AI.Projects.Datasets","com.azure.ai.projects.DatasetsClient.createOrUpdateDatasetVersion":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsClient.createOrUpdateDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsClient.deleteDatasetVersion":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsClient.deleteDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsClient.getCredentials":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsClient.getCredentialsWithResponse":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsClient.getDatasetVersion":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsClient.getDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsClient.listDatasetVersions":"Azure.AI.Projects.Datasets.listVersions","com.azure.ai.projects.DatasetsClient.listLatestDatasetVersions":"Azure.AI.Projects.Datasets.listLatest","com.azure.ai.projects.DatasetsClient.pendingUpload":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsClient.pendingUploadWithResponse":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DeploymentsAsyncClient":"Azure.AI.Projects.Deployments","com.azure.ai.projects.DeploymentsAsyncClient.getDeployment":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsAsyncClient.getDeploymentWithResponse":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsAsyncClient.listDeployments":"Azure.AI.Projects.Deployments.list","com.azure.ai.projects.DeploymentsClient":"Azure.AI.Projects.Deployments","com.azure.ai.projects.DeploymentsClient.getDeployment":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsClient.getDeploymentWithResponse":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsClient.listDeployments":"Azure.AI.Projects.Deployments.list","com.azure.ai.projects.EvaluationRulesAsyncClient":"Azure.AI.Projects.EvaluationRules","com.azure.ai.projects.EvaluationRulesAsyncClient.createOrUpdateEvaluationRule":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesAsyncClient.createOrUpdateEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesAsyncClient.deleteEvaluationRule":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesAsyncClient.deleteEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesAsyncClient.getEvaluationRule":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesAsyncClient.getEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesAsyncClient.listEvaluationRules":"Azure.AI.Projects.EvaluationRules.list","com.azure.ai.projects.EvaluationRulesClient":"Azure.AI.Projects.EvaluationRules","com.azure.ai.projects.EvaluationRulesClient.createOrUpdateEvaluationRule":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesClient.createOrUpdateEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesClient.deleteEvaluationRule":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesClient.deleteEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesClient.getEvaluationRule":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesClient.getEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesClient.listEvaluationRules":"Azure.AI.Projects.EvaluationRules.list","com.azure.ai.projects.IndexesAsyncClient":"Azure.AI.Projects.Indexes","com.azure.ai.projects.IndexesAsyncClient.createOrUpdateIndexVersion":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesAsyncClient.createOrUpdateIndexVersionWithResponse":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesAsyncClient.deleteIndexVersion":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesAsyncClient.deleteIndexVersionWithResponse":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesAsyncClient.getIndexVersion":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesAsyncClient.getIndexVersionWithResponse":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesAsyncClient.listIndexVersions":"Azure.AI.Projects.Indexes.listVersions","com.azure.ai.projects.IndexesAsyncClient.listLatestIndexVersions":"Azure.AI.Projects.Indexes.listLatest","com.azure.ai.projects.IndexesClient":"Azure.AI.Projects.Indexes","com.azure.ai.projects.IndexesClient.createOrUpdateIndexVersion":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesClient.createOrUpdateIndexVersionWithResponse":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesClient.deleteIndexVersion":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesClient.deleteIndexVersionWithResponse":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesClient.getIndexVersion":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesClient.getIndexVersionWithResponse":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesClient.listIndexVersions":"Azure.AI.Projects.Indexes.listVersions","com.azure.ai.projects.IndexesClient.listLatestIndexVersions":"Azure.AI.Projects.Indexes.listLatest","com.azure.ai.projects.implementation.models.CreateOrUpdateRoutineRequest":"Azure.AI.Projects.createOrUpdateRoutine.Request.anonymous","com.azure.ai.projects.implementation.models.CreateSkillVersionRequest":"Azure.AI.Projects.createSkillVersion.Request.anonymous","com.azure.ai.projects.implementation.models.DispatchRoutineAsyncRequest":"Azure.AI.Projects.dispatchRoutineAsync.Request.anonymous","com.azure.ai.projects.implementation.models.FoundryFeaturesOptInKeys":"Azure.AI.Projects.FoundryFeaturesOptInKeys","com.azure.ai.projects.implementation.models.UpdateSkillRequest":"Azure.AI.Projects.updateSkill.Request.anonymous","com.azure.ai.projects.models.AIProjectIndex":"Azure.AI.Projects.Index","com.azure.ai.projects.models.AgentClusterInsightRequest":"Azure.AI.Projects.AgentClusterInsightRequest","com.azure.ai.projects.models.AgentClusterInsightResult":"Azure.AI.Projects.AgentClusterInsightResult","com.azure.ai.projects.models.AgentDataGenerationJobSource":"Azure.AI.Projects.AgentDataGenerationJobSource","com.azure.ai.projects.models.AgentEvaluatorGenerationJobSource":"Azure.AI.Projects.AgentEvaluatorGenerationJobSource","com.azure.ai.projects.models.AgentInsight":"Azure.AI.Projects.AgentInsight","com.azure.ai.projects.models.AgentInsightDetails":"Azure.AI.Projects.AgentInsightDetails","com.azure.ai.projects.models.AgentInsightEstimatedCost":"Azure.AI.Projects.AgentInsightEstimatedCost","com.azure.ai.projects.models.AgentInsightHighlightedTrace":"Azure.AI.Projects.AgentInsightHighlightedTrace","com.azure.ai.projects.models.AgentInsightLinkedTrace":"Azure.AI.Projects.AgentInsightLinkedTrace","com.azure.ai.projects.models.AgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitor","com.azure.ai.projects.models.AgentInsightMonitorCreate":"Azure.AI.Projects.AgentInsightMonitorCreate","com.azure.ai.projects.models.AgentInsightMonitorListItem":"Azure.AI.Projects.AgentInsightMonitorListItem","com.azure.ai.projects.models.AgentInsightMonitorUpdate":"Azure.AI.Projects.AgentInsightMonitorUpdate","com.azure.ai.projects.models.AgentInsightOverviewSource":"Azure.AI.Projects.AgentInsightOverviewSource","com.azure.ai.projects.models.AgentInsightPromptSurface":"Azure.AI.Projects.AgentInsightPromptSurface","com.azure.ai.projects.models.AgentInsightProposedFix":"Azure.AI.Projects.AgentInsightProposedFix","com.azure.ai.projects.models.AgentInsightProposedFixChange":"Azure.AI.Projects.AgentInsightProposedFixChange","com.azure.ai.projects.models.AgentInsightProposedFixKind":"Azure.AI.Projects.AgentInsightProposedFixKind","com.azure.ai.projects.models.AgentInsightRecommendedAction":"Azure.AI.Projects.AgentInsightRecommendedAction","com.azure.ai.projects.models.AgentInsightRun":"Azure.AI.Projects.AgentInsightRun","com.azure.ai.projects.models.AgentInsightRunCreate":"Azure.AI.Projects.AgentInsightRunCreate","com.azure.ai.projects.models.AgentInsightRunResult":"Azure.AI.Projects.AgentInsightRunResult","com.azure.ai.projects.models.AgentInsightRunTrigger":"Azure.AI.Projects.AgentInsightRunTrigger","com.azure.ai.projects.models.AgentInsightSeverity":"Azure.AI.Projects.AgentInsightSeverity","com.azure.ai.projects.models.AgentInsightStatus":"Azure.AI.Projects.AgentInsightStatus","com.azure.ai.projects.models.AgentInsightSuspension":"Azure.AI.Projects.AgentInsightSuspension","com.azure.ai.projects.models.AgentInsightTokenUsage":"Azure.AI.Projects.AgentInsightTokenUsage","com.azure.ai.projects.models.AgentInsightUpdate":"Azure.AI.Projects.AgentInsightUpdate","com.azure.ai.projects.models.AgentInsightsOverview":"Azure.AI.Projects.AgentInsightsOverview","com.azure.ai.projects.models.AgentInsightsOverviewOverride":"Azure.AI.Projects.AgentInsightsOverviewOverride","com.azure.ai.projects.models.AgentTaxonomyInput":"Azure.AI.Projects.AgentTaxonomyInput","com.azure.ai.projects.models.AgenticIdentityPreviewCredential":"Azure.AI.Projects.AgenticIdentityPreviewCredentials","com.azure.ai.projects.models.ApiError":"OpenAI.Error","com.azure.ai.projects.models.ApiKeyCredential":"Azure.AI.Projects.ApiKeyCredentials","com.azure.ai.projects.models.ArtifactProfile":"Azure.AI.Projects.ArtifactProfile","com.azure.ai.projects.models.AttackStrategy":"Azure.AI.Projects.AttackStrategy","com.azure.ai.projects.models.AzureAIAgentTarget":"Azure.AI.Projects.AzureAIAgentTarget","com.azure.ai.projects.models.AzureAIModelTarget":"Azure.AI.Projects.AzureAIModelTarget","com.azure.ai.projects.models.AzureAISearchIndex":"Azure.AI.Projects.AzureAISearchIndex","com.azure.ai.projects.models.AzureOpenAIModelConfiguration":"Azure.AI.Projects.AzureOpenAIModelConfiguration","com.azure.ai.projects.models.BaseCredential":"Azure.AI.Projects.BaseCredentials","com.azure.ai.projects.models.BlobReference":"Azure.AI.Projects.BlobReference","com.azure.ai.projects.models.BlobReferenceSasCredential":"Azure.AI.Projects.SasCredential","com.azure.ai.projects.models.ChartCoordinate":"Azure.AI.Projects.ChartCoordinate","com.azure.ai.projects.models.ClusterInsightResult":"Azure.AI.Projects.ClusterInsightResult","com.azure.ai.projects.models.ClusterTokenUsage":"Azure.AI.Projects.ClusterTokenUsage","com.azure.ai.projects.models.CodeBasedEvaluatorDefinition":"Azure.AI.Projects.CodeBasedEvaluatorDefinition","com.azure.ai.projects.models.Connection":"Azure.AI.Projects.Connection","com.azure.ai.projects.models.ConnectionType":"Azure.AI.Projects.ConnectionType","com.azure.ai.projects.models.ContinuousEvaluationRuleAction":"Azure.AI.Projects.ContinuousEvaluationRuleAction","com.azure.ai.projects.models.CosmosDBIndex":"Azure.AI.Projects.CosmosDBIndex","com.azure.ai.projects.models.CreateAsyncResponse":"Azure.AI.Projects.createAsync.Response.anonymous","com.azure.ai.projects.models.CreateSkillVersionFromFilesBody":"Azure.AI.Projects.CreateSkillVersionFromFilesBody","com.azure.ai.projects.models.CredentialType":"Azure.AI.Projects.CredentialType","com.azure.ai.projects.models.CronTrigger":"Azure.AI.Projects.CronTrigger","com.azure.ai.projects.models.CustomCredential":"Azure.AI.Projects.CustomCredential","com.azure.ai.projects.models.CustomRoutineTrigger":"Azure.AI.Projects.CustomRoutineTrigger","com.azure.ai.projects.models.DailyRecurrenceSchedule":"Azure.AI.Projects.DailyRecurrenceSchedule","com.azure.ai.projects.models.DataGenerationJob":"Azure.AI.Projects.DataGenerationJob","com.azure.ai.projects.models.DataGenerationJobInputs":"Azure.AI.Projects.DataGenerationJobInputs","com.azure.ai.projects.models.DataGenerationJobOptions":"Azure.AI.Projects.DataGenerationJobOptions","com.azure.ai.projects.models.DataGenerationJobOutput":"Azure.AI.Projects.DataGenerationJobOutput","com.azure.ai.projects.models.DataGenerationJobOutputOptions":"Azure.AI.Projects.DataGenerationJobOutputOptions","com.azure.ai.projects.models.DataGenerationJobOutputType":"Azure.AI.Projects.DataGenerationJobOutputType","com.azure.ai.projects.models.DataGenerationJobResult":"Azure.AI.Projects.DataGenerationJobResult","com.azure.ai.projects.models.DataGenerationJobScenario":"Azure.AI.Projects.DataGenerationJobScenario","com.azure.ai.projects.models.DataGenerationJobSource":"Azure.AI.Projects.DataGenerationJobSource","com.azure.ai.projects.models.DataGenerationJobSourceType":"Azure.AI.Projects.DataGenerationJobSourceType","com.azure.ai.projects.models.DataGenerationJobType":"Azure.AI.Projects.DataGenerationJobType","com.azure.ai.projects.models.DataGenerationModelOptions":"Azure.AI.Projects.DataGenerationModelOptions","com.azure.ai.projects.models.DataGenerationTokenUsage":"Azure.AI.Projects.DataGenerationTokenUsage","com.azure.ai.projects.models.DatasetCredential":"Azure.AI.Projects.AssetCredentialResponse","com.azure.ai.projects.models.DatasetDataGenerationJobOutput":"Azure.AI.Projects.DatasetDataGenerationJobOutput","com.azure.ai.projects.models.DatasetEvaluatorGenerationJobSource":"Azure.AI.Projects.DatasetEvaluatorGenerationJobSource","com.azure.ai.projects.models.DatasetReference":"Azure.AI.Projects.DatasetReference","com.azure.ai.projects.models.DatasetType":"Azure.AI.Projects.DatasetType","com.azure.ai.projects.models.DatasetVersion":"Azure.AI.Projects.DatasetVersion","com.azure.ai.projects.models.Deployment":"Azure.AI.Projects.Deployment","com.azure.ai.projects.models.DeploymentType":"Azure.AI.Projects.DeploymentType","com.azure.ai.projects.models.Dimension":"Azure.AI.Projects.Dimension","com.azure.ai.projects.models.DispatchRoutineResult":"Azure.AI.Projects.DispatchRoutineResponse","com.azure.ai.projects.models.EmbeddingConfiguration":"Azure.AI.Projects.EmbeddingConfiguration","com.azure.ai.projects.models.EndpointBasedEvaluatorDefinition":"Azure.AI.Projects.EndpointBasedEvaluatorDefinition","com.azure.ai.projects.models.EntraIdCredential":"Azure.AI.Projects.EntraIDCredentials","com.azure.ai.projects.models.EvaluationComparisonInsightRequest":"Azure.AI.Projects.EvaluationComparisonInsightRequest","com.azure.ai.projects.models.EvaluationComparisonInsightResult":"Azure.AI.Projects.EvaluationComparisonInsightResult","com.azure.ai.projects.models.EvaluationLevel":"Azure.AI.Projects.EvaluationLevel","com.azure.ai.projects.models.EvaluationResult":"Azure.AI.Projects.EvalResult","com.azure.ai.projects.models.EvaluationResultSample":"Azure.AI.Projects.EvaluationResultSample","com.azure.ai.projects.models.EvaluationRule":"Azure.AI.Projects.EvaluationRule","com.azure.ai.projects.models.EvaluationRuleAction":"Azure.AI.Projects.EvaluationRuleAction","com.azure.ai.projects.models.EvaluationRuleActionType":"Azure.AI.Projects.EvaluationRuleActionType","com.azure.ai.projects.models.EvaluationRuleEventType":"Azure.AI.Projects.EvaluationRuleEventType","com.azure.ai.projects.models.EvaluationRuleFilter":"Azure.AI.Projects.EvaluationRuleFilter","com.azure.ai.projects.models.EvaluationRunClusterInsightRequest":"Azure.AI.Projects.EvaluationRunClusterInsightRequest","com.azure.ai.projects.models.EvaluationRunClusterInsightResult":"Azure.AI.Projects.EvaluationRunClusterInsightResult","com.azure.ai.projects.models.EvaluationRunResultCompareItem":"Azure.AI.Projects.EvalRunResultCompareItem","com.azure.ai.projects.models.EvaluationRunResultComparison":"Azure.AI.Projects.EvalRunResultComparison","com.azure.ai.projects.models.EvaluationRunResultSummary":"Azure.AI.Projects.EvalRunResultSummary","com.azure.ai.projects.models.EvaluationScheduleTask":"Azure.AI.Projects.EvaluationScheduleTask","com.azure.ai.projects.models.EvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomy","com.azure.ai.projects.models.EvaluationTaxonomyInput":"Azure.AI.Projects.EvaluationTaxonomyInput","com.azure.ai.projects.models.EvaluationTaxonomyInputType":"Azure.AI.Projects.EvaluationTaxonomyInputType","com.azure.ai.projects.models.EvaluatorCategory":"Azure.AI.Projects.EvaluatorCategory","com.azure.ai.projects.models.EvaluatorCredentialInput":"Azure.AI.Projects.EvaluatorCredentialRequest","com.azure.ai.projects.models.EvaluatorDefinition":"Azure.AI.Projects.EvaluatorDefinition","com.azure.ai.projects.models.EvaluatorDefinitionType":"Azure.AI.Projects.EvaluatorDefinitionType","com.azure.ai.projects.models.EvaluatorGenerationArtifacts":"Azure.AI.Projects.EvaluatorGenerationArtifacts","com.azure.ai.projects.models.EvaluatorGenerationInputs":"Azure.AI.Projects.EvaluatorGenerationInputs","com.azure.ai.projects.models.EvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJob","com.azure.ai.projects.models.EvaluatorGenerationJobSource":"Azure.AI.Projects.EvaluatorGenerationJobSource","com.azure.ai.projects.models.EvaluatorGenerationJobSourceType":"Azure.AI.Projects.EvaluatorGenerationJobSourceType","com.azure.ai.projects.models.EvaluatorGenerationTokenUsage":"Azure.AI.Projects.EvaluatorGenerationTokenUsage","com.azure.ai.projects.models.EvaluatorMetric":"Azure.AI.Projects.EvaluatorMetric","com.azure.ai.projects.models.EvaluatorMetricDirection":"Azure.AI.Projects.EvaluatorMetricDirection","com.azure.ai.projects.models.EvaluatorMetricType":"Azure.AI.Projects.EvaluatorMetricType","com.azure.ai.projects.models.EvaluatorType":"Azure.AI.Projects.EvaluatorType","com.azure.ai.projects.models.EvaluatorVersion":"Azure.AI.Projects.EvaluatorVersion","com.azure.ai.projects.models.FieldMapping":"Azure.AI.Projects.FieldMapping","com.azure.ai.projects.models.FileDataGenerationJobOutput":"Azure.AI.Projects.FileDataGenerationJobOutput","com.azure.ai.projects.models.FileDataGenerationJobSource":"Azure.AI.Projects.FileDataGenerationJobSource","com.azure.ai.projects.models.FileDatasetVersion":"Azure.AI.Projects.FileDatasetVersion","com.azure.ai.projects.models.FolderDatasetVersion":"Azure.AI.Projects.FolderDatasetVersion","com.azure.ai.projects.models.FoundryEvaluationTarget":"Azure.AI.Projects.FoundryEvaluationTarget","com.azure.ai.projects.models.FoundryModelArtifactProfileCategory":"Azure.AI.Projects.FoundryModelArtifactProfileCategory","com.azure.ai.projects.models.FoundryModelArtifactProfileSignal":"Azure.AI.Projects.FoundryModelArtifactProfileSignal","com.azure.ai.projects.models.FoundryModelSourceType":"Azure.AI.Projects.FoundryModelSourceType","com.azure.ai.projects.models.FoundryModelWarning":"Azure.AI.Projects.FoundryModelWarning","com.azure.ai.projects.models.FoundryModelWarningCode":"Azure.AI.Projects.FoundryModelWarningCode","com.azure.ai.projects.models.FoundryModelWeightType":"Azure.AI.Projects.FoundryModelWeightType","com.azure.ai.projects.models.GenerationWarningType":"Azure.AI.Projects.GenerationWarningType","com.azure.ai.projects.models.GitHubIssueEvent":"Azure.AI.Projects.GitHubIssueEvent","com.azure.ai.projects.models.GitHubIssueRoutineTrigger":"Azure.AI.Projects.GitHubIssueRoutineTrigger","com.azure.ai.projects.models.GraderAzureAIEvaluator":"Azure.AI.Projects.GraderAzureAIEvaluator","com.azure.ai.projects.models.HourlyRecurrenceSchedule":"Azure.AI.Projects.HourlyRecurrenceSchedule","com.azure.ai.projects.models.HumanEvaluationPreviewRuleAction":"Azure.AI.Projects.HumanEvaluationPreviewRuleAction","com.azure.ai.projects.models.IndexType":"Azure.AI.Projects.IndexType","com.azure.ai.projects.models.Insight":"Azure.AI.Projects.Insight","com.azure.ai.projects.models.InsightCluster":"Azure.AI.Projects.InsightCluster","com.azure.ai.projects.models.InsightModelConfiguration":"Azure.AI.Projects.InsightModelConfiguration","com.azure.ai.projects.models.InsightRequest":"Azure.AI.Projects.InsightRequest","com.azure.ai.projects.models.InsightResult":"Azure.AI.Projects.InsightResult","com.azure.ai.projects.models.InsightSample":"Azure.AI.Projects.InsightSample","com.azure.ai.projects.models.InsightScheduleTask":"Azure.AI.Projects.InsightScheduleTask","com.azure.ai.projects.models.InsightSummary":"Azure.AI.Projects.InsightSummary","com.azure.ai.projects.models.InsightType":"Azure.AI.Projects.InsightType","com.azure.ai.projects.models.InsightsMetadata":"Azure.AI.Projects.InsightsMetadata","com.azure.ai.projects.models.InvokeAgentInvocationsApiDispatchPayload":"Azure.AI.Projects.InvokeAgentInvocationsApiDispatchPayload","com.azure.ai.projects.models.InvokeAgentInvocationsApiRoutineAction":"Azure.AI.Projects.InvokeAgentInvocationsApiRoutineAction","com.azure.ai.projects.models.InvokeAgentResponsesApiDispatchPayload":"Azure.AI.Projects.InvokeAgentResponsesApiDispatchPayload","com.azure.ai.projects.models.InvokeAgentResponsesApiRoutineAction":"Azure.AI.Projects.InvokeAgentResponsesApiRoutineAction","com.azure.ai.projects.models.JobStatus":"Azure.AI.Projects.JobStatus","com.azure.ai.projects.models.ListVersionsRequestType":"Azure.AI.Projects.listVersions.RequestType.anonymous","com.azure.ai.projects.models.LoraConfig":"Azure.AI.Projects.LoraConfig","com.azure.ai.projects.models.ManagedAzureAISearchIndex":"Azure.AI.Projects.ManagedAzureAISearchIndex","com.azure.ai.projects.models.ModelCredentialInput":"Azure.AI.Projects.ModelCredentialRequest","com.azure.ai.projects.models.ModelDeployment":"Azure.AI.Projects.ModelDeployment","com.azure.ai.projects.models.ModelDeploymentSku":"Azure.AI.Projects.Sku","com.azure.ai.projects.models.ModelPendingUploadInput":"Azure.AI.Projects.ModelPendingUploadRequest","com.azure.ai.projects.models.ModelPendingUploadResult":"Azure.AI.Projects.ModelPendingUploadResponse","com.azure.ai.projects.models.ModelSamplingParams":"Azure.AI.Projects.ModelSamplingParams","com.azure.ai.projects.models.ModelSourceData":"Azure.AI.Projects.ModelSourceData","com.azure.ai.projects.models.ModelVersion":"Azure.AI.Projects.ModelVersion","com.azure.ai.projects.models.MonthlyRecurrenceSchedule":"Azure.AI.Projects.MonthlyRecurrenceSchedule","com.azure.ai.projects.models.NoAuthenticationCredential":"Azure.AI.Projects.NoAuthenticationCredentials","com.azure.ai.projects.models.OneTimeTrigger":"Azure.AI.Projects.OneTimeTrigger","com.azure.ai.projects.models.OperationStatus":"Azure.Core.Foundations.OperationState","com.azure.ai.projects.models.PendingUploadRequest":"Azure.AI.Projects.PendingUploadRequest","com.azure.ai.projects.models.PendingUploadResponse":"Azure.AI.Projects.PendingUploadResponse","com.azure.ai.projects.models.PendingUploadType":"Azure.AI.Projects.PendingUploadType","com.azure.ai.projects.models.PromptBasedEvaluatorDefinition":"Azure.AI.Projects.PromptBasedEvaluatorDefinition","com.azure.ai.projects.models.PromptDataGenerationJobSource":"Azure.AI.Projects.PromptDataGenerationJobSource","com.azure.ai.projects.models.PromptEvaluatorGenerationJobSource":"Azure.AI.Projects.PromptEvaluatorGenerationJobSource","com.azure.ai.projects.models.RecurrenceSchedule":"Azure.AI.Projects.RecurrenceSchedule","com.azure.ai.projects.models.RecurrenceTrigger":"Azure.AI.Projects.RecurrenceTrigger","com.azure.ai.projects.models.RecurrenceType":"Azure.AI.Projects.RecurrenceType","com.azure.ai.projects.models.RedTeam":"Azure.AI.Projects.RedTeam","com.azure.ai.projects.models.RiskCategory":"Azure.AI.Projects.RiskCategory","com.azure.ai.projects.models.Routine":"Azure.AI.Projects.Routine","com.azure.ai.projects.models.RoutineAction":"Azure.AI.Projects.RoutineAction","com.azure.ai.projects.models.RoutineActionType":"Azure.AI.Projects.RoutineActionType","com.azure.ai.projects.models.RoutineAttemptSource":"Azure.AI.Projects.RoutineAttemptSource","com.azure.ai.projects.models.RoutineAuthorization":"Azure.AI.Projects.RoutineAuthorization","com.azure.ai.projects.models.RoutineDispatchIdentity":"Azure.AI.Projects.RoutineDispatchIdentity","com.azure.ai.projects.models.RoutineDispatchPayload":"Azure.AI.Projects.RoutineDispatchPayload","com.azure.ai.projects.models.RoutineDispatchPayloadType":"Azure.AI.Projects.RoutineDispatchPayloadType","com.azure.ai.projects.models.RoutineRun":"Azure.AI.Projects.RoutineRun","com.azure.ai.projects.models.RoutineRunPhase":"Azure.AI.Projects.RoutineRunPhase","com.azure.ai.projects.models.RoutineTrigger":"Azure.AI.Projects.RoutineTrigger","com.azure.ai.projects.models.RoutineTriggerType":"Azure.AI.Projects.RoutineTriggerType","com.azure.ai.projects.models.RubricBasedEvaluatorDefinition":"Azure.AI.Projects.RubricBasedEvaluatorDefinition","com.azure.ai.projects.models.RubricGenerationInputQualityWarning":"Azure.AI.Projects.RubricGenerationInputQualityWarning","com.azure.ai.projects.models.RubricGenerationInputQualityWarningCode":"Azure.AI.Projects.RubricGenerationInputQualityWarningCode","com.azure.ai.projects.models.RubricGenerationInputQualityWarningSeverity":"Azure.AI.Projects.RubricGenerationInputQualityWarningSeverity","com.azure.ai.projects.models.RubricGenerationInputQualityWarningSource":"Azure.AI.Projects.RubricGenerationInputQualityWarningSource","com.azure.ai.projects.models.SampleType":"Azure.AI.Projects.SampleType","com.azure.ai.projects.models.SasCredential":"Azure.AI.Projects.SASCredentials","com.azure.ai.projects.models.Schedule":"Azure.AI.Projects.Schedule","com.azure.ai.projects.models.ScheduleProvisioningStatus":"Azure.AI.Projects.ScheduleProvisioningStatus","com.azure.ai.projects.models.ScheduleRoutineTrigger":"Azure.AI.Projects.ScheduleRoutineTrigger","com.azure.ai.projects.models.ScheduleRun":"Azure.AI.Projects.ScheduleRun","com.azure.ai.projects.models.ScheduleTask":"Azure.AI.Projects.ScheduleTask","com.azure.ai.projects.models.ScheduleTaskType":"Azure.AI.Projects.ScheduleTaskType","com.azure.ai.projects.models.SimpleQnADataGenerationJobOptions":"Azure.AI.Projects.SimpleQnADataGenerationJobOptions","com.azure.ai.projects.models.SimpleQnAFineTuningQuestionType":"Azure.AI.Projects.SimpleQnAFineTuningQuestionType","com.azure.ai.projects.models.SimulationSeedDataGenerationJobOptions":"Azure.AI.Projects.SimulationSeedDataGenerationJobOptions","com.azure.ai.projects.models.SkillDetails":"Azure.AI.Projects.Skill","com.azure.ai.projects.models.SkillFileDetails":"TypeSpec.Http.File","com.azure.ai.projects.models.SkillInlineContent":"Azure.AI.Projects.SkillInlineContent","com.azure.ai.projects.models.SkillVersion":"Azure.AI.Projects.SkillVersion","com.azure.ai.projects.models.TargetConfig":"Azure.AI.Projects.RedTeamTargetConfig","com.azure.ai.projects.models.TaxonomyCategory":"Azure.AI.Projects.TaxonomyCategory","com.azure.ai.projects.models.TaxonomySubCategory":"Azure.AI.Projects.TaxonomySubCategory","com.azure.ai.projects.models.TestingCriterionAzureAIEvaluator":"Azure.AI.Projects.TestingCriterionAzureAIEvaluator","com.azure.ai.projects.models.TimerRoutineTrigger":"Azure.AI.Projects.TimerRoutineTrigger","com.azure.ai.projects.models.ToolDescription":"Azure.AI.Projects.ToolDescription","com.azure.ai.projects.models.ToolUseFineTuningDataGenerationJobOptions":"Azure.AI.Projects.ToolUseFineTuningDataGenerationJobOptions","com.azure.ai.projects.models.TracesDataGenerationJobOptions":"Azure.AI.Projects.TracesDataGenerationJobOptions","com.azure.ai.projects.models.TracesDataGenerationJobSource":"Azure.AI.Projects.TracesDataGenerationJobSource","com.azure.ai.projects.models.TracesEvaluatorGenerationJobSource":"Azure.AI.Projects.TracesEvaluatorGenerationJobSource","com.azure.ai.projects.models.TreatmentEffectType":"Azure.AI.Projects.TreatmentEffectType","com.azure.ai.projects.models.Trigger":"Azure.AI.Projects.Trigger","com.azure.ai.projects.models.TriggerType":"Azure.AI.Projects.TriggerType","com.azure.ai.projects.models.UpdateModelVersionInput":"Azure.AI.Projects.UpdateModelVersionRequest","com.azure.ai.projects.models.WeeklyRecurrenceSchedule":"Azure.AI.Projects.WeeklyRecurrenceSchedule"},"generatedFiles":["src/main/java/com/azure/ai/projects/AIProjectClientBuilder.java","src/main/java/com/azure/ai/projects/AIProjectsServiceVersion.java","src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsClient.java","src/main/java/com/azure/ai/projects/BetaDatasetsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaDatasetsClient.java","src/main/java/com/azure/ai/projects/BetaEvaluationTaxonomiesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaEvaluationTaxonomiesClient.java","src/main/java/com/azure/ai/projects/BetaEvaluatorsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaEvaluatorsClient.java","src/main/java/com/azure/ai/projects/BetaInsightsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaInsightsClient.java","src/main/java/com/azure/ai/projects/BetaModelsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaModelsClient.java","src/main/java/com/azure/ai/projects/BetaRedTeamsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaRedTeamsClient.java","src/main/java/com/azure/ai/projects/BetaRoutinesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaRoutinesClient.java","src/main/java/com/azure/ai/projects/BetaSchedulesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaSchedulesClient.java","src/main/java/com/azure/ai/projects/BetaSkillsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaSkillsClient.java","src/main/java/com/azure/ai/projects/ConnectionsAsyncClient.java","src/main/java/com/azure/ai/projects/ConnectionsClient.java","src/main/java/com/azure/ai/projects/DatasetsAsyncClient.java","src/main/java/com/azure/ai/projects/DatasetsClient.java","src/main/java/com/azure/ai/projects/DeploymentsAsyncClient.java","src/main/java/com/azure/ai/projects/DeploymentsClient.java","src/main/java/com/azure/ai/projects/EvaluationRulesAsyncClient.java","src/main/java/com/azure/ai/projects/EvaluationRulesClient.java","src/main/java/com/azure/ai/projects/IndexesAsyncClient.java","src/main/java/com/azure/ai/projects/IndexesClient.java","src/main/java/com/azure/ai/projects/implementation/AIProjectClientImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaAgentInsightMonitorsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaDatasetsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaEvaluationTaxonomiesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaEvaluatorsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaInsightsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaModelsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaRedTeamsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaRoutinesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaSchedulesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaSkillsImpl.java","src/main/java/com/azure/ai/projects/implementation/ConnectionsImpl.java","src/main/java/com/azure/ai/projects/implementation/DatasetsImpl.java","src/main/java/com/azure/ai/projects/implementation/DeploymentsImpl.java","src/main/java/com/azure/ai/projects/implementation/EvaluationRulesImpl.java","src/main/java/com/azure/ai/projects/implementation/IndexesImpl.java","src/main/java/com/azure/ai/projects/implementation/JsonMergePatchHelper.java","src/main/java/com/azure/ai/projects/implementation/MultipartFormDataHelper.java","src/main/java/com/azure/ai/projects/implementation/OperationLocationPollingStrategy.java","src/main/java/com/azure/ai/projects/implementation/PollingUtils.java","src/main/java/com/azure/ai/projects/implementation/SyncOperationLocationPollingStrategy.java","src/main/java/com/azure/ai/projects/implementation/models/CreateOrUpdateRoutineRequest.java","src/main/java/com/azure/ai/projects/implementation/models/CreateSkillVersionRequest.java","src/main/java/com/azure/ai/projects/implementation/models/DispatchRoutineAsyncRequest.java","src/main/java/com/azure/ai/projects/implementation/models/FoundryFeaturesOptInKeys.java","src/main/java/com/azure/ai/projects/implementation/models/UpdateSkillRequest.java","src/main/java/com/azure/ai/projects/implementation/models/package-info.java","src/main/java/com/azure/ai/projects/implementation/package-info.java","src/main/java/com/azure/ai/projects/models/AIProjectIndex.java","src/main/java/com/azure/ai/projects/models/AgentClusterInsightRequest.java","src/main/java/com/azure/ai/projects/models/AgentClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/AgentDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/AgentEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/AgentInsight.java","src/main/java/com/azure/ai/projects/models/AgentInsightDetails.java","src/main/java/com/azure/ai/projects/models/AgentInsightEstimatedCost.java","src/main/java/com/azure/ai/projects/models/AgentInsightHighlightedTrace.java","src/main/java/com/azure/ai/projects/models/AgentInsightLinkedTrace.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitor.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorCreate.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorListItem.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorUpdate.java","src/main/java/com/azure/ai/projects/models/AgentInsightOverviewSource.java","src/main/java/com/azure/ai/projects/models/AgentInsightPromptSurface.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFix.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFixChange.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFixKind.java","src/main/java/com/azure/ai/projects/models/AgentInsightRecommendedAction.java","src/main/java/com/azure/ai/projects/models/AgentInsightRun.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunCreate.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunResult.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunTrigger.java","src/main/java/com/azure/ai/projects/models/AgentInsightSeverity.java","src/main/java/com/azure/ai/projects/models/AgentInsightStatus.java","src/main/java/com/azure/ai/projects/models/AgentInsightSuspension.java","src/main/java/com/azure/ai/projects/models/AgentInsightTokenUsage.java","src/main/java/com/azure/ai/projects/models/AgentInsightUpdate.java","src/main/java/com/azure/ai/projects/models/AgentInsightsOverview.java","src/main/java/com/azure/ai/projects/models/AgentInsightsOverviewOverride.java","src/main/java/com/azure/ai/projects/models/AgentTaxonomyInput.java","src/main/java/com/azure/ai/projects/models/AgenticIdentityPreviewCredential.java","src/main/java/com/azure/ai/projects/models/ApiError.java","src/main/java/com/azure/ai/projects/models/ApiKeyCredential.java","src/main/java/com/azure/ai/projects/models/ArtifactProfile.java","src/main/java/com/azure/ai/projects/models/AttackStrategy.java","src/main/java/com/azure/ai/projects/models/AzureAIAgentTarget.java","src/main/java/com/azure/ai/projects/models/AzureAIModelTarget.java","src/main/java/com/azure/ai/projects/models/AzureAISearchIndex.java","src/main/java/com/azure/ai/projects/models/AzureOpenAIModelConfiguration.java","src/main/java/com/azure/ai/projects/models/BaseCredential.java","src/main/java/com/azure/ai/projects/models/BlobReference.java","src/main/java/com/azure/ai/projects/models/BlobReferenceSasCredential.java","src/main/java/com/azure/ai/projects/models/ChartCoordinate.java","src/main/java/com/azure/ai/projects/models/ClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/ClusterTokenUsage.java","src/main/java/com/azure/ai/projects/models/CodeBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/Connection.java","src/main/java/com/azure/ai/projects/models/ConnectionType.java","src/main/java/com/azure/ai/projects/models/ContinuousEvaluationRuleAction.java","src/main/java/com/azure/ai/projects/models/CosmosDBIndex.java","src/main/java/com/azure/ai/projects/models/CreateAsyncResponse.java","src/main/java/com/azure/ai/projects/models/CreateSkillVersionFromFilesBody.java","src/main/java/com/azure/ai/projects/models/CredentialType.java","src/main/java/com/azure/ai/projects/models/CronTrigger.java","src/main/java/com/azure/ai/projects/models/CustomCredential.java","src/main/java/com/azure/ai/projects/models/CustomRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/DailyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/DataGenerationJob.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobInputs.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputType.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobResult.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobScenario.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobSourceType.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobType.java","src/main/java/com/azure/ai/projects/models/DataGenerationModelOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationTokenUsage.java","src/main/java/com/azure/ai/projects/models/DatasetCredential.java","src/main/java/com/azure/ai/projects/models/DatasetDataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/DatasetEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/DatasetReference.java","src/main/java/com/azure/ai/projects/models/DatasetType.java","src/main/java/com/azure/ai/projects/models/DatasetVersion.java","src/main/java/com/azure/ai/projects/models/Deployment.java","src/main/java/com/azure/ai/projects/models/DeploymentType.java","src/main/java/com/azure/ai/projects/models/Dimension.java","src/main/java/com/azure/ai/projects/models/DispatchRoutineResult.java","src/main/java/com/azure/ai/projects/models/EmbeddingConfiguration.java","src/main/java/com/azure/ai/projects/models/EndpointBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/EntraIdCredential.java","src/main/java/com/azure/ai/projects/models/EvaluationComparisonInsightRequest.java","src/main/java/com/azure/ai/projects/models/EvaluationComparisonInsightResult.java","src/main/java/com/azure/ai/projects/models/EvaluationLevel.java","src/main/java/com/azure/ai/projects/models/EvaluationResult.java","src/main/java/com/azure/ai/projects/models/EvaluationResultSample.java","src/main/java/com/azure/ai/projects/models/EvaluationRule.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleAction.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleActionType.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleEventType.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleFilter.java","src/main/java/com/azure/ai/projects/models/EvaluationRunClusterInsightRequest.java","src/main/java/com/azure/ai/projects/models/EvaluationRunClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultCompareItem.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultComparison.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultSummary.java","src/main/java/com/azure/ai/projects/models/EvaluationScheduleTask.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomy.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomyInput.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomyInputType.java","src/main/java/com/azure/ai/projects/models/EvaluatorCategory.java","src/main/java/com/azure/ai/projects/models/EvaluatorCredentialInput.java","src/main/java/com/azure/ai/projects/models/EvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/EvaluatorDefinitionType.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationArtifacts.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationInputs.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJob.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJobSourceType.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationTokenUsage.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetric.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetricDirection.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetricType.java","src/main/java/com/azure/ai/projects/models/EvaluatorType.java","src/main/java/com/azure/ai/projects/models/EvaluatorVersion.java","src/main/java/com/azure/ai/projects/models/FieldMapping.java","src/main/java/com/azure/ai/projects/models/FileDataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/FileDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/FileDatasetVersion.java","src/main/java/com/azure/ai/projects/models/FolderDatasetVersion.java","src/main/java/com/azure/ai/projects/models/FoundryEvaluationTarget.java","src/main/java/com/azure/ai/projects/models/FoundryModelArtifactProfileCategory.java","src/main/java/com/azure/ai/projects/models/FoundryModelArtifactProfileSignal.java","src/main/java/com/azure/ai/projects/models/FoundryModelSourceType.java","src/main/java/com/azure/ai/projects/models/FoundryModelWarning.java","src/main/java/com/azure/ai/projects/models/FoundryModelWarningCode.java","src/main/java/com/azure/ai/projects/models/FoundryModelWeightType.java","src/main/java/com/azure/ai/projects/models/GenerationWarningType.java","src/main/java/com/azure/ai/projects/models/GitHubIssueEvent.java","src/main/java/com/azure/ai/projects/models/GitHubIssueRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/GraderAzureAIEvaluator.java","src/main/java/com/azure/ai/projects/models/HourlyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/HumanEvaluationPreviewRuleAction.java","src/main/java/com/azure/ai/projects/models/IndexType.java","src/main/java/com/azure/ai/projects/models/Insight.java","src/main/java/com/azure/ai/projects/models/InsightCluster.java","src/main/java/com/azure/ai/projects/models/InsightModelConfiguration.java","src/main/java/com/azure/ai/projects/models/InsightRequest.java","src/main/java/com/azure/ai/projects/models/InsightResult.java","src/main/java/com/azure/ai/projects/models/InsightSample.java","src/main/java/com/azure/ai/projects/models/InsightScheduleTask.java","src/main/java/com/azure/ai/projects/models/InsightSummary.java","src/main/java/com/azure/ai/projects/models/InsightType.java","src/main/java/com/azure/ai/projects/models/InsightsMetadata.java","src/main/java/com/azure/ai/projects/models/InvokeAgentInvocationsApiDispatchPayload.java","src/main/java/com/azure/ai/projects/models/InvokeAgentInvocationsApiRoutineAction.java","src/main/java/com/azure/ai/projects/models/InvokeAgentResponsesApiDispatchPayload.java","src/main/java/com/azure/ai/projects/models/InvokeAgentResponsesApiRoutineAction.java","src/main/java/com/azure/ai/projects/models/JobStatus.java","src/main/java/com/azure/ai/projects/models/ListVersionsRequestType.java","src/main/java/com/azure/ai/projects/models/LoraConfig.java","src/main/java/com/azure/ai/projects/models/ManagedAzureAISearchIndex.java","src/main/java/com/azure/ai/projects/models/ModelCredentialInput.java","src/main/java/com/azure/ai/projects/models/ModelDeployment.java","src/main/java/com/azure/ai/projects/models/ModelDeploymentSku.java","src/main/java/com/azure/ai/projects/models/ModelPendingUploadInput.java","src/main/java/com/azure/ai/projects/models/ModelPendingUploadResult.java","src/main/java/com/azure/ai/projects/models/ModelSamplingParams.java","src/main/java/com/azure/ai/projects/models/ModelSourceData.java","src/main/java/com/azure/ai/projects/models/ModelVersion.java","src/main/java/com/azure/ai/projects/models/MonthlyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/NoAuthenticationCredential.java","src/main/java/com/azure/ai/projects/models/OneTimeTrigger.java","src/main/java/com/azure/ai/projects/models/OperationStatus.java","src/main/java/com/azure/ai/projects/models/PendingUploadRequest.java","src/main/java/com/azure/ai/projects/models/PendingUploadResponse.java","src/main/java/com/azure/ai/projects/models/PendingUploadType.java","src/main/java/com/azure/ai/projects/models/PromptBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/PromptDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/PromptEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/RecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/RecurrenceTrigger.java","src/main/java/com/azure/ai/projects/models/RecurrenceType.java","src/main/java/com/azure/ai/projects/models/RedTeam.java","src/main/java/com/azure/ai/projects/models/RiskCategory.java","src/main/java/com/azure/ai/projects/models/Routine.java","src/main/java/com/azure/ai/projects/models/RoutineAction.java","src/main/java/com/azure/ai/projects/models/RoutineActionType.java","src/main/java/com/azure/ai/projects/models/RoutineAttemptSource.java","src/main/java/com/azure/ai/projects/models/RoutineAuthorization.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchIdentity.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchPayload.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchPayloadType.java","src/main/java/com/azure/ai/projects/models/RoutineRun.java","src/main/java/com/azure/ai/projects/models/RoutineRunPhase.java","src/main/java/com/azure/ai/projects/models/RoutineTrigger.java","src/main/java/com/azure/ai/projects/models/RoutineTriggerType.java","src/main/java/com/azure/ai/projects/models/RubricBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarning.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningCode.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningSeverity.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningSource.java","src/main/java/com/azure/ai/projects/models/SampleType.java","src/main/java/com/azure/ai/projects/models/SasCredential.java","src/main/java/com/azure/ai/projects/models/Schedule.java","src/main/java/com/azure/ai/projects/models/ScheduleProvisioningStatus.java","src/main/java/com/azure/ai/projects/models/ScheduleRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/ScheduleRun.java","src/main/java/com/azure/ai/projects/models/ScheduleTask.java","src/main/java/com/azure/ai/projects/models/ScheduleTaskType.java","src/main/java/com/azure/ai/projects/models/SimpleQnADataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/SimpleQnAFineTuningQuestionType.java","src/main/java/com/azure/ai/projects/models/SimulationSeedDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/SkillDetails.java","src/main/java/com/azure/ai/projects/models/SkillFileDetails.java","src/main/java/com/azure/ai/projects/models/SkillInlineContent.java","src/main/java/com/azure/ai/projects/models/SkillVersion.java","src/main/java/com/azure/ai/projects/models/TargetConfig.java","src/main/java/com/azure/ai/projects/models/TaxonomyCategory.java","src/main/java/com/azure/ai/projects/models/TaxonomySubCategory.java","src/main/java/com/azure/ai/projects/models/TestingCriterionAzureAIEvaluator.java","src/main/java/com/azure/ai/projects/models/TimerRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/ToolDescription.java","src/main/java/com/azure/ai/projects/models/ToolUseFineTuningDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/TracesEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/TreatmentEffectType.java","src/main/java/com/azure/ai/projects/models/Trigger.java","src/main/java/com/azure/ai/projects/models/TriggerType.java","src/main/java/com/azure/ai/projects/models/UpdateModelVersionInput.java","src/main/java/com/azure/ai/projects/models/WeeklyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/package-info.java","src/main/java/com/azure/ai/projects/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file diff --git a/sdk/ai/azure-ai-projects/tsp-location.yaml b/sdk/ai/azure-ai-projects/tsp-location.yaml index 7a199c91ee57c..a600d8eb85d1c 100644 --- a/sdk/ai/azure-ai-projects/tsp-location.yaml +++ b/sdk/ai/azure-ai-projects/tsp-location.yaml @@ -1,26 +1,26 @@ directory: specification/ai-foundry/data-plane/Foundry/src/sdk-java-azure-ai-projects -commit: 0d22a924f520701e886d6ce3afd49abc0d6548d1 +commit: b25b27f1034082e994bdb68e33eb52bdfae2f3e9 repo: Azure/azure-rest-api-specs -additionalDirectories: - - specification/ai-foundry/data-plane/Foundry/src/sdk-common - - specification/ai-foundry/data-plane/Foundry/src/agent-insights - - specification/ai-foundry/data-plane/Foundry/src/agents-session-files - - specification/ai-foundry/data-plane/Foundry/src/common - - specification/ai-foundry/data-plane/Foundry/src/connections - - specification/ai-foundry/data-plane/Foundry/src/data_generation_jobs - - specification/ai-foundry/data-plane/Foundry/src/datasets - - specification/ai-foundry/data-plane/Foundry/src/deployments - - specification/ai-foundry/data-plane/Foundry/src/evaluation-rules - - specification/ai-foundry/data-plane/Foundry/src/evaluation-taxonomies - - specification/ai-foundry/data-plane/Foundry/src/evaluators - - specification/ai-foundry/data-plane/Foundry/src/indexes - - specification/ai-foundry/data-plane/Foundry/src/insights - - specification/ai-foundry/data-plane/Foundry/src/memory-stores - - specification/ai-foundry/data-plane/Foundry/src/models - - specification/ai-foundry/data-plane/Foundry/src/openai - - specification/ai-foundry/data-plane/Foundry/src/red-teams - - specification/ai-foundry/data-plane/Foundry/src/routines - - specification/ai-foundry/data-plane/Foundry/src/schedules - - specification/ai-foundry/data-plane/Foundry/src/skills - - specification/ai-foundry/data-plane/Foundry/src/toolboxes - - specification/ai-foundry/data-plane/Foundry/src/tools +additionalDirectories: +- specification/ai-foundry/data-plane/Foundry/src/agent-insights +- specification/ai-foundry/data-plane/Foundry/src/sdk-common +- specification/ai-foundry/data-plane/Foundry/src/agents-session-files +- specification/ai-foundry/data-plane/Foundry/src/common +- specification/ai-foundry/data-plane/Foundry/src/connections +- specification/ai-foundry/data-plane/Foundry/src/data_generation_jobs +- specification/ai-foundry/data-plane/Foundry/src/datasets +- specification/ai-foundry/data-plane/Foundry/src/deployments +- specification/ai-foundry/data-plane/Foundry/src/evaluation-rules +- specification/ai-foundry/data-plane/Foundry/src/evaluation-taxonomies +- specification/ai-foundry/data-plane/Foundry/src/evaluators +- specification/ai-foundry/data-plane/Foundry/src/indexes +- specification/ai-foundry/data-plane/Foundry/src/insights +- specification/ai-foundry/data-plane/Foundry/src/memory-stores +- specification/ai-foundry/data-plane/Foundry/src/models +- specification/ai-foundry/data-plane/Foundry/src/openai +- specification/ai-foundry/data-plane/Foundry/src/red-teams +- specification/ai-foundry/data-plane/Foundry/src/routines +- specification/ai-foundry/data-plane/Foundry/src/schedules +- specification/ai-foundry/data-plane/Foundry/src/skills +- specification/ai-foundry/data-plane/Foundry/src/toolboxes +- specification/ai-foundry/data-plane/Foundry/src/tools diff --git a/sdk/ai/cspell.yml b/sdk/ai/cspell.yml index 2b02789c352bf..517d3bc6fe23b 100644 --- a/sdk/ai/cspell.yml +++ b/sdk/ai/cspell.yml @@ -18,6 +18,7 @@ words: - "pcmu" - "PSTN" - "sixx" + - "telephonies" - "ubinary" - "uhhm" - "upia" From d0f273316a02c80062872bf28746530e28374066 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Wed, 9 Sep 2026 12:28:45 +0800 Subject: [PATCH 12/29] Fix Revapi checks for preview API changes --- sdk/ai/azure-ai-agents/revapi.json | 5 +++++ sdk/ai/azure-ai-projects/revapi.json | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/sdk/ai/azure-ai-agents/revapi.json b/sdk/ai/azure-ai-agents/revapi.json index 0cac272ed8c83..b58d879d2134f 100644 --- a/sdk/ai/azure-ai-agents/revapi.json +++ b/sdk/ai/azure-ai-agents/revapi.json @@ -95,6 +95,11 @@ "code": "java\\.class\\.removed", "old": "class com\\.azure\\.ai\\.agents\\.models\\.(AgentOptimizationEvaluatorRef|OptimizationAgentIdentifier|OptimizationCandidate|OptimizationDatasetCriterion|OptimizationDatasetInput|OptimizationDatasetInputType|OptimizationDatasetItem|OptimizationEvaluatorRef|OptimizationInlineDatasetInput|OptimizationJob|OptimizationJobInputs|OptimizationJobListItem|OptimizationJobProgress|OptimizationJobResult|OptimizationOptions|OptimizationReferenceDatasetInput|ProgrammaticToolCallingParameter)", "justification": "Breaking change in beta operation: legacy optimization and programmatic tool-calling models were removed or replaced while aligning with the current preview service contract." + }, + { + "code": "java.method.removed", + "old": "method double com.azure.ai.agents.models.AgentOptimizationJobProgress::getElapsedSeconds()", + "justification": "Breaking change in beta operation: getElapsedSeconds was replaced by the Duration-returning getElapsed method to align with the current AgentsOptimization preview contract." } ] } diff --git a/sdk/ai/azure-ai-projects/revapi.json b/sdk/ai/azure-ai-projects/revapi.json index 008bf6d6b4caa..8ebf9addfbac2 100644 --- a/sdk/ai/azure-ai-projects/revapi.json +++ b/sdk/ai/azure-ai-projects/revapi.json @@ -77,6 +77,25 @@ "code": "java\\.method\\.numberOfParametersChanged", "old": "method .* com\\.azure\\.ai\\.projects\\.BetaRoutines(Async)?Client::createOrUpdateRoutine\\(.*\\)", "justification": "Breaking change in beta operation: BetaRoutines(Async)Client createOrUpdateRoutine takes an additional optional 'authorization' parameter to align with the current Routines preview contract." + }, + { + "regex": true, + "code": "java\\.method\\.(parameterTypeChanged|returnTypeChanged)", + "old": "(parameter void|method com\\.azure\\.ai\\.projects\\.models\\.Target) com\\.azure\\.ai\\.projects\\.models\\.AgentTaxonomyInput::(|getTarget)\\(.*\\)", + "justification": "Breaking change in beta operation: AgentTaxonomyInput now uses FoundryEvaluationTarget after Target was renamed to align with the current Evaluations preview contract." + }, + { + "code": "java.class.noLongerInheritsFromClass", + "old": { + "matcher": "regex", + "match": "class com\\.azure\\.ai\\.projects\\.models\\.(AzureAIAgentTarget|AzureAIModelTarget)" + }, + "justification": "Breaking change in beta operation: evaluation target models now inherit from FoundryEvaluationTarget after Target was renamed to align with the current Evaluations preview contract." + }, + { + "code": "java.class.removed", + "old": "class com.azure.ai.projects.models.Target", + "justification": "Breaking change in beta operation: Target was renamed to FoundryEvaluationTarget to align with the current Evaluations preview contract." } ] } From 89a87d23c9b14c1a777866f69bacb9f8ccfce9e5 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Wed, 9 Sep 2026 14:23:09 +0800 Subject: [PATCH 13/29] Remove obsolete APIView properties files Remove legacy APIView metadata resources superseded by generated metadata JSON files. --- .../azure-ai-agents_apiview_properties.json | 349 ------------------ .../azure-ai-projects_apiview_properties.json | 286 -------------- 2 files changed, 635 deletions(-) delete mode 100644 sdk/ai/azure-ai-agents/src/main/resources/META-INF/azure-ai-agents_apiview_properties.json delete mode 100644 sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_apiview_properties.json diff --git a/sdk/ai/azure-ai-agents/src/main/resources/META-INF/azure-ai-agents_apiview_properties.json b/sdk/ai/azure-ai-agents/src/main/resources/META-INF/azure-ai-agents_apiview_properties.json deleted file mode 100644 index 31419e1d191c9..0000000000000 --- a/sdk/ai/azure-ai-agents/src/main/resources/META-INF/azure-ai-agents_apiview_properties.json +++ /dev/null @@ -1,349 +0,0 @@ -{ - "flavor": "azure", - "CrossLanguageDefinitionId": { - "com.azure.ai.agents.AgentsAsyncClient": "Azure.AI.Projects.Agents", - "com.azure.ai.agents.AgentsAsyncClient.createAgent": "Azure.AI.Projects.Agents.createAgent", - "com.azure.ai.agents.AgentsAsyncClient.createAgentFromManifest": "Azure.AI.Projects.Agents.createAgentFromManifest", - "com.azure.ai.agents.AgentsAsyncClient.createAgentFromManifestWithResponse": "Azure.AI.Projects.Agents.createAgentFromManifest", - "com.azure.ai.agents.AgentsAsyncClient.createAgentVersion": "Azure.AI.Projects.Agents.createAgentVersion", - "com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromManifest": "Azure.AI.Projects.Agents.createAgentVersionFromManifest", - "com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromManifestWithResponse": "Azure.AI.Projects.Agents.createAgentVersionFromManifest", - "com.azure.ai.agents.AgentsAsyncClient.createAgentVersionWithResponse": "Azure.AI.Projects.Agents.createAgentVersion", - "com.azure.ai.agents.AgentsAsyncClient.createAgentWithResponse": "Azure.AI.Projects.Agents.createAgent", - "com.azure.ai.agents.AgentsAsyncClient.deleteAgent": "Azure.AI.Projects.Agents.deleteAgent", - "com.azure.ai.agents.AgentsAsyncClient.deleteAgentVersion": "Azure.AI.Projects.Agents.deleteAgentVersion", - "com.azure.ai.agents.AgentsAsyncClient.deleteAgentVersionWithResponse": "Azure.AI.Projects.Agents.deleteAgentVersion", - "com.azure.ai.agents.AgentsAsyncClient.deleteAgentWithResponse": "Azure.AI.Projects.Agents.deleteAgent", - "com.azure.ai.agents.AgentsAsyncClient.getAgent": "Azure.AI.Projects.Agents.getAgent", - "com.azure.ai.agents.AgentsAsyncClient.getAgentVersionDetails": "Azure.AI.Projects.Agents.getAgentVersion", - "com.azure.ai.agents.AgentsAsyncClient.getAgentVersionDetailsWithResponse": "Azure.AI.Projects.Agents.getAgentVersion", - "com.azure.ai.agents.AgentsAsyncClient.getAgentWithResponse": "Azure.AI.Projects.Agents.getAgent", - "com.azure.ai.agents.AgentsAsyncClient.listAgentVersions": "Azure.AI.Projects.Agents.listAgentVersions", - "com.azure.ai.agents.AgentsAsyncClient.listAgents": "Azure.AI.Projects.Agents.listAgents", - "com.azure.ai.agents.AgentsAsyncClient.updateAgent": "Azure.AI.Projects.Agents.updateAgent", - "com.azure.ai.agents.AgentsAsyncClient.updateAgentFromManifest": "Azure.AI.Projects.Agents.updateAgentFromManifest", - "com.azure.ai.agents.AgentsAsyncClient.updateAgentFromManifestWithResponse": "Azure.AI.Projects.Agents.updateAgentFromManifest", - "com.azure.ai.agents.AgentsAsyncClient.updateAgentWithResponse": "Azure.AI.Projects.Agents.updateAgent", - "com.azure.ai.agents.AgentsClient": "Azure.AI.Projects.Agents", - "com.azure.ai.agents.AgentsClient.createAgent": "Azure.AI.Projects.Agents.createAgent", - "com.azure.ai.agents.AgentsClient.createAgentFromManifest": "Azure.AI.Projects.Agents.createAgentFromManifest", - "com.azure.ai.agents.AgentsClient.createAgentFromManifestWithResponse": "Azure.AI.Projects.Agents.createAgentFromManifest", - "com.azure.ai.agents.AgentsClient.createAgentVersion": "Azure.AI.Projects.Agents.createAgentVersion", - "com.azure.ai.agents.AgentsClient.createAgentVersionFromManifest": "Azure.AI.Projects.Agents.createAgentVersionFromManifest", - "com.azure.ai.agents.AgentsClient.createAgentVersionFromManifestWithResponse": "Azure.AI.Projects.Agents.createAgentVersionFromManifest", - "com.azure.ai.agents.AgentsClient.createAgentVersionWithResponse": "Azure.AI.Projects.Agents.createAgentVersion", - "com.azure.ai.agents.AgentsClient.createAgentWithResponse": "Azure.AI.Projects.Agents.createAgent", - "com.azure.ai.agents.AgentsClient.deleteAgent": "Azure.AI.Projects.Agents.deleteAgent", - "com.azure.ai.agents.AgentsClient.deleteAgentVersion": "Azure.AI.Projects.Agents.deleteAgentVersion", - "com.azure.ai.agents.AgentsClient.deleteAgentVersionWithResponse": "Azure.AI.Projects.Agents.deleteAgentVersion", - "com.azure.ai.agents.AgentsClient.deleteAgentWithResponse": "Azure.AI.Projects.Agents.deleteAgent", - "com.azure.ai.agents.AgentsClient.getAgent": "Azure.AI.Projects.Agents.getAgent", - "com.azure.ai.agents.AgentsClient.getAgentVersionDetails": "Azure.AI.Projects.Agents.getAgentVersion", - "com.azure.ai.agents.AgentsClient.getAgentVersionDetailsWithResponse": "Azure.AI.Projects.Agents.getAgentVersion", - "com.azure.ai.agents.AgentsClient.getAgentWithResponse": "Azure.AI.Projects.Agents.getAgent", - "com.azure.ai.agents.AgentsClient.listAgentVersions": "Azure.AI.Projects.Agents.listAgentVersions", - "com.azure.ai.agents.AgentsClient.listAgents": "Azure.AI.Projects.Agents.listAgents", - "com.azure.ai.agents.AgentsClient.updateAgent": "Azure.AI.Projects.Agents.updateAgent", - "com.azure.ai.agents.AgentsClient.updateAgentFromManifest": "Azure.AI.Projects.Agents.updateAgentFromManifest", - "com.azure.ai.agents.AgentsClient.updateAgentFromManifestWithResponse": "Azure.AI.Projects.Agents.updateAgentFromManifest", - "com.azure.ai.agents.AgentsClient.updateAgentWithResponse": "Azure.AI.Projects.Agents.updateAgent", - "com.azure.ai.agents.AgentsClientBuilder": "Azure.AI.Projects", - "com.azure.ai.agents.MemoryStoresAsyncClient": "Azure.AI.Projects.MemoryStores", - "com.azure.ai.agents.MemoryStoresAsyncClient.beginUpdateMemories": "Azure.AI.Projects.MemoryStores.updateMemories", - "com.azure.ai.agents.MemoryStoresAsyncClient.beginUpdateMemoriesWithModel": "Azure.AI.Projects.MemoryStores.updateMemories", - "com.azure.ai.agents.MemoryStoresAsyncClient.createMemoryStore": "Azure.AI.Projects.MemoryStores.createMemoryStore", - "com.azure.ai.agents.MemoryStoresAsyncClient.createMemoryStoreWithResponse": "Azure.AI.Projects.MemoryStores.createMemoryStore", - "com.azure.ai.agents.MemoryStoresAsyncClient.deleteMemoryStore": "Azure.AI.Projects.MemoryStores.deleteMemoryStore", - "com.azure.ai.agents.MemoryStoresAsyncClient.deleteMemoryStoreWithResponse": "Azure.AI.Projects.MemoryStores.deleteMemoryStore", - "com.azure.ai.agents.MemoryStoresAsyncClient.deleteScope": "Azure.AI.Projects.MemoryStores.deleteScope", - "com.azure.ai.agents.MemoryStoresAsyncClient.deleteScopeWithResponse": "Azure.AI.Projects.MemoryStores.deleteScope", - "com.azure.ai.agents.MemoryStoresAsyncClient.getMemoryStore": "Azure.AI.Projects.MemoryStores.getMemoryStore", - "com.azure.ai.agents.MemoryStoresAsyncClient.getMemoryStoreWithResponse": "Azure.AI.Projects.MemoryStores.getMemoryStore", - "com.azure.ai.agents.MemoryStoresAsyncClient.getUpdateResult": "Azure.AI.Projects.MemoryStores.getUpdateResult", - "com.azure.ai.agents.MemoryStoresAsyncClient.getUpdateResultWithResponse": "Azure.AI.Projects.MemoryStores.getUpdateResult", - "com.azure.ai.agents.MemoryStoresAsyncClient.listMemoryStores": "Azure.AI.Projects.MemoryStores.listMemoryStores", - "com.azure.ai.agents.MemoryStoresAsyncClient.searchMemories": "Azure.AI.Projects.MemoryStores.searchMemories", - "com.azure.ai.agents.MemoryStoresAsyncClient.searchMemoriesWithResponse": "Azure.AI.Projects.MemoryStores.searchMemories", - "com.azure.ai.agents.MemoryStoresAsyncClient.updateMemoryStore": "Azure.AI.Projects.MemoryStores.updateMemoryStore", - "com.azure.ai.agents.MemoryStoresAsyncClient.updateMemoryStoreWithResponse": "Azure.AI.Projects.MemoryStores.updateMemoryStore", - "com.azure.ai.agents.MemoryStoresClient": "Azure.AI.Projects.MemoryStores", - "com.azure.ai.agents.MemoryStoresClient.beginUpdateMemories": "Azure.AI.Projects.MemoryStores.updateMemories", - "com.azure.ai.agents.MemoryStoresClient.beginUpdateMemoriesWithModel": "Azure.AI.Projects.MemoryStores.updateMemories", - "com.azure.ai.agents.MemoryStoresClient.createMemoryStore": "Azure.AI.Projects.MemoryStores.createMemoryStore", - "com.azure.ai.agents.MemoryStoresClient.createMemoryStoreWithResponse": "Azure.AI.Projects.MemoryStores.createMemoryStore", - "com.azure.ai.agents.MemoryStoresClient.deleteMemoryStore": "Azure.AI.Projects.MemoryStores.deleteMemoryStore", - "com.azure.ai.agents.MemoryStoresClient.deleteMemoryStoreWithResponse": "Azure.AI.Projects.MemoryStores.deleteMemoryStore", - "com.azure.ai.agents.MemoryStoresClient.deleteScope": "Azure.AI.Projects.MemoryStores.deleteScope", - "com.azure.ai.agents.MemoryStoresClient.deleteScopeWithResponse": "Azure.AI.Projects.MemoryStores.deleteScope", - "com.azure.ai.agents.MemoryStoresClient.getMemoryStore": "Azure.AI.Projects.MemoryStores.getMemoryStore", - "com.azure.ai.agents.MemoryStoresClient.getMemoryStoreWithResponse": "Azure.AI.Projects.MemoryStores.getMemoryStore", - "com.azure.ai.agents.MemoryStoresClient.getUpdateResult": "Azure.AI.Projects.MemoryStores.getUpdateResult", - "com.azure.ai.agents.MemoryStoresClient.getUpdateResultWithResponse": "Azure.AI.Projects.MemoryStores.getUpdateResult", - "com.azure.ai.agents.MemoryStoresClient.listMemoryStores": "Azure.AI.Projects.MemoryStores.listMemoryStores", - "com.azure.ai.agents.MemoryStoresClient.searchMemories": "Azure.AI.Projects.MemoryStores.searchMemories", - "com.azure.ai.agents.MemoryStoresClient.searchMemoriesWithResponse": "Azure.AI.Projects.MemoryStores.searchMemories", - "com.azure.ai.agents.MemoryStoresClient.updateMemoryStore": "Azure.AI.Projects.MemoryStores.updateMemoryStore", - "com.azure.ai.agents.MemoryStoresClient.updateMemoryStoreWithResponse": "Azure.AI.Projects.MemoryStores.updateMemoryStore", - "com.azure.ai.agents.implementation.models.CreateAgentFromManifestRequest": "Azure.AI.Projects.createAgentFromManifest.Request.anonymous", - "com.azure.ai.agents.implementation.models.CreateAgentRequest": "Azure.AI.Projects.createAgent.Request.anonymous", - "com.azure.ai.agents.implementation.models.CreateAgentVersionFromManifestRequest": "Azure.AI.Projects.createAgentVersionFromManifest.Request.anonymous", - "com.azure.ai.agents.implementation.models.CreateAgentVersionRequest": "Azure.AI.Projects.createAgentVersion.Request.anonymous", - "com.azure.ai.agents.implementation.models.CreateMemoryStoreRequest": "Azure.AI.Projects.createMemoryStore.Request.anonymous", - "com.azure.ai.agents.implementation.models.DeleteScopeRequest": "Azure.AI.Projects.deleteScope.Request.anonymous", - "com.azure.ai.agents.implementation.models.EasyInputMessage": "OpenAI.EasyInputMessage", - "com.azure.ai.agents.implementation.models.EasyInputMessageRole": "OpenAI.EasyInputMessage.role.anonymous", - "com.azure.ai.agents.implementation.models.EasyInputMessageStatus": "OpenAI.EasyInputMessage.status.anonymous", - "com.azure.ai.agents.implementation.models.ItemReferenceParam": "OpenAI.ItemReferenceParam", - "com.azure.ai.agents.implementation.models.SearchMemoriesRequest": "Azure.AI.Projects.searchMemories.Request.anonymous", - "com.azure.ai.agents.implementation.models.UpdateAgentFromManifestRequest": "Azure.AI.Projects.updateAgentFromManifest.Request.anonymous", - "com.azure.ai.agents.implementation.models.UpdateAgentRequest": "Azure.AI.Projects.updateAgent.Request.anonymous", - "com.azure.ai.agents.implementation.models.UpdateMemoriesRequest": "Azure.AI.Projects.updateMemories.Request.anonymous", - "com.azure.ai.agents.implementation.models.UpdateMemoryStoreRequest": "Azure.AI.Projects.updateMemoryStore.Request.anonymous", - "com.azure.ai.agents.models.A2APreviewTool": "Azure.AI.Projects.A2APreviewTool", - "com.azure.ai.agents.models.AISearchIndexResource": "Azure.AI.Projects.AISearchIndexResource", - "com.azure.ai.agents.models.AgentDefinition": "Azure.AI.Projects.AgentDefinition", - "com.azure.ai.agents.models.AgentDefinitionFeatureKeys": "Azure.AI.Projects.AgentDefinitionFeatureKeys", - "com.azure.ai.agents.models.AgentDetails": "Azure.AI.Projects.AgentObject", - "com.azure.ai.agents.models.AgentKind": "Azure.AI.Projects.AgentKind", - "com.azure.ai.agents.models.AgentObjectType": "Azure.AI.Projects.AgentObjectType", - "com.azure.ai.agents.models.AgentObjectVersions": "Azure.AI.Projects.AgentObject.versions.anonymous", - "com.azure.ai.agents.models.AgentProtocol": "Azure.AI.Projects.AgentProtocol", - "com.azure.ai.agents.models.AgentReference": "Azure.AI.Projects.AgentReference", - "com.azure.ai.agents.models.AgentVersionDetails": "Azure.AI.Projects.AgentVersionObject", - "com.azure.ai.agents.models.Annotation": "OpenAI.Annotation", - "com.azure.ai.agents.models.AnnotationType": "OpenAI.AnnotationType", - "com.azure.ai.agents.models.ApplyPatchCallOutputStatusParam": "OpenAI.ApplyPatchCallOutputStatusParam", - "com.azure.ai.agents.models.ApplyPatchCallStatusParam": "OpenAI.ApplyPatchCallStatusParam", - "com.azure.ai.agents.models.ApplyPatchCreateFileOperationParam": "OpenAI.ApplyPatchCreateFileOperationParam", - "com.azure.ai.agents.models.ApplyPatchDeleteFileOperationParam": "OpenAI.ApplyPatchDeleteFileOperationParam", - "com.azure.ai.agents.models.ApplyPatchOperationParam": "OpenAI.ApplyPatchOperationParam", - "com.azure.ai.agents.models.ApplyPatchOperationParamType": "OpenAI.ApplyPatchOperationParamType", - "com.azure.ai.agents.models.ApplyPatchToolParam": "OpenAI.ApplyPatchToolParam", - "com.azure.ai.agents.models.ApplyPatchUpdateFileOperationParam": "OpenAI.ApplyPatchUpdateFileOperationParam", - "com.azure.ai.agents.models.ApproximateLocation": "OpenAI.ApproximateLocation", - "com.azure.ai.agents.models.AzureAISearchQueryType": "Azure.AI.Projects.AzureAISearchQueryType", - "com.azure.ai.agents.models.AzureAISearchTool": "Azure.AI.Projects.AzureAISearchTool", - "com.azure.ai.agents.models.AzureAISearchToolResource": "Azure.AI.Projects.AzureAISearchToolResource", - "com.azure.ai.agents.models.AzureFunctionBinding": "Azure.AI.Projects.AzureFunctionBinding", - "com.azure.ai.agents.models.AzureFunctionDefinition": "Azure.AI.Projects.AzureFunctionDefinition", - "com.azure.ai.agents.models.AzureFunctionDefinitionFunction": "Azure.AI.Projects.AzureFunctionDefinition.function.anonymous", - "com.azure.ai.agents.models.AzureFunctionStorageQueue": "Azure.AI.Projects.AzureFunctionStorageQueue", - "com.azure.ai.agents.models.AzureFunctionTool": "Azure.AI.Projects.AzureFunctionTool", - "com.azure.ai.agents.models.BingCustomSearchConfiguration": "Azure.AI.Projects.BingCustomSearchConfiguration", - "com.azure.ai.agents.models.BingCustomSearchPreviewTool": "Azure.AI.Projects.BingCustomSearchPreviewTool", - "com.azure.ai.agents.models.BingCustomSearchToolParameters": "Azure.AI.Projects.BingCustomSearchToolParameters", - "com.azure.ai.agents.models.BingGroundingSearchConfiguration": "Azure.AI.Projects.BingGroundingSearchConfiguration", - "com.azure.ai.agents.models.BingGroundingSearchToolParameters": "Azure.AI.Projects.BingGroundingSearchToolParameters", - "com.azure.ai.agents.models.BingGroundingTool": "Azure.AI.Projects.BingGroundingTool", - "com.azure.ai.agents.models.BrowserAutomationPreviewTool": "Azure.AI.Projects.BrowserAutomationPreviewTool", - "com.azure.ai.agents.models.BrowserAutomationToolConnectionParameters": "Azure.AI.Projects.BrowserAutomationToolConnectionParameters", - "com.azure.ai.agents.models.BrowserAutomationToolParameters": "Azure.AI.Projects.BrowserAutomationToolParameters", - "com.azure.ai.agents.models.CaptureStructuredOutputsTool": "Azure.AI.Projects.CaptureStructuredOutputsTool", - "com.azure.ai.agents.models.ChatSummaryMemoryItem": "Azure.AI.Projects.ChatSummaryMemoryItem", - "com.azure.ai.agents.models.ClickButtonType": "OpenAI.ClickButtonType", - "com.azure.ai.agents.models.ClickParam": "OpenAI.ClickParam", - "com.azure.ai.agents.models.CodeInterpreterContainerAuto": "OpenAI.CodeInterpreterContainerAuto", - "com.azure.ai.agents.models.CodeInterpreterOutputImage": "OpenAI.CodeInterpreterOutputImage", - "com.azure.ai.agents.models.CodeInterpreterOutputLogs": "OpenAI.CodeInterpreterOutputLogs", - "com.azure.ai.agents.models.CodeInterpreterTool": "OpenAI.CodeInterpreterTool", - "com.azure.ai.agents.models.ComparisonFilter": "OpenAI.ComparisonFilter", - "com.azure.ai.agents.models.ComparisonFilterType": "OpenAI.ComparisonFilter.type.anonymous", - "com.azure.ai.agents.models.CompoundFilter": "OpenAI.CompoundFilter", - "com.azure.ai.agents.models.CompoundFilterType": "OpenAI.CompoundFilter.type.anonymous", - "com.azure.ai.agents.models.ComputerAction": "OpenAI.ComputerAction", - "com.azure.ai.agents.models.ComputerActionType": "OpenAI.ComputerActionType", - "com.azure.ai.agents.models.ComputerCallSafetyCheckParam": "OpenAI.ComputerCallSafetyCheckParam", - "com.azure.ai.agents.models.ComputerEnvironment": "OpenAI.ComputerEnvironment", - "com.azure.ai.agents.models.ComputerScreenshotImage": "OpenAI.ComputerScreenshotImage", - "com.azure.ai.agents.models.ComputerUsePreviewTool": "OpenAI.ComputerUsePreviewTool", - "com.azure.ai.agents.models.ContainerAppAgentDefinition": "Azure.AI.Projects.ContainerAppAgentDefinition", - "com.azure.ai.agents.models.ContainerFileCitationBody": "OpenAI.ContainerFileCitationBody", - "com.azure.ai.agents.models.ContainerMemoryLimit": "OpenAI.ContainerMemoryLimit", - "com.azure.ai.agents.models.CustomGrammarFormatParam": "OpenAI.CustomGrammarFormatParam", - "com.azure.ai.agents.models.CustomTextFormatParam": "OpenAI.CustomTextFormatParam", - "com.azure.ai.agents.models.CustomToolParam": "OpenAI.CustomToolParam", - "com.azure.ai.agents.models.CustomToolParamFormat": "OpenAI.CustomToolParamFormat", - "com.azure.ai.agents.models.CustomToolParamFormatType": "OpenAI.CustomToolParamFormatType", - "com.azure.ai.agents.models.DeleteAgentResponse": "Azure.AI.Projects.DeleteAgentResponse", - "com.azure.ai.agents.models.DeleteAgentVersionResponse": "Azure.AI.Projects.DeleteAgentVersionResponse", - "com.azure.ai.agents.models.DeleteMemoryStoreResult": "Azure.AI.Projects.DeleteMemoryStoreResponse", - "com.azure.ai.agents.models.DoubleClickAction": "OpenAI.DoubleClickAction", - "com.azure.ai.agents.models.Drag": "OpenAI.Drag", - "com.azure.ai.agents.models.DragPoint": "OpenAI.DragPoint", - "com.azure.ai.agents.models.FabricDataAgentToolParameters": "Azure.AI.Projects.FabricDataAgentToolParameters", - "com.azure.ai.agents.models.FileCitationBody": "OpenAI.FileCitationBody", - "com.azure.ai.agents.models.FilePath": "OpenAI.FilePath", - "com.azure.ai.agents.models.FileSearchTool": "OpenAI.FileSearchTool", - "com.azure.ai.agents.models.FileSearchToolCallResults": "OpenAI.FileSearchToolCallResults", - "com.azure.ai.agents.models.FoundryFeaturesOptInKeys": "Azure.AI.Projects.FoundryFeaturesOptInKeys", - "com.azure.ai.agents.models.FunctionAndCustomToolCallOutput": "OpenAI.FunctionAndCustomToolCallOutput", - "com.azure.ai.agents.models.FunctionAndCustomToolCallOutputInputFileContent": "OpenAI.FunctionAndCustomToolCallOutputInputFileContent", - "com.azure.ai.agents.models.FunctionAndCustomToolCallOutputInputImageContent": "OpenAI.FunctionAndCustomToolCallOutputInputImageContent", - "com.azure.ai.agents.models.FunctionAndCustomToolCallOutputInputTextContent": "OpenAI.FunctionAndCustomToolCallOutputInputTextContent", - "com.azure.ai.agents.models.FunctionAndCustomToolCallOutputType": "OpenAI.FunctionAndCustomToolCallOutputType", - "com.azure.ai.agents.models.FunctionCallItemStatus": "OpenAI.FunctionCallItemStatus", - "com.azure.ai.agents.models.FunctionShellActionParam": "OpenAI.FunctionShellActionParam", - "com.azure.ai.agents.models.FunctionShellCallItemStatus": "OpenAI.FunctionShellCallItemStatus", - "com.azure.ai.agents.models.FunctionShellCallOutputContentParam": "OpenAI.FunctionShellCallOutputContentParam", - "com.azure.ai.agents.models.FunctionShellCallOutputExitOutcomeParam": "OpenAI.FunctionShellCallOutputExitOutcomeParam", - "com.azure.ai.agents.models.FunctionShellCallOutputOutcomeParam": "OpenAI.FunctionShellCallOutputOutcomeParam", - "com.azure.ai.agents.models.FunctionShellCallOutputOutcomeParamType": "OpenAI.FunctionShellCallOutputOutcomeParamType", - "com.azure.ai.agents.models.FunctionShellCallOutputTimeoutOutcomeParam": "OpenAI.FunctionShellCallOutputTimeoutOutcomeParam", - "com.azure.ai.agents.models.FunctionShellToolParam": "OpenAI.FunctionShellToolParam", - "com.azure.ai.agents.models.FunctionTool": "OpenAI.FunctionTool", - "com.azure.ai.agents.models.GrammarSyntax": "OpenAI.GrammarSyntax1", - "com.azure.ai.agents.models.HostedAgentDefinition": "Azure.AI.Projects.HostedAgentDefinition", - "com.azure.ai.agents.models.HybridSearchOptions": "OpenAI.HybridSearchOptions", - "com.azure.ai.agents.models.ImageDetail": "OpenAI.ImageDetail", - "com.azure.ai.agents.models.ImageDetailLevel": "OpenAI.DetailEnum", - "com.azure.ai.agents.models.ImageGenTool": "OpenAI.ImageGenTool", - "com.azure.ai.agents.models.ImageGenToolBackground": "OpenAI.ImageGenTool.background.anonymous", - "com.azure.ai.agents.models.ImageGenToolInputImageMask": "OpenAI.ImageGenToolInputImageMask", - "com.azure.ai.agents.models.ImageGenToolModel": "OpenAI.ImageGenTool.model.anonymous", - "com.azure.ai.agents.models.ImageGenToolModeration": "OpenAI.ImageGenTool.moderation.anonymous", - "com.azure.ai.agents.models.ImageGenToolOutputFormat": "OpenAI.ImageGenTool.output_format.anonymous", - "com.azure.ai.agents.models.ImageGenToolQuality": "OpenAI.ImageGenTool.quality.anonymous", - "com.azure.ai.agents.models.ImageGenToolSize": "OpenAI.ImageGenTool.size.anonymous", - "com.azure.ai.agents.models.IncludeEnum": "OpenAI.IncludeEnum", - "com.azure.ai.agents.models.InputContent": "OpenAI.InputContent", - "com.azure.ai.agents.models.InputContentInputFileContent": "OpenAI.InputContentInputFileContent", - "com.azure.ai.agents.models.InputContentInputImageContent": "OpenAI.InputContentInputImageContent", - "com.azure.ai.agents.models.InputContentInputTextContent": "OpenAI.InputContentInputTextContent", - "com.azure.ai.agents.models.InputContentType": "OpenAI.InputContentType", - "com.azure.ai.agents.models.InputFidelity": "OpenAI.InputFidelity", - "com.azure.ai.agents.models.InputFileContentParam": "OpenAI.InputFileContentParam", - "com.azure.ai.agents.models.InputImageContentParamAutoParam": "OpenAI.InputImageContentParamAutoParam", - "com.azure.ai.agents.models.InputItem": "OpenAI.InputItem", - "com.azure.ai.agents.models.InputItemApplyPatchToolCallItemParam": "OpenAI.InputItemApplyPatchToolCallItemParam", - "com.azure.ai.agents.models.InputItemApplyPatchToolCallOutputItemParam": "OpenAI.InputItemApplyPatchToolCallOutputItemParam", - "com.azure.ai.agents.models.InputItemCodeInterpreterToolCall": "OpenAI.InputItemCodeInterpreterToolCall", - "com.azure.ai.agents.models.InputItemCompactionSummaryItemParam": "OpenAI.InputItemCompactionSummaryItemParam", - "com.azure.ai.agents.models.InputItemComputerCallOutputItemParam": "OpenAI.InputItemComputerCallOutputItemParam", - "com.azure.ai.agents.models.InputItemComputerToolCall": "OpenAI.InputItemComputerToolCall", - "com.azure.ai.agents.models.InputItemCustomToolCall": "OpenAI.InputItemCustomToolCall", - "com.azure.ai.agents.models.InputItemCustomToolCallOutput": "OpenAI.InputItemCustomToolCallOutput", - "com.azure.ai.agents.models.InputItemFileSearchToolCall": "OpenAI.InputItemFileSearchToolCall", - "com.azure.ai.agents.models.InputItemFunctionCallOutputItemParam": "OpenAI.InputItemFunctionCallOutputItemParam", - "com.azure.ai.agents.models.InputItemFunctionShellCallItemParam": "OpenAI.InputItemFunctionShellCallItemParam", - "com.azure.ai.agents.models.InputItemFunctionShellCallOutputItemParam": "OpenAI.InputItemFunctionShellCallOutputItemParam", - "com.azure.ai.agents.models.InputItemFunctionToolCall": "OpenAI.InputItemFunctionToolCall", - "com.azure.ai.agents.models.InputItemImageGenToolCall": "OpenAI.InputItemImageGenToolCall", - "com.azure.ai.agents.models.InputItemLocalShellToolCall": "OpenAI.InputItemLocalShellToolCall", - "com.azure.ai.agents.models.InputItemLocalShellToolCallOutput": "OpenAI.InputItemLocalShellToolCallOutput", - "com.azure.ai.agents.models.InputItemMcpApprovalRequest": "OpenAI.InputItemMcpApprovalRequest", - "com.azure.ai.agents.models.InputItemMcpApprovalResponse": "OpenAI.InputItemMcpApprovalResponse", - "com.azure.ai.agents.models.InputItemMcpListTools": "OpenAI.InputItemMcpListTools", - "com.azure.ai.agents.models.InputItemMcpToolCall": "OpenAI.InputItemMcpToolCall", - "com.azure.ai.agents.models.InputItemOutputMessage": "OpenAI.InputItemOutputMessage", - "com.azure.ai.agents.models.InputItemReasoningItem": "OpenAI.InputItemReasoningItem", - "com.azure.ai.agents.models.InputItemType": "OpenAI.InputItemType", - "com.azure.ai.agents.models.InputItemWebSearchToolCall": "OpenAI.InputItemWebSearchToolCall", - "com.azure.ai.agents.models.InputTextContentParam": "OpenAI.InputTextContentParam", - "com.azure.ai.agents.models.ItemLocalShellToolCallOutputStatus": "OpenAI.ItemLocalShellToolCallOutput.status.anonymous", - "com.azure.ai.agents.models.KeyPressAction": "OpenAI.KeyPressAction", - "com.azure.ai.agents.models.LocalShellExecAction": "OpenAI.LocalShellExecAction", - "com.azure.ai.agents.models.LocalShellToolParam": "OpenAI.LocalShellToolParam", - "com.azure.ai.agents.models.LogProb": "OpenAI.LogProb", - "com.azure.ai.agents.models.MCPToolConnectorId": "OpenAI.MCPTool.connector_id.anonymous", - "com.azure.ai.agents.models.McpListToolsTool": "OpenAI.MCPListToolsTool", - "com.azure.ai.agents.models.McpListToolsToolAnnotations": "OpenAI.MCPListToolsToolAnnotations", - "com.azure.ai.agents.models.McpListToolsToolInputSchema": "OpenAI.MCPListToolsToolInputSchema", - "com.azure.ai.agents.models.McpTool": "OpenAI.MCPTool", - "com.azure.ai.agents.models.McpToolCallStatus": "OpenAI.MCPToolCallStatus", - "com.azure.ai.agents.models.McpToolFilter": "OpenAI.MCPToolFilter", - "com.azure.ai.agents.models.McpToolRequireApproval": "OpenAI.MCPToolRequireApproval", - "com.azure.ai.agents.models.MemoryItem": "Azure.AI.Projects.MemoryItem", - "com.azure.ai.agents.models.MemoryItemKind": "Azure.AI.Projects.MemoryItemKind", - "com.azure.ai.agents.models.MemoryOperation": "Azure.AI.Projects.MemoryOperation", - "com.azure.ai.agents.models.MemoryOperationKind": "Azure.AI.Projects.MemoryOperationKind", - "com.azure.ai.agents.models.MemorySearchItem": "Azure.AI.Projects.MemorySearchItem", - "com.azure.ai.agents.models.MemorySearchOptions": "Azure.AI.Projects.MemorySearchOptions", - "com.azure.ai.agents.models.MemorySearchPreviewTool": "Azure.AI.Projects.MemorySearchPreviewTool", - "com.azure.ai.agents.models.MemoryStoreDefaultDefinition": "Azure.AI.Projects.MemoryStoreDefaultDefinition", - "com.azure.ai.agents.models.MemoryStoreDefaultOptions": "Azure.AI.Projects.MemoryStoreDefaultOptions", - "com.azure.ai.agents.models.MemoryStoreDefinition": "Azure.AI.Projects.MemoryStoreDefinition", - "com.azure.ai.agents.models.MemoryStoreDeleteScopeResponse": "Azure.AI.Projects.MemoryStoreDeleteScopeResponse", - "com.azure.ai.agents.models.MemoryStoreDetails": "Azure.AI.Projects.MemoryStoreObject", - "com.azure.ai.agents.models.MemoryStoreKind": "Azure.AI.Projects.MemoryStoreKind", - "com.azure.ai.agents.models.MemoryStoreObjectType": "Azure.AI.Projects.MemoryStoreObjectType", - "com.azure.ai.agents.models.MemoryStoreOperationUsage": "Azure.AI.Projects.MemoryStoreOperationUsage", - "com.azure.ai.agents.models.MemoryStoreSearchResponse": "Azure.AI.Projects.MemoryStoreSearchResponse", - "com.azure.ai.agents.models.MemoryStoreUpdateCompletedResult": "Azure.AI.Projects.MemoryStoreUpdateCompletedResult", - "com.azure.ai.agents.models.MemoryStoreUpdateResponse": "Azure.AI.Projects.MemoryStoreUpdateResponse", - "com.azure.ai.agents.models.MemoryStoreUpdateStatus": "Azure.AI.Projects.MemoryStoreUpdateStatus", - "com.azure.ai.agents.models.MicrosoftFabricPreviewTool": "Azure.AI.Projects.MicrosoftFabricPreviewTool", - "com.azure.ai.agents.models.Move": "OpenAI.Move", - "com.azure.ai.agents.models.OpenAIError": "OpenAI.Error", - "com.azure.ai.agents.models.OpenApiAnonymousAuthDetails": "Azure.AI.Projects.OpenApiAnonymousAuthDetails", - "com.azure.ai.agents.models.OpenApiAuthDetails": "Azure.AI.Projects.OpenApiAuthDetails", - "com.azure.ai.agents.models.OpenApiAuthType": "Azure.AI.Projects.OpenApiAuthType", - "com.azure.ai.agents.models.OpenApiFunctionDefinition": "Azure.AI.Projects.OpenApiFunctionDefinition", - "com.azure.ai.agents.models.OpenApiFunctionDefinitionFunction": "Azure.AI.Projects.OpenApiFunctionDefinition.function.anonymous", - "com.azure.ai.agents.models.OpenApiManagedAuthDetails": "Azure.AI.Projects.OpenApiManagedAuthDetails", - "com.azure.ai.agents.models.OpenApiManagedSecurityScheme": "Azure.AI.Projects.OpenApiManagedSecurityScheme", - "com.azure.ai.agents.models.OpenApiProjectConnectionAuthDetails": "Azure.AI.Projects.OpenApiProjectConnectionAuthDetails", - "com.azure.ai.agents.models.OpenApiProjectConnectionSecurityScheme": "Azure.AI.Projects.OpenApiProjectConnectionSecurityScheme", - "com.azure.ai.agents.models.OpenApiTool": "Azure.AI.Projects.OpenApiTool", - "com.azure.ai.agents.models.OutputItemCodeInterpreterToolCallStatus": "OpenAI.OutputItemCodeInterpreterToolCall.status.anonymous", - "com.azure.ai.agents.models.OutputItemComputerToolCallStatus": "OpenAI.OutputItemComputerToolCall.status.anonymous", - "com.azure.ai.agents.models.OutputItemFileSearchToolCallStatus": "OpenAI.OutputItemFileSearchToolCall.status.anonymous", - "com.azure.ai.agents.models.OutputItemFunctionToolCallStatus": "OpenAI.OutputItemFunctionToolCall.status.anonymous", - "com.azure.ai.agents.models.OutputItemImageGenToolCallStatus": "OpenAI.OutputItemImageGenToolCall.status.anonymous", - "com.azure.ai.agents.models.OutputItemLocalShellToolCallStatus": "OpenAI.OutputItemLocalShellToolCall.status.anonymous", - "com.azure.ai.agents.models.OutputItemOutputMessageStatus": "OpenAI.OutputItemOutputMessage.status.anonymous", - "com.azure.ai.agents.models.OutputItemReasoningItemStatus": "OpenAI.OutputItemReasoningItem.status.anonymous", - "com.azure.ai.agents.models.OutputItemWebSearchToolCallStatus": "OpenAI.OutputItemWebSearchToolCall.status.anonymous", - "com.azure.ai.agents.models.OutputMessageContent": "OpenAI.OutputMessageContent", - "com.azure.ai.agents.models.OutputMessageContentOutputTextContent": "OpenAI.OutputMessageContentOutputTextContent", - "com.azure.ai.agents.models.OutputMessageContentRefusalContent": "OpenAI.OutputMessageContentRefusalContent", - "com.azure.ai.agents.models.OutputMessageContentType": "OpenAI.OutputMessageContentType", - "com.azure.ai.agents.models.PageOrder": "Azure.AI.Projects.PageOrder", - "com.azure.ai.agents.models.PromptAgentDefinition": "Azure.AI.Projects.PromptAgentDefinition", - "com.azure.ai.agents.models.PromptAgentDefinitionTextOptions": "Azure.AI.Projects.PromptAgentDefinitionTextOptions", - "com.azure.ai.agents.models.ProtocolVersionRecord": "Azure.AI.Projects.ProtocolVersionRecord", - "com.azure.ai.agents.models.RaiConfig": "Azure.AI.Projects.RaiConfig", - "com.azure.ai.agents.models.RankerVersionType": "OpenAI.RankerVersionType", - "com.azure.ai.agents.models.RankingOptions": "OpenAI.RankingOptions", - "com.azure.ai.agents.models.Reasoning": "OpenAI.Reasoning", - "com.azure.ai.agents.models.ReasoningEffort": "OpenAI.Reasoning.effort.anonymous", - "com.azure.ai.agents.models.ReasoningGenerateSummary": "OpenAI.Reasoning.generate_summary.anonymous", - "com.azure.ai.agents.models.ReasoningSummary": "OpenAI.Reasoning.summary.anonymous", - "com.azure.ai.agents.models.ReasoningTextContent": "OpenAI.ReasoningTextContent", - "com.azure.ai.agents.models.ResponseFormatJsonSchemaInner": "OpenAI.ResponseFormatJsonSchemaSchema", - "com.azure.ai.agents.models.ResponseUsageInputTokensDetails": "OpenAI.ResponseUsageInputTokensDetails", - "com.azure.ai.agents.models.ResponseUsageOutputTokensDetails": "OpenAI.ResponseUsageOutputTokensDetails", - "com.azure.ai.agents.models.Screenshot": "OpenAI.Screenshot", - "com.azure.ai.agents.models.Scroll": "OpenAI.Scroll", - "com.azure.ai.agents.models.SearchContextSize": "OpenAI.SearchContextSize", - "com.azure.ai.agents.models.SharepointGroundingToolParameters": "Azure.AI.Projects.SharepointGroundingToolParameters", - "com.azure.ai.agents.models.SharepointPreviewTool": "Azure.AI.Projects.SharepointPreviewTool", - "com.azure.ai.agents.models.StructuredInputDefinition": "Azure.AI.Projects.StructuredInputDefinition", - "com.azure.ai.agents.models.StructuredOutputDefinition": "Azure.AI.Projects.StructuredOutputDefinition", - "com.azure.ai.agents.models.Summary": "OpenAI.Summary", - "com.azure.ai.agents.models.TextResponseFormatConfiguration": "OpenAI.TextResponseFormatConfiguration", - "com.azure.ai.agents.models.TextResponseFormatConfigurationResponseFormatJsonObject": "OpenAI.TextResponseFormatConfigurationResponseFormatJsonObject", - "com.azure.ai.agents.models.TextResponseFormatConfigurationResponseFormatText": "OpenAI.TextResponseFormatConfigurationResponseFormatText", - "com.azure.ai.agents.models.TextResponseFormatConfigurationType": "OpenAI.TextResponseFormatConfigurationType", - "com.azure.ai.agents.models.TextResponseFormatJsonSchema": "OpenAI.TextResponseFormatJsonSchema", - "com.azure.ai.agents.models.Tool": "OpenAI.Tool", - "com.azure.ai.agents.models.ToolProjectConnection": "Azure.AI.Projects.ToolProjectConnection", - "com.azure.ai.agents.models.ToolType": "OpenAI.ToolType", - "com.azure.ai.agents.models.TopLogProb": "OpenAI.TopLogProb", - "com.azure.ai.agents.models.Type": "OpenAI.Type", - "com.azure.ai.agents.models.UrlCitationBody": "OpenAI.UrlCitationBody", - "com.azure.ai.agents.models.UserProfileMemoryItem": "Azure.AI.Projects.UserProfileMemoryItem", - "com.azure.ai.agents.models.VectorStoreFileAttributes": "OpenAI.VectorStoreFileAttributes", - "com.azure.ai.agents.models.Wait": "OpenAI.Wait", - "com.azure.ai.agents.models.WebSearchActionFind": "OpenAI.WebSearchActionFind", - "com.azure.ai.agents.models.WebSearchActionOpenPage": "OpenAI.WebSearchActionOpenPage", - "com.azure.ai.agents.models.WebSearchActionSearch": "OpenAI.WebSearchActionSearch", - "com.azure.ai.agents.models.WebSearchActionSearchSources": "OpenAI.WebSearchActionSearchSources", - "com.azure.ai.agents.models.WebSearchApproximateLocation": "OpenAI.WebSearchApproximateLocation", - "com.azure.ai.agents.models.WebSearchConfiguration": "Azure.AI.Projects.WebSearchConfiguration", - "com.azure.ai.agents.models.WebSearchPreviewTool": "OpenAI.WebSearchPreviewTool", - "com.azure.ai.agents.models.WebSearchTool": "OpenAI.WebSearchTool", - "com.azure.ai.agents.models.WebSearchToolFilters": "OpenAI.WebSearchToolFilters", - "com.azure.ai.agents.models.WebSearchToolSearchContextSize": "OpenAI.WebSearchTool.search_context_size.anonymous", - "com.azure.ai.agents.models.WorkflowAgentDefinition": "Azure.AI.Projects.WorkflowAgentDefinition" - } -} diff --git a/sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_apiview_properties.json b/sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_apiview_properties.json deleted file mode 100644 index f99365f4a81bd..0000000000000 --- a/sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_apiview_properties.json +++ /dev/null @@ -1,286 +0,0 @@ -{ - "flavor": "azure", - "CrossLanguageDefinitionId": { - "com.azure.ai.projects.AIProjectClientBuilder": "Azure.AI.Projects", - "com.azure.ai.projects.ConnectionsAsyncClient": "Azure.AI.Projects.Connections", - "com.azure.ai.projects.ConnectionsAsyncClient.getConnection": "Azure.AI.Projects.Connections.get", - "com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithCredentials": "Azure.AI.Projects.Connections.getWithCredentials", - "com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithCredentialsWithResponse": "Azure.AI.Projects.Connections.getWithCredentials", - "com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithResponse": "Azure.AI.Projects.Connections.get", - "com.azure.ai.projects.ConnectionsAsyncClient.listConnections": "Azure.AI.Projects.Connections.list", - "com.azure.ai.projects.ConnectionsClient": "Azure.AI.Projects.Connections", - "com.azure.ai.projects.ConnectionsClient.getConnection": "Azure.AI.Projects.Connections.get", - "com.azure.ai.projects.ConnectionsClient.getConnectionWithCredentials": "Azure.AI.Projects.Connections.getWithCredentials", - "com.azure.ai.projects.ConnectionsClient.getConnectionWithCredentialsWithResponse": "Azure.AI.Projects.Connections.getWithCredentials", - "com.azure.ai.projects.ConnectionsClient.getConnectionWithResponse": "Azure.AI.Projects.Connections.get", - "com.azure.ai.projects.ConnectionsClient.listConnections": "Azure.AI.Projects.Connections.list", - "com.azure.ai.projects.DatasetsAsyncClient": "Azure.AI.Projects.Datasets", - "com.azure.ai.projects.DatasetsAsyncClient.createOrUpdateVersion": "Azure.AI.Projects.Datasets.createOrUpdateVersion", - "com.azure.ai.projects.DatasetsAsyncClient.createOrUpdateVersionWithResponse": "Azure.AI.Projects.Datasets.createOrUpdateVersion", - "com.azure.ai.projects.DatasetsAsyncClient.deleteVersion": "Azure.AI.Projects.Datasets.deleteVersion", - "com.azure.ai.projects.DatasetsAsyncClient.deleteVersionWithResponse": "Azure.AI.Projects.Datasets.deleteVersion", - "com.azure.ai.projects.DatasetsAsyncClient.getCredentials": "Azure.AI.Projects.Datasets.getCredentials", - "com.azure.ai.projects.DatasetsAsyncClient.getCredentialsWithResponse": "Azure.AI.Projects.Datasets.getCredentials", - "com.azure.ai.projects.DatasetsAsyncClient.getDatasetVersion": "Azure.AI.Projects.Datasets.getVersion", - "com.azure.ai.projects.DatasetsAsyncClient.getDatasetVersionWithResponse": "Azure.AI.Projects.Datasets.getVersion", - "com.azure.ai.projects.DatasetsAsyncClient.listLatestVersion": "Azure.AI.Projects.Datasets.listLatest", - "com.azure.ai.projects.DatasetsAsyncClient.listVersions": "Azure.AI.Projects.Datasets.listVersions", - "com.azure.ai.projects.DatasetsAsyncClient.pendingUpload": "Azure.AI.Projects.Datasets.startPendingUploadVersion", - "com.azure.ai.projects.DatasetsAsyncClient.pendingUploadWithResponse": "Azure.AI.Projects.Datasets.startPendingUploadVersion", - "com.azure.ai.projects.DatasetsClient": "Azure.AI.Projects.Datasets", - "com.azure.ai.projects.DatasetsClient.createOrUpdateVersion": "Azure.AI.Projects.Datasets.createOrUpdateVersion", - "com.azure.ai.projects.DatasetsClient.createOrUpdateVersionWithResponse": "Azure.AI.Projects.Datasets.createOrUpdateVersion", - "com.azure.ai.projects.DatasetsClient.deleteVersion": "Azure.AI.Projects.Datasets.deleteVersion", - "com.azure.ai.projects.DatasetsClient.deleteVersionWithResponse": "Azure.AI.Projects.Datasets.deleteVersion", - "com.azure.ai.projects.DatasetsClient.getCredentials": "Azure.AI.Projects.Datasets.getCredentials", - "com.azure.ai.projects.DatasetsClient.getCredentialsWithResponse": "Azure.AI.Projects.Datasets.getCredentials", - "com.azure.ai.projects.DatasetsClient.getDatasetVersion": "Azure.AI.Projects.Datasets.getVersion", - "com.azure.ai.projects.DatasetsClient.getDatasetVersionWithResponse": "Azure.AI.Projects.Datasets.getVersion", - "com.azure.ai.projects.DatasetsClient.listLatestVersion": "Azure.AI.Projects.Datasets.listLatest", - "com.azure.ai.projects.DatasetsClient.listVersions": "Azure.AI.Projects.Datasets.listVersions", - "com.azure.ai.projects.DatasetsClient.pendingUpload": "Azure.AI.Projects.Datasets.startPendingUploadVersion", - "com.azure.ai.projects.DatasetsClient.pendingUploadWithResponse": "Azure.AI.Projects.Datasets.startPendingUploadVersion", - "com.azure.ai.projects.DeploymentsAsyncClient": "Azure.AI.Projects.Deployments", - "com.azure.ai.projects.DeploymentsAsyncClient.getDeployment": "Azure.AI.Projects.Deployments.get", - "com.azure.ai.projects.DeploymentsAsyncClient.getDeploymentWithResponse": "Azure.AI.Projects.Deployments.get", - "com.azure.ai.projects.DeploymentsAsyncClient.listDeployments": "Azure.AI.Projects.Deployments.list", - "com.azure.ai.projects.DeploymentsClient": "Azure.AI.Projects.Deployments", - "com.azure.ai.projects.DeploymentsClient.getDeployment": "Azure.AI.Projects.Deployments.get", - "com.azure.ai.projects.DeploymentsClient.getDeploymentWithResponse": "Azure.AI.Projects.Deployments.get", - "com.azure.ai.projects.DeploymentsClient.listDeployments": "Azure.AI.Projects.Deployments.list", - "com.azure.ai.projects.EvaluationRulesAsyncClient": "Azure.AI.Projects.EvaluationRules", - "com.azure.ai.projects.EvaluationRulesAsyncClient.createOrUpdateEvaluationRule": "Azure.AI.Projects.EvaluationRules.createOrUpdate", - "com.azure.ai.projects.EvaluationRulesAsyncClient.createOrUpdateEvaluationRuleWithResponse": "Azure.AI.Projects.EvaluationRules.createOrUpdate", - "com.azure.ai.projects.EvaluationRulesAsyncClient.deleteEvaluationRule": "Azure.AI.Projects.EvaluationRules.delete", - "com.azure.ai.projects.EvaluationRulesAsyncClient.deleteEvaluationRuleWithResponse": "Azure.AI.Projects.EvaluationRules.delete", - "com.azure.ai.projects.EvaluationRulesAsyncClient.getEvaluationRule": "Azure.AI.Projects.EvaluationRules.get", - "com.azure.ai.projects.EvaluationRulesAsyncClient.getEvaluationRuleWithResponse": "Azure.AI.Projects.EvaluationRules.get", - "com.azure.ai.projects.EvaluationRulesAsyncClient.listEvaluationRules": "Azure.AI.Projects.EvaluationRules.list", - "com.azure.ai.projects.EvaluationRulesClient": "Azure.AI.Projects.EvaluationRules", - "com.azure.ai.projects.EvaluationRulesClient.createOrUpdateEvaluationRule": "Azure.AI.Projects.EvaluationRules.createOrUpdate", - "com.azure.ai.projects.EvaluationRulesClient.createOrUpdateEvaluationRuleWithResponse": "Azure.AI.Projects.EvaluationRules.createOrUpdate", - "com.azure.ai.projects.EvaluationRulesClient.deleteEvaluationRule": "Azure.AI.Projects.EvaluationRules.delete", - "com.azure.ai.projects.EvaluationRulesClient.deleteEvaluationRuleWithResponse": "Azure.AI.Projects.EvaluationRules.delete", - "com.azure.ai.projects.EvaluationRulesClient.getEvaluationRule": "Azure.AI.Projects.EvaluationRules.get", - "com.azure.ai.projects.EvaluationRulesClient.getEvaluationRuleWithResponse": "Azure.AI.Projects.EvaluationRules.get", - "com.azure.ai.projects.EvaluationRulesClient.listEvaluationRules": "Azure.AI.Projects.EvaluationRules.list", - "com.azure.ai.projects.EvaluationTaxonomiesAsyncClient": "Azure.AI.Projects.EvaluationTaxonomies", - "com.azure.ai.projects.EvaluationTaxonomiesAsyncClient.createEvaluationTaxonomy": "Azure.AI.Projects.EvaluationTaxonomies.create", - "com.azure.ai.projects.EvaluationTaxonomiesAsyncClient.createEvaluationTaxonomyWithResponse": "Azure.AI.Projects.EvaluationTaxonomies.create", - "com.azure.ai.projects.EvaluationTaxonomiesAsyncClient.deleteEvaluationTaxonomy": "Azure.AI.Projects.EvaluationTaxonomies.delete", - "com.azure.ai.projects.EvaluationTaxonomiesAsyncClient.deleteEvaluationTaxonomyWithResponse": "Azure.AI.Projects.EvaluationTaxonomies.delete", - "com.azure.ai.projects.EvaluationTaxonomiesAsyncClient.getEvaluationTaxonomy": "Azure.AI.Projects.EvaluationTaxonomies.get", - "com.azure.ai.projects.EvaluationTaxonomiesAsyncClient.getEvaluationTaxonomyWithResponse": "Azure.AI.Projects.EvaluationTaxonomies.get", - "com.azure.ai.projects.EvaluationTaxonomiesAsyncClient.listEvaluationTaxonomies": "Azure.AI.Projects.EvaluationTaxonomies.list", - "com.azure.ai.projects.EvaluationTaxonomiesAsyncClient.updateEvaluationTaxonomy": "Azure.AI.Projects.EvaluationTaxonomies.update", - "com.azure.ai.projects.EvaluationTaxonomiesAsyncClient.updateEvaluationTaxonomyWithResponse": "Azure.AI.Projects.EvaluationTaxonomies.update", - "com.azure.ai.projects.EvaluationTaxonomiesClient": "Azure.AI.Projects.EvaluationTaxonomies", - "com.azure.ai.projects.EvaluationTaxonomiesClient.createEvaluationTaxonomy": "Azure.AI.Projects.EvaluationTaxonomies.create", - "com.azure.ai.projects.EvaluationTaxonomiesClient.createEvaluationTaxonomyWithResponse": "Azure.AI.Projects.EvaluationTaxonomies.create", - "com.azure.ai.projects.EvaluationTaxonomiesClient.deleteEvaluationTaxonomy": "Azure.AI.Projects.EvaluationTaxonomies.delete", - "com.azure.ai.projects.EvaluationTaxonomiesClient.deleteEvaluationTaxonomyWithResponse": "Azure.AI.Projects.EvaluationTaxonomies.delete", - "com.azure.ai.projects.EvaluationTaxonomiesClient.getEvaluationTaxonomy": "Azure.AI.Projects.EvaluationTaxonomies.get", - "com.azure.ai.projects.EvaluationTaxonomiesClient.getEvaluationTaxonomyWithResponse": "Azure.AI.Projects.EvaluationTaxonomies.get", - "com.azure.ai.projects.EvaluationTaxonomiesClient.listEvaluationTaxonomies": "Azure.AI.Projects.EvaluationTaxonomies.list", - "com.azure.ai.projects.EvaluationTaxonomiesClient.updateEvaluationTaxonomy": "Azure.AI.Projects.EvaluationTaxonomies.update", - "com.azure.ai.projects.EvaluationTaxonomiesClient.updateEvaluationTaxonomyWithResponse": "Azure.AI.Projects.EvaluationTaxonomies.update", - "com.azure.ai.projects.EvaluatorsAsyncClient": "Azure.AI.Projects.Evaluators", - "com.azure.ai.projects.EvaluatorsAsyncClient.createVersion": "Azure.AI.Projects.Evaluators.createVersion", - "com.azure.ai.projects.EvaluatorsAsyncClient.createVersionWithResponse": "Azure.AI.Projects.Evaluators.createVersion", - "com.azure.ai.projects.EvaluatorsAsyncClient.deleteVersion": "Azure.AI.Projects.Evaluators.deleteVersion", - "com.azure.ai.projects.EvaluatorsAsyncClient.deleteVersionWithResponse": "Azure.AI.Projects.Evaluators.deleteVersion", - "com.azure.ai.projects.EvaluatorsAsyncClient.getVersion": "Azure.AI.Projects.Evaluators.getVersion", - "com.azure.ai.projects.EvaluatorsAsyncClient.getVersionWithResponse": "Azure.AI.Projects.Evaluators.getVersion", - "com.azure.ai.projects.EvaluatorsAsyncClient.listLatestVersions": "Azure.AI.Projects.Evaluators.listLatestVersions", - "com.azure.ai.projects.EvaluatorsAsyncClient.listVersions": "Azure.AI.Projects.Evaluators.listVersions", - "com.azure.ai.projects.EvaluatorsAsyncClient.updateVersion": "Azure.AI.Projects.Evaluators.updateVersion", - "com.azure.ai.projects.EvaluatorsAsyncClient.updateVersionWithResponse": "Azure.AI.Projects.Evaluators.updateVersion", - "com.azure.ai.projects.EvaluatorsClient": "Azure.AI.Projects.Evaluators", - "com.azure.ai.projects.EvaluatorsClient.createVersion": "Azure.AI.Projects.Evaluators.createVersion", - "com.azure.ai.projects.EvaluatorsClient.createVersionWithResponse": "Azure.AI.Projects.Evaluators.createVersion", - "com.azure.ai.projects.EvaluatorsClient.deleteVersion": "Azure.AI.Projects.Evaluators.deleteVersion", - "com.azure.ai.projects.EvaluatorsClient.deleteVersionWithResponse": "Azure.AI.Projects.Evaluators.deleteVersion", - "com.azure.ai.projects.EvaluatorsClient.getVersion": "Azure.AI.Projects.Evaluators.getVersion", - "com.azure.ai.projects.EvaluatorsClient.getVersionWithResponse": "Azure.AI.Projects.Evaluators.getVersion", - "com.azure.ai.projects.EvaluatorsClient.listLatestVersions": "Azure.AI.Projects.Evaluators.listLatestVersions", - "com.azure.ai.projects.EvaluatorsClient.listVersions": "Azure.AI.Projects.Evaluators.listVersions", - "com.azure.ai.projects.EvaluatorsClient.updateVersion": "Azure.AI.Projects.Evaluators.updateVersion", - "com.azure.ai.projects.EvaluatorsClient.updateVersionWithResponse": "Azure.AI.Projects.Evaluators.updateVersion", - "com.azure.ai.projects.IndexesAsyncClient": "Azure.AI.Projects.Indexes", - "com.azure.ai.projects.IndexesAsyncClient.createOrUpdateVersion": "Azure.AI.Projects.Indexes.createOrUpdateVersion", - "com.azure.ai.projects.IndexesAsyncClient.createOrUpdateVersionWithResponse": "Azure.AI.Projects.Indexes.createOrUpdateVersion", - "com.azure.ai.projects.IndexesAsyncClient.deleteVersion": "Azure.AI.Projects.Indexes.deleteVersion", - "com.azure.ai.projects.IndexesAsyncClient.deleteVersionWithResponse": "Azure.AI.Projects.Indexes.deleteVersion", - "com.azure.ai.projects.IndexesAsyncClient.getVersion": "Azure.AI.Projects.Indexes.getVersion", - "com.azure.ai.projects.IndexesAsyncClient.getVersionWithResponse": "Azure.AI.Projects.Indexes.getVersion", - "com.azure.ai.projects.IndexesAsyncClient.listLatest": "Azure.AI.Projects.Indexes.listLatest", - "com.azure.ai.projects.IndexesAsyncClient.listVersions": "Azure.AI.Projects.Indexes.listVersions", - "com.azure.ai.projects.IndexesClient": "Azure.AI.Projects.Indexes", - "com.azure.ai.projects.IndexesClient.createOrUpdateVersion": "Azure.AI.Projects.Indexes.createOrUpdateVersion", - "com.azure.ai.projects.IndexesClient.createOrUpdateVersionWithResponse": "Azure.AI.Projects.Indexes.createOrUpdateVersion", - "com.azure.ai.projects.IndexesClient.deleteVersion": "Azure.AI.Projects.Indexes.deleteVersion", - "com.azure.ai.projects.IndexesClient.deleteVersionWithResponse": "Azure.AI.Projects.Indexes.deleteVersion", - "com.azure.ai.projects.IndexesClient.getVersion": "Azure.AI.Projects.Indexes.getVersion", - "com.azure.ai.projects.IndexesClient.getVersionWithResponse": "Azure.AI.Projects.Indexes.getVersion", - "com.azure.ai.projects.IndexesClient.listLatest": "Azure.AI.Projects.Indexes.listLatest", - "com.azure.ai.projects.IndexesClient.listVersions": "Azure.AI.Projects.Indexes.listVersions", - "com.azure.ai.projects.InsightsAsyncClient": "Azure.AI.Projects.Insights", - "com.azure.ai.projects.InsightsAsyncClient.generateInsight": "Azure.AI.Projects.Insights.generate", - "com.azure.ai.projects.InsightsAsyncClient.generateInsightWithResponse": "Azure.AI.Projects.Insights.generate", - "com.azure.ai.projects.InsightsAsyncClient.getInsight": "Azure.AI.Projects.Insights.get", - "com.azure.ai.projects.InsightsAsyncClient.getInsightWithResponse": "Azure.AI.Projects.Insights.get", - "com.azure.ai.projects.InsightsAsyncClient.listInsights": "Azure.AI.Projects.Insights.list", - "com.azure.ai.projects.InsightsClient": "Azure.AI.Projects.Insights", - "com.azure.ai.projects.InsightsClient.generateInsight": "Azure.AI.Projects.Insights.generate", - "com.azure.ai.projects.InsightsClient.generateInsightWithResponse": "Azure.AI.Projects.Insights.generate", - "com.azure.ai.projects.InsightsClient.getInsight": "Azure.AI.Projects.Insights.get", - "com.azure.ai.projects.InsightsClient.getInsightWithResponse": "Azure.AI.Projects.Insights.get", - "com.azure.ai.projects.InsightsClient.listInsights": "Azure.AI.Projects.Insights.list", - "com.azure.ai.projects.RedTeamsAsyncClient": "Azure.AI.Projects.RedTeams", - "com.azure.ai.projects.RedTeamsAsyncClient.createRedTeamRun": "Azure.AI.Projects.RedTeams.create", - "com.azure.ai.projects.RedTeamsAsyncClient.createRedTeamRunWithResponse": "Azure.AI.Projects.RedTeams.create", - "com.azure.ai.projects.RedTeamsAsyncClient.getRedTeam": "Azure.AI.Projects.RedTeams.get", - "com.azure.ai.projects.RedTeamsAsyncClient.getRedTeamWithResponse": "Azure.AI.Projects.RedTeams.get", - "com.azure.ai.projects.RedTeamsAsyncClient.listRedTeams": "Azure.AI.Projects.RedTeams.list", - "com.azure.ai.projects.RedTeamsClient": "Azure.AI.Projects.RedTeams", - "com.azure.ai.projects.RedTeamsClient.createRedTeamRun": "Azure.AI.Projects.RedTeams.create", - "com.azure.ai.projects.RedTeamsClient.createRedTeamRunWithResponse": "Azure.AI.Projects.RedTeams.create", - "com.azure.ai.projects.RedTeamsClient.getRedTeam": "Azure.AI.Projects.RedTeams.get", - "com.azure.ai.projects.RedTeamsClient.getRedTeamWithResponse": "Azure.AI.Projects.RedTeams.get", - "com.azure.ai.projects.RedTeamsClient.listRedTeams": "Azure.AI.Projects.RedTeams.list", - "com.azure.ai.projects.SchedulesAsyncClient": "Azure.AI.Projects.Schedules", - "com.azure.ai.projects.SchedulesAsyncClient.createOrUpdateSchedule": "Azure.AI.Projects.Schedules.createOrUpdate", - "com.azure.ai.projects.SchedulesAsyncClient.createOrUpdateScheduleWithResponse": "Azure.AI.Projects.Schedules.createOrUpdate", - "com.azure.ai.projects.SchedulesAsyncClient.deleteSchedule": "Azure.AI.Projects.Schedules.delete", - "com.azure.ai.projects.SchedulesAsyncClient.deleteScheduleWithResponse": "Azure.AI.Projects.Schedules.delete", - "com.azure.ai.projects.SchedulesAsyncClient.getSchedule": "Azure.AI.Projects.Schedules.get", - "com.azure.ai.projects.SchedulesAsyncClient.getScheduleRun": "Azure.AI.Projects.Schedules.getRun", - "com.azure.ai.projects.SchedulesAsyncClient.getScheduleRunWithResponse": "Azure.AI.Projects.Schedules.getRun", - "com.azure.ai.projects.SchedulesAsyncClient.getScheduleWithResponse": "Azure.AI.Projects.Schedules.get", - "com.azure.ai.projects.SchedulesAsyncClient.listScheduleRuns": "Azure.AI.Projects.Schedules.listRuns", - "com.azure.ai.projects.SchedulesAsyncClient.listSchedules": "Azure.AI.Projects.Schedules.list", - "com.azure.ai.projects.SchedulesClient": "Azure.AI.Projects.Schedules", - "com.azure.ai.projects.SchedulesClient.createOrUpdateSchedule": "Azure.AI.Projects.Schedules.createOrUpdate", - "com.azure.ai.projects.SchedulesClient.createOrUpdateScheduleWithResponse": "Azure.AI.Projects.Schedules.createOrUpdate", - "com.azure.ai.projects.SchedulesClient.deleteSchedule": "Azure.AI.Projects.Schedules.delete", - "com.azure.ai.projects.SchedulesClient.deleteScheduleWithResponse": "Azure.AI.Projects.Schedules.delete", - "com.azure.ai.projects.SchedulesClient.getSchedule": "Azure.AI.Projects.Schedules.get", - "com.azure.ai.projects.SchedulesClient.getScheduleRun": "Azure.AI.Projects.Schedules.getRun", - "com.azure.ai.projects.SchedulesClient.getScheduleRunWithResponse": "Azure.AI.Projects.Schedules.getRun", - "com.azure.ai.projects.SchedulesClient.getScheduleWithResponse": "Azure.AI.Projects.Schedules.get", - "com.azure.ai.projects.SchedulesClient.listScheduleRuns": "Azure.AI.Projects.Schedules.listRuns", - "com.azure.ai.projects.SchedulesClient.listSchedules": "Azure.AI.Projects.Schedules.list", - "com.azure.ai.projects.models.AgentClusterInsightRequest": "Azure.AI.Projects.AgentClusterInsightRequest", - "com.azure.ai.projects.models.AgentClusterInsightResult": "Azure.AI.Projects.AgentClusterInsightResult", - "com.azure.ai.projects.models.AgentTaxonomyInput": "Azure.AI.Projects.AgentTaxonomyInput", - "com.azure.ai.projects.models.AgenticIdentityPreviewCredential": "Azure.AI.Projects.AgenticIdentityPreviewCredentials", - "com.azure.ai.projects.models.ApiKeyCredential": "Azure.AI.Projects.ApiKeyCredentials", - "com.azure.ai.projects.models.AttackStrategy": "Azure.AI.Projects.AttackStrategy", - "com.azure.ai.projects.models.AzureAIAgentTarget": "Azure.AI.Projects.AzureAIAgentTarget", - "com.azure.ai.projects.models.AzureAIModelTarget": "Azure.AI.Projects.AzureAIModelTarget", - "com.azure.ai.projects.models.AzureAISearchIndex": "Azure.AI.Projects.AzureAISearchIndex", - "com.azure.ai.projects.models.AzureOpenAIModelConfiguration": "Azure.AI.Projects.AzureOpenAIModelConfiguration", - "com.azure.ai.projects.models.BaseCredential": "Azure.AI.Projects.BaseCredentials", - "com.azure.ai.projects.models.BlobReference": "Azure.AI.Projects.BlobReference", - "com.azure.ai.projects.models.BlobReferenceSasCredential": "Azure.AI.Projects.SasCredential", - "com.azure.ai.projects.models.ChartCoordinate": "Azure.AI.Projects.ChartCoordinate", - "com.azure.ai.projects.models.ClusterInsightResult": "Azure.AI.Projects.ClusterInsightResult", - "com.azure.ai.projects.models.ClusterTokenUsage": "Azure.AI.Projects.ClusterTokenUsage", - "com.azure.ai.projects.models.CodeBasedEvaluatorDefinition": "Azure.AI.Projects.CodeBasedEvaluatorDefinition", - "com.azure.ai.projects.models.Connection": "Azure.AI.Projects.Connection", - "com.azure.ai.projects.models.ConnectionType": "Azure.AI.Projects.ConnectionType", - "com.azure.ai.projects.models.ContinuousEvaluationRuleAction": "Azure.AI.Projects.ContinuousEvaluationRuleAction", - "com.azure.ai.projects.models.CosmosDBIndex": "Azure.AI.Projects.CosmosDBIndex", - "com.azure.ai.projects.models.CredentialType": "Azure.AI.Projects.CredentialType", - "com.azure.ai.projects.models.CronTrigger": "Azure.AI.Projects.CronTrigger", - "com.azure.ai.projects.models.CustomCredential": "Azure.AI.Projects.CustomCredential", - "com.azure.ai.projects.models.DailyRecurrenceSchedule": "Azure.AI.Projects.DailyRecurrenceSchedule", - "com.azure.ai.projects.models.DatasetCredential": "Azure.AI.Projects.AssetCredentialResponse", - "com.azure.ai.projects.models.DatasetType": "Azure.AI.Projects.DatasetType", - "com.azure.ai.projects.models.DatasetVersion": "Azure.AI.Projects.DatasetVersion", - "com.azure.ai.projects.models.DayOfWeek": "Azure.AI.Projects.DayOfWeek", - "com.azure.ai.projects.models.Deployment": "Azure.AI.Projects.Deployment", - "com.azure.ai.projects.models.DeploymentType": "Azure.AI.Projects.DeploymentType", - "com.azure.ai.projects.models.EmbeddingConfiguration": "Azure.AI.Projects.EmbeddingConfiguration", - "com.azure.ai.projects.models.EntraIdCredential": "Azure.AI.Projects.EntraIDCredentials", - "com.azure.ai.projects.models.EvaluationComparisonInsightRequest": "Azure.AI.Projects.EvaluationComparisonInsightRequest", - "com.azure.ai.projects.models.EvaluationComparisonInsightResult": "Azure.AI.Projects.EvaluationComparisonInsightResult", - "com.azure.ai.projects.models.EvaluationResult": "Azure.AI.Projects.EvalResult", - "com.azure.ai.projects.models.EvaluationResultSample": "Azure.AI.Projects.EvaluationResultSample", - "com.azure.ai.projects.models.EvaluationRule": "Azure.AI.Projects.EvaluationRule", - "com.azure.ai.projects.models.EvaluationRuleAction": "Azure.AI.Projects.EvaluationRuleAction", - "com.azure.ai.projects.models.EvaluationRuleActionType": "Azure.AI.Projects.EvaluationRuleActionType", - "com.azure.ai.projects.models.EvaluationRuleEventType": "Azure.AI.Projects.EvaluationRuleEventType", - "com.azure.ai.projects.models.EvaluationRuleFilter": "Azure.AI.Projects.EvaluationRuleFilter", - "com.azure.ai.projects.models.EvaluationRunClusterInsightRequest": "Azure.AI.Projects.EvaluationRunClusterInsightRequest", - "com.azure.ai.projects.models.EvaluationRunClusterInsightResult": "Azure.AI.Projects.EvaluationRunClusterInsightResult", - "com.azure.ai.projects.models.EvaluationRunResultCompareItem": "Azure.AI.Projects.EvalRunResultCompareItem", - "com.azure.ai.projects.models.EvaluationRunResultComparison": "Azure.AI.Projects.EvalRunResultComparison", - "com.azure.ai.projects.models.EvaluationRunResultSummary": "Azure.AI.Projects.EvalRunResultSummary", - "com.azure.ai.projects.models.EvaluationScheduleTask": "Azure.AI.Projects.EvaluationScheduleTask", - "com.azure.ai.projects.models.EvaluationScheduleTaskEvalRun": "Azure.AI.Projects.EvaluationScheduleTask.evalRun.anonymous", - "com.azure.ai.projects.models.EvaluationTaxonomy": "Azure.AI.Projects.EvaluationTaxonomy", - "com.azure.ai.projects.models.EvaluationTaxonomyInput": "Azure.AI.Projects.EvaluationTaxonomyInput", - "com.azure.ai.projects.models.EvaluationTaxonomyInputType": "Azure.AI.Projects.EvaluationTaxonomyInputType", - "com.azure.ai.projects.models.EvaluatorCategory": "Azure.AI.Projects.EvaluatorCategory", - "com.azure.ai.projects.models.EvaluatorDefinition": "Azure.AI.Projects.EvaluatorDefinition", - "com.azure.ai.projects.models.EvaluatorDefinitionType": "Azure.AI.Projects.EvaluatorDefinitionType", - "com.azure.ai.projects.models.EvaluatorMetric": "Azure.AI.Projects.EvaluatorMetric", - "com.azure.ai.projects.models.EvaluatorMetricDirection": "Azure.AI.Projects.EvaluatorMetricDirection", - "com.azure.ai.projects.models.EvaluatorMetricType": "Azure.AI.Projects.EvaluatorMetricType", - "com.azure.ai.projects.models.EvaluatorType": "Azure.AI.Projects.EvaluatorType", - "com.azure.ai.projects.models.EvaluatorVersion": "Azure.AI.Projects.EvaluatorVersion", - "com.azure.ai.projects.models.FieldMapping": "Azure.AI.Projects.FieldMapping", - "com.azure.ai.projects.models.FileDatasetVersion": "Azure.AI.Projects.FileDatasetVersion", - "com.azure.ai.projects.models.FolderDatasetVersion": "Azure.AI.Projects.FolderDatasetVersion", - "com.azure.ai.projects.models.FoundryFeaturesOptInKeys": "Azure.AI.Projects.FoundryFeaturesOptInKeys", - "com.azure.ai.projects.models.HourlyRecurrenceSchedule": "Azure.AI.Projects.HourlyRecurrenceSchedule", - "com.azure.ai.projects.models.HumanEvaluationPreviewRuleAction": "Azure.AI.Projects.HumanEvaluationPreviewRuleAction", - "com.azure.ai.projects.models.Index": "Azure.AI.Projects.Index", - "com.azure.ai.projects.models.IndexType": "Azure.AI.Projects.IndexType", - "com.azure.ai.projects.models.Insight": "Azure.AI.Projects.Insight", - "com.azure.ai.projects.models.InsightCluster": "Azure.AI.Projects.InsightCluster", - "com.azure.ai.projects.models.InsightModelConfiguration": "Azure.AI.Projects.InsightModelConfiguration", - "com.azure.ai.projects.models.InsightRequest": "Azure.AI.Projects.InsightRequest", - "com.azure.ai.projects.models.InsightResult": "Azure.AI.Projects.InsightResult", - "com.azure.ai.projects.models.InsightSample": "Azure.AI.Projects.InsightSample", - "com.azure.ai.projects.models.InsightScheduleTask": "Azure.AI.Projects.InsightScheduleTask", - "com.azure.ai.projects.models.InsightSummary": "Azure.AI.Projects.InsightSummary", - "com.azure.ai.projects.models.InsightType": "Azure.AI.Projects.InsightType", - "com.azure.ai.projects.models.InsightsMetadata": "Azure.AI.Projects.InsightsMetadata", - "com.azure.ai.projects.models.ListVersionsRequestType": "Azure.AI.Projects.listVersions.RequestType.anonymous", - "com.azure.ai.projects.models.ManagedAzureAISearchIndex": "Azure.AI.Projects.ManagedAzureAISearchIndex", - "com.azure.ai.projects.models.ModelDeployment": "Azure.AI.Projects.ModelDeployment", - "com.azure.ai.projects.models.ModelDeploymentSku": "Azure.AI.Projects.Sku", - "com.azure.ai.projects.models.ModelSamplingParams": "Azure.AI.Projects.ModelSamplingParams", - "com.azure.ai.projects.models.MonthlyRecurrenceSchedule": "Azure.AI.Projects.MonthlyRecurrenceSchedule", - "com.azure.ai.projects.models.NoAuthenticationCredential": "Azure.AI.Projects.NoAuthenticationCredentials", - "com.azure.ai.projects.models.OneTimeTrigger": "Azure.AI.Projects.OneTimeTrigger", - "com.azure.ai.projects.models.OperationStatus": "Azure.Core.Foundations.OperationState", - "com.azure.ai.projects.models.PendingUploadRequest": "Azure.AI.Projects.PendingUploadRequest", - "com.azure.ai.projects.models.PendingUploadResponse": "Azure.AI.Projects.PendingUploadResponse", - "com.azure.ai.projects.models.PendingUploadType": "Azure.AI.Projects.PendingUploadType", - "com.azure.ai.projects.models.PromptBasedEvaluatorDefinition": "Azure.AI.Projects.PromptBasedEvaluatorDefinition", - "com.azure.ai.projects.models.RecurrenceSchedule": "Azure.AI.Projects.RecurrenceSchedule", - "com.azure.ai.projects.models.RecurrenceTrigger": "Azure.AI.Projects.RecurrenceTrigger", - "com.azure.ai.projects.models.RecurrenceType": "Azure.AI.Projects.RecurrenceType", - "com.azure.ai.projects.models.RedTeam": "Azure.AI.Projects.RedTeam", - "com.azure.ai.projects.models.RiskCategory": "Azure.AI.Projects.RiskCategory", - "com.azure.ai.projects.models.SampleType": "Azure.AI.Projects.SampleType", - "com.azure.ai.projects.models.SasCredential": "Azure.AI.Projects.SASCredentials", - "com.azure.ai.projects.models.Schedule": "Azure.AI.Projects.Schedule", - "com.azure.ai.projects.models.ScheduleProvisioningStatus": "Azure.AI.Projects.ScheduleProvisioningStatus", - "com.azure.ai.projects.models.ScheduleRun": "Azure.AI.Projects.ScheduleRun", - "com.azure.ai.projects.models.ScheduleTask": "Azure.AI.Projects.ScheduleTask", - "com.azure.ai.projects.models.ScheduleTaskType": "Azure.AI.Projects.ScheduleTaskType", - "com.azure.ai.projects.models.Target": "Azure.AI.Projects.Target", - "com.azure.ai.projects.models.TargetConfig": "Azure.AI.Projects.TargetConfig", - "com.azure.ai.projects.models.TaxonomyCategory": "Azure.AI.Projects.TaxonomyCategory", - "com.azure.ai.projects.models.TaxonomySubCategory": "Azure.AI.Projects.TaxonomySubCategory", - "com.azure.ai.projects.models.ToolDescription": "Azure.AI.Projects.ToolDescription", - "com.azure.ai.projects.models.TreatmentEffectType": "Azure.AI.Projects.TreatmentEffectType", - "com.azure.ai.projects.models.Trigger": "Azure.AI.Projects.Trigger", - "com.azure.ai.projects.models.TriggerType": "Azure.AI.Projects.TriggerType", - "com.azure.ai.projects.models.WeeklyRecurrenceSchedule": "Azure.AI.Projects.WeeklyRecurrenceSchedule" - } -} From 8131b0626d0a5aa5de6f03c5ad9e7c089669a603 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 09:35:38 +0800 Subject: [PATCH 14/29] Fix memory store tests and voice deserialization Use normalized memory store names in tests and preserve voice AgentDefinition polymorphic deserialization through code generation customization. --- .../src/main/java/AgentsCustomizations.java | 20 +++++++++++++++++++ .../ai/agents/models/AgentDefinition.java | 2 ++ .../ai/agents/MemoryStoresAsyncTests.java | 6 +++--- .../azure/ai/agents/MemoryStoresTests.java | 6 +++--- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/sdk/ai/azure-ai-agents/customizations/src/main/java/AgentsCustomizations.java b/sdk/ai/azure-ai-agents/customizations/src/main/java/AgentsCustomizations.java index fdf7600db1d61..9d4ef243b9e07 100644 --- a/sdk/ai/azure-ai-agents/customizations/src/main/java/AgentsCustomizations.java +++ b/sdk/ai/azure-ai-agents/customizations/src/main/java/AgentsCustomizations.java @@ -75,6 +75,26 @@ private void removeGeneratedTrailingWhitespace(LibraryCustomization customizatio } private void customizeRealtimeMessageDiscriminators(LibraryCustomization customization) { + customization.getClass("com.azure.ai.agents.models", "AgentDefinition").customizeAst(ast -> { + MethodDeclaration fromJson = ast.getClassByName("AgentDefinition") + .orElseThrow(() -> new IllegalStateException("Generated AgentDefinition was not found.")) + .getMethodsByName("fromJson") + .get(0); + String body = fromJson.getBody() + .orElseThrow(() -> new IllegalStateException("Generated AgentDefinition.fromJson body was not found.")) + .toString(); + String updatedBody = body.replace( + "} else {\n return fromJsonKnownDiscriminator(readerToUse.reset());", + "} else if (\"voice\".equals(discriminatorValue)) {\n" + + " return VoiceAgentDefinition.fromJson(readerToUse.reset());\n" + + " } else {\n" + + " return fromJsonKnownDiscriminator(readerToUse.reset());"); + if (body.equals(updatedBody)) { + throw new IllegalStateException("Generated AgentDefinition.fromJson discriminator chain was not found."); + } + fromJson.setBody(StaticJavaParser.parseBlock(updatedBody)); + }); + for (String className : new String[] { "RealtimeConversationItemMessage", "RealtimeConversationItemMessageAssistant", "RealtimeConversationItemMessageSystem", "RealtimeConversationItemMessageUser", "VoiceAgentSystemTool", "VoiceAgentEndConversationSystemTool" }) { diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentDefinition.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentDefinition.java index bd2b34456daab..e592e63909611 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentDefinition.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentDefinition.java @@ -114,6 +114,8 @@ public static AgentDefinition fromJson(JsonReader jsonReader) throws IOException return WorkflowAgentDefinition.fromJson(readerToUse.reset()); } else if ("external".equals(discriminatorValue)) { return ExternalAgentDefinition.fromJson(readerToUse.reset()); + } else if ("voice".equals(discriminatorValue)) { + return VoiceAgentDefinition.fromJson(readerToUse.reset()); } else { return fromJsonKnownDiscriminator(readerToUse.reset()); } diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresAsyncTests.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresAsyncTests.java index e510a0de0070c..8006e219183b3 100644 --- a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresAsyncTests.java +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresAsyncTests.java @@ -42,7 +42,7 @@ public class MemoryStoresAsyncTests extends ClientTestBase { public void basicMemoryStoresCrud(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresAsyncClient memoryStoreClient = getMemoryStoresAsyncClient(httpClient, serviceVersion); - String memoryStoreName = "my_memory_store_java"; + String memoryStoreName = "my-memory-store-java"; String initialDescription = "Example memory store for conversations"; String updatedDescription = "Updated description"; @@ -104,7 +104,7 @@ public void basicMemoryStoresCrud(HttpClient httpClient, AgentsServiceVersion se public void basicMemoryStores(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresAsyncClient memoryStoreClient = getMemoryStoresAsyncClient(httpClient, serviceVersion); - String memoryStoreName = "my_memory_store"; + String memoryStoreName = "my-memory-store"; String description = "Example memory store for conversations"; String scope = "user_123"; String userMessageContent = "I prefer dark roast coffee and usually drink it in the morning"; @@ -164,7 +164,7 @@ public void basicMemoryStores(HttpClient httpClient, AgentsServiceVersion servic public void advancedMemoryStores(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresAsyncClient memoryStoreClient = getMemoryStoresAsyncClient(httpClient, serviceVersion); - String memoryStoreName = "my_memory_store"; + String memoryStoreName = "my-memory-store"; String description = "Example memory store for conversations"; String scope = "user_123"; String firstMessageContent = "I prefer dark roast coffee and usually drink it in the morning"; diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresTests.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresTests.java index 53b53cb2f62b3..b64f8b94d97f2 100644 --- a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresTests.java +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/MemoryStoresTests.java @@ -33,7 +33,7 @@ public class MemoryStoresTests extends ClientTestBase { public void basicMemoryStoresCrud(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresClient memoryStoreClient = getMemoryStoresSyncClient(httpClient, serviceVersion); - String memoryStoreName = "my_memory_store_java"; + String memoryStoreName = "my-memory-store-java"; String initialDescription = "Example memory store for conversations"; String updatedDescription = "Updated description"; @@ -92,7 +92,7 @@ public void basicMemoryStoresCrud(HttpClient httpClient, AgentsServiceVersion se public void basicMemoryStores(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresClient memoryStoreClient = getMemoryStoresSyncClient(httpClient, serviceVersion); - String memoryStoreName = "my_memory_store"; + String memoryStoreName = "my-memory-store"; String description = "Example memory store for conversations"; String scope = "user_123"; String userMessageContent = "I prefer dark roast coffee and usually drink it in the morning"; @@ -160,7 +160,7 @@ public void basicMemoryStores(HttpClient httpClient, AgentsServiceVersion servic public void advancedMemoryStores(HttpClient httpClient, AgentsServiceVersion serviceVersion) { BetaMemoryStoresClient memoryStoreClient = getMemoryStoresSyncClient(httpClient, serviceVersion); - String memoryStoreName = "my_memory_store"; + String memoryStoreName = "my-memory-store"; String description = "Example memory store for conversations"; String scope = "user_123"; String firstMessageContent = "I prefer dark roast coffee and usually drink it in the morning"; From 199a1086e123b559317009db301da6ee7f437689 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 10:21:05 +0800 Subject: [PATCH 15/29] Regenerate AI Agents and Projects SDKs --- .../src/main/java/AgentsCustomizations.java | 29 +-- .../azure/ai/agents/ToolboxesAsyncClient.java | 68 +++++++ .../com/azure/ai/agents/ToolboxesClient.java | 68 +++++++ .../agents/implementation/ToolboxesImpl.java | 170 ++++++++++++++++++ .../agents/models/AgentEndpointProtocol.java | 6 + .../models/AgentOptimizationDatasetItem.java | 23 ++- .../models/AgentOptimizationEvaluatorRef.java | 119 ++++++++++++ .../models/AgentOptimizationJobInputs.java | 10 +- .../com/azure/ai/agents/models/RaiConfig.java | 51 +++++- .../RealtimeConversationItemMessage.java | 2 + .../agents/models/VoiceAgentAudioConfig.java | 2 + .../models/VoiceAgentAudioInputConfig.java | 2 + .../models/VoiceAgentAudioOutputConfig.java | 2 + .../models/VoiceAgentAudioTimestampType.java | 7 +- .../agents/models/VoiceAgentAvatarConfig.java | 2 + .../VoiceAgentAvatarOutputProtocol.java | 2 + .../agents/models/VoiceAgentAvatarType.java | 2 + ...eAgentAzureSemanticVadEnTurnDetection.java | 2 + ...eSemanticVadMultilingualTurnDetection.java | 2 + ...iceAgentAzureSemanticVadTurnDetection.java | 2 + .../VoiceAgentEndOfUtteranceDetection.java | 2 + ...oiceAgentEndOfUtteranceDetectionModel.java | 2 + ...oiceAgentEndOfUtteranceThresholdLevel.java | 2 + .../models/VoiceAgentGreetingConfig.java | 2 + .../models/VoiceAgentInputTranscription.java | 2 + .../VoiceAgentInputTranscriptionModel.java | 2 + .../VoiceAgentLlmGeneratedGreetingConfig.java | 2 + .../ai/agents/models/VoiceAgentMcpTool.java | 2 + .../models/VoiceAgentNoiseReduction.java | 2 + .../models/VoiceAgentNoiseReductionType.java | 2 + .../VoiceAgentServerVadTurnDetection.java | 2 + .../VoiceAgentSessionIncludeOption.java | 9 +- .../agents/models/VoiceAgentSystemTool.java | 2 + .../models/VoiceAgentSystemToolName.java | 2 + .../VoiceAgentTemplateGreetingConfig.java | 2 + .../ai/agents/models/VoiceAgentTool.java | 2 + .../VoiceAgentToolResponseScheduling.java | 2 + .../agents/models/VoiceAgentToolboxTool.java | 2 + .../models/VoiceAgentTurnDetectionConfig.java | 2 + .../models/VoiceAgentTurnDetectionType.java | 2 + .../ai/agents/models/VoiceOutputModality.java | 2 + .../ai/agents/models/VoiceResponseAudio.java | 2 + .../models/VoiceResponseAudioOutput.java | 2 + .../com/azure/ai/agents/models/VoiceType.java | 2 + .../src/main/java/module-info.java | 3 + .../AgentOptimizationAsyncSample.java | 4 +- .../optimization/AgentOptimizationSample.java | 4 +- .../BetaAgentInsightMonitorsAsyncClient.java | 6 +- .../BetaAgentInsightMonitorsClient.java | 6 +- .../ai/projects/BetaRoutinesAsyncClient.java | 16 ++ .../azure/ai/projects/BetaRoutinesClient.java | 16 ++ .../BetaAgentInsightMonitorsImpl.java | 16 +- .../models/AgentInsightHighlightedTrace.java | 36 ++-- 53 files changed, 645 insertions(+), 88 deletions(-) create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationEvaluatorRef.java diff --git a/sdk/ai/azure-ai-agents/customizations/src/main/java/AgentsCustomizations.java b/sdk/ai/azure-ai-agents/customizations/src/main/java/AgentsCustomizations.java index 9d4ef243b9e07..538ae1dc33768 100644 --- a/sdk/ai/azure-ai-agents/customizations/src/main/java/AgentsCustomizations.java +++ b/sdk/ai/azure-ai-agents/customizations/src/main/java/AgentsCustomizations.java @@ -13,7 +13,6 @@ import com.github.javaparser.ast.expr.MemberValuePair; import com.github.javaparser.ast.expr.NormalAnnotationExpr; import com.github.javaparser.ast.expr.StringLiteralExpr; -import com.github.javaparser.ast.modules.ModuleDeclaration; import java.io.IOException; import java.io.UncheckedIOException; import java.nio.charset.StandardCharsets; @@ -32,7 +31,6 @@ public class AgentsCustomizations extends Customization { @Override public void customize(LibraryCustomization libraryCustomization, Logger logger) { - customizeModuleInfo(libraryCustomization); customizeVoiceAgentWebSocketBuilder(libraryCustomization); customizeRealtimeMessageDiscriminators(libraryCustomization); removeGeneratedTrailingWhitespace(libraryCustomization); @@ -43,30 +41,6 @@ public void customize(LibraryCustomization libraryCustomization, Logger logger) annotateBetaFields(libraryCustomization, loadBetaAnnotations(logger), logger); } - private void customizeModuleInfo(LibraryCustomization customization) { - String fileName = "src/main/java/module-info.java"; - CompilationUnit moduleInfo = StaticJavaParser.parse(customization.getRawEditor().getFileContent(fileName)); - ModuleDeclaration module = moduleInfo.getModule() - .orElseThrow(() -> new IllegalStateException("Generated module-info.java has no module")); - for (String requiredModule : new String[] { "openai.java.core", "openai.java.client.okhttp" }) { - String directive = "requires transitive " + requiredModule + ";"; - if (module.getDirectives().stream().noneMatch(existing -> directive.equals(existing.toString().trim()))) { - String nonTransitiveDirective = "requires " + requiredModule + ";"; - module.getDirectives() - .removeIf(existing -> nonTransitiveDirective.equals(existing.toString().trim())); - module.addDirective(directive); - } - } - for (String requiredModule : new String[] { "reactor.netty.http", "reactor.netty.core", - "io.netty.codec.http", "io.netty.transport", "io.netty.common", "io.netty.codec" }) { - String directive = "requires " + requiredModule + ";"; - if (module.getDirectives().stream().noneMatch(existing -> directive.equals(existing.toString().trim()))) { - module.addDirective(directive); - } - } - customization.getRawEditor().replaceFile(fileName, moduleInfo.toString()); - } - private void removeGeneratedTrailingWhitespace(LibraryCustomization customization) { String fileName = "src/main/java/com/azure/ai/agents/models/MemoryStoreObjectType.java"; String content = customization.getRawEditor().getFileContent(fileName); @@ -83,6 +57,9 @@ private void customizeRealtimeMessageDiscriminators(LibraryCustomization customi String body = fromJson.getBody() .orElseThrow(() -> new IllegalStateException("Generated AgentDefinition.fromJson body was not found.")) .toString(); + if (body.contains("\"voice\".equals(discriminatorValue)")) { + return; + } String updatedBody = body.replace( "} else {\n return fromJsonKnownDiscriminator(readerToUse.reset());", "} else if (\"voice\".equals(discriminatorValue)) {\n" diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesAsyncClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesAsyncClient.java index 2dd988e4ebb70..75a5a5a295f55 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesAsyncClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesAsyncClient.java @@ -86,6 +86,23 @@ public final class ToolboxesAsyncClient { * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } @@ -126,6 +143,23 @@ public final class ToolboxesAsyncClient { * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } @@ -287,6 +321,23 @@ public PagedFlux listToolboxes(RequestOptions requestOptions) { * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } @@ -345,6 +396,23 @@ public PagedFlux listToolboxVersions(String name, RequestOptions req * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesClient.java index fba494acbcf7e..a527bf602af2f 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesClient.java @@ -80,6 +80,23 @@ public final class ToolboxesClient { * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } @@ -120,6 +137,23 @@ public final class ToolboxesClient { * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } @@ -279,6 +313,23 @@ public PagedIterable listToolboxes(RequestOptions requestOptions) { * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } @@ -337,6 +388,23 @@ public PagedIterable listToolboxVersions(String name, RequestOptions * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/ToolboxesImpl.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/ToolboxesImpl.java index 7ce322adca41d..fc57d1cedbd95 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/ToolboxesImpl.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/ToolboxesImpl.java @@ -281,6 +281,23 @@ Response deleteToolboxVersionSync(@HostParam("endpoint") String endpoint, * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } @@ -321,6 +338,23 @@ Response deleteToolboxVersionSync(@HostParam("endpoint") String endpoint, * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } @@ -380,6 +414,23 @@ public Mono> createToolboxVersionWithResponseAsync(String n * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } @@ -420,6 +471,23 @@ public Mono> createToolboxVersionWithResponseAsync(String n * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } @@ -768,6 +836,23 @@ public PagedIterable listToolboxes(RequestOptions requestOptions) { * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } @@ -852,6 +937,23 @@ private Mono> listToolboxVersionsSinglePageAsync(Strin * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } @@ -929,6 +1031,23 @@ public PagedFlux listToolboxVersionsAsync(String name, RequestOption * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } @@ -1010,6 +1129,23 @@ private PagedResponse listToolboxVersionsSinglePage(String name, Req * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } @@ -1067,6 +1203,23 @@ public PagedIterable listToolboxVersions(String name, RequestOptions * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } @@ -1128,6 +1281,23 @@ public Mono> getToolboxVersionWithResponseAsync(String name * policies (Optional): { * rai_config (Optional): { * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } * } * } * } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentEndpointProtocol.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentEndpointProtocol.java index 2d3bd91d0e3a7..74fa101efe21a 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentEndpointProtocol.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentEndpointProtocol.java @@ -78,4 +78,10 @@ public static Collection values() { */ @Generated public static final AgentEndpointProtocol INVOCATIONS_WS = fromString("invocations_ws"); + + /** + * Static value voice for AgentEndpointProtocol. + */ + @Generated + public static final AgentEndpointProtocol VOICE = fromString("voice"); } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetItem.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetItem.java index 49c207326a7ba..6b5b8007f0e02 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetItem.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetItem.java @@ -120,7 +120,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); jsonWriter.writeStringField("query", this.query); jsonWriter.writeStringField("ground_truth", this.groundTruth); - jsonWriter.writeNumberField("desired_num_turns", this.desiredNumberTurns); + jsonWriter.writeNumberField("desired_num_turns", this.desiredNumTurns); jsonWriter.writeArrayField("criteria", this.criteria, (writer, element) -> writer.writeJson(element)); return jsonWriter.writeEndObject(); } @@ -145,8 +145,7 @@ public static AgentOptimizationDatasetItem fromJson(JsonReader jsonReader) throw } else if ("ground_truth".equals(fieldName)) { deserializedAgentOptimizationDatasetItem.groundTruth = reader.getString(); } else if ("desired_num_turns".equals(fieldName)) { - deserializedAgentOptimizationDatasetItem.desiredNumberTurns - = reader.getNullable(JsonReader::getInt); + deserializedAgentOptimizationDatasetItem.desiredNumTurns = reader.getNullable(JsonReader::getInt); } else if ("criteria".equals(fieldName)) { List criteria = reader.readArray(reader1 -> AgentOptimizationDatasetCriterion.fromJson(reader1)); @@ -163,27 +162,27 @@ public static AgentOptimizationDatasetItem fromJson(JsonReader jsonReader) throw * Desired number of conversation turns for simulation mode (1-20). */ @Generated - private Integer desiredNumberTurns; + private Integer desiredNumTurns; /** - * Get the desiredNumberTurns property: Desired number of conversation turns for simulation mode (1-20). + * Get the desiredNumTurns property: Desired number of conversation turns for simulation mode (1-20). * - * @return the desiredNumberTurns value. + * @return the desiredNumTurns value. */ @Generated - public Integer getDesiredNumberTurns() { - return this.desiredNumberTurns; + public Integer getDesiredNumTurns() { + return this.desiredNumTurns; } /** - * Set the desiredNumberTurns property: Desired number of conversation turns for simulation mode (1-20). + * Set the desiredNumTurns property: Desired number of conversation turns for simulation mode (1-20). * - * @param desiredNumberTurns the desiredNumberTurns value to set. + * @param desiredNumTurns the desiredNumTurns value to set. * @return the AgentOptimizationDatasetItem object itself. */ @Generated - public AgentOptimizationDatasetItem setDesiredNumberTurns(Integer desiredNumberTurns) { - this.desiredNumberTurns = desiredNumberTurns; + public AgentOptimizationDatasetItem setDesiredNumTurns(Integer desiredNumTurns) { + this.desiredNumTurns = desiredNumTurns; return this; } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationEvaluatorRef.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationEvaluatorRef.java new file mode 100644 index 0000000000000..a58b7aae6974a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationEvaluatorRef.java @@ -0,0 +1,119 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * Reference to a named evaluator, optionally pinned to a version. + */ +@Fluent +public final class AgentOptimizationEvaluatorRef implements JsonSerializable { + /* + * Evaluator name. + */ + @Generated + private final String name; + + /* + * Evaluator version. If not specified, the latest version is used. + */ + @Generated + private String version; + + /** + * Creates an instance of AgentOptimizationEvaluatorRef class. + * + * @param name the name value to set. + */ + @Generated + public AgentOptimizationEvaluatorRef(String name) { + this.name = name; + } + + /** + * Get the name property: Evaluator name. + * + * @return the name value. + */ + @Generated + public String getName() { + return this.name; + } + + /** + * Get the version property: Evaluator version. If not specified, the latest version is used. + * + * @return the version value. + */ + @Generated + public String getVersion() { + return this.version; + } + + /** + * Set the version property: Evaluator version. If not specified, the latest version is used. + * + * @param version the version value to set. + * @return the AgentOptimizationEvaluatorRef object itself. + */ + @Generated + public AgentOptimizationEvaluatorRef setVersion(String version) { + this.version = version; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name); + jsonWriter.writeStringField("version", this.version); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of AgentOptimizationEvaluatorRef from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of AgentOptimizationEvaluatorRef if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the AgentOptimizationEvaluatorRef. + */ + @Generated + public static AgentOptimizationEvaluatorRef fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String name = null; + String version = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("version".equals(fieldName)) { + version = reader.getString(); + } else { + reader.skipChildren(); + } + } + AgentOptimizationEvaluatorRef deserializedAgentOptimizationEvaluatorRef + = new AgentOptimizationEvaluatorRef(name); + deserializedAgentOptimizationEvaluatorRef.version = version; + + return deserializedAgentOptimizationEvaluatorRef; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationJobInputs.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationJobInputs.java index 63f794a603f62..872ccc5258658 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationJobInputs.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationJobInputs.java @@ -42,7 +42,7 @@ public final class AgentOptimizationJobInputs implements JsonSerializable evaluators; + private final List evaluators; /* * Tuning knobs and run-mode. @@ -59,7 +59,7 @@ public final class AgentOptimizationJobInputs implements JsonSerializable evaluators) { + List evaluators) { this.agent = agent; this.trainDataset = trainDataset; this.evaluators = evaluators; @@ -117,7 +117,7 @@ public AgentOptimizationJobInputs setValidationDataset(AgentOptimizationDatasetI * @return the evaluators value. */ @Generated - public List getEvaluators() { + public List getEvaluators() { return this.evaluators; } @@ -172,7 +172,7 @@ public static AgentOptimizationJobInputs fromJson(JsonReader jsonReader) throws return jsonReader.readObject(reader -> { OptimizedAgentIdentifier agent = null; AgentOptimizationDatasetInput trainDataset = null; - List evaluators = null; + List evaluators = null; AgentOptimizationDatasetInput validationDataset = null; AgentOptimizationOptions options = null; while (reader.nextToken() != JsonToken.END_OBJECT) { @@ -183,7 +183,7 @@ public static AgentOptimizationJobInputs fromJson(JsonReader jsonReader) throws } else if ("train_dataset".equals(fieldName)) { trainDataset = AgentOptimizationDatasetInput.fromJson(reader); } else if ("evaluators".equals(fieldName)) { - evaluators = reader.readArray(reader1 -> AgentOptimizationEvaluatorReference.fromJson(reader1)); + evaluators = reader.readArray(reader1 -> AgentOptimizationEvaluatorRef.fromJson(reader1)); } else if ("validation_dataset".equals(fieldName)) { validationDataset = AgentOptimizationDatasetInput.fromJson(reader); } else if ("options".equals(fieldName)) { diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiConfig.java index b8cb0567ea436..b703679844fd9 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiConfig.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RaiConfig.java @@ -3,8 +3,8 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; -import com.azure.core.annotation.Immutable; import com.azure.json.JsonReader; import com.azure.json.JsonSerializable; import com.azure.json.JsonToken; @@ -14,7 +14,7 @@ /** * Configuration for Responsible AI (RAI) content filtering and safety features. */ -@Immutable +@Fluent public final class RaiConfig implements JsonSerializable { /* @@ -51,6 +51,7 @@ public String getRaiPolicyName() { public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); jsonWriter.writeStringField("rai_policy_name", this.raiPolicyName); + jsonWriter.writeJsonField("invocations_moderation", this.invocationsModeration); return jsonWriter.writeEndObject(); } @@ -67,16 +68,60 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { public static RaiConfig fromJson(JsonReader jsonReader) throws IOException { return jsonReader.readObject(reader -> { String raiPolicyName = null; + RaiInvocationModeration invocationsModeration = null; while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); reader.nextToken(); if ("rai_policy_name".equals(fieldName)) { raiPolicyName = reader.getString(); + } else if ("invocations_moderation".equals(fieldName)) { + invocationsModeration = RaiInvocationModeration.fromJson(reader); } else { reader.skipChildren(); } } - return new RaiConfig(raiPolicyName); + RaiConfig deserializedRaiConfig = new RaiConfig(raiPolicyName); + deserializedRaiConfig.invocationsModeration = invocationsModeration; + return deserializedRaiConfig; }); } + + /* + * Author-declared configuration telling the platform where user/agent text lives in the + * agent-defined invocations request/response bodies, so content-safety guardrails can extract + * and moderate it. Optional; a rai_config without it leaves the invocations path without + * content-safety moderation. + */ + @Generated + private RaiInvocationModeration invocationsModeration; + + /** + * Get the invocationsModeration property: Author-declared configuration telling the platform where user/agent text + * lives in the + * agent-defined invocations request/response bodies, so content-safety guardrails can extract + * and moderate it. Optional; a rai_config without it leaves the invocations path without + * content-safety moderation. + * + * @return the invocationsModeration value. + */ + @Generated + public RaiInvocationModeration getInvocationsModeration() { + return this.invocationsModeration; + } + + /** + * Set the invocationsModeration property: Author-declared configuration telling the platform where user/agent text + * lives in the + * agent-defined invocations request/response bodies, so content-safety guardrails can extract + * and moderate it. Optional; a rai_config without it leaves the invocations path without + * content-safety moderation. + * + * @param invocationsModeration the invocationsModeration value to set. + * @return the RaiConfig object itself. + */ + @Generated + public RaiConfig setInvocationsModeration(RaiInvocationModeration invocationsModeration) { + this.invocationsModeration = invocationsModeration; + return this; + } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessage.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessage.java index 6d4cbe0e4f208..3f302585096c1 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessage.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessage.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; import com.azure.json.JsonReader; @@ -14,6 +15,7 @@ * The RealtimeConversationItemMessage model. */ @Immutable +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public class RealtimeConversationItemMessage extends RealtimeConversationItem { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioConfig.java index e6009f3b06135..8ad200542b6f0 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioConfig.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioConfig.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; import com.azure.json.JsonReader; @@ -15,6 +16,7 @@ * The audio configuration for a voice agent. These values are session defaults and may be overridden when connecting. */ @Fluent +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentAudioConfig implements JsonSerializable { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfig.java index 5d51e485767af..8c509b46bf735 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfig.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfig.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; import com.azure.json.JsonReader; @@ -15,6 +16,7 @@ * Input audio configuration for a voice agent. */ @Fluent +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentAudioInputConfig implements JsonSerializable { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioOutputConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioOutputConfig.java index 10a1019ae6a44..3a1f5d8827fcd 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioOutputConfig.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioOutputConfig.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; import com.azure.json.JsonReader; @@ -26,6 +27,7 @@ * `format` and `output_audio_timestamp_types` apply to every voice type. */ @Fluent +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentAudioOutputConfig implements JsonSerializable { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioTimestampType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioTimestampType.java index a86d856b8bceb..e607d50d68784 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioTimestampType.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAudioTimestampType.java @@ -1,13 +1,16 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. - package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; + /** * An output-audio timestamp kind supported by a voice agent. */ +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public enum VoiceAgentAudioTimestampType { + /** * Word-level timestamps. */ @@ -24,7 +27,7 @@ public enum VoiceAgentAudioTimestampType { /** * Parses a serialized value to a VoiceAgentAudioTimestampType instance. - * + * * @param value the serialized value to parse. * @return the parsed VoiceAgentAudioTimestampType object, or null if unable to parse. */ diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarConfig.java index 91a34177f4b75..68574eb5a0cce 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarConfig.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarConfig.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; import com.azure.json.JsonReader; @@ -15,6 +16,7 @@ * Avatar configuration for a voice agent. These values are session defaults and may be overridden when connecting. */ @Fluent +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public class VoiceAgentAvatarConfig implements JsonSerializable { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarOutputProtocol.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarOutputProtocol.java index aa204107b586a..36e0eedba01d7 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarOutputProtocol.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarOutputProtocol.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; import java.util.Collection; @@ -10,6 +11,7 @@ /** * The transport used to deliver the avatar video stream. */ +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentAvatarOutputProtocol extends ExpandableStringEnum { /** diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarType.java index 192f3b8d5ba1a..43009e8b7a972 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarType.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarType.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; import java.util.Collection; @@ -10,6 +11,7 @@ /** * The avatar type. */ +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentAvatarType extends ExpandableStringEnum { /** diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadEnTurnDetection.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadEnTurnDetection.java index 877f9057f0a9c..99241881bc085 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadEnTurnDetection.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadEnTurnDetection.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; import com.azure.json.JsonReader; @@ -15,6 +16,7 @@ * English-optimized Azure semantic voice activity detection. */ @Fluent +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentAzureSemanticVadEnTurnDetection extends VoiceAgentTurnDetectionConfig { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadMultilingualTurnDetection.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadMultilingualTurnDetection.java index 0a247ffcf20df..b9a2c6a1d19a5 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadMultilingualTurnDetection.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadMultilingualTurnDetection.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; import com.azure.json.JsonReader; @@ -16,6 +17,7 @@ * Multilingual Azure semantic voice activity detection. */ @Fluent +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentAzureSemanticVadMultilingualTurnDetection extends VoiceAgentTurnDetectionConfig { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadTurnDetection.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadTurnDetection.java index 86509376a6036..0aa644ee95ddb 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadTurnDetection.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadTurnDetection.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; import com.azure.json.JsonReader; @@ -16,6 +17,7 @@ * Azure semantic voice activity detection. */ @Fluent +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentAzureSemanticVadTurnDetection extends VoiceAgentTurnDetectionConfig { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetection.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetection.java index 97e6e6283e72a..fd64a922c2eed 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetection.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetection.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; import com.azure.json.JsonReader; @@ -16,6 +17,7 @@ * Semantic end-of-utterance detection configuration. */ @Fluent +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentEndOfUtteranceDetection implements JsonSerializable { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetectionModel.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetectionModel.java index 9d03c5c900dd2..00375eae5995d 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetectionModel.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetectionModel.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; import java.util.Collection; @@ -10,6 +11,7 @@ /** * The semantic end-of-utterance detection model. */ +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentEndOfUtteranceDetectionModel extends ExpandableStringEnum { diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceThresholdLevel.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceThresholdLevel.java index c44063108ba2a..c7104069f2e9e 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceThresholdLevel.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceThresholdLevel.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; import java.util.Collection; @@ -10,6 +11,7 @@ /** * The sensitivity threshold for semantic end-of-utterance detection. */ +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentEndOfUtteranceThresholdLevel extends ExpandableStringEnum { diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentGreetingConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentGreetingConfig.java index 818a6e2210127..bba59024baf1f 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentGreetingConfig.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentGreetingConfig.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; import com.azure.json.JsonReader; @@ -15,6 +16,7 @@ * Session-start greeting configuration for a voice agent. */ @Immutable +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public class VoiceAgentGreetingConfig implements JsonSerializable { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscription.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscription.java index a1153083dee91..e64f19e9e504f 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscription.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscription.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; import com.azure.json.JsonReader; @@ -18,6 +19,7 @@ * options with the Azure and MAI transcription models, custom speech models, and phrase hints. */ @Fluent +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentInputTranscription implements JsonSerializable { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscriptionModel.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscriptionModel.java index d40de2b6704b9..50b2c0a09be81 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscriptionModel.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscriptionModel.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; import java.util.Collection; @@ -13,6 +14,7 @@ * voice backend, covering the OpenAI Realtime transcription models plus the Azure and MAI models. * Additional values may be added over time. */ +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentInputTranscriptionModel extends ExpandableStringEnum { /** diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentLlmGeneratedGreetingConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentLlmGeneratedGreetingConfig.java index 2ad58376605d7..80260785e08eb 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentLlmGeneratedGreetingConfig.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentLlmGeneratedGreetingConfig.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; import com.azure.core.util.BinaryData; @@ -15,6 +16,7 @@ * A greeting authored by the session model from a scoped opening-turn prompt. */ @Fluent +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentLlmGeneratedGreetingConfig extends VoiceAgentGreetingConfig { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentMcpTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentMcpTool.java index f456df5b30372..0b93e41a81e00 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentMcpTool.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentMcpTool.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; import com.azure.core.util.BinaryData; @@ -17,6 +18,7 @@ * An MCP tool available to a voice agent. */ @Fluent +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentMcpTool extends VoiceAgentTool { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReduction.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReduction.java index 5f7a4bb040750..ad18d4955c541 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReduction.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReduction.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; import com.azure.json.JsonReader; @@ -15,6 +16,7 @@ * Input audio noise reduction configuration. */ @Immutable +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentNoiseReduction implements JsonSerializable { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReductionType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReductionType.java index fd5a38bfcf81f..8e8f11a9a7335 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReductionType.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReductionType.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; import java.util.Collection; @@ -10,6 +11,7 @@ /** * The input audio noise reduction mode. */ +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentNoiseReductionType extends ExpandableStringEnum { /** diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerVadTurnDetection.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerVadTurnDetection.java index adde9f01d982e..2cffc2707c230 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerVadTurnDetection.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentServerVadTurnDetection.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; import com.azure.json.JsonReader; @@ -15,6 +16,7 @@ * Server-side voice activity detection. */ @Fluent +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentServerVadTurnDetection extends VoiceAgentTurnDetectionConfig { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionIncludeOption.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionIncludeOption.java index d550bda532fc4..23ad46e948567 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionIncludeOption.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSessionIncludeOption.java @@ -1,23 +1,24 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. - package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; + /** * Additional fields that a voice-agent session may include in service outputs. */ +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public enum VoiceAgentSessionIncludeOption { + /** * Enum value item.input_audio_transcription.logprobs. */ INPUT_AUDIO_TRANSCRIPTION_LOGPROBS("item.input_audio_transcription.logprobs"), - /** * Enum value item.input_audio_transcription.phrases. */ INPUT_AUDIO_TRANSCRIPTION_PHRASES("item.input_audio_transcription.phrases"), - /** * Enum value file_search_call.results. */ @@ -34,7 +35,7 @@ public enum VoiceAgentSessionIncludeOption { /** * Parses a serialized value to a VoiceAgentSessionIncludeOption instance. - * + * * @param value the serialized value to parse. * @return the parsed VoiceAgentSessionIncludeOption object, or null if unable to parse. */ diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemTool.java index e552e38e6b311..2cdbb026c9617 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemTool.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemTool.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; import com.azure.json.JsonReader; @@ -14,6 +15,7 @@ * A service-managed control that acts on the active voice session without customer code or external authentication. */ @Fluent +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public class VoiceAgentSystemTool extends VoiceAgentTool { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemToolName.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemToolName.java index caa0a2d02ceda..d14ab7dfe49e5 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemToolName.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentSystemToolName.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; import java.util.Collection; @@ -10,6 +11,7 @@ /** * A service-managed voice-session control action. Known values are stable; additional values may be added over time. */ +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentSystemToolName extends ExpandableStringEnum { /** diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTemplateGreetingConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTemplateGreetingConfig.java index 2fcde0868bfac..52e9321850c04 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTemplateGreetingConfig.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTemplateGreetingConfig.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; import com.azure.json.JsonReader; @@ -15,6 +16,7 @@ * generation. */ @Immutable +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentTemplateGreetingConfig extends VoiceAgentGreetingConfig { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTool.java index 9cebd8904b375..7966090b2805c 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTool.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTool.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; import com.azure.json.JsonReader; @@ -15,6 +16,7 @@ * A tool usable by a voice agent. */ @Immutable +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public class VoiceAgentTool implements JsonSerializable { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolResponseScheduling.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolResponseScheduling.java index 3b84befe8ac2d..a2b8b52bb0c5e 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolResponseScheduling.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolResponseScheduling.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; import java.util.Collection; @@ -10,6 +11,7 @@ /** * When a tool invocation creates a follow-up response. Additional values may be added over time. */ +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentToolResponseScheduling extends ExpandableStringEnum { /** diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolboxTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolboxTool.java index 2657c577ca278..475a5b854c55d 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolboxTool.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentToolboxTool.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; import com.azure.json.JsonReader; @@ -14,6 +15,7 @@ * A reference to a Foundry toolbox, which is a versioned bundle of tools executed through its MCP endpoint. */ @Fluent +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentToolboxTool extends VoiceAgentTool { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionConfig.java index 71717fc8338ec..1997f4f9f3aaa 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionConfig.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionConfig.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Fluent; import com.azure.core.annotation.Generated; import com.azure.json.JsonReader; @@ -15,6 +16,7 @@ * Turn-detection configuration for a voice agent. */ @Fluent +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public class VoiceAgentTurnDetectionConfig implements JsonSerializable { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionType.java index b15546ec36da3..d7fa47f72998b 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionType.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionType.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; import java.util.Collection; @@ -10,6 +11,7 @@ /** * The turn-detection strategy. Additional values may be added over time. */ +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceAgentTurnDetectionType extends ExpandableStringEnum { /** diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceOutputModality.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceOutputModality.java index a010889d41bdf..978fed5621f64 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceOutputModality.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceOutputModality.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; import java.util.Collection; @@ -10,6 +11,7 @@ /** * An output modality the agent may produce. `animation` and `avatar` are used when an avatar is configured. */ +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceOutputModality extends ExpandableStringEnum { /** diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudio.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudio.java index 1040f142017db..a1593bfd90b9f 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudio.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudio.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; import com.azure.json.JsonReader; @@ -15,6 +16,7 @@ * Audio configuration for a response. Follows the OpenAI Realtime GA `audio` object shape. */ @Immutable +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceResponseAudio implements JsonSerializable { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudioOutput.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudioOutput.java index 153ff4284f080..98e89e1d64d30 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudioOutput.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseAudioOutput.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.annotation.Immutable; import com.azure.json.JsonReader; @@ -15,6 +16,7 @@ * The flat response audio-output projection, with optional `voice`, `voice_type`, `voice_locale`, and `format` fields. */ @Immutable +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceResponseAudioOutput implements JsonSerializable { /* diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceType.java index 268b5ad44bd21..935044f1077bb 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceType.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceType.java @@ -3,6 +3,7 @@ // Code generated by Microsoft (R) TypeSpec Code Generator. package com.azure.ai.agents.models; +import com.azure.ai.agents.implementation.utils.Beta; import com.azure.core.annotation.Generated; import com.azure.core.util.ExpandableStringEnum; import java.util.Collection; @@ -10,6 +11,7 @@ /** * The voice implementation. Additional values may be added over time. */ +@Beta(warningText = "Preview API. VoiceAgents=V1Preview") public final class VoiceType extends ExpandableStringEnum { /** diff --git a/sdk/ai/azure-ai-agents/src/main/java/module-info.java b/sdk/ai/azure-ai-agents/src/main/java/module-info.java index 6aa1df2cf2e22..42333536f9f2c 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/module-info.java +++ b/sdk/ai/azure-ai-agents/src/main/java/module-info.java @@ -1,3 +1,6 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. module com.azure.ai.agents { requires transitive com.azure.core; diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationAsyncSample.java index d8e24b739da90..651facd4c7006 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationAsyncSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationAsyncSample.java @@ -5,7 +5,7 @@ import com.azure.ai.agents.AgentsClientBuilder; import com.azure.ai.agents.BetaAgentsAsyncClient; -import com.azure.ai.agents.models.AgentOptimizationEvaluatorReference; +import com.azure.ai.agents.models.AgentOptimizationEvaluatorRef; import com.azure.ai.agents.models.AgentOptimizationJob; import com.azure.ai.agents.models.AgentOptimizationJobInputs; import com.azure.ai.agents.models.AgentOptimizationJobResult; @@ -77,7 +77,7 @@ public static void main(String[] args) { private static AgentOptimizationJob createOptimizationJob(Configuration configuration) { String evaluatorVersion = configuration.get("EVALUATOR_VERSION"); - AgentOptimizationEvaluatorReference evaluator = new AgentOptimizationEvaluatorReference( + AgentOptimizationEvaluatorRef evaluator = new AgentOptimizationEvaluatorRef( configuration.get("EVALUATOR_NAME", "task_adherence")); if (evaluatorVersion != null) { evaluator.setVersion(evaluatorVersion); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationSample.java index 8c2bc6b1f63a8..45c5141b4c575 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationSample.java @@ -6,7 +6,7 @@ import com.azure.ai.agents.AgentsClientBuilder; import com.azure.ai.agents.BetaAgentsClient; import com.azure.ai.agents.models.AgentOptimizationCandidate; -import com.azure.ai.agents.models.AgentOptimizationEvaluatorReference; +import com.azure.ai.agents.models.AgentOptimizationEvaluatorRef; import com.azure.ai.agents.models.AgentOptimizationJob; import com.azure.ai.agents.models.AgentOptimizationJobInputs; import com.azure.ai.agents.models.AgentOptimizationJobResult; @@ -82,7 +82,7 @@ public static void main(String[] args) { private static AgentOptimizationJob createOptimizationJob(Configuration configuration) { String evaluatorVersion = configuration.get("EVALUATOR_VERSION"); - AgentOptimizationEvaluatorReference evaluator = new AgentOptimizationEvaluatorReference( + AgentOptimizationEvaluatorRef evaluator = new AgentOptimizationEvaluatorRef( configuration.get("EVALUATOR_NAME", "task_adherence")); if (evaluatorVersion != null) { evaluator.setVersion(evaluatorVersion); diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsAsyncClient.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsAsyncClient.java index 5826f4938a964..e9649f1be6725 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsAsyncClient.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsAsyncClient.java @@ -700,7 +700,7 @@ public Mono> cancelAgentInsightRunWithResponse(String monit * trace_id: String (Required) * summary: String (Required) * duration_ms: long (Required) - * total_tokens: Long (Optional) + * total_tokens: Integer (Optional) * timestamp: long (Required) * } * ] @@ -779,7 +779,7 @@ public PagedFlux listAgentInsights(String monitorId, RequestOptions * trace_id: String (Required) * summary: String (Required) * duration_ms: long (Required) - * total_tokens: Long (Optional) + * total_tokens: Integer (Optional) * timestamp: long (Required) * } * ] @@ -863,7 +863,7 @@ public Mono> getAgentInsightWithResponse(String monitorId, * trace_id: String (Required) * summary: String (Required) * duration_ms: long (Required) - * total_tokens: Long (Optional) + * total_tokens: Integer (Optional) * timestamp: long (Required) * } * ] diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsClient.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsClient.java index 308bcf0db899d..a9eae809faa54 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsClient.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsClient.java @@ -693,7 +693,7 @@ public Response cancelAgentInsightRunWithResponse(String monitorId, * trace_id: String (Required) * summary: String (Required) * duration_ms: long (Required) - * total_tokens: Long (Optional) + * total_tokens: Integer (Optional) * timestamp: long (Required) * } * ] @@ -772,7 +772,7 @@ public PagedIterable listAgentInsights(String monitorId, RequestOpti * trace_id: String (Required) * summary: String (Required) * duration_ms: long (Required) - * total_tokens: Long (Optional) + * total_tokens: Integer (Optional) * timestamp: long (Required) * } * ] @@ -855,7 +855,7 @@ public Response getAgentInsightWithResponse(String monitorId, String * trace_id: String (Required) * summary: String (Required) * duration_ms: long (Required) - * total_tokens: Long (Optional) + * total_tokens: Integer (Optional) * timestamp: long (Required) * } * ] diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaRoutinesAsyncClient.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaRoutinesAsyncClient.java index e3d903dcd03b8..b7c09cdcee68b 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaRoutinesAsyncClient.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaRoutinesAsyncClient.java @@ -804,4 +804,20 @@ public Mono createOrUpdateRoutine(String routineName, String descriptio .flatMap(FluxUtil::toMono) .map(protocolMethodData -> protocolMethodData.toObject(Routine.class)); } + + /** + * Creates a new routine or replaces an existing routine without authorization. + * + * @param routineName The unique name of the routine. + * @param description The routine description. + * @param enabled Whether the routine is enabled. + * @param triggers The triggers that invoke the routine. + * @param action The action performed by the routine. + * @return The created or updated routine. + */ + @ServiceMethod(returns = com.azure.core.annotation.ReturnType.SINGLE) + public Mono createOrUpdateRoutine(String routineName, String description, Boolean enabled, + Map triggers, RoutineAction action) { + return createOrUpdateRoutine(routineName, description, enabled, triggers, action, null); + } } diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaRoutinesClient.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaRoutinesClient.java index a5fa02c2ba275..e1a9888625263 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaRoutinesClient.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaRoutinesClient.java @@ -740,4 +740,20 @@ public Routine createOrUpdateRoutine(String routineName, String description, Boo return createOrUpdateRoutineWithResponse(routineName, createOrUpdateRoutineRequest, requestOptions).getValue() .toObject(Routine.class); } + + /** + * Creates a new routine or replaces an existing routine without authorization. + * + * @param routineName The unique name of the routine. + * @param description The routine description. + * @param enabled Whether the routine is enabled. + * @param triggers The triggers that invoke the routine. + * @param action The action performed by the routine. + * @return The created or updated routine. + */ + @ServiceMethod(returns = com.azure.core.annotation.ReturnType.SINGLE) + public Routine createOrUpdateRoutine(String routineName, String description, Boolean enabled, + Map triggers, RoutineAction action) { + return createOrUpdateRoutine(routineName, description, enabled, triggers, action, null); + } } diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/implementation/BetaAgentInsightMonitorsImpl.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/implementation/BetaAgentInsightMonitorsImpl.java index 48bdeff54b601..525713ad66fb7 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/implementation/BetaAgentInsightMonitorsImpl.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/implementation/BetaAgentInsightMonitorsImpl.java @@ -2309,7 +2309,7 @@ public Response cancelAgentInsightRunWithResponse(String monitorId, * trace_id: String (Required) * summary: String (Required) * duration_ms: long (Required) - * total_tokens: Long (Optional) + * total_tokens: Integer (Optional) * timestamp: long (Required) * } * ] @@ -2406,7 +2406,7 @@ private Mono> listAgentInsightsSinglePageAsync(String * trace_id: String (Required) * summary: String (Required) * duration_ms: long (Required) - * total_tokens: Long (Optional) + * total_tokens: Integer (Optional) * timestamp: long (Required) * } * ] @@ -2496,7 +2496,7 @@ public PagedFlux listAgentInsightsAsync(String monitorId, RequestOpt * trace_id: String (Required) * summary: String (Required) * duration_ms: long (Required) - * total_tokens: Long (Optional) + * total_tokens: Integer (Optional) * timestamp: long (Required) * } * ] @@ -2590,7 +2590,7 @@ private PagedResponse listAgentInsightsSinglePage(String monitorId, * trace_id: String (Required) * summary: String (Required) * duration_ms: long (Required) - * total_tokens: Long (Optional) + * total_tokens: Integer (Optional) * timestamp: long (Required) * } * ] @@ -2668,7 +2668,7 @@ public PagedIterable listAgentInsights(String monitorId, RequestOpti * trace_id: String (Required) * summary: String (Required) * duration_ms: long (Required) - * total_tokens: Long (Optional) + * total_tokens: Integer (Optional) * timestamp: long (Required) * } * ] @@ -2751,7 +2751,7 @@ public Mono> getAgentInsightWithResponseAsync(String monito * trace_id: String (Required) * summary: String (Required) * duration_ms: long (Required) - * total_tokens: Long (Optional) + * total_tokens: Integer (Optional) * timestamp: long (Required) * } * ] @@ -2835,7 +2835,7 @@ public Response getAgentInsightWithResponse(String monitorId, String * trace_id: String (Required) * summary: String (Required) * duration_ms: long (Required) - * total_tokens: Long (Optional) + * total_tokens: Integer (Optional) * timestamp: long (Required) * } * ] @@ -2923,7 +2923,7 @@ public Mono> updateAgentInsightWithResponseAsync(String mon * trace_id: String (Required) * summary: String (Required) * duration_ms: long (Required) - * total_tokens: Long (Optional) + * total_tokens: Integer (Optional) * timestamp: long (Required) * } * ] diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AgentInsightHighlightedTrace.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AgentInsightHighlightedTrace.java index a46b5d44e715c..def8af0eb2deb 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AgentInsightHighlightedTrace.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/AgentInsightHighlightedTrace.java @@ -40,7 +40,7 @@ public final class AgentInsightHighlightedTrace implements JsonSerializable { String traceId = null; String summary = null; - Duration duration = null; + Duration durationMs = null; OffsetDateTime timestamp = null; - Long totalTokens = null; + Integer totalTokens = null; while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); reader.nextToken(); @@ -150,17 +150,17 @@ public static AgentInsightHighlightedTrace fromJson(JsonReader jsonReader) throw } else if ("summary".equals(fieldName)) { summary = reader.getString(); } else if ("duration_ms".equals(fieldName)) { - duration = Duration.ofMillis(reader.getLong()); + durationMs = Duration.ofMillis(reader.getLong()); } else if ("timestamp".equals(fieldName)) { timestamp = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC); } else if ("total_tokens".equals(fieldName)) { - totalTokens = reader.getNullable(JsonReader::getLong); + totalTokens = reader.getNullable(JsonReader::getInt); } else { reader.skipChildren(); } } AgentInsightHighlightedTrace deserializedAgentInsightHighlightedTrace - = new AgentInsightHighlightedTrace(summary, duration, timestamp); + = new AgentInsightHighlightedTrace(summary, durationMs, timestamp); deserializedAgentInsightHighlightedTrace.traceId = traceId; deserializedAgentInsightHighlightedTrace.totalTokens = totalTokens; return deserializedAgentInsightHighlightedTrace; @@ -171,15 +171,15 @@ public static AgentInsightHighlightedTrace fromJson(JsonReader jsonReader) throw * The end-to-end duration of the trace in milliseconds. */ @Generated - private final long duration; + private final long durationMs; /** - * Get the duration property: The end-to-end duration of the trace in milliseconds. + * Get the durationMs property: The end-to-end duration of the trace in milliseconds. * - * @return the duration value. + * @return the durationMs value. */ @Generated - public Duration getDuration() { - return Duration.ofMillis(this.duration); + public Duration getDurationMs() { + return Duration.ofMillis(this.durationMs); } } From bcd3a7d2636c7544b47366378fc2cfd60edb37a0 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 10:58:18 +0800 Subject: [PATCH 16/29] Fix AI Agents README sample links Co-Authored-By: Claude Code --- sdk/ai/azure-ai-agents/README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sdk/ai/azure-ai-agents/README.md b/sdk/ai/azure-ai-agents/README.md index f95643c0eb810..3736914cc7c76 100644 --- a/sdk/ai/azure-ai-agents/README.md +++ b/sdk/ai/azure-ai-agents/README.md @@ -475,7 +475,7 @@ MemorySearchPreviewTool tool = new MemorySearchPreviewTool(memoryStore.getName() .setUpdateDelaySeconds(1); ``` -See the full samples in [MemorySearchSync.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchSync.java) and [MemorySearchAsync.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/memory/MemorySearchAsync.java), which show how to create an agent with a memory store and use it across multiple conversations. +See the full samples in [MemorySearchSync.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/MemorySearchSync.java) and [MemorySearchAsync.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/tools/MemorySearchAsync.java), which show how to create an agent with a memory store and use it across multiple conversations. --- @@ -1014,10 +1014,9 @@ The live audio example requires a Java Sound-compatible microphone and speaker. All agent samples use `FOUNDRY_PROJECT_ENDPOINT`. Prompt-agent samples also use `FOUNDRY_MODEL_NAME`. -- **Agent lifecycle and structured output:** [AgentBasicAsyncSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/AgentBasicAsyncSample.java), [AgentRetrieveBasicAsyncSample.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/AgentRetrieveBasicAsyncSample.java), and the `AgentStructuredOutput*` samples. +- **Agent lifecycle and structured output:** [CreateAgent.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/CreateAgent.java), [GetAgent.java](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/agents/GetAgent.java), and the `AgentStructuredOutput*` samples. - **Workflow agents:** `WorkflowMultiAgentSample`, `WorkflowMultiAgentAsyncSample`, and `WorkflowMultiAgentMcpApprovalSample` demonstrate CSDL workflows and MCP approval handling. - **Optimization jobs:** the [optimization samples](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization) cover SDK polling, application-managed polling, cancellation, listing, retrieval, and deletion. -- **Telemetry:** the [telemetry samples](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/telemetry) demonstrate console tracing, custom span attributes, and Azure Monitor export. - **Advanced tools:** additional samples cover structured inputs, generated-file download, File Search streaming, non-preview Web Search, custom search, and end-to-end toolbox search. --- From 415db01ec68d6d859a71dab8dbbe81b030bc0678 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 13:14:29 +0800 Subject: [PATCH 17/29] Address voice WebSocket review feedback Implement an independent OkHttp-based synchronous WebSocket transport, refine async timeout and error handling, simplify polling status mapping, and apply the expected generated model update. --- sdk/ai/azure-ai-agents/pom.xml | 18 + .../agents/BetaVoiceAgentWebSocketClient.java | 10 +- ...VoiceAgentWebSocketSessionAsyncClient.java | 22 +- .../VoiceAgentWebSocketSessionClient.java | 476 ++++++++++++++++-- .../AgentsServicePollUtils.java | 7 +- .../VoiceAgentWebSocketHttpResponse.java | 17 + .../models/AgentOptimizationEvaluatorRef.java | 14 +- .../src/main/java/module-info.java | 2 + .../VoiceAgentWebSocketSessionTests.java | 51 +- 9 files changed, 548 insertions(+), 69 deletions(-) diff --git a/sdk/ai/azure-ai-agents/pom.xml b/sdk/ai/azure-ai-agents/pom.xml index 3485cd2cc1bc3..7e2afc0c27935 100644 --- a/sdk/ai/azure-ai-agents/pom.xml +++ b/sdk/ai/azure-ai-agents/pom.xml @@ -93,6 +93,22 @@ netty-codec 4.1.137.Final + + com.squareup.okhttp3 + okhttp + 4.12.0 + + + com.squareup.okio + okio + + + + + com.squareup.okio + okio-jvm + 3.18.1 + @@ -132,6 +148,8 @@ io.netty:netty-transport:[4.1.137.Final] io.netty:netty-common:[4.1.137.Final] io.netty:netty-codec:[4.1.137.Final] + com.squareup.okhttp3:okhttp:[4.12.0] + com.squareup.okio:okio-jvm:[3.18.1] diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaVoiceAgentWebSocketClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaVoiceAgentWebSocketClient.java index 67508619fced7..083b7424bb886 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaVoiceAgentWebSocketClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaVoiceAgentWebSocketClient.java @@ -16,11 +16,10 @@ @ServiceClient(builder = AgentsClientBuilder.class) @Beta(warningText = "This class is in preview and may change in future releases.") public final class BetaVoiceAgentWebSocketClient { - private final BetaVoiceAgentWebSocketAsyncClient asyncClient; + private final VoiceAgentWebSocketClientConfiguration configuration; BetaVoiceAgentWebSocketClient(VoiceAgentWebSocketClientConfiguration configuration) { - this.asyncClient = new BetaVoiceAgentWebSocketAsyncClient( - Objects.requireNonNull(configuration, "'configuration' cannot be null.")); + this.configuration = Objects.requireNonNull(configuration, "'configuration' cannot be null."); } /** @@ -41,9 +40,8 @@ public VoiceAgentWebSocketSessionClient connect(String agentName) { * @return a connected session. */ public VoiceAgentWebSocketSessionClient connect(String agentName, VoiceAgentWebSocketConnectionOptions options) { + Objects.requireNonNull(agentName, "'agentName' cannot be null."); Objects.requireNonNull(options, "'options' cannot be null."); - VoiceAgentWebSocketSessionAsyncClient session - = asyncClient.connect(agentName, options).block(options.getHandshakeTimeout().plusSeconds(1)); - return new VoiceAgentWebSocketSessionClient(session); + return VoiceAgentWebSocketSessionClient.connect(configuration, agentName, options); } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionAsyncClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionAsyncClient.java index b4802c16fa98b..e5177bb09795e 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionAsyncClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionAsyncClient.java @@ -36,8 +36,8 @@ import com.azure.core.util.BinaryData; import com.azure.core.util.logging.ClientLogger; import com.azure.json.JsonProviders; -import com.azure.json.JsonWriter; import io.netty.channel.Channel; +import io.netty.channel.ChannelOption; import io.netty.handler.codec.http.websocketx.BinaryWebSocketFrame; import io.netty.handler.codec.http.websocketx.WebSocketClientHandshakeException; import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; @@ -54,11 +54,11 @@ import reactor.netty.transport.ProxyProvider; import reactor.util.concurrent.Queues; -import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.URI; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; +import java.time.Duration; import java.util.Base64; import java.util.Collections; import java.util.Locale; @@ -385,7 +385,7 @@ public void close() { private Mono openWebSocket(String token) { HttpClient client = configureProxy(httpClient).followRedirect(false) - .responseTimeout(options.getHandshakeTimeout()) + .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, toConnectTimeoutMillis(options.getHandshakeTimeout())) .doOnConnected(connection -> connection.addHandlerLast("voiceAgentHandshakeResponseObserver", new VoiceAgentWebSocketHandshakeHandler(this::terminateWithError))) .headers(headers -> { @@ -412,6 +412,13 @@ private Mono openWebSocket(String token) { }); } + private static int toConnectTimeoutMillis(Duration timeout) { + if (timeout.compareTo(Duration.ofMillis(Integer.MAX_VALUE)) >= 0) { + return Integer.MAX_VALUE; + } + return Math.toIntExact(Math.max(1L, timeout.toMillis())); + } + private Mono handleConnection(WebsocketInbound inbound, WebsocketOutbound outbound) { this.outbound.set(outbound); inbound.withConnection(connection -> channel.set(connection.channel())); @@ -437,7 +444,7 @@ private void handleFrame(WebSocketFrame frame) { = RealtimeServerEvent.fromJson(JsonProviders.createReader(((TextWebSocketFrame) frame).text())); Sinks.EmitResult result = events.tryEmitNext(event); if (result.isFailure()) { - terminateWithError(new IllegalStateException("Voice-agent receive buffer overflow: " + result)); + terminateWithError(new IllegalStateException("Voice-agent event emission failed: " + result)); } } catch (IOException | RuntimeException error) { closeWithProtocolError(1007, "Invalid JSON event", error); @@ -566,16 +573,11 @@ private static boolean isProtectedHeader(String name) { || "upgrade".equals(lower) || "connection".equals(lower) || "foundry-features".equals(lower) - || "sec-websocket-protocol".equals(lower) || lower.startsWith("sec-websocket-"); } private static String serialize(RealtimeClientEvent event) throws IOException { - ByteArrayOutputStream output = new ByteArrayOutputStream(); - try (JsonWriter writer = JsonProviders.createWriter(output)) { - event.toJson(writer); - } - return output.toString(StandardCharsets.UTF_8.name()); + return event.toJsonString(); } private static URI buildWebSocketUri(VoiceAgentWebSocketClientConfiguration configuration, String agentName, diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionClient.java index 43983c8869014..0c96903d17b04 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/VoiceAgentWebSocketSessionClient.java @@ -3,28 +3,121 @@ package com.azure.ai.agents; +import com.azure.ai.agents.implementation.realtime.VoiceAgentWebSocketClientConfiguration; +import com.azure.ai.agents.implementation.realtime.VoiceAgentWebSocketHttpResponse; import com.azure.ai.agents.implementation.utils.Beta; import com.azure.ai.agents.models.RealtimeClientEvent; +import com.azure.ai.agents.models.RealtimeClientEventConversationItemCreate; +import com.azure.ai.agents.models.RealtimeClientEventInputAudioBufferAppend; +import com.azure.ai.agents.models.RealtimeClientEventInputAudioBufferClear; +import com.azure.ai.agents.models.RealtimeClientEventInputAudioBufferCommit; +import com.azure.ai.agents.models.RealtimeClientEventResponseCancel; +import com.azure.ai.agents.models.RealtimeClientEventResponseCreate; import com.azure.ai.agents.models.RealtimeConversationItem; +import com.azure.ai.agents.models.RealtimeConversationItemFunctionCallOutput; +import com.azure.ai.agents.models.RealtimeConversationItemMessageUser; +import com.azure.ai.agents.models.RealtimeConversationItemMessageUserContent; +import com.azure.ai.agents.models.RealtimeConversationItemMessageUserContentType; import com.azure.ai.agents.models.RealtimeServerEvent; import com.azure.ai.agents.models.VoiceAgentResponseCreateParams; +import com.azure.ai.agents.models.VoiceAgentTransport; +import com.azure.ai.agents.models.VoiceAgentWebSocketConnectionOptions; +import com.azure.core.credential.TokenRequestContext; +import com.azure.core.exception.ClientAuthenticationException; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.exception.ResourceModifiedException; +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.HttpHeader; +import com.azure.core.http.ProxyOptions; import com.azure.core.util.BinaryData; import com.azure.core.util.IterableStream; +import com.azure.core.util.logging.ClientLogger; +import com.azure.json.JsonProviders; +import okhttp3.Credentials; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.WebSocket; +import okhttp3.WebSocketListener; +import okio.ByteString; +import java.io.IOException; +import java.net.Proxy; import java.net.URI; -import java.time.Duration; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.Base64; +import java.util.Collections; +import java.util.Iterator; +import java.util.Locale; +import java.util.NoSuchElementException; import java.util.Objects; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicReference; /** * A synchronous bidirectional realtime session connected to a Foundry voice agent. */ @Beta(warningText = "This class is in preview and may change in future releases.") public final class VoiceAgentWebSocketSessionClient implements AutoCloseable { - private static final Duration OPERATION_TIMEOUT = Duration.ofSeconds(30); - private final VoiceAgentWebSocketSessionAsyncClient asyncClient; + private static final ClientLogger LOGGER = new ClientLogger(VoiceAgentWebSocketSessionClient.class); + private static final String TOKEN_SCOPE = "https://ai.azure.com/.default"; + private static final String PREVIEW_FEATURE = "VoiceAgents=V1Preview"; + private static final String SUBPROTOCOL = "realtime"; + private static final int INBOUND_CAPACITY = 256; - VoiceAgentWebSocketSessionClient(VoiceAgentWebSocketSessionAsyncClient asyncClient) { - this.asyncClient = Objects.requireNonNull(asyncClient, "'asyncClient' cannot be null."); + private final URI websocketUri; + private final VoiceAgentWebSocketConnectionOptions options; + private final OkHttpClient httpClient; + private final BlockingQueue events = new ArrayBlockingQueue<>(INBOUND_CAPACITY); + private final CountDownLatch handshakeCompleted = new CountDownLatch(1); + private final CountDownLatch closeCompleted = new CountDownLatch(1); + private final AtomicReference connectionError = new AtomicReference<>(); + private final AtomicBoolean receiveClaimed = new AtomicBoolean(); + private final AtomicBoolean open = new AtomicBoolean(); + private final AtomicBoolean closed = new AtomicBoolean(); + private final AtomicBoolean clientShutdown = new AtomicBoolean(); + + private volatile WebSocket webSocket; + private volatile Integer closeCode; + private volatile String closeReason; + + private VoiceAgentWebSocketSessionClient(VoiceAgentWebSocketClientConfiguration configuration, String agentName, + VoiceAgentWebSocketConnectionOptions options) { + this.options = options; + this.websocketUri = buildWebSocketUri(configuration, agentName, options); + String token + = configuration.getCredential().getTokenSync(new TokenRequestContext().addScopes(TOKEN_SCOPE)).getToken(); + this.httpClient = createHttpClient(configuration, options); + Request.Builder request = new Request.Builder().url(websocketUri.toString()) + .header("Authorization", "Bearer " + token) + .header("User-Agent", configuration.getUserAgent()) + .header("Foundry-Features", PREVIEW_FEATURE) + .header("Sec-WebSocket-Protocol", SUBPROTOCOL); + for (HttpHeader header : configuration.getHeaders()) { + if (!isProtectedHeader(header.getName())) { + request.header(header.getName(), header.getValue()); + } + } + this.webSocket = httpClient.newWebSocket(request.build(), new Listener()); + } + + static VoiceAgentWebSocketSessionClient connect(VoiceAgentWebSocketClientConfiguration configuration, + String agentName, VoiceAgentWebSocketConnectionOptions options) { + VoiceAgentWebSocketSessionClient session + = new VoiceAgentWebSocketSessionClient(configuration, agentName, options); + try { + session.awaitHandshake(); + return session; + } catch (RuntimeException error) { + session.webSocket.cancel(); + session.shutdownHttpClient(); + throw error; + } } /** @@ -33,7 +126,7 @@ public final class VoiceAgentWebSocketSessionClient implements AutoCloseable { * @return the WebSocket endpoint. */ public URI getEndpoint() { - return asyncClient.getEndpoint(); + return websocketUri; } /** @@ -42,7 +135,7 @@ public URI getEndpoint() { * @return {@code true} when the session is open. */ public boolean isOpen() { - return asyncClient.isOpen(); + return open.get() && !closed.get(); } /** @@ -51,7 +144,7 @@ public boolean isOpen() { * @return the close code, or {@code null}. */ public Integer getCloseCode() { - return asyncClient.getCloseCode(); + return closeCode; } /** @@ -60,25 +153,44 @@ public Integer getCloseCode() { * @return the close reason, or {@code null}. */ public String getCloseReason() { - return asyncClient.getCloseReason(); + return closeReason; } /** * Receives typed server events in wire order. The returned stream may be iterated once. * + * @throws IllegalStateException if the event stream has already been claimed. * @return the server event stream. */ public IterableStream receiveEvents() { - return new IterableStream<>(asyncClient.receiveEvents()); + if (!receiveClaimed.compareAndSet(false, true)) { + throw LOGGER.logExceptionAsError( + new IllegalStateException("Only one receiveEvents iterator is supported per session.")); + } + return IterableStream.of(() -> new EventIterator(events)); } /** * Sends a typed realtime client event. * * @param event the event to send. + * @throws IllegalArgumentException if the event cannot be serialized. + * @throws IllegalStateException if the session is closed or cannot accept another event. */ public void sendEvent(RealtimeClientEvent event) { - asyncClient.sendEvent(event).block(OPERATION_TIMEOUT); + Objects.requireNonNull(event, "'event' cannot be null."); + ensureOpen(); + final String json; + try { + json = event.toJsonString(); + } catch (IOException error) { + throw LOGGER.logExceptionAsError( + new IllegalArgumentException("Failed to serialize the realtime client event.", error)); + } + if (!webSocket.send(json)) { + throw LOGGER.logExceptionAsError( + new IllegalStateException("The voice-agent WebSocket send queue is full or closed.")); + } } /** @@ -87,7 +199,7 @@ public void sendEvent(RealtimeClientEvent event) { * @param item the item to add. */ public void createConversationItem(RealtimeConversationItem item) { - asyncClient.createConversationItem(item).block(OPERATION_TIMEOUT); + createConversationItem(item, null); } /** @@ -97,7 +209,8 @@ public void createConversationItem(RealtimeConversationItem item) { * @param previousItemId the preceding item identifier. */ public void createConversationItem(RealtimeConversationItem item, String previousItemId) { - asyncClient.createConversationItem(item, previousItemId).block(OPERATION_TIMEOUT); + Objects.requireNonNull(item, "'item' cannot be null."); + sendEvent(new RealtimeClientEventConversationItemCreate(item).setPreviousItemId(previousItemId)); } /** @@ -106,7 +219,11 @@ public void createConversationItem(RealtimeConversationItem item, String previou * @param text the user message. */ public void sendText(String text) { - asyncClient.sendText(text).block(OPERATION_TIMEOUT); + Objects.requireNonNull(text, "'text' cannot be null."); + RealtimeConversationItemMessageUserContent content = new RealtimeConversationItemMessageUserContent() + .setType(RealtimeConversationItemMessageUserContentType.INPUT_TEXT) + .setText(text); + createConversationItem(new RealtimeConversationItemMessageUser(Collections.singletonList(content))); } /** @@ -115,28 +232,23 @@ public void sendText(String text) { * @param audio the audio bytes. */ public void appendInputAudio(BinaryData audio) { - asyncClient.appendInputAudio(audio).block(OPERATION_TIMEOUT); + Objects.requireNonNull(audio, "'audio' cannot be null."); + sendEvent(new RealtimeClientEventInputAudioBufferAppend(Base64.getEncoder().encodeToString(audio.toBytes()))); } - /** - * Clears the input audio buffer. - */ + /** Clears the input audio buffer. */ public void clearInputAudio() { - asyncClient.clearInputAudio().block(OPERATION_TIMEOUT); + sendEvent(new RealtimeClientEventInputAudioBufferClear()); } - /** - * Commits the input audio buffer. - */ + /** Commits the input audio buffer. */ public void commitInputAudio() { - asyncClient.commitInputAudio().block(OPERATION_TIMEOUT); + sendEvent(new RealtimeClientEventInputAudioBufferCommit()); } - /** - * Requests a response using the voice agent's configuration. - */ + /** Requests a response using the voice agent's configuration. */ public void createResponse() { - asyncClient.createResponse().block(OPERATION_TIMEOUT); + sendEvent(new RealtimeClientEventResponseCreate()); } /** @@ -145,14 +257,13 @@ public void createResponse() { * @param responseOptions response options. */ public void createResponse(VoiceAgentResponseCreateParams responseOptions) { - asyncClient.createResponse(responseOptions).block(OPERATION_TIMEOUT); + Objects.requireNonNull(responseOptions, "'responseOptions' cannot be null."); + sendEvent(new RealtimeClientEventResponseCreate().setResponse(responseOptions)); } - /** - * Cancels the active response. - */ + /** Cancels the active response. */ public void cancelResponse() { - asyncClient.cancelResponse().block(OPERATION_TIMEOUT); + sendEvent(new RealtimeClientEventResponseCancel()); } /** @@ -161,7 +272,8 @@ public void cancelResponse() { * @param responseId the response identifier. */ public void cancelResponse(String responseId) { - asyncClient.cancelResponse(responseId).block(OPERATION_TIMEOUT); + Objects.requireNonNull(responseId, "'responseId' cannot be null."); + sendEvent(new RealtimeClientEventResponseCancel().setResponseId(responseId)); } /** @@ -171,14 +283,302 @@ public void cancelResponse(String responseId) { * @param output the serialized function output. */ public void sendFunctionCallOutput(String callId, String output) { - asyncClient.sendFunctionCallOutput(callId, output).block(OPERATION_TIMEOUT); + createConversationItem(new RealtimeConversationItemFunctionCallOutput(callId, output)); + createResponse(); } - /** - * Closes the session. - */ + /** Closes the session. */ @Override public void close() { - asyncClient.close(); + if (!closed.compareAndSet(false, true)) { + shutdownHttpClient(); + return; + } + open.set(false); + if (!webSocket.close(1000, "")) { + webSocket.cancel(); + closeCompleted.countDown(); + } + try { + if (!closeCompleted.await(options.getCloseTimeout().toMillis(), TimeUnit.MILLISECONDS)) { + webSocket.cancel(); + } + } catch (InterruptedException error) { + Thread.currentThread().interrupt(); + webSocket.cancel(); + } finally { + signal(EventSignal.complete()); + shutdownHttpClient(); + } + } + + private void awaitHandshake() { + try { + if (!handshakeCompleted.await(options.getHandshakeTimeout().toMillis(), TimeUnit.MILLISECONDS)) { + webSocket.cancel(); + throw LOGGER + .logExceptionAsError(new IllegalStateException("Voice-agent WebSocket handshake timed out.")); + } + } catch (InterruptedException error) { + Thread.currentThread().interrupt(); + webSocket.cancel(); + throw LOGGER.logExceptionAsError( + new IllegalStateException("Interrupted while opening the voice-agent WebSocket session.", error)); + } + Throwable error = connectionError.get(); + if (error instanceof RuntimeException) { + throw LOGGER.logExceptionAsError((RuntimeException) error); + } + if (error != null) { + throw LOGGER.logExceptionAsError( + new IllegalStateException("Failed to open the voice-agent WebSocket session.", error)); + } + } + + private void ensureOpen() { + if (!isOpen()) { + throw LOGGER + .logExceptionAsError(new IllegalStateException("The voice-agent WebSocket session is not open.")); + } + } + + private void fail(Throwable error, Response response) { + Throwable mapped; + try { + mapped = response == null ? error : mapHandshakeError(error, response); + } finally { + if (response != null) { + response.close(); + } + } + connectionError.compareAndSet(null, mapped); + open.set(false); + closed.set(true); + handshakeCompleted.countDown(); + signal(EventSignal.error(mapped)); + closeCompleted.countDown(); + shutdownHttpClient(); + } + + private Throwable mapHandshakeError(Throwable error, Response response) { + VoiceAgentWebSocketHttpResponse azureResponse = new VoiceAgentWebSocketHttpResponse(websocketUri, response); + String message = "Voice-agent WebSocket handshake failed with status " + response.code() + "."; + switch (response.code()) { + case 401: + return new ClientAuthenticationException(message, azureResponse, error); + + case 404: + return new ResourceNotFoundException(message, azureResponse, error); + + case 409: + return new ResourceModifiedException(message, azureResponse, error); + + default: + return new HttpResponseException(message, azureResponse, error); + } + } + + private void signal(EventSignal signal) { + if (!events.offer(signal)) { + events.clear(); + events.offer(EventSignal.error(new IllegalStateException("Voice-agent receive buffer overflow."))); + WebSocket current = webSocket; + if (current != null) { + current.cancel(); + } + open.set(false); + closed.set(true); + shutdownHttpClient(); + } + } + + private void shutdownHttpClient() { + if (clientShutdown.compareAndSet(false, true)) { + httpClient.dispatcher().executorService().shutdown(); + httpClient.connectionPool().evictAll(); + } + } + + private static OkHttpClient createHttpClient(VoiceAgentWebSocketClientConfiguration configuration, + VoiceAgentWebSocketConnectionOptions options) { + OkHttpClient.Builder builder + = new OkHttpClient.Builder().connectTimeout(options.getHandshakeTimeout().toMillis(), TimeUnit.MILLISECONDS) + .readTimeout(0, TimeUnit.MILLISECONDS) + .followRedirects(false); + ProxyOptions proxyOptions = configuration.getProxyOptions(); + if (proxyOptions != null) { + Proxy.Type proxyType = proxyOptions.getType() == ProxyOptions.Type.SOCKS4 + || proxyOptions.getType() == ProxyOptions.Type.SOCKS5 ? Proxy.Type.SOCKS : Proxy.Type.HTTP; + builder.proxy(new Proxy(proxyType, proxyOptions.getAddress())); + if (proxyOptions.getUsername() != null) { + builder.proxyAuthenticator((route, response) -> response.request() + .newBuilder() + .header("Proxy-Authorization", + Credentials.basic(proxyOptions.getUsername(), proxyOptions.getPassword())) + .build()); + } + } + return builder.build(); + } + + private static boolean isProtectedHeader(String name) { + String lower = name.toLowerCase(Locale.ROOT); + return "authorization".equals(lower) + || "host".equals(lower) + || "upgrade".equals(lower) + || "connection".equals(lower) + || "foundry-features".equals(lower) + || lower.startsWith("sec-websocket-"); + } + + private static URI buildWebSocketUri(VoiceAgentWebSocketClientConfiguration configuration, String agentName, + VoiceAgentWebSocketConnectionOptions options) { + URI endpoint = configuration.getEndpoint(); + String scheme; + if ("https".equalsIgnoreCase(endpoint.getScheme()) || "wss".equalsIgnoreCase(endpoint.getScheme())) { + scheme = "wss"; + } else if ("http".equalsIgnoreCase(endpoint.getScheme()) || "ws".equalsIgnoreCase(endpoint.getScheme())) { + scheme = "ws"; + } else { + throw new IllegalArgumentException("Unsupported endpoint scheme: " + endpoint.getScheme()); + } + String basePath = endpoint.getRawPath() == null ? "" : endpoint.getRawPath().replaceAll("/$", ""); + String path = basePath + "/agents/" + encode(agentName) + "/endpoint/protocols/voice"; + StringBuilder query = new StringBuilder("api-version=").append(encode(configuration.getApiVersion())) + .append("&x-ms-client-sdk=") + .append(encode(configuration.getUserAgent())); + VoiceAgentTransport transport = options.getTransport(); + if (transport != null) { + query.append("&transport=").append(encode(transport.toString())); + } + if (options.isStoreEnabled() != null) { + query.append("&store=").append(options.isStoreEnabled()); + } + if (options.getAgentVersionOverride() != null) { + query.append("&x-agent-version-override=").append(encode(options.getAgentVersionOverride())); + } + return URI.create(scheme + "://" + endpoint.getRawAuthority() + path + "?" + query); + } + + private static String encode(String value) { + try { + return URLEncoder.encode(value, StandardCharsets.UTF_8.name()).replace("+", "%20"); + } catch (Exception error) { + throw new IllegalStateException("UTF-8 encoding is unavailable.", error); + } + } + + private final class Listener extends WebSocketListener { + @Override + public void onOpen(WebSocket webSocket, Response response) { + open.set(true); + handshakeCompleted.countDown(); + } + + @Override + public void onMessage(WebSocket webSocket, String text) { + try { + signal(EventSignal.event(RealtimeServerEvent.fromJson(JsonProviders.createReader(text)))); + } catch (IOException | RuntimeException error) { + fail(new IllegalArgumentException("Invalid JSON event.", error), null); + webSocket.close(1007, "Invalid JSON event"); + } + } + + @Override + public void onMessage(WebSocket webSocket, ByteString bytes) { + IllegalArgumentException error + = new IllegalArgumentException("The voice-agent protocol requires JSON text frames."); + fail(error, null); + webSocket.close(1003, "Binary frames are not supported"); + } + + @Override + public void onClosing(WebSocket webSocket, int code, String reason) { + closeCode = code; + closeReason = reason; + webSocket.close(code, reason); + } + + @Override + public void onClosed(WebSocket webSocket, int code, String reason) { + closeCode = code; + closeReason = reason; + open.set(false); + closed.set(true); + signal(EventSignal.complete()); + handshakeCompleted.countDown(); + closeCompleted.countDown(); + shutdownHttpClient(); + } + + @Override + public void onFailure(WebSocket webSocket, Throwable error, Response response) { + fail(error, response); + } + } + + private static final class EventSignal { + private final RealtimeServerEvent event; + private final Throwable error; + private final boolean complete; + + private EventSignal(RealtimeServerEvent event, Throwable error, boolean complete) { + this.event = event; + this.error = error; + this.complete = complete; + } + + private static EventSignal event(RealtimeServerEvent event) { + return new EventSignal(event, null, false); + } + + private static EventSignal error(Throwable error) { + return new EventSignal(null, error, false); + } + + private static EventSignal complete() { + return new EventSignal(null, null, true); + } + } + + private static final class EventIterator implements Iterator { + private final BlockingQueue events; + private EventSignal next; + + private EventIterator(BlockingQueue events) { + this.events = events; + } + + @Override + public boolean hasNext() { + if (next == null) { + try { + next = events.take(); + } catch (InterruptedException error) { + Thread.currentThread().interrupt(); + throw new IllegalStateException("Interrupted while waiting for a voice-agent event.", error); + } + } + if (next.error != null) { + Throwable error = next.error; + next = null; + if (error instanceof RuntimeException) { + throw (RuntimeException) error; + } + throw new IllegalStateException("Voice-agent event stream failed.", error); + } + return !next.complete; + } + + @Override + public RealtimeServerEvent next() { + if (!hasNext()) { + throw new NoSuchElementException(); + } + RealtimeServerEvent event = next.event; + next = null; + return event; + } } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsServicePollUtils.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsServicePollUtils.java index 02bc1ec5f45ab..2ecc60e48a2c9 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsServicePollUtils.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsServicePollUtils.java @@ -151,12 +151,11 @@ private static LongRunningOperationStatus mapStatus(Object statusValue) { } String status = statusValue.toString().trim(); - if (JobStatus.QUEUED.toString().equalsIgnoreCase(status)) { - return LongRunningOperationStatus.IN_PROGRESS; - } else if (LongRunningOperationStatus.NOT_STARTED.toString().equalsIgnoreCase(status) + if (LongRunningOperationStatus.NOT_STARTED.toString().equalsIgnoreCase(status) || "NotStarted".equalsIgnoreCase(status)) { return LongRunningOperationStatus.NOT_STARTED; - } else if (JobStatus.IN_PROGRESS.toString().equalsIgnoreCase(status) + } else if (JobStatus.QUEUED.toString().equalsIgnoreCase(status) + || JobStatus.IN_PROGRESS.toString().equalsIgnoreCase(status) || LongRunningOperationStatus.IN_PROGRESS.toString().equalsIgnoreCase(status) || "InProgress".equalsIgnoreCase(status) || "Running".equalsIgnoreCase(status)) { diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketHttpResponse.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketHttpResponse.java index b1a2d50f20b76..2041aba6a6c5f 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketHttpResponse.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/realtime/VoiceAgentWebSocketHttpResponse.java @@ -38,6 +38,23 @@ public VoiceAgentWebSocketHttpResponse(URI endpoint, io.netty.handler.codec.http } } + /** + * Creates a response adapter. + * + * @param endpoint the WebSocket endpoint. + * @param response the rejected OkHttp handshake response. + */ + public VoiceAgentWebSocketHttpResponse(URI endpoint, okhttp3.Response response) { + super(new HttpRequest(HttpMethod.GET, toHttpUrl(endpoint))); + this.statusCode = response.code(); + this.headers = new HttpHeaders(); + for (String name : response.headers().names()) { + for (String value : response.headers(name)) { + this.headers.add(HttpHeaderName.fromString(name), value); + } + } + } + private static String toHttpUrl(URI endpoint) { String endpointUrl = endpoint.toString(); if ("wss".equalsIgnoreCase(endpoint.getScheme())) { diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationEvaluatorRef.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationEvaluatorRef.java index a58b7aae6974a..7aa8f135d7acf 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationEvaluatorRef.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationEvaluatorRef.java @@ -1,7 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. - package com.azure.ai.agents.models; import com.azure.core.annotation.Fluent; @@ -17,6 +16,7 @@ */ @Fluent public final class AgentOptimizationEvaluatorRef implements JsonSerializable { + /* * Evaluator name. */ @@ -31,7 +31,7 @@ public final class AgentOptimizationEvaluatorRef implements JsonSerializable Mono.just(new AccessToken("test-token", OffsetDateTime.now().plusHours(1))); BetaVoiceAgentWebSocketClient client @@ -140,8 +140,13 @@ public void syncConnectRejectsNullOptions() { .configuration(Configuration.NONE) .buildBetaVoiceAgentWebSocketClient(); - NullPointerException exception = assertThrows(NullPointerException.class, () -> client.connect("agent", null)); - assertEquals("'options' cannot be null.", exception.getMessage()); + NullPointerException agentNameException = assertThrows(NullPointerException.class, + () -> client.connect(null, new VoiceAgentWebSocketConnectionOptions())); + assertEquals("'agentName' cannot be null.", agentNameException.getMessage()); + + NullPointerException optionsException + = assertThrows(NullPointerException.class, () -> client.connect("agent", null)); + assertEquals("'options' cannot be null.", optionsException.getMessage()); } @Test @@ -165,6 +170,25 @@ public void tokenFailureOccursBeforeNetworkAccess() { assertFalse(connected.get()); } + @Test + public void syncTokenFailureOccursBeforeNetworkAccess() { + AtomicBoolean connected = new AtomicBoolean(); + server = HttpServer.create().host("127.0.0.1").port(0).handle((request, response) -> { + connected.set(true); + return response.send(); + }).bindNow(); + TokenCredential credential = request -> Mono.error(new IllegalStateException("token unavailable")); + BetaVoiceAgentWebSocketClient client + = new AgentsClientBuilder().endpoint("http://127.0.0.1:" + server.port() + "/api/projects/project") + .credential(credential) + .configuration(Configuration.NONE) + .buildBetaVoiceAgentWebSocketClient(); + + IllegalStateException exception = assertThrows(IllegalStateException.class, () -> client.connect("agent")); + assertTrue(exception.getMessage().contains("token unavailable")); + assertFalse(connected.get()); + } + @Test public void rejectedHandshakeMapsConflictToAzureException() { server = HttpServer.create() @@ -187,6 +211,27 @@ public void rejectedHandshakeMapsConflictToAzureException() { }).verify(); } + @Test + public void syncRejectedHandshakeMapsConflictToAzureException() { + server = HttpServer.create() + .host("127.0.0.1") + .port(0) + .handle( + (request, response) -> response.status(HttpResponseStatus.CONFLICT).sendString(Mono.just("conflict"))) + .bindNow(); + TokenCredential credential + = request -> Mono.just(new AccessToken("test-token", OffsetDateTime.now().plusHours(1))); + BetaVoiceAgentWebSocketClient client + = new AgentsClientBuilder().endpoint("http://127.0.0.1:" + server.port() + "/api/projects/project") + .credential(credential) + .configuration(Configuration.NONE) + .buildBetaVoiceAgentWebSocketClient(); + + ResourceModifiedException exception + = assertThrows(ResourceModifiedException.class, () -> client.connect("disabled-agent")); + assertEquals(409, exception.getResponse().getStatusCode()); + } + @Test public void unknownEventFallsBackToRealtimeServerEvent() { server = oneShotWebSocketServer("{\"type\":\"future.event\",\"value\":42}"); From 26de4f23b86d251a577d54194f6dfc5e72575bc5 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 13:31:51 +0800 Subject: [PATCH 18/29] Fix Projects Revapi preview exclusions Document intentional Agent Insights preview changes for highlighted trace duration and token count APIs. --- sdk/ai/azure-ai-projects/revapi.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sdk/ai/azure-ai-projects/revapi.json b/sdk/ai/azure-ai-projects/revapi.json index 8ebf9addfbac2..465255d490f0b 100644 --- a/sdk/ai/azure-ai-projects/revapi.json +++ b/sdk/ai/azure-ai-projects/revapi.json @@ -96,6 +96,17 @@ "code": "java.class.removed", "old": "class com.azure.ai.projects.models.Target", "justification": "Breaking change in beta operation: Target was renamed to FoundryEvaluationTarget to align with the current Evaluations preview contract." + }, + { + "code": "java.method.removed", + "old": "method java.time.Duration com.azure.ai.projects.models.AgentInsightHighlightedTrace::getDuration()", + "justification": "Breaking change in preview operation: getDuration was replaced by getDurationMs to align the highlighted trace model with the current AgentInsights V1 preview contract." + }, + { + "code": "java.method.returnTypeChanged", + "old": "method java.lang.Long com.azure.ai.projects.models.AgentInsightHighlightedTrace::getTotalTokens()", + "new": "method java.lang.Integer com.azure.ai.projects.models.AgentInsightHighlightedTrace::getTotalTokens()", + "justification": "Breaking change in preview operation: totalTokens changed from Long to Integer to align with the current AgentInsights V1 preview contract." } ] } From c9ffd87e189ba7dba777ef3887edf3c282502d4d Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 15:26:21 +0800 Subject: [PATCH 19/29] Move PR 50348 changes to unreleased --- sdk/ai/azure-ai-agents/CHANGELOG.md | 12 +++++++----- sdk/ai/azure-ai-projects/CHANGELOG.md | 7 +++---- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/sdk/ai/azure-ai-agents/CHANGELOG.md b/sdk/ai/azure-ai-agents/CHANGELOG.md index e1357ccfb83d3..3becae77a0024 100644 --- a/sdk/ai/azure-ai-agents/CHANGELOG.md +++ b/sdk/ai/azure-ai-agents/CHANGELOG.md @@ -4,12 +4,19 @@ ### Features Added +- Added `AgentTelephonyClient` and `AgentTelephonyAsyncClient` for outbound call jobs and campaign management, including recipient import, validation, publishing, pausing, resuming, and cancellation. +- Added session-affinity routing configuration through `AzureCreateResponseOptions.setRoutingConfig(...)`, `RoutingConfiguration`, and `SessionAffinityConfiguration`, with response details exposed by `ModelRouterDetails.getSessionAffinity()`. +- Added preview synchronous and asynchronous voice-agent WebSocket clients and session APIs with typed realtime events, text and PCM16 audio input, response cancellation, function-call output, persisted-conversation options, and authenticated `wss://` transport. +- Added synchronous and asynchronous live text conversation samples, an asynchronous Java Sound microphone/speaker sample with barge-in, and a live client-executed function-tool sample. + ### Breaking Changes ### Bugs Fixed ### Other Changes +- Regenerated client from the updated TypeSpec specification. + ## 2.5.0 (2026-09-09) ### Features Added @@ -40,10 +47,6 @@ whether web search can fetch live external content. - Added hosted-agent session defaults through `SessionConfiguration` and `HostedAgentDefinition.setSessionConfiguration(...)`, including configuration of the session idle timeout. -- Added `AgentTelephonyClient` and `AgentTelephonyAsyncClient` for outbound call jobs and campaign management, including recipient import, validation, publishing, pausing, resuming, and cancellation. -- Added session-affinity routing configuration through `AzureCreateResponseOptions.setRoutingConfig(...)`, `RoutingConfiguration`, and `SessionAffinityConfiguration`, with response details exposed by `ModelRouterDetails.getSessionAffinity()`. -- Added preview synchronous and asynchronous voice-agent WebSocket clients and session APIs with typed realtime events, text and PCM16 audio input, response cancellation, function-call output, persisted-conversation options, and authenticated `wss://` transport. -- Added synchronous and asynchronous live text conversation samples, an asynchronous Java Sound microphone/speaker sample with barge-in, and a live client-executed function-tool sample. ### Breaking Changes @@ -58,7 +61,6 @@ ### Other Changes - Updated the OpenAI TypeSpec model dependency to 1.26.0. -- Regenerated client from the updated TypeSpec specification. - Added sync and async conversation samples demonstrating the `x-ms-user-identity` header with the OpenAI ConversationService. - Added sync and async samples for draft agent versions, reminder toolbox tools, hosted-agent enable/disable, advanced memory-store workflows, and agent optimization. diff --git a/sdk/ai/azure-ai-projects/CHANGELOG.md b/sdk/ai/azure-ai-projects/CHANGELOG.md index ec11979caef3b..7c300f3c9166a 100644 --- a/sdk/ai/azure-ai-projects/CHANGELOG.md +++ b/sdk/ai/azure-ai-projects/CHANGELOG.md @@ -6,6 +6,9 @@ ### Breaking Changes +- Replaced `Target` with `FoundryEvaluationTarget`. `AzureAIAgentTarget` and `AzureAIModelTarget` now inherit from `FoundryEvaluationTarget`; update imports and declarations that use `Target`. +- `AgentTaxonomyInput` now accepts `FoundryEvaluationTarget` instead of `Target` in its constructor, and `getTarget()` returns `FoundryEvaluationTarget`. + ### Bugs Fixed ### Other Changes @@ -24,10 +27,6 @@ ### Breaking Changes - `BetaRoutinesClient.createOrUpdateRoutine(String, String, Boolean, Map, RoutineAction)` and its `BetaRoutinesAsyncClient` counterpart now require an additional trailing `RoutineAuthorization authorization` parameter. Pass `null` to retain the previous agent-identity dispatch behavior. -- Replaced `Target` with `FoundryEvaluationTarget`. `AzureAIAgentTarget` and `AzureAIModelTarget` now inherit from `FoundryEvaluationTarget`; update imports and declarations that use `Target`. -- `AgentTaxonomyInput` now accepts `FoundryEvaluationTarget` instead of `Target` in its constructor, and `getTarget()` returns `FoundryEvaluationTarget`. - -### Bugs Fixed - Regenerated client from the updated TypeSpec specification. From 37087758b728fb3bca116a37b212407a8cf821d8 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 15:45:45 +0800 Subject: [PATCH 20/29] Fix conversation item CRUD tests --- .../java/com/azure/ai/agents/ConversationsAsyncTests.java | 8 ++++++-- .../test/java/com/azure/ai/agents/ConversationsTests.java | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/ConversationsAsyncTests.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/ConversationsAsyncTests.java index 16e7ab8830d14..e302ecb22e5b0 100644 --- a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/ConversationsAsyncTests.java +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/ConversationsAsyncTests.java @@ -93,9 +93,13 @@ public void basicItemCRUDOperations(HttpClient httpClient, AgentsServiceVersion assertNotNull(conversationItem); assertNotNull(conversationItem.data()); assertFalse(conversationItem.data().isEmpty()); - assertTrue(conversationItem.data().get(0).isMessage()); - Message createdConversationItem = conversationItem.data().get(0).asMessage(); + Message createdConversationItem = conversationItem.data() + .stream() + .filter(ConversationItem::isMessage) + .map(ConversationItem::asMessage) + .findFirst() + .orElseThrow(() -> new AssertionError("Created conversation item did not contain a message.")); assertTrue(createdConversationItem.content().get(0).isInputText()); assertEquals("Hello, agent!", createdConversationItem.content().get(0).asInputText().text()); diff --git a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/ConversationsTests.java b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/ConversationsTests.java index 9aa2ba4a2e6e9..13d8ac51e7131 100644 --- a/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/ConversationsTests.java +++ b/sdk/ai/azure-ai-agents/src/test/java/com/azure/ai/agents/ConversationsTests.java @@ -81,9 +81,13 @@ public void basicItemCRUDOperations(HttpClient httpClient, AgentsServiceVersion assertNotNull(conversationItem); assertNotNull(conversationItem.data()); assertFalse(conversationItem.data().isEmpty()); - assertTrue(conversationItem.data().get(0).isMessage()); - Message createdConversationItem = conversationItem.data().get(0).asMessage(); + Message createdConversationItem = conversationItem.data() + .stream() + .filter(ConversationItem::isMessage) + .map(ConversationItem::asMessage) + .findFirst() + .orElseThrow(() -> new AssertionError("Created conversation item did not contain a message.")); assertTrue(createdConversationItem.content().get(0).isInputText()); assertEquals("Hello, agent!", createdConversationItem.content().get(0).asInputText().text()); From e56832d4d044cd0cfabd858b9c392e6a040dcaa7 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 17:11:47 +0800 Subject: [PATCH 21/29] Clean up AI Revapi exclusions --- sdk/ai/azure-ai-agents/CHANGELOG.md | 2 + sdk/ai/azure-ai-agents/revapi.json | 84 ------------------------ sdk/ai/azure-ai-projects/CHANGELOG.md | 4 +- sdk/ai/azure-ai-projects/revapi.json | 93 --------------------------- 4 files changed, 4 insertions(+), 179 deletions(-) diff --git a/sdk/ai/azure-ai-agents/CHANGELOG.md b/sdk/ai/azure-ai-agents/CHANGELOG.md index 3becae77a0024..613815573edf7 100644 --- a/sdk/ai/azure-ai-agents/CHANGELOG.md +++ b/sdk/ai/azure-ai-agents/CHANGELOG.md @@ -11,6 +11,8 @@ ### Breaking Changes +- Renamed `AgentOptimizationEvaluatorReference` to `AgentOptimizationEvaluatorRef`; the `AgentOptimizationJobInputs` constructor and `getEvaluators()` now use the renamed type. + ### Bugs Fixed ### Other Changes diff --git a/sdk/ai/azure-ai-agents/revapi.json b/sdk/ai/azure-ai-agents/revapi.json index b58d879d2134f..1635d78f1ad7b 100644 --- a/sdk/ai/azure-ai-agents/revapi.json +++ b/sdk/ai/azure-ai-agents/revapi.json @@ -11,95 +11,11 @@ "annotationType": "com\\.azure\\.ai\\.agents\\.implementation\\.utils\\.Beta", "justification": "Adding or updating the preview @Beta annotation is metadata only and does not affect runtime behavior. Preview surface may still change between beta releases." }, - { - "code": "java.method.numberOfParametersChanged", - "old": { - "matcher": "regex", - "match": "method .* com\\.azure\\.ai\\.agents\\.Agents(Async)?Client::(createAgentVersionFromCode|createSession|deleteSession|downloadAgentCode|getSession|listAgentVersions|listSessions)\\(.*\\)" - }, - "justification": "Breaking change in beta operation: session and hosted-agent code methods no longer expose AgentDefinitionOptInKeys. The opt-in key is now sent implicitly and userIsolationKey/agentVersion are the public parameters." - }, - { - "code": "java.class.removed", - "old": { - "matcher": "regex", - "match": "class com\\.azure\\.ai\\.agents\\.models\\.(AgentIdentifier|AgentProtocol|CandidateDeployConfig|CandidateFileInfo|CandidateMetadata|CandidateResults|DatasetInfo|DatasetRef|EntraIsolationKeySource|HeaderIsolationKeySource|IsolationKeySource|IsolationKeySourceKind|OptimizationAgentDefinition|OptimizationTaskResult|PromoteCandidateInput|PromoteCandidateResult)" - }, - "justification": "Breaking change in beta operation: optimization and agent protocol models were renamed, restructured, or removed to align with the current service contract." - }, { "regex": true, "code": "java\\.method\\.(numberOfParametersChanged|parameterTypeParameterChanged|removed|returnTypeChanged|returnTypeTypeParametersChanged|visibilityIncreased)", "old": "(method|parameter) .* com\\.azure\\.ai\\.agents\\.models\\.(Agent)?Optimization(Candidate|DatasetItem|Job|JobInputs|JobProgress|JobResult|Options)::.*", "justification": "Breaking change in beta operation: optimization models were restructured to align with the current AgentsOptimization preview contract." - }, - { - "regex": true, - "code": "java\\.method\\.(parameterTypeChanged|returnTypeChanged)", - "old": "(method|parameter) .* com\\.azure\\.ai\\.agents\\.models\\.ProtocolVersionRecord::.*", - "justification": "AgentProtocol was renamed to AgentEndpointProtocol to align protocol-version records with the current service contract." - }, - { - "code": "java.method.parameterTypeParameterChanged", - "old": { - "matcher": "regex", - "match": "parameter .* com\\.azure\\.ai\\.agents\\.Toolboxes(Async)?Client::createToolboxVersion\\(.*\\)" - }, - "justification": "Breaking change in beta operation: toolbox version creation now accepts ToolboxTool models instead of agent Tool models to align toolbox tools with the current service contract." - }, - { - "code": "java.method.returnTypeTypeParametersChanged", - "old": { - "matcher": "regex", - "match": "method java\\.util\\.List com\\.azure\\.ai\\.agents\\.models\\.ToolboxVersionDetails::getTools\\(\\)" - }, - "justification": "Breaking change in beta operation: toolbox versions now expose ToolboxTool models instead of agent Tool models to align with the current service contract." - }, - { - "regex": true, - "code": "java\\..*", - "old": ".*com\\.azure\\.ai\\.agents\\.models\\.[A-Za-z0-9_]*Preview[A-Za-z0-9_]*(::|\\.|$).*", - "justification": "Breaking change in preview model: models with Preview in their names are preview surface and may change between beta releases." - }, - { - "regex": true, - "code": "java\\.method\\.removed", - "old": "method .* com\\.azure\\.ai\\.agents\\.models\\.(AgentEndpointConfig|EntraAuthorizationScheme|HostedAgentDefinition)::(getProtocols|setProtocols|getIsolationKeySource|setIsolationKeySource|getTools|setTools)\\(.*\\)", - "justification": "Breaking change in beta operation: hosted-agent endpoint, authorization, and tool configuration models were restructured to align with the current service contract." - }, - { - "code": "java.field.removed", - "old": "field com.azure.ai.agents.models.ToolType.FABRIC_DATAAGENT_PREVIEW", - "justification": "Breaking change in beta operation: ToolType.FABRIC_DATAAGENT_PREVIEW was renamed to FABRIC_DATA_AGENT_PREVIEW for consistent naming." - }, - { - "regex": true, - "code": "java\\.method\\.removed", - "old": "method .* com\\.azure\\.ai\\.agents\\.BetaAgents(Async)?Client::createOptimizationJob(WithResponse)?\\(.*\\)", - "justification": "Breaking change in beta operation: createOptimizationJob was replaced by the long-running-operation beginCreateOptimizationJob to align with the current AgentsOptimization preview contract." - }, - { - "code": "java.field.enumConstantOrderChanged", - "old": "field com.azure.ai.agents.models.ToolboxToolType.TOOLBOX_SEARCH_PREVIEW", - "new": "field com.azure.ai.agents.models.ToolboxToolType.TOOLBOX_SEARCH_PREVIEW", - "justification": "Breaking change in preview enum: a new preview constant was inserted earlier in ToolboxToolType, shifting the ordinal of TOOLBOX_SEARCH_PREVIEW. Ordinal-based code is not supported for preview enum constants." - }, - { - "regex": true, - "code": "java\\.method\\.(parameterTypeChanged|returnTypeChanged|returnTypeTypeParametersChanged)", - "old": "(method|parameter) .* com\\.azure\\.ai\\.agents\\.BetaAgents(Async)?Client::(beginCreateOptimizationJob|cancelOptimizationJob|getOptimizationJob|listOptimizationJobs)\\(.*\\)", - "justification": "Breaking change in beta operation: optimization client methods now use AgentOptimization models after the optimization model hierarchy was restructured." - }, - { - "regex": true, - "code": "java\\.class\\.removed", - "old": "class com\\.azure\\.ai\\.agents\\.models\\.(AgentOptimizationEvaluatorRef|OptimizationAgentIdentifier|OptimizationCandidate|OptimizationDatasetCriterion|OptimizationDatasetInput|OptimizationDatasetInputType|OptimizationDatasetItem|OptimizationEvaluatorRef|OptimizationInlineDatasetInput|OptimizationJob|OptimizationJobInputs|OptimizationJobListItem|OptimizationJobProgress|OptimizationJobResult|OptimizationOptions|OptimizationReferenceDatasetInput|ProgrammaticToolCallingParameter)", - "justification": "Breaking change in beta operation: legacy optimization and programmatic tool-calling models were removed or replaced while aligning with the current preview service contract." - }, - { - "code": "java.method.removed", - "old": "method double com.azure.ai.agents.models.AgentOptimizationJobProgress::getElapsedSeconds()", - "justification": "Breaking change in beta operation: getElapsedSeconds was replaced by the Duration-returning getElapsed method to align with the current AgentsOptimization preview contract." } ] } diff --git a/sdk/ai/azure-ai-projects/CHANGELOG.md b/sdk/ai/azure-ai-projects/CHANGELOG.md index 7c300f3c9166a..f2299553769c8 100644 --- a/sdk/ai/azure-ai-projects/CHANGELOG.md +++ b/sdk/ai/azure-ai-projects/CHANGELOG.md @@ -6,8 +6,8 @@ ### Breaking Changes -- Replaced `Target` with `FoundryEvaluationTarget`. `AzureAIAgentTarget` and `AzureAIModelTarget` now inherit from `FoundryEvaluationTarget`; update imports and declarations that use `Target`. -- `AgentTaxonomyInput` now accepts `FoundryEvaluationTarget` instead of `Target` in its constructor, and `getTarget()` returns `FoundryEvaluationTarget`. +- Renamed `AgentInsightHighlightedTrace.getDuration()` to `getDurationMs()` to clarify that the duration is measured in milliseconds. +- Changed the return type of `AgentInsightHighlightedTrace.getTotalTokens()` from `Long` to `Integer`. ### Bugs Fixed diff --git a/sdk/ai/azure-ai-projects/revapi.json b/sdk/ai/azure-ai-projects/revapi.json index 465255d490f0b..0cb61110268f1 100644 --- a/sdk/ai/azure-ai-projects/revapi.json +++ b/sdk/ai/azure-ai-projects/revapi.json @@ -4,99 +4,6 @@ "configuration": { "ignore": true, "differences": [ - { - "regex": true, - "code": "java\\.annotation\\.(added|attributeValueChanged|attributeAdded|attributeRemoved)", - "old": ".*com\\.azure\\.ai\\.projects\\..*", - "annotationType": "com\\.azure\\.ai\\.projects\\.implementation\\.utils\\.Beta", - "justification": "Adding or updating the preview @Beta annotation is metadata only and does not affect runtime behavior. Preview surface may still change between beta releases." - }, - { - "code": "java.method.removed", - "old": "method com.azure.ai.projects.models.SystemDataV3 com.azure.ai.projects.models.ModelVersion::getSystemData()", - "justification": "SystemDataV3 was removed from ModelVersion because the current service contract no longer exposes system data on model versions." - }, - { - "code": "java.class.removed", - "old": "class com.azure.ai.projects.models.SystemDataV3", - "justification": "SystemDataV3 was removed because the current service contract no longer exposes this model." - }, - { - "code": "java.method.returnTypeChanged", - "old": "method java.lang.String com.azure.ai.projects.models.RoutineRun::getStatus()", - "new": "method com.azure.core.util.BinaryData com.azure.ai.projects.models.RoutineRun::getStatus()", - "justification": "Breaking change in beta operation: RoutineRun status changed from String to BinaryData to align with the current Routines preview contract." - }, - { - "regex": true, - "code": "java\\.field\\.removed", - "old": "field com\\.azure\\.ai\\.projects\\.models\\.AttackStrategy\\.(BASE64|ROT13)", - "justification": "Breaking change in beta operation: AttackStrategy enum values were removed to align with the current RedTeams preview contract." - }, - { - "regex": true, - "code": "java\\.method\\.removed", - "old": "method .* com\\.azure\\.ai\\.projects\\.models\\.(CodeBasedEvaluatorDefinition|EvaluatorDefinition|PromptBasedEvaluatorDefinition|RubricBasedEvaluatorDefinition)::(getInitParameters|setInitParameters)\\(.*\\)", - "justification": "Breaking change in beta operation: evaluator initialization parameter accessors were renamed to initializationParameters to align with the current Evaluations preview contract." - }, - { - "code": "java.method.removed", - "old": "method java.lang.String com.azure.ai.projects.models.ContinuousEvaluationRuleAction::getEvalId()", - "justification": "Breaking change in beta operation: ContinuousEvaluationRuleAction no longer exposes evalId in the current Evaluations preview contract." - }, - { - "regex": true, - "code": "java\\.method\\.removed", - "old": "method .* com\\.azure\\.ai\\.projects\\.BetaDatasets(Async)?Client::createGenerationJob(WithResponse)?\\(.*\\)", - "justification": "Breaking change in beta operation: createGenerationJob was replaced by the long-running-operation beginCreateGenerationJob to align with the current Datasets preview contract." - }, - { - "regex": true, - "code": "java\\.method\\.removed", - "old": "method .* com\\.azure\\.ai\\.projects\\.BetaEvaluators(Async)?Client::createEvaluatorGenerationJob(WithResponse)?\\(.*\\)", - "justification": "Breaking change in beta operation: createEvaluatorGenerationJob was replaced by the long-running-operation beginCreateEvaluatorGenerationJob to align with the current Evaluators preview contract." - }, - { - "regex": true, - "code": "java\\.method\\.numberOfParametersChanged", - "old": "method .* com\\.azure\\.ai\\.projects\\.BetaRoutines(Async)?Client::(listRoutines|listRoutineRuns)\\(.*\\)", - "justification": "Breaking change in beta operation: BetaRoutines(Async)Client listRoutines/listRoutineRuns dropped the 'before' parameter and now take PageOrder instead of String for 'order' to align with the current Routines preview contract." - }, - { - "code": "java.field.removed", - "old": "field com.azure.ai.projects.models.DataGenerationJobType.TASK_GENERATION", - "justification": "Breaking change in beta operation: DataGenerationJobType.TASK_GENERATION was renamed to SIMULATION_SEED to align with the current DataGenerationJobs preview contract." - }, - { - "code": "java.class.removed", - "old": "class com.azure.ai.projects.models.TaskGenerationDataGenerationJobOptions", - "justification": "Breaking change in beta operation: TaskGenerationDataGenerationJobOptions was renamed to SimulationSeedDataGenerationJobOptions to align with the current DataGenerationJobs preview contract." - }, - { - "regex": true, - "code": "java\\.method\\.numberOfParametersChanged", - "old": "method .* com\\.azure\\.ai\\.projects\\.BetaRoutines(Async)?Client::createOrUpdateRoutine\\(.*\\)", - "justification": "Breaking change in beta operation: BetaRoutines(Async)Client createOrUpdateRoutine takes an additional optional 'authorization' parameter to align with the current Routines preview contract." - }, - { - "regex": true, - "code": "java\\.method\\.(parameterTypeChanged|returnTypeChanged)", - "old": "(parameter void|method com\\.azure\\.ai\\.projects\\.models\\.Target) com\\.azure\\.ai\\.projects\\.models\\.AgentTaxonomyInput::(|getTarget)\\(.*\\)", - "justification": "Breaking change in beta operation: AgentTaxonomyInput now uses FoundryEvaluationTarget after Target was renamed to align with the current Evaluations preview contract." - }, - { - "code": "java.class.noLongerInheritsFromClass", - "old": { - "matcher": "regex", - "match": "class com\\.azure\\.ai\\.projects\\.models\\.(AzureAIAgentTarget|AzureAIModelTarget)" - }, - "justification": "Breaking change in beta operation: evaluation target models now inherit from FoundryEvaluationTarget after Target was renamed to align with the current Evaluations preview contract." - }, - { - "code": "java.class.removed", - "old": "class com.azure.ai.projects.models.Target", - "justification": "Breaking change in beta operation: Target was renamed to FoundryEvaluationTarget to align with the current Evaluations preview contract." - }, { "code": "java.method.removed", "old": "method java.time.Duration com.azure.ai.projects.models.AgentInsightHighlightedTrace::getDuration()", From abbcf765cd8337d6b8e35ad031e18fc5e8383f96 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 18:41:34 +0800 Subject: [PATCH 22/29] Regenerate Java Agents SDK --- .../azure/ai/agents/AgentsAsyncClient.java | 1366 +--- .../com/azure/ai/agents/AgentsClient.java | 1299 +--- .../azure/ai/agents/AgentsClientBuilder.java | 24 +- ...AgentEndpointConversationsAsyncClient.java | 8 +- .../BetaAgentEndpointConversationsClient.java | 8 +- ...ava => BetaAgentTelephonyAsyncClient.java} | 12 +- ...ent.java => BetaAgentTelephonyClient.java} | 12 +- .../ai/agents/BetaAgentsAsyncClient.java | 1360 ++++ .../com/azure/ai/agents/BetaAgentsClient.java | 1293 ++++ .../azure/ai/agents/ToolboxesAsyncClient.java | 213 +- .../com/azure/ai/agents/ToolboxesClient.java | 213 +- .../implementation/AgentsClientImpl.java | 56 +- .../ai/agents/implementation/AgentsImpl.java | 6225 ++++++----------- .../BetaAgentEndpointConversationsImpl.java | 24 +- ...mpl.java => BetaAgentTelephoniesImpl.java} | 20 +- .../agents/implementation/BetaAgentsImpl.java | 2305 ++++++ .../implementation/JsonMergePatchHelper.java | 34 +- .../agents/implementation/ToolboxesImpl.java | 560 +- .../models/AgentDefinitionOptInKeys.java | 14 +- .../azure/ai/agents/models/AgentDetails.java | 22 + .../azure/ai/agents/models/AgentHarness.java | 105 + .../models/AgentOptimizationDatasetItem.java | 23 +- .../models/AgentOptimizationJobInputs.java | 10 +- .../agents/models/BrowserAutomationTool.java | 104 + .../models/BrowserAutomationToolboxTool.java | 151 + .../models/GitHubCopilotBuiltInTool.java | 71 + .../agents/models/GitHubCopilotHarness.java | 78 + .../models/GitHubCopilotToolsetConfig.java | 116 + .../GitHubCopilotToolsetDefaultConfig.java | 91 + .../models/GitHubCopilotToolsetPreview.java | 146 + .../agents/models/PromptAgentDefinition.java | 59 + ...nEvaluatorRef.java => SkillReference.java} | 42 +- .../java/com/azure/ai/agents/models/Tool.java | 6 +- .../azure/ai/agents/models/ToolConfig.java | 16 +- .../com/azure/ai/agents/models/ToolType.java | 12 + .../ai/agents/models/ToolboxDetails.java | 84 +- .../azure/ai/agents/models/ToolboxTool.java | 2 + .../ai/agents/models/ToolboxToolType.java | 7 +- .../ai/agents/models/ToolboxVersions.java | 82 + .../ai/agents/models/VoiceResponseBase.java | 79 +- .../src/main/java/module-info.java | 2 +- .../META-INF/azure-ai-agents_metadata.json | 2 +- .../AgentOptimizationAsyncSample.java | 4 +- .../optimization/AgentOptimizationSample.java | 4 +- .../voice/VoiceAgentGenerateSample.java | 10 +- ...AgentLiveAudioConversationAsyncSample.java | 4 +- ...eAgentLiveTextConversationAsyncSample.java | 4 +- .../VoiceAgentLiveTextConversationSample.java | 4 +- 48 files changed, 9215 insertions(+), 7171 deletions(-) rename sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/{AgentTelephonyAsyncClient.java => BetaAgentTelephonyAsyncClient.java} (99%) rename sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/{AgentTelephonyClient.java => BetaAgentTelephonyClient.java} (99%) rename sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/{AgentTelephoniesImpl.java => BetaAgentTelephoniesImpl.java} (99%) create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentHarness.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/BrowserAutomationTool.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/BrowserAutomationToolboxTool.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotBuiltInTool.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotHarness.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotToolsetConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotToolsetDefaultConfig.java create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotToolsetPreview.java rename sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/{AgentOptimizationEvaluatorRef.java => SkillReference.java} (62%) create mode 100644 sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxVersions.java diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java index ceb5a79ab90f9..6c4d3d5060b8f 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsAsyncClient.java @@ -16,8 +16,6 @@ import com.azure.ai.agents.implementation.models.CreateSessionRequest; import com.azure.ai.agents.implementation.models.GetMicrosoft365AppPackageRequest; import com.azure.ai.agents.implementation.models.PublishAgentToMicrosoft365Request; -import com.azure.ai.agents.implementation.models.ReplaceTelephonyTransferTargetsRequest; -import com.azure.ai.agents.implementation.models.TransferTelephonyCallRequest; import com.azure.ai.agents.implementation.models.UpdateAgentFromManifestRequest; import com.azure.ai.agents.implementation.models.UpdateAgentRequest; import com.azure.ai.agents.implementation.utils.FileUtils; @@ -31,7 +29,6 @@ import com.azure.ai.agents.models.CreateAgentVersionFromCodeContent; import com.azure.ai.agents.models.CreateAgentVersionFromCodeMetadata; import com.azure.ai.agents.models.CreateAgentVersionInput; -import com.azure.ai.agents.models.CreateTelephonyBindingRequest; import com.azure.ai.agents.models.GetMicrosoft365AppPackageOptions; import com.azure.ai.agents.models.HostedAgentDefinition; import com.azure.ai.agents.models.Microsoft365PublishDefaults; @@ -41,17 +38,7 @@ import com.azure.ai.agents.models.SessionDirectoryEntry; import com.azure.ai.agents.models.SessionFileWriteResult; import com.azure.ai.agents.models.SessionLogEvent; -import com.azure.ai.agents.models.TelephonyBinding; -import com.azure.ai.agents.models.TelephonyBindingListItem; -import com.azure.ai.agents.models.TelephonyBindingStatus; -import com.azure.ai.agents.models.TelephonyCallRecord; -import com.azure.ai.agents.models.TelephonyCallStatus; -import com.azure.ai.agents.models.TelephonyCallSummary; -import com.azure.ai.agents.models.TelephonyProvider; -import com.azure.ai.agents.models.TelephonyTransferTarget; -import com.azure.ai.agents.models.TelephonyTransferTargets; import com.azure.ai.agents.models.UpdateAgentDetailsOptions; -import com.azure.ai.agents.models.UpdateTelephonyBindingRequest; import com.azure.ai.agents.models.VersionIndicator; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; @@ -72,8 +59,6 @@ import com.azure.core.util.FluxUtil; import com.openai.models.conversations.Conversation; import java.nio.file.Paths; -import java.time.OffsetDateTime; -import java.util.List; import java.util.Map; import java.util.stream.Collectors; import reactor.core.publisher.Flux; @@ -101,6 +86,7 @@ public final class AgentsAsyncClient { * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -686,6 +672,7 @@ public PagedFlux listAgentVersions(String agentName) { * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -861,6 +848,7 @@ Mono> createAgentWithResponse(BinaryData createAgentRequest * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -1054,6 +1042,7 @@ Mono updateAgent(String agentName, AgentDefinition definition) { * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -1209,6 +1198,7 @@ Mono> createAgentFromManifestWithResponse(BinaryData create * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -1805,6 +1795,7 @@ public PagedFlux listAgents(AgentKind kind, Integer limit, PageOrd * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -2567,6 +2558,7 @@ Mono updateAgent(String agentName, AgentDefinition definition, Map * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -4277,150 +4269,6 @@ public PagedFlux listAgentVersions(String agentName, Intege }); } - /** - * Generate an agent - * - * Generates and creates an agent from kind-specific high-level inputs. - * The generated definition remains fully editable through the standard agent versioning operations. - *

Request Body Schema

- * - *
-     * {@code
-     * BinaryData
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     state: String(enabled/disabled) (Required)
-     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
-     *     versions (Required): {
-     *         latest (Required): {
-     *             metadata (Required): {
-     *                 String: String (Required)
-     *             }
-     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *             id: String (Required)
-     *             name: String (Required)
-     *             version: String (Required)
-     *             description: String (Optional)
-     *             created_at: long (Required)
-     *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *                 rai_config (Optional): {
-     *                     rai_policy_name: String (Required)
-     *                     invocations_moderation (Optional): {
-     *                         input_content_type: String(json/text) (Optional)
-     *                         output_content_type: String(json/text) (Optional)
-     *                         response_mode: String(non_streaming/streaming/both) (Required)
-     *                         input_paths (Optional): [
-     *                             String (Optional)
-     *                         ]
-     *                         output_paths (Optional): [
-     *                             String (Optional)
-     *                         ]
-     *                         stream_selectors (Optional): [
-     *                              (Optional){
-     *                                 event_type: String (Required)
-     *                                 text_field: String (Optional)
-     *                             }
-     *                         ]
-     *                     }
-     *                 }
-     *             }
-     *             draft: Boolean (Optional)
-     *             status: String(creating/active/failed/deleting/deleted) (Optional)
-     *             instance_identity (Optional): {
-     *                 principal_id: String (Required)
-     *                 client_id: String (Required)
-     *                 status: String(active/disabled) (Optional)
-     *             }
-     *             blueprint (Optional): (recursive schema, see blueprint above)
-     *             blueprint_reference (Optional): {
-     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
-     *             }
-     *             agent_guid: String (Optional)
-     *         }
-     *     }
-     *     agent_endpoint (Optional): {
-     *         version_selector (Optional): {
-     *             version_selection_rules (Optional, Required on create): [
-     *                  (Optional, Required on create){
-     *                     type: String(FixedRatio) (Required)
-     *                     agent_version: String (Optional, Required on create)
-     *                 }
-     *             ]
-     *         }
-     *         protocol_configuration (Optional): {
-     *             activity (Optional): {
-     *                 enable_m365_public_endpoint: Boolean (Optional)
-     *                 access_boundaries (Optional): [
-     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
-     *                 ]
-     *             }
-     *             responses (Optional): {
-     *             }
-     *             a2a (Optional): {
-     *             }
-     *             mcp (Optional): {
-     *             }
-     *             invocations (Optional): {
-     *             }
-     *             invocations_ws (Optional): {
-     *             }
-     *         }
-     *         authorization_schemes (Optional): [
-     *              (Optional){
-     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
-     *             }
-     *         ]
-     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
-     *     }
-     *     digital_worker_type: String(m365) (Optional)
-     *     instance_identity (Optional): (recursive schema, see instance_identity above)
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): (recursive schema, see blueprint_reference above)
-     *     agent_card (Optional): {
-     *         version: String (Optional, Required on create)
-     *         description: String (Optional)
-     *         skills (Optional, Required on create): [
-     *              (Optional, Required on create){
-     *                 id: String (Optional, Required on create)
-     *                 name: String (Optional, Required on create)
-     *                 description: String (Optional)
-     *                 tags (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 examples (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *             }
-     *         ]
-     *     }
-     * }
-     * }
-     * 
- * - * @param body The kind-specific inputs for generating and creating an agent. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response} on successful completion of {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> generateAgentWithResponse(BinaryData body, RequestOptions requestOptions) { - return this.serviceClient.generateAgentWithResponseAsync(body, requestOptions); - } - /** * Publish an agent to Microsoft 365 * @@ -4608,30 +4456,6 @@ public Mono> getMicrosoft365PublishDefaultsWithResponse(Str return this.serviceClient.getMicrosoft365PublishDefaultsWithResponseAsync(agentName, requestOptions); } - /** - * Generate an agent - * - * Generates and creates an agent from kind-specific high-level inputs. - * The generated definition remains fully editable through the standard agent versioning operations. - * - * @param body The kind-specific inputs for generating and creating an agent. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the response body on successful completion of {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono generateAgent(BinaryData body) { - // Generated convenience method for generateAgentWithResponse - RequestOptions requestOptions = new RequestOptions(); - return generateAgentWithResponse(body, requestOptions).flatMap(FluxUtil::toMono) - .map(protocolMethodData -> protocolMethodData.toObject(AgentDetails.class)); - } - /** * Publish an agent to Microsoft 365 * @@ -4780,1180 +4604,6 @@ public Mono getMicrosoft365PublishDefaults(String a .map(protocolMethodData -> protocolMethodData.toObject(Microsoft365PublishDefaults.class)); } - /** - * Create an agent telephony binding - * - * Creates a telephony binding for the voice agent named in the path. - *

Header Parameters

- * - * - * - * - * - *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as - * HTTP-date
- * You can add these to a request with {@link RequestOptions#addHeader} - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     * }
-     * }
-     * 
- * - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the - * binding.
- * - * @param agentName The name of the voice agent that owns the binding. - * @param body The provider-specific binding to create. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a telephony binding owned by a voice agent along with {@link Response} on successful completion of - * {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> createTelephonyBindingWithResponse(String agentName, BinaryData body, - RequestOptions requestOptions) { - return this.serviceClient.createTelephonyBindingWithResponseAsync(agentName, body, requestOptions); - } - - /** - * List agent telephony bindings - * - * Returns the telephony bindings owned by the voice agent named in the path. - *

Query Parameters

- * - * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: - * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", - * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     *     etag: String (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the voice agent whose bindings are listed. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. - */ - @Generated - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedFlux listTelephonyBindings(String agentName, RequestOptions requestOptions) { - return this.serviceClient.listTelephonyBindingsAsync(agentName, requestOptions); - } - - /** - * Get an agent telephony binding - * - * Retrieves a telephony binding owned by the voice agent named in the path. - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     * }
-     * }
-     * 
- * - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the - * binding.
- * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return an agent telephony binding - * - * Retrieves a telephony binding owned by the voice agent named in the path along with {@link Response} on - * successful completion of {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> getTelephonyBindingWithResponse(String agentName, String bindingId, - RequestOptions requestOptions) { - return this.serviceClient.getTelephonyBindingWithResponseAsync(agentName, bindingId, requestOptions); - } - - /** - * Update an agent telephony binding - * - * Updates a telephony binding owned by the voice agent named in the path. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     status: String(active/suspended) (Optional)
-     *     label: String (Optional)
-     *     connection: String (Optional)
-     *     phone_number: String (Optional)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     * }
-     * }
-     * 
- * - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the - * binding.
- * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @param body The binding properties to update. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a telephony binding owned by a voice agent along with {@link Response} on successful completion of - * {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> updateTelephonyBindingWithResponse(String agentName, String bindingId, - String ifMatch, BinaryData body, RequestOptions requestOptions) { - return this.serviceClient.updateTelephonyBindingWithResponseAsync(agentName, bindingId, ifMatch, body, - requestOptions); - } - - /** - * Delete an agent telephony binding - * - * Deletes a telephony binding owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> deleteTelephonyBindingWithResponse(String agentName, String bindingId, String ifMatch, - RequestOptions requestOptions) { - return this.serviceClient.deleteTelephonyBindingWithResponseAsync(agentName, bindingId, ifMatch, - requestOptions); - } - - /** - * List agent telephony calls - * - * Returns the durable inbound call history for the voice agent named in the path. - *

Query Parameters

- * - * - * - * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: - * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: - * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix - * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this - * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the voice agent whose calls are listed. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. - */ - @Generated - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedFlux listTelephonyCalls(String agentName, RequestOptions requestOptions) { - return this.serviceClient.listTelephonyCallsAsync(agentName, requestOptions); - } - - /** - * Get an agent telephony call - * - * Retrieves a durable inbound call record owned by the voice agent named in the path. - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
-     *     timing (Required): {
-     *         received_at: Long (Optional)
-     *         validated_at: Long (Optional)
-     *         admitted_at: Long (Optional)
-     *         answer_requested_at: Long (Optional)
-     *         answered_at: Long (Optional)
-     *         media_connected_at: Long (Optional)
-     *         agent_session_ready_at: Long (Optional)
-     *         first_caller_audio_at: Long (Optional)
-     *         first_agent_audio_at: Long (Optional)
-     *         ended_at: Long (Optional)
-     *         duration_basis: String(answered/received) (Optional)
-     *         timestamp_source: String(provider/gateway/derived) (Required)
-     *     }
-     *     trace (Optional): {
-     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
-     *         trace_id: String (Optional)
-     *         root_span_id: String (Optional)
-     *         conversation_id: String (Optional)
-     *         mode: String(live/post_call) (Optional)
-     *     }
-     *     events (Required): [
-     *          (Required){
-     *             sequence: long (Required)
-     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
-     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
-     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
-     *             observed_at: long (Required)
-     *             occurred_at: Long (Optional)
-     *             timestamp_source: String(provider/gateway/derived) (Required)
-     *             reason: String (Optional)
-     *             provider_event_id: String (Optional)
-     *             provider_sequence: Long (Optional)
-     *             provider_status_code: Integer (Optional)
-     *             provider_sub_code: Integer (Optional)
-     *         }
-     *     ]
-     *     events_truncated: boolean (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the voice agent that owns the call record. - * @param callId The service-generated call identifier. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return an agent telephony call - * - * Retrieves a durable inbound call record owned by the voice agent named in the path along with {@link Response} on - * successful completion of {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> getTelephonyCallWithResponse(String agentName, String callId, - RequestOptions requestOptions) { - return this.serviceClient.getTelephonyCallWithResponseAsync(agentName, callId, requestOptions); - } - - /** - * Transfer an active agent telephony call - * - * Transfers an active inbound call to a configured target for the voice agent named in the path. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     target: String (Required)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
-     *     timing (Required): {
-     *         received_at: Long (Optional)
-     *         validated_at: Long (Optional)
-     *         admitted_at: Long (Optional)
-     *         answer_requested_at: Long (Optional)
-     *         answered_at: Long (Optional)
-     *         media_connected_at: Long (Optional)
-     *         agent_session_ready_at: Long (Optional)
-     *         first_caller_audio_at: Long (Optional)
-     *         first_agent_audio_at: Long (Optional)
-     *         ended_at: Long (Optional)
-     *         duration_basis: String(answered/received) (Optional)
-     *         timestamp_source: String(provider/gateway/derived) (Required)
-     *     }
-     *     trace (Optional): {
-     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
-     *         trace_id: String (Optional)
-     *         root_span_id: String (Optional)
-     *         conversation_id: String (Optional)
-     *         mode: String(live/post_call) (Optional)
-     *     }
-     *     events (Required): [
-     *          (Required){
-     *             sequence: long (Required)
-     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
-     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
-     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
-     *             observed_at: long (Required)
-     *             occurred_at: Long (Optional)
-     *             timestamp_source: String(provider/gateway/derived) (Required)
-     *             reason: String (Optional)
-     *             provider_event_id: String (Optional)
-     *             provider_sequence: Long (Optional)
-     *             provider_status_code: Integer (Optional)
-     *             provider_sub_code: Integer (Optional)
-     *         }
-     *     ]
-     *     events_truncated: boolean (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the voice agent that owns the active call. - * @param callId The service-generated call identifier. - * @param transferTelephonyCallRequest The transferTelephonyCallRequest parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response} on - * successful completion of {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> transferTelephonyCallWithResponse(String agentName, String callId, - BinaryData transferTelephonyCallRequest, RequestOptions requestOptions) { - return this.serviceClient.transferTelephonyCallWithResponseAsync(agentName, callId, - transferTelephonyCallRequest, requestOptions); - } - - /** - * End an active agent telephony call - * - * Ends an active inbound call owned by the voice agent named in the path. - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
-     *     timing (Required): {
-     *         received_at: Long (Optional)
-     *         validated_at: Long (Optional)
-     *         admitted_at: Long (Optional)
-     *         answer_requested_at: Long (Optional)
-     *         answered_at: Long (Optional)
-     *         media_connected_at: Long (Optional)
-     *         agent_session_ready_at: Long (Optional)
-     *         first_caller_audio_at: Long (Optional)
-     *         first_agent_audio_at: Long (Optional)
-     *         ended_at: Long (Optional)
-     *         duration_basis: String(answered/received) (Optional)
-     *         timestamp_source: String(provider/gateway/derived) (Required)
-     *     }
-     *     trace (Optional): {
-     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
-     *         trace_id: String (Optional)
-     *         root_span_id: String (Optional)
-     *         conversation_id: String (Optional)
-     *         mode: String(live/post_call) (Optional)
-     *     }
-     *     events (Required): [
-     *          (Required){
-     *             sequence: long (Required)
-     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
-     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
-     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
-     *             observed_at: long (Required)
-     *             occurred_at: Long (Optional)
-     *             timestamp_source: String(provider/gateway/derived) (Required)
-     *             reason: String (Optional)
-     *             provider_event_id: String (Optional)
-     *             provider_sequence: Long (Optional)
-     *             provider_status_code: Integer (Optional)
-     *             provider_sub_code: Integer (Optional)
-     *         }
-     *     ]
-     *     events_truncated: boolean (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the voice agent that owns the active call. - * @param callId The service-generated call identifier. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response} on - * successful completion of {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> endTelephonyCallWithResponse(String agentName, String callId, - RequestOptions requestOptions) { - return this.serviceClient.endTelephonyCallWithResponseAsync(agentName, callId, requestOptions); - } - - /** - * Get agent telephony transfer targets - * - * Returns all transfer targets configured for the voice agent named in the path. - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     transfer_targets (Required): [
-     *          (Required){
-     *             name: String (Required)
-     *             description: String (Required)
-     *             destination (Required): {
-     *                 kind: String(pstn/teams/sip) (Required)
-     *             }
-     *         }
-     *     ]
-     * }
-     * }
-     * 
- * - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer - * targets.
- * - * @param agentName The name of the voice agent whose transfer targets are retrieved. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return agent telephony transfer targets - * - * Returns all transfer targets configured for the voice agent named in the path along with {@link Response} on - * successful completion of {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> getTelephonyTransferTargetsWithResponse(String agentName, - RequestOptions requestOptions) { - return this.serviceClient.getTelephonyTransferTargetsWithResponseAsync(agentName, requestOptions); - } - - /** - * Replace agent telephony transfer targets - * - * Replaces all transfer targets configured for the voice agent named in the path. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     transfer_targets (Required): [
-     *          (Required){
-     *             name: String (Required)
-     *             description: String (Required)
-     *             destination (Required): {
-     *                 kind: String(pstn/teams/sip) (Required)
-     *             }
-     *         }
-     *     ]
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     transfer_targets (Required): [
-     *          (Required){
-     *             name: String (Required)
-     *             description: String (Required)
-     *             destination (Required): {
-     *                 kind: String(pstn/teams/sip) (Required)
-     *             }
-     *         }
-     *     ]
-     * }
-     * }
-     * 
- * - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer - * targets.
- * - * @param agentName The name of the voice agent whose transfer targets are replaced. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @param replaceTelephonyTransferTargetsRequest The replaceTelephonyTransferTargetsRequest parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the telephony transfer targets configured for one voice agent along with {@link Response} on successful - * completion of {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> replaceTelephonyTransferTargetsWithResponse(String agentName, String ifMatch, - BinaryData replaceTelephonyTransferTargetsRequest, RequestOptions requestOptions) { - return this.serviceClient.replaceTelephonyTransferTargetsWithResponseAsync(agentName, ifMatch, - replaceTelephonyTransferTargetsRequest, requestOptions); - } - - /** - * Create an agent telephony binding - * - * Creates a telephony binding for the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the binding. - * @param body The provider-specific binding to create. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a telephony binding owned by a voice agent on successful completion of {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono createTelephonyBinding(String agentName, CreateTelephonyBindingRequest body) { - // Generated convenience method for createTelephonyBindingWithResponse - RequestOptions requestOptions = new RequestOptions(); - return createTelephonyBindingWithResponse(agentName, BinaryData.fromObject(body), requestOptions) - .flatMap(FluxUtil::toMono) - .map(protocolMethodData -> protocolMethodData.toObject(TelephonyBinding.class)); - } - - /** - * List agent telephony bindings - * - * Returns the telephony bindings owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent whose bindings are listed. - * @param provider Filters bindings by provider. - * @param status Filters bindings by lifecycle status. - * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the - * default is 20. - * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` - * for descending order. - * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list. - * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. - */ - @Generated - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedFlux listTelephonyBindings(String agentName, TelephonyProvider provider, - TelephonyBindingStatus status, Integer limit, PageOrder order, String after, String before) { - // Generated convenience method for listTelephonyBindings - RequestOptions requestOptions = new RequestOptions(); - if (provider != null) { - requestOptions.addQueryParam("provider", provider.toString(), false); - } - if (status != null) { - requestOptions.addQueryParam("status", status.toString(), false); - } - if (limit != null) { - requestOptions.addQueryParam("limit", String.valueOf(limit), false); - } - if (order != null) { - requestOptions.addQueryParam("order", order.toString(), false); - } - if (after != null) { - requestOptions.addQueryParam("after", after, false); - } - if (before != null) { - requestOptions.addQueryParam("before", before, false); - } - PagedFlux pagedFluxResponse = listTelephonyBindings(agentName, requestOptions); - return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { - Flux> flux = (continuationTokenParam == null) - ? pagedFluxResponse.byPage().take(1) - : pagedFluxResponse.byPage(continuationTokenParam).take(1); - return flux - .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), - pagedResponse.getStatusCode(), pagedResponse.getHeaders(), - pagedResponse.getValue() - .stream() - .map(protocolMethodData -> protocolMethodData.toObject(TelephonyBindingListItem.class)) - .collect(Collectors.toList()), - pagedResponse.getContinuationToken(), null)); - }); - } - - /** - * List agent telephony bindings - * - * Returns the telephony bindings owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent whose bindings are listed. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. - */ - @Generated - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedFlux listTelephonyBindings(String agentName) { - // Generated convenience method for listTelephonyBindings - RequestOptions requestOptions = new RequestOptions(); - PagedFlux pagedFluxResponse = listTelephonyBindings(agentName, requestOptions); - return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { - Flux> flux = (continuationTokenParam == null) - ? pagedFluxResponse.byPage().take(1) - : pagedFluxResponse.byPage(continuationTokenParam).take(1); - return flux - .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), - pagedResponse.getStatusCode(), pagedResponse.getHeaders(), - pagedResponse.getValue() - .stream() - .map(protocolMethodData -> protocolMethodData.toObject(TelephonyBindingListItem.class)) - .collect(Collectors.toList()), - pagedResponse.getContinuationToken(), null)); - }); - } - - /** - * Get an agent telephony binding - * - * Retrieves a telephony binding owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an agent telephony binding - * - * Retrieves a telephony binding owned by the voice agent named in the path on successful completion of - * {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono getTelephonyBinding(String agentName, String bindingId) { - // Generated convenience method for getTelephonyBindingWithResponse - RequestOptions requestOptions = new RequestOptions(); - return getTelephonyBindingWithResponse(agentName, bindingId, requestOptions).flatMap(FluxUtil::toMono) - .map(protocolMethodData -> protocolMethodData.toObject(TelephonyBinding.class)); - } - - /** - * Update an agent telephony binding - * - * Updates a telephony binding owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @param body The binding properties to update. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a telephony binding owned by a voice agent on successful completion of {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono updateTelephonyBinding(String agentName, String bindingId, String ifMatch, - UpdateTelephonyBindingRequest body) { - // Generated convenience method for updateTelephonyBindingWithResponse - RequestOptions requestOptions = new RequestOptions(); - JsonMergePatchHelper.getUpdateTelephonyBindingRequestAccessor().prepareModelForJsonMergePatch(body, true); - BinaryData bodyInBinaryData = BinaryData.fromObject(body); - // BinaryData.fromObject() will not fire serialization, use getLength() to fire serialization. - bodyInBinaryData.getLength(); - JsonMergePatchHelper.getUpdateTelephonyBindingRequestAccessor().prepareModelForJsonMergePatch(body, false); - return updateTelephonyBindingWithResponse(agentName, bindingId, ifMatch, bodyInBinaryData, requestOptions) - .flatMap(FluxUtil::toMono) - .map(protocolMethodData -> protocolMethodData.toObject(TelephonyBinding.class)); - } - - /** - * Delete an agent telephony binding - * - * Deletes a telephony binding owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return A {@link Mono} that completes when a successful response is received. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono deleteTelephonyBinding(String agentName, String bindingId, String ifMatch) { - // Generated convenience method for deleteTelephonyBindingWithResponse - RequestOptions requestOptions = new RequestOptions(); - return deleteTelephonyBindingWithResponse(agentName, bindingId, ifMatch, requestOptions) - .flatMap(FluxUtil::toMono); - } - - /** - * List agent telephony calls - * - * Returns the durable inbound call history for the voice agent named in the path. - * - * @param agentName The name of the voice agent whose calls are listed. - * @param provider Filters calls by provider. - * @param status Filters calls by lifecycle status. - * @param startedAfter Includes calls that started at or after this Unix timestamp in seconds. - * @param startedBefore Includes calls that started at or before this Unix timestamp in seconds. - * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the - * default is 20. - * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` - * for descending order. - * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list. - * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. - */ - @Generated - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedFlux listTelephonyCalls(String agentName, TelephonyProvider provider, - TelephonyCallStatus status, OffsetDateTime startedAfter, OffsetDateTime startedBefore, Integer limit, - PageOrder order, String after, String before) { - // Generated convenience method for listTelephonyCalls - RequestOptions requestOptions = new RequestOptions(); - if (provider != null) { - requestOptions.addQueryParam("provider", provider.toString(), false); - } - if (status != null) { - requestOptions.addQueryParam("status", status.toString(), false); - } - if (startedAfter != null) { - requestOptions.addQueryParam("started_after", String.valueOf(startedAfter.toEpochSecond()), false); - } - if (startedBefore != null) { - requestOptions.addQueryParam("started_before", String.valueOf(startedBefore.toEpochSecond()), false); - } - if (limit != null) { - requestOptions.addQueryParam("limit", String.valueOf(limit), false); - } - if (order != null) { - requestOptions.addQueryParam("order", order.toString(), false); - } - if (after != null) { - requestOptions.addQueryParam("after", after, false); - } - if (before != null) { - requestOptions.addQueryParam("before", before, false); - } - PagedFlux pagedFluxResponse = listTelephonyCalls(agentName, requestOptions); - return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { - Flux> flux = (continuationTokenParam == null) - ? pagedFluxResponse.byPage().take(1) - : pagedFluxResponse.byPage(continuationTokenParam).take(1); - return flux - .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), - pagedResponse.getStatusCode(), pagedResponse.getHeaders(), - pagedResponse.getValue() - .stream() - .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallSummary.class)) - .collect(Collectors.toList()), - pagedResponse.getContinuationToken(), null)); - }); - } - - /** - * List agent telephony calls - * - * Returns the durable inbound call history for the voice agent named in the path. - * - * @param agentName The name of the voice agent whose calls are listed. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. - */ - @Generated - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedFlux listTelephonyCalls(String agentName) { - // Generated convenience method for listTelephonyCalls - RequestOptions requestOptions = new RequestOptions(); - PagedFlux pagedFluxResponse = listTelephonyCalls(agentName, requestOptions); - return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { - Flux> flux = (continuationTokenParam == null) - ? pagedFluxResponse.byPage().take(1) - : pagedFluxResponse.byPage(continuationTokenParam).take(1); - return flux - .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), - pagedResponse.getStatusCode(), pagedResponse.getHeaders(), - pagedResponse.getValue() - .stream() - .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallSummary.class)) - .collect(Collectors.toList()), - pagedResponse.getContinuationToken(), null)); - }); - } - - /** - * Get an agent telephony call - * - * Retrieves a durable inbound call record owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the call record. - * @param callId The service-generated call identifier. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an agent telephony call - * - * Retrieves a durable inbound call record owned by the voice agent named in the path on successful completion of - * {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono getTelephonyCall(String agentName, String callId) { - // Generated convenience method for getTelephonyCallWithResponse - RequestOptions requestOptions = new RequestOptions(); - return getTelephonyCallWithResponse(agentName, callId, requestOptions).flatMap(FluxUtil::toMono) - .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallRecord.class)); - } - - /** - * Transfer an active agent telephony call - * - * Transfers an active inbound call to a configured target for the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the active call. - * @param callId The service-generated call identifier. - * @param target The name of a transfer target configured for the voice agent. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return detailed diagnostics for a durable inbound call to a voice agent on successful completion of - * {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono transferTelephonyCall(String agentName, String callId, String target) { - // Generated convenience method for transferTelephonyCallWithResponse - RequestOptions requestOptions = new RequestOptions(); - TransferTelephonyCallRequest transferTelephonyCallRequestObj = new TransferTelephonyCallRequest(target); - BinaryData transferTelephonyCallRequest = BinaryData.fromObject(transferTelephonyCallRequestObj); - return transferTelephonyCallWithResponse(agentName, callId, transferTelephonyCallRequest, requestOptions) - .flatMap(FluxUtil::toMono) - .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallRecord.class)); - } - - /** - * End an active agent telephony call - * - * Ends an active inbound call owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the active call. - * @param callId The service-generated call identifier. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return detailed diagnostics for a durable inbound call to a voice agent on successful completion of - * {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono endTelephonyCall(String agentName, String callId) { - // Generated convenience method for endTelephonyCallWithResponse - RequestOptions requestOptions = new RequestOptions(); - return endTelephonyCallWithResponse(agentName, callId, requestOptions).flatMap(FluxUtil::toMono) - .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallRecord.class)); - } - - /** - * Get agent telephony transfer targets - * - * Returns all transfer targets configured for the voice agent named in the path. - * - * @param agentName The name of the voice agent whose transfer targets are retrieved. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return agent telephony transfer targets - * - * Returns all transfer targets configured for the voice agent named in the path on successful completion of - * {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono getTelephonyTransferTargets(String agentName) { - // Generated convenience method for getTelephonyTransferTargetsWithResponse - RequestOptions requestOptions = new RequestOptions(); - return getTelephonyTransferTargetsWithResponse(agentName, requestOptions).flatMap(FluxUtil::toMono) - .map(protocolMethodData -> protocolMethodData.toObject(TelephonyTransferTargets.class)); - } - - /** - * Replace agent telephony transfer targets - * - * Replaces all transfer targets configured for the voice agent named in the path. - * - * @param agentName The name of the voice agent whose transfer targets are replaced. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @param transferTargets The complete set of destinations to which the voice agent may transfer calls. An empty - * array clears all targets when replacing the configuration. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the telephony transfer targets configured for one voice agent on successful completion of {@link Mono}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono replaceTelephonyTransferTargets(String agentName, String ifMatch, - List transferTargets) { - // Generated convenience method for replaceTelephonyTransferTargetsWithResponse - RequestOptions requestOptions = new RequestOptions(); - ReplaceTelephonyTransferTargetsRequest replaceTelephonyTransferTargetsRequestObj - = new ReplaceTelephonyTransferTargetsRequest(transferTargets); - BinaryData replaceTelephonyTransferTargetsRequest - = BinaryData.fromObject(replaceTelephonyTransferTargetsRequestObj); - return replaceTelephonyTransferTargetsWithResponse(agentName, ifMatch, replaceTelephonyTransferTargetsRequest, - requestOptions).flatMap(FluxUtil::toMono) - .map(protocolMethodData -> protocolMethodData.toObject(TelephonyTransferTargets.class)); - } - /** * Create a new code-based agent * @@ -5972,6 +4622,7 @@ public Mono replaceTelephonyTransferTargets(String age * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -6119,6 +4770,7 @@ Mono> createAgentFromCodeWithResponseInternal(String agentN * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java index f6a8f68188408..8c4275ee36e3d 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClient.java @@ -16,8 +16,6 @@ import com.azure.ai.agents.implementation.models.CreateSessionRequest; import com.azure.ai.agents.implementation.models.GetMicrosoft365AppPackageRequest; import com.azure.ai.agents.implementation.models.PublishAgentToMicrosoft365Request; -import com.azure.ai.agents.implementation.models.ReplaceTelephonyTransferTargetsRequest; -import com.azure.ai.agents.implementation.models.TransferTelephonyCallRequest; import com.azure.ai.agents.implementation.models.UpdateAgentFromManifestRequest; import com.azure.ai.agents.implementation.models.UpdateAgentRequest; import com.azure.ai.agents.implementation.utils.FileUtils; @@ -31,7 +29,6 @@ import com.azure.ai.agents.models.CreateAgentVersionFromCodeContent; import com.azure.ai.agents.models.CreateAgentVersionFromCodeMetadata; import com.azure.ai.agents.models.CreateAgentVersionInput; -import com.azure.ai.agents.models.CreateTelephonyBindingRequest; import com.azure.ai.agents.models.GetMicrosoft365AppPackageOptions; import com.azure.ai.agents.models.HostedAgentDefinition; import com.azure.ai.agents.models.Microsoft365PublishDefaults; @@ -41,17 +38,7 @@ import com.azure.ai.agents.models.SessionDirectoryEntry; import com.azure.ai.agents.models.SessionFileWriteResult; import com.azure.ai.agents.models.SessionLogEvent; -import com.azure.ai.agents.models.TelephonyBinding; -import com.azure.ai.agents.models.TelephonyBindingListItem; -import com.azure.ai.agents.models.TelephonyBindingStatus; -import com.azure.ai.agents.models.TelephonyCallRecord; -import com.azure.ai.agents.models.TelephonyCallStatus; -import com.azure.ai.agents.models.TelephonyCallSummary; -import com.azure.ai.agents.models.TelephonyProvider; -import com.azure.ai.agents.models.TelephonyTransferTarget; -import com.azure.ai.agents.models.TelephonyTransferTargets; import com.azure.ai.agents.models.UpdateAgentDetailsOptions; -import com.azure.ai.agents.models.UpdateTelephonyBindingRequest; import com.azure.ai.agents.models.VersionIndicator; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; @@ -71,8 +58,6 @@ import com.openai.models.conversations.Conversation; import java.io.IOException; import java.nio.file.Paths; -import java.time.OffsetDateTime; -import java.util.List; import java.util.Map; /** @@ -97,6 +82,7 @@ public final class AgentsClient { * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -655,6 +641,7 @@ public PagedIterable listAgentVersions(String agentName) { * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -830,6 +817,7 @@ Response createAgentWithResponse(BinaryData createAgentRequest, Requ * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -1023,6 +1011,7 @@ AgentDetails updateAgent(String agentName, AgentDefinition definition) { * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -1177,6 +1166,7 @@ Response createAgentFromManifestWithResponse(BinaryData createAgentF * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -1753,6 +1743,7 @@ public PagedIterable listAgents(AgentKind kind, Integer limit, Pag * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -2473,6 +2464,7 @@ AgentDetails updateAgent(String agentName, AgentDefinition definition, Map listAgentVersions(String agentName, In .mapPage(bodyItemValue -> bodyItemValue.toObject(AgentVersionDetails.class)); } - /** - * Generate an agent - * - * Generates and creates an agent from kind-specific high-level inputs. - * The generated definition remains fully editable through the standard agent versioning operations. - *

Request Body Schema

- * - *
-     * {@code
-     * BinaryData
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     state: String(enabled/disabled) (Required)
-     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
-     *     versions (Required): {
-     *         latest (Required): {
-     *             metadata (Required): {
-     *                 String: String (Required)
-     *             }
-     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *             id: String (Required)
-     *             name: String (Required)
-     *             version: String (Required)
-     *             description: String (Optional)
-     *             created_at: long (Required)
-     *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *                 rai_config (Optional): {
-     *                     rai_policy_name: String (Required)
-     *                     invocations_moderation (Optional): {
-     *                         input_content_type: String(json/text) (Optional)
-     *                         output_content_type: String(json/text) (Optional)
-     *                         response_mode: String(non_streaming/streaming/both) (Required)
-     *                         input_paths (Optional): [
-     *                             String (Optional)
-     *                         ]
-     *                         output_paths (Optional): [
-     *                             String (Optional)
-     *                         ]
-     *                         stream_selectors (Optional): [
-     *                              (Optional){
-     *                                 event_type: String (Required)
-     *                                 text_field: String (Optional)
-     *                             }
-     *                         ]
-     *                     }
-     *                 }
-     *             }
-     *             draft: Boolean (Optional)
-     *             status: String(creating/active/failed/deleting/deleted) (Optional)
-     *             instance_identity (Optional): {
-     *                 principal_id: String (Required)
-     *                 client_id: String (Required)
-     *                 status: String(active/disabled) (Optional)
-     *             }
-     *             blueprint (Optional): (recursive schema, see blueprint above)
-     *             blueprint_reference (Optional): {
-     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
-     *             }
-     *             agent_guid: String (Optional)
-     *         }
-     *     }
-     *     agent_endpoint (Optional): {
-     *         version_selector (Optional): {
-     *             version_selection_rules (Optional, Required on create): [
-     *                  (Optional, Required on create){
-     *                     type: String(FixedRatio) (Required)
-     *                     agent_version: String (Optional, Required on create)
-     *                 }
-     *             ]
-     *         }
-     *         protocol_configuration (Optional): {
-     *             activity (Optional): {
-     *                 enable_m365_public_endpoint: Boolean (Optional)
-     *                 access_boundaries (Optional): [
-     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
-     *                 ]
-     *             }
-     *             responses (Optional): {
-     *             }
-     *             a2a (Optional): {
-     *             }
-     *             mcp (Optional): {
-     *             }
-     *             invocations (Optional): {
-     *             }
-     *             invocations_ws (Optional): {
-     *             }
-     *         }
-     *         authorization_schemes (Optional): [
-     *              (Optional){
-     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
-     *             }
-     *         ]
-     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
-     *     }
-     *     digital_worker_type: String(m365) (Optional)
-     *     instance_identity (Optional): (recursive schema, see instance_identity above)
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): (recursive schema, see blueprint_reference above)
-     *     agent_card (Optional): {
-     *         version: String (Optional, Required on create)
-     *         description: String (Optional)
-     *         skills (Optional, Required on create): [
-     *              (Optional, Required on create){
-     *                 id: String (Optional, Required on create)
-     *                 name: String (Optional, Required on create)
-     *                 description: String (Optional)
-     *                 tags (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 examples (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *             }
-     *         ]
-     *     }
-     * }
-     * }
-     * 
- * - * @param body The kind-specific inputs for generating and creating an agent. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Response generateAgentWithResponse(BinaryData body, RequestOptions requestOptions) { - return this.serviceClient.generateAgentWithResponse(body, requestOptions); - } - /** * Publish an agent to Microsoft 365 * @@ -4441,29 +4289,6 @@ public Response getMicrosoft365PublishDefaultsWithResponse(String ag return this.serviceClient.getMicrosoft365PublishDefaultsWithResponse(agentName, requestOptions); } - /** - * Generate an agent - * - * Generates and creates an agent from kind-specific high-level inputs. - * The generated definition remains fully editable through the standard agent versioning operations. - * - * @param body The kind-specific inputs for generating and creating an agent. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the response. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public AgentDetails generateAgent(BinaryData body) { - // Generated convenience method for generateAgentWithResponse - RequestOptions requestOptions = new RequestOptions(); - return generateAgentWithResponse(body, requestOptions).getValue().toObject(AgentDetails.class); - } - /** * Publish an agent to Microsoft 365 * @@ -4611,1114 +4436,6 @@ public Microsoft365PublishDefaults getMicrosoft365PublishDefaults(String agentNa .toObject(Microsoft365PublishDefaults.class); } - /** - * Create an agent telephony binding - * - * Creates a telephony binding for the voice agent named in the path. - *

Header Parameters

- * - * - * - * - * - *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as - * HTTP-date
- * You can add these to a request with {@link RequestOptions#addHeader} - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     * }
-     * }
-     * 
- * - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the - * binding.
- * - * @param agentName The name of the voice agent that owns the binding. - * @param body The provider-specific binding to create. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a telephony binding owned by a voice agent along with {@link Response}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Response createTelephonyBindingWithResponse(String agentName, BinaryData body, - RequestOptions requestOptions) { - return this.serviceClient.createTelephonyBindingWithResponse(agentName, body, requestOptions); - } - - /** - * List agent telephony bindings - * - * Returns the telephony bindings owned by the voice agent named in the path. - *

Query Parameters

- * - * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: - * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", - * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     *     etag: String (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the voice agent whose bindings are listed. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. - */ - @Generated - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listTelephonyBindings(String agentName, RequestOptions requestOptions) { - return this.serviceClient.listTelephonyBindings(agentName, requestOptions); - } - - /** - * Get an agent telephony binding - * - * Retrieves a telephony binding owned by the voice agent named in the path. - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     * }
-     * }
-     * 
- * - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the - * binding.
- * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return an agent telephony binding - * - * Retrieves a telephony binding owned by the voice agent named in the path along with {@link Response}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Response getTelephonyBindingWithResponse(String agentName, String bindingId, - RequestOptions requestOptions) { - return this.serviceClient.getTelephonyBindingWithResponse(agentName, bindingId, requestOptions); - } - - /** - * Update an agent telephony binding - * - * Updates a telephony binding owned by the voice agent named in the path. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     status: String(active/suspended) (Optional)
-     *     label: String (Optional)
-     *     connection: String (Optional)
-     *     phone_number: String (Optional)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     * }
-     * }
-     * 
- * - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the - * binding.
- * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @param body The binding properties to update. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a telephony binding owned by a voice agent along with {@link Response}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Response updateTelephonyBindingWithResponse(String agentName, String bindingId, String ifMatch, - BinaryData body, RequestOptions requestOptions) { - return this.serviceClient.updateTelephonyBindingWithResponse(agentName, bindingId, ifMatch, body, - requestOptions); - } - - /** - * Delete an agent telephony binding - * - * Deletes a telephony binding owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the {@link Response}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Response deleteTelephonyBindingWithResponse(String agentName, String bindingId, String ifMatch, - RequestOptions requestOptions) { - return this.serviceClient.deleteTelephonyBindingWithResponse(agentName, bindingId, ifMatch, requestOptions); - } - - /** - * List agent telephony calls - * - * Returns the durable inbound call history for the voice agent named in the path. - *

Query Parameters

- * - * - * - * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: - * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: - * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix - * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this - * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the voice agent whose calls are listed. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. - */ - @Generated - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listTelephonyCalls(String agentName, RequestOptions requestOptions) { - return this.serviceClient.listTelephonyCalls(agentName, requestOptions); - } - - /** - * Get an agent telephony call - * - * Retrieves a durable inbound call record owned by the voice agent named in the path. - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
-     *     timing (Required): {
-     *         received_at: Long (Optional)
-     *         validated_at: Long (Optional)
-     *         admitted_at: Long (Optional)
-     *         answer_requested_at: Long (Optional)
-     *         answered_at: Long (Optional)
-     *         media_connected_at: Long (Optional)
-     *         agent_session_ready_at: Long (Optional)
-     *         first_caller_audio_at: Long (Optional)
-     *         first_agent_audio_at: Long (Optional)
-     *         ended_at: Long (Optional)
-     *         duration_basis: String(answered/received) (Optional)
-     *         timestamp_source: String(provider/gateway/derived) (Required)
-     *     }
-     *     trace (Optional): {
-     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
-     *         trace_id: String (Optional)
-     *         root_span_id: String (Optional)
-     *         conversation_id: String (Optional)
-     *         mode: String(live/post_call) (Optional)
-     *     }
-     *     events (Required): [
-     *          (Required){
-     *             sequence: long (Required)
-     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
-     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
-     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
-     *             observed_at: long (Required)
-     *             occurred_at: Long (Optional)
-     *             timestamp_source: String(provider/gateway/derived) (Required)
-     *             reason: String (Optional)
-     *             provider_event_id: String (Optional)
-     *             provider_sequence: Long (Optional)
-     *             provider_status_code: Integer (Optional)
-     *             provider_sub_code: Integer (Optional)
-     *         }
-     *     ]
-     *     events_truncated: boolean (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the voice agent that owns the call record. - * @param callId The service-generated call identifier. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return an agent telephony call - * - * Retrieves a durable inbound call record owned by the voice agent named in the path along with {@link Response}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Response getTelephonyCallWithResponse(String agentName, String callId, - RequestOptions requestOptions) { - return this.serviceClient.getTelephonyCallWithResponse(agentName, callId, requestOptions); - } - - /** - * Transfer an active agent telephony call - * - * Transfers an active inbound call to a configured target for the voice agent named in the path. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     target: String (Required)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
-     *     timing (Required): {
-     *         received_at: Long (Optional)
-     *         validated_at: Long (Optional)
-     *         admitted_at: Long (Optional)
-     *         answer_requested_at: Long (Optional)
-     *         answered_at: Long (Optional)
-     *         media_connected_at: Long (Optional)
-     *         agent_session_ready_at: Long (Optional)
-     *         first_caller_audio_at: Long (Optional)
-     *         first_agent_audio_at: Long (Optional)
-     *         ended_at: Long (Optional)
-     *         duration_basis: String(answered/received) (Optional)
-     *         timestamp_source: String(provider/gateway/derived) (Required)
-     *     }
-     *     trace (Optional): {
-     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
-     *         trace_id: String (Optional)
-     *         root_span_id: String (Optional)
-     *         conversation_id: String (Optional)
-     *         mode: String(live/post_call) (Optional)
-     *     }
-     *     events (Required): [
-     *          (Required){
-     *             sequence: long (Required)
-     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
-     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
-     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
-     *             observed_at: long (Required)
-     *             occurred_at: Long (Optional)
-     *             timestamp_source: String(provider/gateway/derived) (Required)
-     *             reason: String (Optional)
-     *             provider_event_id: String (Optional)
-     *             provider_sequence: Long (Optional)
-     *             provider_status_code: Integer (Optional)
-     *             provider_sub_code: Integer (Optional)
-     *         }
-     *     ]
-     *     events_truncated: boolean (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the voice agent that owns the active call. - * @param callId The service-generated call identifier. - * @param transferTelephonyCallRequest The transferTelephonyCallRequest parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Response transferTelephonyCallWithResponse(String agentName, String callId, - BinaryData transferTelephonyCallRequest, RequestOptions requestOptions) { - return this.serviceClient.transferTelephonyCallWithResponse(agentName, callId, transferTelephonyCallRequest, - requestOptions); - } - - /** - * End an active agent telephony call - * - * Ends an active inbound call owned by the voice agent named in the path. - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
-     *     timing (Required): {
-     *         received_at: Long (Optional)
-     *         validated_at: Long (Optional)
-     *         admitted_at: Long (Optional)
-     *         answer_requested_at: Long (Optional)
-     *         answered_at: Long (Optional)
-     *         media_connected_at: Long (Optional)
-     *         agent_session_ready_at: Long (Optional)
-     *         first_caller_audio_at: Long (Optional)
-     *         first_agent_audio_at: Long (Optional)
-     *         ended_at: Long (Optional)
-     *         duration_basis: String(answered/received) (Optional)
-     *         timestamp_source: String(provider/gateway/derived) (Required)
-     *     }
-     *     trace (Optional): {
-     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
-     *         trace_id: String (Optional)
-     *         root_span_id: String (Optional)
-     *         conversation_id: String (Optional)
-     *         mode: String(live/post_call) (Optional)
-     *     }
-     *     events (Required): [
-     *          (Required){
-     *             sequence: long (Required)
-     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
-     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
-     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
-     *             observed_at: long (Required)
-     *             occurred_at: Long (Optional)
-     *             timestamp_source: String(provider/gateway/derived) (Required)
-     *             reason: String (Optional)
-     *             provider_event_id: String (Optional)
-     *             provider_sequence: Long (Optional)
-     *             provider_status_code: Integer (Optional)
-     *             provider_sub_code: Integer (Optional)
-     *         }
-     *     ]
-     *     events_truncated: boolean (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the voice agent that owns the active call. - * @param callId The service-generated call identifier. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Response endTelephonyCallWithResponse(String agentName, String callId, - RequestOptions requestOptions) { - return this.serviceClient.endTelephonyCallWithResponse(agentName, callId, requestOptions); - } - - /** - * Get agent telephony transfer targets - * - * Returns all transfer targets configured for the voice agent named in the path. - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     transfer_targets (Required): [
-     *          (Required){
-     *             name: String (Required)
-     *             description: String (Required)
-     *             destination (Required): {
-     *                 kind: String(pstn/teams/sip) (Required)
-     *             }
-     *         }
-     *     ]
-     * }
-     * }
-     * 
- * - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer - * targets.
- * - * @param agentName The name of the voice agent whose transfer targets are retrieved. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return agent telephony transfer targets - * - * Returns all transfer targets configured for the voice agent named in the path along with {@link Response}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Response getTelephonyTransferTargetsWithResponse(String agentName, - RequestOptions requestOptions) { - return this.serviceClient.getTelephonyTransferTargetsWithResponse(agentName, requestOptions); - } - - /** - * Replace agent telephony transfer targets - * - * Replaces all transfer targets configured for the voice agent named in the path. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     transfer_targets (Required): [
-     *          (Required){
-     *             name: String (Required)
-     *             description: String (Required)
-     *             destination (Required): {
-     *                 kind: String(pstn/teams/sip) (Required)
-     *             }
-     *         }
-     *     ]
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     transfer_targets (Required): [
-     *          (Required){
-     *             name: String (Required)
-     *             description: String (Required)
-     *             destination (Required): {
-     *                 kind: String(pstn/teams/sip) (Required)
-     *             }
-     *         }
-     *     ]
-     * }
-     * }
-     * 
- * - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer - * targets.
- * - * @param agentName The name of the voice agent whose transfer targets are replaced. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @param replaceTelephonyTransferTargetsRequest The replaceTelephonyTransferTargetsRequest parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the telephony transfer targets configured for one voice agent along with {@link Response}. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public Response replaceTelephonyTransferTargetsWithResponse(String agentName, String ifMatch, - BinaryData replaceTelephonyTransferTargetsRequest, RequestOptions requestOptions) { - return this.serviceClient.replaceTelephonyTransferTargetsWithResponse(agentName, ifMatch, - replaceTelephonyTransferTargetsRequest, requestOptions); - } - - /** - * Create an agent telephony binding - * - * Creates a telephony binding for the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the binding. - * @param body The provider-specific binding to create. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a telephony binding owned by a voice agent. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public TelephonyBinding createTelephonyBinding(String agentName, CreateTelephonyBindingRequest body) { - // Generated convenience method for createTelephonyBindingWithResponse - RequestOptions requestOptions = new RequestOptions(); - return createTelephonyBindingWithResponse(agentName, BinaryData.fromObject(body), requestOptions).getValue() - .toObject(TelephonyBinding.class); - } - - /** - * List agent telephony bindings - * - * Returns the telephony bindings owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent whose bindings are listed. - * @param provider Filters bindings by provider. - * @param status Filters bindings by lifecycle status. - * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the - * default is 20. - * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` - * for descending order. - * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list. - * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. - */ - @Generated - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listTelephonyBindings(String agentName, TelephonyProvider provider, - TelephonyBindingStatus status, Integer limit, PageOrder order, String after, String before) { - // Generated convenience method for listTelephonyBindings - RequestOptions requestOptions = new RequestOptions(); - if (provider != null) { - requestOptions.addQueryParam("provider", provider.toString(), false); - } - if (status != null) { - requestOptions.addQueryParam("status", status.toString(), false); - } - if (limit != null) { - requestOptions.addQueryParam("limit", String.valueOf(limit), false); - } - if (order != null) { - requestOptions.addQueryParam("order", order.toString(), false); - } - if (after != null) { - requestOptions.addQueryParam("after", after, false); - } - if (before != null) { - requestOptions.addQueryParam("before", before, false); - } - return serviceClient.listTelephonyBindings(agentName, requestOptions) - .mapPage(bodyItemValue -> bodyItemValue.toObject(TelephonyBindingListItem.class)); - } - - /** - * List agent telephony bindings - * - * Returns the telephony bindings owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent whose bindings are listed. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. - */ - @Generated - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listTelephonyBindings(String agentName) { - // Generated convenience method for listTelephonyBindings - RequestOptions requestOptions = new RequestOptions(); - return serviceClient.listTelephonyBindings(agentName, requestOptions) - .mapPage(bodyItemValue -> bodyItemValue.toObject(TelephonyBindingListItem.class)); - } - - /** - * Get an agent telephony binding - * - * Retrieves a telephony binding owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an agent telephony binding - * - * Retrieves a telephony binding owned by the voice agent named in the path. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public TelephonyBinding getTelephonyBinding(String agentName, String bindingId) { - // Generated convenience method for getTelephonyBindingWithResponse - RequestOptions requestOptions = new RequestOptions(); - return getTelephonyBindingWithResponse(agentName, bindingId, requestOptions).getValue() - .toObject(TelephonyBinding.class); - } - - /** - * Update an agent telephony binding - * - * Updates a telephony binding owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @param body The binding properties to update. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return a telephony binding owned by a voice agent. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public TelephonyBinding updateTelephonyBinding(String agentName, String bindingId, String ifMatch, - UpdateTelephonyBindingRequest body) { - // Generated convenience method for updateTelephonyBindingWithResponse - RequestOptions requestOptions = new RequestOptions(); - JsonMergePatchHelper.getUpdateTelephonyBindingRequestAccessor().prepareModelForJsonMergePatch(body, true); - BinaryData bodyInBinaryData = BinaryData.fromObject(body); - // BinaryData.fromObject() will not fire serialization, use getLength() to fire serialization. - bodyInBinaryData.getLength(); - JsonMergePatchHelper.getUpdateTelephonyBindingRequestAccessor().prepareModelForJsonMergePatch(body, false); - return updateTelephonyBindingWithResponse(agentName, bindingId, ifMatch, bodyInBinaryData, requestOptions) - .getValue() - .toObject(TelephonyBinding.class); - } - - /** - * Delete an agent telephony binding - * - * Deletes a telephony binding owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public void deleteTelephonyBinding(String agentName, String bindingId, String ifMatch) { - // Generated convenience method for deleteTelephonyBindingWithResponse - RequestOptions requestOptions = new RequestOptions(); - deleteTelephonyBindingWithResponse(agentName, bindingId, ifMatch, requestOptions).getValue(); - } - - /** - * List agent telephony calls - * - * Returns the durable inbound call history for the voice agent named in the path. - * - * @param agentName The name of the voice agent whose calls are listed. - * @param provider Filters calls by provider. - * @param status Filters calls by lifecycle status. - * @param startedAfter Includes calls that started at or after this Unix timestamp in seconds. - * @param startedBefore Includes calls that started at or before this Unix timestamp in seconds. - * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the - * default is 20. - * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` - * for descending order. - * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list. - * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. - */ - @Generated - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listTelephonyCalls(String agentName, TelephonyProvider provider, - TelephonyCallStatus status, OffsetDateTime startedAfter, OffsetDateTime startedBefore, Integer limit, - PageOrder order, String after, String before) { - // Generated convenience method for listTelephonyCalls - RequestOptions requestOptions = new RequestOptions(); - if (provider != null) { - requestOptions.addQueryParam("provider", provider.toString(), false); - } - if (status != null) { - requestOptions.addQueryParam("status", status.toString(), false); - } - if (startedAfter != null) { - requestOptions.addQueryParam("started_after", String.valueOf(startedAfter.toEpochSecond()), false); - } - if (startedBefore != null) { - requestOptions.addQueryParam("started_before", String.valueOf(startedBefore.toEpochSecond()), false); - } - if (limit != null) { - requestOptions.addQueryParam("limit", String.valueOf(limit), false); - } - if (order != null) { - requestOptions.addQueryParam("order", order.toString(), false); - } - if (after != null) { - requestOptions.addQueryParam("after", after, false); - } - if (before != null) { - requestOptions.addQueryParam("before", before, false); - } - return serviceClient.listTelephonyCalls(agentName, requestOptions) - .mapPage(bodyItemValue -> bodyItemValue.toObject(TelephonyCallSummary.class)); - } - - /** - * List agent telephony calls - * - * Returns the durable inbound call history for the voice agent named in the path. - * - * @param agentName The name of the voice agent whose calls are listed. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. - */ - @Generated - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listTelephonyCalls(String agentName) { - // Generated convenience method for listTelephonyCalls - RequestOptions requestOptions = new RequestOptions(); - return serviceClient.listTelephonyCalls(agentName, requestOptions) - .mapPage(bodyItemValue -> bodyItemValue.toObject(TelephonyCallSummary.class)); - } - - /** - * Get an agent telephony call - * - * Retrieves a durable inbound call record owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the call record. - * @param callId The service-generated call identifier. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return an agent telephony call - * - * Retrieves a durable inbound call record owned by the voice agent named in the path. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public TelephonyCallRecord getTelephonyCall(String agentName, String callId) { - // Generated convenience method for getTelephonyCallWithResponse - RequestOptions requestOptions = new RequestOptions(); - return getTelephonyCallWithResponse(agentName, callId, requestOptions).getValue() - .toObject(TelephonyCallRecord.class); - } - - /** - * Transfer an active agent telephony call - * - * Transfers an active inbound call to a configured target for the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the active call. - * @param callId The service-generated call identifier. - * @param target The name of a transfer target configured for the voice agent. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return detailed diagnostics for a durable inbound call to a voice agent. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public TelephonyCallRecord transferTelephonyCall(String agentName, String callId, String target) { - // Generated convenience method for transferTelephonyCallWithResponse - RequestOptions requestOptions = new RequestOptions(); - TransferTelephonyCallRequest transferTelephonyCallRequestObj = new TransferTelephonyCallRequest(target); - BinaryData transferTelephonyCallRequest = BinaryData.fromObject(transferTelephonyCallRequestObj); - return transferTelephonyCallWithResponse(agentName, callId, transferTelephonyCallRequest, requestOptions) - .getValue() - .toObject(TelephonyCallRecord.class); - } - - /** - * End an active agent telephony call - * - * Ends an active inbound call owned by the voice agent named in the path. - * - * @param agentName The name of the voice agent that owns the active call. - * @param callId The service-generated call identifier. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return detailed diagnostics for a durable inbound call to a voice agent. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public TelephonyCallRecord endTelephonyCall(String agentName, String callId) { - // Generated convenience method for endTelephonyCallWithResponse - RequestOptions requestOptions = new RequestOptions(); - return endTelephonyCallWithResponse(agentName, callId, requestOptions).getValue() - .toObject(TelephonyCallRecord.class); - } - - /** - * Get agent telephony transfer targets - * - * Returns all transfer targets configured for the voice agent named in the path. - * - * @param agentName The name of the voice agent whose transfer targets are retrieved. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return agent telephony transfer targets - * - * Returns all transfer targets configured for the voice agent named in the path. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public TelephonyTransferTargets getTelephonyTransferTargets(String agentName) { - // Generated convenience method for getTelephonyTransferTargetsWithResponse - RequestOptions requestOptions = new RequestOptions(); - return getTelephonyTransferTargetsWithResponse(agentName, requestOptions).getValue() - .toObject(TelephonyTransferTargets.class); - } - - /** - * Replace agent telephony transfer targets - * - * Replaces all transfer targets configured for the voice agent named in the path. - * - * @param agentName The name of the voice agent whose transfer targets are replaced. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @param transferTargets The complete set of destinations to which the voice agent may transfer calls. An empty - * array clears all targets when replacing the configuration. - * @throws IllegalArgumentException thrown if parameters fail the validation. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return the telephony transfer targets configured for one voice agent. - */ - @Generated - @ServiceMethod(returns = ReturnType.SINGLE) - public TelephonyTransferTargets replaceTelephonyTransferTargets(String agentName, String ifMatch, - List transferTargets) { - // Generated convenience method for replaceTelephonyTransferTargetsWithResponse - RequestOptions requestOptions = new RequestOptions(); - ReplaceTelephonyTransferTargetsRequest replaceTelephonyTransferTargetsRequestObj - = new ReplaceTelephonyTransferTargetsRequest(transferTargets); - BinaryData replaceTelephonyTransferTargetsRequest - = BinaryData.fromObject(replaceTelephonyTransferTargetsRequestObj); - return replaceTelephonyTransferTargetsWithResponse(agentName, ifMatch, replaceTelephonyTransferTargetsRequest, - requestOptions).getValue().toObject(TelephonyTransferTargets.class); - } - /** * Create a new code-based agent * @@ -5737,6 +4454,7 @@ public TelephonyTransferTargets replaceTelephonyTransferTargets(String agentName * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -5884,6 +4602,7 @@ Response createAgentFromCodeWithResponseInternal(String agentName, S * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClientBuilder.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClientBuilder.java index 80743717348af..accf621384e24 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClientBuilder.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentsClientBuilder.java @@ -64,17 +64,17 @@ */ @ServiceClientBuilder( serviceClients = { - BetaAgentEndpointConversationsClient.class, BetaMemoryStoresClient.class, BetaAgentsClient.class, + BetaAgentTelephonyClient.class, + BetaAgentEndpointConversationsClient.class, AgentsClient.class, - AgentTelephonyClient.class, ToolboxesClient.class, - BetaAgentEndpointConversationsAsyncClient.class, BetaMemoryStoresAsyncClient.class, BetaAgentsAsyncClient.class, + BetaAgentTelephonyAsyncClient.class, + BetaAgentEndpointConversationsAsyncClient.class, AgentsAsyncClient.class, - AgentTelephonyAsyncClient.class, ToolboxesAsyncClient.class, BetaVoiceAgentWebSocketClient.class, BetaVoiceAgentWebSocketAsyncClient.class }) @@ -780,22 +780,22 @@ public BetaAgentEndpointConversationsClient buildBetaAgentEndpointConversationsC } /** - * Builds an instance of AgentTelephonyAsyncClient class. + * Builds an instance of BetaAgentTelephonyAsyncClient class. * - * @return an instance of AgentTelephonyAsyncClient. + * @return an instance of BetaAgentTelephonyAsyncClient. */ @Generated - public AgentTelephonyAsyncClient buildAgentTelephonyAsyncClient() { - return new AgentTelephonyAsyncClient(buildInnerClient().getAgentTelephonies()); + public BetaAgentTelephonyAsyncClient buildBetaAgentTelephonyAsyncClient() { + return new BetaAgentTelephonyAsyncClient(buildInnerClient().getBetaAgentTelephonies()); } /** - * Builds an instance of AgentTelephonyClient class. + * Builds an instance of BetaAgentTelephonyClient class. * - * @return an instance of AgentTelephonyClient. + * @return an instance of BetaAgentTelephonyClient. */ @Generated - public AgentTelephonyClient buildAgentTelephonyClient() { - return new AgentTelephonyClient(buildInnerClient().getAgentTelephonies()); + public BetaAgentTelephonyClient buildBetaAgentTelephonyClient() { + return new BetaAgentTelephonyClient(buildInnerClient().getBetaAgentTelephonies()); } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsAsyncClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsAsyncClient.java index c6f6dc43ffb70..5fac252867a4c 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsAsyncClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsAsyncClient.java @@ -273,7 +273,6 @@ public Mono> deleteAgentConversationWithResponse(String agentName *
      * {@code
      * {
-     *     id: String (Required)
      *     object: String(realtime.response) (Optional)
      *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
      *     status_details (Optional): {
@@ -304,16 +303,17 @@ public Mono> deleteAgentConversationWithResponse(String agentName
      *             audio_tokens: Long (Optional)
      *         }
      *     }
-     *     conversation_id: String (Required)
      *     output_modalities (Optional): [
      *         String(text/audio) (Optional)
      *     ]
      *     max_output_tokens: BinaryData (Optional)
+     *     id: String (Required)
      *     output (Optional): [
      *          (Optional){
      *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
      *         }
      *     ]
+     *     conversation_id: String (Required)
      *     audio (Optional): {
      *         output (Optional): {
      *             voice: String (Optional)
@@ -360,7 +360,6 @@ public PagedFlux listAgentConversationResponses(String agentName, St
      * 
      * {@code
      * {
-     *     id: String (Required)
      *     object: String(realtime.response) (Optional)
      *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
      *     status_details (Optional): {
@@ -391,16 +390,17 @@ public PagedFlux listAgentConversationResponses(String agentName, St
      *             audio_tokens: Long (Optional)
      *         }
      *     }
-     *     conversation_id: String (Required)
      *     output_modalities (Optional): [
      *         String(text/audio) (Optional)
      *     ]
      *     max_output_tokens: BinaryData (Optional)
+     *     id: String (Required)
      *     output (Optional): [
      *          (Optional){
      *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
      *         }
      *     ]
+     *     conversation_id: String (Required)
      *     audio (Optional): {
      *         output (Optional): {
      *             voice: String (Optional)
diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsClient.java
index 2b9ec72c3a615..9364f56ecce6f 100644
--- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsClient.java
+++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsClient.java
@@ -267,7 +267,6 @@ public Response deleteAgentConversationWithResponse(String agentName, Stri
      * 
      * {@code
      * {
-     *     id: String (Required)
      *     object: String(realtime.response) (Optional)
      *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
      *     status_details (Optional): {
@@ -298,16 +297,17 @@ public Response deleteAgentConversationWithResponse(String agentName, Stri
      *             audio_tokens: Long (Optional)
      *         }
      *     }
-     *     conversation_id: String (Required)
      *     output_modalities (Optional): [
      *         String(text/audio) (Optional)
      *     ]
      *     max_output_tokens: BinaryData (Optional)
+     *     id: String (Required)
      *     output (Optional): [
      *          (Optional){
      *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
      *         }
      *     ]
+     *     conversation_id: String (Required)
      *     audio (Optional): {
      *         output (Optional): {
      *             voice: String (Optional)
@@ -354,7 +354,6 @@ public PagedIterable listAgentConversationResponses(String agentName
      * 
      * {@code
      * {
-     *     id: String (Required)
      *     object: String(realtime.response) (Optional)
      *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
      *     status_details (Optional): {
@@ -385,16 +384,17 @@ public PagedIterable listAgentConversationResponses(String agentName
      *             audio_tokens: Long (Optional)
      *         }
      *     }
-     *     conversation_id: String (Required)
      *     output_modalities (Optional): [
      *         String(text/audio) (Optional)
      *     ]
      *     max_output_tokens: BinaryData (Optional)
+     *     id: String (Required)
      *     output (Optional): [
      *          (Optional){
      *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
      *         }
      *     ]
+     *     conversation_id: String (Required)
      *     audio (Optional): {
      *         output (Optional): {
      *             voice: String (Optional)
diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentTelephonyAsyncClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentTelephonyAsyncClient.java
similarity index 99%
rename from sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentTelephonyAsyncClient.java
rename to sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentTelephonyAsyncClient.java
index aa2f9f2dc0991..7b28a81fe1e59 100644
--- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentTelephonyAsyncClient.java
+++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentTelephonyAsyncClient.java
@@ -3,7 +3,8 @@
 // Code generated by Microsoft (R) TypeSpec Code Generator.
 package com.azure.ai.agents;
 
-import com.azure.ai.agents.implementation.AgentTelephoniesImpl;
+import com.azure.ai.agents.implementation.BetaAgentTelephoniesImpl;
+import com.azure.ai.agents.implementation.utils.Beta;
 import com.azure.ai.agents.models.CreateTelephonyCallJobRequest;
 import com.azure.ai.agents.models.CreateTelephonyCampaignRequest;
 import com.azure.ai.agents.models.ImportTelephonyCampaignRecipientsRequest;
@@ -32,18 +33,19 @@
  * Initializes a new instance of the asynchronous AgentsClient type.
  */
 @ServiceClient(builder = AgentsClientBuilder.class, isAsync = true)
-public final class AgentTelephonyAsyncClient {
+@Beta(warningText = "This class is in preview and may change in future releases.")
+public final class BetaAgentTelephonyAsyncClient {
 
     @Generated
-    private final AgentTelephoniesImpl serviceClient;
+    private final BetaAgentTelephoniesImpl serviceClient;
 
     /**
-     * Initializes an instance of AgentTelephonyAsyncClient class.
+     * Initializes an instance of BetaAgentTelephonyAsyncClient class.
      *
      * @param serviceClient the service client implementation.
      */
     @Generated
-    AgentTelephonyAsyncClient(AgentTelephoniesImpl serviceClient) {
+    BetaAgentTelephonyAsyncClient(BetaAgentTelephoniesImpl serviceClient) {
         this.serviceClient = serviceClient;
     }
 
diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentTelephonyClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentTelephonyClient.java
similarity index 99%
rename from sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentTelephonyClient.java
rename to sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentTelephonyClient.java
index 5416af68fd690..a68607c98fb67 100644
--- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/AgentTelephonyClient.java
+++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentTelephonyClient.java
@@ -3,7 +3,8 @@
 // Code generated by Microsoft (R) TypeSpec Code Generator.
 package com.azure.ai.agents;
 
-import com.azure.ai.agents.implementation.AgentTelephoniesImpl;
+import com.azure.ai.agents.implementation.BetaAgentTelephoniesImpl;
+import com.azure.ai.agents.implementation.utils.Beta;
 import com.azure.ai.agents.models.CreateTelephonyCallJobRequest;
 import com.azure.ai.agents.models.CreateTelephonyCampaignRequest;
 import com.azure.ai.agents.models.ImportTelephonyCampaignRecipientsRequest;
@@ -30,18 +31,19 @@
  * Initializes a new instance of the synchronous AgentsClient type.
  */
 @ServiceClient(builder = AgentsClientBuilder.class)
-public final class AgentTelephonyClient {
+@Beta(warningText = "This class is in preview and may change in future releases.")
+public final class BetaAgentTelephonyClient {
 
     @Generated
-    private final AgentTelephoniesImpl serviceClient;
+    private final BetaAgentTelephoniesImpl serviceClient;
 
     /**
-     * Initializes an instance of AgentTelephonyClient class.
+     * Initializes an instance of BetaAgentTelephonyClient class.
      *
      * @param serviceClient the service client implementation.
      */
     @Generated
-    AgentTelephonyClient(AgentTelephoniesImpl serviceClient) {
+    BetaAgentTelephonyClient(BetaAgentTelephoniesImpl serviceClient) {
         this.serviceClient = serviceClient;
     }
 
diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentsAsyncClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentsAsyncClient.java
index f8c58fd575db4..8a58c663e8ffc 100644
--- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentsAsyncClient.java
+++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentsAsyncClient.java
@@ -4,12 +4,27 @@
 package com.azure.ai.agents;
 
 import com.azure.ai.agents.implementation.BetaAgentsImpl;
+import com.azure.ai.agents.implementation.JsonMergePatchHelper;
+import com.azure.ai.agents.implementation.models.ReplaceTelephonyTransferTargetsRequest;
+import com.azure.ai.agents.implementation.models.TransferTelephonyCallRequest;
 import com.azure.ai.agents.implementation.utils.Beta;
+import com.azure.ai.agents.models.AgentDetails;
 import com.azure.ai.agents.models.AgentOptimizationJob;
 import com.azure.ai.agents.models.AgentOptimizationJobListItem;
 import com.azure.ai.agents.models.AgentOptimizationJobResult;
+import com.azure.ai.agents.models.CreateTelephonyBindingRequest;
 import com.azure.ai.agents.models.JobStatus;
 import com.azure.ai.agents.models.PageOrder;
+import com.azure.ai.agents.models.TelephonyBinding;
+import com.azure.ai.agents.models.TelephonyBindingListItem;
+import com.azure.ai.agents.models.TelephonyBindingStatus;
+import com.azure.ai.agents.models.TelephonyCallRecord;
+import com.azure.ai.agents.models.TelephonyCallStatus;
+import com.azure.ai.agents.models.TelephonyCallSummary;
+import com.azure.ai.agents.models.TelephonyProvider;
+import com.azure.ai.agents.models.TelephonyTransferTarget;
+import com.azure.ai.agents.models.TelephonyTransferTargets;
+import com.azure.ai.agents.models.UpdateTelephonyBindingRequest;
 import com.azure.core.annotation.Generated;
 import com.azure.core.annotation.ReturnType;
 import com.azure.core.annotation.ServiceClient;
@@ -27,6 +42,8 @@
 import com.azure.core.util.BinaryData;
 import com.azure.core.util.FluxUtil;
 import com.azure.core.util.polling.PollerFlux;
+import java.time.OffsetDateTime;
+import java.util.List;
 import java.util.stream.Collectors;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
@@ -778,4 +795,1347 @@ public PollerFlux beginCreateOptimizationJob(BinaryData
         RequestOptions requestOptions = new RequestOptions();
         return serviceClient.beginCreateOptimizationJobWithModelAsync(BinaryData.fromObject(job), requestOptions);
     }
+
+    /**
+     * Generate an agent
+     *
+     * Generates and creates an agent from kind-specific high-level inputs.
+     * The generated definition remains fully editable through the standard agent versioning operations.
+     * 

Request Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
+     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
+     *     versions (Required): {
+     *         latest (Required): {
+     *             metadata (Required): {
+     *                 String: String (Required)
+     *             }
+     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *             id: String (Required)
+     *             name: String (Required)
+     *             version: String (Required)
+     *             description: String (Optional)
+     *             created_at: long (Required)
+     *             definition (Required): {
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *                 rai_config (Optional): {
+     *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
+     *                 }
+     *             }
+     *             draft: Boolean (Optional)
+     *             status: String(creating/active/failed/deleting/deleted) (Optional)
+     *             instance_identity (Optional): {
+     *                 principal_id: String (Required)
+     *                 client_id: String (Required)
+     *                 status: String(active/disabled) (Optional)
+     *             }
+     *             blueprint (Optional): (recursive schema, see blueprint above)
+     *             blueprint_reference (Optional): {
+     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
+     *             }
+     *             agent_guid: String (Optional)
+     *         }
+     *     }
+     *     agent_endpoint (Optional): {
+     *         version_selector (Optional): {
+     *             version_selection_rules (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     type: String(FixedRatio) (Required)
+     *                     agent_version: String (Optional, Required on create)
+     *                 }
+     *             ]
+     *         }
+     *         protocol_configuration (Optional): {
+     *             activity (Optional): {
+     *                 enable_m365_public_endpoint: Boolean (Optional)
+     *                 access_boundaries (Optional): [
+     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
+     *                 ]
+     *             }
+     *             responses (Optional): {
+     *             }
+     *             a2a (Optional): {
+     *             }
+     *             mcp (Optional): {
+     *             }
+     *             invocations (Optional): {
+     *             }
+     *             invocations_ws (Optional): {
+     *             }
+     *         }
+     *         authorization_schemes (Optional): [
+     *              (Optional){
+     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
+     *             }
+     *         ]
+     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
+     *     }
+     *     digital_worker_type: String(m365) (Optional)
+     *     instance_identity (Optional): (recursive schema, see instance_identity above)
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): (recursive schema, see blueprint_reference above)
+     *     agent_card (Optional): {
+     *         version: String (Optional, Required on create)
+     *         description: String (Optional)
+     *         skills (Optional, Required on create): [
+     *              (Optional, Required on create){
+     *                 id: String (Optional, Required on create)
+     *                 name: String (Optional, Required on create)
+     *                 description: String (Optional)
+     *                 tags (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 examples (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *             }
+     *         ]
+     *     }
+     * }
+     * }
+     * 
+ * + * @param body The kind-specific inputs for generating and creating an agent. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> generateAgentWithResponse(BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.generateAgentWithResponseAsync(body, requestOptions); + } + + /** + * Create an agent telephony binding + * + * Creates a telephony binding for the voice agent named in the path. + *

Header Parameters

+ * + * + * + * + * + *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as + * HTTP-date
+ * You can add these to a request with {@link RequestOptions#addHeader} + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param body The provider-specific binding to create. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response} on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> createTelephonyBindingWithResponse(String agentName, BinaryData body, + RequestOptions requestOptions) { + return this.serviceClient.createTelephonyBindingWithResponseAsync(agentName, body, requestOptions); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", + * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose bindings are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyBindings(String agentName, RequestOptions requestOptions) { + return this.serviceClient.listTelephonyBindingsAsync(agentName, requestOptions); + } + + /** + * Get an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path along with {@link Response} on + * successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyBindingWithResponse(String agentName, String bindingId, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyBindingWithResponseAsync(agentName, bindingId, requestOptions); + } + + /** + * Update an agent telephony binding + * + * Updates a telephony binding owned by the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     status: String(active/suspended) (Optional)
+     *     label: String (Optional)
+     *     connection: String (Optional)
+     *     phone_number: String (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param body The binding properties to update. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response} on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> updateTelephonyBindingWithResponse(String agentName, String bindingId, + String ifMatch, BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.updateTelephonyBindingWithResponseAsync(agentName, bindingId, ifMatch, body, + requestOptions); + } + + /** + * Delete an agent telephony binding + * + * Deletes a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> deleteTelephonyBindingWithResponse(String agentName, String bindingId, String ifMatch, + RequestOptions requestOptions) { + return this.serviceClient.deleteTelephonyBindingWithResponseAsync(agentName, bindingId, ifMatch, + requestOptions); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: + * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix + * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this + * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose calls are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyCalls(String agentName, RequestOptions requestOptions) { + return this.serviceClient.listTelephonyCallsAsync(agentName, requestOptions); + } + + /** + * Get an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the call record. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path along with {@link Response} on + * successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyCallWithResponse(String agentName, String callId, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyCallWithResponseAsync(agentName, callId, requestOptions); + } + + /** + * Transfer an active agent telephony call + * + * Transfers an active inbound call to a configured target for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     target: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param transferTelephonyCallRequest The transferTelephonyCallRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response} on + * successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> transferTelephonyCallWithResponse(String agentName, String callId, + BinaryData transferTelephonyCallRequest, RequestOptions requestOptions) { + return this.serviceClient.transferTelephonyCallWithResponseAsync(agentName, callId, + transferTelephonyCallRequest, requestOptions); + } + + /** + * End an active agent telephony call + * + * Ends an active inbound call owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response} on + * successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> endTelephonyCallWithResponse(String agentName, String callId, + RequestOptions requestOptions) { + return this.serviceClient.endTelephonyCallWithResponseAsync(agentName, callId, requestOptions); + } + + /** + * Get agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path along with {@link Response} on + * successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyTransferTargetsWithResponse(String agentName, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyTransferTargetsWithResponseAsync(agentName, requestOptions); + } + + /** + * Replace agent telephony transfer targets + * + * Replaces all transfer targets configured for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are replaced. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param replaceTelephonyTransferTargetsRequest The replaceTelephonyTransferTargetsRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the telephony transfer targets configured for one voice agent along with {@link Response} on successful + * completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> replaceTelephonyTransferTargetsWithResponse(String agentName, String ifMatch, + BinaryData replaceTelephonyTransferTargetsRequest, RequestOptions requestOptions) { + return this.serviceClient.replaceTelephonyTransferTargetsWithResponseAsync(agentName, ifMatch, + replaceTelephonyTransferTargetsRequest, requestOptions); + } + + /** + * Generate an agent + * + * Generates and creates an agent from kind-specific high-level inputs. + * The generated definition remains fully editable through the standard agent versioning operations. + * + * @param body The kind-specific inputs for generating and creating an agent. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response body on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono generateAgent(BinaryData body) { + // Generated convenience method for generateAgentWithResponse + RequestOptions requestOptions = new RequestOptions(); + return generateAgentWithResponse(body, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(AgentDetails.class)); + } + + /** + * Create an agent telephony binding + * + * Creates a telephony binding for the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param body The provider-specific binding to create. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a telephony binding owned by a voice agent on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono createTelephonyBinding(String agentName, CreateTelephonyBindingRequest body) { + // Generated convenience method for createTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + return createTelephonyBindingWithResponse(agentName, BinaryData.fromObject(body), requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyBinding.class)); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent whose bindings are listed. + * @param provider Filters bindings by provider. + * @param status Filters bindings by lifecycle status. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyBindings(String agentName, TelephonyProvider provider, + TelephonyBindingStatus status, Integer limit, PageOrder order, String after, String before) { + // Generated convenience method for listTelephonyBindings + RequestOptions requestOptions = new RequestOptions(); + if (provider != null) { + requestOptions.addQueryParam("provider", provider.toString(), false); + } + if (status != null) { + requestOptions.addQueryParam("status", status.toString(), false); + } + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + PagedFlux pagedFluxResponse = listTelephonyBindings(agentName, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux + .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyBindingListItem.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent whose bindings are listed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyBindings(String agentName) { + // Generated convenience method for listTelephonyBindings + RequestOptions requestOptions = new RequestOptions(); + PagedFlux pagedFluxResponse = listTelephonyBindings(agentName, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux + .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyBindingListItem.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * Get an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getTelephonyBinding(String agentName, String bindingId) { + // Generated convenience method for getTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyBindingWithResponse(agentName, bindingId, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyBinding.class)); + } + + /** + * Update an agent telephony binding + * + * Updates a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param body The binding properties to update. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a telephony binding owned by a voice agent on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono updateTelephonyBinding(String agentName, String bindingId, String ifMatch, + UpdateTelephonyBindingRequest body) { + // Generated convenience method for updateTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + JsonMergePatchHelper.getUpdateTelephonyBindingRequestAccessor().prepareModelForJsonMergePatch(body, true); + BinaryData bodyInBinaryData = BinaryData.fromObject(body); + // BinaryData.fromObject() will not fire serialization, use getLength() to fire serialization. + bodyInBinaryData.getLength(); + JsonMergePatchHelper.getUpdateTelephonyBindingRequestAccessor().prepareModelForJsonMergePatch(body, false); + return updateTelephonyBindingWithResponse(agentName, bindingId, ifMatch, bodyInBinaryData, requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyBinding.class)); + } + + /** + * Delete an agent telephony binding + * + * Deletes a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return A {@link Mono} that completes when a successful response is received. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono deleteTelephonyBinding(String agentName, String bindingId, String ifMatch) { + // Generated convenience method for deleteTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + return deleteTelephonyBindingWithResponse(agentName, bindingId, ifMatch, requestOptions) + .flatMap(FluxUtil::toMono); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose calls are listed. + * @param provider Filters calls by provider. + * @param status Filters calls by lifecycle status. + * @param startedAfter Includes calls that started at or after this Unix timestamp in seconds. + * @param startedBefore Includes calls that started at or before this Unix timestamp in seconds. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyCalls(String agentName, TelephonyProvider provider, + TelephonyCallStatus status, OffsetDateTime startedAfter, OffsetDateTime startedBefore, Integer limit, + PageOrder order, String after, String before) { + // Generated convenience method for listTelephonyCalls + RequestOptions requestOptions = new RequestOptions(); + if (provider != null) { + requestOptions.addQueryParam("provider", provider.toString(), false); + } + if (status != null) { + requestOptions.addQueryParam("status", status.toString(), false); + } + if (startedAfter != null) { + requestOptions.addQueryParam("started_after", String.valueOf(startedAfter.toEpochSecond()), false); + } + if (startedBefore != null) { + requestOptions.addQueryParam("started_before", String.valueOf(startedBefore.toEpochSecond()), false); + } + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + PagedFlux pagedFluxResponse = listTelephonyCalls(agentName, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux + .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallSummary.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose calls are listed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyCalls(String agentName) { + // Generated convenience method for listTelephonyCalls + RequestOptions requestOptions = new RequestOptions(); + PagedFlux pagedFluxResponse = listTelephonyCalls(agentName, requestOptions); + return PagedFlux.create(() -> (continuationTokenParam, pageSizeParam) -> { + Flux> flux = (continuationTokenParam == null) + ? pagedFluxResponse.byPage().take(1) + : pagedFluxResponse.byPage(continuationTokenParam).take(1); + return flux + .map(pagedResponse -> new PagedResponseBase(pagedResponse.getRequest(), + pagedResponse.getStatusCode(), pagedResponse.getHeaders(), + pagedResponse.getValue() + .stream() + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallSummary.class)) + .collect(Collectors.toList()), + pagedResponse.getContinuationToken(), null)); + }); + } + + /** + * Get an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the call record. + * @param callId The service-generated call identifier. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getTelephonyCall(String agentName, String callId) { + // Generated convenience method for getTelephonyCallWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyCallWithResponse(agentName, callId, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallRecord.class)); + } + + /** + * Transfer an active agent telephony call + * + * Transfers an active inbound call to a configured target for the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param target The name of a transfer target configured for the voice agent. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return detailed diagnostics for a durable inbound call to a voice agent on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono transferTelephonyCall(String agentName, String callId, String target) { + // Generated convenience method for transferTelephonyCallWithResponse + RequestOptions requestOptions = new RequestOptions(); + TransferTelephonyCallRequest transferTelephonyCallRequestObj = new TransferTelephonyCallRequest(target); + BinaryData transferTelephonyCallRequest = BinaryData.fromObject(transferTelephonyCallRequestObj); + return transferTelephonyCallWithResponse(agentName, callId, transferTelephonyCallRequest, requestOptions) + .flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallRecord.class)); + } + + /** + * End an active agent telephony call + * + * Ends an active inbound call owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return detailed diagnostics for a durable inbound call to a voice agent on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono endTelephonyCall(String agentName, String callId) { + // Generated convenience method for endTelephonyCallWithResponse + RequestOptions requestOptions = new RequestOptions(); + return endTelephonyCallWithResponse(agentName, callId, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyCallRecord.class)); + } + + /** + * Get agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose transfer targets are retrieved. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path on successful completion of + * {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getTelephonyTransferTargets(String agentName) { + // Generated convenience method for getTelephonyTransferTargetsWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyTransferTargetsWithResponse(agentName, requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyTransferTargets.class)); + } + + /** + * Replace agent telephony transfer targets + * + * Replaces all transfer targets configured for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose transfer targets are replaced. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param transferTargets The complete set of destinations to which the voice agent may transfer calls. An empty + * array clears all targets when replacing the configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the telephony transfer targets configured for one voice agent on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono replaceTelephonyTransferTargets(String agentName, String ifMatch, + List transferTargets) { + // Generated convenience method for replaceTelephonyTransferTargetsWithResponse + RequestOptions requestOptions = new RequestOptions(); + ReplaceTelephonyTransferTargetsRequest replaceTelephonyTransferTargetsRequestObj + = new ReplaceTelephonyTransferTargetsRequest(transferTargets); + BinaryData replaceTelephonyTransferTargetsRequest + = BinaryData.fromObject(replaceTelephonyTransferTargetsRequestObj); + return replaceTelephonyTransferTargetsWithResponse(agentName, ifMatch, replaceTelephonyTransferTargetsRequest, + requestOptions).flatMap(FluxUtil::toMono) + .map(protocolMethodData -> protocolMethodData.toObject(TelephonyTransferTargets.class)); + } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentsClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentsClient.java index be812c429b97a..eca5da960625c 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentsClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/BetaAgentsClient.java @@ -4,12 +4,27 @@ package com.azure.ai.agents; import com.azure.ai.agents.implementation.BetaAgentsImpl; +import com.azure.ai.agents.implementation.JsonMergePatchHelper; +import com.azure.ai.agents.implementation.models.ReplaceTelephonyTransferTargetsRequest; +import com.azure.ai.agents.implementation.models.TransferTelephonyCallRequest; import com.azure.ai.agents.implementation.utils.Beta; +import com.azure.ai.agents.models.AgentDetails; import com.azure.ai.agents.models.AgentOptimizationJob; import com.azure.ai.agents.models.AgentOptimizationJobListItem; import com.azure.ai.agents.models.AgentOptimizationJobResult; +import com.azure.ai.agents.models.CreateTelephonyBindingRequest; import com.azure.ai.agents.models.JobStatus; import com.azure.ai.agents.models.PageOrder; +import com.azure.ai.agents.models.TelephonyBinding; +import com.azure.ai.agents.models.TelephonyBindingListItem; +import com.azure.ai.agents.models.TelephonyBindingStatus; +import com.azure.ai.agents.models.TelephonyCallRecord; +import com.azure.ai.agents.models.TelephonyCallStatus; +import com.azure.ai.agents.models.TelephonyCallSummary; +import com.azure.ai.agents.models.TelephonyProvider; +import com.azure.ai.agents.models.TelephonyTransferTarget; +import com.azure.ai.agents.models.TelephonyTransferTargets; +import com.azure.ai.agents.models.UpdateTelephonyBindingRequest; import com.azure.core.annotation.Generated; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; @@ -24,6 +39,8 @@ import com.azure.core.http.rest.Response; import com.azure.core.util.BinaryData; import com.azure.core.util.polling.SyncPoller; +import java.time.OffsetDateTime; +import java.util.List; /** * Initializes a new instance of the synchronous AgentsClient type. @@ -745,4 +762,1280 @@ public SyncPoller beginCreateOptimizationJob(BinaryData RequestOptions requestOptions = new RequestOptions(); return serviceClient.beginCreateOptimizationJobWithModel(BinaryData.fromObject(job), requestOptions); } + + /** + * Generate an agent + * + * Generates and creates an agent from kind-specific high-level inputs. + * The generated definition remains fully editable through the standard agent versioning operations. + *

Request Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
+     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
+     *     versions (Required): {
+     *         latest (Required): {
+     *             metadata (Required): {
+     *                 String: String (Required)
+     *             }
+     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *             id: String (Required)
+     *             name: String (Required)
+     *             version: String (Required)
+     *             description: String (Optional)
+     *             created_at: long (Required)
+     *             definition (Required): {
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *                 rai_config (Optional): {
+     *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
+     *                 }
+     *             }
+     *             draft: Boolean (Optional)
+     *             status: String(creating/active/failed/deleting/deleted) (Optional)
+     *             instance_identity (Optional): {
+     *                 principal_id: String (Required)
+     *                 client_id: String (Required)
+     *                 status: String(active/disabled) (Optional)
+     *             }
+     *             blueprint (Optional): (recursive schema, see blueprint above)
+     *             blueprint_reference (Optional): {
+     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
+     *             }
+     *             agent_guid: String (Optional)
+     *         }
+     *     }
+     *     agent_endpoint (Optional): {
+     *         version_selector (Optional): {
+     *             version_selection_rules (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     type: String(FixedRatio) (Required)
+     *                     agent_version: String (Optional, Required on create)
+     *                 }
+     *             ]
+     *         }
+     *         protocol_configuration (Optional): {
+     *             activity (Optional): {
+     *                 enable_m365_public_endpoint: Boolean (Optional)
+     *                 access_boundaries (Optional): [
+     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
+     *                 ]
+     *             }
+     *             responses (Optional): {
+     *             }
+     *             a2a (Optional): {
+     *             }
+     *             mcp (Optional): {
+     *             }
+     *             invocations (Optional): {
+     *             }
+     *             invocations_ws (Optional): {
+     *             }
+     *         }
+     *         authorization_schemes (Optional): [
+     *              (Optional){
+     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
+     *             }
+     *         ]
+     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
+     *     }
+     *     digital_worker_type: String(m365) (Optional)
+     *     instance_identity (Optional): (recursive schema, see instance_identity above)
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): (recursive schema, see blueprint_reference above)
+     *     agent_card (Optional): {
+     *         version: String (Optional, Required on create)
+     *         description: String (Optional)
+     *         skills (Optional, Required on create): [
+     *              (Optional, Required on create){
+     *                 id: String (Optional, Required on create)
+     *                 name: String (Optional, Required on create)
+     *                 description: String (Optional)
+     *                 tags (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 examples (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *             }
+     *         ]
+     *     }
+     * }
+     * }
+     * 
+ * + * @param body The kind-specific inputs for generating and creating an agent. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response generateAgentWithResponse(BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.generateAgentWithResponse(body, requestOptions); + } + + /** + * Create an agent telephony binding + * + * Creates a telephony binding for the voice agent named in the path. + *

Header Parameters

+ * + * + * + * + * + *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as + * HTTP-date
+ * You can add these to a request with {@link RequestOptions#addHeader} + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param body The provider-specific binding to create. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response createTelephonyBindingWithResponse(String agentName, BinaryData body, + RequestOptions requestOptions) { + return this.serviceClient.createTelephonyBindingWithResponse(agentName, body, requestOptions); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", + * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose bindings are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyBindings(String agentName, RequestOptions requestOptions) { + return this.serviceClient.listTelephonyBindings(agentName, requestOptions); + } + + /** + * Get an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyBindingWithResponse(String agentName, String bindingId, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyBindingWithResponse(agentName, bindingId, requestOptions); + } + + /** + * Update an agent telephony binding + * + * Updates a telephony binding owned by the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     status: String(active/suspended) (Optional)
+     *     label: String (Optional)
+     *     connection: String (Optional)
+     *     phone_number: String (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param body The binding properties to update. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response updateTelephonyBindingWithResponse(String agentName, String bindingId, String ifMatch, + BinaryData body, RequestOptions requestOptions) { + return this.serviceClient.updateTelephonyBindingWithResponse(agentName, bindingId, ifMatch, body, + requestOptions); + } + + /** + * Delete an agent telephony binding + * + * Deletes a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response deleteTelephonyBindingWithResponse(String agentName, String bindingId, String ifMatch, + RequestOptions requestOptions) { + return this.serviceClient.deleteTelephonyBindingWithResponse(agentName, bindingId, ifMatch, requestOptions); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: + * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix + * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this + * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose calls are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyCalls(String agentName, RequestOptions requestOptions) { + return this.serviceClient.listTelephonyCalls(agentName, requestOptions); + } + + /** + * Get an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the call record. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyCallWithResponse(String agentName, String callId, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyCallWithResponse(agentName, callId, requestOptions); + } + + /** + * Transfer an active agent telephony call + * + * Transfers an active inbound call to a configured target for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     target: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param transferTelephonyCallRequest The transferTelephonyCallRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response transferTelephonyCallWithResponse(String agentName, String callId, + BinaryData transferTelephonyCallRequest, RequestOptions requestOptions) { + return this.serviceClient.transferTelephonyCallWithResponse(agentName, callId, transferTelephonyCallRequest, + requestOptions); + } + + /** + * End an active agent telephony call + * + * Ends an active inbound call owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response endTelephonyCallWithResponse(String agentName, String callId, + RequestOptions requestOptions) { + return this.serviceClient.endTelephonyCallWithResponse(agentName, callId, requestOptions); + } + + /** + * Get agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyTransferTargetsWithResponse(String agentName, + RequestOptions requestOptions) { + return this.serviceClient.getTelephonyTransferTargetsWithResponse(agentName, requestOptions); + } + + /** + * Replace agent telephony transfer targets + * + * Replaces all transfer targets configured for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are replaced. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param replaceTelephonyTransferTargetsRequest The replaceTelephonyTransferTargetsRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the telephony transfer targets configured for one voice agent along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response replaceTelephonyTransferTargetsWithResponse(String agentName, String ifMatch, + BinaryData replaceTelephonyTransferTargetsRequest, RequestOptions requestOptions) { + return this.serviceClient.replaceTelephonyTransferTargetsWithResponse(agentName, ifMatch, + replaceTelephonyTransferTargetsRequest, requestOptions); + } + + /** + * Generate an agent + * + * Generates and creates an agent from kind-specific high-level inputs. + * The generated definition remains fully editable through the standard agent versioning operations. + * + * @param body The kind-specific inputs for generating and creating an agent. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public AgentDetails generateAgent(BinaryData body) { + // Generated convenience method for generateAgentWithResponse + RequestOptions requestOptions = new RequestOptions(); + return generateAgentWithResponse(body, requestOptions).getValue().toObject(AgentDetails.class); + } + + /** + * Create an agent telephony binding + * + * Creates a telephony binding for the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param body The provider-specific binding to create. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a telephony binding owned by a voice agent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyBinding createTelephonyBinding(String agentName, CreateTelephonyBindingRequest body) { + // Generated convenience method for createTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + return createTelephonyBindingWithResponse(agentName, BinaryData.fromObject(body), requestOptions).getValue() + .toObject(TelephonyBinding.class); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent whose bindings are listed. + * @param provider Filters bindings by provider. + * @param status Filters bindings by lifecycle status. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyBindings(String agentName, TelephonyProvider provider, + TelephonyBindingStatus status, Integer limit, PageOrder order, String after, String before) { + // Generated convenience method for listTelephonyBindings + RequestOptions requestOptions = new RequestOptions(); + if (provider != null) { + requestOptions.addQueryParam("provider", provider.toString(), false); + } + if (status != null) { + requestOptions.addQueryParam("status", status.toString(), false); + } + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + return serviceClient.listTelephonyBindings(agentName, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(TelephonyBindingListItem.class)); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent whose bindings are listed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyBindings(String agentName) { + // Generated convenience method for listTelephonyBindings + RequestOptions requestOptions = new RequestOptions(); + return serviceClient.listTelephonyBindings(agentName, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(TelephonyBindingListItem.class)); + } + + /** + * Get an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyBinding getTelephonyBinding(String agentName, String bindingId) { + // Generated convenience method for getTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyBindingWithResponse(agentName, bindingId, requestOptions).getValue() + .toObject(TelephonyBinding.class); + } + + /** + * Update an agent telephony binding + * + * Updates a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param body The binding properties to update. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return a telephony binding owned by a voice agent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyBinding updateTelephonyBinding(String agentName, String bindingId, String ifMatch, + UpdateTelephonyBindingRequest body) { + // Generated convenience method for updateTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + JsonMergePatchHelper.getUpdateTelephonyBindingRequestAccessor().prepareModelForJsonMergePatch(body, true); + BinaryData bodyInBinaryData = BinaryData.fromObject(body); + // BinaryData.fromObject() will not fire serialization, use getLength() to fire serialization. + bodyInBinaryData.getLength(); + JsonMergePatchHelper.getUpdateTelephonyBindingRequestAccessor().prepareModelForJsonMergePatch(body, false); + return updateTelephonyBindingWithResponse(agentName, bindingId, ifMatch, bodyInBinaryData, requestOptions) + .getValue() + .toObject(TelephonyBinding.class); + } + + /** + * Delete an agent telephony binding + * + * Deletes a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public void deleteTelephonyBinding(String agentName, String bindingId, String ifMatch) { + // Generated convenience method for deleteTelephonyBindingWithResponse + RequestOptions requestOptions = new RequestOptions(); + deleteTelephonyBindingWithResponse(agentName, bindingId, ifMatch, requestOptions).getValue(); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose calls are listed. + * @param provider Filters calls by provider. + * @param status Filters calls by lifecycle status. + * @param startedAfter Includes calls that started at or after this Unix timestamp in seconds. + * @param startedBefore Includes calls that started at or before this Unix timestamp in seconds. + * @param limit A limit on the number of objects to be returned. Limit can range between 1 and 100, and the + * default is 20. + * @param order Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc` + * for descending order. + * @param after A cursor for use in pagination. `after` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list. + * @param before A cursor for use in pagination. `before` is an object ID that defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyCalls(String agentName, TelephonyProvider provider, + TelephonyCallStatus status, OffsetDateTime startedAfter, OffsetDateTime startedBefore, Integer limit, + PageOrder order, String after, String before) { + // Generated convenience method for listTelephonyCalls + RequestOptions requestOptions = new RequestOptions(); + if (provider != null) { + requestOptions.addQueryParam("provider", provider.toString(), false); + } + if (status != null) { + requestOptions.addQueryParam("status", status.toString(), false); + } + if (startedAfter != null) { + requestOptions.addQueryParam("started_after", String.valueOf(startedAfter.toEpochSecond()), false); + } + if (startedBefore != null) { + requestOptions.addQueryParam("started_before", String.valueOf(startedBefore.toEpochSecond()), false); + } + if (limit != null) { + requestOptions.addQueryParam("limit", String.valueOf(limit), false); + } + if (order != null) { + requestOptions.addQueryParam("order", order.toString(), false); + } + if (after != null) { + requestOptions.addQueryParam("after", after, false); + } + if (before != null) { + requestOptions.addQueryParam("before", before, false); + } + return serviceClient.listTelephonyCalls(agentName, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(TelephonyCallSummary.class)); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose calls are listed. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @Generated + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyCalls(String agentName) { + // Generated convenience method for listTelephonyCalls + RequestOptions requestOptions = new RequestOptions(); + return serviceClient.listTelephonyCalls(agentName, requestOptions) + .mapPage(bodyItemValue -> bodyItemValue.toObject(TelephonyCallSummary.class)); + } + + /** + * Get an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the call record. + * @param callId The service-generated call identifier. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyCallRecord getTelephonyCall(String agentName, String callId) { + // Generated convenience method for getTelephonyCallWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyCallWithResponse(agentName, callId, requestOptions).getValue() + .toObject(TelephonyCallRecord.class); + } + + /** + * Transfer an active agent telephony call + * + * Transfers an active inbound call to a configured target for the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param target The name of a transfer target configured for the voice agent. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return detailed diagnostics for a durable inbound call to a voice agent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyCallRecord transferTelephonyCall(String agentName, String callId, String target) { + // Generated convenience method for transferTelephonyCallWithResponse + RequestOptions requestOptions = new RequestOptions(); + TransferTelephonyCallRequest transferTelephonyCallRequestObj = new TransferTelephonyCallRequest(target); + BinaryData transferTelephonyCallRequest = BinaryData.fromObject(transferTelephonyCallRequestObj); + return transferTelephonyCallWithResponse(agentName, callId, transferTelephonyCallRequest, requestOptions) + .getValue() + .toObject(TelephonyCallRecord.class); + } + + /** + * End an active agent telephony call + * + * Ends an active inbound call owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return detailed diagnostics for a durable inbound call to a voice agent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyCallRecord endTelephonyCall(String agentName, String callId) { + // Generated convenience method for endTelephonyCallWithResponse + RequestOptions requestOptions = new RequestOptions(); + return endTelephonyCallWithResponse(agentName, callId, requestOptions).getValue() + .toObject(TelephonyCallRecord.class); + } + + /** + * Get agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose transfer targets are retrieved. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyTransferTargets getTelephonyTransferTargets(String agentName) { + // Generated convenience method for getTelephonyTransferTargetsWithResponse + RequestOptions requestOptions = new RequestOptions(); + return getTelephonyTransferTargetsWithResponse(agentName, requestOptions).getValue() + .toObject(TelephonyTransferTargets.class); + } + + /** + * Replace agent telephony transfer targets + * + * Replaces all transfer targets configured for the voice agent named in the path. + * + * @param agentName The name of the voice agent whose transfer targets are replaced. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param transferTargets The complete set of destinations to which the voice agent may transfer calls. An empty + * array clears all targets when replacing the configuration. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return the telephony transfer targets configured for one voice agent. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public TelephonyTransferTargets replaceTelephonyTransferTargets(String agentName, String ifMatch, + List transferTargets) { + // Generated convenience method for replaceTelephonyTransferTargetsWithResponse + RequestOptions requestOptions = new RequestOptions(); + ReplaceTelephonyTransferTargetsRequest replaceTelephonyTransferTargetsRequestObj + = new ReplaceTelephonyTransferTargetsRequest(transferTargets); + BinaryData replaceTelephonyTransferTargetsRequest + = BinaryData.fromObject(replaceTelephonyTransferTargetsRequestObj); + return replaceTelephonyTransferTargetsWithResponse(agentName, ifMatch, replaceTelephonyTransferTargetsRequest, + requestOptions).getValue().toObject(TelephonyTransferTargets.class); + } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesAsyncClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesAsyncClient.java index 75a5a5a295f55..0cc9021215edc 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesAsyncClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesAsyncClient.java @@ -67,7 +67,7 @@ public final class ToolboxesAsyncClient { * } * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -124,7 +124,7 @@ public final class ToolboxesAsyncClient { * created_at: long (Required) * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -194,6 +194,59 @@ public Mono> createToolboxVersionWithResponse(String name, * { * id: String (Required) * name: String (Required) + * updated_at: long (Required) + * versions (Required): { + * latest (Required): { + * metadata (Required): { + * String: String (Required) + * } + * id: String (Required) + * name: String (Required) + * version: String (Required) + * description: String (Optional) + * created_at: long (Required) + * tools (Required): [ + * (Required){ + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) + * name: String (Optional) + * description: String (Optional) + * tool_configs (Optional): { + * String (Required): { + * pin: Boolean (Optional) + * additional_search_text: String (Optional) + * } + * } + * } + * ] + * skills (Optional): [ + * (Optional){ + * type: String (Required) + * } + * ] + * policies (Optional): { + * rai_config (Optional): { + * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } + * } + * } + * } + * } * default_version: String (Required) * } * } @@ -245,6 +298,59 @@ public Mono> getToolboxWithResponse(String name, RequestOpt * { * id: String (Required) * name: String (Required) + * updated_at: long (Required) + * versions (Required): { + * latest (Required): { + * metadata (Required): { + * String: String (Required) + * } + * id: String (Required) + * name: String (Required) + * version: String (Required) + * description: String (Optional) + * created_at: long (Required) + * tools (Required): [ + * (Required){ + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) + * name: String (Optional) + * description: String (Optional) + * tool_configs (Optional): { + * String (Required): { + * pin: Boolean (Optional) + * additional_search_text: String (Optional) + * } + * } + * } + * ] + * skills (Optional): [ + * (Optional){ + * type: String (Required) + * } + * ] + * policies (Optional): { + * rai_config (Optional): { + * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } + * } + * } + * } + * } * default_version: String (Required) * } * } @@ -302,7 +408,7 @@ public PagedFlux listToolboxes(RequestOptions requestOptions) { * created_at: long (Required) * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -377,7 +483,7 @@ public PagedFlux listToolboxVersions(String name, RequestOptions req * created_at: long (Required) * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -456,6 +562,59 @@ public Mono> getToolboxVersionWithResponse(String name, Str * { * id: String (Required) * name: String (Required) + * updated_at: long (Required) + * versions (Required): { + * latest (Required): { + * metadata (Required): { + * String: String (Required) + * } + * id: String (Required) + * name: String (Required) + * version: String (Required) + * description: String (Optional) + * created_at: long (Required) + * tools (Required): [ + * (Required){ + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) + * name: String (Optional) + * description: String (Optional) + * tool_configs (Optional): { + * String (Required): { + * pin: Boolean (Optional) + * additional_search_text: String (Optional) + * } + * } + * } + * ] + * skills (Optional): [ + * (Optional){ + * type: String (Required) + * } + * ] + * policies (Optional): { + * rai_config (Optional): { + * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } + * } + * } + * } + * } * default_version: String (Required) * } * } @@ -880,4 +1039,50 @@ public Mono deleteToolboxVersion(String name, String version) { RequestOptions requestOptions = new RequestOptions(); return deleteToolboxVersionWithResponse(name, version, requestOptions).flatMap(FluxUtil::toMono); } + + /** + * Invoke the latest toolbox version through MCP + * + * Invokes the latest version of the specified toolbox through its MCP endpoint. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     String: BinaryData (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
content-typeStringThe content type of the MCP response body.
+ * + * @param name The name of the toolbox. + * @param contentType The content type of the MCP request body. + * @param request The MCP request body. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return anything along with {@link Response} on successful completion of {@link Mono}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> invokeLatestToolboxMcpWithResponse(String name, String contentType, + BinaryData request, RequestOptions requestOptions) { + return this.serviceClient.invokeLatestToolboxMcpWithResponseAsync(name, contentType, request, requestOptions); + } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesClient.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesClient.java index a527bf602af2f..116b5e21d8ee9 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesClient.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/ToolboxesClient.java @@ -61,7 +61,7 @@ public final class ToolboxesClient { * } * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -118,7 +118,7 @@ public final class ToolboxesClient { * created_at: long (Required) * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -187,6 +187,59 @@ public Response createToolboxVersionWithResponse(String name, Binary * { * id: String (Required) * name: String (Required) + * updated_at: long (Required) + * versions (Required): { + * latest (Required): { + * metadata (Required): { + * String: String (Required) + * } + * id: String (Required) + * name: String (Required) + * version: String (Required) + * description: String (Optional) + * created_at: long (Required) + * tools (Required): [ + * (Required){ + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) + * name: String (Optional) + * description: String (Optional) + * tool_configs (Optional): { + * String (Required): { + * pin: Boolean (Optional) + * additional_search_text: String (Optional) + * } + * } + * } + * ] + * skills (Optional): [ + * (Optional){ + * type: String (Required) + * } + * ] + * policies (Optional): { + * rai_config (Optional): { + * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } + * } + * } + * } + * } * default_version: String (Required) * } * } @@ -237,6 +290,59 @@ public Response getToolboxWithResponse(String name, RequestOptions r * { * id: String (Required) * name: String (Required) + * updated_at: long (Required) + * versions (Required): { + * latest (Required): { + * metadata (Required): { + * String: String (Required) + * } + * id: String (Required) + * name: String (Required) + * version: String (Required) + * description: String (Optional) + * created_at: long (Required) + * tools (Required): [ + * (Required){ + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) + * name: String (Optional) + * description: String (Optional) + * tool_configs (Optional): { + * String (Required): { + * pin: Boolean (Optional) + * additional_search_text: String (Optional) + * } + * } + * } + * ] + * skills (Optional): [ + * (Optional){ + * type: String (Required) + * } + * ] + * policies (Optional): { + * rai_config (Optional): { + * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } + * } + * } + * } + * } * default_version: String (Required) * } * } @@ -294,7 +400,7 @@ public PagedIterable listToolboxes(RequestOptions requestOptions) { * created_at: long (Required) * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -369,7 +475,7 @@ public PagedIterable listToolboxVersions(String name, RequestOptions * created_at: long (Required) * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -448,6 +554,59 @@ public Response getToolboxVersionWithResponse(String name, String ve * { * id: String (Required) * name: String (Required) + * updated_at: long (Required) + * versions (Required): { + * latest (Required): { + * metadata (Required): { + * String: String (Required) + * } + * id: String (Required) + * name: String (Required) + * version: String (Required) + * description: String (Optional) + * created_at: long (Required) + * tools (Required): [ + * (Required){ + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) + * name: String (Optional) + * description: String (Optional) + * tool_configs (Optional): { + * String (Required): { + * pin: Boolean (Optional) + * additional_search_text: String (Optional) + * } + * } + * } + * ] + * skills (Optional): [ + * (Optional){ + * type: String (Required) + * } + * ] + * policies (Optional): { + * rai_config (Optional): { + * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } + * } + * } + * } + * } * default_version: String (Required) * } * } @@ -819,4 +978,50 @@ public void deleteToolboxVersion(String name, String version) { RequestOptions requestOptions = new RequestOptions(); deleteToolboxVersionWithResponse(name, version, requestOptions).getValue(); } + + /** + * Invoke the latest toolbox version through MCP + * + * Invokes the latest version of the specified toolbox through its MCP endpoint. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     String: BinaryData (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
content-typeStringThe content type of the MCP response body.
+ * + * @param name The name of the toolbox. + * @param contentType The content type of the MCP request body. + * @param request The MCP request body. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return anything along with {@link Response}. + */ + @Generated + @ServiceMethod(returns = ReturnType.SINGLE) + public Response invokeLatestToolboxMcpWithResponse(String name, String contentType, BinaryData request, + RequestOptions requestOptions) { + return this.serviceClient.invokeLatestToolboxMcpWithResponse(name, contentType, request, requestOptions); + } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsClientImpl.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsClientImpl.java index 5bdc71f02a492..98573e5b5b9e6 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsClientImpl.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsClientImpl.java @@ -80,20 +80,6 @@ public SerializerAdapter getSerializerAdapter() { return this.serializerAdapter; } - /** - * The BetaAgentEndpointConversationsImpl object to access its operations. - */ - private final BetaAgentEndpointConversationsImpl betaAgentEndpointConversations; - - /** - * Gets the BetaAgentEndpointConversationsImpl object to access its operations. - * - * @return the BetaAgentEndpointConversationsImpl object. - */ - public BetaAgentEndpointConversationsImpl getBetaAgentEndpointConversations() { - return this.betaAgentEndpointConversations; - } - /** * The BetaMemoryStoresImpl object to access its operations. */ @@ -123,31 +109,45 @@ public BetaAgentsImpl getBetaAgents() { } /** - * The AgentsImpl object to access its operations. + * The BetaAgentTelephoniesImpl object to access its operations. */ - private final AgentsImpl agents; + private final BetaAgentTelephoniesImpl betaAgentTelephonies; /** - * Gets the AgentsImpl object to access its operations. + * Gets the BetaAgentTelephoniesImpl object to access its operations. * - * @return the AgentsImpl object. + * @return the BetaAgentTelephoniesImpl object. */ - public AgentsImpl getAgents() { - return this.agents; + public BetaAgentTelephoniesImpl getBetaAgentTelephonies() { + return this.betaAgentTelephonies; + } + + /** + * The BetaAgentEndpointConversationsImpl object to access its operations. + */ + private final BetaAgentEndpointConversationsImpl betaAgentEndpointConversations; + + /** + * Gets the BetaAgentEndpointConversationsImpl object to access its operations. + * + * @return the BetaAgentEndpointConversationsImpl object. + */ + public BetaAgentEndpointConversationsImpl getBetaAgentEndpointConversations() { + return this.betaAgentEndpointConversations; } /** - * The AgentTelephoniesImpl object to access its operations. + * The AgentsImpl object to access its operations. */ - private final AgentTelephoniesImpl agentTelephonies; + private final AgentsImpl agents; /** - * Gets the AgentTelephoniesImpl object to access its operations. + * Gets the AgentsImpl object to access its operations. * - * @return the AgentTelephoniesImpl object. + * @return the AgentsImpl object. */ - public AgentTelephoniesImpl getAgentTelephonies() { - return this.agentTelephonies; + public AgentsImpl getAgents() { + return this.agents; } /** @@ -212,11 +212,11 @@ public AgentsClientImpl(HttpPipeline httpPipeline, SerializerAdapter serializerA this.serializerAdapter = serializerAdapter; this.endpoint = endpoint; this.serviceVersion = serviceVersion; - this.betaAgentEndpointConversations = new BetaAgentEndpointConversationsImpl(this); this.betaMemoryStores = new BetaMemoryStoresImpl(this); this.betaAgents = new BetaAgentsImpl(this); + this.betaAgentTelephonies = new BetaAgentTelephoniesImpl(this); + this.betaAgentEndpointConversations = new BetaAgentEndpointConversationsImpl(this); this.agents = new AgentsImpl(this); - this.agentTelephonies = new AgentTelephoniesImpl(this); this.toolboxes = new ToolboxesImpl(this); } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java index aab77ad33586f..6ae6462cf6f34 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java @@ -25,7 +25,6 @@ import com.azure.core.exception.HttpResponseException; import com.azure.core.exception.ResourceModifiedException; import com.azure.core.exception.ResourceNotFoundException; -import com.azure.core.http.HttpHeaderName; import com.azure.core.http.rest.PagedFlux; import com.azure.core.http.rest.PagedIterable; import com.azure.core.http.rest.PagedResponse; @@ -35,10 +34,7 @@ import com.azure.core.http.rest.RestProxy; import com.azure.core.util.BinaryData; import com.azure.core.util.Context; -import com.azure.core.util.CoreUtils; -import com.azure.core.util.DateTimeRfc1123; import com.azure.core.util.FluxUtil; -import java.time.OffsetDateTime; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -126,28 +122,6 @@ Response createAgentSync(@HostParam("endpoint") String endpoint, @HeaderParam("Accept") String accept, @BodyParam("application/json") BinaryData createAgentRequest, RequestOptions requestOptions, Context context); - @Post("/agents:generate") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> generateAgent(@HostParam("endpoint") String endpoint, - @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, - @HeaderParam("Accept") String accept, @BodyParam("application/json") BinaryData body, - RequestOptions requestOptions, Context context); - - @Post("/agents:generate") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response generateAgentSync(@HostParam("endpoint") String endpoint, - @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, - @HeaderParam("Accept") String accept, @BodyParam("application/json") BinaryData body, - RequestOptions requestOptions, Context context); - // @Multipart not supported by RestProxy @Post("/agents") @ExpectedResponses({ 200 }) @@ -662,252 +636,6 @@ Response getSessionLogStreamSync(@HostParam("endpoint") String endpo @PathParam("session_id") String sessionId, @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); - @Post("/agents/{agent_name}/telephony/bindings") - @ExpectedResponses({ 201 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> createTelephonyBinding(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, - @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, - @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); - - @Post("/agents/{agent_name}/telephony/bindings") - @ExpectedResponses({ 201 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response createTelephonyBindingSync(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, - @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept, - @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context); - - @Get("/agents/{agent_name}/telephony/bindings") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> listTelephonyBindings(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, - @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); - - @Get("/agents/{agent_name}/telephony/bindings") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response listTelephonyBindingsSync(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, - @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); - - @Get("/agents/{agent_name}/telephony/bindings/{binding_id}") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> getTelephonyBinding(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, - RequestOptions requestOptions, Context context); - - @Get("/agents/{agent_name}/telephony/bindings/{binding_id}") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response getTelephonyBindingSync(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, - RequestOptions requestOptions, Context context); - - @Patch("/agents/{agent_name}/telephony/bindings/{binding_id}") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> updateTelephonyBinding(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId, - @HeaderParam("Content-Type") String contentType, @HeaderParam("If-Match") String ifMatch, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, - @BodyParam("application/merge-patch+json") BinaryData body, RequestOptions requestOptions, Context context); - - @Patch("/agents/{agent_name}/telephony/bindings/{binding_id}") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response updateTelephonyBindingSync(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId, - @HeaderParam("Content-Type") String contentType, @HeaderParam("If-Match") String ifMatch, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, - @BodyParam("application/merge-patch+json") BinaryData body, RequestOptions requestOptions, Context context); - - @Delete("/agents/{agent_name}/telephony/bindings/{binding_id}") - @ExpectedResponses({ 204 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> deleteTelephonyBinding(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId, - @HeaderParam("If-Match") String ifMatch, @QueryParam("api-version") String apiVersion, - RequestOptions requestOptions, Context context); - - @Delete("/agents/{agent_name}/telephony/bindings/{binding_id}") - @ExpectedResponses({ 204 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response deleteTelephonyBindingSync(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId, - @HeaderParam("If-Match") String ifMatch, @QueryParam("api-version") String apiVersion, - RequestOptions requestOptions, Context context); - - @Get("/agents/{agent_name}/telephony/calls") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> listTelephonyCalls(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, - @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); - - @Get("/agents/{agent_name}/telephony/calls") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response listTelephonyCallsSync(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, - @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); - - @Get("/agents/{agent_name}/telephony/calls/{call_id}") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> getTelephonyCall(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @PathParam("call_id") String callId, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, - RequestOptions requestOptions, Context context); - - @Get("/agents/{agent_name}/telephony/calls/{call_id}") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response getTelephonyCallSync(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @PathParam("call_id") String callId, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, - RequestOptions requestOptions, Context context); - - @Post("/agents/{agent_name}/telephony/calls/{call_id}:transfer") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> transferTelephonyCall(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @PathParam("call_id") String callId, - @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, - @HeaderParam("Accept") String accept, - @BodyParam("application/json") BinaryData transferTelephonyCallRequest, RequestOptions requestOptions, - Context context); - - @Post("/agents/{agent_name}/telephony/calls/{call_id}:transfer") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response transferTelephonyCallSync(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @PathParam("call_id") String callId, - @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, - @HeaderParam("Accept") String accept, - @BodyParam("application/json") BinaryData transferTelephonyCallRequest, RequestOptions requestOptions, - Context context); - - @Post("/agents/{agent_name}/telephony/calls/{call_id}:end") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> endTelephonyCall(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @PathParam("call_id") String callId, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, - RequestOptions requestOptions, Context context); - - @Post("/agents/{agent_name}/telephony/calls/{call_id}:end") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response endTelephonyCallSync(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @PathParam("call_id") String callId, - @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, - RequestOptions requestOptions, Context context); - - @Get("/agents/{agent_name}/telephony/transfer_targets") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> getTelephonyTransferTargets(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, - @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); - - @Get("/agents/{agent_name}/telephony/transfer_targets") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response getTelephonyTransferTargetsSync(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion, - @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); - - @Put("/agents/{agent_name}/telephony/transfer_targets") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Mono> replaceTelephonyTransferTargets(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @HeaderParam("If-Match") String ifMatch, - @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, - @HeaderParam("Accept") String accept, - @BodyParam("application/json") BinaryData replaceTelephonyTransferTargetsRequest, - RequestOptions requestOptions, Context context); - - @Put("/agents/{agent_name}/telephony/transfer_targets") - @ExpectedResponses({ 200 }) - @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) - @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) - @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) - @UnexpectedResponseExceptionType(HttpResponseException.class) - Response replaceTelephonyTransferTargetsSync(@HostParam("endpoint") String endpoint, - @PathParam("agent_name") String agentName, @HeaderParam("If-Match") String ifMatch, - @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType, - @HeaderParam("Accept") String accept, - @BodyParam("application/json") BinaryData replaceTelephonyTransferTargetsRequest, - RequestOptions requestOptions, Context context); - @Put("/agents/{agent_name}/endpoint/sessions/{agent_session_id}/files/content") @ExpectedResponses({ 201 }) @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) @@ -1098,6 +826,7 @@ Response listAgentConversationsSync(@HostParam("endpoint") String en * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -1237,6 +966,7 @@ public Mono> getAgentWithResponseAsync(String agentName, Re * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -1469,6 +1199,7 @@ public Response getAgentWithResponse(String agentName, RequestOption * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -1702,6 +1433,7 @@ public Mono> createAgentWithResponseAsync(BinaryData create * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -1827,18 +1559,14 @@ public Response createAgentWithResponse(BinaryData createAgentReques } /** - * Generate an agent - * - * Generates and creates an agent from kind-specific high-level inputs. - * The generated definition remains fully editable through the standard agent versioning operations. - *

Request Body Schema

- * - *
-     * {@code
-     * BinaryData
-     * }
-     * 
+ * Create a new code-based agent * + * Creates a new code-based agent. Uploads the code zip and creates the agent in a single call. + * The agent name is provided in the `x-ms-agent-name` header since POST /agents has no name in the URL path. + * The SHA-256 hex digest of the zip is provided in the `x-ms-code-zip-sha256` header for integrity and dedup. + * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is + * irrelevant). + * Maximum upload size is 250 MB. *

Response Body Schema

* *
@@ -1848,6 +1576,7 @@ public Response createAgentWithResponse(BinaryData createAgentReques
      *     id: String (Required)
      *     name: String (Required)
      *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
      *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
      *     versions (Required): {
      *         latest (Required): {
@@ -1956,7 +1685,11 @@ public Response createAgentWithResponse(BinaryData createAgentReques
      * }
      * 
* - * @param body The kind-specific inputs for generating and creating an agent. + * @param agentName The unique name that identifies the agent. Max 63 chars, must start and end with alphanumeric, + * hyphens allowed in the middle. + * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity + * verification. + * @param content The content multipart request content. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -1965,26 +1698,24 @@ public Response createAgentWithResponse(BinaryData createAgentReques * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> generateAgentWithResponseAsync(BinaryData body, RequestOptions requestOptions) { - final String contentType = "application/json"; + public Mono> createAgentFromCodeWithResponseInternalAsync(String agentName, + String codeZipSha256, BinaryData content, RequestOptions requestOptions) { + final String contentType = "multipart/form-data"; final String accept = "application/json"; - return FluxUtil.withContext(context -> service.generateAgent(this.client.getEndpoint(), - this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptions, context)); + return FluxUtil + .withContext(context -> service.createAgentFromCode(this.client.getEndpoint(), contentType, agentName, + codeZipSha256, this.client.getServiceVersion().getVersion(), accept, content, requestOptions, context)); } /** - * Generate an agent - * - * Generates and creates an agent from kind-specific high-level inputs. - * The generated definition remains fully editable through the standard agent versioning operations. - *

Request Body Schema

- * - *
-     * {@code
-     * BinaryData
-     * }
-     * 
+ * Create a new code-based agent * + * Creates a new code-based agent. Uploads the code zip and creates the agent in a single call. + * The agent name is provided in the `x-ms-agent-name` header since POST /agents has no name in the URL path. + * The SHA-256 hex digest of the zip is provided in the `x-ms-code-zip-sha256` header for integrity and dedup. + * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is + * irrelevant). + * Maximum upload size is 250 MB. *

Response Body Schema

* *
@@ -1994,6 +1725,7 @@ public Mono> generateAgentWithResponseAsync(BinaryData body
      *     id: String (Required)
      *     name: String (Required)
      *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
      *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
      *     versions (Required): {
      *         latest (Required): {
@@ -2102,7 +1834,11 @@ public Mono> generateAgentWithResponseAsync(BinaryData body
      * }
      * 
* - * @param body The kind-specific inputs for generating and creating an agent. + * @param agentName The unique name that identifies the agent. Max 63 chars, must start and end with alphanumeric, + * hyphens allowed in the middle. + * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity + * verification. + * @param content The content multipart request content. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2111,31 +1847,68 @@ public Mono> generateAgentWithResponseAsync(BinaryData body * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response generateAgentWithResponse(BinaryData body, RequestOptions requestOptions) { - final String contentType = "application/json"; + public Response createAgentFromCodeWithResponseInternal(String agentName, String codeZipSha256, + BinaryData content, RequestOptions requestOptions) { + final String contentType = "multipart/form-data"; final String accept = "application/json"; - return service.generateAgentSync(this.client.getEndpoint(), this.client.getServiceVersion().getVersion(), - contentType, accept, body, requestOptions, Context.NONE); + return service.createAgentFromCodeSync(this.client.getEndpoint(), contentType, agentName, codeZipSha256, + this.client.getServiceVersion().getVersion(), accept, content, requestOptions, Context.NONE); } /** - * Create a new code-based agent - * - * Creates a new code-based agent. Uploads the code zip and creates the agent in a single call. - * The agent name is provided in the `x-ms-agent-name` header since POST /agents has no name in the URL path. - * The SHA-256 hex digest of the zip is provided in the `x-ms-code-zip-sha256` header for integrity and dedup. - * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is - * irrelevant). - * Maximum upload size is 250 MB. - *

Response Body Schema

+ * Update an agent * - *
+     * Updates the agent by adding a new version if there are any changes to the agent definition.
+     * If no changes, returns the existing agent version.
+     * 

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     description: String (Optional)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
      * {@code
      * {
      *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
      *     id: String (Required)
      *     name: String (Required)
      *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
      *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
      *     versions (Required): {
      *         latest (Required): {
@@ -2244,11 +2017,8 @@ public Response generateAgentWithResponse(BinaryData body, RequestOp
      * }
      * 
* - * @param agentName The unique name that identifies the agent. Max 63 chars, must start and end with alphanumeric, - * hyphens allowed in the middle. - * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity - * verification. - * @param content The content multipart request content. + * @param agentName The name of the agent to retrieve. + * @param updateAgentRequest The updateAgentRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2257,24 +2027,59 @@ public Response generateAgentWithResponse(BinaryData body, RequestOp * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> createAgentFromCodeWithResponseInternalAsync(String agentName, - String codeZipSha256, BinaryData content, RequestOptions requestOptions) { - final String contentType = "multipart/form-data"; + public Mono> updateAgentWithResponseAsync(String agentName, BinaryData updateAgentRequest, + RequestOptions requestOptions) { + final String contentType = "application/json"; final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.createAgentFromCode(this.client.getEndpoint(), contentType, agentName, - codeZipSha256, this.client.getServiceVersion().getVersion(), accept, content, requestOptions, context)); + return FluxUtil.withContext(context -> service.updateAgent(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentRequest, requestOptions, + context)); } /** - * Create a new code-based agent + * Update an agent + * + * Updates the agent by adding a new version if there are any changes to the agent definition. + * If no changes, returns the existing agent version. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     description: String (Optional)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     * }
+     * }
+     * 
* - * Creates a new code-based agent. Uploads the code zip and creates the agent in a single call. - * The agent name is provided in the `x-ms-agent-name` header since POST /agents has no name in the URL path. - * The SHA-256 hex digest of the zip is provided in the `x-ms-code-zip-sha256` header for integrity and dedup. - * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is - * irrelevant). - * Maximum upload size is 250 MB. *

Response Body Schema

* *
@@ -2284,6 +2089,7 @@ public Mono> createAgentFromCodeWithResponseInternalAsync(S
      *     id: String (Required)
      *     name: String (Required)
      *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
      *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
      *     versions (Required): {
      *         latest (Required): {
@@ -2392,11 +2198,8 @@ public Mono> createAgentFromCodeWithResponseInternalAsync(S
      * }
      * 
* - * @param agentName The unique name that identifies the agent. Max 63 chars, must start and end with alphanumeric, - * hyphens allowed in the middle. - * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity - * verification. - * @param content The content multipart request content. + * @param agentName The name of the agent to retrieve. + * @param updateAgentRequest The updateAgentRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2405,58 +2208,23 @@ public Mono> createAgentFromCodeWithResponseInternalAsync(S * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response createAgentFromCodeWithResponseInternal(String agentName, String codeZipSha256, - BinaryData content, RequestOptions requestOptions) { - final String contentType = "multipart/form-data"; + public Response updateAgentWithResponse(String agentName, BinaryData updateAgentRequest, + RequestOptions requestOptions) { + final String contentType = "application/json"; final String accept = "application/json"; - return service.createAgentFromCodeSync(this.client.getEndpoint(), contentType, agentName, codeZipSha256, - this.client.getServiceVersion().getVersion(), accept, content, requestOptions, Context.NONE); + return service.updateAgentSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentRequest, requestOptions, + Context.NONE); } /** - * Update an agent - * - * Updates the agent by adding a new version if there are any changes to the agent definition. - * If no changes, returns the existing agent version. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Optional): {
-     *         String: String (Required)
-     *     }
-     *     description: String (Optional)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *             invocations_moderation (Optional): {
-     *                 input_content_type: String(json/text) (Optional)
-     *                 output_content_type: String(json/text) (Optional)
-     *                 response_mode: String(non_streaming/streaming/both) (Required)
-     *                 input_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 output_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 stream_selectors (Optional): [
-     *                      (Optional){
-     *                         event_type: String (Required)
-     *                         text_field: String (Optional)
-     *                     }
-     *                 ]
-     *             }
-     *         }
-     *     }
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     * }
-     * }
-     * 
+ * Update a code-based agent * + * Updates a code-based agent by uploading new code and creating a new version. + * If the code and definition are unchanged (matched by x-ms-code-zip-sha256 header), returns the existing version. + * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is + * irrelevant). + * Maximum upload size is 250 MB. *

Response Body Schema

* *
@@ -2466,6 +2234,7 @@ public Response createAgentFromCodeWithResponseInternal(String agent
      *     id: String (Required)
      *     name: String (Required)
      *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
      *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
      *     versions (Required): {
      *         latest (Required): {
@@ -2574,8 +2343,13 @@ public Response createAgentFromCodeWithResponseInternal(String agent
      * }
      * 
* - * @param agentName The name of the agent to retrieve. - * @param updateAgentRequest The updateAgentRequest parameter. + * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. + * - Must start and end with alphanumeric characters, + * - Can contain hyphens in the middle + * - Must not exceed 63 characters. + * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity + * verification. + * @param content The content multipart request content. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2584,59 +2358,23 @@ public Response createAgentFromCodeWithResponseInternal(String agent * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> updateAgentWithResponseAsync(String agentName, BinaryData updateAgentRequest, - RequestOptions requestOptions) { - final String contentType = "application/json"; + public Mono> updateAgentFromCodeWithResponseInternalAsync(String agentName, + String codeZipSha256, BinaryData content, RequestOptions requestOptions) { + final String contentType = "multipart/form-data"; final String accept = "application/json"; - return FluxUtil.withContext(context -> service.updateAgent(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentRequest, requestOptions, - context)); + return FluxUtil + .withContext(context -> service.updateAgentFromCode(this.client.getEndpoint(), agentName, contentType, + codeZipSha256, this.client.getServiceVersion().getVersion(), accept, content, requestOptions, context)); } /** - * Update an agent - * - * Updates the agent by adding a new version if there are any changes to the agent definition. - * If no changes, returns the existing agent version. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Optional): {
-     *         String: String (Required)
-     *     }
-     *     description: String (Optional)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *             invocations_moderation (Optional): {
-     *                 input_content_type: String(json/text) (Optional)
-     *                 output_content_type: String(json/text) (Optional)
-     *                 response_mode: String(non_streaming/streaming/both) (Required)
-     *                 input_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 output_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 stream_selectors (Optional): [
-     *                      (Optional){
-     *                         event_type: String (Required)
-     *                         text_field: String (Optional)
-     *                     }
-     *                 ]
-     *             }
-     *         }
-     *     }
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     * }
-     * }
-     * 
+ * Update a code-based agent * + * Updates a code-based agent by uploading new code and creating a new version. + * If the code and definition are unchanged (matched by x-ms-code-zip-sha256 header), returns the existing version. + * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is + * irrelevant). + * Maximum upload size is 250 MB. *

Response Body Schema

* *
@@ -2646,6 +2384,7 @@ public Mono> updateAgentWithResponseAsync(String agentName,
      *     id: String (Required)
      *     name: String (Required)
      *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
      *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
      *     versions (Required): {
      *         latest (Required): {
@@ -2754,8 +2493,13 @@ public Mono> updateAgentWithResponseAsync(String agentName,
      * }
      * 
* - * @param agentName The name of the agent to retrieve. - * @param updateAgentRequest The updateAgentRequest parameter. + * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. + * - Must start and end with alphanumeric characters, + * - Can contain hyphens in the middle + * - Must not exceed 63 characters. + * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity + * verification. + * @param content The content multipart request content. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2764,23 +2508,36 @@ public Mono> updateAgentWithResponseAsync(String agentName, * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response updateAgentWithResponse(String agentName, BinaryData updateAgentRequest, - RequestOptions requestOptions) { - final String contentType = "application/json"; + public Response updateAgentFromCodeWithResponseInternal(String agentName, String codeZipSha256, + BinaryData content, RequestOptions requestOptions) { + final String contentType = "multipart/form-data"; final String accept = "application/json"; - return service.updateAgentSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentRequest, requestOptions, - Context.NONE); + return service.updateAgentFromCodeSync(this.client.getEndpoint(), agentName, contentType, codeZipSha256, + this.client.getServiceVersion().getVersion(), accept, content, requestOptions, Context.NONE); } /** - * Update a code-based agent + * Create an agent from a manifest + * + * Imports the provided manifest to create an agent and returns the created resource. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     description: String (Optional)
+     *     manifest_id: String (Required)
+     *     parameter_values (Required): {
+     *         String: BinaryData (Required)
+     *     }
+     * }
+     * }
+     * 
* - * Updates a code-based agent by uploading new code and creating a new version. - * If the code and definition are unchanged (matched by x-ms-code-zip-sha256 header), returns the existing version. - * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is - * irrelevant). - * Maximum upload size is 250 MB. *

Response Body Schema

* *
@@ -2790,6 +2547,7 @@ public Response updateAgentWithResponse(String agentName, BinaryData
      *     id: String (Required)
      *     name: String (Required)
      *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
      *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
      *     versions (Required): {
      *         latest (Required): {
@@ -2898,13 +2656,7 @@ public Response updateAgentWithResponse(String agentName, BinaryData
      * }
      * 
* - * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. - * - Must start and end with alphanumeric characters, - * - Can contain hyphens in the middle - * - Must not exceed 63 characters. - * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity - * verification. - * @param content The content multipart request content. + * @param createAgentFromManifestRequest The createAgentFromManifestRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -2913,23 +2665,37 @@ public Response updateAgentWithResponse(String agentName, BinaryData * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> updateAgentFromCodeWithResponseInternalAsync(String agentName, - String codeZipSha256, BinaryData content, RequestOptions requestOptions) { - final String contentType = "multipart/form-data"; + public Mono> createAgentFromManifestWithResponseAsync( + BinaryData createAgentFromManifestRequest, RequestOptions requestOptions) { + final String contentType = "application/json"; final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.updateAgentFromCode(this.client.getEndpoint(), agentName, contentType, - codeZipSha256, this.client.getServiceVersion().getVersion(), accept, content, requestOptions, context)); + return FluxUtil.withContext(context -> service.createAgentFromManifest(this.client.getEndpoint(), + this.client.getServiceVersion().getVersion(), contentType, accept, createAgentFromManifestRequest, + requestOptions, context)); } /** - * Update a code-based agent + * Create an agent from a manifest + * + * Imports the provided manifest to create an agent and returns the created resource. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     name: String (Required)
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     description: String (Optional)
+     *     manifest_id: String (Required)
+     *     parameter_values (Required): {
+     *         String: BinaryData (Required)
+     *     }
+     * }
+     * }
+     * 
* - * Updates a code-based agent by uploading new code and creating a new version. - * If the code and definition are unchanged (matched by x-ms-code-zip-sha256 header), returns the existing version. - * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is - * irrelevant). - * Maximum upload size is 250 MB. *

Response Body Schema

* *
@@ -2939,6 +2705,7 @@ public Mono> updateAgentFromCodeWithResponseInternalAsync(S
      *     id: String (Required)
      *     name: String (Required)
      *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
      *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
      *     versions (Required): {
      *         latest (Required): {
@@ -3047,13 +2814,7 @@ public Mono> updateAgentFromCodeWithResponseInternalAsync(S
      * }
      * 
* - * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. - * - Must start and end with alphanumeric characters, - * - Can contain hyphens in the middle - * - Must not exceed 63 characters. - * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity - * verification. - * @param content The content multipart request content. + * @param createAgentFromManifestRequest The createAgentFromManifestRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -3062,24 +2823,25 @@ public Mono> updateAgentFromCodeWithResponseInternalAsync(S * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response updateAgentFromCodeWithResponseInternal(String agentName, String codeZipSha256, - BinaryData content, RequestOptions requestOptions) { - final String contentType = "multipart/form-data"; + public Response createAgentFromManifestWithResponse(BinaryData createAgentFromManifestRequest, + RequestOptions requestOptions) { + final String contentType = "application/json"; final String accept = "application/json"; - return service.updateAgentFromCodeSync(this.client.getEndpoint(), agentName, contentType, codeZipSha256, - this.client.getServiceVersion().getVersion(), accept, content, requestOptions, Context.NONE); + return service.createAgentFromManifestSync(this.client.getEndpoint(), + this.client.getServiceVersion().getVersion(), contentType, accept, createAgentFromManifestRequest, + requestOptions, Context.NONE); } /** - * Create an agent from a manifest + * Update an agent from a manifest * - * Imports the provided manifest to create an agent and returns the created resource. + * Updates the agent from a manifest by adding a new version if there are any changes to the agent definition. + * If no changes, returns the existing agent version. *

Request Body Schema

* *
      * {@code
      * {
-     *     name: String (Required)
      *     metadata (Optional): {
      *         String: String (Required)
      *     }
@@ -3101,6 +2863,7 @@ public Response updateAgentFromCodeWithResponseInternal(String agent
      *     id: String (Required)
      *     name: String (Required)
      *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
      *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
      *     versions (Required): {
      *         latest (Required): {
@@ -3209,7 +2972,8 @@ public Response updateAgentFromCodeWithResponseInternal(String agent
      * }
      * 
* - * @param createAgentFromManifestRequest The createAgentFromManifestRequest parameter. + * @param agentName The name of the agent to update. + * @param updateAgentFromManifestRequest The updateAgentFromManifestRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -3218,25 +2982,25 @@ public Response updateAgentFromCodeWithResponseInternal(String agent * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> createAgentFromManifestWithResponseAsync( - BinaryData createAgentFromManifestRequest, RequestOptions requestOptions) { + public Mono> updateAgentFromManifestWithResponseAsync(String agentName, + BinaryData updateAgentFromManifestRequest, RequestOptions requestOptions) { final String contentType = "application/json"; final String accept = "application/json"; - return FluxUtil.withContext(context -> service.createAgentFromManifest(this.client.getEndpoint(), - this.client.getServiceVersion().getVersion(), contentType, accept, createAgentFromManifestRequest, + return FluxUtil.withContext(context -> service.updateAgentFromManifest(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentFromManifestRequest, requestOptions, context)); } /** - * Create an agent from a manifest + * Update an agent from a manifest * - * Imports the provided manifest to create an agent and returns the created resource. + * Updates the agent from a manifest by adding a new version if there are any changes to the agent definition. + * If no changes, returns the existing agent version. *

Request Body Schema

* *
      * {@code
      * {
-     *     name: String (Required)
      *     metadata (Optional): {
      *         String: String (Required)
      *     }
@@ -3258,6 +3022,7 @@ public Mono> createAgentFromManifestWithResponseAsync(
      *     id: String (Required)
      *     name: String (Required)
      *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
      *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
      *     versions (Required): {
      *         latest (Required): {
@@ -3366,7 +3131,8 @@ public Mono> createAgentFromManifestWithResponseAsync(
      * }
      * 
* - * @param createAgentFromManifestRequest The createAgentFromManifestRequest parameter. + * @param agentName The name of the agent to update. + * @param updateAgentFromManifestRequest The updateAgentFromManifestRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -3375,37 +3141,126 @@ public Mono> createAgentFromManifestWithResponseAsync( * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response createAgentFromManifestWithResponse(BinaryData createAgentFromManifestRequest, - RequestOptions requestOptions) { + public Response updateAgentFromManifestWithResponse(String agentName, + BinaryData updateAgentFromManifestRequest, RequestOptions requestOptions) { final String contentType = "application/json"; final String accept = "application/json"; - return service.createAgentFromManifestSync(this.client.getEndpoint(), - this.client.getServiceVersion().getVersion(), contentType, accept, createAgentFromManifestRequest, + return service.updateAgentFromManifestSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentFromManifestRequest, requestOptions, Context.NONE); } /** - * Update an agent from a manifest + * Delete an agent * - * Updates the agent from a manifest by adding a new version if there are any changes to the agent definition. - * If no changes, returns the existing agent version. - *

Request Body Schema

+ * Deletes an agent. For hosted agents, if any version has active sessions, the request + * is rejected with HTTP 409 unless `force` is set to true. When force is true, all + * associated sessions are cascade-deleted along with the agent and its versions. + *

Query Parameters

+ * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
forceBooleanNoFor Hosted Agents, if `true`, force-deletes the agent even if + * its versions have active sessions, cascading deletion to all associated sessions. The service defaults to `false` + * if a value is not specified by the caller. This value is not relevant for other Agent types.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

* *
      * {@code
      * {
-     *     metadata (Optional): {
-     *         String: String (Required)
-     *     }
-     *     description: String (Optional)
-     *     manifest_id: String (Required)
-     *     parameter_values (Required): {
-     *         String: BinaryData (Required)
-     *     }
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     name: String (Required)
+     *     deleted: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent to delete. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a deleted agent Object along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> internalDeleteAgentWithResponseAsync(String agentName, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.internalDeleteAgent(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Delete an agent + * + * Deletes an agent. For hosted agents, if any version has active sessions, the request + * is rejected with HTTP 409 unless `force` is set to true. When force is true, all + * associated sessions are cascade-deleted along with the agent and its versions. + *

Query Parameters

+ * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
forceBooleanNoFor Hosted Agents, if `true`, force-deletes the agent even if + * its versions have active sessions, cascading deletion to all associated sessions. The service defaults to `false` + * if a value is not specified by the caller. This value is not relevant for other Agent types.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     name: String (Required)
+     *     deleted: boolean (Required)
      * }
      * }
      * 
* + * @param agentName The name of the agent to delete. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a deleted agent Object along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response internalDeleteAgentWithResponse(String agentName, RequestOptions requestOptions) { + final String accept = "application/json"; + return service.internalDeleteAgentSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * List agents + * + * Returns a paged collection of agent resources. + *

Query Parameters

+ * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
kindStringNoFilter agents by kind. If not provided, all agents are returned. + * Allowed values: "prompt", "hosted", "workflow", "external", "voice".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
@@ -3415,6 +3270,7 @@ public Response createAgentFromManifestWithResponse(BinaryData creat
      *     id: String (Required)
      *     name: String (Required)
      *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
      *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
      *     versions (Required): {
      *         latest (Required): {
@@ -3523,47 +3379,50 @@ public Response createAgentFromManifestWithResponse(BinaryData creat
      * }
      * 
* - * @param agentName The name of the agent to update. - * @param updateAgentFromManifestRequest The updateAgentFromManifestRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response} on successful completion of {@link Mono}. + * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion + * of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> updateAgentFromManifestWithResponseAsync(String agentName, - BinaryData updateAgentFromManifestRequest, RequestOptions requestOptions) { - final String contentType = "application/json"; + private Mono> listAgentsSinglePageAsync(RequestOptions requestOptions) { final String accept = "application/json"; - return FluxUtil.withContext(context -> service.updateAgentFromManifest(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentFromManifestRequest, - requestOptions, context)); + return FluxUtil + .withContext(context -> service.listAgents(this.client.getEndpoint(), + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) + .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null)); } /** - * Update an agent from a manifest - * - * Updates the agent from a manifest by adding a new version if there are any changes to the agent definition. - * If no changes, returns the existing agent version. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Optional): {
-     *         String: String (Required)
-     *     }
-     *     description: String (Optional)
-     *     manifest_id: String (Required)
-     *     parameter_values (Required): {
-     *         String: BinaryData (Required)
-     *     }
-     * }
-     * }
-     * 
+ * List agents * + * Returns a paged collection of agent resources. + *

Query Parameters

+ * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
kindStringNoFilter agents by kind. If not provided, all agents are returned. + * Allowed values: "prompt", "hosted", "workflow", "external", "voice".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
@@ -3573,6 +3432,7 @@ public Mono> updateAgentFromManifestWithResponseAsync(Strin
      *     id: String (Required)
      *     name: String (Required)
      *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
      *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
      *     versions (Required): {
      *         latest (Required): {
@@ -3681,108 +3541,16 @@ public Mono> updateAgentFromManifestWithResponseAsync(Strin
      * }
      * 
* - * @param agentName The name of the agent to update. - * @param updateAgentFromManifestRequest The updateAgentFromManifestRequest parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response updateAgentFromManifestWithResponse(String agentName, - BinaryData updateAgentFromManifestRequest, RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - return service.updateAgentFromManifestSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, updateAgentFromManifestRequest, - requestOptions, Context.NONE); - } - - /** - * Delete an agent - * - * Deletes an agent. For hosted agents, if any version has active sessions, the request - * is rejected with HTTP 409 unless `force` is set to true. When force is true, all - * associated sessions are cascade-deleted along with the agent and its versions. - *

Query Parameters

- * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
forceBooleanNoFor Hosted Agents, if `true`, force-deletes the agent even if - * its versions have active sessions, cascading deletion to all associated sessions. The service defaults to `false` - * if a value is not specified by the caller. This value is not relevant for other Agent types.
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     name: String (Required)
-     *     deleted: boolean (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the agent to delete. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a deleted agent Object along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> internalDeleteAgentWithResponseAsync(String agentName, - RequestOptions requestOptions) { - final String accept = "application/json"; - return FluxUtil.withContext(context -> service.internalDeleteAgent(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); - } - - /** - * Delete an agent - * - * Deletes an agent. For hosted agents, if any version has active sessions, the request - * is rejected with HTTP 409 unless `force` is set to true. When force is true, all - * associated sessions are cascade-deleted along with the agent and its versions. - *

Query Parameters

- * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
forceBooleanNoFor Hosted Agents, if `true`, force-deletes the agent even if - * its versions have active sessions, cascading deletion to all associated sessions. The service defaults to `false` - * if a value is not specified by the caller. This value is not relevant for other Agent types.
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     name: String (Required)
-     *     deleted: boolean (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the agent to delete. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a deleted agent Object along with {@link Response}. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response internalDeleteAgentWithResponse(String agentName, RequestOptions requestOptions) { - final String accept = "application/json"; - return service.internalDeleteAgentSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listAgentsAsync(RequestOptions requestOptions) { + return new PagedFlux<>(() -> listAgentsSinglePageAsync(requestOptions)); } /** @@ -3820,6 +3588,7 @@ public Response internalDeleteAgentWithResponse(String agentName, Re * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -3933,17 +3702,15 @@ public Response internalDeleteAgentWithResponse(String agentName, Re * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion - * of {@link Mono}. + * @return the response data for a requested list of items along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listAgentsSinglePageAsync(RequestOptions requestOptions) { + private PagedResponse listAgentsSinglePage(RequestOptions requestOptions) { final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.listAgents(this.client.getEndpoint(), - this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - getValues(res.getValue(), "data"), null, null)); + Response res = service.listAgentsSync(this.client.getEndpoint(), + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null); } /** @@ -3981,6 +3748,7 @@ private Mono> listAgentsSinglePageAsync(RequestOptions * id: String (Required) * name: String (Required) * state: String(enabled/disabled) (Required) + * configuration_state: String(enabled/disabled) (Required) * state_source: String(agent_instance_identity/agent_blueprint) (Optional) * versions (Required): { * latest (Required): { @@ -4094,1806 +3862,66 @@ private Mono> listAgentsSinglePageAsync(RequestOptions * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. */ @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedFlux listAgentsAsync(RequestOptions requestOptions) { - return new PagedFlux<>(() -> listAgentsSinglePageAsync(requestOptions)); + public PagedIterable listAgents(RequestOptions requestOptions) { + return new PagedIterable<>(() -> listAgentsSinglePage(requestOptions)); } /** - * List agents + * Create an agent version + * + * Creates a new version for the specified agent and returns the created version resource. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     description: String (Optional)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     *     digital_worker_type: String(m365) (Optional)
+     *     draft: Boolean (Optional)
+     * }
+     * }
+     * 
* - * Returns a paged collection of agent resources. - *

Query Parameters

- * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
kindStringNoFilter agents by kind. If not provided, all agents are returned. - * Allowed values: "prompt", "hosted", "workflow", "external", "voice".
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
      * {@code
      * {
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     state: String(enabled/disabled) (Required)
-     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
-     *     versions (Required): {
-     *         latest (Required): {
-     *             metadata (Required): {
-     *                 String: String (Required)
-     *             }
-     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *             id: String (Required)
-     *             name: String (Required)
-     *             version: String (Required)
-     *             description: String (Optional)
-     *             created_at: long (Required)
-     *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *                 rai_config (Optional): {
-     *                     rai_policy_name: String (Required)
-     *                     invocations_moderation (Optional): {
-     *                         input_content_type: String(json/text) (Optional)
-     *                         output_content_type: String(json/text) (Optional)
-     *                         response_mode: String(non_streaming/streaming/both) (Required)
-     *                         input_paths (Optional): [
-     *                             String (Optional)
-     *                         ]
-     *                         output_paths (Optional): [
-     *                             String (Optional)
-     *                         ]
-     *                         stream_selectors (Optional): [
-     *                              (Optional){
-     *                                 event_type: String (Required)
-     *                                 text_field: String (Optional)
-     *                             }
-     *                         ]
-     *                     }
-     *                 }
-     *             }
-     *             draft: Boolean (Optional)
-     *             status: String(creating/active/failed/deleting/deleted) (Optional)
-     *             instance_identity (Optional): {
-     *                 principal_id: String (Required)
-     *                 client_id: String (Required)
-     *                 status: String(active/disabled) (Optional)
-     *             }
-     *             blueprint (Optional): (recursive schema, see blueprint above)
-     *             blueprint_reference (Optional): {
-     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
-     *             }
-     *             agent_guid: String (Optional)
-     *         }
-     *     }
-     *     agent_endpoint (Optional): {
-     *         version_selector (Optional): {
-     *             version_selection_rules (Optional, Required on create): [
-     *                  (Optional, Required on create){
-     *                     type: String(FixedRatio) (Required)
-     *                     agent_version: String (Optional, Required on create)
-     *                 }
-     *             ]
-     *         }
-     *         protocol_configuration (Optional): {
-     *             activity (Optional): {
-     *                 enable_m365_public_endpoint: Boolean (Optional)
-     *                 access_boundaries (Optional): [
-     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
-     *                 ]
-     *             }
-     *             responses (Optional): {
-     *             }
-     *             a2a (Optional): {
-     *             }
-     *             mcp (Optional): {
-     *             }
-     *             invocations (Optional): {
-     *             }
-     *             invocations_ws (Optional): {
-     *             }
-     *         }
-     *         authorization_schemes (Optional): [
-     *              (Optional){
-     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
-     *             }
-     *         ]
-     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
-     *     }
-     *     digital_worker_type: String(m365) (Optional)
-     *     instance_identity (Optional): (recursive schema, see instance_identity above)
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): (recursive schema, see blueprint_reference above)
-     *     agent_card (Optional): {
-     *         version: String (Optional, Required on create)
-     *         description: String (Optional)
-     *         skills (Optional, Required on create): [
-     *              (Optional, Required on create){
-     *                 id: String (Optional, Required on create)
-     *                 name: String (Optional, Required on create)
-     *                 description: String (Optional)
-     *                 tags (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 examples (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *             }
-     *         ]
-     *     }
-     * }
-     * }
-     * 
- * - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items along with {@link PagedResponse}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private PagedResponse listAgentsSinglePage(RequestOptions requestOptions) { - final String accept = "application/json"; - Response res = service.listAgentsSync(this.client.getEndpoint(), - this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); - return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - getValues(res.getValue(), "data"), null, null); - } - - /** - * List agents - * - * Returns a paged collection of agent resources. - *

Query Parameters

- * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
kindStringNoFilter agents by kind. If not provided, all agents are returned. - * Allowed values: "prompt", "hosted", "workflow", "external", "voice".
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     state: String(enabled/disabled) (Required)
-     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
-     *     versions (Required): {
-     *         latest (Required): {
-     *             metadata (Required): {
-     *                 String: String (Required)
-     *             }
-     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *             id: String (Required)
-     *             name: String (Required)
-     *             version: String (Required)
-     *             description: String (Optional)
-     *             created_at: long (Required)
-     *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *                 rai_config (Optional): {
-     *                     rai_policy_name: String (Required)
-     *                     invocations_moderation (Optional): {
-     *                         input_content_type: String(json/text) (Optional)
-     *                         output_content_type: String(json/text) (Optional)
-     *                         response_mode: String(non_streaming/streaming/both) (Required)
-     *                         input_paths (Optional): [
-     *                             String (Optional)
-     *                         ]
-     *                         output_paths (Optional): [
-     *                             String (Optional)
-     *                         ]
-     *                         stream_selectors (Optional): [
-     *                              (Optional){
-     *                                 event_type: String (Required)
-     *                                 text_field: String (Optional)
-     *                             }
-     *                         ]
-     *                     }
-     *                 }
-     *             }
-     *             draft: Boolean (Optional)
-     *             status: String(creating/active/failed/deleting/deleted) (Optional)
-     *             instance_identity (Optional): {
-     *                 principal_id: String (Required)
-     *                 client_id: String (Required)
-     *                 status: String(active/disabled) (Optional)
-     *             }
-     *             blueprint (Optional): (recursive schema, see blueprint above)
-     *             blueprint_reference (Optional): {
-     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
-     *             }
-     *             agent_guid: String (Optional)
-     *         }
-     *     }
-     *     agent_endpoint (Optional): {
-     *         version_selector (Optional): {
-     *             version_selection_rules (Optional, Required on create): [
-     *                  (Optional, Required on create){
-     *                     type: String(FixedRatio) (Required)
-     *                     agent_version: String (Optional, Required on create)
-     *                 }
-     *             ]
-     *         }
-     *         protocol_configuration (Optional): {
-     *             activity (Optional): {
-     *                 enable_m365_public_endpoint: Boolean (Optional)
-     *                 access_boundaries (Optional): [
-     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
-     *                 ]
-     *             }
-     *             responses (Optional): {
-     *             }
-     *             a2a (Optional): {
-     *             }
-     *             mcp (Optional): {
-     *             }
-     *             invocations (Optional): {
-     *             }
-     *             invocations_ws (Optional): {
-     *             }
-     *         }
-     *         authorization_schemes (Optional): [
-     *              (Optional){
-     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
-     *             }
-     *         ]
-     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
-     *     }
-     *     digital_worker_type: String(m365) (Optional)
-     *     instance_identity (Optional): (recursive schema, see instance_identity above)
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): (recursive schema, see blueprint_reference above)
-     *     agent_card (Optional): {
-     *         version: String (Optional, Required on create)
-     *         description: String (Optional)
-     *         skills (Optional, Required on create): [
-     *              (Optional, Required on create){
-     *                 id: String (Optional, Required on create)
-     *                 name: String (Optional, Required on create)
-     *                 description: String (Optional)
-     *                 tags (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 examples (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *             }
-     *         ]
-     *     }
-     * }
-     * }
-     * 
- * - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. - */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listAgents(RequestOptions requestOptions) { - return new PagedIterable<>(() -> listAgentsSinglePage(requestOptions)); - } - - /** - * Create an agent version - * - * Creates a new version for the specified agent and returns the created version resource. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Optional): {
-     *         String: String (Required)
-     *     }
-     *     description: String (Optional)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *             invocations_moderation (Optional): {
-     *                 input_content_type: String(json/text) (Optional)
-     *                 output_content_type: String(json/text) (Optional)
-     *                 response_mode: String(non_streaming/streaming/both) (Required)
-     *                 input_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 output_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 stream_selectors (Optional): [
-     *                      (Optional){
-     *                         event_type: String (Required)
-     *                         text_field: String (Optional)
-     *                     }
-     *                 ]
-     *             }
-     *         }
-     *     }
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     *     digital_worker_type: String(m365) (Optional)
-     *     draft: Boolean (Optional)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Required): {
-     *         String: String (Required)
-     *     }
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     version: String (Required)
-     *     description: String (Optional)
-     *     created_at: long (Required)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *             invocations_moderation (Optional): {
-     *                 input_content_type: String(json/text) (Optional)
-     *                 output_content_type: String(json/text) (Optional)
-     *                 response_mode: String(non_streaming/streaming/both) (Required)
-     *                 input_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 output_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 stream_selectors (Optional): [
-     *                      (Optional){
-     *                         event_type: String (Required)
-     *                         text_field: String (Optional)
-     *                     }
-     *                 ]
-     *             }
-     *         }
-     *     }
-     *     draft: Boolean (Optional)
-     *     status: String(creating/active/failed/deleting/deleted) (Optional)
-     *     instance_identity (Optional): {
-     *         principal_id: String (Required)
-     *         client_id: String (Required)
-     *         status: String(active/disabled) (Optional)
-     *     }
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     *     agent_guid: String (Optional)
-     * }
-     * }
-     * 
- * - * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. - * - Must start and end with alphanumeric characters, - * - Can contain hyphens in the middle - * - Must not exceed 63 characters. - * @param createAgentVersionRequest The createAgentVersionRequest parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> createAgentVersionWithResponseAsync(String agentName, - BinaryData createAgentVersionRequest, RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - return FluxUtil.withContext(context -> service.createAgentVersion(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, createAgentVersionRequest, - requestOptions, context)); - } - - /** - * Create an agent version - * - * Creates a new version for the specified agent and returns the created version resource. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Optional): {
-     *         String: String (Required)
-     *     }
-     *     description: String (Optional)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *             invocations_moderation (Optional): {
-     *                 input_content_type: String(json/text) (Optional)
-     *                 output_content_type: String(json/text) (Optional)
-     *                 response_mode: String(non_streaming/streaming/both) (Required)
-     *                 input_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 output_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 stream_selectors (Optional): [
-     *                      (Optional){
-     *                         event_type: String (Required)
-     *                         text_field: String (Optional)
-     *                     }
-     *                 ]
-     *             }
-     *         }
-     *     }
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     *     digital_worker_type: String(m365) (Optional)
-     *     draft: Boolean (Optional)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Required): {
-     *         String: String (Required)
-     *     }
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     version: String (Required)
-     *     description: String (Optional)
-     *     created_at: long (Required)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *             invocations_moderation (Optional): {
-     *                 input_content_type: String(json/text) (Optional)
-     *                 output_content_type: String(json/text) (Optional)
-     *                 response_mode: String(non_streaming/streaming/both) (Required)
-     *                 input_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 output_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 stream_selectors (Optional): [
-     *                      (Optional){
-     *                         event_type: String (Required)
-     *                         text_field: String (Optional)
-     *                     }
-     *                 ]
-     *             }
-     *         }
-     *     }
-     *     draft: Boolean (Optional)
-     *     status: String(creating/active/failed/deleting/deleted) (Optional)
-     *     instance_identity (Optional): {
-     *         principal_id: String (Required)
-     *         client_id: String (Required)
-     *         status: String(active/disabled) (Optional)
-     *     }
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     *     agent_guid: String (Optional)
-     * }
-     * }
-     * 
- * - * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. - * - Must start and end with alphanumeric characters, - * - Can contain hyphens in the middle - * - Must not exceed 63 characters. - * @param createAgentVersionRequest The createAgentVersionRequest parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response createAgentVersionWithResponse(String agentName, BinaryData createAgentVersionRequest, - RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - return service.createAgentVersionSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, createAgentVersionRequest, - requestOptions, Context.NONE); - } - - /** - * Create an agent version from manifest - * - * Imports the provided manifest to create a new version for the specified agent. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Optional): {
-     *         String: String (Required)
-     *     }
-     *     description: String (Optional)
-     *     manifest_id: String (Required)
-     *     parameter_values (Required): {
-     *         String: BinaryData (Required)
-     *     }
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Required): {
-     *         String: String (Required)
-     *     }
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     version: String (Required)
-     *     description: String (Optional)
-     *     created_at: long (Required)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *             invocations_moderation (Optional): {
-     *                 input_content_type: String(json/text) (Optional)
-     *                 output_content_type: String(json/text) (Optional)
-     *                 response_mode: String(non_streaming/streaming/both) (Required)
-     *                 input_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 output_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 stream_selectors (Optional): [
-     *                      (Optional){
-     *                         event_type: String (Required)
-     *                         text_field: String (Optional)
-     *                     }
-     *                 ]
-     *             }
-     *         }
-     *     }
-     *     draft: Boolean (Optional)
-     *     status: String(creating/active/failed/deleting/deleted) (Optional)
-     *     instance_identity (Optional): {
-     *         principal_id: String (Required)
-     *         client_id: String (Required)
-     *         status: String(active/disabled) (Optional)
-     *     }
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     *     agent_guid: String (Optional)
-     * }
-     * }
-     * 
- * - * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. - * - Must start and end with alphanumeric characters, - * - Can contain hyphens in the middle - * - Must not exceed 63 characters. - * @param createAgentVersionFromManifestRequest The createAgentVersionFromManifestRequest parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> createAgentVersionFromManifestWithResponseAsync(String agentName, - BinaryData createAgentVersionFromManifestRequest, RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - return FluxUtil.withContext(context -> service.createAgentVersionFromManifest(this.client.getEndpoint(), - agentName, this.client.getServiceVersion().getVersion(), contentType, accept, - createAgentVersionFromManifestRequest, requestOptions, context)); - } - - /** - * Create an agent version from manifest - * - * Imports the provided manifest to create a new version for the specified agent. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Optional): {
-     *         String: String (Required)
-     *     }
-     *     description: String (Optional)
-     *     manifest_id: String (Required)
-     *     parameter_values (Required): {
-     *         String: BinaryData (Required)
-     *     }
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Required): {
-     *         String: String (Required)
-     *     }
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     version: String (Required)
-     *     description: String (Optional)
-     *     created_at: long (Required)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *             invocations_moderation (Optional): {
-     *                 input_content_type: String(json/text) (Optional)
-     *                 output_content_type: String(json/text) (Optional)
-     *                 response_mode: String(non_streaming/streaming/both) (Required)
-     *                 input_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 output_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 stream_selectors (Optional): [
-     *                      (Optional){
-     *                         event_type: String (Required)
-     *                         text_field: String (Optional)
-     *                     }
-     *                 ]
-     *             }
-     *         }
-     *     }
-     *     draft: Boolean (Optional)
-     *     status: String(creating/active/failed/deleting/deleted) (Optional)
-     *     instance_identity (Optional): {
-     *         principal_id: String (Required)
-     *         client_id: String (Required)
-     *         status: String(active/disabled) (Optional)
-     *     }
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     *     agent_guid: String (Optional)
-     * }
-     * }
-     * 
- * - * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. - * - Must start and end with alphanumeric characters, - * - Can contain hyphens in the middle - * - Must not exceed 63 characters. - * @param createAgentVersionFromManifestRequest The createAgentVersionFromManifestRequest parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response createAgentVersionFromManifestWithResponse(String agentName, - BinaryData createAgentVersionFromManifestRequest, RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - return service.createAgentVersionFromManifestSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, createAgentVersionFromManifestRequest, - requestOptions, Context.NONE); - } - - /** - * Get an agent version - * - * Retrieves the specified version of an agent by its agent name and version identifier. - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Required): {
-     *         String: String (Required)
-     *     }
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     version: String (Required)
-     *     description: String (Optional)
-     *     created_at: long (Required)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *             invocations_moderation (Optional): {
-     *                 input_content_type: String(json/text) (Optional)
-     *                 output_content_type: String(json/text) (Optional)
-     *                 response_mode: String(non_streaming/streaming/both) (Required)
-     *                 input_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 output_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 stream_selectors (Optional): [
-     *                      (Optional){
-     *                         event_type: String (Required)
-     *                         text_field: String (Optional)
-     *                     }
-     *                 ]
-     *             }
-     *         }
-     *     }
-     *     draft: Boolean (Optional)
-     *     status: String(creating/active/failed/deleting/deleted) (Optional)
-     *     instance_identity (Optional): {
-     *         principal_id: String (Required)
-     *         client_id: String (Required)
-     *         status: String(active/disabled) (Optional)
-     *     }
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     *     agent_guid: String (Optional)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the agent to retrieve. - * @param agentVersion The version of the agent to retrieve. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return an agent version - * - * Retrieves the specified version of an agent by its agent name and version identifier along with {@link Response} - * on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> getAgentVersionDetailsWithResponseAsync(String agentName, String agentVersion, - RequestOptions requestOptions) { - final String accept = "application/json"; - return FluxUtil.withContext(context -> service.getAgentVersionDetails(this.client.getEndpoint(), agentName, - agentVersion, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); - } - - /** - * Get an agent version - * - * Retrieves the specified version of an agent by its agent name and version identifier. - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Required): {
-     *         String: String (Required)
-     *     }
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     version: String (Required)
-     *     description: String (Optional)
-     *     created_at: long (Required)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *             invocations_moderation (Optional): {
-     *                 input_content_type: String(json/text) (Optional)
-     *                 output_content_type: String(json/text) (Optional)
-     *                 response_mode: String(non_streaming/streaming/both) (Required)
-     *                 input_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 output_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 stream_selectors (Optional): [
-     *                      (Optional){
-     *                         event_type: String (Required)
-     *                         text_field: String (Optional)
-     *                     }
-     *                 ]
-     *             }
-     *         }
-     *     }
-     *     draft: Boolean (Optional)
-     *     status: String(creating/active/failed/deleting/deleted) (Optional)
-     *     instance_identity (Optional): {
-     *         principal_id: String (Required)
-     *         client_id: String (Required)
-     *         status: String(active/disabled) (Optional)
-     *     }
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     *     agent_guid: String (Optional)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the agent to retrieve. - * @param agentVersion The version of the agent to retrieve. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return an agent version - * - * Retrieves the specified version of an agent by its agent name and version identifier along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response getAgentVersionDetailsWithResponse(String agentName, String agentVersion, - RequestOptions requestOptions) { - final String accept = "application/json"; - return service.getAgentVersionDetailsSync(this.client.getEndpoint(), agentName, agentVersion, - this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); - } - - /** - * Delete an agent version - * - * Deletes a specific version of an agent. For hosted agents, if the version has active - * sessions, the request is rejected with HTTP 409 unless `force` is set to true. When - * force is true, all sessions associated with this version are cascade-deleted. - *

Query Parameters

- * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
forceBooleanNoFor Hosted Agents, if `true`, force-deletes the version even if - * it has active sessions, cascading deletion to all associated sessions. The service defaults to `false` if a value - * is not specified by the caller. This value is not relevant for other Agent types.
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     name: String (Required)
-     *     version: String (Required)
-     *     deleted: boolean (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the agent to delete. - * @param agentVersion The version of the agent to delete. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a deleted agent version Object along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> internalDeleteAgentVersionWithResponseAsync(String agentName, String agentVersion, - RequestOptions requestOptions) { - final String accept = "application/json"; - return FluxUtil.withContext(context -> service.internalDeleteAgentVersion(this.client.getEndpoint(), agentName, - agentVersion, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); - } - - /** - * Delete an agent version - * - * Deletes a specific version of an agent. For hosted agents, if the version has active - * sessions, the request is rejected with HTTP 409 unless `force` is set to true. When - * force is true, all sessions associated with this version are cascade-deleted. - *

Query Parameters

- * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
forceBooleanNoFor Hosted Agents, if `true`, force-deletes the version even if - * it has active sessions, cascading deletion to all associated sessions. The service defaults to `false` if a value - * is not specified by the caller. This value is not relevant for other Agent types.
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     name: String (Required)
-     *     version: String (Required)
-     *     deleted: boolean (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the agent to delete. - * @param agentVersion The version of the agent to delete. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a deleted agent version Object along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response internalDeleteAgentVersionWithResponse(String agentName, String agentVersion, - RequestOptions requestOptions) { - final String accept = "application/json"; - return service.internalDeleteAgentVersionSync(this.client.getEndpoint(), agentName, agentVersion, - this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); - } - - /** - * List agent versions - * - * Returns a paged collection of versions for the specified agent. - *

Query Parameters

- * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
include_draftsBooleanNo(Preview) Whether to include draft versions in the - * listing. The service defaults to `false` if a value is not specified by the caller (only non-draft versions are - * returned).
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Required): {
-     *         String: String (Required)
-     *     }
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     version: String (Required)
-     *     description: String (Optional)
-     *     created_at: long (Required)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *             invocations_moderation (Optional): {
-     *                 input_content_type: String(json/text) (Optional)
-     *                 output_content_type: String(json/text) (Optional)
-     *                 response_mode: String(non_streaming/streaming/both) (Required)
-     *                 input_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 output_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 stream_selectors (Optional): [
-     *                      (Optional){
-     *                         event_type: String (Required)
-     *                         text_field: String (Optional)
-     *                     }
-     *                 ]
-     *             }
-     *         }
-     *     }
-     *     draft: Boolean (Optional)
-     *     status: String(creating/active/failed/deleting/deleted) (Optional)
-     *     instance_identity (Optional): {
-     *         principal_id: String (Required)
-     *         client_id: String (Required)
-     *         status: String(active/disabled) (Optional)
-     *     }
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     *     agent_guid: String (Optional)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the agent to retrieve versions for. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion - * of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listAgentVersionsSinglePageAsync(String agentName, - RequestOptions requestOptions) { - final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.listAgentVersions(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - getValues(res.getValue(), "data"), null, null)); - } - - /** - * List agent versions - * - * Returns a paged collection of versions for the specified agent. - *

Query Parameters

- * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
include_draftsBooleanNo(Preview) Whether to include draft versions in the - * listing. The service defaults to `false` if a value is not specified by the caller (only non-draft versions are - * returned).
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Required): {
-     *         String: String (Required)
-     *     }
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     version: String (Required)
-     *     description: String (Optional)
-     *     created_at: long (Required)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *             invocations_moderation (Optional): {
-     *                 input_content_type: String(json/text) (Optional)
-     *                 output_content_type: String(json/text) (Optional)
-     *                 response_mode: String(non_streaming/streaming/both) (Required)
-     *                 input_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 output_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 stream_selectors (Optional): [
-     *                      (Optional){
-     *                         event_type: String (Required)
-     *                         text_field: String (Optional)
-     *                     }
-     *                 ]
-     *             }
-     *         }
-     *     }
-     *     draft: Boolean (Optional)
-     *     status: String(creating/active/failed/deleting/deleted) (Optional)
-     *     instance_identity (Optional): {
-     *         principal_id: String (Required)
-     *         client_id: String (Required)
-     *         status: String(active/disabled) (Optional)
-     *     }
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     *     agent_guid: String (Optional)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the agent to retrieve versions for. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. - */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedFlux listAgentVersionsAsync(String agentName, RequestOptions requestOptions) { - return new PagedFlux<>(() -> listAgentVersionsSinglePageAsync(agentName, requestOptions)); - } - - /** - * List agent versions - * - * Returns a paged collection of versions for the specified agent. - *

Query Parameters

- * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
include_draftsBooleanNo(Preview) Whether to include draft versions in the - * listing. The service defaults to `false` if a value is not specified by the caller (only non-draft versions are - * returned).
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Required): {
-     *         String: String (Required)
-     *     }
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     version: String (Required)
-     *     description: String (Optional)
-     *     created_at: long (Required)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *             invocations_moderation (Optional): {
-     *                 input_content_type: String(json/text) (Optional)
-     *                 output_content_type: String(json/text) (Optional)
-     *                 response_mode: String(non_streaming/streaming/both) (Required)
-     *                 input_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 output_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 stream_selectors (Optional): [
-     *                      (Optional){
-     *                         event_type: String (Required)
-     *                         text_field: String (Optional)
-     *                     }
-     *                 ]
-     *             }
-     *         }
-     *     }
-     *     draft: Boolean (Optional)
-     *     status: String(creating/active/failed/deleting/deleted) (Optional)
-     *     instance_identity (Optional): {
-     *         principal_id: String (Required)
-     *         client_id: String (Required)
-     *         status: String(active/disabled) (Optional)
-     *     }
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     *     agent_guid: String (Optional)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the agent to retrieve versions for. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items along with {@link PagedResponse}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private PagedResponse listAgentVersionsSinglePage(String agentName, RequestOptions requestOptions) { - final String accept = "application/json"; - Response res = service.listAgentVersionsSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); - return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - getValues(res.getValue(), "data"), null, null); - } - - /** - * List agent versions - * - * Returns a paged collection of versions for the specified agent. - *

Query Parameters

- * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
include_draftsBooleanNo(Preview) Whether to include draft versions in the - * listing. The service defaults to `false` if a value is not specified by the caller (only non-draft versions are - * returned).
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Required): {
-     *         String: String (Required)
-     *     }
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     version: String (Required)
-     *     description: String (Optional)
-     *     created_at: long (Required)
-     *     definition (Required): {
-     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *         rai_config (Optional): {
-     *             rai_policy_name: String (Required)
-     *             invocations_moderation (Optional): {
-     *                 input_content_type: String(json/text) (Optional)
-     *                 output_content_type: String(json/text) (Optional)
-     *                 response_mode: String(non_streaming/streaming/both) (Required)
-     *                 input_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 output_paths (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 stream_selectors (Optional): [
-     *                      (Optional){
-     *                         event_type: String (Required)
-     *                         text_field: String (Optional)
-     *                     }
-     *                 ]
-     *             }
-     *         }
-     *     }
-     *     draft: Boolean (Optional)
-     *     status: String(creating/active/failed/deleting/deleted) (Optional)
-     *     instance_identity (Optional): {
-     *         principal_id: String (Required)
-     *         client_id: String (Required)
-     *         status: String(active/disabled) (Optional)
-     *     }
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): {
-     *         type: String(ManagedAgentIdentityBlueprint) (Required)
-     *     }
-     *     agent_guid: String (Optional)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the agent to retrieve versions for. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. - */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listAgentVersions(String agentName, RequestOptions requestOptions) { - return new PagedIterable<>(() -> listAgentVersionsSinglePage(agentName, requestOptions)); - } - - /** - * Update an agent endpoint - * - * Applies a merge-patch update to the specified agent endpoint configuration. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     agent_endpoint (Optional): {
-     *         version_selector (Optional): {
-     *             version_selection_rules (Optional, Required on create): [
-     *                  (Optional, Required on create){
-     *                     type: String(FixedRatio) (Required)
-     *                     agent_version: String (Optional, Required on create)
-     *                 }
-     *             ]
-     *         }
-     *         protocol_configuration (Optional): {
-     *             activity (Optional): {
-     *                 enable_m365_public_endpoint: Boolean (Optional)
-     *                 access_boundaries (Optional): [
-     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
-     *                 ]
-     *             }
-     *             responses (Optional): {
-     *             }
-     *             a2a (Optional): {
-     *             }
-     *             mcp (Optional): {
-     *             }
-     *             invocations (Optional): {
-     *             }
-     *             invocations_ws (Optional): {
-     *             }
-     *         }
-     *         authorization_schemes (Optional): [
-     *              (Optional){
-     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
-     *             }
-     *         ]
-     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
-     *     }
-     *     agent_card (Optional): {
-     *         version: String (Optional, Required on create)
-     *         description: String (Optional)
-     *         skills (Optional, Required on create): [
-     *              (Optional, Required on create){
-     *                 id: String (Optional, Required on create)
-     *                 name: String (Optional, Required on create)
-     *                 description: String (Optional)
-     *                 tags (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 examples (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *             }
-     *         ]
-     *     }
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     state: String(enabled/disabled) (Required)
-     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
-     *     versions (Required): {
-     *         latest (Required): {
-     *             metadata (Required): {
-     *                 String: String (Required)
-     *             }
-     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *             id: String (Required)
-     *             name: String (Required)
-     *             version: String (Required)
-     *             description: String (Optional)
-     *             created_at: long (Required)
-     *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *                 rai_config (Optional): {
-     *                     rai_policy_name: String (Required)
-     *                     invocations_moderation (Optional): {
-     *                         input_content_type: String(json/text) (Optional)
-     *                         output_content_type: String(json/text) (Optional)
-     *                         response_mode: String(non_streaming/streaming/both) (Required)
-     *                         input_paths (Optional): [
-     *                             String (Optional)
-     *                         ]
-     *                         output_paths (Optional): [
-     *                             String (Optional)
-     *                         ]
-     *                         stream_selectors (Optional): [
-     *                              (Optional){
-     *                                 event_type: String (Required)
-     *                                 text_field: String (Optional)
-     *                             }
-     *                         ]
-     *                     }
-     *                 }
-     *             }
-     *             draft: Boolean (Optional)
-     *             status: String(creating/active/failed/deleting/deleted) (Optional)
-     *             instance_identity (Optional): {
-     *                 principal_id: String (Required)
-     *                 client_id: String (Required)
-     *                 status: String(active/disabled) (Optional)
-     *             }
-     *             blueprint (Optional): (recursive schema, see blueprint above)
-     *             blueprint_reference (Optional): {
-     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
-     *             }
-     *             agent_guid: String (Optional)
-     *         }
-     *     }
-     *     agent_endpoint (Optional): {
-     *         version_selector (Optional): {
-     *             version_selection_rules (Optional, Required on create): [
-     *                  (Optional, Required on create){
-     *                     type: String(FixedRatio) (Required)
-     *                     agent_version: String (Optional, Required on create)
-     *                 }
-     *             ]
-     *         }
-     *         protocol_configuration (Optional): {
-     *             activity (Optional): {
-     *                 enable_m365_public_endpoint: Boolean (Optional)
-     *                 access_boundaries (Optional): [
-     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
-     *                 ]
-     *             }
-     *             responses (Optional): {
-     *             }
-     *             a2a (Optional): {
-     *             }
-     *             mcp (Optional): {
-     *             }
-     *             invocations (Optional): {
-     *             }
-     *             invocations_ws (Optional): {
-     *             }
-     *         }
-     *         authorization_schemes (Optional): [
-     *              (Optional){
-     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
-     *             }
-     *         ]
-     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
-     *     }
-     *     digital_worker_type: String(m365) (Optional)
-     *     instance_identity (Optional): (recursive schema, see instance_identity above)
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): (recursive schema, see blueprint_reference above)
-     *     agent_card (Optional): {
-     *         version: String (Optional, Required on create)
-     *         description: String (Optional)
-     *         skills (Optional, Required on create): [
-     *              (Optional, Required on create){
-     *                 id: String (Optional, Required on create)
-     *                 name: String (Optional, Required on create)
-     *                 description: String (Optional)
-     *                 tags (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 examples (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *             }
-     *         ]
-     *     }
-     * }
-     * }
-     * 
- * - * @param agentName The name of the agent to retrieve - * - * The name of the agent to retrieve. - * @param patchAgentObjectRequest The patchAgentObjectRequest parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> updateAgentDetailsWithResponseAsync(String agentName, - BinaryData patchAgentObjectRequest, RequestOptions requestOptions) { - final String contentType = "application/merge-patch+json"; - final String accept = "application/json"; - return FluxUtil.withContext(context -> service.updateAgentDetails(this.client.getEndpoint(), agentName, - contentType, this.client.getServiceVersion().getVersion(), accept, patchAgentObjectRequest, requestOptions, - context)); - } - - /** - * Update an agent endpoint - * - * Applies a merge-patch update to the specified agent endpoint configuration. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     agent_endpoint (Optional): {
-     *         version_selector (Optional): {
-     *             version_selection_rules (Optional, Required on create): [
-     *                  (Optional, Required on create){
-     *                     type: String(FixedRatio) (Required)
-     *                     agent_version: String (Optional, Required on create)
-     *                 }
-     *             ]
-     *         }
-     *         protocol_configuration (Optional): {
-     *             activity (Optional): {
-     *                 enable_m365_public_endpoint: Boolean (Optional)
-     *                 access_boundaries (Optional): [
-     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
-     *                 ]
-     *             }
-     *             responses (Optional): {
-     *             }
-     *             a2a (Optional): {
-     *             }
-     *             mcp (Optional): {
-     *             }
-     *             invocations (Optional): {
-     *             }
-     *             invocations_ws (Optional): {
-     *             }
-     *         }
-     *         authorization_schemes (Optional): [
-     *              (Optional){
-     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
-     *             }
-     *         ]
-     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
-     *     }
-     *     agent_card (Optional): {
-     *         version: String (Optional, Required on create)
-     *         description: String (Optional)
-     *         skills (Optional, Required on create): [
-     *              (Optional, Required on create){
-     *                 id: String (Optional, Required on create)
-     *                 name: String (Optional, Required on create)
-     *                 description: String (Optional)
-     *                 tags (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 examples (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *             }
-     *         ]
-     *     }
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     state: String(enabled/disabled) (Required)
-     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
-     *     versions (Required): {
-     *         latest (Required): {
-     *             metadata (Required): {
-     *                 String: String (Required)
-     *             }
-     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *             id: String (Required)
-     *             name: String (Required)
-     *             version: String (Required)
-     *             description: String (Optional)
-     *             created_at: long (Required)
-     *             definition (Required): {
-     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
-     *                 rai_config (Optional): {
-     *                     rai_policy_name: String (Required)
-     *                     invocations_moderation (Optional): {
-     *                         input_content_type: String(json/text) (Optional)
-     *                         output_content_type: String(json/text) (Optional)
-     *                         response_mode: String(non_streaming/streaming/both) (Required)
-     *                         input_paths (Optional): [
-     *                             String (Optional)
-     *                         ]
-     *                         output_paths (Optional): [
-     *                             String (Optional)
-     *                         ]
-     *                         stream_selectors (Optional): [
-     *                              (Optional){
-     *                                 event_type: String (Required)
-     *                                 text_field: String (Optional)
-     *                             }
-     *                         ]
-     *                     }
-     *                 }
-     *             }
-     *             draft: Boolean (Optional)
-     *             status: String(creating/active/failed/deleting/deleted) (Optional)
-     *             instance_identity (Optional): {
-     *                 principal_id: String (Required)
-     *                 client_id: String (Required)
-     *                 status: String(active/disabled) (Optional)
-     *             }
-     *             blueprint (Optional): (recursive schema, see blueprint above)
-     *             blueprint_reference (Optional): {
-     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
-     *             }
-     *             agent_guid: String (Optional)
-     *         }
-     *     }
-     *     agent_endpoint (Optional): {
-     *         version_selector (Optional): {
-     *             version_selection_rules (Optional, Required on create): [
-     *                  (Optional, Required on create){
-     *                     type: String(FixedRatio) (Required)
-     *                     agent_version: String (Optional, Required on create)
-     *                 }
-     *             ]
-     *         }
-     *         protocol_configuration (Optional): {
-     *             activity (Optional): {
-     *                 enable_m365_public_endpoint: Boolean (Optional)
-     *                 access_boundaries (Optional): [
-     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
-     *                 ]
-     *             }
-     *             responses (Optional): {
-     *             }
-     *             a2a (Optional): {
-     *             }
-     *             mcp (Optional): {
-     *             }
-     *             invocations (Optional): {
-     *             }
-     *             invocations_ws (Optional): {
-     *             }
-     *         }
-     *         authorization_schemes (Optional): [
-     *              (Optional){
-     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
-     *             }
-     *         ]
-     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
-     *     }
-     *     digital_worker_type: String(m365) (Optional)
-     *     instance_identity (Optional): (recursive schema, see instance_identity above)
-     *     blueprint (Optional): (recursive schema, see blueprint above)
-     *     blueprint_reference (Optional): (recursive schema, see blueprint_reference above)
-     *     agent_card (Optional): {
-     *         version: String (Optional, Required on create)
-     *         description: String (Optional)
-     *         skills (Optional, Required on create): [
-     *              (Optional, Required on create){
-     *                 id: String (Optional, Required on create)
-     *                 name: String (Optional, Required on create)
-     *                 description: String (Optional)
-     *                 tags (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *                 examples (Optional): [
-     *                     String (Optional)
-     *                 ]
-     *             }
-     *         ]
-     *     }
-     * }
-     * }
-     * 
- * - * @param agentName The name of the agent to retrieve - * - * The name of the agent to retrieve. - * @param patchAgentObjectRequest The patchAgentObjectRequest parameter. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response updateAgentDetailsWithResponse(String agentName, BinaryData patchAgentObjectRequest, - RequestOptions requestOptions) { - final String contentType = "application/merge-patch+json"; - final String accept = "application/json"; - return service.updateAgentDetailsSync(this.client.getEndpoint(), agentName, contentType, - this.client.getServiceVersion().getVersion(), accept, patchAgentObjectRequest, requestOptions, - Context.NONE); - } - - /** - * Create an agent version from code - * - * Creates a new agent version from code. Uploads the code zip and creates a new version - * for an existing agent. The SHA-256 hex digest of the zip is provided in the - * `x-ms-code-zip-sha256` header for integrity and dedup. - * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is - * irrelevant). - * Maximum upload size is 250 MB. - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     metadata (Required): {
-     *         String: String (Required)
-     *     }
+     *     metadata (Required): {
+     *         String: String (Required)
+     *     }
      *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
      *     id: String (Required)
      *     name: String (Required)
@@ -5943,9 +3971,7 @@ public Response updateAgentDetailsWithResponse(String agentName, Bin
      * - Must start and end with alphanumeric characters,
      * - Can contain hyphens in the middle
      * - Must not exceed 63 characters.
-     * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity
-     * verification.
-     * @param content The content multipart request content.
+     * @param createAgentVersionRequest The createAgentVersionRequest parameter.
      * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
      * @throws HttpResponseException thrown if the request is rejected by server.
      * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401.
@@ -5954,38 +3980,28 @@ public Response updateAgentDetailsWithResponse(String agentName, Bin
      * @return the response body along with {@link Response} on successful completion of {@link Mono}.
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
-    public Mono> createAgentVersionFromCodeWithResponseInternalAsync(String agentName,
-        String codeZipSha256, BinaryData content, RequestOptions requestOptions) {
-        final String contentType = "multipart/form-data";
+    public Mono> createAgentVersionWithResponseAsync(String agentName,
+        BinaryData createAgentVersionRequest, RequestOptions requestOptions) {
+        final String contentType = "application/json";
         final String accept = "application/json";
-        return FluxUtil.withContext(
-            context -> service.createAgentVersionFromCode(this.client.getEndpoint(), agentName, contentType,
-                codeZipSha256, this.client.getServiceVersion().getVersion(), accept, content, requestOptions, context));
+        return FluxUtil.withContext(context -> service.createAgentVersion(this.client.getEndpoint(), agentName,
+            this.client.getServiceVersion().getVersion(), contentType, accept, createAgentVersionRequest,
+            requestOptions, context));
     }
 
     /**
-     * Create an agent version from code
+     * Create an agent version
      * 
-     * Creates a new agent version from code. Uploads the code zip and creates a new version
-     * for an existing agent. The SHA-256 hex digest of the zip is provided in the
-     * `x-ms-code-zip-sha256` header for integrity and dedup.
-     * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is
-     * irrelevant).
-     * Maximum upload size is 250 MB.
-     * 

Response Body Schema

+ * Creates a new version for the specified agent and returns the created version resource. + *

Request Body Schema

* *
      * {@code
      * {
-     *     metadata (Required): {
+     *     metadata (Optional): {
      *         String: String (Required)
      *     }
-     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
-     *     id: String (Required)
-     *     name: String (Required)
-     *     version: String (Required)
      *     description: String (Optional)
-     *     created_at: long (Required)
      *     definition (Required): {
      *         kind: String(prompt/hosted/workflow/external/voice) (Required)
      *         rai_config (Optional): {
@@ -6009,244 +4025,106 @@ public Mono> createAgentVersionFromCodeWithResponseInternal
      *             }
      *         }
      *     }
-     *     draft: Boolean (Optional)
-     *     status: String(creating/active/failed/deleting/deleted) (Optional)
-     *     instance_identity (Optional): {
-     *         principal_id: String (Required)
-     *         client_id: String (Required)
-     *         status: String(active/disabled) (Optional)
-     *     }
-     *     blueprint (Optional): (recursive schema, see blueprint above)
      *     blueprint_reference (Optional): {
      *         type: String(ManagedAgentIdentityBlueprint) (Required)
      *     }
-     *     agent_guid: String (Optional)
-     * }
+     *     digital_worker_type: String(m365) (Optional)
+     *     draft: Boolean (Optional)
      * }
-     * 
- * - * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. - * - Must start and end with alphanumeric characters, - * - Can contain hyphens in the middle - * - Must not exceed 63 characters. - * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity - * verification. - * @param content The content multipart request content. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response createAgentVersionFromCodeWithResponseInternal(String agentName, String codeZipSha256, - BinaryData content, RequestOptions requestOptions) { - final String contentType = "multipart/form-data"; - final String accept = "application/json"; - return service.createAgentVersionFromCodeSync(this.client.getEndpoint(), agentName, contentType, codeZipSha256, - this.client.getServiceVersion().getVersion(), accept, content, requestOptions, Context.NONE); - } - - /** - * Download agent code - * - * Downloads the code zip for a code-based hosted agent. - * Returns the previously-uploaded zip (`application/zip`). - * - * If `agent_version` is supplied, returns that version's code zip; otherwise - * returns the latest version's code zip. - * - * The SHA-256 digest of the returned bytes matches the `content_hash` on the - * resolved version's `code_configuration`. - *

Query Parameters

- * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
agent_versionStringNoThe version of the agent whose code zip should be - * downloaded. - * If omitted, the latest version's code zip is returned.
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * BinaryData
      * }
      * 
* - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
x-ms-agent-versionStringThe version of the agent whose code zip is returned in the - * response body.
- * - * @param agentName The name of the agent. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> downloadAgentCodeWithResponseAsync(String agentName, - RequestOptions requestOptions) { - final String accept = "application/zip"; - return FluxUtil.withContext(context -> service.downloadAgentCode(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); - } - - /** - * Download agent code - * - * Downloads the code zip for a code-based hosted agent. - * Returns the previously-uploaded zip (`application/zip`). - * - * If `agent_version` is supplied, returns that version's code zip; otherwise - * returns the latest version's code zip. - * - * The SHA-256 digest of the returned bytes matches the `content_hash` on the - * resolved version's `code_configuration`. - *

Query Parameters

- * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
agent_versionStringNoThe version of the agent whose code zip should be - * downloaded. - * If omitted, the latest version's code zip is returned.
- * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
      * {@code
-     * BinaryData
-     * }
-     * 
- * - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
x-ms-agent-versionStringThe version of the agent whose code zip is returned in the - * response body.
- * - * @param agentName The name of the agent. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response body along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response downloadAgentCodeWithResponse(String agentName, RequestOptions requestOptions) { - final String accept = "application/zip"; - return service.downloadAgentCodeSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); - } - - /** - * Enable an agent - * - * Enables the specified agent, allowing it to accept new sessions and process requests. - * This operation is idempotent — enabling an already-enabled agent returns success with no side effects. - * - * @param agentName The name of the agent to enable. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> enableAgentWithResponseAsync(String agentName, RequestOptions requestOptions) { - return FluxUtil.withContext(context -> service.enableAgent(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), requestOptions, context)); - } - - /** - * Enable an agent - * - * Enables the specified agent, allowing it to accept new sessions and process requests. - * This operation is idempotent — enabling an already-enabled agent returns success with no side effects. - * - * @param agentName The name of the agent to enable. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response enableAgentWithResponse(String agentName, RequestOptions requestOptions) { - return service.enableAgentSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), requestOptions, Context.NONE); - } - - /** - * Disable an agent - * - * Disables the specified agent, preventing it from accepting new sessions or processing requests. - * Existing active sessions are allowed to drain gracefully but no new sessions can be created. - * This operation is idempotent — disabling an already-disabled agent returns success with no side effects. - * - * @param agentName The name of the agent to disable. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the {@link Response} on successful completion of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> disableAgentWithResponseAsync(String agentName, RequestOptions requestOptions) { - return FluxUtil.withContext(context -> service.disableAgent(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), requestOptions, context)); - } - - /** - * Disable an agent - * - * Disables the specified agent, preventing it from accepting new sessions or processing requests. - * Existing active sessions are allowed to drain gracefully but no new sessions can be created. - * This operation is idempotent — disabling an already-disabled agent returns success with no side effects. + * { + * metadata (Required): { + * String: String (Required) + * } + * object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required) + * id: String (Required) + * name: String (Required) + * version: String (Required) + * description: String (Optional) + * created_at: long (Required) + * definition (Required): { + * kind: String(prompt/hosted/workflow/external/voice) (Required) + * rai_config (Optional): { + * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } + * } + * } + * draft: Boolean (Optional) + * status: String(creating/active/failed/deleting/deleted) (Optional) + * instance_identity (Optional): { + * principal_id: String (Required) + * client_id: String (Required) + * status: String(active/disabled) (Optional) + * } + * blueprint (Optional): (recursive schema, see blueprint above) + * blueprint_reference (Optional): { + * type: String(ManagedAgentIdentityBlueprint) (Required) + * } + * agent_guid: String (Optional) + * } + * } + *
* - * @param agentName The name of the agent to disable. + * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. + * - Must start and end with alphanumeric characters, + * - Can contain hyphens in the middle + * - Must not exceed 63 characters. + * @param createAgentVersionRequest The createAgentVersionRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the {@link Response}. + * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response disableAgentWithResponse(String agentName, RequestOptions requestOptions) { - return service.disableAgentSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), requestOptions, Context.NONE); + public Response createAgentVersionWithResponse(String agentName, BinaryData createAgentVersionRequest, + RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.createAgentVersionSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, createAgentVersionRequest, + requestOptions, Context.NONE); } /** - * Create a session + * Create an agent version from manifest * - * Creates a new session for an agent endpoint. - * The endpoint resolves the backing agent version from `version_indicator` and - * enforces session ownership using the provided user identity for session-mutating operations. + * Imports the provided manifest to create a new version for the specified agent. *

Request Body Schema

* *
      * {@code
      * {
-     *     agent_session_id: String (Optional)
-     *     version_indicator (Required): {
-     *         type: String(version_ref) (Required)
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     description: String (Optional)
+     *     manifest_id: String (Required)
+     *     parameter_values (Required): {
+     *         String: BinaryData (Required)
      *     }
      * }
      * }
@@ -6257,52 +4135,92 @@ public Response disableAgentWithResponse(String agentName, RequestOptions
      * 
      * {@code
      * {
-     *     agent_session_id: String (Required)
-     *     version_indicator (Required): {
-     *         type: String(version_ref) (Required)
+     *     metadata (Required): {
+     *         String: String (Required)
      *     }
-     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     version: String (Required)
+     *     description: String (Optional)
      *     created_at: long (Required)
-     *     last_accessed_at: long (Required)
-     *     expires_at: long (Required)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     draft: Boolean (Optional)
+     *     status: String(creating/active/failed/deleting/deleted) (Optional)
+     *     instance_identity (Optional): {
+     *         principal_id: String (Required)
+     *         client_id: String (Required)
+     *         status: String(active/disabled) (Optional)
+     *     }
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     *     agent_guid: String (Optional)
      * }
      * }
      * 
* - * @param agentName The name of the agent to create a session for. - * @param createSessionRequest The createSessionRequest parameter. + * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. + * - Must start and end with alphanumeric characters, + * - Can contain hyphens in the middle + * - Must not exceed 63 characters. + * @param createAgentVersionFromManifestRequest The createAgentVersionFromManifestRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return an agent session providing a long-lived compute sandbox for hosted agent invocations along with - * {@link Response} on successful completion of {@link Mono}. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> createSessionWithResponseAsync(String agentName, BinaryData createSessionRequest, - RequestOptions requestOptions) { + public Mono> createAgentVersionFromManifestWithResponseAsync(String agentName, + BinaryData createAgentVersionFromManifestRequest, RequestOptions requestOptions) { final String contentType = "application/json"; final String accept = "application/json"; - return FluxUtil.withContext(context -> service.createSession(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, createSessionRequest, requestOptions, - context)); + return FluxUtil.withContext(context -> service.createAgentVersionFromManifest(this.client.getEndpoint(), + agentName, this.client.getServiceVersion().getVersion(), contentType, accept, + createAgentVersionFromManifestRequest, requestOptions, context)); } /** - * Create a session + * Create an agent version from manifest * - * Creates a new session for an agent endpoint. - * The endpoint resolves the backing agent version from `version_indicator` and - * enforces session ownership using the provided user identity for session-mutating operations. + * Imports the provided manifest to create a new version for the specified agent. *

Request Body Schema

* *
      * {@code
      * {
-     *     agent_session_id: String (Optional)
-     *     version_indicator (Required): {
-     *         type: String(version_ref) (Required)
+     *     metadata (Optional): {
+     *         String: String (Required)
+     *     }
+     *     description: String (Optional)
+     *     manifest_id: String (Required)
+     *     parameter_values (Required): {
+     *         String: BinaryData (Required)
      *     }
      * }
      * }
@@ -6313,207 +4231,323 @@ public Mono> createSessionWithResponseAsync(String agentNam
      * 
      * {@code
      * {
-     *     agent_session_id: String (Required)
-     *     version_indicator (Required): {
-     *         type: String(version_ref) (Required)
+     *     metadata (Required): {
+     *         String: String (Required)
      *     }
-     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     version: String (Required)
+     *     description: String (Optional)
      *     created_at: long (Required)
-     *     last_accessed_at: long (Required)
-     *     expires_at: long (Required)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     draft: Boolean (Optional)
+     *     status: String(creating/active/failed/deleting/deleted) (Optional)
+     *     instance_identity (Optional): {
+     *         principal_id: String (Required)
+     *         client_id: String (Required)
+     *         status: String(active/disabled) (Optional)
+     *     }
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     *     agent_guid: String (Optional)
      * }
      * }
      * 
* - * @param agentName The name of the agent to create a session for. - * @param createSessionRequest The createSessionRequest parameter. + * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. + * - Must start and end with alphanumeric characters, + * - Can contain hyphens in the middle + * - Must not exceed 63 characters. + * @param createAgentVersionFromManifestRequest The createAgentVersionFromManifestRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return an agent session providing a long-lived compute sandbox for hosted agent invocations along with - * {@link Response}. + * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response createSessionWithResponse(String agentName, BinaryData createSessionRequest, - RequestOptions requestOptions) { + public Response createAgentVersionFromManifestWithResponse(String agentName, + BinaryData createAgentVersionFromManifestRequest, RequestOptions requestOptions) { final String contentType = "application/json"; final String accept = "application/json"; - return service.createSessionSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, createSessionRequest, requestOptions, - Context.NONE); + return service.createAgentVersionFromManifestSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, createAgentVersionFromManifestRequest, + requestOptions, Context.NONE); } /** - * Get a session + * Get an agent version * - * Retrieves the details of a hosted agent session by agent name and session identifier. + * Retrieves the specified version of an agent by its agent name and version identifier. *

Response Body Schema

* *
      * {@code
      * {
-     *     agent_session_id: String (Required)
-     *     version_indicator (Required): {
-     *         type: String(version_ref) (Required)
+     *     metadata (Required): {
+     *         String: String (Required)
+     *     }
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     version: String (Required)
+     *     description: String (Optional)
+     *     created_at: long (Required)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     draft: Boolean (Optional)
+     *     status: String(creating/active/failed/deleting/deleted) (Optional)
+     *     instance_identity (Optional): {
+     *         principal_id: String (Required)
+     *         client_id: String (Required)
+     *         status: String(active/disabled) (Optional)
      *     }
-     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
-     *     created_at: long (Required)
-     *     last_accessed_at: long (Required)
-     *     expires_at: long (Required)
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     *     agent_guid: String (Optional)
      * }
      * }
      * 
* - * @param agentName The name of the agent. - * @param sessionId The session identifier. + * @param agentName The name of the agent to retrieve. + * @param agentVersion The version of the agent to retrieve. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a session + * @return an agent version * - * Retrieves the details of a hosted agent session by agent name and session identifier along with {@link Response} + * Retrieves the specified version of an agent by its agent name and version identifier along with {@link Response} * on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> getSessionWithResponseAsync(String agentName, String sessionId, + public Mono> getAgentVersionDetailsWithResponseAsync(String agentName, String agentVersion, RequestOptions requestOptions) { final String accept = "application/json"; - return FluxUtil.withContext(context -> service.getSession(this.client.getEndpoint(), agentName, sessionId, - this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + return FluxUtil.withContext(context -> service.getAgentVersionDetails(this.client.getEndpoint(), agentName, + agentVersion, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); } /** - * Get a session + * Get an agent version * - * Retrieves the details of a hosted agent session by agent name and session identifier. + * Retrieves the specified version of an agent by its agent name and version identifier. *

Response Body Schema

* *
      * {@code
      * {
-     *     agent_session_id: String (Required)
-     *     version_indicator (Required): {
-     *         type: String(version_ref) (Required)
+     *     metadata (Required): {
+     *         String: String (Required)
      *     }
-     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     version: String (Required)
+     *     description: String (Optional)
      *     created_at: long (Required)
-     *     last_accessed_at: long (Required)
-     *     expires_at: long (Required)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     draft: Boolean (Optional)
+     *     status: String(creating/active/failed/deleting/deleted) (Optional)
+     *     instance_identity (Optional): {
+     *         principal_id: String (Required)
+     *         client_id: String (Required)
+     *         status: String(active/disabled) (Optional)
+     *     }
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     *     agent_guid: String (Optional)
      * }
      * }
      * 
* - * @param agentName The name of the agent. - * @param sessionId The session identifier. + * @param agentName The name of the agent to retrieve. + * @param agentVersion The version of the agent to retrieve. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a session + * @return an agent version * - * Retrieves the details of a hosted agent session by agent name and session identifier along with {@link Response}. + * Retrieves the specified version of an agent by its agent name and version identifier along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response getSessionWithResponse(String agentName, String sessionId, + public Response getAgentVersionDetailsWithResponse(String agentName, String agentVersion, RequestOptions requestOptions) { final String accept = "application/json"; - return service.getSessionSync(this.client.getEndpoint(), agentName, sessionId, + return service.getAgentVersionDetailsSync(this.client.getEndpoint(), agentName, agentVersion, this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); } /** - * Delete a session + * Delete an agent version * - * Deletes a session synchronously. - * Returns 204 No Content when the session is deleted or does not exist. + * Deletes a specific version of an agent. For hosted agents, if the version has active + * sessions, the request is rejected with HTTP 409 unless `force` is set to true. When + * force is true, all sessions associated with this version are cascade-deleted. + *

Query Parameters

+ * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
forceBooleanNoFor Hosted Agents, if `true`, force-deletes the version even if + * it has active sessions, cascading deletion to all associated sessions. The service defaults to `false` if a value + * is not specified by the caller. This value is not relevant for other Agent types.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

* - * @param agentName The name of the agent. - * @param sessionId The session identifier. + *
+     * {@code
+     * {
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     name: String (Required)
+     *     version: String (Required)
+     *     deleted: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the agent to delete. + * @param agentVersion The version of the agent to delete. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the {@link Response} on successful completion of {@link Mono}. + * @return a deleted agent version Object along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> deleteSessionWithResponseAsync(String agentName, String sessionId, + public Mono> internalDeleteAgentVersionWithResponseAsync(String agentName, String agentVersion, RequestOptions requestOptions) { - return FluxUtil.withContext(context -> service.deleteSession(this.client.getEndpoint(), agentName, sessionId, - this.client.getServiceVersion().getVersion(), requestOptions, context)); + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.internalDeleteAgentVersion(this.client.getEndpoint(), agentName, + agentVersion, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); } /** - * Delete a session - * - * Deletes a session synchronously. - * Returns 204 No Content when the session is deleted or does not exist. + * Delete an agent version * - * @param agentName The name of the agent. - * @param sessionId The session identifier. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response deleteSessionWithResponse(String agentName, String sessionId, RequestOptions requestOptions) { - return service.deleteSessionSync(this.client.getEndpoint(), agentName, sessionId, - this.client.getServiceVersion().getVersion(), requestOptions, Context.NONE); - } - - /** - * Stop a session + * Deletes a specific version of an agent. For hosted agents, if the version has active + * sessions, the request is rejected with HTTP 409 unless `force` is set to true. When + * force is true, all sessions associated with this version are cascade-deleted. + *

Query Parameters

+ * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
forceBooleanNoFor Hosted Agents, if `true`, force-deletes the version even if + * it has active sessions, cascading deletion to all associated sessions. The service defaults to `false` if a value + * is not specified by the caller. This value is not relevant for other Agent types.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

* - * Terminates the specified hosted agent session and returns 204 No Content when the request succeeds. + *
+     * {@code
+     * {
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     name: String (Required)
+     *     version: String (Required)
+     *     deleted: boolean (Required)
+     * }
+     * }
+     * 
* - * @param agentName The name of the agent. - * @param sessionId The session identifier. + * @param agentName The name of the agent to delete. + * @param agentVersion The version of the agent to delete. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the {@link Response} on successful completion of {@link Mono}. + * @return a deleted agent version Object along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> stopSessionWithResponseAsync(String agentName, String sessionId, + public Response internalDeleteAgentVersionWithResponse(String agentName, String agentVersion, RequestOptions requestOptions) { - return FluxUtil.withContext(context -> service.stopSession(this.client.getEndpoint(), agentName, sessionId, - this.client.getServiceVersion().getVersion(), requestOptions, context)); - } - - /** - * Stop a session - * - * Terminates the specified hosted agent session and returns 204 No Content when the request succeeds. - * - * @param agentName The name of the agent. - * @param sessionId The session identifier. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response stopSessionWithResponse(String agentName, String sessionId, RequestOptions requestOptions) { - return service.stopSessionSync(this.client.getEndpoint(), agentName, sessionId, - this.client.getServiceVersion().getVersion(), requestOptions, Context.NONE); + final String accept = "application/json"; + return service.internalDeleteAgentVersionSync(this.client.getEndpoint(), agentName, agentVersion, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); } /** - * List sessions for an agent + * List agent versions * - * Returns a paged collection of sessions associated with the specified agent endpoint. + * Returns a paged collection of versions for the specified agent. *

Query Parameters

* * @@ -6532,6 +4566,9 @@ public Response stopSessionWithResponse(String agentName, String sessionId * defines your place in the list. * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * *
Query Parameters
include_draftsBooleanNo(Preview) Whether to include draft versions in the + * listing. The service defaults to `false` if a value is not specified by the caller (only non-draft versions are + * returned).
* You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

@@ -6539,19 +4576,55 @@ public Response stopSessionWithResponse(String agentName, String sessionId *
      * {@code
      * {
-     *     agent_session_id: String (Required)
-     *     version_indicator (Required): {
-     *         type: String(version_ref) (Required)
+     *     metadata (Required): {
+     *         String: String (Required)
+     *     }
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     version: String (Required)
+     *     description: String (Optional)
+     *     created_at: long (Required)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     draft: Boolean (Optional)
+     *     status: String(creating/active/failed/deleting/deleted) (Optional)
+     *     instance_identity (Optional): {
+     *         principal_id: String (Required)
+     *         client_id: String (Required)
+     *         status: String(active/disabled) (Optional)
      *     }
-     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
-     *     created_at: long (Required)
-     *     last_accessed_at: long (Required)
-     *     expires_at: long (Required)
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     *     agent_guid: String (Optional)
      * }
      * }
      * 
* - * @param agentName The name of the agent. + * @param agentName The name of the agent to retrieve versions for. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -6561,20 +4634,20 @@ public Response stopSessionWithResponse(String agentName, String sessionId * of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listSessionsSinglePageAsync(String agentName, + private Mono> listAgentVersionsSinglePageAsync(String agentName, RequestOptions requestOptions) { final String accept = "application/json"; return FluxUtil - .withContext(context -> service.listSessions(this.client.getEndpoint(), agentName, + .withContext(context -> service.listAgentVersions(this.client.getEndpoint(), agentName, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), getValues(res.getValue(), "data"), null, null)); } /** - * List sessions for an agent + * List agent versions * - * Returns a paged collection of sessions associated with the specified agent endpoint. + * Returns a paged collection of versions for the specified agent. *

Query Parameters

* * @@ -6593,6 +4666,9 @@ private Mono> listSessionsSinglePageAsync(String agent * defines your place in the list. * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * *
Query Parameters
include_draftsBooleanNo(Preview) Whether to include draft versions in the + * listing. The service defaults to `false` if a value is not specified by the caller (only non-draft versions are + * returned).
* You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

@@ -6600,19 +4676,55 @@ private Mono> listSessionsSinglePageAsync(String agent *
      * {@code
      * {
-     *     agent_session_id: String (Required)
-     *     version_indicator (Required): {
-     *         type: String(version_ref) (Required)
+     *     metadata (Required): {
+     *         String: String (Required)
      *     }
-     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     version: String (Required)
+     *     description: String (Optional)
      *     created_at: long (Required)
-     *     last_accessed_at: long (Required)
-     *     expires_at: long (Required)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     draft: Boolean (Optional)
+     *     status: String(creating/active/failed/deleting/deleted) (Optional)
+     *     instance_identity (Optional): {
+     *         principal_id: String (Required)
+     *         client_id: String (Required)
+     *         status: String(active/disabled) (Optional)
+     *     }
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     *     agent_guid: String (Optional)
      * }
      * }
      * 
* - * @param agentName The name of the agent. + * @param agentName The name of the agent to retrieve versions for. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -6621,14 +4733,14 @@ private Mono> listSessionsSinglePageAsync(String agent * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. */ @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedFlux listSessionsAsync(String agentName, RequestOptions requestOptions) { - return new PagedFlux<>(() -> listSessionsSinglePageAsync(agentName, requestOptions)); + public PagedFlux listAgentVersionsAsync(String agentName, RequestOptions requestOptions) { + return new PagedFlux<>(() -> listAgentVersionsSinglePageAsync(agentName, requestOptions)); } /** - * List sessions for an agent + * List agent versions * - * Returns a paged collection of sessions associated with the specified agent endpoint. + * Returns a paged collection of versions for the specified agent. *

Query Parameters

* * @@ -6647,6 +4759,9 @@ public PagedFlux listSessionsAsync(String agentName, RequestOptions * defines your place in the list. * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your * subsequent call can include before=obj_foo in order to fetch the previous page of the list. + * *
Query Parameters
include_draftsBooleanNo(Preview) Whether to include draft versions in the + * listing. The service defaults to `false` if a value is not specified by the caller (only non-draft versions are + * returned).
* You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

@@ -6654,234 +4769,224 @@ public PagedFlux listSessionsAsync(String agentName, RequestOptions *
      * {@code
      * {
-     *     agent_session_id: String (Required)
-     *     version_indicator (Required): {
-     *         type: String(version_ref) (Required)
+     *     metadata (Required): {
+     *         String: String (Required)
      *     }
-     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     version: String (Required)
+     *     description: String (Optional)
      *     created_at: long (Required)
-     *     last_accessed_at: long (Required)
-     *     expires_at: long (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the agent. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items along with {@link PagedResponse}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private PagedResponse listSessionsSinglePage(String agentName, RequestOptions requestOptions) { - final String accept = "application/json"; - Response res = service.listSessionsSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); - return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - getValues(res.getValue(), "data"), null, null); - } - - /** - * List sessions for an agent - * - * Returns a paged collection of sessions associated with the specified agent endpoint. - *

Query Parameters

- * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     agent_session_id: String (Required)
-     *     version_indicator (Required): {
-     *         type: String(version_ref) (Required)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
      *     }
-     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
-     *     created_at: long (Required)
-     *     last_accessed_at: long (Required)
-     *     expires_at: long (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the agent. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. - */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listSessions(String agentName, RequestOptions requestOptions) { - return new PagedIterable<>(() -> listSessionsSinglePage(agentName, requestOptions)); - } - - /** - * Stream console logs for a hosted agent session - * - * Streams console logs (stdout / stderr) for a specific hosted agent session - * as a Server-Sent Events (SSE) stream. - * - * Each SSE frame contains: - * - `event`: always `"log"` - * - `data`: a plain-text log line (currently JSON-formatted, but the schema - * is not contractual and may include additional keys or change format - * over time — clients should treat it as an opaque string) - * - * Example SSE frames: - * ``` - * event: log - * data: {"timestamp":"2026-03-10T09:33:17.121Z","stream":"stdout","message":"Starting FoundryCBAgent server on port - * 8088"} - * - * event: log - * data: {"timestamp":"2026-03-10T09:33:17.130Z","stream":"stderr","message":"INFO: Application startup complete."} - * - * event: log - * data: {"timestamp":"2026-03-10T09:34:52.714Z","stream":"status","message":"Successfully connected to container"} - * - * event: log - * data: {"timestamp":"2026-03-10T09:35:52.714Z","stream":"status","message":"No logs since last 60 seconds"} - * ``` - * - * The stream remains open until the client disconnects or the server - * terminates the connection. Clients should handle reconnection as needed. - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     event: String(log) (Required)
-     *     data: String (Required)
+     *     draft: Boolean (Optional)
+     *     status: String(creating/active/failed/deleting/deleted) (Optional)
+     *     instance_identity (Optional): {
+     *         principal_id: String (Required)
+     *         client_id: String (Required)
+     *         status: String(active/disabled) (Optional)
+     *     }
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     *     agent_guid: String (Optional)
      * }
      * }
      * 
* - * @param agentName The name of the hosted agent. - * @param agentVersion The version of the agent. - * @param sessionId The session ID (maps to an ADC sandbox). + * @param agentName The name of the agent to retrieve versions for. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a single Server-Sent Event frame emitted by the hosted agent session log stream. - * - * Each frame contains an `event` field identifying the event type and a `data` - * field carrying the payload as plain text along with {@link Response} on successful completion of {@link Mono}. + * @return the response data for a requested list of items along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> getSessionLogStreamWithResponseAsync(String agentName, String agentVersion, - String sessionId, RequestOptions requestOptions) { - final String accept = "text/event-stream"; - return FluxUtil.withContext(context -> service.getSessionLogStream(this.client.getEndpoint(), agentName, - agentVersion, sessionId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + private PagedResponse listAgentVersionsSinglePage(String agentName, RequestOptions requestOptions) { + final String accept = "application/json"; + Response res = service.listAgentVersionsSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null); } /** - * Stream console logs for a hosted agent session - * - * Streams console logs (stdout / stderr) for a specific hosted agent session - * as a Server-Sent Events (SSE) stream. - * - * Each SSE frame contains: - * - `event`: always `"log"` - * - `data`: a plain-text log line (currently JSON-formatted, but the schema - * is not contractual and may include additional keys or change format - * over time — clients should treat it as an opaque string) - * - * Example SSE frames: - * ``` - * event: log - * data: {"timestamp":"2026-03-10T09:33:17.121Z","stream":"stdout","message":"Starting FoundryCBAgent server on port - * 8088"} - * - * event: log - * data: {"timestamp":"2026-03-10T09:33:17.130Z","stream":"stderr","message":"INFO: Application startup complete."} - * - * event: log - * data: {"timestamp":"2026-03-10T09:34:52.714Z","stream":"status","message":"Successfully connected to container"} - * - * event: log - * data: {"timestamp":"2026-03-10T09:35:52.714Z","stream":"status","message":"No logs since last 60 seconds"} - * ``` + * List agent versions * - * The stream remains open until the client disconnects or the server - * terminates the connection. Clients should handle reconnection as needed. + * Returns a paged collection of versions for the specified agent. + *

Query Parameters

+ * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
include_draftsBooleanNo(Preview) Whether to include draft versions in the + * listing. The service defaults to `false` if a value is not specified by the caller (only non-draft versions are + * returned).
+ * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
      * {@code
      * {
-     *     event: String(log) (Required)
-     *     data: String (Required)
+     *     metadata (Required): {
+     *         String: String (Required)
+     *     }
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     version: String (Required)
+     *     description: String (Optional)
+     *     created_at: long (Required)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     draft: Boolean (Optional)
+     *     status: String(creating/active/failed/deleting/deleted) (Optional)
+     *     instance_identity (Optional): {
+     *         principal_id: String (Required)
+     *         client_id: String (Required)
+     *         status: String(active/disabled) (Optional)
+     *     }
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     *     agent_guid: String (Optional)
      * }
      * }
      * 
* - * @param agentName The name of the hosted agent. - * @param agentVersion The version of the agent. - * @param sessionId The session ID (maps to an ADC sandbox). + * @param agentName The name of the agent to retrieve versions for. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a single Server-Sent Event frame emitted by the hosted agent session log stream. - * - * Each frame contains an `event` field identifying the event type and a `data` - * field carrying the payload as plain text along with {@link Response}. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response getSessionLogStreamWithResponse(String agentName, String agentVersion, String sessionId, - RequestOptions requestOptions) { - final String accept = "text/event-stream"; - return service.getSessionLogStreamSync(this.client.getEndpoint(), agentName, agentVersion, sessionId, - this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listAgentVersions(String agentName, RequestOptions requestOptions) { + return new PagedIterable<>(() -> listAgentVersionsSinglePage(agentName, requestOptions)); } /** - * Create an agent telephony binding + * Update an agent endpoint * - * Creates a telephony binding for the voice agent named in the path. - *

Header Parameters

- * - * - * - * - * - *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as - * HTTP-date
- * You can add these to a request with {@link RequestOptions#addHeader} + * Applies a merge-patch update to the specified agent endpoint configuration. *

Request Body Schema

* *
      * {@code
      * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
+     *     agent_endpoint (Optional): {
+     *         version_selector (Optional): {
+     *             version_selection_rules (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     type: String(FixedRatio) (Required)
+     *                     agent_version: String (Optional, Required on create)
+     *                 }
+     *             ]
+     *         }
+     *         protocol_configuration (Optional): {
+     *             activity (Optional): {
+     *                 enable_m365_public_endpoint: Boolean (Optional)
+     *                 access_boundaries (Optional): [
+     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
+     *                 ]
+     *             }
+     *             responses (Optional): {
+     *             }
+     *             a2a (Optional): {
+     *             }
+     *             mcp (Optional): {
+     *             }
+     *             invocations (Optional): {
+     *             }
+     *             invocations_ws (Optional): {
+     *             }
+     *         }
+     *         authorization_schemes (Optional): [
+     *              (Optional){
+     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
+     *             }
+     *         ]
+     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
+     *     }
+     *     agent_card (Optional): {
+     *         version: String (Optional, Required on create)
+     *         description: String (Optional)
+     *         skills (Optional, Required on create): [
+     *              (Optional, Required on create){
+     *                 id: String (Optional, Required on create)
+     *                 name: String (Optional, Required on create)
+     *                 description: String (Optional)
+     *                 tags (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 examples (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *             }
+     *         ]
+     *     }
      * }
      * }
      * 
@@ -6891,392 +4996,539 @@ public Response getSessionLogStreamWithResponse(String agentName, St *
      * {@code
      * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
      *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
+     *     name: String (Required)
+     *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
+     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
+     *     versions (Required): {
+     *         latest (Required): {
+     *             metadata (Required): {
+     *                 String: String (Required)
+     *             }
+     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *             id: String (Required)
+     *             name: String (Required)
+     *             version: String (Required)
+     *             description: String (Optional)
+     *             created_at: long (Required)
+     *             definition (Required): {
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *                 rai_config (Optional): {
+     *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
+     *                 }
+     *             }
+     *             draft: Boolean (Optional)
+     *             status: String(creating/active/failed/deleting/deleted) (Optional)
+     *             instance_identity (Optional): {
+     *                 principal_id: String (Required)
+     *                 client_id: String (Required)
+     *                 status: String(active/disabled) (Optional)
+     *             }
+     *             blueprint (Optional): (recursive schema, see blueprint above)
+     *             blueprint_reference (Optional): {
+     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
+     *             }
+     *             agent_guid: String (Optional)
+     *         }
+     *     }
+     *     agent_endpoint (Optional): {
+     *         version_selector (Optional): {
+     *             version_selection_rules (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     type: String(FixedRatio) (Required)
+     *                     agent_version: String (Optional, Required on create)
+     *                 }
+     *             ]
+     *         }
+     *         protocol_configuration (Optional): {
+     *             activity (Optional): {
+     *                 enable_m365_public_endpoint: Boolean (Optional)
+     *                 access_boundaries (Optional): [
+     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
+     *                 ]
+     *             }
+     *             responses (Optional): {
+     *             }
+     *             a2a (Optional): {
+     *             }
+     *             mcp (Optional): {
+     *             }
+     *             invocations (Optional): {
+     *             }
+     *             invocations_ws (Optional): {
+     *             }
+     *         }
+     *         authorization_schemes (Optional): [
+     *              (Optional){
+     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
+     *             }
+     *         ]
+     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
+     *     }
+     *     digital_worker_type: String(m365) (Optional)
+     *     instance_identity (Optional): (recursive schema, see instance_identity above)
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): (recursive schema, see blueprint_reference above)
+     *     agent_card (Optional): {
+     *         version: String (Optional, Required on create)
+     *         description: String (Optional)
+     *         skills (Optional, Required on create): [
+     *              (Optional, Required on create){
+     *                 id: String (Optional, Required on create)
+     *                 name: String (Optional, Required on create)
+     *                 description: String (Optional)
+     *                 tags (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 examples (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *             }
+     *         ]
+     *     }
      * }
      * }
      * 
* - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the - * binding.
+ * @param agentName The name of the agent to retrieve * - * @param agentName The name of the voice agent that owns the binding. - * @param body The provider-specific binding to create. + * The name of the agent to retrieve. + * @param patchAgentObjectRequest The patchAgentObjectRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a telephony binding owned by a voice agent along with {@link Response} on successful completion of - * {@link Mono}. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> createTelephonyBindingWithResponseAsync(String agentName, BinaryData body, - RequestOptions requestOptions) { - final String contentType = "application/json"; + public Mono> updateAgentDetailsWithResponseAsync(String agentName, + BinaryData patchAgentObjectRequest, RequestOptions requestOptions) { + final String contentType = "application/merge-patch+json"; final String accept = "application/json"; - RequestOptions requestOptionsLocal = requestOptions == null ? new RequestOptions() : requestOptions; - requestOptionsLocal.addRequestCallback(requestLocal -> { - if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-request-id")) == null) { - requestLocal.getHeaders() - .set(HttpHeaderName.fromString("repeatability-request-id"), CoreUtils.randomUuid().toString()); - } - }); - requestOptionsLocal.addRequestCallback(requestLocal -> { - if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-first-sent")) == null) { - requestLocal.getHeaders() - .set(HttpHeaderName.fromString("repeatability-first-sent"), - DateTimeRfc1123.toRfc1123String(OffsetDateTime.now())); - } - }); - return FluxUtil.withContext(context -> service.createTelephonyBinding(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptionsLocal, context)); + return FluxUtil.withContext(context -> service.updateAgentDetails(this.client.getEndpoint(), agentName, + contentType, this.client.getServiceVersion().getVersion(), accept, patchAgentObjectRequest, requestOptions, + context)); } /** - * Create an agent telephony binding + * Update an agent endpoint * - * Creates a telephony binding for the voice agent named in the path. - *

Header Parameters

- * - * - * - * - * - *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as - * HTTP-date
- * You can add these to a request with {@link RequestOptions#addHeader} + * Applies a merge-patch update to the specified agent endpoint configuration. *

Request Body Schema

* *
      * {@code
      * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
+     *     agent_endpoint (Optional): {
+     *         version_selector (Optional): {
+     *             version_selection_rules (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     type: String(FixedRatio) (Required)
+     *                     agent_version: String (Optional, Required on create)
+     *                 }
+     *             ]
+     *         }
+     *         protocol_configuration (Optional): {
+     *             activity (Optional): {
+     *                 enable_m365_public_endpoint: Boolean (Optional)
+     *                 access_boundaries (Optional): [
+     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
+     *                 ]
+     *             }
+     *             responses (Optional): {
+     *             }
+     *             a2a (Optional): {
+     *             }
+     *             mcp (Optional): {
+     *             }
+     *             invocations (Optional): {
+     *             }
+     *             invocations_ws (Optional): {
+     *             }
+     *         }
+     *         authorization_schemes (Optional): [
+     *              (Optional){
+     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
+     *             }
+     *         ]
+     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
+     *     }
+     *     agent_card (Optional): {
+     *         version: String (Optional, Required on create)
+     *         description: String (Optional)
+     *         skills (Optional, Required on create): [
+     *              (Optional, Required on create){
+     *                 id: String (Optional, Required on create)
+     *                 name: String (Optional, Required on create)
+     *                 description: String (Optional)
+     *                 tags (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 examples (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *             }
+     *         ]
+     *     }
      * }
      * }
      * 
* - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the - * binding.
- * - * @param agentName The name of the voice agent that owns the binding. - * @param body The provider-specific binding to create. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a telephony binding owned by a voice agent along with {@link Response}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response createTelephonyBindingWithResponse(String agentName, BinaryData body, - RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - RequestOptions requestOptionsLocal = requestOptions == null ? new RequestOptions() : requestOptions; - requestOptionsLocal.addRequestCallback(requestLocal -> { - if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-request-id")) == null) { - requestLocal.getHeaders() - .set(HttpHeaderName.fromString("repeatability-request-id"), CoreUtils.randomUuid().toString()); - } - }); - requestOptionsLocal.addRequestCallback(requestLocal -> { - if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-first-sent")) == null) { - requestLocal.getHeaders() - .set(HttpHeaderName.fromString("repeatability-first-sent"), - DateTimeRfc1123.toRfc1123String(OffsetDateTime.now())); - } - }); - return service.createTelephonyBindingSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptionsLocal, Context.NONE); - } - - /** - * List agent telephony bindings - * - * Returns the telephony bindings owned by the voice agent named in the path. - *

Query Parameters

- * - * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: - * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", - * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
      * {@code
      * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
      *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     *     etag: String (Required)
+     *     name: String (Required)
+     *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
+     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
+     *     versions (Required): {
+     *         latest (Required): {
+     *             metadata (Required): {
+     *                 String: String (Required)
+     *             }
+     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *             id: String (Required)
+     *             name: String (Required)
+     *             version: String (Required)
+     *             description: String (Optional)
+     *             created_at: long (Required)
+     *             definition (Required): {
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *                 rai_config (Optional): {
+     *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
+     *                 }
+     *             }
+     *             draft: Boolean (Optional)
+     *             status: String(creating/active/failed/deleting/deleted) (Optional)
+     *             instance_identity (Optional): {
+     *                 principal_id: String (Required)
+     *                 client_id: String (Required)
+     *                 status: String(active/disabled) (Optional)
+     *             }
+     *             blueprint (Optional): (recursive schema, see blueprint above)
+     *             blueprint_reference (Optional): {
+     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
+     *             }
+     *             agent_guid: String (Optional)
+     *         }
+     *     }
+     *     agent_endpoint (Optional): {
+     *         version_selector (Optional): {
+     *             version_selection_rules (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     type: String(FixedRatio) (Required)
+     *                     agent_version: String (Optional, Required on create)
+     *                 }
+     *             ]
+     *         }
+     *         protocol_configuration (Optional): {
+     *             activity (Optional): {
+     *                 enable_m365_public_endpoint: Boolean (Optional)
+     *                 access_boundaries (Optional): [
+     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
+     *                 ]
+     *             }
+     *             responses (Optional): {
+     *             }
+     *             a2a (Optional): {
+     *             }
+     *             mcp (Optional): {
+     *             }
+     *             invocations (Optional): {
+     *             }
+     *             invocations_ws (Optional): {
+     *             }
+     *         }
+     *         authorization_schemes (Optional): [
+     *              (Optional){
+     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
+     *             }
+     *         ]
+     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
+     *     }
+     *     digital_worker_type: String(m365) (Optional)
+     *     instance_identity (Optional): (recursive schema, see instance_identity above)
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): (recursive schema, see blueprint_reference above)
+     *     agent_card (Optional): {
+     *         version: String (Optional, Required on create)
+     *         description: String (Optional)
+     *         skills (Optional, Required on create): [
+     *              (Optional, Required on create){
+     *                 id: String (Optional, Required on create)
+     *                 name: String (Optional, Required on create)
+     *                 description: String (Optional)
+     *                 tags (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 examples (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *             }
+     *         ]
+     *     }
      * }
      * }
      * 
* - * @param agentName The name of the voice agent whose bindings are listed. + * @param agentName The name of the agent to retrieve + * + * The name of the agent to retrieve. + * @param patchAgentObjectRequest The patchAgentObjectRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion - * of {@link Mono}. + * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listTelephonyBindingsSinglePageAsync(String agentName, + public Response updateAgentDetailsWithResponse(String agentName, BinaryData patchAgentObjectRequest, RequestOptions requestOptions) { + final String contentType = "application/merge-patch+json"; final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.listTelephonyBindings(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - getValues(res.getValue(), "data"), null, null)); + return service.updateAgentDetailsSync(this.client.getEndpoint(), agentName, contentType, + this.client.getServiceVersion().getVersion(), accept, patchAgentObjectRequest, requestOptions, + Context.NONE); } /** - * List agent telephony bindings + * Create an agent version from code * - * Returns the telephony bindings owned by the voice agent named in the path. - *

Query Parameters

- * - * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: - * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", - * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} + * Creates a new agent version from code. Uploads the code zip and creates a new version + * for an existing agent. The SHA-256 hex digest of the zip is provided in the + * `x-ms-code-zip-sha256` header for integrity and dedup. + * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is + * irrelevant). + * Maximum upload size is 250 MB. *

Response Body Schema

* *
      * {@code
      * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     metadata (Required): {
+     *         String: String (Required)
+     *     }
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
      *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     *     etag: String (Required)
+     *     name: String (Required)
+     *     version: String (Required)
+     *     description: String (Optional)
+     *     created_at: long (Required)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     draft: Boolean (Optional)
+     *     status: String(creating/active/failed/deleting/deleted) (Optional)
+     *     instance_identity (Optional): {
+     *         principal_id: String (Required)
+     *         client_id: String (Required)
+     *         status: String(active/disabled) (Optional)
+     *     }
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     *     agent_guid: String (Optional)
      * }
      * }
      * 
* - * @param agentName The name of the voice agent whose bindings are listed. + * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. + * - Must start and end with alphanumeric characters, + * - Can contain hyphens in the middle + * - Must not exceed 63 characters. + * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity + * verification. + * @param content The content multipart request content. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedFlux listTelephonyBindingsAsync(String agentName, RequestOptions requestOptions) { - return new PagedFlux<>(() -> listTelephonyBindingsSinglePageAsync(agentName, requestOptions)); + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> createAgentVersionFromCodeWithResponseInternalAsync(String agentName, + String codeZipSha256, BinaryData content, RequestOptions requestOptions) { + final String contentType = "multipart/form-data"; + final String accept = "application/json"; + return FluxUtil.withContext( + context -> service.createAgentVersionFromCode(this.client.getEndpoint(), agentName, contentType, + codeZipSha256, this.client.getServiceVersion().getVersion(), accept, content, requestOptions, context)); } /** - * List agent telephony bindings + * Create an agent version from code * - * Returns the telephony bindings owned by the voice agent named in the path. - *

Query Parameters

- * - * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: - * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", - * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} + * Creates a new agent version from code. Uploads the code zip and creates a new version + * for an existing agent. The SHA-256 hex digest of the zip is provided in the + * `x-ms-code-zip-sha256` header for integrity and dedup. + * The request body is multipart/form-data with a JSON metadata part and a binary code part (part order is + * irrelevant). + * Maximum upload size is 250 MB. *

Response Body Schema

* *
      * {@code
      * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     metadata (Required): {
+     *         String: String (Required)
+     *     }
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
      *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     *     etag: String (Required)
+     *     name: String (Required)
+     *     version: String (Required)
+     *     description: String (Optional)
+     *     created_at: long (Required)
+     *     definition (Required): {
+     *         kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *         rai_config (Optional): {
+     *             rai_policy_name: String (Required)
+     *             invocations_moderation (Optional): {
+     *                 input_content_type: String(json/text) (Optional)
+     *                 output_content_type: String(json/text) (Optional)
+     *                 response_mode: String(non_streaming/streaming/both) (Required)
+     *                 input_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 output_paths (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 stream_selectors (Optional): [
+     *                      (Optional){
+     *                         event_type: String (Required)
+     *                         text_field: String (Optional)
+     *                     }
+     *                 ]
+     *             }
+     *         }
+     *     }
+     *     draft: Boolean (Optional)
+     *     status: String(creating/active/failed/deleting/deleted) (Optional)
+     *     instance_identity (Optional): {
+     *         principal_id: String (Required)
+     *         client_id: String (Required)
+     *         status: String(active/disabled) (Optional)
+     *     }
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): {
+     *         type: String(ManagedAgentIdentityBlueprint) (Required)
+     *     }
+     *     agent_guid: String (Optional)
      * }
      * }
      * 
* - * @param agentName The name of the voice agent whose bindings are listed. + * @param agentName The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent. + * - Must start and end with alphanumeric characters, + * - Can contain hyphens in the middle + * - Must not exceed 63 characters. + * @param codeZipSha256 SHA-256 hex digest of the uploaded code zip. Used for change detection (dedup) and integrity + * verification. + * @param content The content multipart request content. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items along with {@link PagedResponse}. + * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private PagedResponse listTelephonyBindingsSinglePage(String agentName, RequestOptions requestOptions) { + public Response createAgentVersionFromCodeWithResponseInternal(String agentName, String codeZipSha256, + BinaryData content, RequestOptions requestOptions) { + final String contentType = "multipart/form-data"; final String accept = "application/json"; - Response res = service.listTelephonyBindingsSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); - return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - getValues(res.getValue(), "data"), null, null); + return service.createAgentVersionFromCodeSync(this.client.getEndpoint(), agentName, contentType, codeZipSha256, + this.client.getServiceVersion().getVersion(), accept, content, requestOptions, Context.NONE); } /** - * List agent telephony bindings + * Download agent code + * + * Downloads the code zip for a code-based hosted agent. + * Returns the previously-uploaded zip (`application/zip`). + * + * If `agent_version` is supplied, returns that version's code zip; otherwise + * returns the latest version's code zip. * - * Returns the telephony bindings owned by the voice agent named in the path. + * The SHA-256 digest of the returned bytes matches the `content_hash` on the + * resolved version's `code_configuration`. *

Query Parameters

* * * - * - * - * - * - * - * + * *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: - * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", - * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
agent_versionStringNoThe version of the agent whose code zip should be + * downloaded. + * If omitted, the latest version's code zip is returned.
* You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
      * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     *     etag: String (Required)
-     * }
-     * }
-     * 
- * - * @param agentName The name of the voice agent whose bindings are listed. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. - */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listTelephonyBindings(String agentName, RequestOptions requestOptions) { - return new PagedIterable<>(() -> listTelephonyBindingsSinglePage(agentName, requestOptions)); - } - - /** - * Get an agent telephony binding - * - * Retrieves a telephony binding owned by the voice agent named in the path. - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     * }
+     * BinaryData
      * }
      * 
* @@ -7284,46 +5536,51 @@ public PagedIterable listTelephonyBindings(String agentName, Request * * * - * + * *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the - * binding.
x-ms-agent-versionStringThe version of the agent whose code zip is returned in the + * response body.
* - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. + * @param agentName The name of the agent. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return an agent telephony binding - * - * Retrieves a telephony binding owned by the voice agent named in the path along with {@link Response} on - * successful completion of {@link Mono}. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> getTelephonyBindingWithResponseAsync(String agentName, String bindingId, + public Mono> downloadAgentCodeWithResponseAsync(String agentName, RequestOptions requestOptions) { - final String accept = "application/json"; - return FluxUtil.withContext(context -> service.getTelephonyBinding(this.client.getEndpoint(), agentName, - bindingId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + final String accept = "application/zip"; + return FluxUtil.withContext(context -> service.downloadAgentCode(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); } /** - * Get an agent telephony binding + * Download agent code + * + * Downloads the code zip for a code-based hosted agent. + * Returns the previously-uploaded zip (`application/zip`). * - * Retrieves a telephony binding owned by the voice agent named in the path. + * If `agent_version` is supplied, returns that version's code zip; otherwise + * returns the latest version's code zip. + * + * The SHA-256 digest of the returned bytes matches the `content_hash` on the + * resolved version's `code_configuration`. + *

Query Parameters

+ * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
agent_versionStringNoThe version of the agent whose code zip should be + * downloaded. + * If omitted, the latest version's code zip is returned.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
      * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     * }
+     * BinaryData
      * }
      * 
* @@ -7331,162 +5588,73 @@ public Mono> getTelephonyBindingWithResponseAsync(String ag * * * - * + * *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the - * binding.
x-ms-agent-versionStringThe version of the agent whose code zip is returned in the + * response body.
* - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. + * @param agentName The name of the agent. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return an agent telephony binding - * - * Retrieves a telephony binding owned by the voice agent named in the path along with {@link Response}. + * @return the response body along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response getTelephonyBindingWithResponse(String agentName, String bindingId, - RequestOptions requestOptions) { - final String accept = "application/json"; - return service.getTelephonyBindingSync(this.client.getEndpoint(), agentName, bindingId, + public Response downloadAgentCodeWithResponse(String agentName, RequestOptions requestOptions) { + final String accept = "application/zip"; + return service.downloadAgentCodeSync(this.client.getEndpoint(), agentName, this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); } /** - * Update an agent telephony binding - * - * Updates a telephony binding owned by the voice agent named in the path. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     status: String(active/suspended) (Optional)
-     *     label: String (Optional)
-     *     connection: String (Optional)
-     *     phone_number: String (Optional)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     * }
-     * }
-     * 
+ * Enable an agent * - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the - * binding.
+ * Enables the specified agent, allowing it to accept new sessions and process requests. + * This operation is idempotent — enabling an already-enabled agent returns success with no side effects. * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @param body The binding properties to update. + * @param agentName The name of the agent to enable. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a telephony binding owned by a voice agent along with {@link Response} on successful completion of - * {@link Mono}. + * @return the {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> updateTelephonyBindingWithResponseAsync(String agentName, String bindingId, - String ifMatch, BinaryData body, RequestOptions requestOptions) { - final String contentType = "application/merge-patch+json"; - final String accept = "application/json"; - return FluxUtil.withContext( - context -> service.updateTelephonyBinding(this.client.getEndpoint(), agentName, bindingId, contentType, - ifMatch, this.client.getServiceVersion().getVersion(), accept, body, requestOptions, context)); + public Mono> enableAgentWithResponseAsync(String agentName, RequestOptions requestOptions) { + return FluxUtil.withContext(context -> service.enableAgent(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), requestOptions, context)); } /** - * Update an agent telephony binding - * - * Updates a telephony binding owned by the voice agent named in the path. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     status: String(active/suspended) (Optional)
-     *     label: String (Optional)
-     *     connection: String (Optional)
-     *     phone_number: String (Optional)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

- * - *
-     * {@code
-     * {
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     id: String (Required)
-     *     connection: String (Required)
-     *     label: String (Optional)
-     *     status: String(active/suspended) (Required)
-     *     incoming_call_url: String (Required)
-     * }
-     * }
-     * 
+ * Enable an agent * - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the - * binding.
+ * Enables the specified agent, allowing it to accept new sessions and process requests. + * This operation is idempotent — enabling an already-enabled agent returns success with no side effects. * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @param body The binding properties to update. + * @param agentName The name of the agent to enable. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return a telephony binding owned by a voice agent along with {@link Response}. + * @return the {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response updateTelephonyBindingWithResponse(String agentName, String bindingId, String ifMatch, - BinaryData body, RequestOptions requestOptions) { - final String contentType = "application/merge-patch+json"; - final String accept = "application/json"; - return service.updateTelephonyBindingSync(this.client.getEndpoint(), agentName, bindingId, contentType, ifMatch, - this.client.getServiceVersion().getVersion(), accept, body, requestOptions, Context.NONE); + public Response enableAgentWithResponse(String agentName, RequestOptions requestOptions) { + return service.enableAgentSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), requestOptions, Context.NONE); } /** - * Delete an agent telephony binding + * Disable an agent * - * Deletes a telephony binding owned by the voice agent named in the path. + * Disables the specified agent, preventing it from accepting new sessions or processing requests. + * Existing active sessions are allowed to drain gracefully but no new sessions can be created. + * This operation is idempotent — disabling an already-disabled agent returns success with no side effects. * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. + * @param agentName The name of the agent to disable. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -7495,21 +5663,19 @@ public Response updateTelephonyBindingWithResponse(String agentName, * @return the {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> deleteTelephonyBindingWithResponseAsync(String agentName, String bindingId, - String ifMatch, RequestOptions requestOptions) { - return FluxUtil.withContext(context -> service.deleteTelephonyBinding(this.client.getEndpoint(), agentName, - bindingId, ifMatch, this.client.getServiceVersion().getVersion(), requestOptions, context)); + public Mono> disableAgentWithResponseAsync(String agentName, RequestOptions requestOptions) { + return FluxUtil.withContext(context -> service.disableAgent(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), requestOptions, context)); } /** - * Delete an agent telephony binding + * Disable an agent * - * Deletes a telephony binding owned by the voice agent named in the path. + * Disables the specified agent, preventing it from accepting new sessions or processing requests. + * Existing active sessions are allowed to drain gracefully but no new sessions can be created. + * This operation is idempotent — disabling an already-disabled agent returns success with no side effects. * - * @param agentName The name of the voice agent that owns the binding. - * @param bindingId The service-generated binding identifier. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. + * @param agentName The name of the agent to disable. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. @@ -7518,1084 +5684,637 @@ public Mono> deleteTelephonyBindingWithResponseAsync(String agent * @return the {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response deleteTelephonyBindingWithResponse(String agentName, String bindingId, String ifMatch, - RequestOptions requestOptions) { - return service.deleteTelephonyBindingSync(this.client.getEndpoint(), agentName, bindingId, ifMatch, + public Response disableAgentWithResponse(String agentName, RequestOptions requestOptions) { + return service.disableAgentSync(this.client.getEndpoint(), agentName, this.client.getServiceVersion().getVersion(), requestOptions, Context.NONE); } /** - * List agent telephony calls + * Create a session * - * Returns the durable inbound call history for the voice agent named in the path. - *

Query Parameters

- * - * - * - * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: - * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: - * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix - * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this - * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} - *

Response Body Schema

+ * Creates a new session for an agent endpoint. + * The endpoint resolves the backing agent version from `version_indicator` and + * enforces session ownership using the provided user identity for session-mutating operations. + *

Request Body Schema

* *
      * {@code
      * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
+     *     agent_session_id: String (Optional)
+     *     version_indicator (Required): {
+     *         type: String(version_ref) (Required)
+     *     }
      * }
      * }
      * 
* - * @param agentName The name of the voice agent whose calls are listed. - * @param requestOptions The options to configure the HTTP request before HTTP client sends it. - * @throws HttpResponseException thrown if the request is rejected by server. - * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. - * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. - * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion - * of {@link Mono}. - */ - @ServiceMethod(returns = ReturnType.SINGLE) - private Mono> listTelephonyCallsSinglePageAsync(String agentName, - RequestOptions requestOptions) { - final String accept = "application/json"; - return FluxUtil - .withContext(context -> service.listTelephonyCalls(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) - .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - getValues(res.getValue(), "data"), null, null)); - } - - /** - * List agent telephony calls - * - * Returns the durable inbound call history for the voice agent named in the path. - *

Query Parameters

- * - * - * - * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: - * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: - * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix - * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this - * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
      * {@code
      * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
+     *     agent_session_id: String (Required)
+     *     version_indicator (Required): {
+     *         type: String(version_ref) (Required)
+     *     }
+     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
+     *     created_at: long (Required)
+     *     last_accessed_at: long (Required)
+     *     expires_at: long (Required)
      * }
      * }
      * 
* - * @param agentName The name of the voice agent whose calls are listed. + * @param agentName The name of the agent to create a session for. + * @param createSessionRequest The createSessionRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + * @return an agent session providing a long-lived compute sandbox for hosted agent invocations along with + * {@link Response} on successful completion of {@link Mono}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedFlux listTelephonyCallsAsync(String agentName, RequestOptions requestOptions) { - return new PagedFlux<>(() -> listTelephonyCallsSinglePageAsync(agentName, requestOptions)); + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> createSessionWithResponseAsync(String agentName, BinaryData createSessionRequest, + RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.createSession(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, createSessionRequest, requestOptions, + context)); } /** - * List agent telephony calls + * Create a session + * + * Creates a new session for an agent endpoint. + * The endpoint resolves the backing agent version from `version_indicator` and + * enforces session ownership using the provided user identity for session-mutating operations. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     agent_session_id: String (Optional)
+     *     version_indicator (Required): {
+     *         type: String(version_ref) (Required)
+     *     }
+     * }
+     * }
+     * 
* - * Returns the durable inbound call history for the voice agent named in the path. - *

Query Parameters

- * - * - * - * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: - * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: - * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix - * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this - * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
      * {@code
      * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
+     *     agent_session_id: String (Required)
+     *     version_indicator (Required): {
+     *         type: String(version_ref) (Required)
+     *     }
+     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
+     *     created_at: long (Required)
+     *     last_accessed_at: long (Required)
+     *     expires_at: long (Required)
      * }
      * }
      * 
* - * @param agentName The name of the voice agent whose calls are listed. + * @param agentName The name of the agent to create a session for. + * @param createSessionRequest The createSessionRequest parameter. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items along with {@link PagedResponse}. + * @return an agent session providing a long-lived compute sandbox for hosted agent invocations along with + * {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - private PagedResponse listTelephonyCallsSinglePage(String agentName, RequestOptions requestOptions) { + public Response createSessionWithResponse(String agentName, BinaryData createSessionRequest, + RequestOptions requestOptions) { + final String contentType = "application/json"; final String accept = "application/json"; - Response res = service.listTelephonyCallsSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); - return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), - getValues(res.getValue(), "data"), null, null); + return service.createSessionSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, createSessionRequest, requestOptions, + Context.NONE); } /** - * List agent telephony calls + * Get a session * - * Returns the durable inbound call history for the voice agent named in the path. - *

Query Parameters

- * - * - * - * - * - * - * - * - * - * - * - *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: - * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: - * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix - * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this - * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range - * between 1 and 100, and the - * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` - * for ascending order and`desc` - * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that - * defines your place in the list. - * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your - * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
- * You can add these to a request with {@link RequestOptions#addQueryParam} + * Retrieves the details of a hosted agent session by agent name and session identifier. *

Response Body Schema

* *
      * {@code
      * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
+     *     agent_session_id: String (Required)
+     *     version_indicator (Required): {
+     *         type: String(version_ref) (Required)
+     *     }
+     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
+     *     created_at: long (Required)
+     *     last_accessed_at: long (Required)
+     *     expires_at: long (Required)
      * }
      * }
      * 
* - * @param agentName The name of the voice agent whose calls are listed. + * @param agentName The name of the agent. + * @param sessionId The session identifier. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + * @return a session + * + * Retrieves the details of a hosted agent session by agent name and session identifier along with {@link Response} + * on successful completion of {@link Mono}. */ - @ServiceMethod(returns = ReturnType.COLLECTION) - public PagedIterable listTelephonyCalls(String agentName, RequestOptions requestOptions) { - return new PagedIterable<>(() -> listTelephonyCallsSinglePage(agentName, requestOptions)); + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getSessionWithResponseAsync(String agentName, String sessionId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.getSession(this.client.getEndpoint(), agentName, sessionId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); } /** - * Get an agent telephony call + * Get a session * - * Retrieves a durable inbound call record owned by the voice agent named in the path. + * Retrieves the details of a hosted agent session by agent name and session identifier. *

Response Body Schema

* *
      * {@code
      * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
-     *     timing (Required): {
-     *         received_at: Long (Optional)
-     *         validated_at: Long (Optional)
-     *         admitted_at: Long (Optional)
-     *         answer_requested_at: Long (Optional)
-     *         answered_at: Long (Optional)
-     *         media_connected_at: Long (Optional)
-     *         agent_session_ready_at: Long (Optional)
-     *         first_caller_audio_at: Long (Optional)
-     *         first_agent_audio_at: Long (Optional)
-     *         ended_at: Long (Optional)
-     *         duration_basis: String(answered/received) (Optional)
-     *         timestamp_source: String(provider/gateway/derived) (Required)
-     *     }
-     *     trace (Optional): {
-     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
-     *         trace_id: String (Optional)
-     *         root_span_id: String (Optional)
-     *         conversation_id: String (Optional)
-     *         mode: String(live/post_call) (Optional)
-     *     }
-     *     events (Required): [
-     *          (Required){
-     *             sequence: long (Required)
-     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
-     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
-     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
-     *             observed_at: long (Required)
-     *             occurred_at: Long (Optional)
-     *             timestamp_source: String(provider/gateway/derived) (Required)
-     *             reason: String (Optional)
-     *             provider_event_id: String (Optional)
-     *             provider_sequence: Long (Optional)
-     *             provider_status_code: Integer (Optional)
-     *             provider_sub_code: Integer (Optional)
-     *         }
-     *     ]
-     *     events_truncated: boolean (Required)
+     *     agent_session_id: String (Required)
+     *     version_indicator (Required): {
+     *         type: String(version_ref) (Required)
+     *     }
+     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
+     *     created_at: long (Required)
+     *     last_accessed_at: long (Required)
+     *     expires_at: long (Required)
      * }
      * }
      * 
* - * @param agentName The name of the voice agent that owns the call record. - * @param callId The service-generated call identifier. + * @param agentName The name of the agent. + * @param sessionId The session identifier. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return an agent telephony call + * @return a session * - * Retrieves a durable inbound call record owned by the voice agent named in the path along with {@link Response} on - * successful completion of {@link Mono}. + * Retrieves the details of a hosted agent session by agent name and session identifier along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> getTelephonyCallWithResponseAsync(String agentName, String callId, + public Response getSessionWithResponse(String agentName, String sessionId, RequestOptions requestOptions) { final String accept = "application/json"; - return FluxUtil.withContext(context -> service.getTelephonyCall(this.client.getEndpoint(), agentName, callId, - this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + return service.getSessionSync(this.client.getEndpoint(), agentName, sessionId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); } /** - * Get an agent telephony call - * - * Retrieves a durable inbound call record owned by the voice agent named in the path. - *

Response Body Schema

+ * Delete a session * - *
-     * {@code
-     * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
-     *     timing (Required): {
-     *         received_at: Long (Optional)
-     *         validated_at: Long (Optional)
-     *         admitted_at: Long (Optional)
-     *         answer_requested_at: Long (Optional)
-     *         answered_at: Long (Optional)
-     *         media_connected_at: Long (Optional)
-     *         agent_session_ready_at: Long (Optional)
-     *         first_caller_audio_at: Long (Optional)
-     *         first_agent_audio_at: Long (Optional)
-     *         ended_at: Long (Optional)
-     *         duration_basis: String(answered/received) (Optional)
-     *         timestamp_source: String(provider/gateway/derived) (Required)
-     *     }
-     *     trace (Optional): {
-     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
-     *         trace_id: String (Optional)
-     *         root_span_id: String (Optional)
-     *         conversation_id: String (Optional)
-     *         mode: String(live/post_call) (Optional)
-     *     }
-     *     events (Required): [
-     *          (Required){
-     *             sequence: long (Required)
-     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
-     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
-     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
-     *             observed_at: long (Required)
-     *             occurred_at: Long (Optional)
-     *             timestamp_source: String(provider/gateway/derived) (Required)
-     *             reason: String (Optional)
-     *             provider_event_id: String (Optional)
-     *             provider_sequence: Long (Optional)
-     *             provider_status_code: Integer (Optional)
-     *             provider_sub_code: Integer (Optional)
-     *         }
-     *     ]
-     *     events_truncated: boolean (Required)
-     * }
-     * }
-     * 
+ * Deletes a session synchronously. + * Returns 204 No Content when the session is deleted or does not exist. * - * @param agentName The name of the voice agent that owns the call record. - * @param callId The service-generated call identifier. + * @param agentName The name of the agent. + * @param sessionId The session identifier. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return an agent telephony call - * - * Retrieves a durable inbound call record owned by the voice agent named in the path along with {@link Response}. + * @return the {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response getTelephonyCallWithResponse(String agentName, String callId, + public Mono> deleteSessionWithResponseAsync(String agentName, String sessionId, RequestOptions requestOptions) { - final String accept = "application/json"; - return service.getTelephonyCallSync(this.client.getEndpoint(), agentName, callId, - this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + return FluxUtil.withContext(context -> service.deleteSession(this.client.getEndpoint(), agentName, sessionId, + this.client.getServiceVersion().getVersion(), requestOptions, context)); } /** - * Transfer an active agent telephony call - * - * Transfers an active inbound call to a configured target for the voice agent named in the path. - *

Request Body Schema

- * - *
-     * {@code
-     * {
-     *     target: String (Required)
-     * }
-     * }
-     * 
- * - *

Response Body Schema

+ * Delete a session * - *
-     * {@code
-     * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
-     *     timing (Required): {
-     *         received_at: Long (Optional)
-     *         validated_at: Long (Optional)
-     *         admitted_at: Long (Optional)
-     *         answer_requested_at: Long (Optional)
-     *         answered_at: Long (Optional)
-     *         media_connected_at: Long (Optional)
-     *         agent_session_ready_at: Long (Optional)
-     *         first_caller_audio_at: Long (Optional)
-     *         first_agent_audio_at: Long (Optional)
-     *         ended_at: Long (Optional)
-     *         duration_basis: String(answered/received) (Optional)
-     *         timestamp_source: String(provider/gateway/derived) (Required)
-     *     }
-     *     trace (Optional): {
-     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
-     *         trace_id: String (Optional)
-     *         root_span_id: String (Optional)
-     *         conversation_id: String (Optional)
-     *         mode: String(live/post_call) (Optional)
-     *     }
-     *     events (Required): [
-     *          (Required){
-     *             sequence: long (Required)
-     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
-     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
-     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
-     *             observed_at: long (Required)
-     *             occurred_at: Long (Optional)
-     *             timestamp_source: String(provider/gateway/derived) (Required)
-     *             reason: String (Optional)
-     *             provider_event_id: String (Optional)
-     *             provider_sequence: Long (Optional)
-     *             provider_status_code: Integer (Optional)
-     *             provider_sub_code: Integer (Optional)
-     *         }
-     *     ]
-     *     events_truncated: boolean (Required)
-     * }
-     * }
-     * 
+ * Deletes a session synchronously. + * Returns 204 No Content when the session is deleted or does not exist. * - * @param agentName The name of the voice agent that owns the active call. - * @param callId The service-generated call identifier. - * @param transferTelephonyCallRequest The transferTelephonyCallRequest parameter. + * @param agentName The name of the agent. + * @param sessionId The session identifier. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response} on - * successful completion of {@link Mono}. + * @return the {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> transferTelephonyCallWithResponseAsync(String agentName, String callId, - BinaryData transferTelephonyCallRequest, RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - return FluxUtil.withContext(context -> service.transferTelephonyCall(this.client.getEndpoint(), agentName, - callId, this.client.getServiceVersion().getVersion(), contentType, accept, transferTelephonyCallRequest, - requestOptions, context)); + public Response deleteSessionWithResponse(String agentName, String sessionId, RequestOptions requestOptions) { + return service.deleteSessionSync(this.client.getEndpoint(), agentName, sessionId, + this.client.getServiceVersion().getVersion(), requestOptions, Context.NONE); } /** - * Transfer an active agent telephony call - * - * Transfers an active inbound call to a configured target for the voice agent named in the path. - *

Request Body Schema

+ * Stop a session * - *
-     * {@code
-     * {
-     *     target: String (Required)
-     * }
-     * }
-     * 
+ * Terminates the specified hosted agent session and returns 204 No Content when the request succeeds. * - *

Response Body Schema

+ * @param agentName The name of the agent. + * @param sessionId The session identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> stopSessionWithResponseAsync(String agentName, String sessionId, + RequestOptions requestOptions) { + return FluxUtil.withContext(context -> service.stopSession(this.client.getEndpoint(), agentName, sessionId, + this.client.getServiceVersion().getVersion(), requestOptions, context)); + } + + /** + * Stop a session * - *
-     * {@code
-     * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
-     *     timing (Required): {
-     *         received_at: Long (Optional)
-     *         validated_at: Long (Optional)
-     *         admitted_at: Long (Optional)
-     *         answer_requested_at: Long (Optional)
-     *         answered_at: Long (Optional)
-     *         media_connected_at: Long (Optional)
-     *         agent_session_ready_at: Long (Optional)
-     *         first_caller_audio_at: Long (Optional)
-     *         first_agent_audio_at: Long (Optional)
-     *         ended_at: Long (Optional)
-     *         duration_basis: String(answered/received) (Optional)
-     *         timestamp_source: String(provider/gateway/derived) (Required)
-     *     }
-     *     trace (Optional): {
-     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
-     *         trace_id: String (Optional)
-     *         root_span_id: String (Optional)
-     *         conversation_id: String (Optional)
-     *         mode: String(live/post_call) (Optional)
-     *     }
-     *     events (Required): [
-     *          (Required){
-     *             sequence: long (Required)
-     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
-     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
-     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
-     *             observed_at: long (Required)
-     *             occurred_at: Long (Optional)
-     *             timestamp_source: String(provider/gateway/derived) (Required)
-     *             reason: String (Optional)
-     *             provider_event_id: String (Optional)
-     *             provider_sequence: Long (Optional)
-     *             provider_status_code: Integer (Optional)
-     *             provider_sub_code: Integer (Optional)
-     *         }
-     *     ]
-     *     events_truncated: boolean (Required)
-     * }
-     * }
-     * 
+ * Terminates the specified hosted agent session and returns 204 No Content when the request succeeds. * - * @param agentName The name of the voice agent that owns the active call. - * @param callId The service-generated call identifier. - * @param transferTelephonyCallRequest The transferTelephonyCallRequest parameter. + * @param agentName The name of the agent. + * @param sessionId The session identifier. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response}. + * @return the {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response transferTelephonyCallWithResponse(String agentName, String callId, - BinaryData transferTelephonyCallRequest, RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - return service.transferTelephonyCallSync(this.client.getEndpoint(), agentName, callId, - this.client.getServiceVersion().getVersion(), contentType, accept, transferTelephonyCallRequest, - requestOptions, Context.NONE); + public Response stopSessionWithResponse(String agentName, String sessionId, RequestOptions requestOptions) { + return service.stopSessionSync(this.client.getEndpoint(), agentName, sessionId, + this.client.getServiceVersion().getVersion(), requestOptions, Context.NONE); } /** - * End an active agent telephony call + * List sessions for an agent * - * Ends an active inbound call owned by the voice agent named in the path. + * Returns a paged collection of sessions associated with the specified agent endpoint. + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
      * {@code
      * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
-     *     timing (Required): {
-     *         received_at: Long (Optional)
-     *         validated_at: Long (Optional)
-     *         admitted_at: Long (Optional)
-     *         answer_requested_at: Long (Optional)
-     *         answered_at: Long (Optional)
-     *         media_connected_at: Long (Optional)
-     *         agent_session_ready_at: Long (Optional)
-     *         first_caller_audio_at: Long (Optional)
-     *         first_agent_audio_at: Long (Optional)
-     *         ended_at: Long (Optional)
-     *         duration_basis: String(answered/received) (Optional)
-     *         timestamp_source: String(provider/gateway/derived) (Required)
-     *     }
-     *     trace (Optional): {
-     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
-     *         trace_id: String (Optional)
-     *         root_span_id: String (Optional)
-     *         conversation_id: String (Optional)
-     *         mode: String(live/post_call) (Optional)
-     *     }
-     *     events (Required): [
-     *          (Required){
-     *             sequence: long (Required)
-     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
-     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
-     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
-     *             observed_at: long (Required)
-     *             occurred_at: Long (Optional)
-     *             timestamp_source: String(provider/gateway/derived) (Required)
-     *             reason: String (Optional)
-     *             provider_event_id: String (Optional)
-     *             provider_sequence: Long (Optional)
-     *             provider_status_code: Integer (Optional)
-     *             provider_sub_code: Integer (Optional)
-     *         }
-     *     ]
-     *     events_truncated: boolean (Required)
+     *     agent_session_id: String (Required)
+     *     version_indicator (Required): {
+     *         type: String(version_ref) (Required)
+     *     }
+     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
+     *     created_at: long (Required)
+     *     last_accessed_at: long (Required)
+     *     expires_at: long (Required)
      * }
      * }
      * 
* - * @param agentName The name of the voice agent that owns the active call. - * @param callId The service-generated call identifier. + * @param agentName The name of the agent. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response} on - * successful completion of {@link Mono}. + * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion + * of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> endTelephonyCallWithResponseAsync(String agentName, String callId, + private Mono> listSessionsSinglePageAsync(String agentName, RequestOptions requestOptions) { final String accept = "application/json"; - return FluxUtil.withContext(context -> service.endTelephonyCall(this.client.getEndpoint(), agentName, callId, - this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + return FluxUtil + .withContext(context -> service.listSessions(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) + .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null)); } /** - * End an active agent telephony call + * List sessions for an agent * - * Ends an active inbound call owned by the voice agent named in the path. + * Returns a paged collection of sessions associated with the specified agent endpoint. + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
      * {@code
      * {
-     *     id: String (Required)
-     *     provider: String(teams_phone_extension/twilio) (Required)
-     *     provider_call_id: String (Optional)
-     *     caller_number: String (Optional)
-     *     provider_number: String (Optional)
-     *     status: String(in_progress/success/failed) (Required)
-     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
-     *     started_at: long (Required)
-     *     answered_at: Long (Optional)
-     *     media_connected_at: Long (Optional)
-     *     agent_session_ready_at: Long (Optional)
-     *     ended_at: Long (Optional)
-     *     duration_ms: Long (Optional)
-     *     end_reason: String (Optional)
-     *     provider_status_code: Integer (Optional)
-     *     provider_sub_code: Integer (Optional)
-     *     provider_message: String (Optional)
-     *     timing (Required): {
-     *         received_at: Long (Optional)
-     *         validated_at: Long (Optional)
-     *         admitted_at: Long (Optional)
-     *         answer_requested_at: Long (Optional)
-     *         answered_at: Long (Optional)
-     *         media_connected_at: Long (Optional)
-     *         agent_session_ready_at: Long (Optional)
-     *         first_caller_audio_at: Long (Optional)
-     *         first_agent_audio_at: Long (Optional)
-     *         ended_at: Long (Optional)
-     *         duration_basis: String(answered/received) (Optional)
-     *         timestamp_source: String(provider/gateway/derived) (Required)
-     *     }
-     *     trace (Optional): {
-     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
-     *         trace_id: String (Optional)
-     *         root_span_id: String (Optional)
-     *         conversation_id: String (Optional)
-     *         mode: String(live/post_call) (Optional)
-     *     }
-     *     events (Required): [
-     *          (Required){
-     *             sequence: long (Required)
-     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
-     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
-     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
-     *             observed_at: long (Required)
-     *             occurred_at: Long (Optional)
-     *             timestamp_source: String(provider/gateway/derived) (Required)
-     *             reason: String (Optional)
-     *             provider_event_id: String (Optional)
-     *             provider_sequence: Long (Optional)
-     *             provider_status_code: Integer (Optional)
-     *             provider_sub_code: Integer (Optional)
-     *         }
-     *     ]
-     *     events_truncated: boolean (Required)
+     *     agent_session_id: String (Required)
+     *     version_indicator (Required): {
+     *         type: String(version_ref) (Required)
+     *     }
+     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
+     *     created_at: long (Required)
+     *     last_accessed_at: long (Required)
+     *     expires_at: long (Required)
      * }
      * }
      * 
* - * @param agentName The name of the voice agent that owns the active call. - * @param callId The service-generated call identifier. + * @param agentName The name of the agent. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response}. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response endTelephonyCallWithResponse(String agentName, String callId, - RequestOptions requestOptions) { - final String accept = "application/json"; - return service.endTelephonyCallSync(this.client.getEndpoint(), agentName, callId, - this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listSessionsAsync(String agentName, RequestOptions requestOptions) { + return new PagedFlux<>(() -> listSessionsSinglePageAsync(agentName, requestOptions)); } /** - * Get agent telephony transfer targets + * List sessions for an agent * - * Returns all transfer targets configured for the voice agent named in the path. + * Returns a paged collection of sessions associated with the specified agent endpoint. + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
      * {@code
      * {
-     *     transfer_targets (Required): [
-     *          (Required){
-     *             name: String (Required)
-     *             description: String (Required)
-     *             destination (Required): {
-     *                 kind: String(pstn/teams/sip) (Required)
-     *             }
-     *         }
-     *     ]
+     *     agent_session_id: String (Required)
+     *     version_indicator (Required): {
+     *         type: String(version_ref) (Required)
+     *     }
+     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
+     *     created_at: long (Required)
+     *     last_accessed_at: long (Required)
+     *     expires_at: long (Required)
      * }
      * }
      * 
* - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer - * targets.
- * - * @param agentName The name of the voice agent whose transfer targets are retrieved. + * @param agentName The name of the agent. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return agent telephony transfer targets - * - * Returns all transfer targets configured for the voice agent named in the path along with {@link Response} on - * successful completion of {@link Mono}. + * @return the response data for a requested list of items along with {@link PagedResponse}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> getTelephonyTransferTargetsWithResponseAsync(String agentName, - RequestOptions requestOptions) { + private PagedResponse listSessionsSinglePage(String agentName, RequestOptions requestOptions) { final String accept = "application/json"; - return FluxUtil.withContext(context -> service.getTelephonyTransferTargets(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + Response res = service.listSessionsSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null); } /** - * Get agent telephony transfer targets + * List sessions for an agent * - * Returns all transfer targets configured for the voice agent named in the path. + * Returns a paged collection of sessions associated with the specified agent endpoint. + *

Query Parameters

+ * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} *

Response Body Schema

* *
      * {@code
      * {
-     *     transfer_targets (Required): [
-     *          (Required){
-     *             name: String (Required)
-     *             description: String (Required)
-     *             destination (Required): {
-     *                 kind: String(pstn/teams/sip) (Required)
-     *             }
-     *         }
-     *     ]
+     *     agent_session_id: String (Required)
+     *     version_indicator (Required): {
+     *         type: String(version_ref) (Required)
+     *     }
+     *     status: String(creating/active/idle/updating/failed/deleting/deleted/expired) (Required)
+     *     created_at: long (Required)
+     *     last_accessed_at: long (Required)
+     *     expires_at: long (Required)
      * }
      * }
      * 
* - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer - * targets.
- * - * @param agentName The name of the voice agent whose transfer targets are retrieved. + * @param agentName The name of the agent. * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return agent telephony transfer targets - * - * Returns all transfer targets configured for the voice agent named in the path along with {@link Response}. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. */ - @ServiceMethod(returns = ReturnType.SINGLE) - public Response getTelephonyTransferTargetsWithResponse(String agentName, - RequestOptions requestOptions) { - final String accept = "application/json"; - return service.getTelephonyTransferTargetsSync(this.client.getEndpoint(), agentName, - this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listSessions(String agentName, RequestOptions requestOptions) { + return new PagedIterable<>(() -> listSessionsSinglePage(agentName, requestOptions)); } /** - * Replace agent telephony transfer targets + * Stream console logs for a hosted agent session * - * Replaces all transfer targets configured for the voice agent named in the path. - *

Request Body Schema

+ * Streams console logs (stdout / stderr) for a specific hosted agent session + * as a Server-Sent Events (SSE) stream. * - *
-     * {@code
-     * {
-     *     transfer_targets (Required): [
-     *          (Required){
-     *             name: String (Required)
-     *             description: String (Required)
-     *             destination (Required): {
-     *                 kind: String(pstn/teams/sip) (Required)
-     *             }
-     *         }
-     *     ]
-     * }
-     * }
-     * 
+ * Each SSE frame contains: + * - `event`: always `"log"` + * - `data`: a plain-text log line (currently JSON-formatted, but the schema + * is not contractual and may include additional keys or change format + * over time — clients should treat it as an opaque string) + * + * Example SSE frames: + * ``` + * event: log + * data: {"timestamp":"2026-03-10T09:33:17.121Z","stream":"stdout","message":"Starting FoundryCBAgent server on port + * 8088"} + * + * event: log + * data: {"timestamp":"2026-03-10T09:33:17.130Z","stream":"stderr","message":"INFO: Application startup complete."} + * + * event: log + * data: {"timestamp":"2026-03-10T09:34:52.714Z","stream":"status","message":"Successfully connected to container"} * + * event: log + * data: {"timestamp":"2026-03-10T09:35:52.714Z","stream":"status","message":"No logs since last 60 seconds"} + * ``` + * + * The stream remains open until the client disconnects or the server + * terminates the connection. Clients should handle reconnection as needed. *

Response Body Schema

* *
      * {@code
      * {
-     *     transfer_targets (Required): [
-     *          (Required){
-     *             name: String (Required)
-     *             description: String (Required)
-     *             destination (Required): {
-     *                 kind: String(pstn/teams/sip) (Required)
-     *             }
-     *         }
-     *     ]
+     *     event: String(log) (Required)
+     *     data: String (Required)
      * }
      * }
      * 
* - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer - * targets.
- * - * @param agentName The name of the voice agent whose transfer targets are replaced. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @param replaceTelephonyTransferTargetsRequest The replaceTelephonyTransferTargetsRequest parameter. + * @param agentName The name of the hosted agent. + * @param agentVersion The version of the agent. + * @param sessionId The session ID (maps to an ADC sandbox). * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the telephony transfer targets configured for one voice agent along with {@link Response} on successful - * completion of {@link Mono}. + * @return a single Server-Sent Event frame emitted by the hosted agent session log stream. + * + * Each frame contains an `event` field identifying the event type and a `data` + * field carrying the payload as plain text along with {@link Response} on successful completion of {@link Mono}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Mono> replaceTelephonyTransferTargetsWithResponseAsync(String agentName, String ifMatch, - BinaryData replaceTelephonyTransferTargetsRequest, RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - return FluxUtil.withContext(context -> service.replaceTelephonyTransferTargets(this.client.getEndpoint(), - agentName, ifMatch, this.client.getServiceVersion().getVersion(), contentType, accept, - replaceTelephonyTransferTargetsRequest, requestOptions, context)); + public Mono> getSessionLogStreamWithResponseAsync(String agentName, String agentVersion, + String sessionId, RequestOptions requestOptions) { + final String accept = "text/event-stream"; + return FluxUtil.withContext(context -> service.getSessionLogStream(this.client.getEndpoint(), agentName, + agentVersion, sessionId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); } /** - * Replace agent telephony transfer targets + * Stream console logs for a hosted agent session * - * Replaces all transfer targets configured for the voice agent named in the path. - *

Request Body Schema

+ * Streams console logs (stdout / stderr) for a specific hosted agent session + * as a Server-Sent Events (SSE) stream. * - *
-     * {@code
-     * {
-     *     transfer_targets (Required): [
-     *          (Required){
-     *             name: String (Required)
-     *             description: String (Required)
-     *             destination (Required): {
-     *                 kind: String(pstn/teams/sip) (Required)
-     *             }
-     *         }
-     *     ]
-     * }
-     * }
-     * 
+ * Each SSE frame contains: + * - `event`: always `"log"` + * - `data`: a plain-text log line (currently JSON-formatted, but the schema + * is not contractual and may include additional keys or change format + * over time — clients should treat it as an opaque string) + * + * Example SSE frames: + * ``` + * event: log + * data: {"timestamp":"2026-03-10T09:33:17.121Z","stream":"stdout","message":"Starting FoundryCBAgent server on port + * 8088"} + * + * event: log + * data: {"timestamp":"2026-03-10T09:33:17.130Z","stream":"stderr","message":"INFO: Application startup complete."} + * + * event: log + * data: {"timestamp":"2026-03-10T09:34:52.714Z","stream":"status","message":"Successfully connected to container"} + * + * event: log + * data: {"timestamp":"2026-03-10T09:35:52.714Z","stream":"status","message":"No logs since last 60 seconds"} + * ``` * + * The stream remains open until the client disconnects or the server + * terminates the connection. Clients should handle reconnection as needed. *

Response Body Schema

* *
      * {@code
      * {
-     *     transfer_targets (Required): [
-     *          (Required){
-     *             name: String (Required)
-     *             description: String (Required)
-     *             destination (Required): {
-     *                 kind: String(pstn/teams/sip) (Required)
-     *             }
-     *         }
-     *     ]
+     *     event: String(log) (Required)
+     *     data: String (Required)
      * }
      * }
      * 
* - *

Response Headers

- * - * - * - * - *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer - * targets.
- * - * @param agentName The name of the voice agent whose transfer targets are replaced. - * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that - * read. - * @param replaceTelephonyTransferTargetsRequest The replaceTelephonyTransferTargetsRequest parameter. + * @param agentName The name of the hosted agent. + * @param agentVersion The version of the agent. + * @param sessionId The session ID (maps to an ADC sandbox). * @param requestOptions The options to configure the HTTP request before HTTP client sends it. * @throws HttpResponseException thrown if the request is rejected by server. * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. - * @return the telephony transfer targets configured for one voice agent along with {@link Response}. + * @return a single Server-Sent Event frame emitted by the hosted agent session log stream. + * + * Each frame contains an `event` field identifying the event type and a `data` + * field carrying the payload as plain text along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response replaceTelephonyTransferTargetsWithResponse(String agentName, String ifMatch, - BinaryData replaceTelephonyTransferTargetsRequest, RequestOptions requestOptions) { - final String contentType = "application/json"; - final String accept = "application/json"; - return service.replaceTelephonyTransferTargetsSync(this.client.getEndpoint(), agentName, ifMatch, - this.client.getServiceVersion().getVersion(), contentType, accept, replaceTelephonyTransferTargetsRequest, - requestOptions, Context.NONE); + public Response getSessionLogStreamWithResponse(String agentName, String agentVersion, String sessionId, + RequestOptions requestOptions) { + final String accept = "text/event-stream"; + return service.getSessionLogStreamSync(this.client.getEndpoint(), agentName, agentVersion, sessionId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); } /** diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/BetaAgentEndpointConversationsImpl.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/BetaAgentEndpointConversationsImpl.java index 7d9001b57fce5..79ffb04f05080 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/BetaAgentEndpointConversationsImpl.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/BetaAgentEndpointConversationsImpl.java @@ -989,7 +989,6 @@ public Response deleteAgentConversationWithResponse(String agentName, Stri *
      * {@code
      * {
-     *     id: String (Required)
      *     object: String(realtime.response) (Optional)
      *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
      *     status_details (Optional): {
@@ -1020,16 +1019,17 @@ public Response deleteAgentConversationWithResponse(String agentName, Stri
      *             audio_tokens: Long (Optional)
      *         }
      *     }
-     *     conversation_id: String (Required)
      *     output_modalities (Optional): [
      *         String(text/audio) (Optional)
      *     ]
      *     max_output_tokens: BinaryData (Optional)
+     *     id: String (Required)
      *     output (Optional): [
      *          (Optional){
      *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
      *         }
      *     ]
+     *     conversation_id: String (Required)
      *     audio (Optional): {
      *         output (Optional): {
      *             voice: String (Optional)
@@ -1102,7 +1102,6 @@ private Mono> listAgentConversationResponsesSinglePage
      * 
      * {@code
      * {
-     *     id: String (Required)
      *     object: String(realtime.response) (Optional)
      *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
      *     status_details (Optional): {
@@ -1133,16 +1132,17 @@ private Mono> listAgentConversationResponsesSinglePage
      *             audio_tokens: Long (Optional)
      *         }
      *     }
-     *     conversation_id: String (Required)
      *     output_modalities (Optional): [
      *         String(text/audio) (Optional)
      *     ]
      *     max_output_tokens: BinaryData (Optional)
+     *     id: String (Required)
      *     output (Optional): [
      *          (Optional){
      *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
      *         }
      *     ]
+     *     conversation_id: String (Required)
      *     audio (Optional): {
      *         output (Optional): {
      *             voice: String (Optional)
@@ -1210,7 +1210,6 @@ public PagedFlux listAgentConversationResponsesAsync(String agentNam
      * 
      * {@code
      * {
-     *     id: String (Required)
      *     object: String(realtime.response) (Optional)
      *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
      *     status_details (Optional): {
@@ -1241,16 +1240,17 @@ public PagedFlux listAgentConversationResponsesAsync(String agentNam
      *             audio_tokens: Long (Optional)
      *         }
      *     }
-     *     conversation_id: String (Required)
      *     output_modalities (Optional): [
      *         String(text/audio) (Optional)
      *     ]
      *     max_output_tokens: BinaryData (Optional)
+     *     id: String (Required)
      *     output (Optional): [
      *          (Optional){
      *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
      *         }
      *     ]
+     *     conversation_id: String (Required)
      *     audio (Optional): {
      *         output (Optional): {
      *             voice: String (Optional)
@@ -1321,7 +1321,6 @@ private PagedResponse listAgentConversationResponsesSinglePage(Strin
      * 
      * {@code
      * {
-     *     id: String (Required)
      *     object: String(realtime.response) (Optional)
      *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
      *     status_details (Optional): {
@@ -1352,16 +1351,17 @@ private PagedResponse listAgentConversationResponsesSinglePage(Strin
      *             audio_tokens: Long (Optional)
      *         }
      *     }
-     *     conversation_id: String (Required)
      *     output_modalities (Optional): [
      *         String(text/audio) (Optional)
      *     ]
      *     max_output_tokens: BinaryData (Optional)
+     *     id: String (Required)
      *     output (Optional): [
      *          (Optional){
      *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
      *         }
      *     ]
+     *     conversation_id: String (Required)
      *     audio (Optional): {
      *         output (Optional): {
      *             voice: String (Optional)
@@ -1408,7 +1408,6 @@ public PagedIterable listAgentConversationResponses(String agentName
      * 
      * {@code
      * {
-     *     id: String (Required)
      *     object: String(realtime.response) (Optional)
      *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
      *     status_details (Optional): {
@@ -1439,16 +1438,17 @@ public PagedIterable listAgentConversationResponses(String agentName
      *             audio_tokens: Long (Optional)
      *         }
      *     }
-     *     conversation_id: String (Required)
      *     output_modalities (Optional): [
      *         String(text/audio) (Optional)
      *     ]
      *     max_output_tokens: BinaryData (Optional)
+     *     id: String (Required)
      *     output (Optional): [
      *          (Optional){
      *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
      *         }
      *     ]
+     *     conversation_id: String (Required)
      *     audio (Optional): {
      *         output (Optional): {
      *             voice: String (Optional)
@@ -1501,7 +1501,6 @@ public Mono> getAgentConversationResponseWithResponseAsync(
      * 
      * {@code
      * {
-     *     id: String (Required)
      *     object: String(realtime.response) (Optional)
      *     status: String(completed/cancelled/failed/incomplete/in_progress) (Optional)
      *     status_details (Optional): {
@@ -1532,16 +1531,17 @@ public Mono> getAgentConversationResponseWithResponseAsync(
      *             audio_tokens: Long (Optional)
      *         }
      *     }
-     *     conversation_id: String (Required)
      *     output_modalities (Optional): [
      *         String(text/audio) (Optional)
      *     ]
      *     max_output_tokens: BinaryData (Optional)
+     *     id: String (Required)
      *     output (Optional): [
      *          (Optional){
      *             type: String(function_call/function_call_output/mcp_approval_response/mcp_list_tools/mcp_call/mcp_approval_request/message) (Required)
      *         }
      *     ]
+     *     conversation_id: String (Required)
      *     audio (Optional): {
      *         output (Optional): {
      *             voice: String (Optional)
diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentTelephoniesImpl.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/BetaAgentTelephoniesImpl.java
similarity index 99%
rename from sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentTelephoniesImpl.java
rename to sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/BetaAgentTelephoniesImpl.java
index 0ea137249b5c1..8789cfc066431 100644
--- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/AgentTelephoniesImpl.java
+++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/BetaAgentTelephoniesImpl.java
@@ -38,13 +38,13 @@
 import reactor.core.publisher.Mono;
 
 /**
- * An instance of this class provides access to all the operations defined in AgentTelephonies.
+ * An instance of this class provides access to all the operations defined in BetaAgentTelephonies.
  */
-public final class AgentTelephoniesImpl {
+public final class BetaAgentTelephoniesImpl {
     /**
      * The proxy service used to perform REST calls.
      */
-    private final AgentTelephoniesService service;
+    private final BetaAgentTelephoniesService service;
 
     /**
      * The service client containing this operation class.
@@ -52,13 +52,13 @@ public final class AgentTelephoniesImpl {
     private final AgentsClientImpl client;
 
     /**
-     * Initializes an instance of AgentTelephoniesImpl.
+     * Initializes an instance of BetaAgentTelephoniesImpl.
      * 
      * @param client the instance of the service client containing this operation class.
      */
-    AgentTelephoniesImpl(AgentsClientImpl client) {
-        this.service
-            = RestProxy.create(AgentTelephoniesService.class, client.getHttpPipeline(), client.getSerializerAdapter());
+    BetaAgentTelephoniesImpl(AgentsClientImpl client) {
+        this.service = RestProxy.create(BetaAgentTelephoniesService.class, client.getHttpPipeline(),
+            client.getSerializerAdapter());
         this.client = client;
     }
 
@@ -72,12 +72,12 @@ public AgentsServiceVersion getServiceVersion() {
     }
 
     /**
-     * The interface defining all the services for AgentsClientAgentTelephonies to be used by the proxy service to
+     * The interface defining all the services for AgentsClientBetaAgentTelephonies to be used by the proxy service to
      * perform REST calls.
      */
     @Host("{endpoint}")
-    @ServiceInterface(name = "AgentsClientAgentTelephonies")
-    public interface AgentTelephoniesService {
+    @ServiceInterface(name = "AgentsClientBetaAgentTelephonies")
+    public interface BetaAgentTelephoniesService {
         @Post("/agents/{agent_name}/telephony/call_jobs")
         @ExpectedResponses({ 202 })
         @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/BetaAgentsImpl.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/BetaAgentsImpl.java
index 63630d6091868..4026044ac058f 100644
--- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/BetaAgentsImpl.java
+++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/BetaAgentsImpl.java
@@ -14,8 +14,10 @@
 import com.azure.core.annotation.HeaderParam;
 import com.azure.core.annotation.Host;
 import com.azure.core.annotation.HostParam;
+import com.azure.core.annotation.Patch;
 import com.azure.core.annotation.PathParam;
 import com.azure.core.annotation.Post;
+import com.azure.core.annotation.Put;
 import com.azure.core.annotation.QueryParam;
 import com.azure.core.annotation.ReturnType;
 import com.azure.core.annotation.ServiceInterface;
@@ -25,6 +27,7 @@
 import com.azure.core.exception.HttpResponseException;
 import com.azure.core.exception.ResourceModifiedException;
 import com.azure.core.exception.ResourceNotFoundException;
+import com.azure.core.http.HttpHeaderName;
 import com.azure.core.http.rest.PagedFlux;
 import com.azure.core.http.rest.PagedIterable;
 import com.azure.core.http.rest.PagedResponse;
@@ -34,12 +37,15 @@
 import com.azure.core.http.rest.RestProxy;
 import com.azure.core.util.BinaryData;
 import com.azure.core.util.Context;
+import com.azure.core.util.CoreUtils;
+import com.azure.core.util.DateTimeRfc1123;
 import com.azure.core.util.FluxUtil;
 import com.azure.core.util.polling.PollerFlux;
 import com.azure.core.util.polling.PollingStrategyOptions;
 import com.azure.core.util.polling.SyncPoller;
 import com.azure.core.util.serializer.TypeReference;
 import java.time.Duration;
+import java.time.OffsetDateTime;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -86,6 +92,274 @@ public AgentsServiceVersion getServiceVersion() {
     @Host("{endpoint}")
     @ServiceInterface(name = "AgentsClientBetaAgents")
     public interface BetaAgentsService {
+        @Post("/agents:generate")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Mono> generateAgent(@HostParam("endpoint") String endpoint,
+            @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType,
+            @HeaderParam("Accept") String accept, @BodyParam("application/json") BinaryData body,
+            RequestOptions requestOptions, Context context);
+
+        @Post("/agents:generate")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Response generateAgentSync(@HostParam("endpoint") String endpoint,
+            @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType,
+            @HeaderParam("Accept") String accept, @BodyParam("application/json") BinaryData body,
+            RequestOptions requestOptions, Context context);
+
+        @Post("/agents/{agent_name}/telephony/bindings")
+        @ExpectedResponses({ 201 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Mono> createTelephonyBinding(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion,
+            @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept,
+            @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context);
+
+        @Post("/agents/{agent_name}/telephony/bindings")
+        @ExpectedResponses({ 201 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Response createTelephonyBindingSync(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion,
+            @HeaderParam("Content-Type") String contentType, @HeaderParam("Accept") String accept,
+            @BodyParam("application/json") BinaryData body, RequestOptions requestOptions, Context context);
+
+        @Get("/agents/{agent_name}/telephony/bindings")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Mono> listTelephonyBindings(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion,
+            @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context);
+
+        @Get("/agents/{agent_name}/telephony/bindings")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Response listTelephonyBindingsSync(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion,
+            @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context);
+
+        @Get("/agents/{agent_name}/telephony/bindings/{binding_id}")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Mono> getTelephonyBinding(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId,
+            @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept,
+            RequestOptions requestOptions, Context context);
+
+        @Get("/agents/{agent_name}/telephony/bindings/{binding_id}")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Response getTelephonyBindingSync(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId,
+            @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept,
+            RequestOptions requestOptions, Context context);
+
+        @Patch("/agents/{agent_name}/telephony/bindings/{binding_id}")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Mono> updateTelephonyBinding(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId,
+            @HeaderParam("Content-Type") String contentType, @HeaderParam("If-Match") String ifMatch,
+            @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept,
+            @BodyParam("application/merge-patch+json") BinaryData body, RequestOptions requestOptions, Context context);
+
+        @Patch("/agents/{agent_name}/telephony/bindings/{binding_id}")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Response updateTelephonyBindingSync(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId,
+            @HeaderParam("Content-Type") String contentType, @HeaderParam("If-Match") String ifMatch,
+            @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept,
+            @BodyParam("application/merge-patch+json") BinaryData body, RequestOptions requestOptions, Context context);
+
+        @Delete("/agents/{agent_name}/telephony/bindings/{binding_id}")
+        @ExpectedResponses({ 204 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Mono> deleteTelephonyBinding(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId,
+            @HeaderParam("If-Match") String ifMatch, @QueryParam("api-version") String apiVersion,
+            RequestOptions requestOptions, Context context);
+
+        @Delete("/agents/{agent_name}/telephony/bindings/{binding_id}")
+        @ExpectedResponses({ 204 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Response deleteTelephonyBindingSync(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @PathParam("binding_id") String bindingId,
+            @HeaderParam("If-Match") String ifMatch, @QueryParam("api-version") String apiVersion,
+            RequestOptions requestOptions, Context context);
+
+        @Get("/agents/{agent_name}/telephony/calls")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Mono> listTelephonyCalls(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion,
+            @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context);
+
+        @Get("/agents/{agent_name}/telephony/calls")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Response listTelephonyCallsSync(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion,
+            @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context);
+
+        @Get("/agents/{agent_name}/telephony/calls/{call_id}")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Mono> getTelephonyCall(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @PathParam("call_id") String callId,
+            @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept,
+            RequestOptions requestOptions, Context context);
+
+        @Get("/agents/{agent_name}/telephony/calls/{call_id}")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Response getTelephonyCallSync(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @PathParam("call_id") String callId,
+            @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept,
+            RequestOptions requestOptions, Context context);
+
+        @Post("/agents/{agent_name}/telephony/calls/{call_id}:transfer")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Mono> transferTelephonyCall(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @PathParam("call_id") String callId,
+            @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType,
+            @HeaderParam("Accept") String accept,
+            @BodyParam("application/json") BinaryData transferTelephonyCallRequest, RequestOptions requestOptions,
+            Context context);
+
+        @Post("/agents/{agent_name}/telephony/calls/{call_id}:transfer")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Response transferTelephonyCallSync(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @PathParam("call_id") String callId,
+            @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType,
+            @HeaderParam("Accept") String accept,
+            @BodyParam("application/json") BinaryData transferTelephonyCallRequest, RequestOptions requestOptions,
+            Context context);
+
+        @Post("/agents/{agent_name}/telephony/calls/{call_id}:end")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Mono> endTelephonyCall(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @PathParam("call_id") String callId,
+            @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept,
+            RequestOptions requestOptions, Context context);
+
+        @Post("/agents/{agent_name}/telephony/calls/{call_id}:end")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Response endTelephonyCallSync(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @PathParam("call_id") String callId,
+            @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept,
+            RequestOptions requestOptions, Context context);
+
+        @Get("/agents/{agent_name}/telephony/transfer_targets")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Mono> getTelephonyTransferTargets(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion,
+            @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context);
+
+        @Get("/agents/{agent_name}/telephony/transfer_targets")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Response getTelephonyTransferTargetsSync(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @QueryParam("api-version") String apiVersion,
+            @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context);
+
+        @Put("/agents/{agent_name}/telephony/transfer_targets")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Mono> replaceTelephonyTransferTargets(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @HeaderParam("If-Match") String ifMatch,
+            @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType,
+            @HeaderParam("Accept") String accept,
+            @BodyParam("application/json") BinaryData replaceTelephonyTransferTargetsRequest,
+            RequestOptions requestOptions, Context context);
+
+        @Put("/agents/{agent_name}/telephony/transfer_targets")
+        @ExpectedResponses({ 200 })
+        @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
+        @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 })
+        @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 })
+        @UnexpectedResponseExceptionType(HttpResponseException.class)
+        Response replaceTelephonyTransferTargetsSync(@HostParam("endpoint") String endpoint,
+            @PathParam("agent_name") String agentName, @HeaderParam("If-Match") String ifMatch,
+            @QueryParam("api-version") String apiVersion, @HeaderParam("Content-Type") String contentType,
+            @HeaderParam("Accept") String accept,
+            @BodyParam("application/json") BinaryData replaceTelephonyTransferTargetsRequest,
+            RequestOptions requestOptions, Context context);
+
         @Post("/agent_optimization_jobs")
         @ExpectedResponses({ 201 })
         @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 })
@@ -189,6 +463,2037 @@ Response deleteOptimizationJobSync(@HostParam("endpoint") String endpoint,
             RequestOptions requestOptions, Context context);
     }
 
+    /**
+     * Generate an agent
+     * 
+     * Generates and creates an agent from kind-specific high-level inputs.
+     * The generated definition remains fully editable through the standard agent versioning operations.
+     * 

Request Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
+     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
+     *     versions (Required): {
+     *         latest (Required): {
+     *             metadata (Required): {
+     *                 String: String (Required)
+     *             }
+     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *             id: String (Required)
+     *             name: String (Required)
+     *             version: String (Required)
+     *             description: String (Optional)
+     *             created_at: long (Required)
+     *             definition (Required): {
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *                 rai_config (Optional): {
+     *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
+     *                 }
+     *             }
+     *             draft: Boolean (Optional)
+     *             status: String(creating/active/failed/deleting/deleted) (Optional)
+     *             instance_identity (Optional): {
+     *                 principal_id: String (Required)
+     *                 client_id: String (Required)
+     *                 status: String(active/disabled) (Optional)
+     *             }
+     *             blueprint (Optional): (recursive schema, see blueprint above)
+     *             blueprint_reference (Optional): {
+     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
+     *             }
+     *             agent_guid: String (Optional)
+     *         }
+     *     }
+     *     agent_endpoint (Optional): {
+     *         version_selector (Optional): {
+     *             version_selection_rules (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     type: String(FixedRatio) (Required)
+     *                     agent_version: String (Optional, Required on create)
+     *                 }
+     *             ]
+     *         }
+     *         protocol_configuration (Optional): {
+     *             activity (Optional): {
+     *                 enable_m365_public_endpoint: Boolean (Optional)
+     *                 access_boundaries (Optional): [
+     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
+     *                 ]
+     *             }
+     *             responses (Optional): {
+     *             }
+     *             a2a (Optional): {
+     *             }
+     *             mcp (Optional): {
+     *             }
+     *             invocations (Optional): {
+     *             }
+     *             invocations_ws (Optional): {
+     *             }
+     *         }
+     *         authorization_schemes (Optional): [
+     *              (Optional){
+     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
+     *             }
+     *         ]
+     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
+     *     }
+     *     digital_worker_type: String(m365) (Optional)
+     *     instance_identity (Optional): (recursive schema, see instance_identity above)
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): (recursive schema, see blueprint_reference above)
+     *     agent_card (Optional): {
+     *         version: String (Optional, Required on create)
+     *         description: String (Optional)
+     *         skills (Optional, Required on create): [
+     *              (Optional, Required on create){
+     *                 id: String (Optional, Required on create)
+     *                 name: String (Optional, Required on create)
+     *                 description: String (Optional)
+     *                 tags (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 examples (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *             }
+     *         ]
+     *     }
+     * }
+     * }
+     * 
+ * + * @param body The kind-specific inputs for generating and creating an agent. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> generateAgentWithResponseAsync(BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.generateAgent(this.client.getEndpoint(), + this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptions, context)); + } + + /** + * Generate an agent + * + * Generates and creates an agent from kind-specific high-level inputs. + * The generated definition remains fully editable through the standard agent versioning operations. + *

Request Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *     id: String (Required)
+     *     name: String (Required)
+     *     state: String(enabled/disabled) (Required)
+     *     configuration_state: String(enabled/disabled) (Required)
+     *     state_source: String(agent_instance_identity/agent_blueprint) (Optional)
+     *     versions (Required): {
+     *         latest (Required): {
+     *             metadata (Required): {
+     *                 String: String (Required)
+     *             }
+     *             object: String(agent/agent.version/agent.deleted/agent.version.deleted/agent.container) (Required)
+     *             id: String (Required)
+     *             name: String (Required)
+     *             version: String (Required)
+     *             description: String (Optional)
+     *             created_at: long (Required)
+     *             definition (Required): {
+     *                 kind: String(prompt/hosted/workflow/external/voice) (Required)
+     *                 rai_config (Optional): {
+     *                     rai_policy_name: String (Required)
+     *                     invocations_moderation (Optional): {
+     *                         input_content_type: String(json/text) (Optional)
+     *                         output_content_type: String(json/text) (Optional)
+     *                         response_mode: String(non_streaming/streaming/both) (Required)
+     *                         input_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         output_paths (Optional): [
+     *                             String (Optional)
+     *                         ]
+     *                         stream_selectors (Optional): [
+     *                              (Optional){
+     *                                 event_type: String (Required)
+     *                                 text_field: String (Optional)
+     *                             }
+     *                         ]
+     *                     }
+     *                 }
+     *             }
+     *             draft: Boolean (Optional)
+     *             status: String(creating/active/failed/deleting/deleted) (Optional)
+     *             instance_identity (Optional): {
+     *                 principal_id: String (Required)
+     *                 client_id: String (Required)
+     *                 status: String(active/disabled) (Optional)
+     *             }
+     *             blueprint (Optional): (recursive schema, see blueprint above)
+     *             blueprint_reference (Optional): {
+     *                 type: String(ManagedAgentIdentityBlueprint) (Required)
+     *             }
+     *             agent_guid: String (Optional)
+     *         }
+     *     }
+     *     agent_endpoint (Optional): {
+     *         version_selector (Optional): {
+     *             version_selection_rules (Optional, Required on create): [
+     *                  (Optional, Required on create){
+     *                     type: String(FixedRatio) (Required)
+     *                     agent_version: String (Optional, Required on create)
+     *                 }
+     *             ]
+     *         }
+     *         protocol_configuration (Optional): {
+     *             activity (Optional): {
+     *                 enable_m365_public_endpoint: Boolean (Optional)
+     *                 access_boundaries (Optional): [
+     *                     String(read.1on1.developers/read.1on1.manager/read.1on1.allowlisted/read.1on1.tenant/write.1on1.developers/write.1on1.manager/write.1on1.allowlisted/write.1on1.tenant/read.group.developers/read.group.allowlisted/read.group.manager-invited/read.group.manager-present/read.group.tenant/write.group.developers/write.group.allowlisted/write.group.manager-invited/write.group.manager-present/write.group.tenant) (Optional)
+     *                 ]
+     *             }
+     *             responses (Optional): {
+     *             }
+     *             a2a (Optional): {
+     *             }
+     *             mcp (Optional): {
+     *             }
+     *             invocations (Optional): {
+     *             }
+     *             invocations_ws (Optional): {
+     *             }
+     *         }
+     *         authorization_schemes (Optional): [
+     *              (Optional){
+     *                 type: String(Entra/BotService/BotServiceRbac/BotServiceTenant) (Required)
+     *             }
+     *         ]
+     *         publish_approval_status: String(not_published/pending/approved/rejected/no_approval_needed) (Optional)
+     *     }
+     *     digital_worker_type: String(m365) (Optional)
+     *     instance_identity (Optional): (recursive schema, see instance_identity above)
+     *     blueprint (Optional): (recursive schema, see blueprint above)
+     *     blueprint_reference (Optional): (recursive schema, see blueprint_reference above)
+     *     agent_card (Optional): {
+     *         version: String (Optional, Required on create)
+     *         description: String (Optional)
+     *         skills (Optional, Required on create): [
+     *              (Optional, Required on create){
+     *                 id: String (Optional, Required on create)
+     *                 name: String (Optional, Required on create)
+     *                 description: String (Optional)
+     *                 tags (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 examples (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *             }
+     *         ]
+     *     }
+     * }
+     * }
+     * 
+ * + * @param body The kind-specific inputs for generating and creating an agent. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response body along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response generateAgentWithResponse(BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.generateAgentSync(this.client.getEndpoint(), this.client.getServiceVersion().getVersion(), + contentType, accept, body, requestOptions, Context.NONE); + } + + /** + * Create an agent telephony binding + * + * Creates a telephony binding for the voice agent named in the path. + *

Header Parameters

+ * + * + * + * + * + *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as + * HTTP-date
+ * You can add these to a request with {@link RequestOptions#addHeader} + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param body The provider-specific binding to create. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response} on successful completion of + * {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> createTelephonyBindingWithResponseAsync(String agentName, BinaryData body, + RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + RequestOptions requestOptionsLocal = requestOptions == null ? new RequestOptions() : requestOptions; + requestOptionsLocal.addRequestCallback(requestLocal -> { + if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-request-id")) == null) { + requestLocal.getHeaders() + .set(HttpHeaderName.fromString("repeatability-request-id"), CoreUtils.randomUuid().toString()); + } + }); + requestOptionsLocal.addRequestCallback(requestLocal -> { + if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-first-sent")) == null) { + requestLocal.getHeaders() + .set(HttpHeaderName.fromString("repeatability-first-sent"), + DateTimeRfc1123.toRfc1123String(OffsetDateTime.now())); + } + }); + return FluxUtil.withContext(context -> service.createTelephonyBinding(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptionsLocal, context)); + } + + /** + * Create an agent telephony binding + * + * Creates a telephony binding for the voice agent named in the path. + *

Header Parameters

+ * + * + * + * + * + *
Header Parameters
NameTypeRequiredDescription
repeatability-request-idStringNoRepeatability request ID header
repeatability-first-sentStringNoRepeatability first sent header as + * HTTP-date
+ * You can add these to a request with {@link RequestOptions#addHeader} + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param body The provider-specific binding to create. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response createTelephonyBindingWithResponse(String agentName, BinaryData body, + RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + RequestOptions requestOptionsLocal = requestOptions == null ? new RequestOptions() : requestOptions; + requestOptionsLocal.addRequestCallback(requestLocal -> { + if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-request-id")) == null) { + requestLocal.getHeaders() + .set(HttpHeaderName.fromString("repeatability-request-id"), CoreUtils.randomUuid().toString()); + } + }); + requestOptionsLocal.addRequestCallback(requestLocal -> { + if (requestLocal.getHeaders().get(HttpHeaderName.fromString("repeatability-first-sent")) == null) { + requestLocal.getHeaders() + .set(HttpHeaderName.fromString("repeatability-first-sent"), + DateTimeRfc1123.toRfc1123String(OffsetDateTime.now())); + } + }); + return service.createTelephonyBindingSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), contentType, accept, body, requestOptionsLocal, Context.NONE); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", + * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose bindings are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion + * of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> listTelephonyBindingsSinglePageAsync(String agentName, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.listTelephonyBindings(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) + .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null)); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", + * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose bindings are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyBindingsAsync(String agentName, RequestOptions requestOptions) { + return new PagedFlux<>(() -> listTelephonyBindingsSinglePageAsync(agentName, requestOptions)); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", + * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose bindings are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listTelephonyBindingsSinglePage(String agentName, RequestOptions requestOptions) { + final String accept = "application/json"; + Response res = service.listTelephonyBindingsSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null); + } + + /** + * List agent telephony bindings + * + * Returns the telephony bindings owned by the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters bindings by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters bindings by lifecycle status. Allowed values: "active", + * "suspended".
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     *     etag: String (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose bindings are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyBindings(String agentName, RequestOptions requestOptions) { + return new PagedIterable<>(() -> listTelephonyBindingsSinglePage(agentName, requestOptions)); + } + + /** + * Get an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path along with {@link Response} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyBindingWithResponseAsync(String agentName, String bindingId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.getTelephonyBinding(this.client.getEndpoint(), agentName, + bindingId, this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony binding + * + * Retrieves a telephony binding owned by the voice agent named in the path along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyBindingWithResponse(String agentName, String bindingId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getTelephonyBindingSync(this.client.getEndpoint(), agentName, bindingId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Update an agent telephony binding + * + * Updates a telephony binding owned by the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     status: String(active/suspended) (Optional)
+     *     label: String (Optional)
+     *     connection: String (Optional)
+     *     phone_number: String (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param body The binding properties to update. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response} on successful completion of + * {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> updateTelephonyBindingWithResponseAsync(String agentName, String bindingId, + String ifMatch, BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/merge-patch+json"; + final String accept = "application/json"; + return FluxUtil.withContext( + context -> service.updateTelephonyBinding(this.client.getEndpoint(), agentName, bindingId, contentType, + ifMatch, this.client.getServiceVersion().getVersion(), accept, body, requestOptions, context)); + } + + /** + * Update an agent telephony binding + * + * Updates a telephony binding owned by the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     status: String(active/suspended) (Optional)
+     *     label: String (Optional)
+     *     connection: String (Optional)
+     *     phone_number: String (Optional)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     id: String (Required)
+     *     connection: String (Required)
+     *     label: String (Optional)
+     *     status: String(active/suspended) (Required)
+     *     incoming_call_url: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when updating or deleting the + * binding.
+ * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param body The binding properties to update. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return a telephony binding owned by a voice agent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response updateTelephonyBindingWithResponse(String agentName, String bindingId, String ifMatch, + BinaryData body, RequestOptions requestOptions) { + final String contentType = "application/merge-patch+json"; + final String accept = "application/json"; + return service.updateTelephonyBindingSync(this.client.getEndpoint(), agentName, bindingId, contentType, ifMatch, + this.client.getServiceVersion().getVersion(), accept, body, requestOptions, Context.NONE); + } + + /** + * Delete an agent telephony binding + * + * Deletes a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> deleteTelephonyBindingWithResponseAsync(String agentName, String bindingId, + String ifMatch, RequestOptions requestOptions) { + return FluxUtil.withContext(context -> service.deleteTelephonyBinding(this.client.getEndpoint(), agentName, + bindingId, ifMatch, this.client.getServiceVersion().getVersion(), requestOptions, context)); + } + + /** + * Delete an agent telephony binding + * + * Deletes a telephony binding owned by the voice agent named in the path. + * + * @param agentName The name of the voice agent that owns the binding. + * @param bindingId The service-generated binding identifier. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response deleteTelephonyBindingWithResponse(String agentName, String bindingId, String ifMatch, + RequestOptions requestOptions) { + return service.deleteTelephonyBindingSync(this.client.getEndpoint(), agentName, bindingId, ifMatch, + this.client.getServiceVersion().getVersion(), requestOptions, Context.NONE); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: + * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix + * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this + * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose calls are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse} on successful completion + * of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private Mono> listTelephonyCallsSinglePageAsync(String agentName, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil + .withContext(context -> service.listTelephonyCalls(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)) + .map(res -> new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null)); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: + * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix + * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this + * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose calls are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedFlux}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedFlux listTelephonyCallsAsync(String agentName, RequestOptions requestOptions) { + return new PagedFlux<>(() -> listTelephonyCallsSinglePageAsync(agentName, requestOptions)); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: + * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix + * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this + * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose calls are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items along with {@link PagedResponse}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + private PagedResponse listTelephonyCallsSinglePage(String agentName, RequestOptions requestOptions) { + final String accept = "application/json"; + Response res = service.listTelephonyCallsSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), + getValues(res.getValue(), "data"), null, null); + } + + /** + * List agent telephony calls + * + * Returns the durable inbound call history for the voice agent named in the path. + *

Query Parameters

+ * + * + * + * + * + * + * + * + * + * + * + *
Query Parameters
NameTypeRequiredDescription
providerStringNoFilters calls by provider. Allowed values: + * "teams_phone_extension", "twilio".
statusStringNoFilters calls by lifecycle status. Allowed values: + * "in_progress", "success", "failed".
started_afterOffsetDateTimeNoIncludes calls that started at or after this Unix + * timestamp in seconds.
started_beforeOffsetDateTimeNoIncludes calls that started at or before this + * Unix timestamp in seconds.
limitIntegerNoA limit on the number of objects to be returned. Limit can range + * between 1 and 100, and the + * default is 20.
orderStringNoSort order by the `created_at` timestamp of the objects. `asc` + * for ascending order and`desc` + * for descending order. Allowed values: "asc", "desc".
afterStringNoA cursor for use in pagination. `after` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include after=obj_foo in order to fetch the next page of the list.
beforeStringNoA cursor for use in pagination. `before` is an object ID that + * defines your place in the list. + * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your + * subsequent call can include before=obj_foo in order to fetch the previous page of the list.
+ * You can add these to a request with {@link RequestOptions#addQueryParam} + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent whose calls are listed. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the response data for a requested list of items as paginated response with {@link PagedIterable}. + */ + @ServiceMethod(returns = ReturnType.COLLECTION) + public PagedIterable listTelephonyCalls(String agentName, RequestOptions requestOptions) { + return new PagedIterable<>(() -> listTelephonyCallsSinglePage(agentName, requestOptions)); + } + + /** + * Get an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the call record. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path along with {@link Response} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyCallWithResponseAsync(String agentName, String callId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.getTelephonyCall(this.client.getEndpoint(), agentName, callId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the call record. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return an agent telephony call + * + * Retrieves a durable inbound call record owned by the voice agent named in the path along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyCallWithResponse(String agentName, String callId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getTelephonyCallSync(this.client.getEndpoint(), agentName, callId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Transfer an active agent telephony call + * + * Transfers an active inbound call to a configured target for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     target: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param transferTelephonyCallRequest The transferTelephonyCallRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> transferTelephonyCallWithResponseAsync(String agentName, String callId, + BinaryData transferTelephonyCallRequest, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.transferTelephonyCall(this.client.getEndpoint(), agentName, + callId, this.client.getServiceVersion().getVersion(), contentType, accept, transferTelephonyCallRequest, + requestOptions, context)); + } + + /** + * Transfer an active agent telephony call + * + * Transfers an active inbound call to a configured target for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     target: String (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param transferTelephonyCallRequest The transferTelephonyCallRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response transferTelephonyCallWithResponse(String agentName, String callId, + BinaryData transferTelephonyCallRequest, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.transferTelephonyCallSync(this.client.getEndpoint(), agentName, callId, + this.client.getServiceVersion().getVersion(), contentType, accept, transferTelephonyCallRequest, + requestOptions, Context.NONE); + } + + /** + * End an active agent telephony call + * + * Ends an active inbound call owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> endTelephonyCallWithResponseAsync(String agentName, String callId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.endTelephonyCall(this.client.getEndpoint(), agentName, callId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * End an active agent telephony call + * + * Ends an active inbound call owned by the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     id: String (Required)
+     *     provider: String(teams_phone_extension/twilio) (Required)
+     *     provider_call_id: String (Optional)
+     *     caller_number: String (Optional)
+     *     provider_number: String (Optional)
+     *     status: String(in_progress/success/failed) (Required)
+     *     phase: String(received/validated/admitted/answering/answered/media_connected/agent_session_ready/bridging/managing/completed/rejected/failed) (Required)
+     *     started_at: long (Required)
+     *     answered_at: Long (Optional)
+     *     media_connected_at: Long (Optional)
+     *     agent_session_ready_at: Long (Optional)
+     *     ended_at: Long (Optional)
+     *     duration_ms: Long (Optional)
+     *     end_reason: String (Optional)
+     *     provider_status_code: Integer (Optional)
+     *     provider_sub_code: Integer (Optional)
+     *     provider_message: String (Optional)
+     *     timing (Required): {
+     *         received_at: Long (Optional)
+     *         validated_at: Long (Optional)
+     *         admitted_at: Long (Optional)
+     *         answer_requested_at: Long (Optional)
+     *         answered_at: Long (Optional)
+     *         media_connected_at: Long (Optional)
+     *         agent_session_ready_at: Long (Optional)
+     *         first_caller_audio_at: Long (Optional)
+     *         first_agent_audio_at: Long (Optional)
+     *         ended_at: Long (Optional)
+     *         duration_basis: String(answered/received) (Optional)
+     *         timestamp_source: String(provider/gateway/derived) (Required)
+     *     }
+     *     trace (Optional): {
+     *         status: String(pending/emitting/available/not_recorded/not_applicable/failed) (Required)
+     *         trace_id: String (Optional)
+     *         root_span_id: String (Optional)
+     *         conversation_id: String (Optional)
+     *         mode: String(live/post_call) (Optional)
+     *     }
+     *     events (Required): [
+     *          (Required){
+     *             sequence: long (Required)
+     *             name: String(telephony.webhook.received/telephony.webhook.validation/telephony.binding.resolve/telephony.provider.answer/telephony.media.connect/telephony.agent_session.connect/telephony.media.first_caller_audio/telephony.media.first_agent_audio/telephony.call.transfer/telephony.call.hangup/telephony.call.disconnect) (Required)
+     *             source: String(gateway/teams_phone_extension/twilio/voice_agent) (Required)
+     *             outcome: String(observed/started/succeeded/failed/rejected/cancelled) (Required)
+     *             observed_at: long (Required)
+     *             occurred_at: Long (Optional)
+     *             timestamp_source: String(provider/gateway/derived) (Required)
+     *             reason: String (Optional)
+     *             provider_event_id: String (Optional)
+     *             provider_sequence: Long (Optional)
+     *             provider_status_code: Integer (Optional)
+     *             provider_sub_code: Integer (Optional)
+     *         }
+     *     ]
+     *     events_truncated: boolean (Required)
+     * }
+     * }
+     * 
+ * + * @param agentName The name of the voice agent that owns the active call. + * @param callId The service-generated call identifier. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return detailed diagnostics for a durable inbound call to a voice agent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response endTelephonyCallWithResponse(String agentName, String callId, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.endTelephonyCallSync(this.client.getEndpoint(), agentName, callId, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Get agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path along with {@link Response} on + * successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getTelephonyTransferTargetsWithResponseAsync(String agentName, + RequestOptions requestOptions) { + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.getTelephonyTransferTargets(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, context)); + } + + /** + * Get agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path. + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are retrieved. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return agent telephony transfer targets + * + * Returns all transfer targets configured for the voice agent named in the path along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getTelephonyTransferTargetsWithResponse(String agentName, + RequestOptions requestOptions) { + final String accept = "application/json"; + return service.getTelephonyTransferTargetsSync(this.client.getEndpoint(), agentName, + this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); + } + + /** + * Replace agent telephony transfer targets + * + * Replaces all transfer targets configured for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are replaced. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param replaceTelephonyTransferTargetsRequest The replaceTelephonyTransferTargetsRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the telephony transfer targets configured for one voice agent along with {@link Response} on successful + * completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> replaceTelephonyTransferTargetsWithResponseAsync(String agentName, String ifMatch, + BinaryData replaceTelephonyTransferTargetsRequest, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.replaceTelephonyTransferTargets(this.client.getEndpoint(), + agentName, ifMatch, this.client.getServiceVersion().getVersion(), contentType, accept, + replaceTelephonyTransferTargetsRequest, requestOptions, context)); + } + + /** + * Replace agent telephony transfer targets + * + * Replaces all transfer targets configured for the voice agent named in the path. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * {
+     *     transfer_targets (Required): [
+     *          (Required){
+     *             name: String (Required)
+     *             description: String (Required)
+     *             destination (Required): {
+     *                 kind: String(pstn/teams/sip) (Required)
+     *             }
+     *         }
+     *     ]
+     * }
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
ETagStringThe entity tag to send in the `If-Match` header when replacing the transfer + * targets.
+ * + * @param agentName The name of the voice agent whose transfer targets are replaced. + * @param ifMatch The entity tag returned by the latest read. The request fails if the resource changed since that + * read. + * @param replaceTelephonyTransferTargetsRequest The replaceTelephonyTransferTargetsRequest parameter. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return the telephony transfer targets configured for one voice agent along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response replaceTelephonyTransferTargetsWithResponse(String agentName, String ifMatch, + BinaryData replaceTelephonyTransferTargetsRequest, RequestOptions requestOptions) { + final String contentType = "application/json"; + final String accept = "application/json"; + return service.replaceTelephonyTransferTargetsSync(this.client.getEndpoint(), agentName, ifMatch, + this.client.getServiceVersion().getVersion(), contentType, accept, replaceTelephonyTransferTargetsRequest, + requestOptions, Context.NONE); + } + /** * Create an agent optimization job * diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/JsonMergePatchHelper.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/JsonMergePatchHelper.java index 540db1110e7d6..d1d168161984c 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/JsonMergePatchHelper.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/JsonMergePatchHelper.java @@ -245,23 +245,6 @@ public static AgentCardSkillAccessor getAgentCardSkillAccessor() { return agentCardSkillAccessor; } - private static UpdateAgentDetailsOptionsAccessor updateAgentDetailsOptionsAccessor; - - public interface UpdateAgentDetailsOptionsAccessor { - UpdateAgentDetailsOptions prepareModelForJsonMergePatch(UpdateAgentDetailsOptions updateAgentDetailsOptions, - boolean jsonMergePatchEnabled); - - boolean isJsonMergePatch(UpdateAgentDetailsOptions updateAgentDetailsOptions); - } - - public static void setUpdateAgentDetailsOptionsAccessor(UpdateAgentDetailsOptionsAccessor accessor) { - updateAgentDetailsOptionsAccessor = accessor; - } - - public static UpdateAgentDetailsOptionsAccessor getUpdateAgentDetailsOptionsAccessor() { - return updateAgentDetailsOptionsAccessor; - } - private static UpdateTelephonyBindingRequestAccessor updateTelephonyBindingRequestAccessor; public interface UpdateTelephonyBindingRequestAccessor { @@ -278,4 +261,21 @@ public static void setUpdateTelephonyBindingRequestAccessor(UpdateTelephonyBindi public static UpdateTelephonyBindingRequestAccessor getUpdateTelephonyBindingRequestAccessor() { return updateTelephonyBindingRequestAccessor; } + + private static UpdateAgentDetailsOptionsAccessor updateAgentDetailsOptionsAccessor; + + public interface UpdateAgentDetailsOptionsAccessor { + UpdateAgentDetailsOptions prepareModelForJsonMergePatch(UpdateAgentDetailsOptions updateAgentDetailsOptions, + boolean jsonMergePatchEnabled); + + boolean isJsonMergePatch(UpdateAgentDetailsOptions updateAgentDetailsOptions); + } + + public static void setUpdateAgentDetailsOptionsAccessor(UpdateAgentDetailsOptionsAccessor accessor) { + updateAgentDetailsOptionsAccessor = accessor; + } + + public static UpdateAgentDetailsOptionsAccessor getUpdateAgentDetailsOptionsAccessor() { + return updateAgentDetailsOptionsAccessor; + } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/ToolboxesImpl.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/ToolboxesImpl.java index fc57d1cedbd95..5b9c3f04a20b0 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/ToolboxesImpl.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/ToolboxesImpl.java @@ -186,6 +186,28 @@ Response getToolboxVersionSync(@HostParam("endpoint") String endpoin @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context); + @Post("/toolboxes/{name}:invoke_mcp") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> invokeLatestToolboxMcp(@HostParam("endpoint") String endpoint, + @PathParam("name") String name, @HeaderParam("content-type") String contentType, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + @BodyParam("*/*") BinaryData request, RequestOptions requestOptions, Context context); + + @Post("/toolboxes/{name}:invoke_mcp") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) + @UnexpectedResponseExceptionType(value = ResourceNotFoundException.class, code = { 404 }) + @UnexpectedResponseExceptionType(value = ResourceModifiedException.class, code = { 409 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Response invokeLatestToolboxMcpSync(@HostParam("endpoint") String endpoint, + @PathParam("name") String name, @HeaderParam("content-type") String contentType, + @QueryParam("api-version") String apiVersion, @HeaderParam("Accept") String accept, + @BodyParam("*/*") BinaryData request, RequestOptions requestOptions, Context context); + @Patch("/toolboxes/{name}") @ExpectedResponses({ 200 }) @UnexpectedResponseExceptionType(value = ClientAuthenticationException.class, code = { 401 }) @@ -262,7 +284,7 @@ Response deleteToolboxVersionSync(@HostParam("endpoint") String endpoint, * } * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -319,7 +341,7 @@ Response deleteToolboxVersionSync(@HostParam("endpoint") String endpoint, * created_at: long (Required) * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -395,7 +417,7 @@ public Mono> createToolboxVersionWithResponseAsync(String n * } * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -452,7 +474,7 @@ public Mono> createToolboxVersionWithResponseAsync(String n * created_at: long (Required) * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -524,6 +546,59 @@ public Response createToolboxVersionWithResponse(String name, Binary * { * id: String (Required) * name: String (Required) + * updated_at: long (Required) + * versions (Required): { + * latest (Required): { + * metadata (Required): { + * String: String (Required) + * } + * id: String (Required) + * name: String (Required) + * version: String (Required) + * description: String (Optional) + * created_at: long (Required) + * tools (Required): [ + * (Required){ + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) + * name: String (Optional) + * description: String (Optional) + * tool_configs (Optional): { + * String (Required): { + * pin: Boolean (Optional) + * additional_search_text: String (Optional) + * } + * } + * } + * ] + * skills (Optional): [ + * (Optional){ + * type: String (Required) + * } + * ] + * policies (Optional): { + * rai_config (Optional): { + * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } + * } + * } + * } + * } * default_version: String (Required) * } * } @@ -556,6 +631,59 @@ public Mono> getToolboxWithResponseAsync(String name, Reque * { * id: String (Required) * name: String (Required) + * updated_at: long (Required) + * versions (Required): { + * latest (Required): { + * metadata (Required): { + * String: String (Required) + * } + * id: String (Required) + * name: String (Required) + * version: String (Required) + * description: String (Optional) + * created_at: long (Required) + * tools (Required): [ + * (Required){ + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) + * name: String (Optional) + * description: String (Optional) + * tool_configs (Optional): { + * String (Required): { + * pin: Boolean (Optional) + * additional_search_text: String (Optional) + * } + * } + * } + * ] + * skills (Optional): [ + * (Optional){ + * type: String (Required) + * } + * ] + * policies (Optional): { + * rai_config (Optional): { + * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } + * } + * } + * } + * } * default_version: String (Required) * } * } @@ -607,6 +735,59 @@ public Response getToolboxWithResponse(String name, RequestOptions r * { * id: String (Required) * name: String (Required) + * updated_at: long (Required) + * versions (Required): { + * latest (Required): { + * metadata (Required): { + * String: String (Required) + * } + * id: String (Required) + * name: String (Required) + * version: String (Required) + * description: String (Optional) + * created_at: long (Required) + * tools (Required): [ + * (Required){ + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) + * name: String (Optional) + * description: String (Optional) + * tool_configs (Optional): { + * String (Required): { + * pin: Boolean (Optional) + * additional_search_text: String (Optional) + * } + * } + * } + * ] + * skills (Optional): [ + * (Optional){ + * type: String (Required) + * } + * ] + * policies (Optional): { + * rai_config (Optional): { + * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } + * } + * } + * } + * } * default_version: String (Required) * } * } @@ -661,6 +842,59 @@ private Mono> listToolboxesSinglePageAsync(RequestOpti * { * id: String (Required) * name: String (Required) + * updated_at: long (Required) + * versions (Required): { + * latest (Required): { + * metadata (Required): { + * String: String (Required) + * } + * id: String (Required) + * name: String (Required) + * version: String (Required) + * description: String (Optional) + * created_at: long (Required) + * tools (Required): [ + * (Required){ + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) + * name: String (Optional) + * description: String (Optional) + * tool_configs (Optional): { + * String (Required): { + * pin: Boolean (Optional) + * additional_search_text: String (Optional) + * } + * } + * } + * ] + * skills (Optional): [ + * (Optional){ + * type: String (Required) + * } + * ] + * policies (Optional): { + * rai_config (Optional): { + * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } + * } + * } + * } + * } * default_version: String (Required) * } * } @@ -709,6 +943,59 @@ public PagedFlux listToolboxesAsync(RequestOptions requestOptions) { * { * id: String (Required) * name: String (Required) + * updated_at: long (Required) + * versions (Required): { + * latest (Required): { + * metadata (Required): { + * String: String (Required) + * } + * id: String (Required) + * name: String (Required) + * version: String (Required) + * description: String (Optional) + * created_at: long (Required) + * tools (Required): [ + * (Required){ + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) + * name: String (Optional) + * description: String (Optional) + * tool_configs (Optional): { + * String (Required): { + * pin: Boolean (Optional) + * additional_search_text: String (Optional) + * } + * } + * } + * ] + * skills (Optional): [ + * (Optional){ + * type: String (Required) + * } + * ] + * policies (Optional): { + * rai_config (Optional): { + * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } + * } + * } + * } + * } * default_version: String (Required) * } * } @@ -761,6 +1048,59 @@ private PagedResponse listToolboxesSinglePage(RequestOptions request * { * id: String (Required) * name: String (Required) + * updated_at: long (Required) + * versions (Required): { + * latest (Required): { + * metadata (Required): { + * String: String (Required) + * } + * id: String (Required) + * name: String (Required) + * version: String (Required) + * description: String (Optional) + * created_at: long (Required) + * tools (Required): [ + * (Required){ + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) + * name: String (Optional) + * description: String (Optional) + * tool_configs (Optional): { + * String (Required): { + * pin: Boolean (Optional) + * additional_search_text: String (Optional) + * } + * } + * } + * ] + * skills (Optional): [ + * (Optional){ + * type: String (Required) + * } + * ] + * policies (Optional): { + * rai_config (Optional): { + * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } + * } + * } + * } + * } * default_version: String (Required) * } * } @@ -817,7 +1157,7 @@ public PagedIterable listToolboxes(RequestOptions requestOptions) { * created_at: long (Required) * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -918,7 +1258,7 @@ private Mono> listToolboxVersionsSinglePageAsync(Strin * created_at: long (Required) * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -1012,7 +1352,7 @@ public PagedFlux listToolboxVersionsAsync(String name, RequestOption * created_at: long (Required) * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -1110,7 +1450,7 @@ private PagedResponse listToolboxVersionsSinglePage(String name, Req * created_at: long (Required) * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -1184,7 +1524,7 @@ public PagedIterable listToolboxVersions(String name, RequestOptions * created_at: long (Required) * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -1262,7 +1602,7 @@ public Mono> getToolboxVersionWithResponseAsync(String name * created_at: long (Required) * tools (Required): [ * (Required){ - * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview) (Required) + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) * name: String (Optional) * description: String (Optional) * tool_configs (Optional): { @@ -1321,6 +1661,100 @@ public Response getToolboxVersionWithResponse(String name, String ve this.client.getServiceVersion().getVersion(), accept, requestOptions, Context.NONE); } + /** + * Invoke the latest toolbox version through MCP + * + * Invokes the latest version of the specified toolbox through its MCP endpoint. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     String: BinaryData (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
content-typeStringThe content type of the MCP response body.
+ * + * @param name The name of the toolbox. + * @param contentType The content type of the MCP request body. + * @param request The MCP request body. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return anything along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> invokeLatestToolboxMcpWithResponseAsync(String name, String contentType, + BinaryData request, RequestOptions requestOptions) { + final String accept = "*/*"; + return FluxUtil.withContext(context -> service.invokeLatestToolboxMcp(this.client.getEndpoint(), name, + contentType, this.client.getServiceVersion().getVersion(), accept, request, requestOptions, context)); + } + + /** + * Invoke the latest toolbox version through MCP + * + * Invokes the latest version of the specified toolbox through its MCP endpoint. + *

Request Body Schema

+ * + *
+     * {@code
+     * {
+     *     String: BinaryData (Required)
+     * }
+     * }
+     * 
+ * + *

Response Body Schema

+ * + *
+     * {@code
+     * BinaryData
+     * }
+     * 
+ * + *

Response Headers

+ * + * + * + * + *
Response Headers
NameTypeDescription
content-typeStringThe content type of the MCP response body.
+ * + * @param name The name of the toolbox. + * @param contentType The content type of the MCP request body. + * @param request The MCP request body. + * @param requestOptions The options to configure the HTTP request before HTTP client sends it. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws ClientAuthenticationException thrown if the request is rejected by server on status code 401. + * @throws ResourceNotFoundException thrown if the request is rejected by server on status code 404. + * @throws ResourceModifiedException thrown if the request is rejected by server on status code 409. + * @return anything along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response invokeLatestToolboxMcpWithResponse(String name, String contentType, BinaryData request, + RequestOptions requestOptions) { + final String accept = "*/*"; + return service.invokeLatestToolboxMcpSync(this.client.getEndpoint(), name, contentType, + this.client.getServiceVersion().getVersion(), accept, request, requestOptions, Context.NONE); + } + /** * Update a toolbox to point to a specific version * @@ -1342,6 +1776,59 @@ public Response getToolboxVersionWithResponse(String name, String ve * { * id: String (Required) * name: String (Required) + * updated_at: long (Required) + * versions (Required): { + * latest (Required): { + * metadata (Required): { + * String: String (Required) + * } + * id: String (Required) + * name: String (Required) + * version: String (Required) + * description: String (Optional) + * created_at: long (Required) + * tools (Required): [ + * (Required){ + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) + * name: String (Optional) + * description: String (Optional) + * tool_configs (Optional): { + * String (Required): { + * pin: Boolean (Optional) + * additional_search_text: String (Optional) + * } + * } + * } + * ] + * skills (Optional): [ + * (Optional){ + * type: String (Required) + * } + * ] + * policies (Optional): { + * rai_config (Optional): { + * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } + * } + * } + * } + * } * default_version: String (Required) * } * } @@ -1388,6 +1875,59 @@ public Mono> updateToolboxWithResponseAsync(String name, Bi * { * id: String (Required) * name: String (Required) + * updated_at: long (Required) + * versions (Required): { + * latest (Required): { + * metadata (Required): { + * String: String (Required) + * } + * id: String (Required) + * name: String (Required) + * version: String (Required) + * description: String (Optional) + * created_at: long (Required) + * tools (Required): [ + * (Required){ + * type: String(code_interpreter/file_search/web_search/mcp/azure_ai_search/openapi/a2a_preview/browser_automation_preview/reminder_preview/work_iq_preview/fabric_iq_preview/toolbox_search/toolbox_search_preview/a2a/shell/web_iq_preview/browser_automation) (Required) + * name: String (Optional) + * description: String (Optional) + * tool_configs (Optional): { + * String (Required): { + * pin: Boolean (Optional) + * additional_search_text: String (Optional) + * } + * } + * } + * ] + * skills (Optional): [ + * (Optional){ + * type: String (Required) + * } + * ] + * policies (Optional): { + * rai_config (Optional): { + * rai_policy_name: String (Required) + * invocations_moderation (Optional): { + * input_content_type: String(json/text) (Optional) + * output_content_type: String(json/text) (Optional) + * response_mode: String(non_streaming/streaming/both) (Required) + * input_paths (Optional): [ + * String (Optional) + * ] + * output_paths (Optional): [ + * String (Optional) + * ] + * stream_selectors (Optional): [ + * (Optional){ + * event_type: String (Required) + * text_field: String (Optional) + * } + * ] + * } + * } + * } + * } + * } * default_version: String (Required) * } * } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/models/AgentDefinitionOptInKeys.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/models/AgentDefinitionOptInKeys.java index 4d8de4270c889..6b9a6421aeecf 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/models/AgentDefinitionOptInKeys.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/models/AgentDefinitionOptInKeys.java @@ -5,7 +5,7 @@ package com.azure.ai.agents.implementation.models; /** - * Feature opt-in keys for agent definition operations supporting hosted or workflow agents. + * Feature opt-in keys for agent definition operations supporting conditional preview features. */ public enum AgentDefinitionOptInKeys { /** @@ -31,7 +31,17 @@ public enum AgentDefinitionOptInKeys { /** * Enum value DigitalWorker=V1Preview. */ - DIGITAL_WORKER_V1_PREVIEW("DigitalWorker=V1Preview"); + DIGITAL_WORKER_V1_PREVIEW("DigitalWorker=V1Preview"), + + /** + * Enum value GitHubCopilot=V1Preview. + */ + GITHUB_COPILOT_V1_PREVIEW("GitHubCopilot=V1Preview"), + + /** + * Enum value Skills=V1Preview. + */ + SKILLS_V1_PREVIEW("Skills=V1Preview"); /** * The actual serialized value for a AgentDefinitionOptInKeys instance. diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentDetails.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentDetails.java index 6904f2273e714..06a7e335f6ff7 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentDetails.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentDetails.java @@ -99,6 +99,7 @@ public static AgentDetails fromJson(JsonReader jsonReader) throws IOException { String id = null; String name = null; AgentState state = null; + AgentState configurationState = null; AgentDetailsVersions versions = null; AgentStateSource stateSource = null; AgentEndpointConfig agentEndpoint = null; @@ -116,6 +117,8 @@ public static AgentDetails fromJson(JsonReader jsonReader) throws IOException { name = reader.getString(); } else if ("state".equals(fieldName)) { state = AgentState.fromString(reader.getString()); + } else if ("configuration_state".equals(fieldName)) { + configurationState = AgentState.fromString(reader.getString()); } else if ("versions".equals(fieldName)) { versions = AgentDetailsVersions.fromJson(reader); } else if ("state_source".equals(fieldName)) { @@ -138,6 +141,7 @@ public static AgentDetails fromJson(JsonReader jsonReader) throws IOException { } AgentDetails deserializedAgentDetails = new AgentDetails(id, name, versions); deserializedAgentDetails.state = state; + deserializedAgentDetails.configurationState = configurationState; deserializedAgentDetails.stateSource = stateSource; deserializedAgentDetails.agentEndpoint = agentEndpoint; deserializedAgentDetails.digitalWorkerType = digitalWorkerType; @@ -312,4 +316,22 @@ public AgentStateSource getStateSource() { public DigitalWorkerType getDigitalWorkerType() { return this.digitalWorkerType; } + + /* + * The administrative configuration state of the agent. This reflects whether the agent was explicitly enabled or + * disabled, independently of identity-derived operational state. + */ + @Generated + private AgentState configurationState; + + /** + * Get the configurationState property: The administrative configuration state of the agent. This reflects whether + * the agent was explicitly enabled or disabled, independently of identity-derived operational state. + * + * @return the configurationState value. + */ + @Generated + public AgentState getConfigurationState() { + return this.configurationState; + } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentHarness.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentHarness.java new file mode 100644 index 0000000000000..2943eb468cb13 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentHarness.java @@ -0,0 +1,105 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * A managed runtime and agent loop used to execute a prompt agent. + */ +@Immutable +public class AgentHarness implements JsonSerializable { + + /* + * The type of managed harness. + */ + @Generated + private String type = "AgentHarness"; + + /** + * Creates an instance of AgentHarness class. + */ + @Generated + public AgentHarness() { + } + + /** + * Get the type property: The type of managed harness. + * + * @return the type value. + */ + @Generated + public String getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of AgentHarness from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of AgentHarness if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IOException If an error occurs while reading the AgentHarness. + */ + @Generated + public static AgentHarness fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + // Prepare for reading + readerToUse.nextToken(); + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("type".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("github_copilot_preview".equals(discriminatorValue)) { + return GitHubCopilotHarness.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + @Generated + static AgentHarness fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + AgentHarness deserializedAgentHarness = new AgentHarness(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedAgentHarness.type = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedAgentHarness; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetItem.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetItem.java index 6b5b8007f0e02..49c207326a7ba 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetItem.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetItem.java @@ -120,7 +120,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); jsonWriter.writeStringField("query", this.query); jsonWriter.writeStringField("ground_truth", this.groundTruth); - jsonWriter.writeNumberField("desired_num_turns", this.desiredNumTurns); + jsonWriter.writeNumberField("desired_num_turns", this.desiredNumberTurns); jsonWriter.writeArrayField("criteria", this.criteria, (writer, element) -> writer.writeJson(element)); return jsonWriter.writeEndObject(); } @@ -145,7 +145,8 @@ public static AgentOptimizationDatasetItem fromJson(JsonReader jsonReader) throw } else if ("ground_truth".equals(fieldName)) { deserializedAgentOptimizationDatasetItem.groundTruth = reader.getString(); } else if ("desired_num_turns".equals(fieldName)) { - deserializedAgentOptimizationDatasetItem.desiredNumTurns = reader.getNullable(JsonReader::getInt); + deserializedAgentOptimizationDatasetItem.desiredNumberTurns + = reader.getNullable(JsonReader::getInt); } else if ("criteria".equals(fieldName)) { List criteria = reader.readArray(reader1 -> AgentOptimizationDatasetCriterion.fromJson(reader1)); @@ -162,27 +163,27 @@ public static AgentOptimizationDatasetItem fromJson(JsonReader jsonReader) throw * Desired number of conversation turns for simulation mode (1-20). */ @Generated - private Integer desiredNumTurns; + private Integer desiredNumberTurns; /** - * Get the desiredNumTurns property: Desired number of conversation turns for simulation mode (1-20). + * Get the desiredNumberTurns property: Desired number of conversation turns for simulation mode (1-20). * - * @return the desiredNumTurns value. + * @return the desiredNumberTurns value. */ @Generated - public Integer getDesiredNumTurns() { - return this.desiredNumTurns; + public Integer getDesiredNumberTurns() { + return this.desiredNumberTurns; } /** - * Set the desiredNumTurns property: Desired number of conversation turns for simulation mode (1-20). + * Set the desiredNumberTurns property: Desired number of conversation turns for simulation mode (1-20). * - * @param desiredNumTurns the desiredNumTurns value to set. + * @param desiredNumberTurns the desiredNumberTurns value to set. * @return the AgentOptimizationDatasetItem object itself. */ @Generated - public AgentOptimizationDatasetItem setDesiredNumTurns(Integer desiredNumTurns) { - this.desiredNumTurns = desiredNumTurns; + public AgentOptimizationDatasetItem setDesiredNumberTurns(Integer desiredNumberTurns) { + this.desiredNumberTurns = desiredNumberTurns; return this; } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationJobInputs.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationJobInputs.java index 872ccc5258658..63f794a603f62 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationJobInputs.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationJobInputs.java @@ -42,7 +42,7 @@ public final class AgentOptimizationJobInputs implements JsonSerializable evaluators; + private final List evaluators; /* * Tuning knobs and run-mode. @@ -59,7 +59,7 @@ public final class AgentOptimizationJobInputs implements JsonSerializable evaluators) { + List evaluators) { this.agent = agent; this.trainDataset = trainDataset; this.evaluators = evaluators; @@ -117,7 +117,7 @@ public AgentOptimizationJobInputs setValidationDataset(AgentOptimizationDatasetI * @return the evaluators value. */ @Generated - public List getEvaluators() { + public List getEvaluators() { return this.evaluators; } @@ -172,7 +172,7 @@ public static AgentOptimizationJobInputs fromJson(JsonReader jsonReader) throws return jsonReader.readObject(reader -> { OptimizedAgentIdentifier agent = null; AgentOptimizationDatasetInput trainDataset = null; - List evaluators = null; + List evaluators = null; AgentOptimizationDatasetInput validationDataset = null; AgentOptimizationOptions options = null; while (reader.nextToken() != JsonToken.END_OBJECT) { @@ -183,7 +183,7 @@ public static AgentOptimizationJobInputs fromJson(JsonReader jsonReader) throws } else if ("train_dataset".equals(fieldName)) { trainDataset = AgentOptimizationDatasetInput.fromJson(reader); } else if ("evaluators".equals(fieldName)) { - evaluators = reader.readArray(reader1 -> AgentOptimizationEvaluatorRef.fromJson(reader1)); + evaluators = reader.readArray(reader1 -> AgentOptimizationEvaluatorReference.fromJson(reader1)); } else if ("validation_dataset".equals(fieldName)) { validationDataset = AgentOptimizationDatasetInput.fromJson(reader); } else if ("options".equals(fieldName)) { diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/BrowserAutomationTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/BrowserAutomationTool.java new file mode 100644 index 0000000000000..310a85d1f5188 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/BrowserAutomationTool.java @@ -0,0 +1,104 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The input definition information for a Browser Automation Tool, as used to configure an Agent. + */ +@Immutable +public final class BrowserAutomationTool extends Tool { + + /* + * The type property. + */ + @Generated + private ToolType type = ToolType.BROWSER_AUTOMATION; + + /* + * The Browser Automation Tool parameters. + */ + @Generated + private final BrowserAutomationToolParameters browserAutomation; + + /** + * Creates an instance of BrowserAutomationTool class. + * + * @param browserAutomation the browserAutomation value to set. + */ + @Generated + public BrowserAutomationTool(BrowserAutomationToolParameters browserAutomation) { + this.browserAutomation = browserAutomation; + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public ToolType getType() { + return this.type; + } + + /** + * Get the browserAutomation property: The Browser Automation Tool parameters. + * + * @return the browserAutomation value. + */ + @Generated + public BrowserAutomationToolParameters getBrowserAutomation() { + return this.browserAutomation; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("browser_automation", this.browserAutomation); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of BrowserAutomationTool from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of BrowserAutomationTool if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the BrowserAutomationTool. + */ + @Generated + public static BrowserAutomationTool fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + BrowserAutomationToolParameters browserAutomation = null; + ToolType type = ToolType.BROWSER_AUTOMATION; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("browser_automation".equals(fieldName)) { + browserAutomation = BrowserAutomationToolParameters.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = ToolType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + BrowserAutomationTool deserializedBrowserAutomationTool = new BrowserAutomationTool(browserAutomation); + deserializedBrowserAutomationTool.type = type; + return deserializedBrowserAutomationTool; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/BrowserAutomationToolboxTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/BrowserAutomationToolboxTool.java new file mode 100644 index 0000000000000..57674bc67f251 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/BrowserAutomationToolboxTool.java @@ -0,0 +1,151 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.Map; + +/** + * A browser automation tool stored in a toolbox. + */ +@Fluent +public final class BrowserAutomationToolboxTool extends ToolboxTool { + + /* + * The type of tool. + */ + @Generated + private ToolboxToolType type = ToolboxToolType.BROWSER_AUTOMATION; + + /* + * The Browser Automation Tool parameters. + */ + @Generated + private final BrowserAutomationToolParameters browserAutomation; + + /** + * Creates an instance of BrowserAutomationToolboxTool class. + * + * @param browserAutomation the browserAutomation value to set. + */ + @Generated + public BrowserAutomationToolboxTool(BrowserAutomationToolParameters browserAutomation) { + this.browserAutomation = browserAutomation; + } + + /** + * Get the type property: The type of tool. + * + * @return the type value. + */ + @Generated + @Override + public ToolboxToolType getType() { + return this.type; + } + + /** + * Get the browserAutomation property: The Browser Automation Tool parameters. + * + * @return the browserAutomation value. + */ + @Generated + public BrowserAutomationToolParameters getBrowserAutomation() { + return this.browserAutomation; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public BrowserAutomationToolboxTool setName(String name) { + super.setName(name); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public BrowserAutomationToolboxTool setDescription(String description) { + super.setDescription(description); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public BrowserAutomationToolboxTool setToolConfigs(Map toolConfigs) { + super.setToolConfigs(toolConfigs); + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", getName()); + jsonWriter.writeStringField("description", getDescription()); + jsonWriter.writeMapField("tool_configs", getToolConfigs(), (writer, element) -> writer.writeJson(element)); + jsonWriter.writeJsonField("browser_automation", this.browserAutomation); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of BrowserAutomationToolboxTool from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of BrowserAutomationToolboxTool if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the BrowserAutomationToolboxTool. + */ + @Generated + public static BrowserAutomationToolboxTool fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String name = null; + String description = null; + Map toolConfigs = null; + BrowserAutomationToolParameters browserAutomation = null; + ToolboxToolType type = ToolboxToolType.BROWSER_AUTOMATION; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + name = reader.getString(); + } else if ("description".equals(fieldName)) { + description = reader.getString(); + } else if ("tool_configs".equals(fieldName)) { + toolConfigs = reader.readMap(reader1 -> ToolConfig.fromJson(reader1)); + } else if ("browser_automation".equals(fieldName)) { + browserAutomation = BrowserAutomationToolParameters.fromJson(reader); + } else if ("type".equals(fieldName)) { + type = ToolboxToolType.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + BrowserAutomationToolboxTool deserializedBrowserAutomationToolboxTool + = new BrowserAutomationToolboxTool(browserAutomation); + deserializedBrowserAutomationToolboxTool.setName(name); + deserializedBrowserAutomationToolboxTool.setDescription(description); + deserializedBrowserAutomationToolboxTool.setToolConfigs(toolConfigs); + deserializedBrowserAutomationToolboxTool.type = type; + return deserializedBrowserAutomationToolboxTool; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotBuiltInTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotBuiltInTool.java new file mode 100644 index 0000000000000..915b10aec2764 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotBuiltInTool.java @@ -0,0 +1,71 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.agents.models; + +/** + * A customer-configurable GitHub Copilot built-in tool. + */ +public enum GitHubCopilotBuiltInTool { + /** + * Read and search files in the harness workspace. + */ + FILESYSTEM_READ("filesystem_read"), + + /** + * Create and modify files in the harness workspace. + */ + FILESYSTEM_WRITE("filesystem_write"), + + /** + * Execute operating-system commands. + */ + SHELL("shell"), + + /** + * Fetch content and search external network resources. + */ + WEB("web"), + + /** + * Delegate work to additional agents. + */ + SUBAGENTS("subagents"); + + /** + * The actual serialized value for a GitHubCopilotBuiltInTool instance. + */ + private final String value; + + GitHubCopilotBuiltInTool(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a GitHubCopilotBuiltInTool instance. + * + * @param value the serialized value to parse. + * @return the parsed GitHubCopilotBuiltInTool object, or null if unable to parse. + */ + public static GitHubCopilotBuiltInTool fromString(String value) { + if (value == null) { + return null; + } + GitHubCopilotBuiltInTool[] items = GitHubCopilotBuiltInTool.values(); + for (GitHubCopilotBuiltInTool item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + @Override + public String toString() { + return this.value; + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotHarness.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotHarness.java new file mode 100644 index 0000000000000..6f254c7e176c1 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotHarness.java @@ -0,0 +1,78 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The GitHub Copilot managed harness for prompt agents. + */ +@Immutable +public final class GitHubCopilotHarness extends AgentHarness { + + /* + * The type of managed harness. + */ + @Generated + private String type = "github_copilot_preview"; + + /** + * Creates an instance of GitHubCopilotHarness class. + */ + @Generated + public GitHubCopilotHarness() { + } + + /** + * Get the type property: The type of managed harness. + * + * @return the type value. + */ + @Generated + @Override + public String getType() { + return this.type; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of GitHubCopilotHarness from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of GitHubCopilotHarness if the JsonReader was pointing to an instance of it, or null if it + * was pointing to JSON null. + * @throws IOException If an error occurs while reading the GitHubCopilotHarness. + */ + @Generated + public static GitHubCopilotHarness fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + GitHubCopilotHarness deserializedGitHubCopilotHarness = new GitHubCopilotHarness(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedGitHubCopilotHarness.type = reader.getString(); + } else { + reader.skipChildren(); + } + } + return deserializedGitHubCopilotHarness; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotToolsetConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotToolsetConfig.java new file mode 100644 index 0000000000000..ba2a73732c40a --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotToolsetConfig.java @@ -0,0 +1,116 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * An enablement override for a GitHub Copilot built-in tool. + */ +@Fluent +public final class GitHubCopilotToolsetConfig implements JsonSerializable { + + /* + * The built-in tool to configure. + */ + @Generated + private final GitHubCopilotBuiltInTool name; + + /* + * Whether the built-in tool is enabled. If omitted, the toolset default applies. + */ + @Generated + private Boolean enabled; + + /** + * Creates an instance of GitHubCopilotToolsetConfig class. + * + * @param name the name value to set. + */ + @Generated + public GitHubCopilotToolsetConfig(GitHubCopilotBuiltInTool name) { + this.name = name; + } + + /** + * Get the name property: The built-in tool to configure. + * + * @return the name value. + */ + @Generated + public GitHubCopilotBuiltInTool getName() { + return this.name; + } + + /** + * Get the enabled property: Whether the built-in tool is enabled. If omitted, the toolset default applies. + * + * @return the enabled value. + */ + @Generated + public Boolean isEnabled() { + return this.enabled; + } + + /** + * Set the enabled property: Whether the built-in tool is enabled. If omitted, the toolset default applies. + * + * @param enabled the enabled value to set. + * @return the GitHubCopilotToolsetConfig object itself. + */ + @Generated + public GitHubCopilotToolsetConfig setEnabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("name", this.name == null ? null : this.name.toString()); + jsonWriter.writeBooleanField("enabled", this.enabled); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of GitHubCopilotToolsetConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of GitHubCopilotToolsetConfig if the JsonReader was pointing to an instance of it, or null if + * it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the GitHubCopilotToolsetConfig. + */ + @Generated + public static GitHubCopilotToolsetConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + GitHubCopilotBuiltInTool name = null; + Boolean enabled = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("name".equals(fieldName)) { + name = GitHubCopilotBuiltInTool.fromString(reader.getString()); + } else if ("enabled".equals(fieldName)) { + enabled = reader.getNullable(JsonReader::getBoolean); + } else { + reader.skipChildren(); + } + } + GitHubCopilotToolsetConfig deserializedGitHubCopilotToolsetConfig = new GitHubCopilotToolsetConfig(name); + deserializedGitHubCopilotToolsetConfig.enabled = enabled; + return deserializedGitHubCopilotToolsetConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotToolsetDefaultConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotToolsetDefaultConfig.java new file mode 100644 index 0000000000000..e742dbe29e6d6 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotToolsetDefaultConfig.java @@ -0,0 +1,91 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The default enablement setting for GitHub Copilot built-in tools. + */ +@Fluent +public final class GitHubCopilotToolsetDefaultConfig implements JsonSerializable { + + /* + * Whether built-in tools are enabled by default. Defaults to true. + */ + @Generated + private Boolean enabled; + + /** + * Creates an instance of GitHubCopilotToolsetDefaultConfig class. + */ + @Generated + public GitHubCopilotToolsetDefaultConfig() { + } + + /** + * Get the enabled property: Whether built-in tools are enabled by default. Defaults to true. + * + * @return the enabled value. + */ + @Generated + public Boolean isEnabled() { + return this.enabled; + } + + /** + * Set the enabled property: Whether built-in tools are enabled by default. Defaults to true. + * + * @param enabled the enabled value to set. + * @return the GitHubCopilotToolsetDefaultConfig object itself. + */ + @Generated + public GitHubCopilotToolsetDefaultConfig setEnabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeBooleanField("enabled", this.enabled); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of GitHubCopilotToolsetDefaultConfig from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of GitHubCopilotToolsetDefaultConfig if the JsonReader was pointing to an instance of it, or + * null if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the GitHubCopilotToolsetDefaultConfig. + */ + @Generated + public static GitHubCopilotToolsetDefaultConfig fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + GitHubCopilotToolsetDefaultConfig deserializedGitHubCopilotToolsetDefaultConfig + = new GitHubCopilotToolsetDefaultConfig(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("enabled".equals(fieldName)) { + deserializedGitHubCopilotToolsetDefaultConfig.enabled = reader.getNullable(JsonReader::getBoolean); + } else { + reader.skipChildren(); + } + } + return deserializedGitHubCopilotToolsetDefaultConfig; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotToolsetPreview.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotToolsetPreview.java new file mode 100644 index 0000000000000..0c2d2ecb60519 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/GitHubCopilotToolsetPreview.java @@ -0,0 +1,146 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Fluent; +import com.azure.core.annotation.Generated; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; +import java.util.List; + +/** + * Configuration overrides for GitHub Copilot built-in tools. + */ +@Fluent +public final class GitHubCopilotToolsetPreview extends Tool { + + /* + * The type property. + */ + @Generated + private ToolType type = ToolType.GITHUB_COPILOT_TOOLSET_PREVIEW; + + /* + * The default configuration for built-in tools. If omitted, built-in tools are enabled by default. + */ + @Generated + private GitHubCopilotToolsetDefaultConfig defaultConfig; + + /* + * Per-tool configuration overrides. Duplicate built-in tool names are not allowed. + */ + @Generated + private List configs; + + /** + * Creates an instance of GitHubCopilotToolsetPreview class. + */ + @Generated + public GitHubCopilotToolsetPreview() { + } + + /** + * Get the type property: The type property. + * + * @return the type value. + */ + @Generated + @Override + public ToolType getType() { + return this.type; + } + + /** + * Get the defaultConfig property: The default configuration for built-in tools. If omitted, built-in tools are + * enabled by default. + * + * @return the defaultConfig value. + */ + @Generated + public GitHubCopilotToolsetDefaultConfig getDefaultConfig() { + return this.defaultConfig; + } + + /** + * Set the defaultConfig property: The default configuration for built-in tools. If omitted, built-in tools are + * enabled by default. + * + * @param defaultConfig the defaultConfig value to set. + * @return the GitHubCopilotToolsetPreview object itself. + */ + @Generated + public GitHubCopilotToolsetPreview setDefaultConfig(GitHubCopilotToolsetDefaultConfig defaultConfig) { + this.defaultConfig = defaultConfig; + return this; + } + + /** + * Get the configs property: Per-tool configuration overrides. Duplicate built-in tool names are not allowed. + * + * @return the configs value. + */ + @Generated + public List getConfigs() { + return this.configs; + } + + /** + * Set the configs property: Per-tool configuration overrides. Duplicate built-in tool names are not allowed. + * + * @param configs the configs value to set. + * @return the GitHubCopilotToolsetPreview object itself. + */ + @Generated + public GitHubCopilotToolsetPreview setConfigs(List configs) { + this.configs = configs; + return this; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeJsonField("default_config", this.defaultConfig); + jsonWriter.writeArrayField("configs", this.configs, (writer, element) -> writer.writeJson(element)); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of GitHubCopilotToolsetPreview from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of GitHubCopilotToolsetPreview if the JsonReader was pointing to an instance of it, or null + * if it was pointing to JSON null. + * @throws IOException If an error occurs while reading the GitHubCopilotToolsetPreview. + */ + @Generated + public static GitHubCopilotToolsetPreview fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + GitHubCopilotToolsetPreview deserializedGitHubCopilotToolsetPreview = new GitHubCopilotToolsetPreview(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("type".equals(fieldName)) { + deserializedGitHubCopilotToolsetPreview.type = ToolType.fromString(reader.getString()); + } else if ("default_config".equals(fieldName)) { + deserializedGitHubCopilotToolsetPreview.defaultConfig + = GitHubCopilotToolsetDefaultConfig.fromJson(reader); + } else if ("configs".equals(fieldName)) { + List configs + = reader.readArray(reader1 -> GitHubCopilotToolsetConfig.fromJson(reader1)); + deserializedGitHubCopilotToolsetPreview.configs = configs; + } else { + reader.skipChildren(); + } + } + return deserializedGitHubCopilotToolsetPreview; + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PromptAgentDefinition.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PromptAgentDefinition.java index aca87b1a51dd0..a37aa3d56d03d 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PromptAgentDefinition.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/PromptAgentDefinition.java @@ -463,4 +463,63 @@ public PromptAgentDefinition setReasoning(Reasoning reasoning) { this.reasoning = reasoning; return this; } + + /* + * The managed runtime and agent loop used to execute this prompt agent. + */ + @Generated + private AgentHarness harness; + + /* + * The Foundry skills available to this prompt agent. An omitted skill version is resolved and pinned when the agent + * version is created. + */ + @Generated + private List skills; + + /** + * Get the harness property: The managed runtime and agent loop used to execute this prompt agent. + * + * @return the harness value. + */ + @Generated + public AgentHarness getHarness() { + return this.harness; + } + + /** + * Set the harness property: The managed runtime and agent loop used to execute this prompt agent. + * + * @param harness the harness value to set. + * @return the PromptAgentDefinition object itself. + */ + @Generated + public PromptAgentDefinition setHarness(AgentHarness harness) { + this.harness = harness; + return this; + } + + /** + * Get the skills property: The Foundry skills available to this prompt agent. An omitted skill version is resolved + * and pinned when the agent version is created. + * + * @return the skills value. + */ + @Generated + public List getSkills() { + return this.skills; + } + + /** + * Set the skills property: The Foundry skills available to this prompt agent. An omitted skill version is resolved + * and pinned when the agent version is created. + * + * @param skills the skills value to set. + * @return the PromptAgentDefinition object itself. + */ + @Generated + public PromptAgentDefinition setSkills(List skills) { + this.skills = skills; + return this; + } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationEvaluatorRef.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SkillReference.java similarity index 62% rename from sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationEvaluatorRef.java rename to sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SkillReference.java index 7aa8f135d7acf..4c73b7f81e6c9 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentOptimizationEvaluatorRef.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SkillReference.java @@ -12,35 +12,36 @@ import java.io.IOException; /** - * Reference to a named evaluator, optionally pinned to a version. + * A reference to a versioned Foundry skill. */ @Fluent -public final class AgentOptimizationEvaluatorRef implements JsonSerializable { +public final class SkillReference implements JsonSerializable { /* - * Evaluator name. + * The name of the skill. */ @Generated private final String name; /* - * Evaluator version. If not specified, the latest version is used. + * The skill version. If omitted, the current default version is resolved and pinned when the agent version is + * created. */ @Generated private String version; /** - * Creates an instance of AgentOptimizationEvaluatorRef class. + * Creates an instance of SkillReference class. * * @param name the name value to set. */ @Generated - public AgentOptimizationEvaluatorRef(String name) { + public SkillReference(String name) { this.name = name; } /** - * Get the name property: Evaluator name. + * Get the name property: The name of the skill. * * @return the name value. */ @@ -50,7 +51,8 @@ public String getName() { } /** - * Get the version property: Evaluator version. If not specified, the latest version is used. + * Get the version property: The skill version. If omitted, the current default version is resolved and pinned when + * the agent version is created. * * @return the version value. */ @@ -60,13 +62,14 @@ public String getVersion() { } /** - * Set the version property: Evaluator version. If not specified, the latest version is used. + * Set the version property: The skill version. If omitted, the current default version is resolved and pinned when + * the agent version is created. * * @param version the version value to set. - * @return the AgentOptimizationEvaluatorRef object itself. + * @return the SkillReference object itself. */ @Generated - public AgentOptimizationEvaluatorRef setVersion(String version) { + public SkillReference setVersion(String version) { this.version = version; return this; } @@ -84,16 +87,16 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { } /** - * Reads an instance of AgentOptimizationEvaluatorRef from the JsonReader. + * Reads an instance of SkillReference from the JsonReader. * * @param jsonReader The JsonReader being read. - * @return An instance of AgentOptimizationEvaluatorRef if the JsonReader was pointing to an instance of it, or null - * if it was pointing to JSON null. + * @return An instance of SkillReference if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. * @throws IllegalStateException If the deserialized JSON object was missing any required properties. - * @throws IOException If an error occurs while reading the AgentOptimizationEvaluatorRef. + * @throws IOException If an error occurs while reading the SkillReference. */ @Generated - public static AgentOptimizationEvaluatorRef fromJson(JsonReader jsonReader) throws IOException { + public static SkillReference fromJson(JsonReader jsonReader) throws IOException { return jsonReader.readObject(reader -> { String name = null; String version = null; @@ -108,10 +111,9 @@ public static AgentOptimizationEvaluatorRef fromJson(JsonReader jsonReader) thro reader.skipChildren(); } } - AgentOptimizationEvaluatorRef deserializedAgentOptimizationEvaluatorRef - = new AgentOptimizationEvaluatorRef(name); - deserializedAgentOptimizationEvaluatorRef.version = version; - return deserializedAgentOptimizationEvaluatorRef; + SkillReference deserializedSkillReference = new SkillReference(name); + deserializedSkillReference.version = version; + return deserializedSkillReference; }); } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/Tool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/Tool.java index a27079d0f4c3a..1b4494c73849d 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/Tool.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/Tool.java @@ -77,7 +77,9 @@ public static Tool fromJson(JsonReader jsonReader) throws IOException { } } // Use the discriminator value to determine which subtype should be deserialized. - if ("bing_grounding".equals(discriminatorValue)) { + if ("github_copilot_toolset_preview".equals(discriminatorValue)) { + return GitHubCopilotToolsetPreview.fromJson(readerToUse.reset()); + } else if ("bing_grounding".equals(discriminatorValue)) { return BingGroundingTool.fromJson(readerToUse.reset()); } else if ("fabric_dataagent_preview".equals(discriminatorValue)) { return MicrosoftFabricPreviewTool.fromJson(readerToUse.reset()); @@ -91,6 +93,8 @@ public static Tool fromJson(JsonReader jsonReader) throws IOException { return BingCustomSearchPreviewTool.fromJson(readerToUse.reset()); } else if ("browser_automation_preview".equals(discriminatorValue)) { return BrowserAutomationPreviewTool.fromJson(readerToUse.reset()); + } else if ("browser_automation".equals(discriminatorValue)) { + return BrowserAutomationTool.fromJson(readerToUse.reset()); } else if ("azure_function".equals(discriminatorValue)) { return AzureFunctionTool.fromJson(readerToUse.reset()); } else if ("capture_structured_outputs".equals(discriminatorValue)) { diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolConfig.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolConfig.java index db972481479e9..5070caad7af4b 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolConfig.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolConfig.java @@ -18,7 +18,6 @@ public final class ToolConfig implements JsonSerializable { /* - * * When true, the tool is always included in agent context and visible in `tools/list`. * When false (default), the tool is hidden from `tools/list` and only discoverable via `tool_search`. */ @@ -26,7 +25,6 @@ public final class ToolConfig implements JsonSerializable { private Boolean pin; /* - * * Additional text indexed for tool_search. Supplements the native tool description * to improve discoverability. Does not alter `tools/list` output. */ @@ -41,8 +39,7 @@ public ToolConfig() { } /** - * Get the pin property: - * When true, the tool is always included in agent context and visible in `tools/list`. + * Get the pin property: When true, the tool is always included in agent context and visible in `tools/list`. * When false (default), the tool is hidden from `tools/list` and only discoverable via `tool_search`. * * @return the pin value. @@ -53,8 +50,7 @@ public Boolean isPin() { } /** - * Set the pin property: - * When true, the tool is always included in agent context and visible in `tools/list`. + * Set the pin property: When true, the tool is always included in agent context and visible in `tools/list`. * When false (default), the tool is hidden from `tools/list` and only discoverable via `tool_search`. * * @param pin the pin value to set. @@ -67,8 +63,8 @@ public ToolConfig setPin(Boolean pin) { } /** - * Get the additionalSearchText property: - * Additional text indexed for tool_search. Supplements the native tool description + * Get the additionalSearchText property: Additional text indexed for tool_search. Supplements the native tool + * description * to improve discoverability. Does not alter `tools/list` output. * * @return the additionalSearchText value. @@ -79,8 +75,8 @@ public String getAdditionalSearchText() { } /** - * Set the additionalSearchText property: - * Additional text indexed for tool_search. Supplements the native tool description + * Set the additionalSearchText property: Additional text indexed for tool_search. Supplements the native tool + * description * to improve discoverability. Does not alter `tools/list` output. * * @param additionalSearchText the additionalSearchText value to set. diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolType.java index b0097f9c6da26..7658c23bbdebe 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolType.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolType.java @@ -234,4 +234,16 @@ public static Collection values() { */ @Generated public static final ToolType WEB_IQ_PREVIEW = fromString("web_iq_preview"); + + /** + * Static value github_copilot_toolset_preview for ToolType. + */ + @Generated + public static final ToolType GITHUB_COPILOT_TOOLSET_PREVIEW = fromString("github_copilot_toolset_preview"); + + /** + * Static value browser_automation for ToolType. + */ + @Generated + public static final ToolType BROWSER_AUTOMATION = fromString("browser_automation"); } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxDetails.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxDetails.java index 2a1c783ad7f9b..a64e0f460bb3a 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxDetails.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxDetails.java @@ -10,6 +10,9 @@ import com.azure.json.JsonToken; import com.azure.json.JsonWriter; import java.io.IOException; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; /** * A toolbox that stores reusable tool definitions for agents. @@ -36,20 +39,6 @@ public final class ToolboxDetails implements JsonSerializable { @Generated private final String defaultVersion; - /** - * Creates an instance of ToolboxDetails class. - * - * @param id the id value to set. - * @param name the name value to set. - * @param defaultVersion the defaultVersion value to set. - */ - @Generated - private ToolboxDetails(String id, String name, String defaultVersion) { - this.id = id; - this.name = name; - this.defaultVersion = defaultVersion; - } - /** * Get the id property: The unique identifier of the toolbox. * @@ -90,6 +79,8 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); jsonWriter.writeStringField("id", this.id); jsonWriter.writeStringField("name", this.name); + jsonWriter.writeLongField("updated_at", this.updatedAt); + jsonWriter.writeJsonField("versions", this.versions); jsonWriter.writeStringField("default_version", this.defaultVersion); return jsonWriter.writeEndObject(); } @@ -108,6 +99,8 @@ public static ToolboxDetails fromJson(JsonReader jsonReader) throws IOException return jsonReader.readObject(reader -> { String id = null; String name = null; + OffsetDateTime updatedAt = null; + ToolboxVersions versions = null; String defaultVersion = null; while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); @@ -116,13 +109,74 @@ public static ToolboxDetails fromJson(JsonReader jsonReader) throws IOException id = reader.getString(); } else if ("name".equals(fieldName)) { name = reader.getString(); + } else if ("updated_at".equals(fieldName)) { + updatedAt = OffsetDateTime.ofInstant(Instant.ofEpochSecond(reader.getLong()), ZoneOffset.UTC); + } else if ("versions".equals(fieldName)) { + versions = ToolboxVersions.fromJson(reader); } else if ("default_version".equals(fieldName)) { defaultVersion = reader.getString(); } else { reader.skipChildren(); } } - return new ToolboxDetails(id, name, defaultVersion); + return new ToolboxDetails(id, name, updatedAt, versions, defaultVersion); }); } + + /* + * The Unix timestamp (seconds) when the toolbox was last updated. This value changes when a new toolbox version is + * created or the toolbox is updated. + */ + @Generated + private final long updatedAt; + + /* + * The versions associated with the toolbox. + */ + @Generated + private final ToolboxVersions versions; + + /** + * Creates an instance of ToolboxDetails class. + * + * @param id the id value to set. + * @param name the name value to set. + * @param updatedAt the updatedAt value to set. + * @param versions the versions value to set. + * @param defaultVersion the defaultVersion value to set. + */ + @Generated + private ToolboxDetails(String id, String name, OffsetDateTime updatedAt, ToolboxVersions versions, + String defaultVersion) { + this.id = id; + this.name = name; + if (updatedAt == null) { + this.updatedAt = 0L; + } else { + this.updatedAt = updatedAt.toEpochSecond(); + } + this.versions = versions; + this.defaultVersion = defaultVersion; + } + + /** + * Get the updatedAt property: The Unix timestamp (seconds) when the toolbox was last updated. This value changes + * when a new toolbox version is created or the toolbox is updated. + * + * @return the updatedAt value. + */ + @Generated + public OffsetDateTime getUpdatedAt() { + return OffsetDateTime.ofInstant(Instant.ofEpochSecond(this.updatedAt), ZoneOffset.UTC); + } + + /** + * Get the versions property: The versions associated with the toolbox. + * + * @return the versions value. + */ + @Generated + public ToolboxVersions getVersions() { + return this.versions; + } } diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxTool.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxTool.java index 8d3e58ec3229a..a6b33a61f65ef 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxTool.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxTool.java @@ -191,6 +191,8 @@ public static ToolboxTool fromJson(JsonReader jsonReader) throws IOException { return A2APreviewToolboxTool.fromJson(readerToUse.reset()); } else if ("browser_automation_preview".equals(discriminatorValue)) { return BrowserAutomationPreviewToolboxTool.fromJson(readerToUse.reset()); + } else if ("browser_automation".equals(discriminatorValue)) { + return BrowserAutomationToolboxTool.fromJson(readerToUse.reset()); } else if ("reminder_preview".equals(discriminatorValue)) { return ReminderPreviewToolboxTool.fromJson(readerToUse.reset()); } else if ("work_iq_preview".equals(discriminatorValue)) { diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxToolType.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxToolType.java index 62d96ad142cce..1f0a75c47ea58 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxToolType.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxToolType.java @@ -86,7 +86,12 @@ public enum ToolboxToolType { /** * Enum value web_iq_preview. */ - WEB_IQ_PREVIEW("web_iq_preview"); + WEB_IQ_PREVIEW("web_iq_preview"), + + /** + * Enum value browser_automation. + */ + BROWSER_AUTOMATION("browser_automation"); /** * The actual serialized value for a ToolboxToolType instance. diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxVersions.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxVersions.java new file mode 100644 index 0000000000000..aadf366683495 --- /dev/null +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ToolboxVersions.java @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. +package com.azure.ai.agents.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.Immutable; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import java.io.IOException; + +/** + * The versions associated with a toolbox. + */ +@Immutable +public final class ToolboxVersions implements JsonSerializable { + + /* + * The latest version of the toolbox. + */ + @Generated + private final ToolboxVersionDetails latest; + + /** + * Creates an instance of ToolboxVersions class. + * + * @param latest the latest value to set. + */ + @Generated + private ToolboxVersions(ToolboxVersionDetails latest) { + this.latest = latest; + } + + /** + * Get the latest property: The latest version of the toolbox. + * + * @return the latest value. + */ + @Generated + public ToolboxVersionDetails getLatest() { + return this.latest; + } + + /** + * {@inheritDoc} + */ + @Generated + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeJsonField("latest", this.latest); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of ToolboxVersions from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of ToolboxVersions if the JsonReader was pointing to an instance of it, or null if it was + * pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the ToolboxVersions. + */ + @Generated + public static ToolboxVersions fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + ToolboxVersionDetails latest = null; + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + if ("latest".equals(fieldName)) { + latest = ToolboxVersionDetails.fromJson(reader); + } else { + reader.skipChildren(); + } + } + return new ToolboxVersions(latest); + }); + } +} diff --git a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBase.java b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBase.java index 11b9242160080..6a99f95b367b4 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBase.java +++ b/sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VoiceResponseBase.java @@ -19,12 +19,6 @@ @Immutable public class VoiceResponseBase implements JsonSerializable { - /* - * The unique ID of the response, will look like `resp_1234`. - */ - @Generated - private String id; - /* * The object type, must be `realtime.response`. */ @@ -53,17 +47,6 @@ public class VoiceResponseBase implements JsonSerializable { @Generated private RealtimeResponseUsage usage; - /* - * Which conversation the response is added to, determined by the `conversation` - * field in the `response.create` event. If `auto`, the response will be added to - * the default conversation and the value of `conversation_id` will be an id like - * `conv_1234`. If `none`, the response will not be added to any conversation and - * the value of `conversation_id` will be `null`. If responses are being triggered - * automatically by VAD the response will be added to the default conversation - */ - @Generated - private String conversationId; - /* * The set of modalities the model used to respond, currently the only possible values are * `[\"audio\"]`, `[\"text\"]`. Audio output always include a text transcript. Setting the @@ -86,28 +69,6 @@ public class VoiceResponseBase implements JsonSerializable { protected VoiceResponseBase() { } - /** - * Get the id property: The unique ID of the response, will look like `resp_1234`. - * - * @return the id value. - */ - @Generated - public String getId() { - return this.id; - } - - /** - * Set the id property: The unique ID of the response, will look like `resp_1234`. - * - * @param id the id value to set. - * @return the VoiceResponseBase object itself. - */ - @Generated - VoiceResponseBase setId(String id) { - this.id = id; - return this; - } - /** * Get the object property: The object type, must be `realtime.response`. * @@ -204,38 +165,6 @@ VoiceResponseBase setUsage(RealtimeResponseUsage usage) { return this; } - /** - * Get the conversationId property: Which conversation the response is added to, determined by the `conversation` - * field in the `response.create` event. If `auto`, the response will be added to - * the default conversation and the value of `conversation_id` will be an id like - * `conv_1234`. If `none`, the response will not be added to any conversation and - * the value of `conversation_id` will be `null`. If responses are being triggered - * automatically by VAD the response will be added to the default conversation. - * - * @return the conversationId value. - */ - @Generated - public String getConversationId() { - return this.conversationId; - } - - /** - * Set the conversationId property: Which conversation the response is added to, determined by the `conversation` - * field in the `response.create` event. If `auto`, the response will be added to - * the default conversation and the value of `conversation_id` will be an id like - * `conv_1234`. If `none`, the response will not be added to any conversation and - * the value of `conversation_id` will be `null`. If responses are being triggered - * automatically by VAD the response will be added to the default conversation. - * - * @param conversationId the conversationId value to set. - * @return the VoiceResponseBase object itself. - */ - @Generated - VoiceResponseBase setConversationId(String conversationId) { - this.conversationId = conversationId; - return this; - } - /** * Get the outputModalities property: The set of modalities the model used to respond, currently the only possible * values are @@ -295,12 +224,10 @@ VoiceResponseBase setMaxOutputTokens(BinaryData maxOutputTokens) { @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); - jsonWriter.writeStringField("id", this.id); jsonWriter.writeStringField("object", this.object == null ? null : this.object.toString()); jsonWriter.writeStringField("status", this.status == null ? null : this.status.toString()); jsonWriter.writeJsonField("status_details", this.statusDetails); jsonWriter.writeJsonField("usage", this.usage); - jsonWriter.writeStringField("conversation_id", this.conversationId); jsonWriter.writeArrayField("output_modalities", this.outputModalities, (writer, element) -> writer.writeString(element == null ? null : element.toString())); if (this.maxOutputTokens != null) { @@ -325,9 +252,7 @@ public static VoiceResponseBase fromJson(JsonReader jsonReader) throws IOExcepti while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); reader.nextToken(); - if ("id".equals(fieldName)) { - deserializedVoiceResponseBase.id = reader.getString(); - } else if ("object".equals(fieldName)) { + if ("object".equals(fieldName)) { deserializedVoiceResponseBase.object = VoiceResponseBaseObject.fromString(reader.getString()); } else if ("status".equals(fieldName)) { deserializedVoiceResponseBase.status = VoiceResponseBaseStatus.fromString(reader.getString()); @@ -335,8 +260,6 @@ public static VoiceResponseBase fromJson(JsonReader jsonReader) throws IOExcepti deserializedVoiceResponseBase.statusDetails = RealtimeResponseStatusDetails.fromJson(reader); } else if ("usage".equals(fieldName)) { deserializedVoiceResponseBase.usage = RealtimeResponseUsage.fromJson(reader); - } else if ("conversation_id".equals(fieldName)) { - deserializedVoiceResponseBase.conversationId = reader.getString(); } else if ("output_modalities".equals(fieldName)) { List outputModalities = reader.readArray(reader1 -> VoiceResponseBaseOutputModality.fromString(reader1.getString())); diff --git a/sdk/ai/azure-ai-agents/src/main/java/module-info.java b/sdk/ai/azure-ai-agents/src/main/java/module-info.java index f0b0957403049..65d7639205ff4 100644 --- a/sdk/ai/azure-ai-agents/src/main/java/module-info.java +++ b/sdk/ai/azure-ai-agents/src/main/java/module-info.java @@ -18,6 +18,6 @@ exports com.azure.ai.agents; exports com.azure.ai.agents.models; - opens com.azure.ai.agents.models to com.azure.core; opens com.azure.ai.agents.implementation.models to com.azure.core; + opens com.azure.ai.agents.models to com.azure.core; } diff --git a/sdk/ai/azure-ai-agents/src/main/resources/META-INF/azure-ai-agents_metadata.json b/sdk/ai/azure-ai-agents/src/main/resources/META-INF/azure-ai-agents_metadata.json index 93f908bd2078a..0502476e43557 100644 --- a/sdk/ai/azure-ai-agents/src/main/resources/META-INF/azure-ai-agents_metadata.json +++ b/sdk/ai/azure-ai-agents/src/main/resources/META-INF/azure-ai-agents_metadata.json @@ -1 +1 @@ -{"flavor":"azure","apiVersions":{"Azure.AI.Projects":"v1"},"crossLanguagePackageId":"Azure.AI.Projects","crossLanguageVersion":"aefd406b536a","crossLanguageDefinitions":{"com.azure.ai.agents.AgentTelephonyAsyncClient":"Azure.AI.Projects.AgentTelephony","com.azure.ai.agents.AgentTelephonyAsyncClient.beginImportTelephonyCampaignRecipients":"Azure.AI.Projects.AgentTelephony.importTelephonyCampaignRecipients","com.azure.ai.agents.AgentTelephonyAsyncClient.beginImportTelephonyCampaignRecipientsWithModel":"Azure.AI.Projects.AgentTelephony.importTelephonyCampaignRecipients","com.azure.ai.agents.AgentTelephonyAsyncClient.beginPublishTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.publishTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.beginPublishTelephonyCampaignWithModel":"Azure.AI.Projects.AgentTelephony.publishTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.beginValidateTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.validateTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.beginValidateTelephonyCampaignWithModel":"Azure.AI.Projects.AgentTelephony.validateTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.cancelTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCallJob","com.azure.ai.agents.AgentTelephonyAsyncClient.cancelTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCallJob","com.azure.ai.agents.AgentTelephonyAsyncClient.cancelTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.cancelTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.createTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.createTelephonyCallJob","com.azure.ai.agents.AgentTelephonyAsyncClient.createTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyCallJob","com.azure.ai.agents.AgentTelephonyAsyncClient.createTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.createTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.createTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.getTelephonyCallJob","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCallJob","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyCampaignRecipientImport":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaignRecipientImport","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyCampaignRecipientImportWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaignRecipientImport","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyOperation":"Azure.AI.Projects.AgentTelephony.getTelephonyOperation","com.azure.ai.agents.AgentTelephonyAsyncClient.getTelephonyOperationWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyOperation","com.azure.ai.agents.AgentTelephonyAsyncClient.pauseTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.pauseTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.pauseTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.pauseTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.resumeTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.resumeTelephonyCampaign","com.azure.ai.agents.AgentTelephonyAsyncClient.resumeTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.resumeTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient":"Azure.AI.Projects.AgentTelephony","com.azure.ai.agents.AgentTelephonyClient.beginImportTelephonyCampaignRecipients":"Azure.AI.Projects.AgentTelephony.importTelephonyCampaignRecipients","com.azure.ai.agents.AgentTelephonyClient.beginImportTelephonyCampaignRecipientsWithModel":"Azure.AI.Projects.AgentTelephony.importTelephonyCampaignRecipients","com.azure.ai.agents.AgentTelephonyClient.beginPublishTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.publishTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.beginPublishTelephonyCampaignWithModel":"Azure.AI.Projects.AgentTelephony.publishTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.beginValidateTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.validateTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.beginValidateTelephonyCampaignWithModel":"Azure.AI.Projects.AgentTelephony.validateTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.cancelTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCallJob","com.azure.ai.agents.AgentTelephonyClient.cancelTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCallJob","com.azure.ai.agents.AgentTelephonyClient.cancelTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.cancelTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.createTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.createTelephonyCallJob","com.azure.ai.agents.AgentTelephonyClient.createTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyCallJob","com.azure.ai.agents.AgentTelephonyClient.createTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.createTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.createTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.getTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.getTelephonyCallJob","com.azure.ai.agents.AgentTelephonyClient.getTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCallJob","com.azure.ai.agents.AgentTelephonyClient.getTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.getTelephonyCampaignRecipientImport":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaignRecipientImport","com.azure.ai.agents.AgentTelephonyClient.getTelephonyCampaignRecipientImportWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaignRecipientImport","com.azure.ai.agents.AgentTelephonyClient.getTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.getTelephonyOperation":"Azure.AI.Projects.AgentTelephony.getTelephonyOperation","com.azure.ai.agents.AgentTelephonyClient.getTelephonyOperationWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyOperation","com.azure.ai.agents.AgentTelephonyClient.pauseTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.pauseTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.pauseTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.pauseTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.resumeTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.resumeTelephonyCampaign","com.azure.ai.agents.AgentTelephonyClient.resumeTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.resumeTelephonyCampaign","com.azure.ai.agents.AgentsAsyncClient":"Azure.AI.Projects.Agents","com.azure.ai.agents.AgentsAsyncClient.createAgent":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsAsyncClient.createAgentFromCode":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentFromManifest":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentVersion":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromCode":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromManifest":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionWithResponse":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsAsyncClient.createAgentWithResponse":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsAsyncClient.createSession":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsAsyncClient.createSessionWithResponse":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsAsyncClient.createTelephonyBinding":"Azure.AI.Projects.AgentTelephony.createTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.createTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.deleteSession":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsAsyncClient.deleteSessionFile":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsAsyncClient.deleteSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsAsyncClient.deleteSessionWithResponse":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsAsyncClient.deleteTelephonyBinding":"Azure.AI.Projects.AgentTelephony.deleteTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.deleteTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.deleteTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.disableAgent":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsAsyncClient.disableAgentWithResponse":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsAsyncClient.downloadAgentCode":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsAsyncClient.downloadAgentCodeWithResponse":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsAsyncClient.downloadSessionFile":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsAsyncClient.downloadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsAsyncClient.enableAgent":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsAsyncClient.enableAgentWithResponse":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsAsyncClient.endTelephonyCall":"Azure.AI.Projects.AgentTelephony.endTelephonyCall","com.azure.ai.agents.AgentsAsyncClient.endTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.endTelephonyCall","com.azure.ai.agents.AgentsAsyncClient.generateAgent":"Azure.AI.Projects.Agents.generateAgent","com.azure.ai.agents.AgentsAsyncClient.generateAgentWithResponse":"Azure.AI.Projects.Agents.generateAgent","com.azure.ai.agents.AgentsAsyncClient.getAgent":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsAsyncClient.getAgentVersionDetails":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsAsyncClient.getAgentVersionDetailsWithResponse":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsAsyncClient.getAgentWithResponse":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365AppPackage":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365AppPackageWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365PublishDefaults":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365PublishDefaultsWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsAsyncClient.getSession":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsAsyncClient.getSessionWithResponse":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsAsyncClient.getTelephonyBinding":"Azure.AI.Projects.AgentTelephony.getTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.getTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.getTelephonyCall":"Azure.AI.Projects.AgentTelephony.getTelephonyCall","com.azure.ai.agents.AgentsAsyncClient.getTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCall","com.azure.ai.agents.AgentsAsyncClient.getTelephonyTransferTargets":"Azure.AI.Projects.AgentTelephony.getTelephonyTransferTargets","com.azure.ai.agents.AgentsAsyncClient.getTelephonyTransferTargetsWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyTransferTargets","com.azure.ai.agents.AgentsAsyncClient.listAgentConversations":"Azure.AI.Projects.Conversations.listConversations","com.azure.ai.agents.AgentsAsyncClient.listAgentVersions":"Azure.AI.Projects.Agents.listAgentVersions","com.azure.ai.agents.AgentsAsyncClient.listAgents":"Azure.AI.Projects.Agents.listAgents","com.azure.ai.agents.AgentsAsyncClient.listSessionFiles":"Azure.AI.Projects.AgentSessionFiles.listSessionFiles","com.azure.ai.agents.AgentsAsyncClient.listSessions":"Azure.AI.Projects.Agents.listSessions","com.azure.ai.agents.AgentsAsyncClient.listTelephonyBindings":"Azure.AI.Projects.AgentTelephony.listTelephonyBindings","com.azure.ai.agents.AgentsAsyncClient.listTelephonyCalls":"Azure.AI.Projects.AgentTelephony.listTelephonyCalls","com.azure.ai.agents.AgentsAsyncClient.publishAgentToMicrosoft365":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsAsyncClient.publishAgentToMicrosoft365WithResponse":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsAsyncClient.replaceTelephonyTransferTargets":"Azure.AI.Projects.AgentTelephony.replaceTelephonyTransferTargets","com.azure.ai.agents.AgentsAsyncClient.replaceTelephonyTransferTargetsWithResponse":"Azure.AI.Projects.AgentTelephony.replaceTelephonyTransferTargets","com.azure.ai.agents.AgentsAsyncClient.stopSession":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsAsyncClient.stopSessionWithResponse":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsAsyncClient.transferTelephonyCall":"Azure.AI.Projects.AgentTelephony.transferTelephonyCall","com.azure.ai.agents.AgentsAsyncClient.transferTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.transferTelephonyCall","com.azure.ai.agents.AgentsAsyncClient.updateAgent":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsAsyncClient.updateAgentDetails":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsAsyncClient.updateAgentDetailsWithResponse":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromCode":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromManifest":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.updateAgentWithResponse":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsAsyncClient.updateTelephonyBinding":"Azure.AI.Projects.AgentTelephony.updateTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.updateTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.updateTelephonyBinding","com.azure.ai.agents.AgentsAsyncClient.uploadSessionFile":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsAsyncClient.uploadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsClient":"Azure.AI.Projects.Agents","com.azure.ai.agents.AgentsClient.createAgent":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsClient.createAgentFromCode":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsClient.createAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsClient.createAgentFromManifest":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsClient.createAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsClient.createAgentVersion":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsClient.createAgentVersionFromCode":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsClient.createAgentVersionFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsClient.createAgentVersionFromManifest":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsClient.createAgentVersionFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsClient.createAgentVersionWithResponse":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsClient.createAgentWithResponse":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsClient.createSession":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsClient.createSessionWithResponse":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsClient.createTelephonyBinding":"Azure.AI.Projects.AgentTelephony.createTelephonyBinding","com.azure.ai.agents.AgentsClient.createTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyBinding","com.azure.ai.agents.AgentsClient.deleteSession":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsClient.deleteSessionFile":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsClient.deleteSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsClient.deleteSessionWithResponse":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsClient.deleteTelephonyBinding":"Azure.AI.Projects.AgentTelephony.deleteTelephonyBinding","com.azure.ai.agents.AgentsClient.deleteTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.deleteTelephonyBinding","com.azure.ai.agents.AgentsClient.disableAgent":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsClient.disableAgentWithResponse":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsClient.downloadAgentCode":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsClient.downloadAgentCodeWithResponse":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsClient.downloadSessionFile":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsClient.downloadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsClient.enableAgent":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsClient.enableAgentWithResponse":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsClient.endTelephonyCall":"Azure.AI.Projects.AgentTelephony.endTelephonyCall","com.azure.ai.agents.AgentsClient.endTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.endTelephonyCall","com.azure.ai.agents.AgentsClient.generateAgent":"Azure.AI.Projects.Agents.generateAgent","com.azure.ai.agents.AgentsClient.generateAgentWithResponse":"Azure.AI.Projects.Agents.generateAgent","com.azure.ai.agents.AgentsClient.getAgent":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsClient.getAgentVersionDetails":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsClient.getAgentVersionDetailsWithResponse":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsClient.getAgentWithResponse":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsClient.getMicrosoft365AppPackage":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsClient.getMicrosoft365AppPackageWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsClient.getMicrosoft365PublishDefaults":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsClient.getMicrosoft365PublishDefaultsWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsClient.getSession":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsClient.getSessionWithResponse":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsClient.getTelephonyBinding":"Azure.AI.Projects.AgentTelephony.getTelephonyBinding","com.azure.ai.agents.AgentsClient.getTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyBinding","com.azure.ai.agents.AgentsClient.getTelephonyCall":"Azure.AI.Projects.AgentTelephony.getTelephonyCall","com.azure.ai.agents.AgentsClient.getTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCall","com.azure.ai.agents.AgentsClient.getTelephonyTransferTargets":"Azure.AI.Projects.AgentTelephony.getTelephonyTransferTargets","com.azure.ai.agents.AgentsClient.getTelephonyTransferTargetsWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyTransferTargets","com.azure.ai.agents.AgentsClient.listAgentConversations":"Azure.AI.Projects.Conversations.listConversations","com.azure.ai.agents.AgentsClient.listAgentVersions":"Azure.AI.Projects.Agents.listAgentVersions","com.azure.ai.agents.AgentsClient.listAgents":"Azure.AI.Projects.Agents.listAgents","com.azure.ai.agents.AgentsClient.listSessionFiles":"Azure.AI.Projects.AgentSessionFiles.listSessionFiles","com.azure.ai.agents.AgentsClient.listSessions":"Azure.AI.Projects.Agents.listSessions","com.azure.ai.agents.AgentsClient.listTelephonyBindings":"Azure.AI.Projects.AgentTelephony.listTelephonyBindings","com.azure.ai.agents.AgentsClient.listTelephonyCalls":"Azure.AI.Projects.AgentTelephony.listTelephonyCalls","com.azure.ai.agents.AgentsClient.publishAgentToMicrosoft365":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsClient.publishAgentToMicrosoft365WithResponse":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsClient.replaceTelephonyTransferTargets":"Azure.AI.Projects.AgentTelephony.replaceTelephonyTransferTargets","com.azure.ai.agents.AgentsClient.replaceTelephonyTransferTargetsWithResponse":"Azure.AI.Projects.AgentTelephony.replaceTelephonyTransferTargets","com.azure.ai.agents.AgentsClient.stopSession":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsClient.stopSessionWithResponse":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsClient.transferTelephonyCall":"Azure.AI.Projects.AgentTelephony.transferTelephonyCall","com.azure.ai.agents.AgentsClient.transferTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.transferTelephonyCall","com.azure.ai.agents.AgentsClient.updateAgent":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsClient.updateAgentDetails":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsClient.updateAgentDetailsWithResponse":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsClient.updateAgentFromCode":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsClient.updateAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsClient.updateAgentFromManifest":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsClient.updateAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsClient.updateAgentWithResponse":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsClient.updateTelephonyBinding":"Azure.AI.Projects.AgentTelephony.updateTelephonyBinding","com.azure.ai.agents.AgentsClient.updateTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.updateTelephonyBinding","com.azure.ai.agents.AgentsClient.uploadSessionFile":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsClient.uploadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsClientBuilder":"Azure.AI.Projects","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient":"Azure.AI.Projects.Beta.AgentEndpointConversations","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.deleteAgentConversation":"Azure.AI.Projects.AgentEndpointConversations.deleteAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.deleteAgentConversationWithResponse":"Azure.AI.Projects.AgentEndpointConversations.deleteAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversation":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItem":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItem","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemGeneratedAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemGeneratedAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemGeneratedAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemGeneratedAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItem","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationResponse","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationResponseWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationResponse","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.listAgentConversationItems":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationItems","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.listAgentConversationResponseItems":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationResponseItems","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.listAgentConversationResponses":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationResponses","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.listAgentConversations":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversations","com.azure.ai.agents.BetaAgentEndpointConversationsClient":"Azure.AI.Projects.Beta.AgentEndpointConversations","com.azure.ai.agents.BetaAgentEndpointConversationsClient.deleteAgentConversation":"Azure.AI.Projects.AgentEndpointConversations.deleteAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsClient.deleteAgentConversationWithResponse":"Azure.AI.Projects.AgentEndpointConversations.deleteAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversation":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItem":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItem","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemGeneratedAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemGeneratedAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemGeneratedAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemGeneratedAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItem","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationResponse","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationResponseWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationResponse","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsClient.listAgentConversationItems":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationItems","com.azure.ai.agents.BetaAgentEndpointConversationsClient.listAgentConversationResponseItems":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationResponseItems","com.azure.ai.agents.BetaAgentEndpointConversationsClient.listAgentConversationResponses":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationResponses","com.azure.ai.agents.BetaAgentEndpointConversationsClient.listAgentConversations":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversations","com.azure.ai.agents.BetaAgentsAsyncClient":"Azure.AI.Projects.Beta.Agents","com.azure.ai.agents.BetaAgentsAsyncClient.beginCreateOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsAsyncClient.beginCreateOptimizationJobWithModel":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsAsyncClient.cancelOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsAsyncClient.cancelOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsAsyncClient.deleteOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsAsyncClient.deleteOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsAsyncClient.getOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsAsyncClient.getOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsAsyncClient.listOptimizationJobs":"Azure.AI.Projects.AgentOptimizationJobs.list","com.azure.ai.agents.BetaAgentsClient":"Azure.AI.Projects.Beta.Agents","com.azure.ai.agents.BetaAgentsClient.beginCreateOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsClient.beginCreateOptimizationJobWithModel":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsClient.cancelOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsClient.cancelOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsClient.deleteOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsClient.deleteOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsClient.getOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsClient.getOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsClient.listOptimizationJobs":"Azure.AI.Projects.AgentOptimizationJobs.list","com.azure.ai.agents.BetaMemoryStoresAsyncClient":"Azure.AI.Projects.Beta.MemoryStores","com.azure.ai.agents.BetaMemoryStoresAsyncClient.beginInternalUpdateMemories":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.beginInternalUpdateMemoriesWithModel":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemory":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemoryStore":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemoryWithResponse":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemory":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemoryStore":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemoryWithResponse":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getUpdateResult":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getUpdateResultWithResponse":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresAsyncClient.internalSearchMemories":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.internalSearchMemoriesWithResponse":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.listMemories":"Azure.AI.Projects.MemoryStores.listMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.listMemoryStores":"Azure.AI.Projects.MemoryStores.listMemoryStores","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemory":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemoryStore":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemoryWithResponse":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.BetaMemoryStoresClient":"Azure.AI.Projects.Beta.MemoryStores","com.azure.ai.agents.BetaMemoryStoresClient.beginInternalUpdateMemories":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresClient.beginInternalUpdateMemoriesWithModel":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresClient.createMemory":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresClient.createMemoryStore":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.createMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.createMemoryWithResponse":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresClient.getMemory":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresClient.getMemoryStore":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.getMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.getMemoryWithResponse":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresClient.getUpdateResult":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresClient.getUpdateResultWithResponse":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresClient.internalSearchMemories":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresClient.internalSearchMemoriesWithResponse":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresClient.listMemories":"Azure.AI.Projects.MemoryStores.listMemories","com.azure.ai.agents.BetaMemoryStoresClient.listMemoryStores":"Azure.AI.Projects.MemoryStores.listMemoryStores","com.azure.ai.agents.BetaMemoryStoresClient.updateMemory":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.BetaMemoryStoresClient.updateMemoryStore":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.updateMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.updateMemoryWithResponse":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.ToolboxesAsyncClient":"Azure.AI.Projects.Toolboxes","com.azure.ai.agents.ToolboxesAsyncClient.createToolboxVersion":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.createToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolbox":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolboxVersion":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolboxWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesAsyncClient.getToolbox":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesAsyncClient.getToolboxVersion":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.getToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.getToolboxWithResponse":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesAsyncClient.listToolboxVersions":"Azure.AI.Projects.Toolboxes.listToolboxVersions","com.azure.ai.agents.ToolboxesAsyncClient.listToolboxes":"Azure.AI.Projects.Toolboxes.listToolboxes","com.azure.ai.agents.ToolboxesAsyncClient.updateToolbox":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.ToolboxesAsyncClient.updateToolboxWithResponse":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.ToolboxesClient":"Azure.AI.Projects.Toolboxes","com.azure.ai.agents.ToolboxesClient.createToolboxVersion":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesClient.createToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesClient.deleteToolbox":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesClient.deleteToolboxVersion":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesClient.deleteToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesClient.deleteToolboxWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesClient.getToolbox":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesClient.getToolboxVersion":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesClient.getToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesClient.getToolboxWithResponse":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesClient.listToolboxVersions":"Azure.AI.Projects.Toolboxes.listToolboxVersions","com.azure.ai.agents.ToolboxesClient.listToolboxes":"Azure.AI.Projects.Toolboxes.listToolboxes","com.azure.ai.agents.ToolboxesClient.updateToolbox":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.ToolboxesClient.updateToolboxWithResponse":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.implementation.models.AgentDefinitionOptInKeys":"Azure.AI.Projects.AgentDefinitionOptInKeys","com.azure.ai.agents.implementation.models.CreateAgentFromCodeContent":"Azure.AI.Projects.CreateAgentFromCodeContent","com.azure.ai.agents.implementation.models.CreateAgentFromManifestRequest":"Azure.AI.Projects.createAgentFromManifest.Request.anonymous","com.azure.ai.agents.implementation.models.CreateAgentOptions":null,"com.azure.ai.agents.implementation.models.CreateAgentRequest":"Azure.AI.Projects.createAgent.Request.anonymous","com.azure.ai.agents.implementation.models.CreateAgentVersionFromManifestRequest":"Azure.AI.Projects.createAgentVersionFromManifest.Request.anonymous","com.azure.ai.agents.implementation.models.CreateAgentVersionRequest":"Azure.AI.Projects.createAgentVersion.Request.anonymous","com.azure.ai.agents.implementation.models.CreateMemoryRequest":"Azure.AI.Projects.createMemory.Request.anonymous","com.azure.ai.agents.implementation.models.CreateMemoryStoreRequest":"Azure.AI.Projects.createMemoryStore.Request.anonymous","com.azure.ai.agents.implementation.models.CreateSessionRequest":"Azure.AI.Projects.createSession.Request.anonymous","com.azure.ai.agents.implementation.models.CreateToolboxVersionRequest":"Azure.AI.Projects.createToolboxVersion.Request.anonymous","com.azure.ai.agents.implementation.models.FoundryFeaturesOptInKeys":"Azure.AI.Projects.FoundryFeaturesOptInKeys","com.azure.ai.agents.implementation.models.GetMicrosoft365AppPackageRequest":"Azure.AI.Projects.getMicrosoft365AppPackage.Request.anonymous","com.azure.ai.agents.implementation.models.ListMemoriesRequest":"Azure.AI.Projects.listMemories.Request.anonymous","com.azure.ai.agents.implementation.models.PublishAgentToMicrosoft365Request":"Azure.AI.Projects.publishAgentToMicrosoft365.Request.anonymous","com.azure.ai.agents.implementation.models.ReplaceTelephonyTransferTargetsRequest":"Azure.AI.Projects.replaceTelephonyTransferTargets.Request.anonymous","com.azure.ai.agents.implementation.models.SearchMemoriesRequest":"Azure.AI.Projects.searchMemories.Request.anonymous","com.azure.ai.agents.implementation.models.TransferTelephonyCallRequest":"Azure.AI.Projects.transferTelephonyCall.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateAgentFromManifestRequest":"Azure.AI.Projects.updateAgentFromManifest.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateAgentRequest":"Azure.AI.Projects.updateAgent.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateMemoriesRequest":"Azure.AI.Projects.updateMemories.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateMemoryRequest":"Azure.AI.Projects.updateMemory.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateMemoryStoreRequest":"Azure.AI.Projects.updateMemoryStore.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateToolboxInput":"Azure.AI.Projects.UpdateToolboxRequest","com.azure.ai.agents.implementation.models.UpdateToolboxRequest":"Azure.AI.Projects.updateToolbox.Request.anonymous","com.azure.ai.agents.models.A2APreviewTool":"Azure.AI.Projects.A2APreviewTool","com.azure.ai.agents.models.A2APreviewToolboxTool":"Azure.AI.Projects.A2APreviewToolboxTool","com.azure.ai.agents.models.A2AProtocolConfiguration":"Azure.AI.Projects.A2AProtocolConfiguration","com.azure.ai.agents.models.A2AProtocolVersion":"Azure.AI.Projects.A2AProtocolVersion","com.azure.ai.agents.models.A2ATool":"Azure.AI.Projects.A2ATool","com.azure.ai.agents.models.A2AToolCall":"Azure.AI.Projects.A2AToolCall","com.azure.ai.agents.models.A2AToolCallOutput":"Azure.AI.Projects.A2AToolCallOutput","com.azure.ai.agents.models.A2AToolboxTool":"Azure.AI.Projects.A2AToolboxTool","com.azure.ai.agents.models.AISearchIndexResource":"Azure.AI.Projects.AISearchIndexResource","com.azure.ai.agents.models.ActivityProtocolAccessBoundary":"Azure.AI.Projects.ActivityProtocolAccessBoundary","com.azure.ai.agents.models.ActivityProtocolConfiguration":"Azure.AI.Projects.ActivityProtocolConfiguration","com.azure.ai.agents.models.AgentBlueprintReference":"Azure.AI.Projects.AgentBlueprintReference","com.azure.ai.agents.models.AgentBlueprintReferenceType":"Azure.AI.Projects.AgentBlueprintReferenceType","com.azure.ai.agents.models.AgentCard":"Azure.AI.Projects.AgentCard","com.azure.ai.agents.models.AgentCardSkill":"Azure.AI.Projects.AgentCardSkill","com.azure.ai.agents.models.AgentDefinition":"Azure.AI.Projects.AgentDefinition","com.azure.ai.agents.models.AgentDetails":"Azure.AI.Projects.AgentObject","com.azure.ai.agents.models.AgentDetailsVersions":"Azure.AI.Projects.AgentObject.versions.anonymous","com.azure.ai.agents.models.AgentEndpointAuthorizationScheme":"Azure.AI.Projects.AgentEndpointAuthorizationScheme","com.azure.ai.agents.models.AgentEndpointAuthorizationSchemeType":"Azure.AI.Projects.AgentEndpointAuthorizationSchemeType","com.azure.ai.agents.models.AgentEndpointConfig":"Azure.AI.Projects.AgentEndpointConfig","com.azure.ai.agents.models.AgentEndpointProtocol":"Azure.AI.Projects.AgentEndpointProtocol","com.azure.ai.agents.models.AgentIdentity":"Azure.AI.Projects.AgentIdentity","com.azure.ai.agents.models.AgentIdentityStatus":"Azure.AI.Projects.AgentIdentityStatus","com.azure.ai.agents.models.AgentKind":"Azure.AI.Projects.AgentKind","com.azure.ai.agents.models.AgentObjectType":"Azure.AI.Projects.AgentObjectType","com.azure.ai.agents.models.AgentOptimizationCandidate":"Azure.AI.Projects.AgentOptimizationCandidate","com.azure.ai.agents.models.AgentOptimizationDatasetCriterion":"Azure.AI.Projects.AgentOptimizationDatasetCriterion","com.azure.ai.agents.models.AgentOptimizationDatasetInput":"Azure.AI.Projects.AgentOptimizationDatasetInput","com.azure.ai.agents.models.AgentOptimizationDatasetInputType":"Azure.AI.Projects.AgentOptimizationDatasetInputType","com.azure.ai.agents.models.AgentOptimizationDatasetItem":"Azure.AI.Projects.AgentOptimizationDatasetItem","com.azure.ai.agents.models.AgentOptimizationEvaluatorRef":"Azure.AI.Projects.AgentOptimizationEvaluatorRef","com.azure.ai.agents.models.AgentOptimizationInlineDatasetInput":"Azure.AI.Projects.AgentOptimizationInlineDatasetInput","com.azure.ai.agents.models.AgentOptimizationJob":"Azure.AI.Projects.AgentOptimizationJob","com.azure.ai.agents.models.AgentOptimizationJobInputs":"Azure.AI.Projects.AgentOptimizationJobInputs","com.azure.ai.agents.models.AgentOptimizationJobListItem":"Azure.AI.Projects.AgentOptimizationJobListItem","com.azure.ai.agents.models.AgentOptimizationJobProgress":"Azure.AI.Projects.AgentOptimizationJobProgress","com.azure.ai.agents.models.AgentOptimizationJobResult":"Azure.AI.Projects.AgentOptimizationJobResult","com.azure.ai.agents.models.AgentOptimizationOptions":"Azure.AI.Projects.AgentOptimizationOptions","com.azure.ai.agents.models.AgentOptimizationReferenceDatasetInput":"Azure.AI.Projects.AgentOptimizationReferenceDatasetInput","com.azure.ai.agents.models.AgentReference":"Azure.AI.Projects.AgentReference","com.azure.ai.agents.models.AgentSessionResource":"Azure.AI.Projects.AgentSessionResource","com.azure.ai.agents.models.AgentSessionStatus":"Azure.AI.Projects.AgentSessionStatus","com.azure.ai.agents.models.AgentState":"Azure.AI.Projects.AgentState","com.azure.ai.agents.models.AgentStateSource":"Azure.AI.Projects.AgentStateSource","com.azure.ai.agents.models.AgentVersionDetails":"Azure.AI.Projects.AgentVersionObject","com.azure.ai.agents.models.AgentVersionStatus":"Azure.AI.Projects.AgentVersionStatus","com.azure.ai.agents.models.ApiError":"OpenAI.Error","com.azure.ai.agents.models.ApplyPatchToolParameter":"OpenAI.ApplyPatchToolParam","com.azure.ai.agents.models.ApproximateLocation":"OpenAI.ApproximateLocation","com.azure.ai.agents.models.AudioTranscription":"OpenAI.AudioTranscription","com.azure.ai.agents.models.AudioTranscriptionModel":"OpenAI.AudioTranscription.model.anonymous","com.azure.ai.agents.models.AutoCodeInterpreterToolParameter":"OpenAI.AutoCodeInterpreterToolParam","com.azure.ai.agents.models.AzureAISearchQueryType":"Azure.AI.Projects.AzureAISearchQueryType","com.azure.ai.agents.models.AzureAISearchTool":"Azure.AI.Projects.AzureAISearchTool","com.azure.ai.agents.models.AzureAISearchToolCall":"Azure.AI.Projects.AzureAISearchToolCall","com.azure.ai.agents.models.AzureAISearchToolCallOutput":"Azure.AI.Projects.AzureAISearchToolCallOutput","com.azure.ai.agents.models.AzureAISearchToolResource":"Azure.AI.Projects.AzureAISearchToolResource","com.azure.ai.agents.models.AzureAISearchToolboxTool":"Azure.AI.Projects.AzureAISearchToolboxTool","com.azure.ai.agents.models.AzureCreateResponseDetails":"Azure.AI.Projects.AzureCreateResponseDetails","com.azure.ai.agents.models.AzureCreateResponseOptions":"Azure.AI.Projects.AzureCreateResponseOptions","com.azure.ai.agents.models.AzureFunctionBinding":"Azure.AI.Projects.AzureFunctionBinding","com.azure.ai.agents.models.AzureFunctionDefinition":"Azure.AI.Projects.AzureFunctionDefinition","com.azure.ai.agents.models.AzureFunctionDefinitionDetails":"Azure.AI.Projects.AzureFunctionDefinition.function.anonymous","com.azure.ai.agents.models.AzureFunctionStorageQueue":"Azure.AI.Projects.AzureFunctionStorageQueue","com.azure.ai.agents.models.AzureFunctionTool":"Azure.AI.Projects.AzureFunctionTool","com.azure.ai.agents.models.AzureFunctionToolCall":"Azure.AI.Projects.AzureFunctionToolCall","com.azure.ai.agents.models.AzureFunctionToolCallOutput":"Azure.AI.Projects.AzureFunctionToolCallOutput","com.azure.ai.agents.models.AzureUserSecurityContext":"Azure.AI.Projects.AzureUserSecurityContext","com.azure.ai.agents.models.BingCustomSearchConfiguration":"Azure.AI.Projects.BingCustomSearchConfiguration","com.azure.ai.agents.models.BingCustomSearchPreviewTool":"Azure.AI.Projects.BingCustomSearchPreviewTool","com.azure.ai.agents.models.BingCustomSearchToolCall":"Azure.AI.Projects.BingCustomSearchToolCall","com.azure.ai.agents.models.BingCustomSearchToolCallOutput":"Azure.AI.Projects.BingCustomSearchToolCallOutput","com.azure.ai.agents.models.BingCustomSearchToolParameters":"Azure.AI.Projects.BingCustomSearchToolParameters","com.azure.ai.agents.models.BingGroundingSearchConfiguration":"Azure.AI.Projects.BingGroundingSearchConfiguration","com.azure.ai.agents.models.BingGroundingSearchToolParameters":"Azure.AI.Projects.BingGroundingSearchToolParameters","com.azure.ai.agents.models.BingGroundingTool":"Azure.AI.Projects.BingGroundingTool","com.azure.ai.agents.models.BingGroundingToolCall":"Azure.AI.Projects.BingGroundingToolCall","com.azure.ai.agents.models.BingGroundingToolCallOutput":"Azure.AI.Projects.BingGroundingToolCallOutput","com.azure.ai.agents.models.BotServiceAuthorizationScheme":"Azure.AI.Projects.BotServiceAuthorizationScheme","com.azure.ai.agents.models.BotServiceRbacAuthorizationScheme":"Azure.AI.Projects.BotServiceRbacAuthorizationScheme","com.azure.ai.agents.models.BotServiceTenantAuthorizationScheme":"Azure.AI.Projects.BotServiceTenantAuthorizationScheme","com.azure.ai.agents.models.BrowserAutomationPreviewTool":"Azure.AI.Projects.BrowserAutomationPreviewTool","com.azure.ai.agents.models.BrowserAutomationPreviewToolboxTool":"Azure.AI.Projects.BrowserAutomationPreviewToolboxTool","com.azure.ai.agents.models.BrowserAutomationToolCall":"Azure.AI.Projects.BrowserAutomationToolCall","com.azure.ai.agents.models.BrowserAutomationToolCallOutput":"Azure.AI.Projects.BrowserAutomationToolCallOutput","com.azure.ai.agents.models.BrowserAutomationToolConnectionParameters":"Azure.AI.Projects.BrowserAutomationToolConnectionParameters","com.azure.ai.agents.models.BrowserAutomationToolParameters":"Azure.AI.Projects.BrowserAutomationToolParameters","com.azure.ai.agents.models.CallableToolAllowedCaller":"OpenAI.CallableToolAllowedCaller","com.azure.ai.agents.models.CaptureStructuredOutputsTool":"Azure.AI.Projects.CaptureStructuredOutputsTool","com.azure.ai.agents.models.ChatSummaryMemoryItem":"Azure.AI.Projects.ChatSummaryMemoryItem","com.azure.ai.agents.models.CodeConfiguration":"Azure.AI.Projects.CodeConfiguration","com.azure.ai.agents.models.CodeDependencyResolution":"Azure.AI.Projects.CodeDependencyResolution","com.azure.ai.agents.models.CodeFileDetails":null,"com.azure.ai.agents.models.CodeInterpreterTool":"OpenAI.CodeInterpreterTool","com.azure.ai.agents.models.CodeInterpreterToolboxTool":"Azure.AI.Projects.CodeInterpreterToolboxTool","com.azure.ai.agents.models.ComputerEnvironment":"ComputerEnvironmentExpandable","com.azure.ai.agents.models.ComputerTool":"OpenAI.ComputerTool","com.azure.ai.agents.models.ComputerUsePreviewTool":"OpenAI.ComputerUsePreviewTool","com.azure.ai.agents.models.ContainerAutoParameter":"OpenAI.ContainerAutoParam","com.azure.ai.agents.models.ContainerConfiguration":"Azure.AI.Projects.ContainerConfiguration","com.azure.ai.agents.models.ContainerMemoryLimit":"ContainerMemoryLimitExpandable","com.azure.ai.agents.models.ContainerNetworkPolicyAllowlistParameter":"OpenAI.ContainerNetworkPolicyAllowlistParam","com.azure.ai.agents.models.ContainerNetworkPolicyDisabledParameter":"OpenAI.ContainerNetworkPolicyDisabledParam","com.azure.ai.agents.models.ContainerNetworkPolicyDomainSecretParameter":"OpenAI.ContainerNetworkPolicyDomainSecretParam","com.azure.ai.agents.models.ContainerNetworkPolicyParamType":"OpenAI.ContainerNetworkPolicyParamType","com.azure.ai.agents.models.ContainerNetworkPolicyParameter":"OpenAI.ContainerNetworkPolicyParam","com.azure.ai.agents.models.ContainerSkill":"OpenAI.ContainerSkill","com.azure.ai.agents.models.ContainerSkillType":"OpenAI.ContainerSkillType","com.azure.ai.agents.models.CreateAgentVersionFromCodeContent":"Azure.AI.Projects.CreateAgentVersionFromCodeContent","com.azure.ai.agents.models.CreateAgentVersionFromCodeMetadata":"Azure.AI.Projects.CreateAgentVersionFromCodeMetadata","com.azure.ai.agents.models.CreateAgentVersionInput":"Azure.AI.Projects.CreateAgentVersionRequest","com.azure.ai.agents.models.CreateAgentVersionOptions":null,"com.azure.ai.agents.models.CreateTeamsPhoneExtensionTelephonyBindingRequest":"Azure.AI.Projects.CreateTeamsPhoneExtensionTelephonyBindingRequest","com.azure.ai.agents.models.CreateTelephonyBindingRequest":"Azure.AI.Projects.CreateTelephonyBindingRequest","com.azure.ai.agents.models.CreateTelephonyCallJobRequest":"Azure.AI.Projects.CreateTelephonyCallJobRequest","com.azure.ai.agents.models.CreateTelephonyCampaignRequest":"Azure.AI.Projects.CreateTelephonyCampaignRequest","com.azure.ai.agents.models.CreateTranscriptionResponseJsonUsage":"OpenAI.CreateTranscriptionResponseJsonUsage","com.azure.ai.agents.models.CreateTranscriptionResponseJsonUsageType":"OpenAI.CreateTranscriptionResponseJsonUsageType","com.azure.ai.agents.models.CreateTwilioTelephonyBindingRequest":"Azure.AI.Projects.CreateTwilioTelephonyBindingRequest","com.azure.ai.agents.models.CustomGrammarFormatParameter":"OpenAI.CustomGrammarFormatParam","com.azure.ai.agents.models.CustomTextFormatParameter":"OpenAI.CustomTextFormatParam","com.azure.ai.agents.models.CustomToolParamFormat":"OpenAI.CustomToolParamFormat","com.azure.ai.agents.models.CustomToolParamFormatType":"OpenAI.CustomToolParamFormatType","com.azure.ai.agents.models.CustomToolParameter":"OpenAI.CustomToolParam","com.azure.ai.agents.models.DigitalWorkerType":"Azure.AI.Projects.DigitalWorkerType","com.azure.ai.agents.models.EntraAuthorizationScheme":"Azure.AI.Projects.EntraAuthorizationScheme","com.azure.ai.agents.models.EvaluationLevel":"Azure.AI.Projects.EvaluationLevel","com.azure.ai.agents.models.ExternalAgentDefinition":"Azure.AI.Projects.ExternalAgentDefinition","com.azure.ai.agents.models.FabricDataAgentToolCall":"Azure.AI.Projects.FabricDataAgentToolCall","com.azure.ai.agents.models.FabricDataAgentToolCallOutput":"Azure.AI.Projects.FabricDataAgentToolCallOutput","com.azure.ai.agents.models.FabricDataAgentToolParameters":"Azure.AI.Projects.FabricDataAgentToolParameters","com.azure.ai.agents.models.FabricIqPreviewTool":"Azure.AI.Projects.FabricIQPreviewTool","com.azure.ai.agents.models.FabricIqPreviewToolboxTool":"Azure.AI.Projects.FabricIQPreviewToolboxTool","com.azure.ai.agents.models.FileInputDetail":"OpenAI.FileInputDetail","com.azure.ai.agents.models.FileSearchTool":"OpenAI.FileSearchTool","com.azure.ai.agents.models.FileSearchToolboxTool":"Azure.AI.Projects.FileSearchToolboxTool","com.azure.ai.agents.models.FixedRatioVersionSelectionRule":"Azure.AI.Projects.FixedRatioVersionSelectionRule","com.azure.ai.agents.models.FunctionShellToolParamEnvironment":"OpenAI.FunctionShellToolParamEnvironment","com.azure.ai.agents.models.FunctionShellToolParamEnvironmentType":"OpenAI.FunctionShellToolParamEnvironmentType","com.azure.ai.agents.models.FunctionShellToolParameter":"OpenAI.FunctionShellToolParam","com.azure.ai.agents.models.FunctionShellToolParameterEnvironmentContainerReferenceParameter":"OpenAI.FunctionShellToolParamEnvironmentContainerReferenceParam","com.azure.ai.agents.models.FunctionShellToolParameterEnvironmentLocalEnvironmentParameter":"OpenAI.FunctionShellToolParamEnvironmentLocalEnvironmentParam","com.azure.ai.agents.models.FunctionTool":"OpenAI.FunctionTool","com.azure.ai.agents.models.GetMicrosoft365AppPackageOptions":null,"com.azure.ai.agents.models.GrammarSyntax":"GrammarSyntaxExpandable","com.azure.ai.agents.models.HeaderTelemetryEndpointAuth":"Azure.AI.Projects.HeaderTelemetryEndpointAuth","com.azure.ai.agents.models.HostedAgentDefinition":"Azure.AI.Projects.HostedAgentDefinition","com.azure.ai.agents.models.HybridSearchOptions":"OpenAI.HybridSearchOptions","com.azure.ai.agents.models.ImageDetail":"OpenAI.ImageDetail","com.azure.ai.agents.models.ImageGenActionEnum":"ImageGenActionEnumExpandable","com.azure.ai.agents.models.ImageGenTool":"OpenAI.ImageGenTool","com.azure.ai.agents.models.ImageGenToolBackground":"ImageGenToolBackgroundExpandable","com.azure.ai.agents.models.ImageGenToolInputImageMask":"OpenAI.ImageGenToolInputImageMask","com.azure.ai.agents.models.ImageGenToolModel":"OpenAI.ImageGenTool.model.anonymous","com.azure.ai.agents.models.ImageGenToolModeration":"ImageGenToolModerationExpandable","com.azure.ai.agents.models.ImageGenToolOutputFormat":"ImageGenToolOutputFormatExpandable","com.azure.ai.agents.models.ImageGenToolQuality":"ImageGenToolQualityExpandable","com.azure.ai.agents.models.ImageGenToolSize":"ImageGenToolSizeExpandable","com.azure.ai.agents.models.ImportTelephonyCampaignRecipientsRequest":"Azure.AI.Projects.ImportTelephonyCampaignRecipientsRequest","com.azure.ai.agents.models.IncludeEnum":"OpenAI.IncludeEnum","com.azure.ai.agents.models.InlineSkillParameter":"OpenAI.InlineSkillParam","com.azure.ai.agents.models.InlineSkillSourceParameter":"OpenAI.InlineSkillSourceParam","com.azure.ai.agents.models.InputFidelity":"InputFidelityExpandable","com.azure.ai.agents.models.InputFileContent":"OpenAI.InputFileContent","com.azure.ai.agents.models.InputImageContent":"OpenAI.InputImageContent","com.azure.ai.agents.models.InputTextContent":"OpenAI.InputTextContent","com.azure.ai.agents.models.InvocationsProtocolConfiguration":"Azure.AI.Projects.InvocationsProtocolConfiguration","com.azure.ai.agents.models.InvocationsWsProtocolConfiguration":"Azure.AI.Projects.InvocationsWsProtocolConfiguration","com.azure.ai.agents.models.JobStatus":"Azure.AI.Projects.JobStatus","com.azure.ai.agents.models.ListMemoriesOptions":null,"com.azure.ai.agents.models.LocalShellToolParameter":"OpenAI.LocalShellToolParam","com.azure.ai.agents.models.LocalSkillParameter":"OpenAI.LocalSkillParam","com.azure.ai.agents.models.LogProbProperties":"OpenAI.LogProbProperties","com.azure.ai.agents.models.ManagedAgentIdentityBlueprintReference":"Azure.AI.Projects.ManagedAgentIdentityBlueprintReference","com.azure.ai.agents.models.McpListToolsTool":"OpenAI.MCPListToolsTool","com.azure.ai.agents.models.McpListToolsToolAnnotations":"OpenAI.MCPListToolsToolAnnotations","com.azure.ai.agents.models.McpListToolsToolInputSchema":"OpenAI.MCPListToolsToolInputSchema","com.azure.ai.agents.models.McpProtocolConfiguration":"Azure.AI.Projects.McpProtocolConfiguration","com.azure.ai.agents.models.McpTool":"OpenAI.MCPTool","com.azure.ai.agents.models.McpToolConnectorId":"McpToolConnectorIdExpandable","com.azure.ai.agents.models.McpToolFilter":"OpenAI.MCPToolFilter","com.azure.ai.agents.models.McpToolRequireApproval":"OpenAI.MCPToolRequireApproval","com.azure.ai.agents.models.McpToolboxTool":"Azure.AI.Projects.MCPToolboxTool","com.azure.ai.agents.models.MemoryCommandToolCall":"Azure.AI.Projects.MemoryCommandToolCall","com.azure.ai.agents.models.MemoryCommandToolCallOutput":"Azure.AI.Projects.MemoryCommandToolCallOutput","com.azure.ai.agents.models.MemoryItem":"Azure.AI.Projects.MemoryItem","com.azure.ai.agents.models.MemoryItemKind":"Azure.AI.Projects.MemoryItemKind","com.azure.ai.agents.models.MemoryOperation":"Azure.AI.Projects.MemoryOperation","com.azure.ai.agents.models.MemoryOperationKind":"Azure.AI.Projects.MemoryOperationKind","com.azure.ai.agents.models.MemorySearchItem":"Azure.AI.Projects.MemorySearchItem","com.azure.ai.agents.models.MemorySearchOptions":"Azure.AI.Projects.MemorySearchOptions","com.azure.ai.agents.models.MemorySearchPreviewTool":"Azure.AI.Projects.MemorySearchPreviewTool","com.azure.ai.agents.models.MemorySearchToolCall":"Azure.AI.Projects.MemorySearchToolCall","com.azure.ai.agents.models.MemoryStoreDefaultDefinition":"Azure.AI.Projects.MemoryStoreDefaultDefinition","com.azure.ai.agents.models.MemoryStoreDefaultOptions":"Azure.AI.Projects.MemoryStoreDefaultOptions","com.azure.ai.agents.models.MemoryStoreDefinition":"Azure.AI.Projects.MemoryStoreDefinition","com.azure.ai.agents.models.MemoryStoreDetails":"Azure.AI.Projects.MemoryStoreObject","com.azure.ai.agents.models.MemoryStoreKind":"Azure.AI.Projects.MemoryStoreKind","com.azure.ai.agents.models.MemoryStoreObjectType":"Azure.AI.Projects.MemoryStoreObjectType","com.azure.ai.agents.models.MemoryStoreOperationUsage":"Azure.AI.Projects.MemoryStoreOperationUsage","com.azure.ai.agents.models.MemoryStoreSearchResponse":"Azure.AI.Projects.MemoryStoreSearchResponse","com.azure.ai.agents.models.MemoryStoreUpdateCompletedResult":"Azure.AI.Projects.MemoryStoreUpdateCompletedResult","com.azure.ai.agents.models.MemoryStoreUpdateResponse":"Azure.AI.Projects.MemoryStoreUpdateResponse","com.azure.ai.agents.models.MemoryStoreUpdateStatus":"Azure.AI.Projects.MemoryStoreUpdateStatus","com.azure.ai.agents.models.Microsoft365PermissionScopes":"Azure.AI.Projects.Microsoft365PermissionScopes","com.azure.ai.agents.models.Microsoft365PublishDefaults":"Azure.AI.Projects.Microsoft365PublishDefaults","com.azure.ai.agents.models.Microsoft365PublishResult":"Azure.AI.Projects.Microsoft365PublishResponse","com.azure.ai.agents.models.Microsoft365PublishScope":"Azure.AI.Projects.Microsoft365PublishScope","com.azure.ai.agents.models.MicrosoftFabricPreviewTool":"Azure.AI.Projects.MicrosoftFabricPreviewTool","com.azure.ai.agents.models.ModelRouterAttempt":"Azure.AI.Projects.ModelRouterAttempt","com.azure.ai.agents.models.ModelRouterAttemptError":"Azure.AI.Projects.ModelRouterAttemptError","com.azure.ai.agents.models.ModelRouterAttemptResult":"Azure.AI.Projects.ModelRouterAttemptResult","com.azure.ai.agents.models.ModelRouterDetails":"Azure.AI.Projects.ModelRouterDetails","com.azure.ai.agents.models.ModelRouterMode":"Azure.AI.Projects.ModelRouterMode","com.azure.ai.agents.models.ModelSelectionDetails":"Azure.AI.Projects.ModelSelectionDetails","com.azure.ai.agents.models.NamespaceTool":"OpenAI.NamespaceToolParam","com.azure.ai.agents.models.NoiseReductionType":"OpenAI.NoiseReductionType","com.azure.ai.agents.models.OpenApiAnonymousAuthDetails":"Azure.AI.Projects.OpenApiAnonymousAuthDetails","com.azure.ai.agents.models.OpenApiAuthDetails":"Azure.AI.Projects.OpenApiAuthDetails","com.azure.ai.agents.models.OpenApiAuthType":"Azure.AI.Projects.OpenApiAuthType","com.azure.ai.agents.models.OpenApiFunctionDefinition":"Azure.AI.Projects.OpenApiFunctionDefinition","com.azure.ai.agents.models.OpenApiFunctionDefinitionFunction":"Azure.AI.Projects.OpenApiFunctionDefinition.function.anonymous","com.azure.ai.agents.models.OpenApiManagedAuthDetails":"Azure.AI.Projects.OpenApiManagedAuthDetails","com.azure.ai.agents.models.OpenApiManagedSecurityScheme":"Azure.AI.Projects.OpenApiManagedSecurityScheme","com.azure.ai.agents.models.OpenApiProjectConnectionAuthDetails":"Azure.AI.Projects.OpenApiProjectConnectionAuthDetails","com.azure.ai.agents.models.OpenApiProjectConnectionSecurityScheme":"Azure.AI.Projects.OpenApiProjectConnectionSecurityScheme","com.azure.ai.agents.models.OpenApiTool":"Azure.AI.Projects.OpenApiTool","com.azure.ai.agents.models.OpenApiToolCall":"Azure.AI.Projects.OpenApiToolCall","com.azure.ai.agents.models.OpenApiToolCallOutput":"Azure.AI.Projects.OpenApiToolCallOutput","com.azure.ai.agents.models.OpenApiToolboxTool":"Azure.AI.Projects.OpenApiToolboxTool","com.azure.ai.agents.models.OptimizedAgentIdentifier":"Azure.AI.Projects.OptimizedAgentIdentifier","com.azure.ai.agents.models.OtlpTelemetryEndpoint":"Azure.AI.Projects.OtlpTelemetryEndpoint","com.azure.ai.agents.models.PSTNTelephonyTransferDestination":"Azure.AI.Projects.PSTNTelephonyTransferDestination","com.azure.ai.agents.models.PageOrder":"Azure.AI.Projects.PageOrder","com.azure.ai.agents.models.PickPropertiesVoiceAgentAudioConfig":"TypeSpec.PickProperties","com.azure.ai.agents.models.ProceduralMemoryItem":"Azure.AI.Projects.ProceduralMemoryItem","com.azure.ai.agents.models.ProgrammaticToolCallingParameter":"OpenAI.ProgrammaticToolCallingParam","com.azure.ai.agents.models.PromotionInfo":"Azure.AI.Projects.PromotionInfo","com.azure.ai.agents.models.Prompt":"OpenAI.Prompt","com.azure.ai.agents.models.PromptAgentDefinition":"Azure.AI.Projects.PromptAgentDefinition","com.azure.ai.agents.models.PromptAgentDefinitionTextOptions":"Azure.AI.Projects.PromptAgentDefinitionTextOptions","com.azure.ai.agents.models.PromptCacheBreakpointConfig":"OpenAI.PromptCacheBreakpointConfig","com.azure.ai.agents.models.ProtocolConfiguration":"Azure.AI.Projects.ProtocolConfiguration","com.azure.ai.agents.models.ProtocolVersionRecord":"Azure.AI.Projects.ProtocolVersionRecord","com.azure.ai.agents.models.PublishAgentToMicrosoft365Options":null,"com.azure.ai.agents.models.PublishApprovalStatus":"Azure.AI.Projects.PublishApprovalStatus","com.azure.ai.agents.models.PublishTelephonyCampaignRequest":"Azure.AI.Projects.PublishTelephonyCampaignRequest","com.azure.ai.agents.models.RaiConfig":"Azure.AI.Projects.RaiConfig","com.azure.ai.agents.models.RaiInvocationContentType":"Azure.AI.Projects.RaiInvocationContentType","com.azure.ai.agents.models.RaiInvocationMode":"Azure.AI.Projects.RaiInvocationMode","com.azure.ai.agents.models.RaiInvocationModeration":"Azure.AI.Projects.RaiInvocationModeration","com.azure.ai.agents.models.RaiSseTextSelector":"Azure.AI.Projects.RaiSseTextSelector","com.azure.ai.agents.models.RankerVersionType":"RankerVersionTypeExpandable","com.azure.ai.agents.models.RankingOptions":"OpenAI.RankingOptions","com.azure.ai.agents.models.RealtimeAudioFormats":"OpenAI.RealtimeAudioFormats","com.azure.ai.agents.models.RealtimeAudioFormatsAudioPcm":"OpenAI.RealtimeAudioFormatsAudioPcm","com.azure.ai.agents.models.RealtimeAudioFormatsAudioPcmRate":null,"com.azure.ai.agents.models.RealtimeAudioFormatsAudioPcma":"OpenAI.RealtimeAudioFormatsAudioPcma","com.azure.ai.agents.models.RealtimeAudioFormatsAudioPcmu":"OpenAI.RealtimeAudioFormatsAudioPcmu","com.azure.ai.agents.models.RealtimeAudioFormatsType":"OpenAI.RealtimeAudioFormatsType","com.azure.ai.agents.models.RealtimeClientEvent":"OpenAI.RealtimeClientEvent","com.azure.ai.agents.models.RealtimeClientEventConversationItemCreate":"OpenAI.RealtimeClientEventConversationItemCreate","com.azure.ai.agents.models.RealtimeClientEventConversationItemDelete":"OpenAI.RealtimeClientEventConversationItemDelete","com.azure.ai.agents.models.RealtimeClientEventConversationItemRetrieve":"OpenAI.RealtimeClientEventConversationItemRetrieve","com.azure.ai.agents.models.RealtimeClientEventConversationItemTruncate":"OpenAI.RealtimeClientEventConversationItemTruncate","com.azure.ai.agents.models.RealtimeClientEventInputAudioBufferAppend":"OpenAI.RealtimeClientEventInputAudioBufferAppend","com.azure.ai.agents.models.RealtimeClientEventInputAudioBufferClear":"OpenAI.RealtimeClientEventInputAudioBufferClear","com.azure.ai.agents.models.RealtimeClientEventInputAudioBufferCommit":"OpenAI.RealtimeClientEventInputAudioBufferCommit","com.azure.ai.agents.models.RealtimeClientEventOutputAudioBufferClear":"OpenAI.RealtimeClientEventOutputAudioBufferClear","com.azure.ai.agents.models.RealtimeClientEventResponseCancel":"OpenAI.RealtimeClientEventResponseCancel","com.azure.ai.agents.models.RealtimeClientEventResponseCreate":"OpenAI.RealtimeClientEventResponseCreate","com.azure.ai.agents.models.RealtimeClientEventSessionUpdate":"OpenAI.RealtimeClientEventSessionUpdate","com.azure.ai.agents.models.RealtimeClientEventSessionUpdateSessionModel":"OpenAI.RealtimeClientEventSessionUpdate.session.model.anonymous","com.azure.ai.agents.models.RealtimeClientEventSessionUpdateSessionOutputModality":"OpenAI.RealtimeClientEventSessionUpdate.session.output_modality.anonymous","com.azure.ai.agents.models.RealtimeClientEventSessionUpdateSessionTruncation":"OpenAI.RealtimeClientEventSessionUpdate.session.truncation.anonymous","com.azure.ai.agents.models.RealtimeClientEventSessionUpdateSessionTruncation1":"OpenAI.RealtimeClientEventSessionUpdate.session.truncation.anonymous","com.azure.ai.agents.models.RealtimeClientEventType":"OpenAI.RealtimeClientEventType","com.azure.ai.agents.models.RealtimeConversationItem":"OpenAI.RealtimeConversationItem","com.azure.ai.agents.models.RealtimeConversationItemFunctionCall":"OpenAI.RealtimeConversationItemFunctionCall","com.azure.ai.agents.models.RealtimeConversationItemFunctionCallOutput":"OpenAI.RealtimeConversationItemFunctionCallOutput","com.azure.ai.agents.models.RealtimeConversationItemFunctionCallOutputStatus":"OpenAI.RealtimeConversationItemFunctionCallOutput.status.anonymous","com.azure.ai.agents.models.RealtimeConversationItemFunctionCallStatus":"OpenAI.RealtimeConversationItemFunctionCall.status.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessage":"OpenAI.RealtimeConversationItemMessage","com.azure.ai.agents.models.RealtimeConversationItemMessageAssistant":"OpenAI.RealtimeConversationItemMessageAssistant","com.azure.ai.agents.models.RealtimeConversationItemMessageAssistantContent":"OpenAI.RealtimeConversationItemMessageAssistantContent","com.azure.ai.agents.models.RealtimeConversationItemMessageAssistantContentType":"OpenAI.RealtimeConversationItemMessageAssistantContent.type.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessageAssistantStatus":"OpenAI.RealtimeConversationItemMessageAssistant.status.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessageSystem":"OpenAI.RealtimeConversationItemMessageSystem","com.azure.ai.agents.models.RealtimeConversationItemMessageSystemContent":"OpenAI.RealtimeConversationItemMessageSystemContent","com.azure.ai.agents.models.RealtimeConversationItemMessageSystemContentType":null,"com.azure.ai.agents.models.RealtimeConversationItemMessageSystemStatus":"OpenAI.RealtimeConversationItemMessageSystem.status.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessageType":"OpenAI.RealtimeConversationItemMessageType","com.azure.ai.agents.models.RealtimeConversationItemMessageUser":"OpenAI.RealtimeConversationItemMessageUser","com.azure.ai.agents.models.RealtimeConversationItemMessageUserContent":"OpenAI.RealtimeConversationItemMessageUserContent","com.azure.ai.agents.models.RealtimeConversationItemMessageUserContentDetail":"OpenAI.RealtimeConversationItemMessageUserContent.detail.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessageUserContentType":"OpenAI.RealtimeConversationItemMessageUserContent.type.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessageUserStatus":"OpenAI.RealtimeConversationItemMessageUser.status.anonymous","com.azure.ai.agents.models.RealtimeConversationItemObject":"RealtimeConversationItemObject","com.azure.ai.agents.models.RealtimeConversationItemType":"OpenAI.RealtimeConversationItemType","com.azure.ai.agents.models.RealtimeFunctionTool":"OpenAI.RealtimeFunctionTool","com.azure.ai.agents.models.RealtimeMCPApprovalRequest":"OpenAI.RealtimeMCPApprovalRequest","com.azure.ai.agents.models.RealtimeMCPApprovalResponse":"OpenAI.RealtimeMCPApprovalResponse","com.azure.ai.agents.models.RealtimeMCPError":"OpenAI.RealtimeMCPError","com.azure.ai.agents.models.RealtimeMCPHttpError":"OpenAI.RealtimeMCPHTTPError","com.azure.ai.agents.models.RealtimeMCPListTools":"OpenAI.RealtimeMCPListTools","com.azure.ai.agents.models.RealtimeMCPProtocolError":"OpenAI.RealtimeMCPProtocolError","com.azure.ai.agents.models.RealtimeMCPToolCall":"OpenAI.RealtimeMCPToolCall","com.azure.ai.agents.models.RealtimeMCPToolExecutionError":"OpenAI.RealtimeMCPToolExecutionError","com.azure.ai.agents.models.RealtimeMcpErrorType":"OpenAI.RealtimeMcpErrorType","com.azure.ai.agents.models.RealtimeReasoning":"OpenAI.RealtimeReasoning","com.azure.ai.agents.models.RealtimeReasoningEffort":"OpenAI.RealtimeReasoningEffort","com.azure.ai.agents.models.RealtimeResponseStatusDetails":"OpenAI.RealtimeResponseStatusDetails","com.azure.ai.agents.models.RealtimeResponseStatusDetailsError":"OpenAI.RealtimeResponseStatusDetailsError","com.azure.ai.agents.models.RealtimeResponseStatusDetailsReason":"OpenAI.RealtimeResponseStatusDetails.reason.anonymous","com.azure.ai.agents.models.RealtimeResponseStatusDetailsType":"OpenAI.RealtimeResponseStatusDetails.type.anonymous","com.azure.ai.agents.models.RealtimeResponseUsage":"OpenAI.RealtimeResponseUsage","com.azure.ai.agents.models.RealtimeResponseUsageInputTokenDetails":"OpenAI.RealtimeResponseUsageInputTokenDetails","com.azure.ai.agents.models.RealtimeResponseUsageInputTokenDetailsCachedTokensDetails":"OpenAI.RealtimeResponseUsageInputTokenDetailsCachedTokensDetails","com.azure.ai.agents.models.RealtimeResponseUsageOutputTokenDetails":"OpenAI.RealtimeResponseUsageOutputTokenDetails","com.azure.ai.agents.models.RealtimeServerEvent":"OpenAI.RealtimeServerEvent","com.azure.ai.agents.models.RealtimeServerEventConversationCreated":"OpenAI.RealtimeServerEventConversationCreated","com.azure.ai.agents.models.RealtimeServerEventConversationCreatedConversation":"OpenAI.RealtimeServerEventConversationCreatedConversation","com.azure.ai.agents.models.RealtimeServerEventConversationCreatedConversationObject":null,"com.azure.ai.agents.models.RealtimeServerEventConversationItemAdded":"OpenAI.RealtimeServerEventConversationItemAdded","com.azure.ai.agents.models.RealtimeServerEventConversationItemCreated":"OpenAI.RealtimeServerEventConversationItemCreated","com.azure.ai.agents.models.RealtimeServerEventConversationItemDeleted":"OpenAI.RealtimeServerEventConversationItemDeleted","com.azure.ai.agents.models.RealtimeServerEventConversationItemDone":"OpenAI.RealtimeServerEventConversationItemDone","com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionCompleted":"OpenAI.RealtimeServerEventConversationItemInputAudioTranscriptionCompleted","com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionDelta":"OpenAI.RealtimeServerEventConversationItemInputAudioTranscriptionDelta","com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionFailed":"OpenAI.RealtimeServerEventConversationItemInputAudioTranscriptionFailed","com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionFailedError":"OpenAI.RealtimeServerEventConversationItemInputAudioTranscriptionFailedError","com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionSegment":"OpenAI.RealtimeServerEventConversationItemInputAudioTranscriptionSegment","com.azure.ai.agents.models.RealtimeServerEventConversationItemRetrieved":"OpenAI.RealtimeServerEventConversationItemRetrieved","com.azure.ai.agents.models.RealtimeServerEventConversationItemTruncated":"OpenAI.RealtimeServerEventConversationItemTruncated","com.azure.ai.agents.models.RealtimeServerEventErrorError":"OpenAI.RealtimeServerEventErrorError","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferCleared":"OpenAI.RealtimeServerEventInputAudioBufferCleared","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferCommitted":"OpenAI.RealtimeServerEventInputAudioBufferCommitted","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferDtmfEventReceived":"OpenAI.RealtimeServerEventInputAudioBufferDtmfEventReceived","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferSpeechStarted":"OpenAI.RealtimeServerEventInputAudioBufferSpeechStarted","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferSpeechStopped":"OpenAI.RealtimeServerEventInputAudioBufferSpeechStopped","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferTimeoutTriggered":"OpenAI.RealtimeServerEventInputAudioBufferTimeoutTriggered","com.azure.ai.agents.models.RealtimeServerEventMCPListToolsCompleted":"OpenAI.RealtimeServerEventMCPListToolsCompleted","com.azure.ai.agents.models.RealtimeServerEventMCPListToolsFailed":"OpenAI.RealtimeServerEventMCPListToolsFailed","com.azure.ai.agents.models.RealtimeServerEventMCPListToolsInProgress":"OpenAI.RealtimeServerEventMCPListToolsInProgress","com.azure.ai.agents.models.RealtimeServerEventOutputAudioBufferCleared":"OpenAI.RealtimeServerEventOutputAudioBufferCleared","com.azure.ai.agents.models.RealtimeServerEventOutputAudioBufferStarted":"OpenAI.RealtimeServerEventOutputAudioBufferStarted","com.azure.ai.agents.models.RealtimeServerEventOutputAudioBufferStopped":"OpenAI.RealtimeServerEventOutputAudioBufferStopped","com.azure.ai.agents.models.RealtimeServerEventRateLimitsUpdated":"OpenAI.RealtimeServerEventRateLimitsUpdated","com.azure.ai.agents.models.RealtimeServerEventRateLimitsUpdatedRateLimits":"OpenAI.RealtimeServerEventRateLimitsUpdatedRateLimits","com.azure.ai.agents.models.RealtimeServerEventRateLimitsUpdatedRateLimitsName":"OpenAI.RealtimeServerEventRateLimitsUpdatedRateLimits.name.anonymous","com.azure.ai.agents.models.RealtimeServerEventRealtimeServerEventError":"OpenAI.RealtimeServerEventRealtimeServerEventError","com.azure.ai.agents.models.RealtimeServerEventResponseAudioDelta":"OpenAI.RealtimeServerEventResponseAudioDelta","com.azure.ai.agents.models.RealtimeServerEventResponseAudioDone":"OpenAI.RealtimeServerEventResponseAudioDone","com.azure.ai.agents.models.RealtimeServerEventResponseAudioTranscriptDelta":"OpenAI.RealtimeServerEventResponseAudioTranscriptDelta","com.azure.ai.agents.models.RealtimeServerEventResponseAudioTranscriptDone":"OpenAI.RealtimeServerEventResponseAudioTranscriptDone","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartAdded":"OpenAI.RealtimeServerEventResponseContentPartAdded","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartAddedPart":"OpenAI.RealtimeServerEventResponseContentPartAddedPart","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartAddedPartType":"OpenAI.RealtimeServerEventResponseContentPartAddedPart.type.anonymous","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartDone":"OpenAI.RealtimeServerEventResponseContentPartDone","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartDonePart":"OpenAI.RealtimeServerEventResponseContentPartDonePart","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartDonePartType":"OpenAI.RealtimeServerEventResponseContentPartDonePart.type.anonymous","com.azure.ai.agents.models.RealtimeServerEventResponseCreated":"OpenAI.RealtimeServerEventResponseCreated","com.azure.ai.agents.models.RealtimeServerEventResponseDone":"OpenAI.RealtimeServerEventResponseDone","com.azure.ai.agents.models.RealtimeServerEventResponseFunctionCallArgumentsDelta":"OpenAI.RealtimeServerEventResponseFunctionCallArgumentsDelta","com.azure.ai.agents.models.RealtimeServerEventResponseFunctionCallArgumentsDone":"OpenAI.RealtimeServerEventResponseFunctionCallArgumentsDone","com.azure.ai.agents.models.RealtimeServerEventResponseMCPCallArgumentsDelta":"OpenAI.RealtimeServerEventResponseMCPCallArgumentsDelta","com.azure.ai.agents.models.RealtimeServerEventResponseMCPCallArgumentsDone":"OpenAI.RealtimeServerEventResponseMCPCallArgumentsDone","com.azure.ai.agents.models.RealtimeServerEventResponseMCPCallCompleted":"OpenAI.RealtimeServerEventResponseMCPCallCompleted","com.azure.ai.agents.models.RealtimeServerEventResponseMCPCallFailed":"OpenAI.RealtimeServerEventResponseMCPCallFailed","com.azure.ai.agents.models.RealtimeServerEventResponseMCPCallInProgress":"OpenAI.RealtimeServerEventResponseMCPCallInProgress","com.azure.ai.agents.models.RealtimeServerEventResponseOutputItemAdded":"OpenAI.RealtimeServerEventResponseOutputItemAdded","com.azure.ai.agents.models.RealtimeServerEventResponseOutputItemDone":"OpenAI.RealtimeServerEventResponseOutputItemDone","com.azure.ai.agents.models.RealtimeServerEventResponseTextDelta":"OpenAI.RealtimeServerEventResponseTextDelta","com.azure.ai.agents.models.RealtimeServerEventResponseTextDone":"OpenAI.RealtimeServerEventResponseTextDone","com.azure.ai.agents.models.RealtimeServerEventSessionCreated":"OpenAI.RealtimeServerEventSessionCreated","com.azure.ai.agents.models.RealtimeServerEventSessionUpdated":"OpenAI.RealtimeServerEventSessionUpdated","com.azure.ai.agents.models.RealtimeServerEventType":"OpenAI.RealtimeServerEventType","com.azure.ai.agents.models.RealtimeSessionCreateRequestGA":"OpenAI.RealtimeSessionCreateRequestGA","com.azure.ai.agents.models.RealtimeSessionCreateRequestGAAudio":"OpenAI.RealtimeSessionCreateRequestGAAudio","com.azure.ai.agents.models.RealtimeSessionCreateRequestGAAudioInput":"OpenAI.RealtimeSessionCreateRequestGAAudioInput","com.azure.ai.agents.models.RealtimeSessionCreateRequestGAAudioInputNoiseReduction":"OpenAI.RealtimeSessionCreateRequestGAAudioInputNoiseReduction","com.azure.ai.agents.models.RealtimeSessionCreateRequestGAAudioOutput":"OpenAI.RealtimeSessionCreateRequestGAAudioOutput","com.azure.ai.agents.models.RealtimeSessionCreateRequestGAAudioOutputVoice":"OpenAI.RealtimeSessionCreateRequestGAAudioOutput.voice.anonymous","com.azure.ai.agents.models.RealtimeSessionCreateRequestGATracing":"OpenAI.RealtimeSessionCreateRequestGATracing","com.azure.ai.agents.models.RealtimeSessionCreateRequestUnion":"OpenAI.RealtimeSessionCreateRequestUnion","com.azure.ai.agents.models.RealtimeSessionCreateRequestUnionType":"OpenAI.RealtimeSessionCreateRequestUnionType","com.azure.ai.agents.models.RealtimeTranscriptionSessionCreateRequestGA":"OpenAI.RealtimeTranscriptionSessionCreateRequestGA","com.azure.ai.agents.models.RealtimeTranscriptionSessionCreateRequestGAAudio":"OpenAI.RealtimeTranscriptionSessionCreateRequestGAAudio","com.azure.ai.agents.models.RealtimeTranscriptionSessionCreateRequestGAAudioInput":"OpenAI.RealtimeTranscriptionSessionCreateRequestGAAudioInput","com.azure.ai.agents.models.RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction":"OpenAI.RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction","com.azure.ai.agents.models.RealtimeTurnDetection":"OpenAI.RealtimeTurnDetection","com.azure.ai.agents.models.RealtimeTurnDetectionSemanticVad":"OpenAI.RealtimeTurnDetectionSemanticVad","com.azure.ai.agents.models.RealtimeTurnDetectionServerVad":"OpenAI.RealtimeTurnDetectionServerVad","com.azure.ai.agents.models.RealtimeTurnDetectionType":"OpenAI.RealtimeTurnDetectionType","com.azure.ai.agents.models.ReminderPreviewToolboxTool":"Azure.AI.Projects.ReminderPreviewToolboxTool","com.azure.ai.agents.models.ResponseFormatJsonSchemaInner":"OpenAI.ResponseFormatJsonSchemaSchema","com.azure.ai.agents.models.ResponsePromptVariables":"OpenAI.ResponsePromptVariables","com.azure.ai.agents.models.ResponseUsageInputTokensDetails":"OpenAI.ResponseUsageInputTokensDetails","com.azure.ai.agents.models.ResponseUsageOutputTokensDetails":"OpenAI.ResponseUsageOutputTokensDetails","com.azure.ai.agents.models.ResponsesProtocolConfiguration":"Azure.AI.Projects.ResponsesProtocolConfiguration","com.azure.ai.agents.models.RoutingConfiguration":"Azure.AI.Projects.RoutingConfiguration","com.azure.ai.agents.models.RoutingTraceEntry":"Azure.AI.Projects.RoutingTraceEntry","com.azure.ai.agents.models.SearchContentType":"OpenAI.SearchContentType","com.azure.ai.agents.models.SearchContextSize":"SearchContextSizeExpandable","com.azure.ai.agents.models.SessionAffinityConfiguration":"Azure.AI.Projects.SessionAffinityConfiguration","com.azure.ai.agents.models.SessionAffinityDecision":"Azure.AI.Projects.SessionAffinityDecision","com.azure.ai.agents.models.SessionAffinityDetails":"Azure.AI.Projects.SessionAffinityDetails","com.azure.ai.agents.models.SessionAffinityMode":"Azure.AI.Projects.SessionAffinityMode","com.azure.ai.agents.models.SessionAffinityRequestMode":"Azure.AI.Projects.SessionAffinityRequestMode","com.azure.ai.agents.models.SessionAffinitySource":"Azure.AI.Projects.SessionAffinitySource","com.azure.ai.agents.models.SessionConfiguration":"Azure.AI.Projects.SessionConfiguration","com.azure.ai.agents.models.SessionDirectoryEntry":"Azure.AI.Projects.SessionDirectoryEntry","com.azure.ai.agents.models.SessionFileWriteResult":"Azure.AI.Projects.SessionFileWriteResponse","com.azure.ai.agents.models.SessionLogEvent":"Azure.AI.Projects.SessionLogEvent","com.azure.ai.agents.models.SessionLogEventType":"Azure.AI.Projects.SessionLogEventType","com.azure.ai.agents.models.SharepointGroundingToolCall":"Azure.AI.Projects.SharepointGroundingToolCall","com.azure.ai.agents.models.SharepointGroundingToolCallOutput":"Azure.AI.Projects.SharepointGroundingToolCallOutput","com.azure.ai.agents.models.SharepointGroundingToolParameters":"Azure.AI.Projects.SharepointGroundingToolParameters","com.azure.ai.agents.models.SharepointPreviewTool":"Azure.AI.Projects.SharepointPreviewTool","com.azure.ai.agents.models.ShellToolboxTool":"Azure.AI.Projects.ShellToolboxTool","com.azure.ai.agents.models.SipTelephonyTransferDestination":"Azure.AI.Projects.SipTelephonyTransferDestination","com.azure.ai.agents.models.SkillReferenceParameter":"OpenAI.SkillReferenceParam","com.azure.ai.agents.models.StructuredInputDefinition":"Azure.AI.Projects.StructuredInputDefinition","com.azure.ai.agents.models.StructuredOutputDefinition":"Azure.AI.Projects.StructuredOutputDefinition","com.azure.ai.agents.models.TeamsPhoneExtensionTelephonyBinding":"Azure.AI.Projects.TeamsPhoneExtensionTelephonyBinding","com.azure.ai.agents.models.TeamsPhoneExtensionTelephonyBindingListItem":"Azure.AI.Projects.TeamsPhoneExtensionTelephonyBindingListItem","com.azure.ai.agents.models.TeamsTelephonyTransferDestination":"Azure.AI.Projects.TeamsTelephonyTransferDestination","com.azure.ai.agents.models.TelemetryConfig":"Azure.AI.Projects.TelemetryConfig","com.azure.ai.agents.models.TelemetryDataKind":"Azure.AI.Projects.TelemetryDataKind","com.azure.ai.agents.models.TelemetryEndpoint":"Azure.AI.Projects.TelemetryEndpoint","com.azure.ai.agents.models.TelemetryEndpointAuth":"Azure.AI.Projects.TelemetryEndpointAuth","com.azure.ai.agents.models.TelemetryEndpointAuthType":"Azure.AI.Projects.TelemetryEndpointAuthType","com.azure.ai.agents.models.TelemetryEndpointKind":"Azure.AI.Projects.TelemetryEndpointKind","com.azure.ai.agents.models.TelemetryTransportProtocol":"Azure.AI.Projects.TelemetryTransportProtocol","com.azure.ai.agents.models.TelephonyBinding":"Azure.AI.Projects.TelephonyBinding","com.azure.ai.agents.models.TelephonyBindingListItem":"Azure.AI.Projects.TelephonyBindingListItem","com.azure.ai.agents.models.TelephonyBindingStatus":"Azure.AI.Projects.TelephonyBindingStatus","com.azure.ai.agents.models.TelephonyCallDurationBasis":"Azure.AI.Projects.TelephonyCallDurationBasis","com.azure.ai.agents.models.TelephonyCallJob":"Azure.AI.Projects.TelephonyCallJob","com.azure.ai.agents.models.TelephonyCallJobCancellation":"Azure.AI.Projects.TelephonyCallJobCancellation","com.azure.ai.agents.models.TelephonyCallJobSchedule":"Azure.AI.Projects.TelephonyCallJobSchedule","com.azure.ai.agents.models.TelephonyCallJobStatus":"Azure.AI.Projects.TelephonyCallJobStatus","com.azure.ai.agents.models.TelephonyCallLifecycleEvent":"Azure.AI.Projects.TelephonyCallLifecycleEvent","com.azure.ai.agents.models.TelephonyCallLifecycleEventName":"Azure.AI.Projects.TelephonyCallLifecycleEventName","com.azure.ai.agents.models.TelephonyCallLifecycleEventOutcome":"Azure.AI.Projects.TelephonyCallLifecycleEventOutcome","com.azure.ai.agents.models.TelephonyCallLifecycleEventSource":"Azure.AI.Projects.TelephonyCallLifecycleEventSource","com.azure.ai.agents.models.TelephonyCallPhase":"Azure.AI.Projects.TelephonyCallPhase","com.azure.ai.agents.models.TelephonyCallRecord":"Azure.AI.Projects.TelephonyCallRecord","com.azure.ai.agents.models.TelephonyCallStatus":"Azure.AI.Projects.TelephonyCallStatus","com.azure.ai.agents.models.TelephonyCallSummary":"Azure.AI.Projects.TelephonyCallSummary","com.azure.ai.agents.models.TelephonyCallTimestampSource":"Azure.AI.Projects.TelephonyCallTimestampSource","com.azure.ai.agents.models.TelephonyCallTiming":"Azure.AI.Projects.TelephonyCallTiming","com.azure.ai.agents.models.TelephonyCallTrace":"Azure.AI.Projects.TelephonyCallTrace","com.azure.ai.agents.models.TelephonyCallTraceMode":"Azure.AI.Projects.TelephonyCallTraceMode","com.azure.ai.agents.models.TelephonyCallTraceStatus":"Azure.AI.Projects.TelephonyCallTraceStatus","com.azure.ai.agents.models.TelephonyCampaign":"Azure.AI.Projects.TelephonyCampaign","com.azure.ai.agents.models.TelephonyCampaignCallJobCounts":"Azure.AI.Projects.TelephonyCampaignCallJobCounts","com.azure.ai.agents.models.TelephonyCampaignConfigurationStatus":"Azure.AI.Projects.TelephonyCampaignConfigurationStatus","com.azure.ai.agents.models.TelephonyCampaignDuplicateHandling":"Azure.AI.Projects.TelephonyCampaignDuplicateHandling","com.azure.ai.agents.models.TelephonyCampaignExecutionStatus":"Azure.AI.Projects.TelephonyCampaignExecutionStatus","com.azure.ai.agents.models.TelephonyCampaignRecipientImport":"Azure.AI.Projects.TelephonyCampaignRecipientImport","com.azure.ai.agents.models.TelephonyCampaignRecipientImportFormat":"Azure.AI.Projects.TelephonyCampaignRecipientImportFormat","com.azure.ai.agents.models.TelephonyCampaignRecipientImportSource":"Azure.AI.Projects.TelephonyCampaignRecipientImportSource","com.azure.ai.agents.models.TelephonyCampaignRecipientImportStatus":"Azure.AI.Projects.TelephonyCampaignRecipientImportStatus","com.azure.ai.agents.models.TelephonyCampaignRecipientMapping":"Azure.AI.Projects.TelephonyCampaignRecipientMapping","com.azure.ai.agents.models.TelephonyCampaignRecipientMappingRequest":"Azure.AI.Projects.TelephonyCampaignRecipientMappingRequest","com.azure.ai.agents.models.TelephonyCampaignSchedule":"Azure.AI.Projects.TelephonyCampaignSchedule","com.azure.ai.agents.models.TelephonyCampaignScheduleType":"Azure.AI.Projects.TelephonyCampaignScheduleType","com.azure.ai.agents.models.TelephonyOperation":"Azure.AI.Projects.TelephonyOperation","com.azure.ai.agents.models.TelephonyOperationResource":"Azure.AI.Projects.TelephonyOperationResource","com.azure.ai.agents.models.TelephonyOperationStatus":"Azure.AI.Projects.TelephonyOperationStatus","com.azure.ai.agents.models.TelephonyOutboundDestination":"Azure.AI.Projects.TelephonyOutboundDestination","com.azure.ai.agents.models.TelephonyOutboundDestinationType":"Azure.AI.Projects.TelephonyOutboundDestinationType","com.azure.ai.agents.models.TelephonyOutboundFixedIntervalRetryPolicy":"Azure.AI.Projects.TelephonyOutboundFixedIntervalRetryPolicy","com.azure.ai.agents.models.TelephonyOutboundFixedIntervalRetryPolicyResponse":"Azure.AI.Projects.TelephonyOutboundFixedIntervalRetryPolicyResponse","com.azure.ai.agents.models.TelephonyOutboundRetryPolicy":"Azure.AI.Projects.TelephonyOutboundRetryPolicy","com.azure.ai.agents.models.TelephonyOutboundRetryPolicyResponse":"Azure.AI.Projects.TelephonyOutboundRetryPolicyResponse","com.azure.ai.agents.models.TelephonyOutboundRetryPolicyType":"Azure.AI.Projects.TelephonyOutboundRetryPolicyType","com.azure.ai.agents.models.TelephonyProvider":"Azure.AI.Projects.TelephonyProvider","com.azure.ai.agents.models.TelephonyTransferDestination":"Azure.AI.Projects.TelephonyTransferDestination","com.azure.ai.agents.models.TelephonyTransferDestinationKind":"Azure.AI.Projects.TelephonyTransferDestinationKind","com.azure.ai.agents.models.TelephonyTransferTarget":"Azure.AI.Projects.TelephonyTransferTarget","com.azure.ai.agents.models.TelephonyTransferTargets":"Azure.AI.Projects.TelephonyTransferTargets","com.azure.ai.agents.models.TextResponseFormatConfiguration":"OpenAI.TextResponseFormatConfiguration","com.azure.ai.agents.models.TextResponseFormatConfigurationResponseFormatJsonObject":"OpenAI.TextResponseFormatConfigurationResponseFormatJsonObject","com.azure.ai.agents.models.TextResponseFormatConfigurationResponseFormatText":"OpenAI.TextResponseFormatConfigurationResponseFormatText","com.azure.ai.agents.models.TextResponseFormatConfigurationType":"OpenAI.TextResponseFormatConfigurationType","com.azure.ai.agents.models.TextResponseFormatJsonSchema":"OpenAI.TextResponseFormatJsonSchema","com.azure.ai.agents.models.TokenLimits":"OpenAI.TokenLimits","com.azure.ai.agents.models.Tool":"OpenAI.Tool","com.azure.ai.agents.models.ToolCallStatus":"Azure.AI.Projects.ToolCallStatus","com.azure.ai.agents.models.ToolChoiceFunction":"OpenAI.ToolChoiceFunction","com.azure.ai.agents.models.ToolChoiceMCP":"OpenAI.ToolChoiceMCP","com.azure.ai.agents.models.ToolChoiceOptions":"OpenAI.ToolChoiceOptions","com.azure.ai.agents.models.ToolChoiceParam":"OpenAI.ToolChoiceParam","com.azure.ai.agents.models.ToolChoiceParamType":"OpenAI.ToolChoiceParamType","com.azure.ai.agents.models.ToolConfig":"Azure.AI.Projects.ToolConfig","com.azure.ai.agents.models.ToolProjectConnection":"Azure.AI.Projects.ToolProjectConnection","com.azure.ai.agents.models.ToolSearchExecutionType":"OpenAI.ToolSearchExecutionType","com.azure.ai.agents.models.ToolSearchTool":"OpenAI.ToolSearchToolParam","com.azure.ai.agents.models.ToolSearchToolboxTool":"Azure.AI.Projects.ToolSearchToolboxTool","com.azure.ai.agents.models.ToolType":"OpenAI.ToolType","com.azure.ai.agents.models.ToolboxDetails":"Azure.AI.Projects.ToolboxObject","com.azure.ai.agents.models.ToolboxPolicies":"Azure.AI.Projects.ToolboxPolicies","com.azure.ai.agents.models.ToolboxSearchPreviewToolboxTool":"Azure.AI.Projects.ToolboxSearchPreviewToolboxTool","com.azure.ai.agents.models.ToolboxShellContainerAutoEnvironment":"Azure.AI.Projects.ToolboxShellContainerAutoEnvironment","com.azure.ai.agents.models.ToolboxShellContainerReferenceEnvironment":"Azure.AI.Projects.ToolboxShellContainerReferenceEnvironment","com.azure.ai.agents.models.ToolboxShellEnvironment":"Azure.AI.Projects.ToolboxShellEnvironment","com.azure.ai.agents.models.ToolboxShellNetworkPolicy":"Azure.AI.Projects.ToolboxShellNetworkPolicy","com.azure.ai.agents.models.ToolboxShellNetworkPolicyDisabled":"Azure.AI.Projects.ToolboxShellNetworkPolicyDisabled","com.azure.ai.agents.models.ToolboxSkill":"Azure.AI.Projects.ToolboxSkill","com.azure.ai.agents.models.ToolboxSkillReference":"Azure.AI.Projects.ToolboxSkillReference","com.azure.ai.agents.models.ToolboxTool":"Azure.AI.Projects.ToolboxTool","com.azure.ai.agents.models.ToolboxToolType":"Azure.AI.Projects.ToolboxToolType","com.azure.ai.agents.models.ToolboxVersionDetails":"Azure.AI.Projects.ToolboxVersionObject","com.azure.ai.agents.models.TranscriptTextUsageDuration":"OpenAI.TranscriptTextUsageDuration","com.azure.ai.agents.models.TranscriptTextUsageTokens":"OpenAI.TranscriptTextUsageTokens","com.azure.ai.agents.models.TranscriptTextUsageTokensInputTokenDetails":"OpenAI.TranscriptTextUsageTokensInputTokenDetails","com.azure.ai.agents.models.TranscriptionLanguage":"OpenAI.TranscriptionLanguage","com.azure.ai.agents.models.TwilioTelephonyBinding":"Azure.AI.Projects.TwilioTelephonyBinding","com.azure.ai.agents.models.TwilioTelephonyBindingListItem":"Azure.AI.Projects.TwilioTelephonyBindingListItem","com.azure.ai.agents.models.UpdateAgentDetailsOptions":"Azure.AI.Projects.patchAgentObject.Request.anonymous","com.azure.ai.agents.models.UpdateTelephonyBindingRequest":"Azure.AI.Projects.UpdateTelephonyBindingRequest","com.azure.ai.agents.models.UserProfileMemoryItem":"Azure.AI.Projects.UserProfileMemoryItem","com.azure.ai.agents.models.VersionIndicator":"Azure.AI.Projects.VersionIndicator","com.azure.ai.agents.models.VersionIndicatorType":"Azure.AI.Projects.VersionIndicatorType","com.azure.ai.agents.models.VersionRefIndicator":"Azure.AI.Projects.VersionRefIndicator","com.azure.ai.agents.models.VersionSelectionRule":"Azure.AI.Projects.VersionSelectionRule","com.azure.ai.agents.models.VersionSelector":"Azure.AI.Projects.VersionSelector","com.azure.ai.agents.models.VersionSelectorType":"Azure.AI.Projects.VersionSelectorType","com.azure.ai.agents.models.VoiceAgentAnimationConfig":"Azure.AI.Projects.VoiceAgentAnimationConfig","com.azure.ai.agents.models.VoiceAgentAnimationOutputType":"Azure.AI.Projects.VoiceAgentAnimationOutputType","com.azure.ai.agents.models.VoiceAgentAudioConfig":"Azure.AI.Projects.VoiceAgentAudioConfig","com.azure.ai.agents.models.VoiceAgentAudioInputConfig":"Azure.AI.Projects.VoiceAgentAudioInputConfig","com.azure.ai.agents.models.VoiceAgentAudioInputConfigTranscriptionDelay":"Azure.AI.Projects.VoiceAgentAudioInputConfig.transcription.delay.anonymous","com.azure.ai.agents.models.VoiceAgentAudioOutputConfig":"Azure.AI.Projects.VoiceAgentAudioOutputConfig","com.azure.ai.agents.models.VoiceAgentAudioTimestampType":"Azure.AI.Projects.VoiceAgentAudioTimestampType","com.azure.ai.agents.models.VoiceAgentAvatarConfig":"Azure.AI.Projects.VoiceAgentAvatarConfig","com.azure.ai.agents.models.VoiceAgentAvatarIceServer":"Azure.AI.Projects.VoiceAgentAvatarIceServer","com.azure.ai.agents.models.VoiceAgentAvatarOutputProtocol":"Azure.AI.Projects.VoiceAgentAvatarOutputProtocol","com.azure.ai.agents.models.VoiceAgentAvatarScene":"Azure.AI.Projects.VoiceAgentAvatarScene","com.azure.ai.agents.models.VoiceAgentAvatarType":"Azure.AI.Projects.VoiceAgentAvatarType","com.azure.ai.agents.models.VoiceAgentAvatarVideoBackground":"Azure.AI.Projects.VoiceAgentAvatarVideoBackground","com.azure.ai.agents.models.VoiceAgentAvatarVideoCrop":"Azure.AI.Projects.VoiceAgentAvatarVideoCrop","com.azure.ai.agents.models.VoiceAgentAvatarVideoParams":"Azure.AI.Projects.VoiceAgentAvatarVideoParams","com.azure.ai.agents.models.VoiceAgentAvatarVideoResolution":"Azure.AI.Projects.VoiceAgentAvatarVideoResolution","com.azure.ai.agents.models.VoiceAgentAzureSemanticVadEnTurnDetection":"Azure.AI.Projects.VoiceAgentAzureSemanticVadEnTurnDetection","com.azure.ai.agents.models.VoiceAgentAzureSemanticVadMultilingualTurnDetection":"Azure.AI.Projects.VoiceAgentAzureSemanticVadMultilingualTurnDetection","com.azure.ai.agents.models.VoiceAgentAzureSemanticVadTurnDetection":"Azure.AI.Projects.VoiceAgentAzureSemanticVadTurnDetection","com.azure.ai.agents.models.VoiceAgentClientEventRtcCallSdpCreate":"Azure.AI.Projects.VoiceAgentClientEventRtcCallSdpCreate","com.azure.ai.agents.models.VoiceAgentClientEventSessionAvatarConnect":"Azure.AI.Projects.VoiceAgentClientEventSessionAvatarConnect","com.azure.ai.agents.models.VoiceAgentDefinition":"Azure.AI.Projects.VoiceAgentDefinition","com.azure.ai.agents.models.VoiceAgentEchoCancellation":"Azure.AI.Projects.VoiceAgentEchoCancellation","com.azure.ai.agents.models.VoiceAgentEchoCancellationReferenceSource":"Azure.AI.Projects.VoiceAgentEchoCancellationReferenceSource","com.azure.ai.agents.models.VoiceAgentEndConversationSystemTool":"Azure.AI.Projects.VoiceAgentEndConversationSystemTool","com.azure.ai.agents.models.VoiceAgentEndOfUtteranceDetection":"Azure.AI.Projects.VoiceAgentEndOfUtteranceDetection","com.azure.ai.agents.models.VoiceAgentEndOfUtteranceDetectionModel":"Azure.AI.Projects.VoiceAgentEndOfUtteranceDetectionModel","com.azure.ai.agents.models.VoiceAgentEndOfUtteranceThresholdLevel":"Azure.AI.Projects.VoiceAgentEndOfUtteranceThresholdLevel","com.azure.ai.agents.models.VoiceAgentFunctionTool":"Azure.AI.Projects.VoiceAgentFunctionTool","com.azure.ai.agents.models.VoiceAgentFunctionToolType":null,"com.azure.ai.agents.models.VoiceAgentGreetingConfig":"Azure.AI.Projects.VoiceAgentGreetingConfig","com.azure.ai.agents.models.VoiceAgentInputTranscription":"Azure.AI.Projects.VoiceAgentInputTranscription","com.azure.ai.agents.models.VoiceAgentInputTranscriptionModel":"Azure.AI.Projects.VoiceAgentInputTranscriptionModel","com.azure.ai.agents.models.VoiceAgentInterimResponseConfig":"Azure.AI.Projects.VoiceAgentInterimResponseConfig","com.azure.ai.agents.models.VoiceAgentInterimResponseTrigger":"Azure.AI.Projects.VoiceAgentInterimResponseTrigger","com.azure.ai.agents.models.VoiceAgentLlmGeneratedGreetingConfig":"Azure.AI.Projects.VoiceAgentLlmGeneratedGreetingConfig","com.azure.ai.agents.models.VoiceAgentLlmInterimResponseConfig":"Azure.AI.Projects.VoiceAgentLlmInterimResponseConfig","com.azure.ai.agents.models.VoiceAgentMcpTool":"Azure.AI.Projects.VoiceAgentMcpTool","com.azure.ai.agents.models.VoiceAgentNoiseReduction":"Azure.AI.Projects.VoiceAgentNoiseReduction","com.azure.ai.agents.models.VoiceAgentNoiseReductionType":"Azure.AI.Projects.VoiceAgentNoiseReductionType","com.azure.ai.agents.models.VoiceAgentRealtimeResponse":"Azure.AI.Projects.VoiceAgentRealtimeResponse","com.azure.ai.agents.models.VoiceAgentRealtimeResponseBase":"Azure.AI.Projects.VoiceAgentRealtimeResponseBase","com.azure.ai.agents.models.VoiceAgentResponseCreateParams":"Azure.AI.Projects.VoiceAgentResponseCreateParams","com.azure.ai.agents.models.VoiceAgentResponseCreateParamsConversation":"Azure.AI.Projects.VoiceAgentResponseCreateParams.conversation.anonymous","com.azure.ai.agents.models.VoiceAgentRtcCallErrorDetails":"Azure.AI.Projects.VoiceAgentRtcCallErrorDetails","com.azure.ai.agents.models.VoiceAgentSemanticVadTurnDetection":"Azure.AI.Projects.VoiceAgentSemanticVadTurnDetection","com.azure.ai.agents.models.VoiceAgentSemanticVadTurnDetectionEagerness":"Azure.AI.Projects.VoiceAgentSemanticVadTurnDetection.eagerness.anonymous","com.azure.ai.agents.models.VoiceAgentServerEventResponseAnimationBlendshapesDelta":"Azure.AI.Projects.VoiceAgentServerEventResponseAnimationBlendshapesDelta","com.azure.ai.agents.models.VoiceAgentServerEventResponseAnimationBlendshapesDone":"Azure.AI.Projects.VoiceAgentServerEventResponseAnimationBlendshapesDone","com.azure.ai.agents.models.VoiceAgentServerEventResponseAnimationVisemeDelta":"Azure.AI.Projects.VoiceAgentServerEventResponseAnimationVisemeDelta","com.azure.ai.agents.models.VoiceAgentServerEventResponseAnimationVisemeDone":"Azure.AI.Projects.VoiceAgentServerEventResponseAnimationVisemeDone","com.azure.ai.agents.models.VoiceAgentServerEventResponseAudioTimestampDelta":"Azure.AI.Projects.VoiceAgentServerEventResponseAudioTimestampDelta","com.azure.ai.agents.models.VoiceAgentServerEventResponseAudioTimestampDone":"Azure.AI.Projects.VoiceAgentServerEventResponseAudioTimestampDone","com.azure.ai.agents.models.VoiceAgentServerEventResponseVideoDelta":"Azure.AI.Projects.VoiceAgentServerEventResponseVideoDelta","com.azure.ai.agents.models.VoiceAgentServerEventRtcCallError":"Azure.AI.Projects.VoiceAgentServerEventRtcCallError","com.azure.ai.agents.models.VoiceAgentServerEventRtcCallSdpCreated":"Azure.AI.Projects.VoiceAgentServerEventRtcCallSdpCreated","com.azure.ai.agents.models.VoiceAgentServerEventSessionAvatarConnecting":"Azure.AI.Projects.VoiceAgentServerEventSessionAvatarConnecting","com.azure.ai.agents.models.VoiceAgentServerEventSessionAvatarSwitchToIdle":"Azure.AI.Projects.VoiceAgentServerEventSessionAvatarSwitchToIdle","com.azure.ai.agents.models.VoiceAgentServerEventSessionAvatarSwitchToSpeaking":"Azure.AI.Projects.VoiceAgentServerEventSessionAvatarSwitchToSpeaking","com.azure.ai.agents.models.VoiceAgentServerEventSessionSubagentAborted":"Azure.AI.Projects.VoiceAgentServerEventSessionSubagentAborted","com.azure.ai.agents.models.VoiceAgentServerEventSessionSubagentCompleted":"Azure.AI.Projects.VoiceAgentServerEventSessionSubagentCompleted","com.azure.ai.agents.models.VoiceAgentServerEventSessionSubagentStarted":"Azure.AI.Projects.VoiceAgentServerEventSessionSubagentStarted","com.azure.ai.agents.models.VoiceAgentServerEventWarning":"Azure.AI.Projects.VoiceAgentServerEventWarning","com.azure.ai.agents.models.VoiceAgentServerEventWarningDetails":"Azure.AI.Projects.VoiceAgentServerEventWarningDetails","com.azure.ai.agents.models.VoiceAgentServerVadTurnDetection":"Azure.AI.Projects.VoiceAgentServerVadTurnDetection","com.azure.ai.agents.models.VoiceAgentSessionAvatarConfig":"Azure.AI.Projects.VoiceAgentSessionAvatarConfig","com.azure.ai.agents.models.VoiceAgentSessionIncludeOption":"Azure.AI.Projects.VoiceAgentSessionIncludeOption","com.azure.ai.agents.models.VoiceAgentSessionResponseConfig":"Azure.AI.Projects.VoiceAgentSessionResponseConfig","com.azure.ai.agents.models.VoiceAgentSessionUpdateConfig":"Azure.AI.Projects.VoiceAgentSessionUpdateConfig","com.azure.ai.agents.models.VoiceAgentStaticInterimResponseConfig":"Azure.AI.Projects.VoiceAgentStaticInterimResponseConfig","com.azure.ai.agents.models.VoiceAgentSubagent":"Azure.AI.Projects.VoiceAgentSubagent","com.azure.ai.agents.models.VoiceAgentSubagentAbortReason":"Azure.AI.Projects.VoiceAgentSubagentAbortReason","com.azure.ai.agents.models.VoiceAgentSubagentConfig":"Azure.AI.Projects.VoiceAgentSubagentConfig","com.azure.ai.agents.models.VoiceAgentSubagentResponsePolicy":"Azure.AI.Projects.VoiceAgentSubagentResponsePolicy","com.azure.ai.agents.models.VoiceAgentSystemTool":"Azure.AI.Projects.VoiceAgentSystemTool","com.azure.ai.agents.models.VoiceAgentSystemToolName":"Azure.AI.Projects.VoiceAgentSystemToolName","com.azure.ai.agents.models.VoiceAgentTemplateGreetingConfig":"Azure.AI.Projects.VoiceAgentTemplateGreetingConfig","com.azure.ai.agents.models.VoiceAgentTool":"Azure.AI.Projects.VoiceAgentTool","com.azure.ai.agents.models.VoiceAgentToolResponseScheduling":"Azure.AI.Projects.VoiceAgentToolResponseScheduling","com.azure.ai.agents.models.VoiceAgentToolboxTool":"Azure.AI.Projects.VoiceAgentToolboxTool","com.azure.ai.agents.models.VoiceAgentTranscriptionPhrase":"Azure.AI.Projects.VoiceAgentTranscriptionPhrase","com.azure.ai.agents.models.VoiceAgentTranscriptionWord":"Azure.AI.Projects.VoiceAgentTranscriptionWord","com.azure.ai.agents.models.VoiceAgentTransport":"Azure.AI.Projects.VoiceAgentTransport","com.azure.ai.agents.models.VoiceAgentTurnDetectionConfig":"Azure.AI.Projects.VoiceAgentTurnDetectionConfig","com.azure.ai.agents.models.VoiceAgentTurnDetectionType":"Azure.AI.Projects.VoiceAgentTurnDetectionType","com.azure.ai.agents.models.VoiceAudioCodec":"Azure.AI.Projects.VoiceAudioCodec","com.azure.ai.agents.models.VoiceAudioContainerFormat":"Azure.AI.Projects.VoiceAudioContainerFormat","com.azure.ai.agents.models.VoiceAudioRole":"Azure.AI.Projects.VoiceAudioRole","com.azure.ai.agents.models.VoiceConversation":"Azure.AI.Projects.VoiceConversation","com.azure.ai.agents.models.VoiceConversationEngine":"Azure.AI.Projects.VoiceConversationEngine","com.azure.ai.agents.models.VoiceConversationStatus":"Azure.AI.Projects.VoiceConversationStatus","com.azure.ai.agents.models.VoiceGeneratedItemAudioResponse":"Azure.AI.Projects.VoiceGeneratedItemAudioResponse","com.azure.ai.agents.models.VoiceHostedAgentConversationEngine":"Azure.AI.Projects.VoiceHostedAgentConversationEngine","com.azure.ai.agents.models.VoiceIdsShared":"OpenAI.VoiceIdsShared","com.azure.ai.agents.models.VoiceItemAudioResponse":"Azure.AI.Projects.VoiceItemAudioResponse","com.azure.ai.agents.models.VoiceModelType":"Azure.AI.Projects.VoiceModelType","com.azure.ai.agents.models.VoiceOutputModality":"Azure.AI.Projects.VoiceOutputModality","com.azure.ai.agents.models.VoiceRecordingChannelLayout":"Azure.AI.Projects.VoiceRecordingChannelLayout","com.azure.ai.agents.models.VoiceRecordingResponse":"Azure.AI.Projects.VoiceRecordingResponse","com.azure.ai.agents.models.VoiceResponse":"Azure.AI.Projects.VoiceResponse","com.azure.ai.agents.models.VoiceResponseAudio":"Azure.AI.Projects.VoiceResponseAudio","com.azure.ai.agents.models.VoiceResponseAudioOutput":"Azure.AI.Projects.VoiceResponseAudioOutput","com.azure.ai.agents.models.VoiceResponseBase":"Azure.AI.Projects.VoiceResponseBase","com.azure.ai.agents.models.VoiceResponseBaseObject":null,"com.azure.ai.agents.models.VoiceResponseBaseObject1":null,"com.azure.ai.agents.models.VoiceResponseBaseOutputModality":"Azure.AI.Projects.VoiceResponseBase.output_modality.anonymous","com.azure.ai.agents.models.VoiceResponseBaseStatus":"Azure.AI.Projects.VoiceResponseBase.status.anonymous","com.azure.ai.agents.models.VoiceType":"Azure.AI.Projects.VoiceType","com.azure.ai.agents.models.WebIqPreviewTool":"Azure.AI.Projects.WebIQPreviewTool","com.azure.ai.agents.models.WebIqPreviewToolboxTool":"Azure.AI.Projects.WebIQPreviewToolboxTool","com.azure.ai.agents.models.WebSearchApproximateLocation":"OpenAI.WebSearchApproximateLocation","com.azure.ai.agents.models.WebSearchConfiguration":"Azure.AI.Projects.WebSearchConfiguration","com.azure.ai.agents.models.WebSearchPreviewTool":"OpenAI.WebSearchPreviewTool","com.azure.ai.agents.models.WebSearchTool":"OpenAI.WebSearchTool","com.azure.ai.agents.models.WebSearchToolFilters":"OpenAI.WebSearchToolFilters","com.azure.ai.agents.models.WebSearchToolSearchContextSize":"WebSearchToolSearchContextSizeExpandable","com.azure.ai.agents.models.WebSearchToolboxTool":"Azure.AI.Projects.WebSearchToolboxTool","com.azure.ai.agents.models.WorkIqPreviewTool":"Azure.AI.Projects.WorkIQPreviewTool","com.azure.ai.agents.models.WorkIqPreviewToolboxTool":"Azure.AI.Projects.WorkIQPreviewToolboxTool","com.azure.ai.agents.models.WorkflowAgentDefinition":"Azure.AI.Projects.WorkflowAgentDefinition"},"generatedFiles":["src/main/java/com/azure/ai/agents/AgentTelephonyAsyncClient.java","src/main/java/com/azure/ai/agents/AgentTelephonyClient.java","src/main/java/com/azure/ai/agents/AgentsAsyncClient.java","src/main/java/com/azure/ai/agents/AgentsClient.java","src/main/java/com/azure/ai/agents/AgentsClientBuilder.java","src/main/java/com/azure/ai/agents/AgentsServiceVersion.java","src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsAsyncClient.java","src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsClient.java","src/main/java/com/azure/ai/agents/BetaAgentsAsyncClient.java","src/main/java/com/azure/ai/agents/BetaAgentsClient.java","src/main/java/com/azure/ai/agents/BetaMemoryStoresAsyncClient.java","src/main/java/com/azure/ai/agents/BetaMemoryStoresClient.java","src/main/java/com/azure/ai/agents/ToolboxesAsyncClient.java","src/main/java/com/azure/ai/agents/ToolboxesClient.java","src/main/java/com/azure/ai/agents/implementation/AgentTelephoniesImpl.java","src/main/java/com/azure/ai/agents/implementation/AgentsClientImpl.java","src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java","src/main/java/com/azure/ai/agents/implementation/BetaAgentEndpointConversationsImpl.java","src/main/java/com/azure/ai/agents/implementation/BetaAgentsImpl.java","src/main/java/com/azure/ai/agents/implementation/BetaMemoryStoresImpl.java","src/main/java/com/azure/ai/agents/implementation/JsonMergePatchHelper.java","src/main/java/com/azure/ai/agents/implementation/MultipartFormDataHelper.java","src/main/java/com/azure/ai/agents/implementation/OperationLocationPollingStrategy.java","src/main/java/com/azure/ai/agents/implementation/PollingUtils.java","src/main/java/com/azure/ai/agents/implementation/SyncOperationLocationPollingStrategy.java","src/main/java/com/azure/ai/agents/implementation/ToolboxesImpl.java","src/main/java/com/azure/ai/agents/implementation/models/AgentDefinitionOptInKeys.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentFromCodeContent.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentFromManifestRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentOptions.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentVersionFromManifestRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentVersionRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateMemoryRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateMemoryStoreRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateSessionRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateToolboxVersionRequest.java","src/main/java/com/azure/ai/agents/implementation/models/FoundryFeaturesOptInKeys.java","src/main/java/com/azure/ai/agents/implementation/models/GetMicrosoft365AppPackageRequest.java","src/main/java/com/azure/ai/agents/implementation/models/ListMemoriesRequest.java","src/main/java/com/azure/ai/agents/implementation/models/PublishAgentToMicrosoft365Request.java","src/main/java/com/azure/ai/agents/implementation/models/ReplaceTelephonyTransferTargetsRequest.java","src/main/java/com/azure/ai/agents/implementation/models/SearchMemoriesRequest.java","src/main/java/com/azure/ai/agents/implementation/models/TransferTelephonyCallRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateAgentFromManifestRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateAgentRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateMemoriesRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateMemoryRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateMemoryStoreRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateToolboxInput.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateToolboxRequest.java","src/main/java/com/azure/ai/agents/implementation/models/package-info.java","src/main/java/com/azure/ai/agents/implementation/package-info.java","src/main/java/com/azure/ai/agents/models/A2APreviewTool.java","src/main/java/com/azure/ai/agents/models/A2APreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/A2AProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/A2AProtocolVersion.java","src/main/java/com/azure/ai/agents/models/A2ATool.java","src/main/java/com/azure/ai/agents/models/A2AToolCall.java","src/main/java/com/azure/ai/agents/models/A2AToolCallOutput.java","src/main/java/com/azure/ai/agents/models/A2AToolboxTool.java","src/main/java/com/azure/ai/agents/models/AISearchIndexResource.java","src/main/java/com/azure/ai/agents/models/ActivityProtocolAccessBoundary.java","src/main/java/com/azure/ai/agents/models/ActivityProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/AgentBlueprintReference.java","src/main/java/com/azure/ai/agents/models/AgentBlueprintReferenceType.java","src/main/java/com/azure/ai/agents/models/AgentCard.java","src/main/java/com/azure/ai/agents/models/AgentCardSkill.java","src/main/java/com/azure/ai/agents/models/AgentDefinition.java","src/main/java/com/azure/ai/agents/models/AgentDetails.java","src/main/java/com/azure/ai/agents/models/AgentDetailsVersions.java","src/main/java/com/azure/ai/agents/models/AgentEndpointAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/AgentEndpointAuthorizationSchemeType.java","src/main/java/com/azure/ai/agents/models/AgentEndpointConfig.java","src/main/java/com/azure/ai/agents/models/AgentEndpointProtocol.java","src/main/java/com/azure/ai/agents/models/AgentIdentity.java","src/main/java/com/azure/ai/agents/models/AgentIdentityStatus.java","src/main/java/com/azure/ai/agents/models/AgentKind.java","src/main/java/com/azure/ai/agents/models/AgentObjectType.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationCandidate.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetCriterion.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetInput.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetInputType.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetItem.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationEvaluatorRef.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationInlineDatasetInput.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJob.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobInputs.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobListItem.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobProgress.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobResult.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationOptions.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationReferenceDatasetInput.java","src/main/java/com/azure/ai/agents/models/AgentReference.java","src/main/java/com/azure/ai/agents/models/AgentSessionResource.java","src/main/java/com/azure/ai/agents/models/AgentSessionStatus.java","src/main/java/com/azure/ai/agents/models/AgentState.java","src/main/java/com/azure/ai/agents/models/AgentStateSource.java","src/main/java/com/azure/ai/agents/models/AgentVersionDetails.java","src/main/java/com/azure/ai/agents/models/AgentVersionStatus.java","src/main/java/com/azure/ai/agents/models/ApiError.java","src/main/java/com/azure/ai/agents/models/ApplyPatchToolParameter.java","src/main/java/com/azure/ai/agents/models/ApproximateLocation.java","src/main/java/com/azure/ai/agents/models/AudioTranscription.java","src/main/java/com/azure/ai/agents/models/AudioTranscriptionModel.java","src/main/java/com/azure/ai/agents/models/AutoCodeInterpreterToolParameter.java","src/main/java/com/azure/ai/agents/models/AzureAISearchQueryType.java","src/main/java/com/azure/ai/agents/models/AzureAISearchTool.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolCall.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolCallOutput.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolResource.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/AzureCreateResponseDetails.java","src/main/java/com/azure/ai/agents/models/AzureCreateResponseOptions.java","src/main/java/com/azure/ai/agents/models/AzureFunctionBinding.java","src/main/java/com/azure/ai/agents/models/AzureFunctionDefinition.java","src/main/java/com/azure/ai/agents/models/AzureFunctionDefinitionDetails.java","src/main/java/com/azure/ai/agents/models/AzureFunctionStorageQueue.java","src/main/java/com/azure/ai/agents/models/AzureFunctionTool.java","src/main/java/com/azure/ai/agents/models/AzureFunctionToolCall.java","src/main/java/com/azure/ai/agents/models/AzureFunctionToolCallOutput.java","src/main/java/com/azure/ai/agents/models/AzureUserSecurityContext.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchConfiguration.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchPreviewTool.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchToolCall.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchToolCallOutput.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchToolParameters.java","src/main/java/com/azure/ai/agents/models/BingGroundingSearchConfiguration.java","src/main/java/com/azure/ai/agents/models/BingGroundingSearchToolParameters.java","src/main/java/com/azure/ai/agents/models/BingGroundingTool.java","src/main/java/com/azure/ai/agents/models/BingGroundingToolCall.java","src/main/java/com/azure/ai/agents/models/BingGroundingToolCallOutput.java","src/main/java/com/azure/ai/agents/models/BotServiceAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/BotServiceRbacAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/BotServiceTenantAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationPreviewTool.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolCall.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolCallOutput.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolConnectionParameters.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolParameters.java","src/main/java/com/azure/ai/agents/models/CallableToolAllowedCaller.java","src/main/java/com/azure/ai/agents/models/CaptureStructuredOutputsTool.java","src/main/java/com/azure/ai/agents/models/ChatSummaryMemoryItem.java","src/main/java/com/azure/ai/agents/models/CodeConfiguration.java","src/main/java/com/azure/ai/agents/models/CodeDependencyResolution.java","src/main/java/com/azure/ai/agents/models/CodeFileDetails.java","src/main/java/com/azure/ai/agents/models/CodeInterpreterTool.java","src/main/java/com/azure/ai/agents/models/CodeInterpreterToolboxTool.java","src/main/java/com/azure/ai/agents/models/ComputerEnvironment.java","src/main/java/com/azure/ai/agents/models/ComputerTool.java","src/main/java/com/azure/ai/agents/models/ComputerUsePreviewTool.java","src/main/java/com/azure/ai/agents/models/ContainerAutoParameter.java","src/main/java/com/azure/ai/agents/models/ContainerConfiguration.java","src/main/java/com/azure/ai/agents/models/ContainerMemoryLimit.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyAllowlistParameter.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyDisabledParameter.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyDomainSecretParameter.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyParamType.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyParameter.java","src/main/java/com/azure/ai/agents/models/ContainerSkill.java","src/main/java/com/azure/ai/agents/models/ContainerSkillType.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionFromCodeContent.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionFromCodeMetadata.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionInput.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionOptions.java","src/main/java/com/azure/ai/agents/models/CreateTeamsPhoneExtensionTelephonyBindingRequest.java","src/main/java/com/azure/ai/agents/models/CreateTelephonyBindingRequest.java","src/main/java/com/azure/ai/agents/models/CreateTelephonyCallJobRequest.java","src/main/java/com/azure/ai/agents/models/CreateTelephonyCampaignRequest.java","src/main/java/com/azure/ai/agents/models/CreateTranscriptionResponseJsonUsage.java","src/main/java/com/azure/ai/agents/models/CreateTranscriptionResponseJsonUsageType.java","src/main/java/com/azure/ai/agents/models/CreateTwilioTelephonyBindingRequest.java","src/main/java/com/azure/ai/agents/models/CustomGrammarFormatParameter.java","src/main/java/com/azure/ai/agents/models/CustomTextFormatParameter.java","src/main/java/com/azure/ai/agents/models/CustomToolParamFormat.java","src/main/java/com/azure/ai/agents/models/CustomToolParamFormatType.java","src/main/java/com/azure/ai/agents/models/CustomToolParameter.java","src/main/java/com/azure/ai/agents/models/DigitalWorkerType.java","src/main/java/com/azure/ai/agents/models/EntraAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/EvaluationLevel.java","src/main/java/com/azure/ai/agents/models/ExternalAgentDefinition.java","src/main/java/com/azure/ai/agents/models/FabricDataAgentToolCall.java","src/main/java/com/azure/ai/agents/models/FabricDataAgentToolCallOutput.java","src/main/java/com/azure/ai/agents/models/FabricDataAgentToolParameters.java","src/main/java/com/azure/ai/agents/models/FabricIqPreviewTool.java","src/main/java/com/azure/ai/agents/models/FabricIqPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/FileInputDetail.java","src/main/java/com/azure/ai/agents/models/FileSearchTool.java","src/main/java/com/azure/ai/agents/models/FileSearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/FixedRatioVersionSelectionRule.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParamEnvironment.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParamEnvironmentType.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParameter.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParameterEnvironmentContainerReferenceParameter.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParameterEnvironmentLocalEnvironmentParameter.java","src/main/java/com/azure/ai/agents/models/FunctionTool.java","src/main/java/com/azure/ai/agents/models/GetMicrosoft365AppPackageOptions.java","src/main/java/com/azure/ai/agents/models/GrammarSyntax.java","src/main/java/com/azure/ai/agents/models/HeaderTelemetryEndpointAuth.java","src/main/java/com/azure/ai/agents/models/HostedAgentDefinition.java","src/main/java/com/azure/ai/agents/models/HybridSearchOptions.java","src/main/java/com/azure/ai/agents/models/ImageDetail.java","src/main/java/com/azure/ai/agents/models/ImageGenActionEnum.java","src/main/java/com/azure/ai/agents/models/ImageGenTool.java","src/main/java/com/azure/ai/agents/models/ImageGenToolBackground.java","src/main/java/com/azure/ai/agents/models/ImageGenToolInputImageMask.java","src/main/java/com/azure/ai/agents/models/ImageGenToolModel.java","src/main/java/com/azure/ai/agents/models/ImageGenToolModeration.java","src/main/java/com/azure/ai/agents/models/ImageGenToolOutputFormat.java","src/main/java/com/azure/ai/agents/models/ImageGenToolQuality.java","src/main/java/com/azure/ai/agents/models/ImageGenToolSize.java","src/main/java/com/azure/ai/agents/models/ImportTelephonyCampaignRecipientsRequest.java","src/main/java/com/azure/ai/agents/models/IncludeEnum.java","src/main/java/com/azure/ai/agents/models/InlineSkillParameter.java","src/main/java/com/azure/ai/agents/models/InlineSkillSourceParameter.java","src/main/java/com/azure/ai/agents/models/InputFidelity.java","src/main/java/com/azure/ai/agents/models/InputFileContent.java","src/main/java/com/azure/ai/agents/models/InputImageContent.java","src/main/java/com/azure/ai/agents/models/InputTextContent.java","src/main/java/com/azure/ai/agents/models/InvocationsProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/InvocationsWsProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/JobStatus.java","src/main/java/com/azure/ai/agents/models/ListMemoriesOptions.java","src/main/java/com/azure/ai/agents/models/LocalShellToolParameter.java","src/main/java/com/azure/ai/agents/models/LocalSkillParameter.java","src/main/java/com/azure/ai/agents/models/LogProbProperties.java","src/main/java/com/azure/ai/agents/models/ManagedAgentIdentityBlueprintReference.java","src/main/java/com/azure/ai/agents/models/McpListToolsTool.java","src/main/java/com/azure/ai/agents/models/McpListToolsToolAnnotations.java","src/main/java/com/azure/ai/agents/models/McpListToolsToolInputSchema.java","src/main/java/com/azure/ai/agents/models/McpProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/McpTool.java","src/main/java/com/azure/ai/agents/models/McpToolConnectorId.java","src/main/java/com/azure/ai/agents/models/McpToolFilter.java","src/main/java/com/azure/ai/agents/models/McpToolRequireApproval.java","src/main/java/com/azure/ai/agents/models/McpToolboxTool.java","src/main/java/com/azure/ai/agents/models/MemoryCommandToolCall.java","src/main/java/com/azure/ai/agents/models/MemoryCommandToolCallOutput.java","src/main/java/com/azure/ai/agents/models/MemoryItem.java","src/main/java/com/azure/ai/agents/models/MemoryItemKind.java","src/main/java/com/azure/ai/agents/models/MemoryOperation.java","src/main/java/com/azure/ai/agents/models/MemoryOperationKind.java","src/main/java/com/azure/ai/agents/models/MemorySearchItem.java","src/main/java/com/azure/ai/agents/models/MemorySearchOptions.java","src/main/java/com/azure/ai/agents/models/MemorySearchPreviewTool.java","src/main/java/com/azure/ai/agents/models/MemorySearchToolCall.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDefaultDefinition.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDefaultOptions.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDefinition.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDetails.java","src/main/java/com/azure/ai/agents/models/MemoryStoreKind.java","src/main/java/com/azure/ai/agents/models/MemoryStoreObjectType.java","src/main/java/com/azure/ai/agents/models/MemoryStoreOperationUsage.java","src/main/java/com/azure/ai/agents/models/MemoryStoreSearchResponse.java","src/main/java/com/azure/ai/agents/models/MemoryStoreUpdateCompletedResult.java","src/main/java/com/azure/ai/agents/models/MemoryStoreUpdateResponse.java","src/main/java/com/azure/ai/agents/models/MemoryStoreUpdateStatus.java","src/main/java/com/azure/ai/agents/models/Microsoft365PermissionScopes.java","src/main/java/com/azure/ai/agents/models/Microsoft365PublishDefaults.java","src/main/java/com/azure/ai/agents/models/Microsoft365PublishResult.java","src/main/java/com/azure/ai/agents/models/Microsoft365PublishScope.java","src/main/java/com/azure/ai/agents/models/MicrosoftFabricPreviewTool.java","src/main/java/com/azure/ai/agents/models/ModelRouterAttempt.java","src/main/java/com/azure/ai/agents/models/ModelRouterAttemptError.java","src/main/java/com/azure/ai/agents/models/ModelRouterAttemptResult.java","src/main/java/com/azure/ai/agents/models/ModelRouterDetails.java","src/main/java/com/azure/ai/agents/models/ModelRouterMode.java","src/main/java/com/azure/ai/agents/models/ModelSelectionDetails.java","src/main/java/com/azure/ai/agents/models/NamespaceTool.java","src/main/java/com/azure/ai/agents/models/NoiseReductionType.java","src/main/java/com/azure/ai/agents/models/OpenApiAnonymousAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiAuthType.java","src/main/java/com/azure/ai/agents/models/OpenApiFunctionDefinition.java","src/main/java/com/azure/ai/agents/models/OpenApiFunctionDefinitionFunction.java","src/main/java/com/azure/ai/agents/models/OpenApiManagedAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiManagedSecurityScheme.java","src/main/java/com/azure/ai/agents/models/OpenApiProjectConnectionAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiProjectConnectionSecurityScheme.java","src/main/java/com/azure/ai/agents/models/OpenApiTool.java","src/main/java/com/azure/ai/agents/models/OpenApiToolCall.java","src/main/java/com/azure/ai/agents/models/OpenApiToolCallOutput.java","src/main/java/com/azure/ai/agents/models/OpenApiToolboxTool.java","src/main/java/com/azure/ai/agents/models/OptimizedAgentIdentifier.java","src/main/java/com/azure/ai/agents/models/OtlpTelemetryEndpoint.java","src/main/java/com/azure/ai/agents/models/PSTNTelephonyTransferDestination.java","src/main/java/com/azure/ai/agents/models/PageOrder.java","src/main/java/com/azure/ai/agents/models/PickPropertiesVoiceAgentAudioConfig.java","src/main/java/com/azure/ai/agents/models/ProceduralMemoryItem.java","src/main/java/com/azure/ai/agents/models/ProgrammaticToolCallingParameter.java","src/main/java/com/azure/ai/agents/models/PromotionInfo.java","src/main/java/com/azure/ai/agents/models/Prompt.java","src/main/java/com/azure/ai/agents/models/PromptAgentDefinition.java","src/main/java/com/azure/ai/agents/models/PromptAgentDefinitionTextOptions.java","src/main/java/com/azure/ai/agents/models/PromptCacheBreakpointConfig.java","src/main/java/com/azure/ai/agents/models/ProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/ProtocolVersionRecord.java","src/main/java/com/azure/ai/agents/models/PublishAgentToMicrosoft365Options.java","src/main/java/com/azure/ai/agents/models/PublishApprovalStatus.java","src/main/java/com/azure/ai/agents/models/PublishTelephonyCampaignRequest.java","src/main/java/com/azure/ai/agents/models/RaiConfig.java","src/main/java/com/azure/ai/agents/models/RaiInvocationContentType.java","src/main/java/com/azure/ai/agents/models/RaiInvocationMode.java","src/main/java/com/azure/ai/agents/models/RaiInvocationModeration.java","src/main/java/com/azure/ai/agents/models/RaiSseTextSelector.java","src/main/java/com/azure/ai/agents/models/RankerVersionType.java","src/main/java/com/azure/ai/agents/models/RankingOptions.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormats.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcm.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcmRate.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcma.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcmu.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsType.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEvent.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemCreate.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemDelete.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemRetrieve.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemTruncate.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferAppend.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferClear.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferCommit.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventOutputAudioBufferClear.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventResponseCancel.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventResponseCreate.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdate.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionModel.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionOutputModality.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionTruncation.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionTruncation1.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventType.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItem.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCall.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallOutput.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallOutputStatus.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallStatus.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessage.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistant.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantContent.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantContentType.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantStatus.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystem.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemContent.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemContentType.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemStatus.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageType.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUser.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContent.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContentDetail.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContentType.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserStatus.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemObject.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemType.java","src/main/java/com/azure/ai/agents/models/RealtimeFunctionTool.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPApprovalRequest.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPApprovalResponse.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPError.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPHttpError.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPListTools.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPProtocolError.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPToolCall.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPToolExecutionError.java","src/main/java/com/azure/ai/agents/models/RealtimeMcpErrorType.java","src/main/java/com/azure/ai/agents/models/RealtimeReasoning.java","src/main/java/com/azure/ai/agents/models/RealtimeReasoningEffort.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetails.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsError.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsReason.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsType.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseUsage.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageInputTokenDetails.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageInputTokenDetailsCachedTokensDetails.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageOutputTokenDetails.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEvent.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreatedConversation.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreatedConversationObject.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemAdded.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemCreated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemDeleted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionCompleted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionFailed.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionFailedError.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionSegment.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemRetrieved.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemTruncated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventErrorError.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferCleared.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferCommitted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferDtmfEventReceived.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferSpeechStarted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferSpeechStopped.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferTimeoutTriggered.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsCompleted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsFailed.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsInProgress.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferCleared.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferStarted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferStopped.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdatedRateLimits.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdatedRateLimitsName.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventRealtimeServerEventError.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioTranscriptDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioTranscriptDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAdded.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAddedPart.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAddedPartType.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDonePart.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDonePartType.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseCreated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseFunctionCallArgumentsDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseFunctionCallArgumentsDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallArgumentsDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallArgumentsDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallCompleted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallFailed.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallInProgress.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseOutputItemAdded.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseOutputItemDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseTextDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseTextDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventSessionCreated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventSessionUpdated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventType.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGA.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudio.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioInput.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioInputNoiseReduction.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioOutput.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioOutputVoice.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGATracing.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestUnion.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestUnionType.java","src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGA.java","src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudio.java","src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudioInput.java","src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction.java","src/main/java/com/azure/ai/agents/models/RealtimeTurnDetection.java","src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionSemanticVad.java","src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionServerVad.java","src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionType.java","src/main/java/com/azure/ai/agents/models/ReminderPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/ResponseFormatJsonSchemaInner.java","src/main/java/com/azure/ai/agents/models/ResponsePromptVariables.java","src/main/java/com/azure/ai/agents/models/ResponseUsageInputTokensDetails.java","src/main/java/com/azure/ai/agents/models/ResponseUsageOutputTokensDetails.java","src/main/java/com/azure/ai/agents/models/ResponsesProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/RoutingConfiguration.java","src/main/java/com/azure/ai/agents/models/RoutingTraceEntry.java","src/main/java/com/azure/ai/agents/models/SearchContentType.java","src/main/java/com/azure/ai/agents/models/SearchContextSize.java","src/main/java/com/azure/ai/agents/models/SessionAffinityConfiguration.java","src/main/java/com/azure/ai/agents/models/SessionAffinityDecision.java","src/main/java/com/azure/ai/agents/models/SessionAffinityDetails.java","src/main/java/com/azure/ai/agents/models/SessionAffinityMode.java","src/main/java/com/azure/ai/agents/models/SessionAffinityRequestMode.java","src/main/java/com/azure/ai/agents/models/SessionAffinitySource.java","src/main/java/com/azure/ai/agents/models/SessionConfiguration.java","src/main/java/com/azure/ai/agents/models/SessionDirectoryEntry.java","src/main/java/com/azure/ai/agents/models/SessionFileWriteResult.java","src/main/java/com/azure/ai/agents/models/SessionLogEvent.java","src/main/java/com/azure/ai/agents/models/SessionLogEventType.java","src/main/java/com/azure/ai/agents/models/SharepointGroundingToolCall.java","src/main/java/com/azure/ai/agents/models/SharepointGroundingToolCallOutput.java","src/main/java/com/azure/ai/agents/models/SharepointGroundingToolParameters.java","src/main/java/com/azure/ai/agents/models/SharepointPreviewTool.java","src/main/java/com/azure/ai/agents/models/ShellToolboxTool.java","src/main/java/com/azure/ai/agents/models/SipTelephonyTransferDestination.java","src/main/java/com/azure/ai/agents/models/SkillReferenceParameter.java","src/main/java/com/azure/ai/agents/models/StructuredInputDefinition.java","src/main/java/com/azure/ai/agents/models/StructuredOutputDefinition.java","src/main/java/com/azure/ai/agents/models/TeamsPhoneExtensionTelephonyBinding.java","src/main/java/com/azure/ai/agents/models/TeamsPhoneExtensionTelephonyBindingListItem.java","src/main/java/com/azure/ai/agents/models/TeamsTelephonyTransferDestination.java","src/main/java/com/azure/ai/agents/models/TelemetryConfig.java","src/main/java/com/azure/ai/agents/models/TelemetryDataKind.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpoint.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpointAuth.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpointAuthType.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpointKind.java","src/main/java/com/azure/ai/agents/models/TelemetryTransportProtocol.java","src/main/java/com/azure/ai/agents/models/TelephonyBinding.java","src/main/java/com/azure/ai/agents/models/TelephonyBindingListItem.java","src/main/java/com/azure/ai/agents/models/TelephonyBindingStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCallDurationBasis.java","src/main/java/com/azure/ai/agents/models/TelephonyCallJob.java","src/main/java/com/azure/ai/agents/models/TelephonyCallJobCancellation.java","src/main/java/com/azure/ai/agents/models/TelephonyCallJobSchedule.java","src/main/java/com/azure/ai/agents/models/TelephonyCallJobStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEvent.java","src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventName.java","src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventOutcome.java","src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventSource.java","src/main/java/com/azure/ai/agents/models/TelephonyCallPhase.java","src/main/java/com/azure/ai/agents/models/TelephonyCallRecord.java","src/main/java/com/azure/ai/agents/models/TelephonyCallStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCallSummary.java","src/main/java/com/azure/ai/agents/models/TelephonyCallTimestampSource.java","src/main/java/com/azure/ai/agents/models/TelephonyCallTiming.java","src/main/java/com/azure/ai/agents/models/TelephonyCallTrace.java","src/main/java/com/azure/ai/agents/models/TelephonyCallTraceMode.java","src/main/java/com/azure/ai/agents/models/TelephonyCallTraceStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaign.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignCallJobCounts.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignConfigurationStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignDuplicateHandling.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignExecutionStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImport.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportFormat.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportSource.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientMapping.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientMappingRequest.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignSchedule.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignScheduleType.java","src/main/java/com/azure/ai/agents/models/TelephonyOperation.java","src/main/java/com/azure/ai/agents/models/TelephonyOperationResource.java","src/main/java/com/azure/ai/agents/models/TelephonyOperationStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundDestination.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundDestinationType.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundFixedIntervalRetryPolicy.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundFixedIntervalRetryPolicyResponse.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicy.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicyResponse.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicyType.java","src/main/java/com/azure/ai/agents/models/TelephonyProvider.java","src/main/java/com/azure/ai/agents/models/TelephonyTransferDestination.java","src/main/java/com/azure/ai/agents/models/TelephonyTransferDestinationKind.java","src/main/java/com/azure/ai/agents/models/TelephonyTransferTarget.java","src/main/java/com/azure/ai/agents/models/TelephonyTransferTargets.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfiguration.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfigurationResponseFormatJsonObject.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfigurationResponseFormatText.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfigurationType.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatJsonSchema.java","src/main/java/com/azure/ai/agents/models/TokenLimits.java","src/main/java/com/azure/ai/agents/models/Tool.java","src/main/java/com/azure/ai/agents/models/ToolCallStatus.java","src/main/java/com/azure/ai/agents/models/ToolChoiceFunction.java","src/main/java/com/azure/ai/agents/models/ToolChoiceMCP.java","src/main/java/com/azure/ai/agents/models/ToolChoiceOptions.java","src/main/java/com/azure/ai/agents/models/ToolChoiceParam.java","src/main/java/com/azure/ai/agents/models/ToolChoiceParamType.java","src/main/java/com/azure/ai/agents/models/ToolConfig.java","src/main/java/com/azure/ai/agents/models/ToolProjectConnection.java","src/main/java/com/azure/ai/agents/models/ToolSearchExecutionType.java","src/main/java/com/azure/ai/agents/models/ToolSearchTool.java","src/main/java/com/azure/ai/agents/models/ToolSearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/ToolType.java","src/main/java/com/azure/ai/agents/models/ToolboxDetails.java","src/main/java/com/azure/ai/agents/models/ToolboxPolicies.java","src/main/java/com/azure/ai/agents/models/ToolboxSearchPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/ToolboxShellContainerAutoEnvironment.java","src/main/java/com/azure/ai/agents/models/ToolboxShellContainerReferenceEnvironment.java","src/main/java/com/azure/ai/agents/models/ToolboxShellEnvironment.java","src/main/java/com/azure/ai/agents/models/ToolboxShellNetworkPolicy.java","src/main/java/com/azure/ai/agents/models/ToolboxShellNetworkPolicyDisabled.java","src/main/java/com/azure/ai/agents/models/ToolboxSkill.java","src/main/java/com/azure/ai/agents/models/ToolboxSkillReference.java","src/main/java/com/azure/ai/agents/models/ToolboxTool.java","src/main/java/com/azure/ai/agents/models/ToolboxToolType.java","src/main/java/com/azure/ai/agents/models/ToolboxVersionDetails.java","src/main/java/com/azure/ai/agents/models/TranscriptTextUsageDuration.java","src/main/java/com/azure/ai/agents/models/TranscriptTextUsageTokens.java","src/main/java/com/azure/ai/agents/models/TranscriptTextUsageTokensInputTokenDetails.java","src/main/java/com/azure/ai/agents/models/TranscriptionLanguage.java","src/main/java/com/azure/ai/agents/models/TwilioTelephonyBinding.java","src/main/java/com/azure/ai/agents/models/TwilioTelephonyBindingListItem.java","src/main/java/com/azure/ai/agents/models/UpdateAgentDetailsOptions.java","src/main/java/com/azure/ai/agents/models/UpdateTelephonyBindingRequest.java","src/main/java/com/azure/ai/agents/models/UserProfileMemoryItem.java","src/main/java/com/azure/ai/agents/models/VersionIndicator.java","src/main/java/com/azure/ai/agents/models/VersionIndicatorType.java","src/main/java/com/azure/ai/agents/models/VersionRefIndicator.java","src/main/java/com/azure/ai/agents/models/VersionSelectionRule.java","src/main/java/com/azure/ai/agents/models/VersionSelector.java","src/main/java/com/azure/ai/agents/models/VersionSelectorType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAnimationConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAnimationOutputType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAudioConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfigTranscriptionDelay.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAudioOutputConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAudioTimestampType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarIceServer.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarOutputProtocol.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarScene.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoBackground.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoCrop.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoParams.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoResolution.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadEnTurnDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadMultilingualTurnDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadTurnDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentClientEventRtcCallSdpCreate.java","src/main/java/com/azure/ai/agents/models/VoiceAgentClientEventSessionAvatarConnect.java","src/main/java/com/azure/ai/agents/models/VoiceAgentDefinition.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEchoCancellation.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEchoCancellationReferenceSource.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEndConversationSystemTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetectionModel.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceThresholdLevel.java","src/main/java/com/azure/ai/agents/models/VoiceAgentFunctionTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentFunctionToolType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentGreetingConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscription.java","src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscriptionModel.java","src/main/java/com/azure/ai/agents/models/VoiceAgentInterimResponseConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentInterimResponseTrigger.java","src/main/java/com/azure/ai/agents/models/VoiceAgentLlmGeneratedGreetingConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentLlmInterimResponseConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentMcpTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReduction.java","src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReductionType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentRealtimeResponse.java","src/main/java/com/azure/ai/agents/models/VoiceAgentRealtimeResponseBase.java","src/main/java/com/azure/ai/agents/models/VoiceAgentResponseCreateParams.java","src/main/java/com/azure/ai/agents/models/VoiceAgentResponseCreateParamsConversation.java","src/main/java/com/azure/ai/agents/models/VoiceAgentRtcCallErrorDetails.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSemanticVadTurnDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSemanticVadTurnDetectionEagerness.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationBlendshapesDelta.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationBlendshapesDone.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationVisemeDelta.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationVisemeDone.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAudioTimestampDelta.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAudioTimestampDone.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseVideoDelta.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventRtcCallError.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventRtcCallSdpCreated.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarConnecting.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarSwitchToIdle.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarSwitchToSpeaking.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentAborted.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentCompleted.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentStarted.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventWarning.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventWarningDetails.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerVadTurnDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSessionAvatarConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSessionIncludeOption.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSessionResponseConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSessionUpdateConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentStaticInterimResponseConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSubagent.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentAbortReason.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentResponsePolicy.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSystemTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSystemToolName.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTemplateGreetingConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentToolResponseScheduling.java","src/main/java/com/azure/ai/agents/models/VoiceAgentToolboxTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTranscriptionPhrase.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTranscriptionWord.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTransport.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionType.java","src/main/java/com/azure/ai/agents/models/VoiceAudioCodec.java","src/main/java/com/azure/ai/agents/models/VoiceAudioContainerFormat.java","src/main/java/com/azure/ai/agents/models/VoiceAudioRole.java","src/main/java/com/azure/ai/agents/models/VoiceConversation.java","src/main/java/com/azure/ai/agents/models/VoiceConversationEngine.java","src/main/java/com/azure/ai/agents/models/VoiceConversationStatus.java","src/main/java/com/azure/ai/agents/models/VoiceGeneratedItemAudioResponse.java","src/main/java/com/azure/ai/agents/models/VoiceHostedAgentConversationEngine.java","src/main/java/com/azure/ai/agents/models/VoiceIdsShared.java","src/main/java/com/azure/ai/agents/models/VoiceItemAudioResponse.java","src/main/java/com/azure/ai/agents/models/VoiceModelType.java","src/main/java/com/azure/ai/agents/models/VoiceOutputModality.java","src/main/java/com/azure/ai/agents/models/VoiceRecordingChannelLayout.java","src/main/java/com/azure/ai/agents/models/VoiceRecordingResponse.java","src/main/java/com/azure/ai/agents/models/VoiceResponse.java","src/main/java/com/azure/ai/agents/models/VoiceResponseAudio.java","src/main/java/com/azure/ai/agents/models/VoiceResponseAudioOutput.java","src/main/java/com/azure/ai/agents/models/VoiceResponseBase.java","src/main/java/com/azure/ai/agents/models/VoiceResponseBaseObject.java","src/main/java/com/azure/ai/agents/models/VoiceResponseBaseObject1.java","src/main/java/com/azure/ai/agents/models/VoiceResponseBaseOutputModality.java","src/main/java/com/azure/ai/agents/models/VoiceResponseBaseStatus.java","src/main/java/com/azure/ai/agents/models/VoiceType.java","src/main/java/com/azure/ai/agents/models/WebIqPreviewTool.java","src/main/java/com/azure/ai/agents/models/WebIqPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/WebSearchApproximateLocation.java","src/main/java/com/azure/ai/agents/models/WebSearchConfiguration.java","src/main/java/com/azure/ai/agents/models/WebSearchPreviewTool.java","src/main/java/com/azure/ai/agents/models/WebSearchTool.java","src/main/java/com/azure/ai/agents/models/WebSearchToolFilters.java","src/main/java/com/azure/ai/agents/models/WebSearchToolSearchContextSize.java","src/main/java/com/azure/ai/agents/models/WebSearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/WorkIqPreviewTool.java","src/main/java/com/azure/ai/agents/models/WorkIqPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/WorkflowAgentDefinition.java","src/main/java/com/azure/ai/agents/models/package-info.java","src/main/java/com/azure/ai/agents/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file +{"flavor":"azure","apiVersions":{"Azure.AI.Projects":"v1"},"crossLanguagePackageId":"Azure.AI.Projects","crossLanguageVersion":"3276bca436e3","crossLanguageDefinitions":{"com.azure.ai.agents.AgentsAsyncClient":"Azure.AI.Projects.Agents","com.azure.ai.agents.AgentsAsyncClient.createAgent":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsAsyncClient.createAgentFromCode":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentFromManifest":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentVersion":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromCode":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromManifest":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsAsyncClient.createAgentVersionWithResponse":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsAsyncClient.createAgentWithResponse":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsAsyncClient.createSession":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsAsyncClient.createSessionWithResponse":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsAsyncClient.deleteSession":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsAsyncClient.deleteSessionFile":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsAsyncClient.deleteSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsAsyncClient.deleteSessionWithResponse":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsAsyncClient.disableAgent":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsAsyncClient.disableAgentWithResponse":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsAsyncClient.downloadAgentCode":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsAsyncClient.downloadAgentCodeWithResponse":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsAsyncClient.downloadSessionFile":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsAsyncClient.downloadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsAsyncClient.enableAgent":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsAsyncClient.enableAgentWithResponse":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsAsyncClient.getAgent":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsAsyncClient.getAgentVersionDetails":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsAsyncClient.getAgentVersionDetailsWithResponse":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsAsyncClient.getAgentWithResponse":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365AppPackage":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365AppPackageWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365PublishDefaults":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsAsyncClient.getMicrosoft365PublishDefaultsWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsAsyncClient.getSession":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsAsyncClient.getSessionWithResponse":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsAsyncClient.listAgentConversations":"Azure.AI.Projects.Conversations.listConversations","com.azure.ai.agents.AgentsAsyncClient.listAgentVersions":"Azure.AI.Projects.Agents.listAgentVersions","com.azure.ai.agents.AgentsAsyncClient.listAgents":"Azure.AI.Projects.Agents.listAgents","com.azure.ai.agents.AgentsAsyncClient.listSessionFiles":"Azure.AI.Projects.AgentSessionFiles.listSessionFiles","com.azure.ai.agents.AgentsAsyncClient.listSessions":"Azure.AI.Projects.Agents.listSessions","com.azure.ai.agents.AgentsAsyncClient.publishAgentToMicrosoft365":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsAsyncClient.publishAgentToMicrosoft365WithResponse":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsAsyncClient.stopSession":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsAsyncClient.stopSessionWithResponse":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsAsyncClient.updateAgent":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsAsyncClient.updateAgentDetails":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsAsyncClient.updateAgentDetailsWithResponse":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromCode":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromManifest":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.updateAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsAsyncClient.updateAgentWithResponse":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsAsyncClient.uploadSessionFile":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsAsyncClient.uploadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsClient":"Azure.AI.Projects.Agents","com.azure.ai.agents.AgentsClient.createAgent":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsClient.createAgentFromCode":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsClient.createAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentFromCode","com.azure.ai.agents.AgentsClient.createAgentFromManifest":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsClient.createAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentFromManifest","com.azure.ai.agents.AgentsClient.createAgentVersion":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsClient.createAgentVersionFromCode":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsClient.createAgentVersionFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.createAgentVersionFromCode","com.azure.ai.agents.AgentsClient.createAgentVersionFromManifest":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsClient.createAgentVersionFromManifestWithResponse":"Azure.AI.Projects.Agents.createAgentVersionFromManifest","com.azure.ai.agents.AgentsClient.createAgentVersionWithResponse":"Azure.AI.Projects.Agents.createAgentVersion","com.azure.ai.agents.AgentsClient.createAgentWithResponse":"Azure.AI.Projects.Agents.createAgent","com.azure.ai.agents.AgentsClient.createSession":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsClient.createSessionWithResponse":"Azure.AI.Projects.Agents.createSession","com.azure.ai.agents.AgentsClient.deleteSession":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsClient.deleteSessionFile":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsClient.deleteSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.deleteSessionFile","com.azure.ai.agents.AgentsClient.deleteSessionWithResponse":"Azure.AI.Projects.Agents.deleteSession","com.azure.ai.agents.AgentsClient.disableAgent":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsClient.disableAgentWithResponse":"Azure.AI.Projects.Agents.disableAgent","com.azure.ai.agents.AgentsClient.downloadAgentCode":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsClient.downloadAgentCodeWithResponse":"Azure.AI.Projects.Agents.downloadAgentCode","com.azure.ai.agents.AgentsClient.downloadSessionFile":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsClient.downloadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.downloadSessionFile","com.azure.ai.agents.AgentsClient.enableAgent":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsClient.enableAgentWithResponse":"Azure.AI.Projects.Agents.enableAgent","com.azure.ai.agents.AgentsClient.getAgent":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsClient.getAgentVersionDetails":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsClient.getAgentVersionDetailsWithResponse":"Azure.AI.Projects.Agents.getAgentVersion","com.azure.ai.agents.AgentsClient.getAgentWithResponse":"Azure.AI.Projects.Agents.getAgent","com.azure.ai.agents.AgentsClient.getMicrosoft365AppPackage":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsClient.getMicrosoft365AppPackageWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365AppPackage","com.azure.ai.agents.AgentsClient.getMicrosoft365PublishDefaults":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsClient.getMicrosoft365PublishDefaultsWithResponse":"Azure.AI.Projects.Microsoft365Publishing.getMicrosoft365PublishDefaults","com.azure.ai.agents.AgentsClient.getSession":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsClient.getSessionWithResponse":"Azure.AI.Projects.Agents.getSession","com.azure.ai.agents.AgentsClient.listAgentConversations":"Azure.AI.Projects.Conversations.listConversations","com.azure.ai.agents.AgentsClient.listAgentVersions":"Azure.AI.Projects.Agents.listAgentVersions","com.azure.ai.agents.AgentsClient.listAgents":"Azure.AI.Projects.Agents.listAgents","com.azure.ai.agents.AgentsClient.listSessionFiles":"Azure.AI.Projects.AgentSessionFiles.listSessionFiles","com.azure.ai.agents.AgentsClient.listSessions":"Azure.AI.Projects.Agents.listSessions","com.azure.ai.agents.AgentsClient.publishAgentToMicrosoft365":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsClient.publishAgentToMicrosoft365WithResponse":"Azure.AI.Projects.Microsoft365Publishing.publishAgentToMicrosoft365","com.azure.ai.agents.AgentsClient.stopSession":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsClient.stopSessionWithResponse":"Azure.AI.Projects.Agents.stopSession","com.azure.ai.agents.AgentsClient.updateAgent":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsClient.updateAgentDetails":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsClient.updateAgentDetailsWithResponse":"Azure.AI.Projects.Agents.patchAgentObject","com.azure.ai.agents.AgentsClient.updateAgentFromCode":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsClient.updateAgentFromCodeWithResponseInternal":"Azure.AI.Projects.Agents.updateAgentFromCode","com.azure.ai.agents.AgentsClient.updateAgentFromManifest":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsClient.updateAgentFromManifestWithResponse":"Azure.AI.Projects.Agents.updateAgentFromManifest","com.azure.ai.agents.AgentsClient.updateAgentWithResponse":"Azure.AI.Projects.Agents.updateAgent","com.azure.ai.agents.AgentsClient.uploadSessionFile":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsClient.uploadSessionFileWithResponse":"Azure.AI.Projects.AgentSessionFiles.uploadSessionFile","com.azure.ai.agents.AgentsClientBuilder":"Azure.AI.Projects","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient":"Azure.AI.Projects.Beta.AgentEndpointConversations","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.deleteAgentConversation":"Azure.AI.Projects.AgentEndpointConversations.deleteAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.deleteAgentConversationWithResponse":"Azure.AI.Projects.AgentEndpointConversations.deleteAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversation":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItem":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItem","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemGeneratedAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemGeneratedAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemGeneratedAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemGeneratedAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudio","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationItemWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItem","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationResponse","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationResponseWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationResponse","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.getAgentConversationWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.listAgentConversationItems":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationItems","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.listAgentConversationResponseItems":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationResponseItems","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.listAgentConversationResponses":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationResponses","com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient.listAgentConversations":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversations","com.azure.ai.agents.BetaAgentEndpointConversationsClient":"Azure.AI.Projects.Beta.AgentEndpointConversations","com.azure.ai.agents.BetaAgentEndpointConversationsClient.deleteAgentConversation":"Azure.AI.Projects.AgentEndpointConversations.deleteAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsClient.deleteAgentConversationWithResponse":"Azure.AI.Projects.AgentEndpointConversations.deleteAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversation":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItem":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItem","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemGeneratedAudio":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemGeneratedAudioContent":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemGeneratedAudioContentWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudioContent","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemGeneratedAudioWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItemGeneratedAudio","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationItemWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationItem","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationResponse","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationResponseWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversationResponse","com.azure.ai.agents.BetaAgentEndpointConversationsClient.getAgentConversationWithResponse":"Azure.AI.Projects.AgentEndpointConversations.getAgentConversation","com.azure.ai.agents.BetaAgentEndpointConversationsClient.listAgentConversationItems":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationItems","com.azure.ai.agents.BetaAgentEndpointConversationsClient.listAgentConversationResponseItems":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationResponseItems","com.azure.ai.agents.BetaAgentEndpointConversationsClient.listAgentConversationResponses":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversationResponses","com.azure.ai.agents.BetaAgentEndpointConversationsClient.listAgentConversations":"Azure.AI.Projects.AgentEndpointConversations.listAgentConversations","com.azure.ai.agents.BetaAgentTelephonyAsyncClient":"Azure.AI.Projects.Beta.AgentTelephony","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.beginImportTelephonyCampaignRecipients":"Azure.AI.Projects.AgentTelephony.importTelephonyCampaignRecipients","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.beginImportTelephonyCampaignRecipientsWithModel":"Azure.AI.Projects.AgentTelephony.importTelephonyCampaignRecipients","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.beginPublishTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.publishTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.beginPublishTelephonyCampaignWithModel":"Azure.AI.Projects.AgentTelephony.publishTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.beginValidateTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.validateTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.beginValidateTelephonyCampaignWithModel":"Azure.AI.Projects.AgentTelephony.validateTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.cancelTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCallJob","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.cancelTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCallJob","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.cancelTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.cancelTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.createTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.createTelephonyCallJob","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.createTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyCallJob","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.createTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.createTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.createTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.getTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.getTelephonyCallJob","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.getTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCallJob","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.getTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.getTelephonyCampaignRecipientImport":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaignRecipientImport","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.getTelephonyCampaignRecipientImportWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaignRecipientImport","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.getTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.getTelephonyOperation":"Azure.AI.Projects.AgentTelephony.getTelephonyOperation","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.getTelephonyOperationWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyOperation","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.pauseTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.pauseTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.pauseTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.pauseTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.resumeTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.resumeTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyAsyncClient.resumeTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.resumeTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyClient":"Azure.AI.Projects.Beta.AgentTelephony","com.azure.ai.agents.BetaAgentTelephonyClient.beginImportTelephonyCampaignRecipients":"Azure.AI.Projects.AgentTelephony.importTelephonyCampaignRecipients","com.azure.ai.agents.BetaAgentTelephonyClient.beginImportTelephonyCampaignRecipientsWithModel":"Azure.AI.Projects.AgentTelephony.importTelephonyCampaignRecipients","com.azure.ai.agents.BetaAgentTelephonyClient.beginPublishTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.publishTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyClient.beginPublishTelephonyCampaignWithModel":"Azure.AI.Projects.AgentTelephony.publishTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyClient.beginValidateTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.validateTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyClient.beginValidateTelephonyCampaignWithModel":"Azure.AI.Projects.AgentTelephony.validateTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyClient.cancelTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCallJob","com.azure.ai.agents.BetaAgentTelephonyClient.cancelTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCallJob","com.azure.ai.agents.BetaAgentTelephonyClient.cancelTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyClient.cancelTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.cancelTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyClient.createTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.createTelephonyCallJob","com.azure.ai.agents.BetaAgentTelephonyClient.createTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyCallJob","com.azure.ai.agents.BetaAgentTelephonyClient.createTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.createTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyClient.createTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyClient.getTelephonyCallJob":"Azure.AI.Projects.AgentTelephony.getTelephonyCallJob","com.azure.ai.agents.BetaAgentTelephonyClient.getTelephonyCallJobWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCallJob","com.azure.ai.agents.BetaAgentTelephonyClient.getTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyClient.getTelephonyCampaignRecipientImport":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaignRecipientImport","com.azure.ai.agents.BetaAgentTelephonyClient.getTelephonyCampaignRecipientImportWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaignRecipientImport","com.azure.ai.agents.BetaAgentTelephonyClient.getTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyClient.getTelephonyOperation":"Azure.AI.Projects.AgentTelephony.getTelephonyOperation","com.azure.ai.agents.BetaAgentTelephonyClient.getTelephonyOperationWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyOperation","com.azure.ai.agents.BetaAgentTelephonyClient.pauseTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.pauseTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyClient.pauseTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.pauseTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyClient.resumeTelephonyCampaign":"Azure.AI.Projects.AgentTelephony.resumeTelephonyCampaign","com.azure.ai.agents.BetaAgentTelephonyClient.resumeTelephonyCampaignWithResponse":"Azure.AI.Projects.AgentTelephony.resumeTelephonyCampaign","com.azure.ai.agents.BetaAgentsAsyncClient":"Azure.AI.Projects.Beta.Agents","com.azure.ai.agents.BetaAgentsAsyncClient.beginCreateOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsAsyncClient.beginCreateOptimizationJobWithModel":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsAsyncClient.cancelOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsAsyncClient.cancelOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsAsyncClient.createTelephonyBinding":"Azure.AI.Projects.AgentTelephony.createTelephonyBinding","com.azure.ai.agents.BetaAgentsAsyncClient.createTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyBinding","com.azure.ai.agents.BetaAgentsAsyncClient.deleteOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsAsyncClient.deleteOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsAsyncClient.deleteTelephonyBinding":"Azure.AI.Projects.AgentTelephony.deleteTelephonyBinding","com.azure.ai.agents.BetaAgentsAsyncClient.deleteTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.deleteTelephonyBinding","com.azure.ai.agents.BetaAgentsAsyncClient.endTelephonyCall":"Azure.AI.Projects.AgentTelephony.endTelephonyCall","com.azure.ai.agents.BetaAgentsAsyncClient.endTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.endTelephonyCall","com.azure.ai.agents.BetaAgentsAsyncClient.generateAgent":"Azure.AI.Projects.Agents.generateAgent","com.azure.ai.agents.BetaAgentsAsyncClient.generateAgentWithResponse":"Azure.AI.Projects.Agents.generateAgent","com.azure.ai.agents.BetaAgentsAsyncClient.getOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsAsyncClient.getOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsAsyncClient.getTelephonyBinding":"Azure.AI.Projects.AgentTelephony.getTelephonyBinding","com.azure.ai.agents.BetaAgentsAsyncClient.getTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyBinding","com.azure.ai.agents.BetaAgentsAsyncClient.getTelephonyCall":"Azure.AI.Projects.AgentTelephony.getTelephonyCall","com.azure.ai.agents.BetaAgentsAsyncClient.getTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCall","com.azure.ai.agents.BetaAgentsAsyncClient.getTelephonyTransferTargets":"Azure.AI.Projects.AgentTelephony.getTelephonyTransferTargets","com.azure.ai.agents.BetaAgentsAsyncClient.getTelephonyTransferTargetsWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyTransferTargets","com.azure.ai.agents.BetaAgentsAsyncClient.listOptimizationJobs":"Azure.AI.Projects.AgentOptimizationJobs.list","com.azure.ai.agents.BetaAgentsAsyncClient.listTelephonyBindings":"Azure.AI.Projects.AgentTelephony.listTelephonyBindings","com.azure.ai.agents.BetaAgentsAsyncClient.listTelephonyCalls":"Azure.AI.Projects.AgentTelephony.listTelephonyCalls","com.azure.ai.agents.BetaAgentsAsyncClient.replaceTelephonyTransferTargets":"Azure.AI.Projects.AgentTelephony.replaceTelephonyTransferTargets","com.azure.ai.agents.BetaAgentsAsyncClient.replaceTelephonyTransferTargetsWithResponse":"Azure.AI.Projects.AgentTelephony.replaceTelephonyTransferTargets","com.azure.ai.agents.BetaAgentsAsyncClient.transferTelephonyCall":"Azure.AI.Projects.AgentTelephony.transferTelephonyCall","com.azure.ai.agents.BetaAgentsAsyncClient.transferTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.transferTelephonyCall","com.azure.ai.agents.BetaAgentsAsyncClient.updateTelephonyBinding":"Azure.AI.Projects.AgentTelephony.updateTelephonyBinding","com.azure.ai.agents.BetaAgentsAsyncClient.updateTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.updateTelephonyBinding","com.azure.ai.agents.BetaAgentsClient":"Azure.AI.Projects.Beta.Agents","com.azure.ai.agents.BetaAgentsClient.beginCreateOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsClient.beginCreateOptimizationJobWithModel":"Azure.AI.Projects.AgentOptimizationJobs.create","com.azure.ai.agents.BetaAgentsClient.cancelOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsClient.cancelOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.cancel","com.azure.ai.agents.BetaAgentsClient.createTelephonyBinding":"Azure.AI.Projects.AgentTelephony.createTelephonyBinding","com.azure.ai.agents.BetaAgentsClient.createTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.createTelephonyBinding","com.azure.ai.agents.BetaAgentsClient.deleteOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsClient.deleteOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.delete","com.azure.ai.agents.BetaAgentsClient.deleteTelephonyBinding":"Azure.AI.Projects.AgentTelephony.deleteTelephonyBinding","com.azure.ai.agents.BetaAgentsClient.deleteTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.deleteTelephonyBinding","com.azure.ai.agents.BetaAgentsClient.endTelephonyCall":"Azure.AI.Projects.AgentTelephony.endTelephonyCall","com.azure.ai.agents.BetaAgentsClient.endTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.endTelephonyCall","com.azure.ai.agents.BetaAgentsClient.generateAgent":"Azure.AI.Projects.Agents.generateAgent","com.azure.ai.agents.BetaAgentsClient.generateAgentWithResponse":"Azure.AI.Projects.Agents.generateAgent","com.azure.ai.agents.BetaAgentsClient.getOptimizationJob":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsClient.getOptimizationJobWithResponse":"Azure.AI.Projects.AgentOptimizationJobs.get","com.azure.ai.agents.BetaAgentsClient.getTelephonyBinding":"Azure.AI.Projects.AgentTelephony.getTelephonyBinding","com.azure.ai.agents.BetaAgentsClient.getTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyBinding","com.azure.ai.agents.BetaAgentsClient.getTelephonyCall":"Azure.AI.Projects.AgentTelephony.getTelephonyCall","com.azure.ai.agents.BetaAgentsClient.getTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyCall","com.azure.ai.agents.BetaAgentsClient.getTelephonyTransferTargets":"Azure.AI.Projects.AgentTelephony.getTelephonyTransferTargets","com.azure.ai.agents.BetaAgentsClient.getTelephonyTransferTargetsWithResponse":"Azure.AI.Projects.AgentTelephony.getTelephonyTransferTargets","com.azure.ai.agents.BetaAgentsClient.listOptimizationJobs":"Azure.AI.Projects.AgentOptimizationJobs.list","com.azure.ai.agents.BetaAgentsClient.listTelephonyBindings":"Azure.AI.Projects.AgentTelephony.listTelephonyBindings","com.azure.ai.agents.BetaAgentsClient.listTelephonyCalls":"Azure.AI.Projects.AgentTelephony.listTelephonyCalls","com.azure.ai.agents.BetaAgentsClient.replaceTelephonyTransferTargets":"Azure.AI.Projects.AgentTelephony.replaceTelephonyTransferTargets","com.azure.ai.agents.BetaAgentsClient.replaceTelephonyTransferTargetsWithResponse":"Azure.AI.Projects.AgentTelephony.replaceTelephonyTransferTargets","com.azure.ai.agents.BetaAgentsClient.transferTelephonyCall":"Azure.AI.Projects.AgentTelephony.transferTelephonyCall","com.azure.ai.agents.BetaAgentsClient.transferTelephonyCallWithResponse":"Azure.AI.Projects.AgentTelephony.transferTelephonyCall","com.azure.ai.agents.BetaAgentsClient.updateTelephonyBinding":"Azure.AI.Projects.AgentTelephony.updateTelephonyBinding","com.azure.ai.agents.BetaAgentsClient.updateTelephonyBindingWithResponse":"Azure.AI.Projects.AgentTelephony.updateTelephonyBinding","com.azure.ai.agents.BetaMemoryStoresAsyncClient":"Azure.AI.Projects.Beta.MemoryStores","com.azure.ai.agents.BetaMemoryStoresAsyncClient.beginInternalUpdateMemories":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.beginInternalUpdateMemoriesWithModel":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemory":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemoryStore":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.createMemoryWithResponse":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemory":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemoryStore":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getMemoryWithResponse":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getUpdateResult":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresAsyncClient.getUpdateResultWithResponse":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresAsyncClient.internalSearchMemories":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.internalSearchMemoriesWithResponse":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.listMemories":"Azure.AI.Projects.MemoryStores.listMemories","com.azure.ai.agents.BetaMemoryStoresAsyncClient.listMemoryStores":"Azure.AI.Projects.MemoryStores.listMemoryStores","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemory":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemoryStore":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresAsyncClient.updateMemoryWithResponse":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.BetaMemoryStoresClient":"Azure.AI.Projects.Beta.MemoryStores","com.azure.ai.agents.BetaMemoryStoresClient.beginInternalUpdateMemories":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresClient.beginInternalUpdateMemoriesWithModel":"Azure.AI.Projects.MemoryStores.updateMemories","com.azure.ai.agents.BetaMemoryStoresClient.createMemory":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresClient.createMemoryStore":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.createMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.createMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.createMemoryWithResponse":"Azure.AI.Projects.MemoryStores.createMemory","com.azure.ai.agents.BetaMemoryStoresClient.getMemory":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresClient.getMemoryStore":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.getMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.getMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.getMemoryWithResponse":"Azure.AI.Projects.MemoryStores.getMemory","com.azure.ai.agents.BetaMemoryStoresClient.getUpdateResult":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresClient.getUpdateResultWithResponse":"Azure.AI.Projects.MemoryStores.getUpdateResult","com.azure.ai.agents.BetaMemoryStoresClient.internalSearchMemories":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresClient.internalSearchMemoriesWithResponse":"Azure.AI.Projects.MemoryStores.searchMemories","com.azure.ai.agents.BetaMemoryStoresClient.listMemories":"Azure.AI.Projects.MemoryStores.listMemories","com.azure.ai.agents.BetaMemoryStoresClient.listMemoryStores":"Azure.AI.Projects.MemoryStores.listMemoryStores","com.azure.ai.agents.BetaMemoryStoresClient.updateMemory":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.BetaMemoryStoresClient.updateMemoryStore":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.updateMemoryStoreWithResponse":"Azure.AI.Projects.MemoryStores.updateMemoryStore","com.azure.ai.agents.BetaMemoryStoresClient.updateMemoryWithResponse":"Azure.AI.Projects.MemoryStores.updateMemory","com.azure.ai.agents.ToolboxesAsyncClient":"Azure.AI.Projects.Toolboxes","com.azure.ai.agents.ToolboxesAsyncClient.createToolboxVersion":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.createToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolbox":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolboxVersion":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.deleteToolboxWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesAsyncClient.getToolbox":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesAsyncClient.getToolboxVersion":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.getToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesAsyncClient.getToolboxWithResponse":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesAsyncClient.listToolboxVersions":"Azure.AI.Projects.Toolboxes.listToolboxVersions","com.azure.ai.agents.ToolboxesAsyncClient.listToolboxes":"Azure.AI.Projects.Toolboxes.listToolboxes","com.azure.ai.agents.ToolboxesAsyncClient.updateToolbox":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.ToolboxesAsyncClient.updateToolboxWithResponse":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.ToolboxesClient":"Azure.AI.Projects.Toolboxes","com.azure.ai.agents.ToolboxesClient.createToolboxVersion":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesClient.createToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.createToolboxVersion","com.azure.ai.agents.ToolboxesClient.deleteToolbox":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesClient.deleteToolboxVersion":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesClient.deleteToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolboxVersion","com.azure.ai.agents.ToolboxesClient.deleteToolboxWithResponse":"Azure.AI.Projects.Toolboxes.deleteToolbox","com.azure.ai.agents.ToolboxesClient.getToolbox":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesClient.getToolboxVersion":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesClient.getToolboxVersionWithResponse":"Azure.AI.Projects.Toolboxes.getToolboxVersion","com.azure.ai.agents.ToolboxesClient.getToolboxWithResponse":"Azure.AI.Projects.Toolboxes.getToolbox","com.azure.ai.agents.ToolboxesClient.listToolboxVersions":"Azure.AI.Projects.Toolboxes.listToolboxVersions","com.azure.ai.agents.ToolboxesClient.listToolboxes":"Azure.AI.Projects.Toolboxes.listToolboxes","com.azure.ai.agents.ToolboxesClient.updateToolbox":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.ToolboxesClient.updateToolboxWithResponse":"Azure.AI.Projects.Toolboxes.updateToolbox","com.azure.ai.agents.implementation.models.AgentDefinitionOptInKeys":"Azure.AI.Projects.AgentDefinitionOptInKeys","com.azure.ai.agents.implementation.models.CreateAgentFromCodeContent":"Azure.AI.Projects.CreateAgentFromCodeContent","com.azure.ai.agents.implementation.models.CreateAgentFromManifestRequest":"Azure.AI.Projects.createAgentFromManifest.Request.anonymous","com.azure.ai.agents.implementation.models.CreateAgentOptions":null,"com.azure.ai.agents.implementation.models.CreateAgentRequest":"Azure.AI.Projects.createAgent.Request.anonymous","com.azure.ai.agents.implementation.models.CreateAgentVersionFromManifestRequest":"Azure.AI.Projects.createAgentVersionFromManifest.Request.anonymous","com.azure.ai.agents.implementation.models.CreateAgentVersionRequest":"Azure.AI.Projects.createAgentVersion.Request.anonymous","com.azure.ai.agents.implementation.models.CreateMemoryRequest":"Azure.AI.Projects.createMemory.Request.anonymous","com.azure.ai.agents.implementation.models.CreateMemoryStoreRequest":"Azure.AI.Projects.createMemoryStore.Request.anonymous","com.azure.ai.agents.implementation.models.CreateSessionRequest":"Azure.AI.Projects.createSession.Request.anonymous","com.azure.ai.agents.implementation.models.CreateToolboxVersionRequest":"Azure.AI.Projects.createToolboxVersion.Request.anonymous","com.azure.ai.agents.implementation.models.FoundryFeaturesOptInKeys":"Azure.AI.Projects.FoundryFeaturesOptInKeys","com.azure.ai.agents.implementation.models.GetMicrosoft365AppPackageRequest":"Azure.AI.Projects.getMicrosoft365AppPackage.Request.anonymous","com.azure.ai.agents.implementation.models.ListMemoriesRequest":"Azure.AI.Projects.listMemories.Request.anonymous","com.azure.ai.agents.implementation.models.PublishAgentToMicrosoft365Request":"Azure.AI.Projects.publishAgentToMicrosoft365.Request.anonymous","com.azure.ai.agents.implementation.models.ReplaceTelephonyTransferTargetsRequest":"Azure.AI.Projects.replaceTelephonyTransferTargets.Request.anonymous","com.azure.ai.agents.implementation.models.SearchMemoriesRequest":"Azure.AI.Projects.searchMemories.Request.anonymous","com.azure.ai.agents.implementation.models.TransferTelephonyCallRequest":"Azure.AI.Projects.transferTelephonyCall.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateAgentFromManifestRequest":"Azure.AI.Projects.updateAgentFromManifest.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateAgentRequest":"Azure.AI.Projects.updateAgent.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateMemoriesRequest":"Azure.AI.Projects.updateMemories.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateMemoryRequest":"Azure.AI.Projects.updateMemory.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateMemoryStoreRequest":"Azure.AI.Projects.updateMemoryStore.Request.anonymous","com.azure.ai.agents.implementation.models.UpdateToolboxInput":"Azure.AI.Projects.UpdateToolboxRequest","com.azure.ai.agents.implementation.models.UpdateToolboxRequest":"Azure.AI.Projects.updateToolbox.Request.anonymous","com.azure.ai.agents.models.A2APreviewTool":"Azure.AI.Projects.A2APreviewTool","com.azure.ai.agents.models.A2APreviewToolboxTool":"Azure.AI.Projects.A2APreviewToolboxTool","com.azure.ai.agents.models.A2AProtocolConfiguration":"Azure.AI.Projects.A2AProtocolConfiguration","com.azure.ai.agents.models.A2AProtocolVersion":"Azure.AI.Projects.A2AProtocolVersion","com.azure.ai.agents.models.A2ATool":"Azure.AI.Projects.A2ATool","com.azure.ai.agents.models.A2AToolCall":"Azure.AI.Projects.A2AToolCall","com.azure.ai.agents.models.A2AToolCallOutput":"Azure.AI.Projects.A2AToolCallOutput","com.azure.ai.agents.models.A2AToolboxTool":"Azure.AI.Projects.A2AToolboxTool","com.azure.ai.agents.models.AISearchIndexResource":"Azure.AI.Projects.AISearchIndexResource","com.azure.ai.agents.models.ActivityProtocolAccessBoundary":"Azure.AI.Projects.ActivityProtocolAccessBoundary","com.azure.ai.agents.models.ActivityProtocolConfiguration":"Azure.AI.Projects.ActivityProtocolConfiguration","com.azure.ai.agents.models.AgentBlueprintReference":"Azure.AI.Projects.AgentBlueprintReference","com.azure.ai.agents.models.AgentBlueprintReferenceType":"Azure.AI.Projects.AgentBlueprintReferenceType","com.azure.ai.agents.models.AgentCard":"Azure.AI.Projects.AgentCard","com.azure.ai.agents.models.AgentCardSkill":"Azure.AI.Projects.AgentCardSkill","com.azure.ai.agents.models.AgentDefinition":"Azure.AI.Projects.AgentDefinition","com.azure.ai.agents.models.AgentDetails":"Azure.AI.Projects.AgentObject","com.azure.ai.agents.models.AgentDetailsVersions":"Azure.AI.Projects.AgentObject.versions.anonymous","com.azure.ai.agents.models.AgentEndpointAuthorizationScheme":"Azure.AI.Projects.AgentEndpointAuthorizationScheme","com.azure.ai.agents.models.AgentEndpointAuthorizationSchemeType":"Azure.AI.Projects.AgentEndpointAuthorizationSchemeType","com.azure.ai.agents.models.AgentEndpointConfig":"Azure.AI.Projects.AgentEndpointConfig","com.azure.ai.agents.models.AgentEndpointProtocol":"Azure.AI.Projects.AgentEndpointProtocol","com.azure.ai.agents.models.AgentHarness":"Azure.AI.Projects.AgentHarness","com.azure.ai.agents.models.AgentIdentity":"Azure.AI.Projects.AgentIdentity","com.azure.ai.agents.models.AgentIdentityStatus":"Azure.AI.Projects.AgentIdentityStatus","com.azure.ai.agents.models.AgentKind":"Azure.AI.Projects.AgentKind","com.azure.ai.agents.models.AgentObjectType":"Azure.AI.Projects.AgentObjectType","com.azure.ai.agents.models.AgentOptimizationCandidate":"Azure.AI.Projects.AgentOptimizationCandidate","com.azure.ai.agents.models.AgentOptimizationDatasetCriterion":"Azure.AI.Projects.AgentOptimizationDatasetCriterion","com.azure.ai.agents.models.AgentOptimizationDatasetInput":"Azure.AI.Projects.AgentOptimizationDatasetInput","com.azure.ai.agents.models.AgentOptimizationDatasetInputType":"Azure.AI.Projects.AgentOptimizationDatasetInputType","com.azure.ai.agents.models.AgentOptimizationDatasetItem":"Azure.AI.Projects.AgentOptimizationDatasetItem","com.azure.ai.agents.models.AgentOptimizationEvaluatorReference":"Azure.AI.Projects.AgentOptimizationEvaluatorRef","com.azure.ai.agents.models.AgentOptimizationInlineDatasetInput":"Azure.AI.Projects.AgentOptimizationInlineDatasetInput","com.azure.ai.agents.models.AgentOptimizationJob":"Azure.AI.Projects.AgentOptimizationJob","com.azure.ai.agents.models.AgentOptimizationJobInputs":"Azure.AI.Projects.AgentOptimizationJobInputs","com.azure.ai.agents.models.AgentOptimizationJobListItem":"Azure.AI.Projects.AgentOptimizationJobListItem","com.azure.ai.agents.models.AgentOptimizationJobProgress":"Azure.AI.Projects.AgentOptimizationJobProgress","com.azure.ai.agents.models.AgentOptimizationJobResult":"Azure.AI.Projects.AgentOptimizationJobResult","com.azure.ai.agents.models.AgentOptimizationOptions":"Azure.AI.Projects.AgentOptimizationOptions","com.azure.ai.agents.models.AgentOptimizationReferenceDatasetInput":"Azure.AI.Projects.AgentOptimizationReferenceDatasetInput","com.azure.ai.agents.models.AgentReference":"Azure.AI.Projects.AgentReference","com.azure.ai.agents.models.AgentSessionResource":"Azure.AI.Projects.AgentSessionResource","com.azure.ai.agents.models.AgentSessionStatus":"Azure.AI.Projects.AgentSessionStatus","com.azure.ai.agents.models.AgentState":"Azure.AI.Projects.AgentState","com.azure.ai.agents.models.AgentStateSource":"Azure.AI.Projects.AgentStateSource","com.azure.ai.agents.models.AgentVersionDetails":"Azure.AI.Projects.AgentVersionObject","com.azure.ai.agents.models.AgentVersionStatus":"Azure.AI.Projects.AgentVersionStatus","com.azure.ai.agents.models.ApiError":"OpenAI.Error","com.azure.ai.agents.models.ApplyPatchToolParameter":"OpenAI.ApplyPatchToolParam","com.azure.ai.agents.models.ApproximateLocation":"OpenAI.ApproximateLocation","com.azure.ai.agents.models.AudioTranscription":"OpenAI.AudioTranscription","com.azure.ai.agents.models.AudioTranscriptionModel":"OpenAI.AudioTranscription.model.anonymous","com.azure.ai.agents.models.AutoCodeInterpreterToolParameter":"OpenAI.AutoCodeInterpreterToolParam","com.azure.ai.agents.models.AzureAISearchQueryType":"Azure.AI.Projects.AzureAISearchQueryType","com.azure.ai.agents.models.AzureAISearchTool":"Azure.AI.Projects.AzureAISearchTool","com.azure.ai.agents.models.AzureAISearchToolCall":"Azure.AI.Projects.AzureAISearchToolCall","com.azure.ai.agents.models.AzureAISearchToolCallOutput":"Azure.AI.Projects.AzureAISearchToolCallOutput","com.azure.ai.agents.models.AzureAISearchToolResource":"Azure.AI.Projects.AzureAISearchToolResource","com.azure.ai.agents.models.AzureAISearchToolboxTool":"Azure.AI.Projects.AzureAISearchToolboxTool","com.azure.ai.agents.models.AzureCreateResponseDetails":"Azure.AI.Projects.AzureCreateResponseDetails","com.azure.ai.agents.models.AzureCreateResponseOptions":"Azure.AI.Projects.AzureCreateResponseOptions","com.azure.ai.agents.models.AzureFunctionBinding":"Azure.AI.Projects.AzureFunctionBinding","com.azure.ai.agents.models.AzureFunctionDefinition":"Azure.AI.Projects.AzureFunctionDefinition","com.azure.ai.agents.models.AzureFunctionDefinitionDetails":"Azure.AI.Projects.AzureFunctionDefinition.function.anonymous","com.azure.ai.agents.models.AzureFunctionStorageQueue":"Azure.AI.Projects.AzureFunctionStorageQueue","com.azure.ai.agents.models.AzureFunctionTool":"Azure.AI.Projects.AzureFunctionTool","com.azure.ai.agents.models.AzureFunctionToolCall":"Azure.AI.Projects.AzureFunctionToolCall","com.azure.ai.agents.models.AzureFunctionToolCallOutput":"Azure.AI.Projects.AzureFunctionToolCallOutput","com.azure.ai.agents.models.AzureUserSecurityContext":"Azure.AI.Projects.AzureUserSecurityContext","com.azure.ai.agents.models.BingCustomSearchConfiguration":"Azure.AI.Projects.BingCustomSearchConfiguration","com.azure.ai.agents.models.BingCustomSearchPreviewTool":"Azure.AI.Projects.BingCustomSearchPreviewTool","com.azure.ai.agents.models.BingCustomSearchToolCall":"Azure.AI.Projects.BingCustomSearchToolCall","com.azure.ai.agents.models.BingCustomSearchToolCallOutput":"Azure.AI.Projects.BingCustomSearchToolCallOutput","com.azure.ai.agents.models.BingCustomSearchToolParameters":"Azure.AI.Projects.BingCustomSearchToolParameters","com.azure.ai.agents.models.BingGroundingSearchConfiguration":"Azure.AI.Projects.BingGroundingSearchConfiguration","com.azure.ai.agents.models.BingGroundingSearchToolParameters":"Azure.AI.Projects.BingGroundingSearchToolParameters","com.azure.ai.agents.models.BingGroundingTool":"Azure.AI.Projects.BingGroundingTool","com.azure.ai.agents.models.BingGroundingToolCall":"Azure.AI.Projects.BingGroundingToolCall","com.azure.ai.agents.models.BingGroundingToolCallOutput":"Azure.AI.Projects.BingGroundingToolCallOutput","com.azure.ai.agents.models.BotServiceAuthorizationScheme":"Azure.AI.Projects.BotServiceAuthorizationScheme","com.azure.ai.agents.models.BotServiceRbacAuthorizationScheme":"Azure.AI.Projects.BotServiceRbacAuthorizationScheme","com.azure.ai.agents.models.BotServiceTenantAuthorizationScheme":"Azure.AI.Projects.BotServiceTenantAuthorizationScheme","com.azure.ai.agents.models.BrowserAutomationPreviewTool":"Azure.AI.Projects.BrowserAutomationPreviewTool","com.azure.ai.agents.models.BrowserAutomationPreviewToolboxTool":"Azure.AI.Projects.BrowserAutomationPreviewToolboxTool","com.azure.ai.agents.models.BrowserAutomationTool":"Azure.AI.Projects.BrowserAutomationTool","com.azure.ai.agents.models.BrowserAutomationToolCall":"Azure.AI.Projects.BrowserAutomationToolCall","com.azure.ai.agents.models.BrowserAutomationToolCallOutput":"Azure.AI.Projects.BrowserAutomationToolCallOutput","com.azure.ai.agents.models.BrowserAutomationToolConnectionParameters":"Azure.AI.Projects.BrowserAutomationToolConnectionParameters","com.azure.ai.agents.models.BrowserAutomationToolParameters":"Azure.AI.Projects.BrowserAutomationToolParameters","com.azure.ai.agents.models.BrowserAutomationToolboxTool":"Azure.AI.Projects.BrowserAutomationToolboxTool","com.azure.ai.agents.models.CallableToolAllowedCaller":"OpenAI.CallableToolAllowedCaller","com.azure.ai.agents.models.CaptureStructuredOutputsTool":"Azure.AI.Projects.CaptureStructuredOutputsTool","com.azure.ai.agents.models.ChatSummaryMemoryItem":"Azure.AI.Projects.ChatSummaryMemoryItem","com.azure.ai.agents.models.CodeConfiguration":"Azure.AI.Projects.CodeConfiguration","com.azure.ai.agents.models.CodeDependencyResolution":"Azure.AI.Projects.CodeDependencyResolution","com.azure.ai.agents.models.CodeFileDetails":null,"com.azure.ai.agents.models.CodeInterpreterTool":"OpenAI.CodeInterpreterTool","com.azure.ai.agents.models.CodeInterpreterToolboxTool":"Azure.AI.Projects.CodeInterpreterToolboxTool","com.azure.ai.agents.models.ComputerEnvironment":"ComputerEnvironmentExpandable","com.azure.ai.agents.models.ComputerTool":"OpenAI.ComputerTool","com.azure.ai.agents.models.ComputerUsePreviewTool":"OpenAI.ComputerUsePreviewTool","com.azure.ai.agents.models.ContainerAutoParameter":"OpenAI.ContainerAutoParam","com.azure.ai.agents.models.ContainerConfiguration":"Azure.AI.Projects.ContainerConfiguration","com.azure.ai.agents.models.ContainerMemoryLimit":"ContainerMemoryLimitExpandable","com.azure.ai.agents.models.ContainerNetworkPolicyAllowlistParameter":"OpenAI.ContainerNetworkPolicyAllowlistParam","com.azure.ai.agents.models.ContainerNetworkPolicyDisabledParameter":"OpenAI.ContainerNetworkPolicyDisabledParam","com.azure.ai.agents.models.ContainerNetworkPolicyDomainSecretParameter":"OpenAI.ContainerNetworkPolicyDomainSecretParam","com.azure.ai.agents.models.ContainerNetworkPolicyParamType":"OpenAI.ContainerNetworkPolicyParamType","com.azure.ai.agents.models.ContainerNetworkPolicyParameter":"OpenAI.ContainerNetworkPolicyParam","com.azure.ai.agents.models.ContainerSkill":"OpenAI.ContainerSkill","com.azure.ai.agents.models.ContainerSkillType":"OpenAI.ContainerSkillType","com.azure.ai.agents.models.CreateAgentVersionFromCodeContent":"Azure.AI.Projects.CreateAgentVersionFromCodeContent","com.azure.ai.agents.models.CreateAgentVersionFromCodeMetadata":"Azure.AI.Projects.CreateAgentVersionFromCodeMetadata","com.azure.ai.agents.models.CreateAgentVersionInput":"Azure.AI.Projects.CreateAgentVersionRequest","com.azure.ai.agents.models.CreateAgentVersionOptions":null,"com.azure.ai.agents.models.CreateTeamsPhoneExtensionTelephonyBindingRequest":"Azure.AI.Projects.CreateTeamsPhoneExtensionTelephonyBindingRequest","com.azure.ai.agents.models.CreateTelephonyBindingRequest":"Azure.AI.Projects.CreateTelephonyBindingRequest","com.azure.ai.agents.models.CreateTelephonyCallJobRequest":"Azure.AI.Projects.CreateTelephonyCallJobRequest","com.azure.ai.agents.models.CreateTelephonyCampaignRequest":"Azure.AI.Projects.CreateTelephonyCampaignRequest","com.azure.ai.agents.models.CreateTranscriptionResponseJsonUsage":"OpenAI.CreateTranscriptionResponseJsonUsage","com.azure.ai.agents.models.CreateTranscriptionResponseJsonUsageType":"OpenAI.CreateTranscriptionResponseJsonUsageType","com.azure.ai.agents.models.CreateTwilioTelephonyBindingRequest":"Azure.AI.Projects.CreateTwilioTelephonyBindingRequest","com.azure.ai.agents.models.CustomGrammarFormatParameter":"OpenAI.CustomGrammarFormatParam","com.azure.ai.agents.models.CustomTextFormatParameter":"OpenAI.CustomTextFormatParam","com.azure.ai.agents.models.CustomToolParamFormat":"OpenAI.CustomToolParamFormat","com.azure.ai.agents.models.CustomToolParamFormatType":"OpenAI.CustomToolParamFormatType","com.azure.ai.agents.models.CustomToolParameter":"OpenAI.CustomToolParam","com.azure.ai.agents.models.DigitalWorkerType":"Azure.AI.Projects.DigitalWorkerType","com.azure.ai.agents.models.EntraAuthorizationScheme":"Azure.AI.Projects.EntraAuthorizationScheme","com.azure.ai.agents.models.EvaluationLevel":"Azure.AI.Projects.EvaluationLevel","com.azure.ai.agents.models.ExternalAgentDefinition":"Azure.AI.Projects.ExternalAgentDefinition","com.azure.ai.agents.models.FabricDataAgentToolCall":"Azure.AI.Projects.FabricDataAgentToolCall","com.azure.ai.agents.models.FabricDataAgentToolCallOutput":"Azure.AI.Projects.FabricDataAgentToolCallOutput","com.azure.ai.agents.models.FabricDataAgentToolParameters":"Azure.AI.Projects.FabricDataAgentToolParameters","com.azure.ai.agents.models.FabricIqPreviewTool":"Azure.AI.Projects.FabricIQPreviewTool","com.azure.ai.agents.models.FabricIqPreviewToolboxTool":"Azure.AI.Projects.FabricIQPreviewToolboxTool","com.azure.ai.agents.models.FileInputDetail":"OpenAI.FileInputDetail","com.azure.ai.agents.models.FileSearchTool":"OpenAI.FileSearchTool","com.azure.ai.agents.models.FileSearchToolboxTool":"Azure.AI.Projects.FileSearchToolboxTool","com.azure.ai.agents.models.FixedRatioVersionSelectionRule":"Azure.AI.Projects.FixedRatioVersionSelectionRule","com.azure.ai.agents.models.FunctionShellToolParamEnvironment":"OpenAI.FunctionShellToolParamEnvironment","com.azure.ai.agents.models.FunctionShellToolParamEnvironmentType":"OpenAI.FunctionShellToolParamEnvironmentType","com.azure.ai.agents.models.FunctionShellToolParameter":"OpenAI.FunctionShellToolParam","com.azure.ai.agents.models.FunctionShellToolParameterEnvironmentContainerReferenceParameter":"OpenAI.FunctionShellToolParamEnvironmentContainerReferenceParam","com.azure.ai.agents.models.FunctionShellToolParameterEnvironmentLocalEnvironmentParameter":"OpenAI.FunctionShellToolParamEnvironmentLocalEnvironmentParam","com.azure.ai.agents.models.FunctionTool":"OpenAI.FunctionTool","com.azure.ai.agents.models.GetMicrosoft365AppPackageOptions":null,"com.azure.ai.agents.models.GitHubCopilotBuiltInTool":"Azure.AI.Projects.GitHubCopilotBuiltInTool","com.azure.ai.agents.models.GitHubCopilotHarness":"Azure.AI.Projects.GitHubCopilotHarness","com.azure.ai.agents.models.GitHubCopilotToolsetConfig":"Azure.AI.Projects.GitHubCopilotToolsetConfig","com.azure.ai.agents.models.GitHubCopilotToolsetDefaultConfig":"Azure.AI.Projects.GitHubCopilotToolsetDefaultConfig","com.azure.ai.agents.models.GitHubCopilotToolsetPreview":"Azure.AI.Projects.GitHubCopilotToolsetPreview","com.azure.ai.agents.models.GrammarSyntax":"GrammarSyntaxExpandable","com.azure.ai.agents.models.HeaderTelemetryEndpointAuth":"Azure.AI.Projects.HeaderTelemetryEndpointAuth","com.azure.ai.agents.models.HostedAgentDefinition":"Azure.AI.Projects.HostedAgentDefinition","com.azure.ai.agents.models.HybridSearchOptions":"OpenAI.HybridSearchOptions","com.azure.ai.agents.models.ImageDetail":"OpenAI.ImageDetail","com.azure.ai.agents.models.ImageGenActionEnum":"ImageGenActionEnumExpandable","com.azure.ai.agents.models.ImageGenTool":"OpenAI.ImageGenTool","com.azure.ai.agents.models.ImageGenToolBackground":"ImageGenToolBackgroundExpandable","com.azure.ai.agents.models.ImageGenToolInputImageMask":"OpenAI.ImageGenToolInputImageMask","com.azure.ai.agents.models.ImageGenToolModel":"OpenAI.ImageGenTool.model.anonymous","com.azure.ai.agents.models.ImageGenToolModeration":"ImageGenToolModerationExpandable","com.azure.ai.agents.models.ImageGenToolOutputFormat":"ImageGenToolOutputFormatExpandable","com.azure.ai.agents.models.ImageGenToolQuality":"ImageGenToolQualityExpandable","com.azure.ai.agents.models.ImageGenToolSize":"ImageGenToolSizeExpandable","com.azure.ai.agents.models.ImportTelephonyCampaignRecipientsRequest":"Azure.AI.Projects.ImportTelephonyCampaignRecipientsRequest","com.azure.ai.agents.models.IncludeEnum":"OpenAI.IncludeEnum","com.azure.ai.agents.models.InlineSkillParameter":"OpenAI.InlineSkillParam","com.azure.ai.agents.models.InlineSkillSourceParameter":"OpenAI.InlineSkillSourceParam","com.azure.ai.agents.models.InputFidelity":"InputFidelityExpandable","com.azure.ai.agents.models.InputFileContent":"OpenAI.InputFileContent","com.azure.ai.agents.models.InputImageContent":"OpenAI.InputImageContent","com.azure.ai.agents.models.InputTextContent":"OpenAI.InputTextContent","com.azure.ai.agents.models.InvocationsProtocolConfiguration":"Azure.AI.Projects.InvocationsProtocolConfiguration","com.azure.ai.agents.models.InvocationsWsProtocolConfiguration":"Azure.AI.Projects.InvocationsWsProtocolConfiguration","com.azure.ai.agents.models.JobStatus":"Azure.AI.Projects.JobStatus","com.azure.ai.agents.models.ListMemoriesOptions":null,"com.azure.ai.agents.models.LocalShellToolParameter":"OpenAI.LocalShellToolParam","com.azure.ai.agents.models.LocalSkillParameter":"OpenAI.LocalSkillParam","com.azure.ai.agents.models.LogProbProperties":"OpenAI.LogProbProperties","com.azure.ai.agents.models.ManagedAgentIdentityBlueprintReference":"Azure.AI.Projects.ManagedAgentIdentityBlueprintReference","com.azure.ai.agents.models.McpListToolsTool":"OpenAI.MCPListToolsTool","com.azure.ai.agents.models.McpListToolsToolAnnotations":"OpenAI.MCPListToolsToolAnnotations","com.azure.ai.agents.models.McpListToolsToolInputSchema":"OpenAI.MCPListToolsToolInputSchema","com.azure.ai.agents.models.McpProtocolConfiguration":"Azure.AI.Projects.McpProtocolConfiguration","com.azure.ai.agents.models.McpTool":"OpenAI.MCPTool","com.azure.ai.agents.models.McpToolConnectorId":"McpToolConnectorIdExpandable","com.azure.ai.agents.models.McpToolFilter":"OpenAI.MCPToolFilter","com.azure.ai.agents.models.McpToolRequireApproval":"OpenAI.MCPToolRequireApproval","com.azure.ai.agents.models.McpToolboxTool":"Azure.AI.Projects.MCPToolboxTool","com.azure.ai.agents.models.MemoryCommandToolCall":"Azure.AI.Projects.MemoryCommandToolCall","com.azure.ai.agents.models.MemoryCommandToolCallOutput":"Azure.AI.Projects.MemoryCommandToolCallOutput","com.azure.ai.agents.models.MemoryItem":"Azure.AI.Projects.MemoryItem","com.azure.ai.agents.models.MemoryItemKind":"Azure.AI.Projects.MemoryItemKind","com.azure.ai.agents.models.MemoryOperation":"Azure.AI.Projects.MemoryOperation","com.azure.ai.agents.models.MemoryOperationKind":"Azure.AI.Projects.MemoryOperationKind","com.azure.ai.agents.models.MemorySearchItem":"Azure.AI.Projects.MemorySearchItem","com.azure.ai.agents.models.MemorySearchOptions":"Azure.AI.Projects.MemorySearchOptions","com.azure.ai.agents.models.MemorySearchPreviewTool":"Azure.AI.Projects.MemorySearchPreviewTool","com.azure.ai.agents.models.MemorySearchToolCall":"Azure.AI.Projects.MemorySearchToolCall","com.azure.ai.agents.models.MemoryStoreDefaultDefinition":"Azure.AI.Projects.MemoryStoreDefaultDefinition","com.azure.ai.agents.models.MemoryStoreDefaultOptions":"Azure.AI.Projects.MemoryStoreDefaultOptions","com.azure.ai.agents.models.MemoryStoreDefinition":"Azure.AI.Projects.MemoryStoreDefinition","com.azure.ai.agents.models.MemoryStoreDetails":"Azure.AI.Projects.MemoryStoreObject","com.azure.ai.agents.models.MemoryStoreKind":"Azure.AI.Projects.MemoryStoreKind","com.azure.ai.agents.models.MemoryStoreObjectType":"Azure.AI.Projects.MemoryStoreObjectType","com.azure.ai.agents.models.MemoryStoreOperationUsage":"Azure.AI.Projects.MemoryStoreOperationUsage","com.azure.ai.agents.models.MemoryStoreSearchResponse":"Azure.AI.Projects.MemoryStoreSearchResponse","com.azure.ai.agents.models.MemoryStoreUpdateCompletedResult":"Azure.AI.Projects.MemoryStoreUpdateCompletedResult","com.azure.ai.agents.models.MemoryStoreUpdateResponse":"Azure.AI.Projects.MemoryStoreUpdateResponse","com.azure.ai.agents.models.MemoryStoreUpdateStatus":"Azure.AI.Projects.MemoryStoreUpdateStatus","com.azure.ai.agents.models.Microsoft365PermissionScopes":"Azure.AI.Projects.Microsoft365PermissionScopes","com.azure.ai.agents.models.Microsoft365PublishDefaults":"Azure.AI.Projects.Microsoft365PublishDefaults","com.azure.ai.agents.models.Microsoft365PublishResult":"Azure.AI.Projects.Microsoft365PublishResponse","com.azure.ai.agents.models.Microsoft365PublishScope":"Azure.AI.Projects.Microsoft365PublishScope","com.azure.ai.agents.models.MicrosoftFabricPreviewTool":"Azure.AI.Projects.MicrosoftFabricPreviewTool","com.azure.ai.agents.models.ModelRouterAttempt":"Azure.AI.Projects.ModelRouterAttempt","com.azure.ai.agents.models.ModelRouterAttemptError":"Azure.AI.Projects.ModelRouterAttemptError","com.azure.ai.agents.models.ModelRouterAttemptResult":"Azure.AI.Projects.ModelRouterAttemptResult","com.azure.ai.agents.models.ModelRouterDetails":"Azure.AI.Projects.ModelRouterDetails","com.azure.ai.agents.models.ModelRouterMode":"Azure.AI.Projects.ModelRouterMode","com.azure.ai.agents.models.ModelSelectionDetails":"Azure.AI.Projects.ModelSelectionDetails","com.azure.ai.agents.models.NamespaceTool":"OpenAI.NamespaceToolParam","com.azure.ai.agents.models.NoiseReductionType":"OpenAI.NoiseReductionType","com.azure.ai.agents.models.OpenApiAnonymousAuthDetails":"Azure.AI.Projects.OpenApiAnonymousAuthDetails","com.azure.ai.agents.models.OpenApiAuthDetails":"Azure.AI.Projects.OpenApiAuthDetails","com.azure.ai.agents.models.OpenApiAuthType":"Azure.AI.Projects.OpenApiAuthType","com.azure.ai.agents.models.OpenApiFunctionDefinition":"Azure.AI.Projects.OpenApiFunctionDefinition","com.azure.ai.agents.models.OpenApiFunctionDefinitionFunction":"Azure.AI.Projects.OpenApiFunctionDefinition.function.anonymous","com.azure.ai.agents.models.OpenApiManagedAuthDetails":"Azure.AI.Projects.OpenApiManagedAuthDetails","com.azure.ai.agents.models.OpenApiManagedSecurityScheme":"Azure.AI.Projects.OpenApiManagedSecurityScheme","com.azure.ai.agents.models.OpenApiProjectConnectionAuthDetails":"Azure.AI.Projects.OpenApiProjectConnectionAuthDetails","com.azure.ai.agents.models.OpenApiProjectConnectionSecurityScheme":"Azure.AI.Projects.OpenApiProjectConnectionSecurityScheme","com.azure.ai.agents.models.OpenApiTool":"Azure.AI.Projects.OpenApiTool","com.azure.ai.agents.models.OpenApiToolCall":"Azure.AI.Projects.OpenApiToolCall","com.azure.ai.agents.models.OpenApiToolCallOutput":"Azure.AI.Projects.OpenApiToolCallOutput","com.azure.ai.agents.models.OpenApiToolboxTool":"Azure.AI.Projects.OpenApiToolboxTool","com.azure.ai.agents.models.OptimizedAgentIdentifier":"Azure.AI.Projects.OptimizedAgentIdentifier","com.azure.ai.agents.models.OtlpTelemetryEndpoint":"Azure.AI.Projects.OtlpTelemetryEndpoint","com.azure.ai.agents.models.PSTNTelephonyTransferDestination":"Azure.AI.Projects.PSTNTelephonyTransferDestination","com.azure.ai.agents.models.PageOrder":"Azure.AI.Projects.PageOrder","com.azure.ai.agents.models.PickPropertiesVoiceAgentAudioConfig":"TypeSpec.PickProperties","com.azure.ai.agents.models.ProceduralMemoryItem":"Azure.AI.Projects.ProceduralMemoryItem","com.azure.ai.agents.models.ProgrammaticToolCallingParameter":"OpenAI.ProgrammaticToolCallingParam","com.azure.ai.agents.models.PromotionInfo":"Azure.AI.Projects.PromotionInfo","com.azure.ai.agents.models.Prompt":"OpenAI.Prompt","com.azure.ai.agents.models.PromptAgentDefinition":"Azure.AI.Projects.PromptAgentDefinition","com.azure.ai.agents.models.PromptAgentDefinitionTextOptions":"Azure.AI.Projects.PromptAgentDefinitionTextOptions","com.azure.ai.agents.models.PromptCacheBreakpointConfig":"OpenAI.PromptCacheBreakpointConfig","com.azure.ai.agents.models.ProtocolConfiguration":"Azure.AI.Projects.ProtocolConfiguration","com.azure.ai.agents.models.ProtocolVersionRecord":"Azure.AI.Projects.ProtocolVersionRecord","com.azure.ai.agents.models.PublishAgentToMicrosoft365Options":null,"com.azure.ai.agents.models.PublishApprovalStatus":"Azure.AI.Projects.PublishApprovalStatus","com.azure.ai.agents.models.PublishTelephonyCampaignRequest":"Azure.AI.Projects.PublishTelephonyCampaignRequest","com.azure.ai.agents.models.RaiConfig":"Azure.AI.Projects.RaiConfig","com.azure.ai.agents.models.RaiInvocationContentType":"Azure.AI.Projects.RaiInvocationContentType","com.azure.ai.agents.models.RaiInvocationMode":"Azure.AI.Projects.RaiInvocationMode","com.azure.ai.agents.models.RaiInvocationModeration":"Azure.AI.Projects.RaiInvocationModeration","com.azure.ai.agents.models.RaiSseTextSelector":"Azure.AI.Projects.RaiSseTextSelector","com.azure.ai.agents.models.RankerVersionType":"RankerVersionTypeExpandable","com.azure.ai.agents.models.RankingOptions":"OpenAI.RankingOptions","com.azure.ai.agents.models.RealtimeAudioFormats":"OpenAI.RealtimeAudioFormats","com.azure.ai.agents.models.RealtimeAudioFormatsAudioPcm":"OpenAI.RealtimeAudioFormatsAudioPcm","com.azure.ai.agents.models.RealtimeAudioFormatsAudioPcmRate":null,"com.azure.ai.agents.models.RealtimeAudioFormatsAudioPcma":"OpenAI.RealtimeAudioFormatsAudioPcma","com.azure.ai.agents.models.RealtimeAudioFormatsAudioPcmu":"OpenAI.RealtimeAudioFormatsAudioPcmu","com.azure.ai.agents.models.RealtimeAudioFormatsType":"OpenAI.RealtimeAudioFormatsType","com.azure.ai.agents.models.RealtimeClientEvent":"OpenAI.RealtimeClientEvent","com.azure.ai.agents.models.RealtimeClientEventConversationItemCreate":"OpenAI.RealtimeClientEventConversationItemCreate","com.azure.ai.agents.models.RealtimeClientEventConversationItemDelete":"OpenAI.RealtimeClientEventConversationItemDelete","com.azure.ai.agents.models.RealtimeClientEventConversationItemRetrieve":"OpenAI.RealtimeClientEventConversationItemRetrieve","com.azure.ai.agents.models.RealtimeClientEventConversationItemTruncate":"OpenAI.RealtimeClientEventConversationItemTruncate","com.azure.ai.agents.models.RealtimeClientEventInputAudioBufferAppend":"OpenAI.RealtimeClientEventInputAudioBufferAppend","com.azure.ai.agents.models.RealtimeClientEventInputAudioBufferClear":"OpenAI.RealtimeClientEventInputAudioBufferClear","com.azure.ai.agents.models.RealtimeClientEventInputAudioBufferCommit":"OpenAI.RealtimeClientEventInputAudioBufferCommit","com.azure.ai.agents.models.RealtimeClientEventOutputAudioBufferClear":"OpenAI.RealtimeClientEventOutputAudioBufferClear","com.azure.ai.agents.models.RealtimeClientEventResponseCancel":"OpenAI.RealtimeClientEventResponseCancel","com.azure.ai.agents.models.RealtimeClientEventResponseCreate":"OpenAI.RealtimeClientEventResponseCreate","com.azure.ai.agents.models.RealtimeClientEventSessionUpdate":"OpenAI.RealtimeClientEventSessionUpdate","com.azure.ai.agents.models.RealtimeClientEventSessionUpdateSessionModel":"OpenAI.RealtimeClientEventSessionUpdate.session.model.anonymous","com.azure.ai.agents.models.RealtimeClientEventSessionUpdateSessionOutputModality":"OpenAI.RealtimeClientEventSessionUpdate.session.output_modality.anonymous","com.azure.ai.agents.models.RealtimeClientEventSessionUpdateSessionTruncation":"OpenAI.RealtimeClientEventSessionUpdate.session.truncation.anonymous","com.azure.ai.agents.models.RealtimeClientEventSessionUpdateSessionTruncation1":"OpenAI.RealtimeClientEventSessionUpdate.session.truncation.anonymous","com.azure.ai.agents.models.RealtimeClientEventType":"OpenAI.RealtimeClientEventType","com.azure.ai.agents.models.RealtimeConversationItem":"OpenAI.RealtimeConversationItem","com.azure.ai.agents.models.RealtimeConversationItemFunctionCall":"OpenAI.RealtimeConversationItemFunctionCall","com.azure.ai.agents.models.RealtimeConversationItemFunctionCallOutput":"OpenAI.RealtimeConversationItemFunctionCallOutput","com.azure.ai.agents.models.RealtimeConversationItemFunctionCallOutputStatus":"OpenAI.RealtimeConversationItemFunctionCallOutput.status.anonymous","com.azure.ai.agents.models.RealtimeConversationItemFunctionCallStatus":"OpenAI.RealtimeConversationItemFunctionCall.status.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessage":"OpenAI.RealtimeConversationItemMessage","com.azure.ai.agents.models.RealtimeConversationItemMessageAssistant":"OpenAI.RealtimeConversationItemMessageAssistant","com.azure.ai.agents.models.RealtimeConversationItemMessageAssistantContent":"OpenAI.RealtimeConversationItemMessageAssistantContent","com.azure.ai.agents.models.RealtimeConversationItemMessageAssistantContentType":"OpenAI.RealtimeConversationItemMessageAssistantContent.type.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessageAssistantStatus":"OpenAI.RealtimeConversationItemMessageAssistant.status.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessageSystem":"OpenAI.RealtimeConversationItemMessageSystem","com.azure.ai.agents.models.RealtimeConversationItemMessageSystemContent":"OpenAI.RealtimeConversationItemMessageSystemContent","com.azure.ai.agents.models.RealtimeConversationItemMessageSystemContentType":null,"com.azure.ai.agents.models.RealtimeConversationItemMessageSystemStatus":"OpenAI.RealtimeConversationItemMessageSystem.status.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessageType":"OpenAI.RealtimeConversationItemMessageType","com.azure.ai.agents.models.RealtimeConversationItemMessageUser":"OpenAI.RealtimeConversationItemMessageUser","com.azure.ai.agents.models.RealtimeConversationItemMessageUserContent":"OpenAI.RealtimeConversationItemMessageUserContent","com.azure.ai.agents.models.RealtimeConversationItemMessageUserContentDetail":"OpenAI.RealtimeConversationItemMessageUserContent.detail.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessageUserContentType":"OpenAI.RealtimeConversationItemMessageUserContent.type.anonymous","com.azure.ai.agents.models.RealtimeConversationItemMessageUserStatus":"OpenAI.RealtimeConversationItemMessageUser.status.anonymous","com.azure.ai.agents.models.RealtimeConversationItemObject":"RealtimeConversationItemObject","com.azure.ai.agents.models.RealtimeConversationItemType":"OpenAI.RealtimeConversationItemType","com.azure.ai.agents.models.RealtimeFunctionTool":"OpenAI.RealtimeFunctionTool","com.azure.ai.agents.models.RealtimeMCPApprovalRequest":"OpenAI.RealtimeMCPApprovalRequest","com.azure.ai.agents.models.RealtimeMCPApprovalResponse":"OpenAI.RealtimeMCPApprovalResponse","com.azure.ai.agents.models.RealtimeMCPError":"OpenAI.RealtimeMCPError","com.azure.ai.agents.models.RealtimeMCPHttpError":"OpenAI.RealtimeMCPHTTPError","com.azure.ai.agents.models.RealtimeMCPListTools":"OpenAI.RealtimeMCPListTools","com.azure.ai.agents.models.RealtimeMCPProtocolError":"OpenAI.RealtimeMCPProtocolError","com.azure.ai.agents.models.RealtimeMCPToolCall":"OpenAI.RealtimeMCPToolCall","com.azure.ai.agents.models.RealtimeMCPToolExecutionError":"OpenAI.RealtimeMCPToolExecutionError","com.azure.ai.agents.models.RealtimeMcpErrorType":"OpenAI.RealtimeMcpErrorType","com.azure.ai.agents.models.RealtimeReasoning":"OpenAI.RealtimeReasoning","com.azure.ai.agents.models.RealtimeReasoningEffort":"OpenAI.RealtimeReasoningEffort","com.azure.ai.agents.models.RealtimeResponseStatusDetails":"OpenAI.RealtimeResponseStatusDetails","com.azure.ai.agents.models.RealtimeResponseStatusDetailsError":"OpenAI.RealtimeResponseStatusDetailsError","com.azure.ai.agents.models.RealtimeResponseStatusDetailsReason":"OpenAI.RealtimeResponseStatusDetails.reason.anonymous","com.azure.ai.agents.models.RealtimeResponseStatusDetailsType":"OpenAI.RealtimeResponseStatusDetails.type.anonymous","com.azure.ai.agents.models.RealtimeResponseUsage":"OpenAI.RealtimeResponseUsage","com.azure.ai.agents.models.RealtimeResponseUsageInputTokenDetails":"OpenAI.RealtimeResponseUsageInputTokenDetails","com.azure.ai.agents.models.RealtimeResponseUsageInputTokenDetailsCachedTokensDetails":"OpenAI.RealtimeResponseUsageInputTokenDetailsCachedTokensDetails","com.azure.ai.agents.models.RealtimeResponseUsageOutputTokenDetails":"OpenAI.RealtimeResponseUsageOutputTokenDetails","com.azure.ai.agents.models.RealtimeServerEvent":"OpenAI.RealtimeServerEvent","com.azure.ai.agents.models.RealtimeServerEventConversationCreated":"OpenAI.RealtimeServerEventConversationCreated","com.azure.ai.agents.models.RealtimeServerEventConversationCreatedConversation":"OpenAI.RealtimeServerEventConversationCreatedConversation","com.azure.ai.agents.models.RealtimeServerEventConversationCreatedConversationObject":null,"com.azure.ai.agents.models.RealtimeServerEventConversationItemAdded":"OpenAI.RealtimeServerEventConversationItemAdded","com.azure.ai.agents.models.RealtimeServerEventConversationItemCreated":"OpenAI.RealtimeServerEventConversationItemCreated","com.azure.ai.agents.models.RealtimeServerEventConversationItemDeleted":"OpenAI.RealtimeServerEventConversationItemDeleted","com.azure.ai.agents.models.RealtimeServerEventConversationItemDone":"OpenAI.RealtimeServerEventConversationItemDone","com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionCompleted":"OpenAI.RealtimeServerEventConversationItemInputAudioTranscriptionCompleted","com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionDelta":"OpenAI.RealtimeServerEventConversationItemInputAudioTranscriptionDelta","com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionFailed":"OpenAI.RealtimeServerEventConversationItemInputAudioTranscriptionFailed","com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionFailedError":"OpenAI.RealtimeServerEventConversationItemInputAudioTranscriptionFailedError","com.azure.ai.agents.models.RealtimeServerEventConversationItemInputAudioTranscriptionSegment":"OpenAI.RealtimeServerEventConversationItemInputAudioTranscriptionSegment","com.azure.ai.agents.models.RealtimeServerEventConversationItemRetrieved":"OpenAI.RealtimeServerEventConversationItemRetrieved","com.azure.ai.agents.models.RealtimeServerEventConversationItemTruncated":"OpenAI.RealtimeServerEventConversationItemTruncated","com.azure.ai.agents.models.RealtimeServerEventErrorError":"OpenAI.RealtimeServerEventErrorError","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferCleared":"OpenAI.RealtimeServerEventInputAudioBufferCleared","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferCommitted":"OpenAI.RealtimeServerEventInputAudioBufferCommitted","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferDtmfEventReceived":"OpenAI.RealtimeServerEventInputAudioBufferDtmfEventReceived","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferSpeechStarted":"OpenAI.RealtimeServerEventInputAudioBufferSpeechStarted","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferSpeechStopped":"OpenAI.RealtimeServerEventInputAudioBufferSpeechStopped","com.azure.ai.agents.models.RealtimeServerEventInputAudioBufferTimeoutTriggered":"OpenAI.RealtimeServerEventInputAudioBufferTimeoutTriggered","com.azure.ai.agents.models.RealtimeServerEventMCPListToolsCompleted":"OpenAI.RealtimeServerEventMCPListToolsCompleted","com.azure.ai.agents.models.RealtimeServerEventMCPListToolsFailed":"OpenAI.RealtimeServerEventMCPListToolsFailed","com.azure.ai.agents.models.RealtimeServerEventMCPListToolsInProgress":"OpenAI.RealtimeServerEventMCPListToolsInProgress","com.azure.ai.agents.models.RealtimeServerEventOutputAudioBufferCleared":"OpenAI.RealtimeServerEventOutputAudioBufferCleared","com.azure.ai.agents.models.RealtimeServerEventOutputAudioBufferStarted":"OpenAI.RealtimeServerEventOutputAudioBufferStarted","com.azure.ai.agents.models.RealtimeServerEventOutputAudioBufferStopped":"OpenAI.RealtimeServerEventOutputAudioBufferStopped","com.azure.ai.agents.models.RealtimeServerEventRateLimitsUpdated":"OpenAI.RealtimeServerEventRateLimitsUpdated","com.azure.ai.agents.models.RealtimeServerEventRateLimitsUpdatedRateLimits":"OpenAI.RealtimeServerEventRateLimitsUpdatedRateLimits","com.azure.ai.agents.models.RealtimeServerEventRateLimitsUpdatedRateLimitsName":"OpenAI.RealtimeServerEventRateLimitsUpdatedRateLimits.name.anonymous","com.azure.ai.agents.models.RealtimeServerEventRealtimeServerEventError":"OpenAI.RealtimeServerEventRealtimeServerEventError","com.azure.ai.agents.models.RealtimeServerEventResponseAudioDelta":"OpenAI.RealtimeServerEventResponseAudioDelta","com.azure.ai.agents.models.RealtimeServerEventResponseAudioDone":"OpenAI.RealtimeServerEventResponseAudioDone","com.azure.ai.agents.models.RealtimeServerEventResponseAudioTranscriptDelta":"OpenAI.RealtimeServerEventResponseAudioTranscriptDelta","com.azure.ai.agents.models.RealtimeServerEventResponseAudioTranscriptDone":"OpenAI.RealtimeServerEventResponseAudioTranscriptDone","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartAdded":"OpenAI.RealtimeServerEventResponseContentPartAdded","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartAddedPart":"OpenAI.RealtimeServerEventResponseContentPartAddedPart","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartAddedPartType":"OpenAI.RealtimeServerEventResponseContentPartAddedPart.type.anonymous","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartDone":"OpenAI.RealtimeServerEventResponseContentPartDone","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartDonePart":"OpenAI.RealtimeServerEventResponseContentPartDonePart","com.azure.ai.agents.models.RealtimeServerEventResponseContentPartDonePartType":"OpenAI.RealtimeServerEventResponseContentPartDonePart.type.anonymous","com.azure.ai.agents.models.RealtimeServerEventResponseCreated":"OpenAI.RealtimeServerEventResponseCreated","com.azure.ai.agents.models.RealtimeServerEventResponseDone":"OpenAI.RealtimeServerEventResponseDone","com.azure.ai.agents.models.RealtimeServerEventResponseFunctionCallArgumentsDelta":"OpenAI.RealtimeServerEventResponseFunctionCallArgumentsDelta","com.azure.ai.agents.models.RealtimeServerEventResponseFunctionCallArgumentsDone":"OpenAI.RealtimeServerEventResponseFunctionCallArgumentsDone","com.azure.ai.agents.models.RealtimeServerEventResponseMCPCallArgumentsDelta":"OpenAI.RealtimeServerEventResponseMCPCallArgumentsDelta","com.azure.ai.agents.models.RealtimeServerEventResponseMCPCallArgumentsDone":"OpenAI.RealtimeServerEventResponseMCPCallArgumentsDone","com.azure.ai.agents.models.RealtimeServerEventResponseMCPCallCompleted":"OpenAI.RealtimeServerEventResponseMCPCallCompleted","com.azure.ai.agents.models.RealtimeServerEventResponseMCPCallFailed":"OpenAI.RealtimeServerEventResponseMCPCallFailed","com.azure.ai.agents.models.RealtimeServerEventResponseMCPCallInProgress":"OpenAI.RealtimeServerEventResponseMCPCallInProgress","com.azure.ai.agents.models.RealtimeServerEventResponseOutputItemAdded":"OpenAI.RealtimeServerEventResponseOutputItemAdded","com.azure.ai.agents.models.RealtimeServerEventResponseOutputItemDone":"OpenAI.RealtimeServerEventResponseOutputItemDone","com.azure.ai.agents.models.RealtimeServerEventResponseTextDelta":"OpenAI.RealtimeServerEventResponseTextDelta","com.azure.ai.agents.models.RealtimeServerEventResponseTextDone":"OpenAI.RealtimeServerEventResponseTextDone","com.azure.ai.agents.models.RealtimeServerEventSessionCreated":"OpenAI.RealtimeServerEventSessionCreated","com.azure.ai.agents.models.RealtimeServerEventSessionUpdated":"OpenAI.RealtimeServerEventSessionUpdated","com.azure.ai.agents.models.RealtimeServerEventType":"OpenAI.RealtimeServerEventType","com.azure.ai.agents.models.RealtimeSessionCreateRequestGA":"OpenAI.RealtimeSessionCreateRequestGA","com.azure.ai.agents.models.RealtimeSessionCreateRequestGAAudio":"OpenAI.RealtimeSessionCreateRequestGAAudio","com.azure.ai.agents.models.RealtimeSessionCreateRequestGAAudioInput":"OpenAI.RealtimeSessionCreateRequestGAAudioInput","com.azure.ai.agents.models.RealtimeSessionCreateRequestGAAudioInputNoiseReduction":"OpenAI.RealtimeSessionCreateRequestGAAudioInputNoiseReduction","com.azure.ai.agents.models.RealtimeSessionCreateRequestGAAudioOutput":"OpenAI.RealtimeSessionCreateRequestGAAudioOutput","com.azure.ai.agents.models.RealtimeSessionCreateRequestGAAudioOutputVoice":"OpenAI.RealtimeSessionCreateRequestGAAudioOutput.voice.anonymous","com.azure.ai.agents.models.RealtimeSessionCreateRequestGATracing":"OpenAI.RealtimeSessionCreateRequestGATracing","com.azure.ai.agents.models.RealtimeSessionCreateRequestUnion":"OpenAI.RealtimeSessionCreateRequestUnion","com.azure.ai.agents.models.RealtimeSessionCreateRequestUnionType":"OpenAI.RealtimeSessionCreateRequestUnionType","com.azure.ai.agents.models.RealtimeTranscriptionSessionCreateRequestGA":"OpenAI.RealtimeTranscriptionSessionCreateRequestGA","com.azure.ai.agents.models.RealtimeTranscriptionSessionCreateRequestGAAudio":"OpenAI.RealtimeTranscriptionSessionCreateRequestGAAudio","com.azure.ai.agents.models.RealtimeTranscriptionSessionCreateRequestGAAudioInput":"OpenAI.RealtimeTranscriptionSessionCreateRequestGAAudioInput","com.azure.ai.agents.models.RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction":"OpenAI.RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction","com.azure.ai.agents.models.RealtimeTurnDetection":"OpenAI.RealtimeTurnDetection","com.azure.ai.agents.models.RealtimeTurnDetectionSemanticVad":"OpenAI.RealtimeTurnDetectionSemanticVad","com.azure.ai.agents.models.RealtimeTurnDetectionServerVad":"OpenAI.RealtimeTurnDetectionServerVad","com.azure.ai.agents.models.RealtimeTurnDetectionType":"OpenAI.RealtimeTurnDetectionType","com.azure.ai.agents.models.ReminderPreviewToolboxTool":"Azure.AI.Projects.ReminderPreviewToolboxTool","com.azure.ai.agents.models.ResponseFormatJsonSchemaInner":"OpenAI.ResponseFormatJsonSchemaSchema","com.azure.ai.agents.models.ResponsePromptVariables":"OpenAI.ResponsePromptVariables","com.azure.ai.agents.models.ResponseUsageInputTokensDetails":"OpenAI.ResponseUsageInputTokensDetails","com.azure.ai.agents.models.ResponseUsageOutputTokensDetails":"OpenAI.ResponseUsageOutputTokensDetails","com.azure.ai.agents.models.ResponsesProtocolConfiguration":"Azure.AI.Projects.ResponsesProtocolConfiguration","com.azure.ai.agents.models.RoutingConfiguration":"Azure.AI.Projects.RoutingConfiguration","com.azure.ai.agents.models.RoutingTraceEntry":"Azure.AI.Projects.RoutingTraceEntry","com.azure.ai.agents.models.SearchContentType":"OpenAI.SearchContentType","com.azure.ai.agents.models.SearchContextSize":"SearchContextSizeExpandable","com.azure.ai.agents.models.SessionAffinityConfiguration":"Azure.AI.Projects.SessionAffinityConfiguration","com.azure.ai.agents.models.SessionAffinityDecision":"Azure.AI.Projects.SessionAffinityDecision","com.azure.ai.agents.models.SessionAffinityDetails":"Azure.AI.Projects.SessionAffinityDetails","com.azure.ai.agents.models.SessionAffinityMode":"Azure.AI.Projects.SessionAffinityMode","com.azure.ai.agents.models.SessionAffinityRequestMode":"Azure.AI.Projects.SessionAffinityRequestMode","com.azure.ai.agents.models.SessionAffinitySource":"Azure.AI.Projects.SessionAffinitySource","com.azure.ai.agents.models.SessionConfiguration":"Azure.AI.Projects.SessionConfiguration","com.azure.ai.agents.models.SessionDirectoryEntry":"Azure.AI.Projects.SessionDirectoryEntry","com.azure.ai.agents.models.SessionFileWriteResult":"Azure.AI.Projects.SessionFileWriteResponse","com.azure.ai.agents.models.SessionLogEvent":"Azure.AI.Projects.SessionLogEvent","com.azure.ai.agents.models.SessionLogEventType":"Azure.AI.Projects.SessionLogEventType","com.azure.ai.agents.models.SharepointGroundingToolCall":"Azure.AI.Projects.SharepointGroundingToolCall","com.azure.ai.agents.models.SharepointGroundingToolCallOutput":"Azure.AI.Projects.SharepointGroundingToolCallOutput","com.azure.ai.agents.models.SharepointGroundingToolParameters":"Azure.AI.Projects.SharepointGroundingToolParameters","com.azure.ai.agents.models.SharepointPreviewTool":"Azure.AI.Projects.SharepointPreviewTool","com.azure.ai.agents.models.ShellToolboxTool":"Azure.AI.Projects.ShellToolboxTool","com.azure.ai.agents.models.SipTelephonyTransferDestination":"Azure.AI.Projects.SipTelephonyTransferDestination","com.azure.ai.agents.models.SkillReference":"Azure.AI.Projects.SkillReference","com.azure.ai.agents.models.SkillReferenceParameter":"OpenAI.SkillReferenceParam","com.azure.ai.agents.models.StructuredInputDefinition":"Azure.AI.Projects.StructuredInputDefinition","com.azure.ai.agents.models.StructuredOutputDefinition":"Azure.AI.Projects.StructuredOutputDefinition","com.azure.ai.agents.models.TeamsPhoneExtensionTelephonyBinding":"Azure.AI.Projects.TeamsPhoneExtensionTelephonyBinding","com.azure.ai.agents.models.TeamsPhoneExtensionTelephonyBindingListItem":"Azure.AI.Projects.TeamsPhoneExtensionTelephonyBindingListItem","com.azure.ai.agents.models.TeamsTelephonyTransferDestination":"Azure.AI.Projects.TeamsTelephonyTransferDestination","com.azure.ai.agents.models.TelemetryConfig":"Azure.AI.Projects.TelemetryConfig","com.azure.ai.agents.models.TelemetryDataKind":"Azure.AI.Projects.TelemetryDataKind","com.azure.ai.agents.models.TelemetryEndpoint":"Azure.AI.Projects.TelemetryEndpoint","com.azure.ai.agents.models.TelemetryEndpointAuth":"Azure.AI.Projects.TelemetryEndpointAuth","com.azure.ai.agents.models.TelemetryEndpointAuthType":"Azure.AI.Projects.TelemetryEndpointAuthType","com.azure.ai.agents.models.TelemetryEndpointKind":"Azure.AI.Projects.TelemetryEndpointKind","com.azure.ai.agents.models.TelemetryTransportProtocol":"Azure.AI.Projects.TelemetryTransportProtocol","com.azure.ai.agents.models.TelephonyBinding":"Azure.AI.Projects.TelephonyBinding","com.azure.ai.agents.models.TelephonyBindingListItem":"Azure.AI.Projects.TelephonyBindingListItem","com.azure.ai.agents.models.TelephonyBindingStatus":"Azure.AI.Projects.TelephonyBindingStatus","com.azure.ai.agents.models.TelephonyCallDurationBasis":"Azure.AI.Projects.TelephonyCallDurationBasis","com.azure.ai.agents.models.TelephonyCallJob":"Azure.AI.Projects.TelephonyCallJob","com.azure.ai.agents.models.TelephonyCallJobCancellation":"Azure.AI.Projects.TelephonyCallJobCancellation","com.azure.ai.agents.models.TelephonyCallJobSchedule":"Azure.AI.Projects.TelephonyCallJobSchedule","com.azure.ai.agents.models.TelephonyCallJobStatus":"Azure.AI.Projects.TelephonyCallJobStatus","com.azure.ai.agents.models.TelephonyCallLifecycleEvent":"Azure.AI.Projects.TelephonyCallLifecycleEvent","com.azure.ai.agents.models.TelephonyCallLifecycleEventName":"Azure.AI.Projects.TelephonyCallLifecycleEventName","com.azure.ai.agents.models.TelephonyCallLifecycleEventOutcome":"Azure.AI.Projects.TelephonyCallLifecycleEventOutcome","com.azure.ai.agents.models.TelephonyCallLifecycleEventSource":"Azure.AI.Projects.TelephonyCallLifecycleEventSource","com.azure.ai.agents.models.TelephonyCallPhase":"Azure.AI.Projects.TelephonyCallPhase","com.azure.ai.agents.models.TelephonyCallRecord":"Azure.AI.Projects.TelephonyCallRecord","com.azure.ai.agents.models.TelephonyCallStatus":"Azure.AI.Projects.TelephonyCallStatus","com.azure.ai.agents.models.TelephonyCallSummary":"Azure.AI.Projects.TelephonyCallSummary","com.azure.ai.agents.models.TelephonyCallTimestampSource":"Azure.AI.Projects.TelephonyCallTimestampSource","com.azure.ai.agents.models.TelephonyCallTiming":"Azure.AI.Projects.TelephonyCallTiming","com.azure.ai.agents.models.TelephonyCallTrace":"Azure.AI.Projects.TelephonyCallTrace","com.azure.ai.agents.models.TelephonyCallTraceMode":"Azure.AI.Projects.TelephonyCallTraceMode","com.azure.ai.agents.models.TelephonyCallTraceStatus":"Azure.AI.Projects.TelephonyCallTraceStatus","com.azure.ai.agents.models.TelephonyCampaign":"Azure.AI.Projects.TelephonyCampaign","com.azure.ai.agents.models.TelephonyCampaignCallJobCounts":"Azure.AI.Projects.TelephonyCampaignCallJobCounts","com.azure.ai.agents.models.TelephonyCampaignConfigurationStatus":"Azure.AI.Projects.TelephonyCampaignConfigurationStatus","com.azure.ai.agents.models.TelephonyCampaignDuplicateHandling":"Azure.AI.Projects.TelephonyCampaignDuplicateHandling","com.azure.ai.agents.models.TelephonyCampaignExecutionStatus":"Azure.AI.Projects.TelephonyCampaignExecutionStatus","com.azure.ai.agents.models.TelephonyCampaignRecipientImport":"Azure.AI.Projects.TelephonyCampaignRecipientImport","com.azure.ai.agents.models.TelephonyCampaignRecipientImportFormat":"Azure.AI.Projects.TelephonyCampaignRecipientImportFormat","com.azure.ai.agents.models.TelephonyCampaignRecipientImportSource":"Azure.AI.Projects.TelephonyCampaignRecipientImportSource","com.azure.ai.agents.models.TelephonyCampaignRecipientImportStatus":"Azure.AI.Projects.TelephonyCampaignRecipientImportStatus","com.azure.ai.agents.models.TelephonyCampaignRecipientMapping":"Azure.AI.Projects.TelephonyCampaignRecipientMapping","com.azure.ai.agents.models.TelephonyCampaignRecipientMappingRequest":"Azure.AI.Projects.TelephonyCampaignRecipientMappingRequest","com.azure.ai.agents.models.TelephonyCampaignSchedule":"Azure.AI.Projects.TelephonyCampaignSchedule","com.azure.ai.agents.models.TelephonyCampaignScheduleType":"Azure.AI.Projects.TelephonyCampaignScheduleType","com.azure.ai.agents.models.TelephonyOperation":"Azure.AI.Projects.TelephonyOperation","com.azure.ai.agents.models.TelephonyOperationResource":"Azure.AI.Projects.TelephonyOperationResource","com.azure.ai.agents.models.TelephonyOperationStatus":"Azure.AI.Projects.TelephonyOperationStatus","com.azure.ai.agents.models.TelephonyOutboundDestination":"Azure.AI.Projects.TelephonyOutboundDestination","com.azure.ai.agents.models.TelephonyOutboundDestinationType":"Azure.AI.Projects.TelephonyOutboundDestinationType","com.azure.ai.agents.models.TelephonyOutboundFixedIntervalRetryPolicy":"Azure.AI.Projects.TelephonyOutboundFixedIntervalRetryPolicy","com.azure.ai.agents.models.TelephonyOutboundFixedIntervalRetryPolicyResponse":"Azure.AI.Projects.TelephonyOutboundFixedIntervalRetryPolicyResponse","com.azure.ai.agents.models.TelephonyOutboundRetryPolicy":"Azure.AI.Projects.TelephonyOutboundRetryPolicy","com.azure.ai.agents.models.TelephonyOutboundRetryPolicyResponse":"Azure.AI.Projects.TelephonyOutboundRetryPolicyResponse","com.azure.ai.agents.models.TelephonyOutboundRetryPolicyType":"Azure.AI.Projects.TelephonyOutboundRetryPolicyType","com.azure.ai.agents.models.TelephonyProvider":"Azure.AI.Projects.TelephonyProvider","com.azure.ai.agents.models.TelephonyTransferDestination":"Azure.AI.Projects.TelephonyTransferDestination","com.azure.ai.agents.models.TelephonyTransferDestinationKind":"Azure.AI.Projects.TelephonyTransferDestinationKind","com.azure.ai.agents.models.TelephonyTransferTarget":"Azure.AI.Projects.TelephonyTransferTarget","com.azure.ai.agents.models.TelephonyTransferTargets":"Azure.AI.Projects.TelephonyTransferTargets","com.azure.ai.agents.models.TextResponseFormatConfiguration":"OpenAI.TextResponseFormatConfiguration","com.azure.ai.agents.models.TextResponseFormatConfigurationResponseFormatJsonObject":"OpenAI.TextResponseFormatConfigurationResponseFormatJsonObject","com.azure.ai.agents.models.TextResponseFormatConfigurationResponseFormatText":"OpenAI.TextResponseFormatConfigurationResponseFormatText","com.azure.ai.agents.models.TextResponseFormatConfigurationType":"OpenAI.TextResponseFormatConfigurationType","com.azure.ai.agents.models.TextResponseFormatJsonSchema":"OpenAI.TextResponseFormatJsonSchema","com.azure.ai.agents.models.TokenLimits":"OpenAI.TokenLimits","com.azure.ai.agents.models.Tool":"OpenAI.Tool","com.azure.ai.agents.models.ToolCallStatus":"Azure.AI.Projects.ToolCallStatus","com.azure.ai.agents.models.ToolChoiceFunction":"OpenAI.ToolChoiceFunction","com.azure.ai.agents.models.ToolChoiceMCP":"OpenAI.ToolChoiceMCP","com.azure.ai.agents.models.ToolChoiceOptions":"OpenAI.ToolChoiceOptions","com.azure.ai.agents.models.ToolChoiceParam":"OpenAI.ToolChoiceParam","com.azure.ai.agents.models.ToolChoiceParamType":"OpenAI.ToolChoiceParamType","com.azure.ai.agents.models.ToolConfig":"Azure.AI.Projects.ToolConfig","com.azure.ai.agents.models.ToolProjectConnection":"Azure.AI.Projects.ToolProjectConnection","com.azure.ai.agents.models.ToolSearchExecutionType":"OpenAI.ToolSearchExecutionType","com.azure.ai.agents.models.ToolSearchTool":"OpenAI.ToolSearchToolParam","com.azure.ai.agents.models.ToolSearchToolboxTool":"Azure.AI.Projects.ToolSearchToolboxTool","com.azure.ai.agents.models.ToolType":"OpenAI.ToolType","com.azure.ai.agents.models.ToolboxDetails":"Azure.AI.Projects.ToolboxObject","com.azure.ai.agents.models.ToolboxPolicies":"Azure.AI.Projects.ToolboxPolicies","com.azure.ai.agents.models.ToolboxSearchPreviewToolboxTool":"Azure.AI.Projects.ToolboxSearchPreviewToolboxTool","com.azure.ai.agents.models.ToolboxShellContainerAutoEnvironment":"Azure.AI.Projects.ToolboxShellContainerAutoEnvironment","com.azure.ai.agents.models.ToolboxShellContainerReferenceEnvironment":"Azure.AI.Projects.ToolboxShellContainerReferenceEnvironment","com.azure.ai.agents.models.ToolboxShellEnvironment":"Azure.AI.Projects.ToolboxShellEnvironment","com.azure.ai.agents.models.ToolboxShellNetworkPolicy":"Azure.AI.Projects.ToolboxShellNetworkPolicy","com.azure.ai.agents.models.ToolboxShellNetworkPolicyDisabled":"Azure.AI.Projects.ToolboxShellNetworkPolicyDisabled","com.azure.ai.agents.models.ToolboxSkill":"Azure.AI.Projects.ToolboxSkill","com.azure.ai.agents.models.ToolboxSkillReference":"Azure.AI.Projects.ToolboxSkillReference","com.azure.ai.agents.models.ToolboxTool":"Azure.AI.Projects.ToolboxTool","com.azure.ai.agents.models.ToolboxToolType":"Azure.AI.Projects.ToolboxToolType","com.azure.ai.agents.models.ToolboxVersionDetails":"Azure.AI.Projects.ToolboxVersionObject","com.azure.ai.agents.models.ToolboxVersions":"Azure.AI.Projects.ToolboxVersions","com.azure.ai.agents.models.TranscriptTextUsageDuration":"OpenAI.TranscriptTextUsageDuration","com.azure.ai.agents.models.TranscriptTextUsageTokens":"OpenAI.TranscriptTextUsageTokens","com.azure.ai.agents.models.TranscriptTextUsageTokensInputTokenDetails":"OpenAI.TranscriptTextUsageTokensInputTokenDetails","com.azure.ai.agents.models.TranscriptionLanguage":"OpenAI.TranscriptionLanguage","com.azure.ai.agents.models.TwilioTelephonyBinding":"Azure.AI.Projects.TwilioTelephonyBinding","com.azure.ai.agents.models.TwilioTelephonyBindingListItem":"Azure.AI.Projects.TwilioTelephonyBindingListItem","com.azure.ai.agents.models.UpdateAgentDetailsOptions":"Azure.AI.Projects.patchAgentObject.Request.anonymous","com.azure.ai.agents.models.UpdateTelephonyBindingRequest":"Azure.AI.Projects.UpdateTelephonyBindingRequest","com.azure.ai.agents.models.UserProfileMemoryItem":"Azure.AI.Projects.UserProfileMemoryItem","com.azure.ai.agents.models.VersionIndicator":"Azure.AI.Projects.VersionIndicator","com.azure.ai.agents.models.VersionIndicatorType":"Azure.AI.Projects.VersionIndicatorType","com.azure.ai.agents.models.VersionRefIndicator":"Azure.AI.Projects.VersionRefIndicator","com.azure.ai.agents.models.VersionSelectionRule":"Azure.AI.Projects.VersionSelectionRule","com.azure.ai.agents.models.VersionSelector":"Azure.AI.Projects.VersionSelector","com.azure.ai.agents.models.VersionSelectorType":"Azure.AI.Projects.VersionSelectorType","com.azure.ai.agents.models.VoiceAgentAnimationConfig":"Azure.AI.Projects.VoiceAgentAnimationConfig","com.azure.ai.agents.models.VoiceAgentAnimationOutputType":"Azure.AI.Projects.VoiceAgentAnimationOutputType","com.azure.ai.agents.models.VoiceAgentAudioConfig":"Azure.AI.Projects.VoiceAgentAudioConfig","com.azure.ai.agents.models.VoiceAgentAudioInputConfig":"Azure.AI.Projects.VoiceAgentAudioInputConfig","com.azure.ai.agents.models.VoiceAgentAudioInputConfigTranscriptionDelay":"Azure.AI.Projects.VoiceAgentAudioInputConfig.transcription.delay.anonymous","com.azure.ai.agents.models.VoiceAgentAudioOutputConfig":"Azure.AI.Projects.VoiceAgentAudioOutputConfig","com.azure.ai.agents.models.VoiceAgentAudioTimestampType":"Azure.AI.Projects.VoiceAgentAudioTimestampType","com.azure.ai.agents.models.VoiceAgentAvatarConfig":"Azure.AI.Projects.VoiceAgentAvatarConfig","com.azure.ai.agents.models.VoiceAgentAvatarIceServer":"Azure.AI.Projects.VoiceAgentAvatarIceServer","com.azure.ai.agents.models.VoiceAgentAvatarOutputProtocol":"Azure.AI.Projects.VoiceAgentAvatarOutputProtocol","com.azure.ai.agents.models.VoiceAgentAvatarScene":"Azure.AI.Projects.VoiceAgentAvatarScene","com.azure.ai.agents.models.VoiceAgentAvatarType":"Azure.AI.Projects.VoiceAgentAvatarType","com.azure.ai.agents.models.VoiceAgentAvatarVideoBackground":"Azure.AI.Projects.VoiceAgentAvatarVideoBackground","com.azure.ai.agents.models.VoiceAgentAvatarVideoCrop":"Azure.AI.Projects.VoiceAgentAvatarVideoCrop","com.azure.ai.agents.models.VoiceAgentAvatarVideoParams":"Azure.AI.Projects.VoiceAgentAvatarVideoParams","com.azure.ai.agents.models.VoiceAgentAvatarVideoResolution":"Azure.AI.Projects.VoiceAgentAvatarVideoResolution","com.azure.ai.agents.models.VoiceAgentAzureSemanticVadEnTurnDetection":"Azure.AI.Projects.VoiceAgentAzureSemanticVadEnTurnDetection","com.azure.ai.agents.models.VoiceAgentAzureSemanticVadMultilingualTurnDetection":"Azure.AI.Projects.VoiceAgentAzureSemanticVadMultilingualTurnDetection","com.azure.ai.agents.models.VoiceAgentAzureSemanticVadTurnDetection":"Azure.AI.Projects.VoiceAgentAzureSemanticVadTurnDetection","com.azure.ai.agents.models.VoiceAgentClientEventRtcCallSdpCreate":"Azure.AI.Projects.VoiceAgentClientEventRtcCallSdpCreate","com.azure.ai.agents.models.VoiceAgentClientEventSessionAvatarConnect":"Azure.AI.Projects.VoiceAgentClientEventSessionAvatarConnect","com.azure.ai.agents.models.VoiceAgentDefinition":"Azure.AI.Projects.VoiceAgentDefinition","com.azure.ai.agents.models.VoiceAgentEchoCancellation":"Azure.AI.Projects.VoiceAgentEchoCancellation","com.azure.ai.agents.models.VoiceAgentEchoCancellationReferenceSource":"Azure.AI.Projects.VoiceAgentEchoCancellationReferenceSource","com.azure.ai.agents.models.VoiceAgentEndConversationSystemTool":"Azure.AI.Projects.VoiceAgentEndConversationSystemTool","com.azure.ai.agents.models.VoiceAgentEndOfUtteranceDetection":"Azure.AI.Projects.VoiceAgentEndOfUtteranceDetection","com.azure.ai.agents.models.VoiceAgentEndOfUtteranceDetectionModel":"Azure.AI.Projects.VoiceAgentEndOfUtteranceDetectionModel","com.azure.ai.agents.models.VoiceAgentEndOfUtteranceThresholdLevel":"Azure.AI.Projects.VoiceAgentEndOfUtteranceThresholdLevel","com.azure.ai.agents.models.VoiceAgentFunctionTool":"Azure.AI.Projects.VoiceAgentFunctionTool","com.azure.ai.agents.models.VoiceAgentFunctionToolType":null,"com.azure.ai.agents.models.VoiceAgentGreetingConfig":"Azure.AI.Projects.VoiceAgentGreetingConfig","com.azure.ai.agents.models.VoiceAgentInputTranscription":"Azure.AI.Projects.VoiceAgentInputTranscription","com.azure.ai.agents.models.VoiceAgentInputTranscriptionModel":"Azure.AI.Projects.VoiceAgentInputTranscriptionModel","com.azure.ai.agents.models.VoiceAgentInterimResponseConfig":"Azure.AI.Projects.VoiceAgentInterimResponseConfig","com.azure.ai.agents.models.VoiceAgentInterimResponseTrigger":"Azure.AI.Projects.VoiceAgentInterimResponseTrigger","com.azure.ai.agents.models.VoiceAgentLlmGeneratedGreetingConfig":"Azure.AI.Projects.VoiceAgentLlmGeneratedGreetingConfig","com.azure.ai.agents.models.VoiceAgentLlmInterimResponseConfig":"Azure.AI.Projects.VoiceAgentLlmInterimResponseConfig","com.azure.ai.agents.models.VoiceAgentMcpTool":"Azure.AI.Projects.VoiceAgentMcpTool","com.azure.ai.agents.models.VoiceAgentNoiseReduction":"Azure.AI.Projects.VoiceAgentNoiseReduction","com.azure.ai.agents.models.VoiceAgentNoiseReductionType":"Azure.AI.Projects.VoiceAgentNoiseReductionType","com.azure.ai.agents.models.VoiceAgentRealtimeResponse":"Azure.AI.Projects.VoiceAgentRealtimeResponse","com.azure.ai.agents.models.VoiceAgentRealtimeResponseBase":"Azure.AI.Projects.VoiceAgentRealtimeResponseBase","com.azure.ai.agents.models.VoiceAgentResponseCreateParams":"Azure.AI.Projects.VoiceAgentResponseCreateParams","com.azure.ai.agents.models.VoiceAgentResponseCreateParamsConversation":"Azure.AI.Projects.VoiceAgentResponseCreateParams.conversation.anonymous","com.azure.ai.agents.models.VoiceAgentRtcCallErrorDetails":"Azure.AI.Projects.VoiceAgentRtcCallErrorDetails","com.azure.ai.agents.models.VoiceAgentSemanticVadTurnDetection":"Azure.AI.Projects.VoiceAgentSemanticVadTurnDetection","com.azure.ai.agents.models.VoiceAgentSemanticVadTurnDetectionEagerness":"Azure.AI.Projects.VoiceAgentSemanticVadTurnDetection.eagerness.anonymous","com.azure.ai.agents.models.VoiceAgentServerEventResponseAnimationBlendshapesDelta":"Azure.AI.Projects.VoiceAgentServerEventResponseAnimationBlendshapesDelta","com.azure.ai.agents.models.VoiceAgentServerEventResponseAnimationBlendshapesDone":"Azure.AI.Projects.VoiceAgentServerEventResponseAnimationBlendshapesDone","com.azure.ai.agents.models.VoiceAgentServerEventResponseAnimationVisemeDelta":"Azure.AI.Projects.VoiceAgentServerEventResponseAnimationVisemeDelta","com.azure.ai.agents.models.VoiceAgentServerEventResponseAnimationVisemeDone":"Azure.AI.Projects.VoiceAgentServerEventResponseAnimationVisemeDone","com.azure.ai.agents.models.VoiceAgentServerEventResponseAudioTimestampDelta":"Azure.AI.Projects.VoiceAgentServerEventResponseAudioTimestampDelta","com.azure.ai.agents.models.VoiceAgentServerEventResponseAudioTimestampDone":"Azure.AI.Projects.VoiceAgentServerEventResponseAudioTimestampDone","com.azure.ai.agents.models.VoiceAgentServerEventResponseVideoDelta":"Azure.AI.Projects.VoiceAgentServerEventResponseVideoDelta","com.azure.ai.agents.models.VoiceAgentServerEventRtcCallError":"Azure.AI.Projects.VoiceAgentServerEventRtcCallError","com.azure.ai.agents.models.VoiceAgentServerEventRtcCallSdpCreated":"Azure.AI.Projects.VoiceAgentServerEventRtcCallSdpCreated","com.azure.ai.agents.models.VoiceAgentServerEventSessionAvatarConnecting":"Azure.AI.Projects.VoiceAgentServerEventSessionAvatarConnecting","com.azure.ai.agents.models.VoiceAgentServerEventSessionAvatarSwitchToIdle":"Azure.AI.Projects.VoiceAgentServerEventSessionAvatarSwitchToIdle","com.azure.ai.agents.models.VoiceAgentServerEventSessionAvatarSwitchToSpeaking":"Azure.AI.Projects.VoiceAgentServerEventSessionAvatarSwitchToSpeaking","com.azure.ai.agents.models.VoiceAgentServerEventSessionSubagentAborted":"Azure.AI.Projects.VoiceAgentServerEventSessionSubagentAborted","com.azure.ai.agents.models.VoiceAgentServerEventSessionSubagentCompleted":"Azure.AI.Projects.VoiceAgentServerEventSessionSubagentCompleted","com.azure.ai.agents.models.VoiceAgentServerEventSessionSubagentStarted":"Azure.AI.Projects.VoiceAgentServerEventSessionSubagentStarted","com.azure.ai.agents.models.VoiceAgentServerEventWarning":"Azure.AI.Projects.VoiceAgentServerEventWarning","com.azure.ai.agents.models.VoiceAgentServerEventWarningDetails":"Azure.AI.Projects.VoiceAgentServerEventWarningDetails","com.azure.ai.agents.models.VoiceAgentServerVadTurnDetection":"Azure.AI.Projects.VoiceAgentServerVadTurnDetection","com.azure.ai.agents.models.VoiceAgentSessionAvatarConfig":"Azure.AI.Projects.VoiceAgentSessionAvatarConfig","com.azure.ai.agents.models.VoiceAgentSessionIncludeOption":"Azure.AI.Projects.VoiceAgentSessionIncludeOption","com.azure.ai.agents.models.VoiceAgentSessionResponseConfig":"Azure.AI.Projects.VoiceAgentSessionResponseConfig","com.azure.ai.agents.models.VoiceAgentSessionUpdateConfig":"Azure.AI.Projects.VoiceAgentSessionUpdateConfig","com.azure.ai.agents.models.VoiceAgentStaticInterimResponseConfig":"Azure.AI.Projects.VoiceAgentStaticInterimResponseConfig","com.azure.ai.agents.models.VoiceAgentSubagent":"Azure.AI.Projects.VoiceAgentSubagent","com.azure.ai.agents.models.VoiceAgentSubagentAbortReason":"Azure.AI.Projects.VoiceAgentSubagentAbortReason","com.azure.ai.agents.models.VoiceAgentSubagentConfig":"Azure.AI.Projects.VoiceAgentSubagentConfig","com.azure.ai.agents.models.VoiceAgentSubagentResponsePolicy":"Azure.AI.Projects.VoiceAgentSubagentResponsePolicy","com.azure.ai.agents.models.VoiceAgentSystemTool":"Azure.AI.Projects.VoiceAgentSystemTool","com.azure.ai.agents.models.VoiceAgentSystemToolName":"Azure.AI.Projects.VoiceAgentSystemToolName","com.azure.ai.agents.models.VoiceAgentTemplateGreetingConfig":"Azure.AI.Projects.VoiceAgentTemplateGreetingConfig","com.azure.ai.agents.models.VoiceAgentTool":"Azure.AI.Projects.VoiceAgentTool","com.azure.ai.agents.models.VoiceAgentToolResponseScheduling":"Azure.AI.Projects.VoiceAgentToolResponseScheduling","com.azure.ai.agents.models.VoiceAgentToolboxTool":"Azure.AI.Projects.VoiceAgentToolboxTool","com.azure.ai.agents.models.VoiceAgentTranscriptionPhrase":"Azure.AI.Projects.VoiceAgentTranscriptionPhrase","com.azure.ai.agents.models.VoiceAgentTranscriptionWord":"Azure.AI.Projects.VoiceAgentTranscriptionWord","com.azure.ai.agents.models.VoiceAgentTransport":"Azure.AI.Projects.VoiceAgentTransport","com.azure.ai.agents.models.VoiceAgentTurnDetectionConfig":"Azure.AI.Projects.VoiceAgentTurnDetectionConfig","com.azure.ai.agents.models.VoiceAgentTurnDetectionType":"Azure.AI.Projects.VoiceAgentTurnDetectionType","com.azure.ai.agents.models.VoiceAudioCodec":"Azure.AI.Projects.VoiceAudioCodec","com.azure.ai.agents.models.VoiceAudioContainerFormat":"Azure.AI.Projects.VoiceAudioContainerFormat","com.azure.ai.agents.models.VoiceAudioRole":"Azure.AI.Projects.VoiceAudioRole","com.azure.ai.agents.models.VoiceConversation":"Azure.AI.Projects.VoiceConversation","com.azure.ai.agents.models.VoiceConversationEngine":"Azure.AI.Projects.VoiceConversationEngine","com.azure.ai.agents.models.VoiceConversationStatus":"Azure.AI.Projects.VoiceConversationStatus","com.azure.ai.agents.models.VoiceGeneratedItemAudioResponse":"Azure.AI.Projects.VoiceGeneratedItemAudioResponse","com.azure.ai.agents.models.VoiceHostedAgentConversationEngine":"Azure.AI.Projects.VoiceHostedAgentConversationEngine","com.azure.ai.agents.models.VoiceIdsShared":"OpenAI.VoiceIdsShared","com.azure.ai.agents.models.VoiceItemAudioResponse":"Azure.AI.Projects.VoiceItemAudioResponse","com.azure.ai.agents.models.VoiceModelType":"Azure.AI.Projects.VoiceModelType","com.azure.ai.agents.models.VoiceOutputModality":"Azure.AI.Projects.VoiceOutputModality","com.azure.ai.agents.models.VoiceRecordingChannelLayout":"Azure.AI.Projects.VoiceRecordingChannelLayout","com.azure.ai.agents.models.VoiceRecordingResponse":"Azure.AI.Projects.VoiceRecordingResponse","com.azure.ai.agents.models.VoiceResponse":"Azure.AI.Projects.VoiceResponse","com.azure.ai.agents.models.VoiceResponseAudio":"Azure.AI.Projects.VoiceResponseAudio","com.azure.ai.agents.models.VoiceResponseAudioOutput":"Azure.AI.Projects.VoiceResponseAudioOutput","com.azure.ai.agents.models.VoiceResponseBase":"Azure.AI.Projects.VoiceResponseBase","com.azure.ai.agents.models.VoiceResponseBaseObject":null,"com.azure.ai.agents.models.VoiceResponseBaseObject1":null,"com.azure.ai.agents.models.VoiceResponseBaseOutputModality":"Azure.AI.Projects.VoiceResponseBase.output_modality.anonymous","com.azure.ai.agents.models.VoiceResponseBaseStatus":"Azure.AI.Projects.VoiceResponseBase.status.anonymous","com.azure.ai.agents.models.VoiceType":"Azure.AI.Projects.VoiceType","com.azure.ai.agents.models.WebIqPreviewTool":"Azure.AI.Projects.WebIQPreviewTool","com.azure.ai.agents.models.WebIqPreviewToolboxTool":"Azure.AI.Projects.WebIQPreviewToolboxTool","com.azure.ai.agents.models.WebSearchApproximateLocation":"OpenAI.WebSearchApproximateLocation","com.azure.ai.agents.models.WebSearchConfiguration":"Azure.AI.Projects.WebSearchConfiguration","com.azure.ai.agents.models.WebSearchPreviewTool":"OpenAI.WebSearchPreviewTool","com.azure.ai.agents.models.WebSearchTool":"OpenAI.WebSearchTool","com.azure.ai.agents.models.WebSearchToolFilters":"OpenAI.WebSearchToolFilters","com.azure.ai.agents.models.WebSearchToolSearchContextSize":"WebSearchToolSearchContextSizeExpandable","com.azure.ai.agents.models.WebSearchToolboxTool":"Azure.AI.Projects.WebSearchToolboxTool","com.azure.ai.agents.models.WorkIqPreviewTool":"Azure.AI.Projects.WorkIQPreviewTool","com.azure.ai.agents.models.WorkIqPreviewToolboxTool":"Azure.AI.Projects.WorkIQPreviewToolboxTool","com.azure.ai.agents.models.WorkflowAgentDefinition":"Azure.AI.Projects.WorkflowAgentDefinition"},"generatedFiles":["src/main/java/com/azure/ai/agents/AgentsAsyncClient.java","src/main/java/com/azure/ai/agents/AgentsClient.java","src/main/java/com/azure/ai/agents/AgentsClientBuilder.java","src/main/java/com/azure/ai/agents/AgentsServiceVersion.java","src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsAsyncClient.java","src/main/java/com/azure/ai/agents/BetaAgentEndpointConversationsClient.java","src/main/java/com/azure/ai/agents/BetaAgentTelephonyAsyncClient.java","src/main/java/com/azure/ai/agents/BetaAgentTelephonyClient.java","src/main/java/com/azure/ai/agents/BetaAgentsAsyncClient.java","src/main/java/com/azure/ai/agents/BetaAgentsClient.java","src/main/java/com/azure/ai/agents/BetaMemoryStoresAsyncClient.java","src/main/java/com/azure/ai/agents/BetaMemoryStoresClient.java","src/main/java/com/azure/ai/agents/ToolboxesAsyncClient.java","src/main/java/com/azure/ai/agents/ToolboxesClient.java","src/main/java/com/azure/ai/agents/implementation/AgentsClientImpl.java","src/main/java/com/azure/ai/agents/implementation/AgentsImpl.java","src/main/java/com/azure/ai/agents/implementation/BetaAgentEndpointConversationsImpl.java","src/main/java/com/azure/ai/agents/implementation/BetaAgentTelephoniesImpl.java","src/main/java/com/azure/ai/agents/implementation/BetaAgentsImpl.java","src/main/java/com/azure/ai/agents/implementation/BetaMemoryStoresImpl.java","src/main/java/com/azure/ai/agents/implementation/JsonMergePatchHelper.java","src/main/java/com/azure/ai/agents/implementation/MultipartFormDataHelper.java","src/main/java/com/azure/ai/agents/implementation/OperationLocationPollingStrategy.java","src/main/java/com/azure/ai/agents/implementation/PollingUtils.java","src/main/java/com/azure/ai/agents/implementation/SyncOperationLocationPollingStrategy.java","src/main/java/com/azure/ai/agents/implementation/ToolboxesImpl.java","src/main/java/com/azure/ai/agents/implementation/models/AgentDefinitionOptInKeys.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentFromCodeContent.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentFromManifestRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentOptions.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentVersionFromManifestRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateAgentVersionRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateMemoryRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateMemoryStoreRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateSessionRequest.java","src/main/java/com/azure/ai/agents/implementation/models/CreateToolboxVersionRequest.java","src/main/java/com/azure/ai/agents/implementation/models/FoundryFeaturesOptInKeys.java","src/main/java/com/azure/ai/agents/implementation/models/GetMicrosoft365AppPackageRequest.java","src/main/java/com/azure/ai/agents/implementation/models/ListMemoriesRequest.java","src/main/java/com/azure/ai/agents/implementation/models/PublishAgentToMicrosoft365Request.java","src/main/java/com/azure/ai/agents/implementation/models/ReplaceTelephonyTransferTargetsRequest.java","src/main/java/com/azure/ai/agents/implementation/models/SearchMemoriesRequest.java","src/main/java/com/azure/ai/agents/implementation/models/TransferTelephonyCallRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateAgentFromManifestRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateAgentRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateMemoriesRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateMemoryRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateMemoryStoreRequest.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateToolboxInput.java","src/main/java/com/azure/ai/agents/implementation/models/UpdateToolboxRequest.java","src/main/java/com/azure/ai/agents/implementation/models/package-info.java","src/main/java/com/azure/ai/agents/implementation/package-info.java","src/main/java/com/azure/ai/agents/models/A2APreviewTool.java","src/main/java/com/azure/ai/agents/models/A2APreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/A2AProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/A2AProtocolVersion.java","src/main/java/com/azure/ai/agents/models/A2ATool.java","src/main/java/com/azure/ai/agents/models/A2AToolCall.java","src/main/java/com/azure/ai/agents/models/A2AToolCallOutput.java","src/main/java/com/azure/ai/agents/models/A2AToolboxTool.java","src/main/java/com/azure/ai/agents/models/AISearchIndexResource.java","src/main/java/com/azure/ai/agents/models/ActivityProtocolAccessBoundary.java","src/main/java/com/azure/ai/agents/models/ActivityProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/AgentBlueprintReference.java","src/main/java/com/azure/ai/agents/models/AgentBlueprintReferenceType.java","src/main/java/com/azure/ai/agents/models/AgentCard.java","src/main/java/com/azure/ai/agents/models/AgentCardSkill.java","src/main/java/com/azure/ai/agents/models/AgentDefinition.java","src/main/java/com/azure/ai/agents/models/AgentDetails.java","src/main/java/com/azure/ai/agents/models/AgentDetailsVersions.java","src/main/java/com/azure/ai/agents/models/AgentEndpointAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/AgentEndpointAuthorizationSchemeType.java","src/main/java/com/azure/ai/agents/models/AgentEndpointConfig.java","src/main/java/com/azure/ai/agents/models/AgentEndpointProtocol.java","src/main/java/com/azure/ai/agents/models/AgentHarness.java","src/main/java/com/azure/ai/agents/models/AgentIdentity.java","src/main/java/com/azure/ai/agents/models/AgentIdentityStatus.java","src/main/java/com/azure/ai/agents/models/AgentKind.java","src/main/java/com/azure/ai/agents/models/AgentObjectType.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationCandidate.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetCriterion.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetInput.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetInputType.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationDatasetItem.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationEvaluatorReference.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationInlineDatasetInput.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJob.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobInputs.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobListItem.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobProgress.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationJobResult.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationOptions.java","src/main/java/com/azure/ai/agents/models/AgentOptimizationReferenceDatasetInput.java","src/main/java/com/azure/ai/agents/models/AgentReference.java","src/main/java/com/azure/ai/agents/models/AgentSessionResource.java","src/main/java/com/azure/ai/agents/models/AgentSessionStatus.java","src/main/java/com/azure/ai/agents/models/AgentState.java","src/main/java/com/azure/ai/agents/models/AgentStateSource.java","src/main/java/com/azure/ai/agents/models/AgentVersionDetails.java","src/main/java/com/azure/ai/agents/models/AgentVersionStatus.java","src/main/java/com/azure/ai/agents/models/ApiError.java","src/main/java/com/azure/ai/agents/models/ApplyPatchToolParameter.java","src/main/java/com/azure/ai/agents/models/ApproximateLocation.java","src/main/java/com/azure/ai/agents/models/AudioTranscription.java","src/main/java/com/azure/ai/agents/models/AudioTranscriptionModel.java","src/main/java/com/azure/ai/agents/models/AutoCodeInterpreterToolParameter.java","src/main/java/com/azure/ai/agents/models/AzureAISearchQueryType.java","src/main/java/com/azure/ai/agents/models/AzureAISearchTool.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolCall.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolCallOutput.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolResource.java","src/main/java/com/azure/ai/agents/models/AzureAISearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/AzureCreateResponseDetails.java","src/main/java/com/azure/ai/agents/models/AzureCreateResponseOptions.java","src/main/java/com/azure/ai/agents/models/AzureFunctionBinding.java","src/main/java/com/azure/ai/agents/models/AzureFunctionDefinition.java","src/main/java/com/azure/ai/agents/models/AzureFunctionDefinitionDetails.java","src/main/java/com/azure/ai/agents/models/AzureFunctionStorageQueue.java","src/main/java/com/azure/ai/agents/models/AzureFunctionTool.java","src/main/java/com/azure/ai/agents/models/AzureFunctionToolCall.java","src/main/java/com/azure/ai/agents/models/AzureFunctionToolCallOutput.java","src/main/java/com/azure/ai/agents/models/AzureUserSecurityContext.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchConfiguration.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchPreviewTool.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchToolCall.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchToolCallOutput.java","src/main/java/com/azure/ai/agents/models/BingCustomSearchToolParameters.java","src/main/java/com/azure/ai/agents/models/BingGroundingSearchConfiguration.java","src/main/java/com/azure/ai/agents/models/BingGroundingSearchToolParameters.java","src/main/java/com/azure/ai/agents/models/BingGroundingTool.java","src/main/java/com/azure/ai/agents/models/BingGroundingToolCall.java","src/main/java/com/azure/ai/agents/models/BingGroundingToolCallOutput.java","src/main/java/com/azure/ai/agents/models/BotServiceAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/BotServiceRbacAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/BotServiceTenantAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationPreviewTool.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationTool.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolCall.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolCallOutput.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolConnectionParameters.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolParameters.java","src/main/java/com/azure/ai/agents/models/BrowserAutomationToolboxTool.java","src/main/java/com/azure/ai/agents/models/CallableToolAllowedCaller.java","src/main/java/com/azure/ai/agents/models/CaptureStructuredOutputsTool.java","src/main/java/com/azure/ai/agents/models/ChatSummaryMemoryItem.java","src/main/java/com/azure/ai/agents/models/CodeConfiguration.java","src/main/java/com/azure/ai/agents/models/CodeDependencyResolution.java","src/main/java/com/azure/ai/agents/models/CodeFileDetails.java","src/main/java/com/azure/ai/agents/models/CodeInterpreterTool.java","src/main/java/com/azure/ai/agents/models/CodeInterpreterToolboxTool.java","src/main/java/com/azure/ai/agents/models/ComputerEnvironment.java","src/main/java/com/azure/ai/agents/models/ComputerTool.java","src/main/java/com/azure/ai/agents/models/ComputerUsePreviewTool.java","src/main/java/com/azure/ai/agents/models/ContainerAutoParameter.java","src/main/java/com/azure/ai/agents/models/ContainerConfiguration.java","src/main/java/com/azure/ai/agents/models/ContainerMemoryLimit.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyAllowlistParameter.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyDisabledParameter.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyDomainSecretParameter.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyParamType.java","src/main/java/com/azure/ai/agents/models/ContainerNetworkPolicyParameter.java","src/main/java/com/azure/ai/agents/models/ContainerSkill.java","src/main/java/com/azure/ai/agents/models/ContainerSkillType.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionFromCodeContent.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionFromCodeMetadata.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionInput.java","src/main/java/com/azure/ai/agents/models/CreateAgentVersionOptions.java","src/main/java/com/azure/ai/agents/models/CreateTeamsPhoneExtensionTelephonyBindingRequest.java","src/main/java/com/azure/ai/agents/models/CreateTelephonyBindingRequest.java","src/main/java/com/azure/ai/agents/models/CreateTelephonyCallJobRequest.java","src/main/java/com/azure/ai/agents/models/CreateTelephonyCampaignRequest.java","src/main/java/com/azure/ai/agents/models/CreateTranscriptionResponseJsonUsage.java","src/main/java/com/azure/ai/agents/models/CreateTranscriptionResponseJsonUsageType.java","src/main/java/com/azure/ai/agents/models/CreateTwilioTelephonyBindingRequest.java","src/main/java/com/azure/ai/agents/models/CustomGrammarFormatParameter.java","src/main/java/com/azure/ai/agents/models/CustomTextFormatParameter.java","src/main/java/com/azure/ai/agents/models/CustomToolParamFormat.java","src/main/java/com/azure/ai/agents/models/CustomToolParamFormatType.java","src/main/java/com/azure/ai/agents/models/CustomToolParameter.java","src/main/java/com/azure/ai/agents/models/DigitalWorkerType.java","src/main/java/com/azure/ai/agents/models/EntraAuthorizationScheme.java","src/main/java/com/azure/ai/agents/models/EvaluationLevel.java","src/main/java/com/azure/ai/agents/models/ExternalAgentDefinition.java","src/main/java/com/azure/ai/agents/models/FabricDataAgentToolCall.java","src/main/java/com/azure/ai/agents/models/FabricDataAgentToolCallOutput.java","src/main/java/com/azure/ai/agents/models/FabricDataAgentToolParameters.java","src/main/java/com/azure/ai/agents/models/FabricIqPreviewTool.java","src/main/java/com/azure/ai/agents/models/FabricIqPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/FileInputDetail.java","src/main/java/com/azure/ai/agents/models/FileSearchTool.java","src/main/java/com/azure/ai/agents/models/FileSearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/FixedRatioVersionSelectionRule.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParamEnvironment.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParamEnvironmentType.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParameter.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParameterEnvironmentContainerReferenceParameter.java","src/main/java/com/azure/ai/agents/models/FunctionShellToolParameterEnvironmentLocalEnvironmentParameter.java","src/main/java/com/azure/ai/agents/models/FunctionTool.java","src/main/java/com/azure/ai/agents/models/GetMicrosoft365AppPackageOptions.java","src/main/java/com/azure/ai/agents/models/GitHubCopilotBuiltInTool.java","src/main/java/com/azure/ai/agents/models/GitHubCopilotHarness.java","src/main/java/com/azure/ai/agents/models/GitHubCopilotToolsetConfig.java","src/main/java/com/azure/ai/agents/models/GitHubCopilotToolsetDefaultConfig.java","src/main/java/com/azure/ai/agents/models/GitHubCopilotToolsetPreview.java","src/main/java/com/azure/ai/agents/models/GrammarSyntax.java","src/main/java/com/azure/ai/agents/models/HeaderTelemetryEndpointAuth.java","src/main/java/com/azure/ai/agents/models/HostedAgentDefinition.java","src/main/java/com/azure/ai/agents/models/HybridSearchOptions.java","src/main/java/com/azure/ai/agents/models/ImageDetail.java","src/main/java/com/azure/ai/agents/models/ImageGenActionEnum.java","src/main/java/com/azure/ai/agents/models/ImageGenTool.java","src/main/java/com/azure/ai/agents/models/ImageGenToolBackground.java","src/main/java/com/azure/ai/agents/models/ImageGenToolInputImageMask.java","src/main/java/com/azure/ai/agents/models/ImageGenToolModel.java","src/main/java/com/azure/ai/agents/models/ImageGenToolModeration.java","src/main/java/com/azure/ai/agents/models/ImageGenToolOutputFormat.java","src/main/java/com/azure/ai/agents/models/ImageGenToolQuality.java","src/main/java/com/azure/ai/agents/models/ImageGenToolSize.java","src/main/java/com/azure/ai/agents/models/ImportTelephonyCampaignRecipientsRequest.java","src/main/java/com/azure/ai/agents/models/IncludeEnum.java","src/main/java/com/azure/ai/agents/models/InlineSkillParameter.java","src/main/java/com/azure/ai/agents/models/InlineSkillSourceParameter.java","src/main/java/com/azure/ai/agents/models/InputFidelity.java","src/main/java/com/azure/ai/agents/models/InputFileContent.java","src/main/java/com/azure/ai/agents/models/InputImageContent.java","src/main/java/com/azure/ai/agents/models/InputTextContent.java","src/main/java/com/azure/ai/agents/models/InvocationsProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/InvocationsWsProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/JobStatus.java","src/main/java/com/azure/ai/agents/models/ListMemoriesOptions.java","src/main/java/com/azure/ai/agents/models/LocalShellToolParameter.java","src/main/java/com/azure/ai/agents/models/LocalSkillParameter.java","src/main/java/com/azure/ai/agents/models/LogProbProperties.java","src/main/java/com/azure/ai/agents/models/ManagedAgentIdentityBlueprintReference.java","src/main/java/com/azure/ai/agents/models/McpListToolsTool.java","src/main/java/com/azure/ai/agents/models/McpListToolsToolAnnotations.java","src/main/java/com/azure/ai/agents/models/McpListToolsToolInputSchema.java","src/main/java/com/azure/ai/agents/models/McpProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/McpTool.java","src/main/java/com/azure/ai/agents/models/McpToolConnectorId.java","src/main/java/com/azure/ai/agents/models/McpToolFilter.java","src/main/java/com/azure/ai/agents/models/McpToolRequireApproval.java","src/main/java/com/azure/ai/agents/models/McpToolboxTool.java","src/main/java/com/azure/ai/agents/models/MemoryCommandToolCall.java","src/main/java/com/azure/ai/agents/models/MemoryCommandToolCallOutput.java","src/main/java/com/azure/ai/agents/models/MemoryItem.java","src/main/java/com/azure/ai/agents/models/MemoryItemKind.java","src/main/java/com/azure/ai/agents/models/MemoryOperation.java","src/main/java/com/azure/ai/agents/models/MemoryOperationKind.java","src/main/java/com/azure/ai/agents/models/MemorySearchItem.java","src/main/java/com/azure/ai/agents/models/MemorySearchOptions.java","src/main/java/com/azure/ai/agents/models/MemorySearchPreviewTool.java","src/main/java/com/azure/ai/agents/models/MemorySearchToolCall.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDefaultDefinition.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDefaultOptions.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDefinition.java","src/main/java/com/azure/ai/agents/models/MemoryStoreDetails.java","src/main/java/com/azure/ai/agents/models/MemoryStoreKind.java","src/main/java/com/azure/ai/agents/models/MemoryStoreObjectType.java","src/main/java/com/azure/ai/agents/models/MemoryStoreOperationUsage.java","src/main/java/com/azure/ai/agents/models/MemoryStoreSearchResponse.java","src/main/java/com/azure/ai/agents/models/MemoryStoreUpdateCompletedResult.java","src/main/java/com/azure/ai/agents/models/MemoryStoreUpdateResponse.java","src/main/java/com/azure/ai/agents/models/MemoryStoreUpdateStatus.java","src/main/java/com/azure/ai/agents/models/Microsoft365PermissionScopes.java","src/main/java/com/azure/ai/agents/models/Microsoft365PublishDefaults.java","src/main/java/com/azure/ai/agents/models/Microsoft365PublishResult.java","src/main/java/com/azure/ai/agents/models/Microsoft365PublishScope.java","src/main/java/com/azure/ai/agents/models/MicrosoftFabricPreviewTool.java","src/main/java/com/azure/ai/agents/models/ModelRouterAttempt.java","src/main/java/com/azure/ai/agents/models/ModelRouterAttemptError.java","src/main/java/com/azure/ai/agents/models/ModelRouterAttemptResult.java","src/main/java/com/azure/ai/agents/models/ModelRouterDetails.java","src/main/java/com/azure/ai/agents/models/ModelRouterMode.java","src/main/java/com/azure/ai/agents/models/ModelSelectionDetails.java","src/main/java/com/azure/ai/agents/models/NamespaceTool.java","src/main/java/com/azure/ai/agents/models/NoiseReductionType.java","src/main/java/com/azure/ai/agents/models/OpenApiAnonymousAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiAuthType.java","src/main/java/com/azure/ai/agents/models/OpenApiFunctionDefinition.java","src/main/java/com/azure/ai/agents/models/OpenApiFunctionDefinitionFunction.java","src/main/java/com/azure/ai/agents/models/OpenApiManagedAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiManagedSecurityScheme.java","src/main/java/com/azure/ai/agents/models/OpenApiProjectConnectionAuthDetails.java","src/main/java/com/azure/ai/agents/models/OpenApiProjectConnectionSecurityScheme.java","src/main/java/com/azure/ai/agents/models/OpenApiTool.java","src/main/java/com/azure/ai/agents/models/OpenApiToolCall.java","src/main/java/com/azure/ai/agents/models/OpenApiToolCallOutput.java","src/main/java/com/azure/ai/agents/models/OpenApiToolboxTool.java","src/main/java/com/azure/ai/agents/models/OptimizedAgentIdentifier.java","src/main/java/com/azure/ai/agents/models/OtlpTelemetryEndpoint.java","src/main/java/com/azure/ai/agents/models/PSTNTelephonyTransferDestination.java","src/main/java/com/azure/ai/agents/models/PageOrder.java","src/main/java/com/azure/ai/agents/models/PickPropertiesVoiceAgentAudioConfig.java","src/main/java/com/azure/ai/agents/models/ProceduralMemoryItem.java","src/main/java/com/azure/ai/agents/models/ProgrammaticToolCallingParameter.java","src/main/java/com/azure/ai/agents/models/PromotionInfo.java","src/main/java/com/azure/ai/agents/models/Prompt.java","src/main/java/com/azure/ai/agents/models/PromptAgentDefinition.java","src/main/java/com/azure/ai/agents/models/PromptAgentDefinitionTextOptions.java","src/main/java/com/azure/ai/agents/models/PromptCacheBreakpointConfig.java","src/main/java/com/azure/ai/agents/models/ProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/ProtocolVersionRecord.java","src/main/java/com/azure/ai/agents/models/PublishAgentToMicrosoft365Options.java","src/main/java/com/azure/ai/agents/models/PublishApprovalStatus.java","src/main/java/com/azure/ai/agents/models/PublishTelephonyCampaignRequest.java","src/main/java/com/azure/ai/agents/models/RaiConfig.java","src/main/java/com/azure/ai/agents/models/RaiInvocationContentType.java","src/main/java/com/azure/ai/agents/models/RaiInvocationMode.java","src/main/java/com/azure/ai/agents/models/RaiInvocationModeration.java","src/main/java/com/azure/ai/agents/models/RaiSseTextSelector.java","src/main/java/com/azure/ai/agents/models/RankerVersionType.java","src/main/java/com/azure/ai/agents/models/RankingOptions.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormats.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcm.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcmRate.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcma.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsAudioPcmu.java","src/main/java/com/azure/ai/agents/models/RealtimeAudioFormatsType.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEvent.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemCreate.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemDelete.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemRetrieve.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventConversationItemTruncate.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferAppend.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferClear.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventInputAudioBufferCommit.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventOutputAudioBufferClear.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventResponseCancel.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventResponseCreate.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdate.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionModel.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionOutputModality.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionTruncation.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventSessionUpdateSessionTruncation1.java","src/main/java/com/azure/ai/agents/models/RealtimeClientEventType.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItem.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCall.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallOutput.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallOutputStatus.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemFunctionCallStatus.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessage.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistant.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantContent.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantContentType.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageAssistantStatus.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystem.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemContent.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemContentType.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageSystemStatus.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageType.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUser.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContent.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContentDetail.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserContentType.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemMessageUserStatus.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemObject.java","src/main/java/com/azure/ai/agents/models/RealtimeConversationItemType.java","src/main/java/com/azure/ai/agents/models/RealtimeFunctionTool.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPApprovalRequest.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPApprovalResponse.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPError.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPHttpError.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPListTools.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPProtocolError.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPToolCall.java","src/main/java/com/azure/ai/agents/models/RealtimeMCPToolExecutionError.java","src/main/java/com/azure/ai/agents/models/RealtimeMcpErrorType.java","src/main/java/com/azure/ai/agents/models/RealtimeReasoning.java","src/main/java/com/azure/ai/agents/models/RealtimeReasoningEffort.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetails.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsError.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsReason.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseStatusDetailsType.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseUsage.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageInputTokenDetails.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageInputTokenDetailsCachedTokensDetails.java","src/main/java/com/azure/ai/agents/models/RealtimeResponseUsageOutputTokenDetails.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEvent.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreatedConversation.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationCreatedConversationObject.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemAdded.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemCreated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemDeleted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionCompleted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionFailed.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionFailedError.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemInputAudioTranscriptionSegment.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemRetrieved.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventConversationItemTruncated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventErrorError.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferCleared.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferCommitted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferDtmfEventReceived.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferSpeechStarted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferSpeechStopped.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventInputAudioBufferTimeoutTriggered.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsCompleted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsFailed.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventMCPListToolsInProgress.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferCleared.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferStarted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventOutputAudioBufferStopped.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdatedRateLimits.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventRateLimitsUpdatedRateLimitsName.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventRealtimeServerEventError.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioTranscriptDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseAudioTranscriptDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAdded.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAddedPart.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartAddedPartType.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDonePart.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseContentPartDonePartType.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseCreated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseFunctionCallArgumentsDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseFunctionCallArgumentsDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallArgumentsDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallArgumentsDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallCompleted.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallFailed.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseMCPCallInProgress.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseOutputItemAdded.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseOutputItemDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseTextDelta.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventResponseTextDone.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventSessionCreated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventSessionUpdated.java","src/main/java/com/azure/ai/agents/models/RealtimeServerEventType.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGA.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudio.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioInput.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioInputNoiseReduction.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioOutput.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGAAudioOutputVoice.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestGATracing.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestUnion.java","src/main/java/com/azure/ai/agents/models/RealtimeSessionCreateRequestUnionType.java","src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGA.java","src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudio.java","src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudioInput.java","src/main/java/com/azure/ai/agents/models/RealtimeTranscriptionSessionCreateRequestGAAudioInputNoiseReduction.java","src/main/java/com/azure/ai/agents/models/RealtimeTurnDetection.java","src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionSemanticVad.java","src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionServerVad.java","src/main/java/com/azure/ai/agents/models/RealtimeTurnDetectionType.java","src/main/java/com/azure/ai/agents/models/ReminderPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/ResponseFormatJsonSchemaInner.java","src/main/java/com/azure/ai/agents/models/ResponsePromptVariables.java","src/main/java/com/azure/ai/agents/models/ResponseUsageInputTokensDetails.java","src/main/java/com/azure/ai/agents/models/ResponseUsageOutputTokensDetails.java","src/main/java/com/azure/ai/agents/models/ResponsesProtocolConfiguration.java","src/main/java/com/azure/ai/agents/models/RoutingConfiguration.java","src/main/java/com/azure/ai/agents/models/RoutingTraceEntry.java","src/main/java/com/azure/ai/agents/models/SearchContentType.java","src/main/java/com/azure/ai/agents/models/SearchContextSize.java","src/main/java/com/azure/ai/agents/models/SessionAffinityConfiguration.java","src/main/java/com/azure/ai/agents/models/SessionAffinityDecision.java","src/main/java/com/azure/ai/agents/models/SessionAffinityDetails.java","src/main/java/com/azure/ai/agents/models/SessionAffinityMode.java","src/main/java/com/azure/ai/agents/models/SessionAffinityRequestMode.java","src/main/java/com/azure/ai/agents/models/SessionAffinitySource.java","src/main/java/com/azure/ai/agents/models/SessionConfiguration.java","src/main/java/com/azure/ai/agents/models/SessionDirectoryEntry.java","src/main/java/com/azure/ai/agents/models/SessionFileWriteResult.java","src/main/java/com/azure/ai/agents/models/SessionLogEvent.java","src/main/java/com/azure/ai/agents/models/SessionLogEventType.java","src/main/java/com/azure/ai/agents/models/SharepointGroundingToolCall.java","src/main/java/com/azure/ai/agents/models/SharepointGroundingToolCallOutput.java","src/main/java/com/azure/ai/agents/models/SharepointGroundingToolParameters.java","src/main/java/com/azure/ai/agents/models/SharepointPreviewTool.java","src/main/java/com/azure/ai/agents/models/ShellToolboxTool.java","src/main/java/com/azure/ai/agents/models/SipTelephonyTransferDestination.java","src/main/java/com/azure/ai/agents/models/SkillReference.java","src/main/java/com/azure/ai/agents/models/SkillReferenceParameter.java","src/main/java/com/azure/ai/agents/models/StructuredInputDefinition.java","src/main/java/com/azure/ai/agents/models/StructuredOutputDefinition.java","src/main/java/com/azure/ai/agents/models/TeamsPhoneExtensionTelephonyBinding.java","src/main/java/com/azure/ai/agents/models/TeamsPhoneExtensionTelephonyBindingListItem.java","src/main/java/com/azure/ai/agents/models/TeamsTelephonyTransferDestination.java","src/main/java/com/azure/ai/agents/models/TelemetryConfig.java","src/main/java/com/azure/ai/agents/models/TelemetryDataKind.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpoint.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpointAuth.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpointAuthType.java","src/main/java/com/azure/ai/agents/models/TelemetryEndpointKind.java","src/main/java/com/azure/ai/agents/models/TelemetryTransportProtocol.java","src/main/java/com/azure/ai/agents/models/TelephonyBinding.java","src/main/java/com/azure/ai/agents/models/TelephonyBindingListItem.java","src/main/java/com/azure/ai/agents/models/TelephonyBindingStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCallDurationBasis.java","src/main/java/com/azure/ai/agents/models/TelephonyCallJob.java","src/main/java/com/azure/ai/agents/models/TelephonyCallJobCancellation.java","src/main/java/com/azure/ai/agents/models/TelephonyCallJobSchedule.java","src/main/java/com/azure/ai/agents/models/TelephonyCallJobStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEvent.java","src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventName.java","src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventOutcome.java","src/main/java/com/azure/ai/agents/models/TelephonyCallLifecycleEventSource.java","src/main/java/com/azure/ai/agents/models/TelephonyCallPhase.java","src/main/java/com/azure/ai/agents/models/TelephonyCallRecord.java","src/main/java/com/azure/ai/agents/models/TelephonyCallStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCallSummary.java","src/main/java/com/azure/ai/agents/models/TelephonyCallTimestampSource.java","src/main/java/com/azure/ai/agents/models/TelephonyCallTiming.java","src/main/java/com/azure/ai/agents/models/TelephonyCallTrace.java","src/main/java/com/azure/ai/agents/models/TelephonyCallTraceMode.java","src/main/java/com/azure/ai/agents/models/TelephonyCallTraceStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaign.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignCallJobCounts.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignConfigurationStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignDuplicateHandling.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignExecutionStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImport.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportFormat.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportSource.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientImportStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientMapping.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignRecipientMappingRequest.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignSchedule.java","src/main/java/com/azure/ai/agents/models/TelephonyCampaignScheduleType.java","src/main/java/com/azure/ai/agents/models/TelephonyOperation.java","src/main/java/com/azure/ai/agents/models/TelephonyOperationResource.java","src/main/java/com/azure/ai/agents/models/TelephonyOperationStatus.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundDestination.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundDestinationType.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundFixedIntervalRetryPolicy.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundFixedIntervalRetryPolicyResponse.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicy.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicyResponse.java","src/main/java/com/azure/ai/agents/models/TelephonyOutboundRetryPolicyType.java","src/main/java/com/azure/ai/agents/models/TelephonyProvider.java","src/main/java/com/azure/ai/agents/models/TelephonyTransferDestination.java","src/main/java/com/azure/ai/agents/models/TelephonyTransferDestinationKind.java","src/main/java/com/azure/ai/agents/models/TelephonyTransferTarget.java","src/main/java/com/azure/ai/agents/models/TelephonyTransferTargets.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfiguration.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfigurationResponseFormatJsonObject.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfigurationResponseFormatText.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatConfigurationType.java","src/main/java/com/azure/ai/agents/models/TextResponseFormatJsonSchema.java","src/main/java/com/azure/ai/agents/models/TokenLimits.java","src/main/java/com/azure/ai/agents/models/Tool.java","src/main/java/com/azure/ai/agents/models/ToolCallStatus.java","src/main/java/com/azure/ai/agents/models/ToolChoiceFunction.java","src/main/java/com/azure/ai/agents/models/ToolChoiceMCP.java","src/main/java/com/azure/ai/agents/models/ToolChoiceOptions.java","src/main/java/com/azure/ai/agents/models/ToolChoiceParam.java","src/main/java/com/azure/ai/agents/models/ToolChoiceParamType.java","src/main/java/com/azure/ai/agents/models/ToolConfig.java","src/main/java/com/azure/ai/agents/models/ToolProjectConnection.java","src/main/java/com/azure/ai/agents/models/ToolSearchExecutionType.java","src/main/java/com/azure/ai/agents/models/ToolSearchTool.java","src/main/java/com/azure/ai/agents/models/ToolSearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/ToolType.java","src/main/java/com/azure/ai/agents/models/ToolboxDetails.java","src/main/java/com/azure/ai/agents/models/ToolboxPolicies.java","src/main/java/com/azure/ai/agents/models/ToolboxSearchPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/ToolboxShellContainerAutoEnvironment.java","src/main/java/com/azure/ai/agents/models/ToolboxShellContainerReferenceEnvironment.java","src/main/java/com/azure/ai/agents/models/ToolboxShellEnvironment.java","src/main/java/com/azure/ai/agents/models/ToolboxShellNetworkPolicy.java","src/main/java/com/azure/ai/agents/models/ToolboxShellNetworkPolicyDisabled.java","src/main/java/com/azure/ai/agents/models/ToolboxSkill.java","src/main/java/com/azure/ai/agents/models/ToolboxSkillReference.java","src/main/java/com/azure/ai/agents/models/ToolboxTool.java","src/main/java/com/azure/ai/agents/models/ToolboxToolType.java","src/main/java/com/azure/ai/agents/models/ToolboxVersionDetails.java","src/main/java/com/azure/ai/agents/models/ToolboxVersions.java","src/main/java/com/azure/ai/agents/models/TranscriptTextUsageDuration.java","src/main/java/com/azure/ai/agents/models/TranscriptTextUsageTokens.java","src/main/java/com/azure/ai/agents/models/TranscriptTextUsageTokensInputTokenDetails.java","src/main/java/com/azure/ai/agents/models/TranscriptionLanguage.java","src/main/java/com/azure/ai/agents/models/TwilioTelephonyBinding.java","src/main/java/com/azure/ai/agents/models/TwilioTelephonyBindingListItem.java","src/main/java/com/azure/ai/agents/models/UpdateAgentDetailsOptions.java","src/main/java/com/azure/ai/agents/models/UpdateTelephonyBindingRequest.java","src/main/java/com/azure/ai/agents/models/UserProfileMemoryItem.java","src/main/java/com/azure/ai/agents/models/VersionIndicator.java","src/main/java/com/azure/ai/agents/models/VersionIndicatorType.java","src/main/java/com/azure/ai/agents/models/VersionRefIndicator.java","src/main/java/com/azure/ai/agents/models/VersionSelectionRule.java","src/main/java/com/azure/ai/agents/models/VersionSelector.java","src/main/java/com/azure/ai/agents/models/VersionSelectorType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAnimationConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAnimationOutputType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAudioConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAudioInputConfigTranscriptionDelay.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAudioOutputConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAudioTimestampType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarIceServer.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarOutputProtocol.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarScene.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoBackground.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoCrop.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoParams.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAvatarVideoResolution.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadEnTurnDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadMultilingualTurnDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentAzureSemanticVadTurnDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentClientEventRtcCallSdpCreate.java","src/main/java/com/azure/ai/agents/models/VoiceAgentClientEventSessionAvatarConnect.java","src/main/java/com/azure/ai/agents/models/VoiceAgentDefinition.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEchoCancellation.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEchoCancellationReferenceSource.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEndConversationSystemTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceDetectionModel.java","src/main/java/com/azure/ai/agents/models/VoiceAgentEndOfUtteranceThresholdLevel.java","src/main/java/com/azure/ai/agents/models/VoiceAgentFunctionTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentFunctionToolType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentGreetingConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscription.java","src/main/java/com/azure/ai/agents/models/VoiceAgentInputTranscriptionModel.java","src/main/java/com/azure/ai/agents/models/VoiceAgentInterimResponseConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentInterimResponseTrigger.java","src/main/java/com/azure/ai/agents/models/VoiceAgentLlmGeneratedGreetingConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentLlmInterimResponseConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentMcpTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReduction.java","src/main/java/com/azure/ai/agents/models/VoiceAgentNoiseReductionType.java","src/main/java/com/azure/ai/agents/models/VoiceAgentRealtimeResponse.java","src/main/java/com/azure/ai/agents/models/VoiceAgentRealtimeResponseBase.java","src/main/java/com/azure/ai/agents/models/VoiceAgentResponseCreateParams.java","src/main/java/com/azure/ai/agents/models/VoiceAgentResponseCreateParamsConversation.java","src/main/java/com/azure/ai/agents/models/VoiceAgentRtcCallErrorDetails.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSemanticVadTurnDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSemanticVadTurnDetectionEagerness.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationBlendshapesDelta.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationBlendshapesDone.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationVisemeDelta.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAnimationVisemeDone.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAudioTimestampDelta.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseAudioTimestampDone.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventResponseVideoDelta.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventRtcCallError.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventRtcCallSdpCreated.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarConnecting.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarSwitchToIdle.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionAvatarSwitchToSpeaking.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentAborted.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentCompleted.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventSessionSubagentStarted.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventWarning.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerEventWarningDetails.java","src/main/java/com/azure/ai/agents/models/VoiceAgentServerVadTurnDetection.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSessionAvatarConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSessionIncludeOption.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSessionResponseConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSessionUpdateConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentStaticInterimResponseConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSubagent.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentAbortReason.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSubagentResponsePolicy.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSystemTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentSystemToolName.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTemplateGreetingConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentToolResponseScheduling.java","src/main/java/com/azure/ai/agents/models/VoiceAgentToolboxTool.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTranscriptionPhrase.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTranscriptionWord.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTransport.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionConfig.java","src/main/java/com/azure/ai/agents/models/VoiceAgentTurnDetectionType.java","src/main/java/com/azure/ai/agents/models/VoiceAudioCodec.java","src/main/java/com/azure/ai/agents/models/VoiceAudioContainerFormat.java","src/main/java/com/azure/ai/agents/models/VoiceAudioRole.java","src/main/java/com/azure/ai/agents/models/VoiceConversation.java","src/main/java/com/azure/ai/agents/models/VoiceConversationEngine.java","src/main/java/com/azure/ai/agents/models/VoiceConversationStatus.java","src/main/java/com/azure/ai/agents/models/VoiceGeneratedItemAudioResponse.java","src/main/java/com/azure/ai/agents/models/VoiceHostedAgentConversationEngine.java","src/main/java/com/azure/ai/agents/models/VoiceIdsShared.java","src/main/java/com/azure/ai/agents/models/VoiceItemAudioResponse.java","src/main/java/com/azure/ai/agents/models/VoiceModelType.java","src/main/java/com/azure/ai/agents/models/VoiceOutputModality.java","src/main/java/com/azure/ai/agents/models/VoiceRecordingChannelLayout.java","src/main/java/com/azure/ai/agents/models/VoiceRecordingResponse.java","src/main/java/com/azure/ai/agents/models/VoiceResponse.java","src/main/java/com/azure/ai/agents/models/VoiceResponseAudio.java","src/main/java/com/azure/ai/agents/models/VoiceResponseAudioOutput.java","src/main/java/com/azure/ai/agents/models/VoiceResponseBase.java","src/main/java/com/azure/ai/agents/models/VoiceResponseBaseObject.java","src/main/java/com/azure/ai/agents/models/VoiceResponseBaseObject1.java","src/main/java/com/azure/ai/agents/models/VoiceResponseBaseOutputModality.java","src/main/java/com/azure/ai/agents/models/VoiceResponseBaseStatus.java","src/main/java/com/azure/ai/agents/models/VoiceType.java","src/main/java/com/azure/ai/agents/models/WebIqPreviewTool.java","src/main/java/com/azure/ai/agents/models/WebIqPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/WebSearchApproximateLocation.java","src/main/java/com/azure/ai/agents/models/WebSearchConfiguration.java","src/main/java/com/azure/ai/agents/models/WebSearchPreviewTool.java","src/main/java/com/azure/ai/agents/models/WebSearchTool.java","src/main/java/com/azure/ai/agents/models/WebSearchToolFilters.java","src/main/java/com/azure/ai/agents/models/WebSearchToolSearchContextSize.java","src/main/java/com/azure/ai/agents/models/WebSearchToolboxTool.java","src/main/java/com/azure/ai/agents/models/WorkIqPreviewTool.java","src/main/java/com/azure/ai/agents/models/WorkIqPreviewToolboxTool.java","src/main/java/com/azure/ai/agents/models/WorkflowAgentDefinition.java","src/main/java/com/azure/ai/agents/models/package-info.java","src/main/java/com/azure/ai/agents/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationAsyncSample.java index 651facd4c7006..d8e24b739da90 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationAsyncSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationAsyncSample.java @@ -5,7 +5,7 @@ import com.azure.ai.agents.AgentsClientBuilder; import com.azure.ai.agents.BetaAgentsAsyncClient; -import com.azure.ai.agents.models.AgentOptimizationEvaluatorRef; +import com.azure.ai.agents.models.AgentOptimizationEvaluatorReference; import com.azure.ai.agents.models.AgentOptimizationJob; import com.azure.ai.agents.models.AgentOptimizationJobInputs; import com.azure.ai.agents.models.AgentOptimizationJobResult; @@ -77,7 +77,7 @@ public static void main(String[] args) { private static AgentOptimizationJob createOptimizationJob(Configuration configuration) { String evaluatorVersion = configuration.get("EVALUATOR_VERSION"); - AgentOptimizationEvaluatorRef evaluator = new AgentOptimizationEvaluatorRef( + AgentOptimizationEvaluatorReference evaluator = new AgentOptimizationEvaluatorReference( configuration.get("EVALUATOR_NAME", "task_adherence")); if (evaluatorVersion != null) { evaluator.setVersion(evaluatorVersion); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationSample.java index 45c5141b4c575..8c2bc6b1f63a8 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/optimization/AgentOptimizationSample.java @@ -6,7 +6,7 @@ import com.azure.ai.agents.AgentsClientBuilder; import com.azure.ai.agents.BetaAgentsClient; import com.azure.ai.agents.models.AgentOptimizationCandidate; -import com.azure.ai.agents.models.AgentOptimizationEvaluatorRef; +import com.azure.ai.agents.models.AgentOptimizationEvaluatorReference; import com.azure.ai.agents.models.AgentOptimizationJob; import com.azure.ai.agents.models.AgentOptimizationJobInputs; import com.azure.ai.agents.models.AgentOptimizationJobResult; @@ -82,7 +82,7 @@ public static void main(String[] args) { private static AgentOptimizationJob createOptimizationJob(Configuration configuration) { String evaluatorVersion = configuration.get("EVALUATOR_VERSION"); - AgentOptimizationEvaluatorRef evaluator = new AgentOptimizationEvaluatorRef( + AgentOptimizationEvaluatorReference evaluator = new AgentOptimizationEvaluatorReference( configuration.get("EVALUATOR_NAME", "task_adherence")); if (evaluatorVersion != null) { evaluator.setVersion(evaluatorVersion); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentGenerateSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentGenerateSample.java index 0d8d590e91452..f24bdb4a34f87 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentGenerateSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentGenerateSample.java @@ -5,6 +5,7 @@ import com.azure.ai.agents.AgentsClient; import com.azure.ai.agents.AgentsClientBuilder; +import com.azure.ai.agents.BetaAgentsClient; import com.azure.core.util.Configuration; import com.azure.identity.DefaultAzureCredentialBuilder; import com.azure.ai.agents.models.AgentDetails; @@ -30,16 +31,17 @@ public static void main(String[] args) { String endpoint = configuration.get("FOUNDRY_PROJECT_ENDPOINT"); String agentName = configuration.get("FOUNDRY_VOICE_AGENT_NAME", "generated-voice-agent-java"); - AgentsClient client = new AgentsClientBuilder() + AgentsClientBuilder builder = new AgentsClientBuilder() .credential(new DefaultAzureCredentialBuilder().build()) .endpoint(endpoint) - .allowPreview(true) - .buildAgentsClient(); + .allowPreview(true); + AgentsClient client = builder.buildAgentsClient(); + BetaAgentsClient betaClient = builder.beta().buildBetaAgentsClient(); Map request = new LinkedHashMap<>(); request.put("kind", "voice"); request.put("name", agentName); - AgentDetails generated = client.generateAgent(BinaryData.fromObject(request)); + AgentDetails generated = betaClient.generateAgent(BinaryData.fromObject(request)); try { System.out.println("Generated voice agent: " + generated.getName()); AgentVersionDetails latest = generated.getVersions().getLatest(); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveAudioConversationAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveAudioConversationAsyncSample.java index d1dd4366c4378..cce325c32b0a5 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveAudioConversationAsyncSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveAudioConversationAsyncSample.java @@ -6,6 +6,7 @@ import com.azure.ai.agents.AgentsAsyncClient; import com.azure.ai.agents.AgentsClientBuilder; import com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient; +import com.azure.ai.agents.BetaAgentsAsyncClient; import com.azure.ai.agents.BetaVoiceAgentWebSocketAsyncClient; import com.azure.ai.agents.VoiceAgentWebSocketSessionAsyncClient; import com.azure.ai.agents.models.CreateAgentVersionInput; @@ -72,6 +73,7 @@ public static void main(String[] args) { .endpoint(endpoint) .allowPreview(true); AgentsAsyncClient agents = builder.buildAgentsAsyncClient(); + BetaAgentsAsyncClient betaAgents = builder.beta().buildBetaAgentsAsyncClient(); BetaVoiceAgentWebSocketAsyncClient realtime = builder.buildBetaVoiceAgentWebSocketAsyncClient(); BetaAgentEndpointConversationsAsyncClient conversations = builder.buildBetaAgentEndpointConversationsAsyncClient(); @@ -81,7 +83,7 @@ public static void main(String[] args) { request.put("name", agentName); AtomicReference conversationId = new AtomicReference<>(); - agents.generateAgent(BinaryData.fromObject(request)) + betaAgents.generateAgent(BinaryData.fromObject(request)) .flatMap(generated -> { VoiceAgentDefinition definition = (VoiceAgentDefinition) generated.getVersions().getLatest().getDefinition(); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationAsyncSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationAsyncSample.java index 7c397c1e0bdc3..9623167a36655 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationAsyncSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationAsyncSample.java @@ -6,6 +6,7 @@ import com.azure.ai.agents.AgentsAsyncClient; import com.azure.ai.agents.AgentsClientBuilder; import com.azure.ai.agents.BetaAgentEndpointConversationsAsyncClient; +import com.azure.ai.agents.BetaAgentsAsyncClient; import com.azure.ai.agents.BetaVoiceAgentWebSocketAsyncClient; import com.azure.ai.agents.VoiceAgentWebSocketSessionAsyncClient; import com.azure.ai.agents.models.CreateAgentVersionInput; @@ -57,6 +58,7 @@ public static void main(String[] args) { .endpoint(endpoint) .allowPreview(true); AgentsAsyncClient agents = builder.buildAgentsAsyncClient(); + BetaAgentsAsyncClient betaAgents = builder.beta().buildBetaAgentsAsyncClient(); BetaVoiceAgentWebSocketAsyncClient realtime = builder.buildBetaVoiceAgentWebSocketAsyncClient(); BetaAgentEndpointConversationsAsyncClient conversations = builder.buildBetaAgentEndpointConversationsAsyncClient(); @@ -69,7 +71,7 @@ public static void main(String[] args) { VoiceAgentRealtimeSampleUtils.SpeakerPlayer player = new VoiceAgentRealtimeSampleUtils.SpeakerPlayer(); Scanner scanner = new Scanner(System.in); - agents.generateAgent(BinaryData.fromObject(request)) + betaAgents.generateAgent(BinaryData.fromObject(request)) .flatMap(generated -> { VoiceAgentDefinition definition = (VoiceAgentDefinition) generated.getVersions().getLatest().getDefinition(); diff --git a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationSample.java b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationSample.java index 834fb84655813..a47e8aead3c5d 100644 --- a/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationSample.java +++ b/sdk/ai/azure-ai-agents/src/samples/java/com/azure/ai/agents/voice/VoiceAgentLiveTextConversationSample.java @@ -6,6 +6,7 @@ import com.azure.ai.agents.AgentsClient; import com.azure.ai.agents.AgentsClientBuilder; import com.azure.ai.agents.BetaAgentEndpointConversationsClient; +import com.azure.ai.agents.BetaAgentsClient; import com.azure.ai.agents.BetaVoiceAgentWebSocketClient; import com.azure.ai.agents.VoiceAgentWebSocketSessionClient; import com.azure.ai.agents.models.AgentDetails; @@ -54,13 +55,14 @@ public static void main(String[] args) { .endpoint(endpoint) .allowPreview(true); AgentsClient agents = builder.buildAgentsClient(); + BetaAgentsClient betaAgents = builder.beta().buildBetaAgentsClient(); BetaVoiceAgentWebSocketClient realtime = builder.buildBetaVoiceAgentWebSocketClient(); BetaAgentEndpointConversationsClient conversations = builder.buildBetaAgentEndpointConversationsClient(); Map request = new LinkedHashMap<>(); request.put("kind", "voice"); request.put("name", agentName); - AgentDetails generated = agents.generateAgent(BinaryData.fromObject(request)); + AgentDetails generated = betaAgents.generateAgent(BinaryData.fromObject(request)); try { AgentVersionDetails latest = generated.getVersions().getLatest(); From 17fb078bc75ce4dec61d6e010af58b067d490e0e Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 18:48:01 +0800 Subject: [PATCH 23/29] Update Agents preview API changes --- sdk/ai/azure-ai-agents/CHANGELOG.md | 7 +++++-- sdk/ai/azure-ai-agents/revapi.json | 30 ++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/sdk/ai/azure-ai-agents/CHANGELOG.md b/sdk/ai/azure-ai-agents/CHANGELOG.md index 613815573edf7..e09c2050c6541 100644 --- a/sdk/ai/azure-ai-agents/CHANGELOG.md +++ b/sdk/ai/azure-ai-agents/CHANGELOG.md @@ -4,14 +4,17 @@ ### Features Added -- Added `AgentTelephonyClient` and `AgentTelephonyAsyncClient` for outbound call jobs and campaign management, including recipient import, validation, publishing, pausing, resuming, and cancellation. +- Added preview `BetaAgentTelephonyClient` and `BetaAgentTelephonyAsyncClient` for outbound call jobs and campaign management, including recipient import, validation, publishing, pausing, resuming, and cancellation. - Added session-affinity routing configuration through `AzureCreateResponseOptions.setRoutingConfig(...)`, `RoutingConfiguration`, and `SessionAffinityConfiguration`, with response details exposed by `ModelRouterDetails.getSessionAffinity()`. - Added preview synchronous and asynchronous voice-agent WebSocket clients and session APIs with typed realtime events, text and PCM16 audio input, response cancellation, function-call output, persisted-conversation options, and authenticated `wss://` transport. - Added synchronous and asynchronous live text conversation samples, an asynchronous Java Sound microphone/speaker sample with barge-in, and a live client-executed function-tool sample. ### Breaking Changes -- Renamed `AgentOptimizationEvaluatorReference` to `AgentOptimizationEvaluatorRef`; the `AgentOptimizationJobInputs` constructor and `getEvaluators()` now use the renamed type. +- Renamed `AgentTelephonyClient` and `AgentTelephonyAsyncClient` to `BetaAgentTelephonyClient` and `BetaAgentTelephonyAsyncClient`; use `AgentsClientBuilder.buildBetaAgentTelephonyClient()` or `buildBetaAgentTelephonyAsyncClient()`. +- Moved telephony operations from `AgentsClient` and `AgentsAsyncClient` to `BetaAgentsClient` and `BetaAgentsAsyncClient`. +- Moved `generateAgent` and `generateAgentWithResponse` from `AgentsClient` and `AgentsAsyncClient` to `BetaAgentsClient` and `BetaAgentsAsyncClient`. +- Moved `getId()` and `getConversationId()` from `VoiceResponseBase` to `VoiceResponse`. ### Bugs Fixed diff --git a/sdk/ai/azure-ai-agents/revapi.json b/sdk/ai/azure-ai-agents/revapi.json index 1635d78f1ad7b..2d72184e281b7 100644 --- a/sdk/ai/azure-ai-agents/revapi.json +++ b/sdk/ai/azure-ai-agents/revapi.json @@ -13,9 +13,33 @@ }, { "regex": true, - "code": "java\\.method\\.(numberOfParametersChanged|parameterTypeParameterChanged|removed|returnTypeChanged|returnTypeTypeParametersChanged|visibilityIncreased)", - "old": "(method|parameter) .* com\\.azure\\.ai\\.agents\\.models\\.(Agent)?Optimization(Candidate|DatasetItem|Job|JobInputs|JobProgress|JobResult|Options)::.*", - "justification": "Breaking change in beta operation: optimization models were restructured to align with the current AgentsOptimization preview contract." + "code": "java\\.method\\.removed", + "old": "method .* com\\.azure\\.ai\\.agents\\.AgentsClientBuilder::buildAgentTelephony(Async)?Client\\(\\)", + "justification": "Breaking change in preview operation: telephony clients and their builder methods were renamed with the Beta prefix to make their preview status explicit." + }, + { + "regex": true, + "code": "java\\.class\\.removed", + "old": "class com\\.azure\\.ai\\.agents\\.AgentTelephony(Async)?Client", + "justification": "Breaking change in preview operation: telephony clients were renamed with the Beta prefix to make their preview status explicit." + }, + { + "regex": true, + "code": "java\\.method\\.removed", + "old": "method .* com\\.azure\\.ai\\.agents\\.Agents(Async)?Client::[A-Za-z0-9]*Telephony[A-Za-z0-9]*\\(.*\\)", + "justification": "Breaking change in preview operation: telephony operations moved from AgentsClient and AgentsAsyncClient to their Beta counterparts." + }, + { + "regex": true, + "code": "java\\.method\\.removed", + "old": "method .* com\\.azure\\.ai\\.agents\\.Agents(Async)?Client::generateAgent(WithResponse)?\\(.*\\)", + "justification": "Breaking change in preview operation: voice-agent generation moved from AgentsClient and AgentsAsyncClient to their Beta counterparts." + }, + { + "regex": true, + "code": "java\\.method\\.removed", + "old": "method java\\.lang\\.String com\\.azure\\.ai\\.agents\\.models\\.VoiceResponseBase::get(ConversationId|Id)\\(\\)", + "justification": "Breaking change in preview models: response and conversation identifiers moved from VoiceResponseBase to VoiceResponse." } ] } From 950650e0952846b331726afc040c45c9c2cb89e5 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 19:19:13 +0800 Subject: [PATCH 24/29] Update Projects data generation API changes --- sdk/ai/azure-ai-projects/CHANGELOG.md | 1 + sdk/ai/azure-ai-projects/revapi.json | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/sdk/ai/azure-ai-projects/CHANGELOG.md b/sdk/ai/azure-ai-projects/CHANGELOG.md index f2299553769c8..aa07b05453a6e 100644 --- a/sdk/ai/azure-ai-projects/CHANGELOG.md +++ b/sdk/ai/azure-ai-projects/CHANGELOG.md @@ -8,6 +8,7 @@ - Renamed `AgentInsightHighlightedTrace.getDuration()` to `getDurationMs()` to clarify that the duration is measured in milliseconds. - Changed the return type of `AgentInsightHighlightedTrace.getTotalTokens()` from `Long` to `Integer`. +- Moved `maxSamples` from `DataGenerationJobOptions` to supported scenario-specific models. `SimulationSeedDataGenerationJobOptions` no longer accepts it, while `TracesDataGenerationJobOptions` now has a no-argument constructor and optional `Integer` value configured through `setMaxSamples(...)`. ### Bugs Fixed diff --git a/sdk/ai/azure-ai-projects/revapi.json b/sdk/ai/azure-ai-projects/revapi.json index 0cb61110268f1..07dce1b6d71ef 100644 --- a/sdk/ai/azure-ai-projects/revapi.json +++ b/sdk/ai/azure-ai-projects/revapi.json @@ -14,6 +14,24 @@ "old": "method java.lang.Long com.azure.ai.projects.models.AgentInsightHighlightedTrace::getTotalTokens()", "new": "method java.lang.Integer com.azure.ai.projects.models.AgentInsightHighlightedTrace::getTotalTokens()", "justification": "Breaking change in preview operation: totalTokens changed from Long to Integer to align with the current AgentInsights V1 preview contract." + }, + { + "regex": true, + "code": "java\\.method\\.numberOfParametersChanged", + "old": "method void com\\.azure\\.ai\\.projects\\.models\\.(DataGenerationJobOptions|SimulationSeedDataGenerationJobOptions|TracesDataGenerationJobOptions)::\\(int\\)", + "new": "method void com\\.azure\\.ai\\.projects\\.models\\.(DataGenerationJobOptions|SimulationSeedDataGenerationJobOptions|TracesDataGenerationJobOptions)::\\(\\)", + "justification": "Breaking change in preview models: maxSamples moved from the shared data-generation options constructor to scenario-specific models; simulation seed no longer supports it and traces now configures it as an optional property." + }, + { + "code": "java.method.removed", + "old": "method int com.azure.ai.projects.models.DataGenerationJobOptions::getMaxSamples()", + "justification": "Breaking change in preview models: maxSamples moved from DataGenerationJobOptions to the data-generation scenarios that support sampling." + }, + { + "code": "java.method.returnTypeChanged", + "old": "method int com.azure.ai.projects.models.DataGenerationJobOptions::getMaxSamples() @ com.azure.ai.projects.models.TracesDataGenerationJobOptions", + "new": "method java.lang.Integer com.azure.ai.projects.models.TracesDataGenerationJobOptions::getMaxSamples()", + "justification": "Breaking change in preview models: traces maxSamples is now optional, so getMaxSamples returns Integer and setMaxSamples configures the value." } ] } From 70467c379a755e7f552006773ffc4c73519a9cd7 Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 19:23:13 +0800 Subject: [PATCH 25/29] Regenerate Java AI Projects SDK --- .../ai/projects/BetaDatasetsAsyncClient.java | 10 +-- .../azure/ai/projects/BetaDatasetsClient.java | 10 +-- .../implementation/BetaDatasetsImpl.java | 40 +++++----- .../models/DataGenerationJobOptions.java | 54 +++---------- .../DataGenerationJobOutputOptions.java | 35 ++++++++ .../DataGenerationJobOutputWriteMode.java | 59 ++++++++++++++ .../SimpleQnADataGenerationJobOptions.java | 28 +++++-- ...imulationSeedDataGenerationJobOptions.java | 43 ++++------ ...UseFineTuningDataGenerationJobOptions.java | 28 +++++-- .../TracesDataGenerationJobOptions.java | 80 ++++++++++++------- .../models/TracesDataGenerationJobSource.java | 34 ++++++++ .../META-INF/azure-ai-projects_metadata.json | 2 +- sdk/ai/azure-ai-projects/tsp-location.yaml | 2 +- 13 files changed, 282 insertions(+), 143 deletions(-) create mode 100644 sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputWriteMode.java diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaDatasetsAsyncClient.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaDatasetsAsyncClient.java index 8ff2cf9f3da79..2f9db4a46db1b 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaDatasetsAsyncClient.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaDatasetsAsyncClient.java @@ -69,7 +69,6 @@ public final class BetaDatasetsAsyncClient { * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -82,6 +81,7 @@ public final class BetaDatasetsAsyncClient { * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -183,7 +183,6 @@ public Mono> getGenerationJobWithResponse(String jobId, Req * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -196,6 +195,7 @@ public Mono> getGenerationJobWithResponse(String jobId, Req * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -266,7 +266,6 @@ public PagedFlux listGenerationJobs(RequestOptions requestOptions) { * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -279,6 +278,7 @@ public PagedFlux listGenerationJobs(RequestOptions requestOptions) { * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -535,7 +535,6 @@ public Mono deleteGenerationJob(String jobId) { * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -548,6 +547,7 @@ public Mono deleteGenerationJob(String jobId) { * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -601,7 +601,6 @@ public Mono deleteGenerationJob(String jobId) { * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -614,6 +613,7 @@ public Mono deleteGenerationJob(String jobId) { * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaDatasetsClient.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaDatasetsClient.java index 0ea47c7e7fd8c..942e519482162 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaDatasetsClient.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/BetaDatasetsClient.java @@ -63,7 +63,6 @@ public final class BetaDatasetsClient { * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -76,6 +75,7 @@ public final class BetaDatasetsClient { * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -176,7 +176,6 @@ public Response getGenerationJobWithResponse(String jobId, RequestOp * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -189,6 +188,7 @@ public Response getGenerationJobWithResponse(String jobId, RequestOp * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -259,7 +259,6 @@ public PagedIterable listGenerationJobs(RequestOptions requestOption * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -272,6 +271,7 @@ public PagedIterable listGenerationJobs(RequestOptions requestOption * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -503,7 +503,6 @@ public void deleteGenerationJob(String jobId) { * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -516,6 +515,7 @@ public void deleteGenerationJob(String jobId) { * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -569,7 +569,6 @@ public void deleteGenerationJob(String jobId) { * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -582,6 +581,7 @@ public void deleteGenerationJob(String jobId) { * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/implementation/BetaDatasetsImpl.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/implementation/BetaDatasetsImpl.java index b9ae3941c5add..86055c770bb5c 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/implementation/BetaDatasetsImpl.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/implementation/BetaDatasetsImpl.java @@ -208,7 +208,6 @@ Response deleteGenerationJobSync(@HostParam("endpoint") String endpoint, @ * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -221,6 +220,7 @@ Response deleteGenerationJobSync(@HostParam("endpoint") String endpoint, @ * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -303,7 +303,6 @@ public Mono> getGenerationJobWithResponseAsync(String jobId * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -316,6 +315,7 @@ public Mono> getGenerationJobWithResponseAsync(String jobId * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -417,7 +417,6 @@ public Response getGenerationJobWithResponse(String jobId, RequestOp * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -430,6 +429,7 @@ public Response getGenerationJobWithResponse(String jobId, RequestOp * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -525,7 +525,6 @@ private Mono> listGenerationJobsSinglePageAsync(Reques * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -538,6 +537,7 @@ private Mono> listGenerationJobsSinglePageAsync(Reques * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -627,7 +627,6 @@ public PagedFlux listGenerationJobsAsync(RequestOptions requestOptio * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -640,6 +639,7 @@ public PagedFlux listGenerationJobsAsync(RequestOptions requestOptio * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -733,7 +733,6 @@ private PagedResponse listGenerationJobsSinglePage(RequestOptions re * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -746,6 +745,7 @@ private PagedResponse listGenerationJobsSinglePage(RequestOptions re * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -823,7 +823,6 @@ public PagedIterable listGenerationJobs(RequestOptions requestOption * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -836,6 +835,7 @@ public PagedIterable listGenerationJobs(RequestOptions requestOption * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -889,7 +889,6 @@ public PagedIterable listGenerationJobs(RequestOptions requestOption * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -902,6 +901,7 @@ public PagedIterable listGenerationJobs(RequestOptions requestOption * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -984,7 +984,6 @@ private Mono> createGenerationJobWithResponseAsync(BinaryDa * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -997,6 +996,7 @@ private Mono> createGenerationJobWithResponseAsync(BinaryDa * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -1050,7 +1050,6 @@ private Mono> createGenerationJobWithResponseAsync(BinaryDa * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -1063,6 +1062,7 @@ private Mono> createGenerationJobWithResponseAsync(BinaryDa * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -1144,7 +1144,6 @@ private Response createGenerationJobWithResponse(BinaryData job, Req * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -1157,6 +1156,7 @@ private Response createGenerationJobWithResponse(BinaryData job, Req * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -1210,7 +1210,6 @@ private Response createGenerationJobWithResponse(BinaryData job, Req * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -1223,6 +1222,7 @@ private Response createGenerationJobWithResponse(BinaryData job, Req * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -1313,7 +1313,6 @@ public PollerFlux beginCreateGenerat * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -1326,6 +1325,7 @@ public PollerFlux beginCreateGenerat * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -1379,7 +1379,6 @@ public PollerFlux beginCreateGenerat * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -1392,6 +1391,7 @@ public PollerFlux beginCreateGenerat * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -1482,7 +1482,6 @@ public SyncPoller beginCreateGenerat * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -1495,6 +1494,7 @@ public SyncPoller beginCreateGenerat * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -1548,7 +1548,6 @@ public SyncPoller beginCreateGenerat * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -1561,6 +1560,7 @@ public SyncPoller beginCreateGenerat * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -1650,7 +1650,6 @@ public PollerFlux beginCreateGenerationJobAsync(BinaryDa * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -1663,6 +1662,7 @@ public PollerFlux beginCreateGenerationJobAsync(BinaryDa * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -1716,7 +1716,6 @@ public PollerFlux beginCreateGenerationJobAsync(BinaryDa * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -1729,6 +1728,7 @@ public PollerFlux beginCreateGenerationJobAsync(BinaryDa * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -1809,7 +1809,6 @@ public SyncPoller beginCreateGenerationJob(BinaryData jo * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -1822,6 +1821,7 @@ public SyncPoller beginCreateGenerationJob(BinaryData jo * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { @@ -1895,7 +1895,6 @@ public Mono> cancelGenerationJobWithResponseAsync(String jo * ] * options (Required): { * type: String(simple_qna/traces/tool_use/simulation_seed) (Required) - * max_samples: int (Required) * train_split: Double (Optional) * model_options (Optional): { * model: String (Required) @@ -1908,6 +1907,7 @@ public Mono> cancelGenerationJobWithResponseAsync(String jo * tags (Optional): { * String: String (Required) * } + * write_mode: String(overwrite/merge) (Optional) * } * } * result (Optional): { diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOptions.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOptions.java index 5b2180d91b3d9..76cb2279eeab9 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOptions.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOptions.java @@ -25,12 +25,6 @@ public class DataGenerationJobOptions implements JsonSerializable { - int maxSamples = 0; - DataGenerationJobType type = null; - Double trainSplit = null; - DataGenerationModelOptions modelOptions = null; + DataGenerationJobOptions deserializedDataGenerationJobOptions = new DataGenerationJobOptions(); while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); reader.nextToken(); - if ("max_samples".equals(fieldName)) { - maxSamples = reader.getInt(); - } else if ("type".equals(fieldName)) { - type = DataGenerationJobType.fromString(reader.getString()); + if ("type".equals(fieldName)) { + deserializedDataGenerationJobOptions.type = DataGenerationJobType.fromString(reader.getString()); } else if ("train_split".equals(fieldName)) { - trainSplit = reader.getNullable(JsonReader::getDouble); + deserializedDataGenerationJobOptions.trainSplit = reader.getNullable(JsonReader::getDouble); } else if ("model_options".equals(fieldName)) { - modelOptions = DataGenerationModelOptions.fromJson(reader); + deserializedDataGenerationJobOptions.modelOptions = DataGenerationModelOptions.fromJson(reader); } else { reader.skipChildren(); } } - DataGenerationJobOptions deserializedDataGenerationJobOptions = new DataGenerationJobOptions(maxSamples); - deserializedDataGenerationJobOptions.type = type; - deserializedDataGenerationJobOptions.trainSplit = trainSplit; - deserializedDataGenerationJobOptions.modelOptions = modelOptions; return deserializedDataGenerationJobOptions; }); } + + /** + * Creates an instance of DataGenerationJobOptions class. + */ + @Generated + public DataGenerationJobOptions() { + } } diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputOptions.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputOptions.java index c173aa33a6802..57f8f575b3f18 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputOptions.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputOptions.java @@ -130,6 +130,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStringField("name", this.name); jsonWriter.writeStringField("description", this.description); jsonWriter.writeMapField("tags", this.tags, (writer, element) -> writer.writeString(element)); + jsonWriter.writeStringField("write_mode", this.writeMode == null ? null : this.writeMode.toString()); return jsonWriter.writeEndObject(); } @@ -156,6 +157,9 @@ public static DataGenerationJobOutputOptions fromJson(JsonReader jsonReader) thr } else if ("tags".equals(fieldName)) { Map tags = reader.readMap(reader1 -> reader1.getString()); deserializedDataGenerationJobOutputOptions.tags = tags; + } else if ("write_mode".equals(fieldName)) { + deserializedDataGenerationJobOutputOptions.writeMode + = DataGenerationJobOutputWriteMode.fromString(reader.getString()); } else { reader.skipChildren(); } @@ -163,4 +167,35 @@ public static DataGenerationJobOutputOptions fromJson(JsonReader jsonReader) thr return deserializedDataGenerationJobOutputOptions; }); } + + /* + * Controls how dataset outputs are written. If omitted, defaults to `overwrite` and creates the next dataset + * version using only newly generated rows. + */ + @Generated + private DataGenerationJobOutputWriteMode writeMode; + + /** + * Get the writeMode property: Controls how dataset outputs are written. If omitted, defaults to `overwrite` and + * creates the next dataset version using only newly generated rows. + * + * @return the writeMode value. + */ + @Generated + public DataGenerationJobOutputWriteMode getWriteMode() { + return this.writeMode; + } + + /** + * Set the writeMode property: Controls how dataset outputs are written. If omitted, defaults to `overwrite` and + * creates the next dataset version using only newly generated rows. + * + * @param writeMode the writeMode value to set. + * @return the DataGenerationJobOutputOptions object itself. + */ + @Generated + public DataGenerationJobOutputOptions setWriteMode(DataGenerationJobOutputWriteMode writeMode) { + this.writeMode = writeMode; + return this; + } } diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputWriteMode.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputWriteMode.java new file mode 100644 index 0000000000000..2e3cda21c7e5d --- /dev/null +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputWriteMode.java @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) TypeSpec Code Generator. + +package com.azure.ai.projects.models; + +import com.azure.core.annotation.Generated; +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * The supported write modes for data generation job outputs. + */ +public final class DataGenerationJobOutputWriteMode extends ExpandableStringEnum { + /** + * Default behavior. Create the next dataset version using only newly generated rows, replacing the previous + * version's rows in the new version. + */ + @Generated + public static final DataGenerationJobOutputWriteMode OVERWRITE = fromString("overwrite"); + + /** + * Applicable only for trace data generation jobs that output evaluation datasets. Create the next dataset version + * by merging newly generated rows with the latest existing dataset version and de-duping trace rows. + */ + @Generated + public static final DataGenerationJobOutputWriteMode MERGE = fromString("merge"); + + /** + * Creates a new instance of DataGenerationJobOutputWriteMode value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Generated + @Deprecated + public DataGenerationJobOutputWriteMode() { + } + + /** + * Creates or finds a DataGenerationJobOutputWriteMode from its string representation. + * + * @param name a name to look for. + * @return the corresponding DataGenerationJobOutputWriteMode. + */ + @Generated + public static DataGenerationJobOutputWriteMode fromString(String name) { + return fromString(name, DataGenerationJobOutputWriteMode.class); + } + + /** + * Gets known DataGenerationJobOutputWriteMode values. + * + * @return known DataGenerationJobOutputWriteMode values. + */ + @Generated + public static Collection values() { + return values(DataGenerationJobOutputWriteMode.class); + } +} diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/SimpleQnADataGenerationJobOptions.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/SimpleQnADataGenerationJobOptions.java index f2daf837f12b8..b403e1dac08c4 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/SimpleQnADataGenerationJobOptions.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/SimpleQnADataGenerationJobOptions.java @@ -38,7 +38,7 @@ public final class SimpleQnADataGenerationJobOptions extends DataGenerationJobOp */ @Generated public SimpleQnADataGenerationJobOptions(int maxSamples) { - super(maxSamples); + this.maxSamples = maxSamples; } /** @@ -101,9 +101,9 @@ public SimpleQnADataGenerationJobOptions setModelOptions(DataGenerationModelOpti @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); - jsonWriter.writeIntField("max_samples", getMaxSamples()); jsonWriter.writeNumberField("train_split", getTrainSplit()); jsonWriter.writeJsonField("model_options", getModelOptions()); + jsonWriter.writeIntField("max_samples", this.maxSamples); jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); jsonWriter.writeArrayField("question_types", this.questionTypes, (writer, element) -> writer.writeString(element == null ? null : element.toString())); @@ -122,20 +122,20 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { @Generated public static SimpleQnADataGenerationJobOptions fromJson(JsonReader jsonReader) throws IOException { return jsonReader.readObject(reader -> { - int maxSamples = 0; Double trainSplit = null; DataGenerationModelOptions modelOptions = null; + int maxSamples = 0; DataGenerationJobType type = DataGenerationJobType.SIMPLE_QNA; List questionTypes = null; while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); reader.nextToken(); - if ("max_samples".equals(fieldName)) { - maxSamples = reader.getInt(); - } else if ("train_split".equals(fieldName)) { + if ("train_split".equals(fieldName)) { trainSplit = reader.getNullable(JsonReader::getDouble); } else if ("model_options".equals(fieldName)) { modelOptions = DataGenerationModelOptions.fromJson(reader); + } else if ("max_samples".equals(fieldName)) { + maxSamples = reader.getInt(); } else if ("type".equals(fieldName)) { type = DataGenerationJobType.fromString(reader.getString()); } else if ("question_types".equals(fieldName)) { @@ -154,4 +154,20 @@ public static SimpleQnADataGenerationJobOptions fromJson(JsonReader jsonReader) return deserializedSimpleQnADataGenerationJobOptions; }); } + + /* + * Maximum number of samples to generate, up to service-defined limits. + */ + @Generated + private final int maxSamples; + + /** + * Get the maxSamples property: Maximum number of samples to generate, up to service-defined limits. + * + * @return the maxSamples value. + */ + @Generated + public int getMaxSamples() { + return this.maxSamples; + } } diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/SimulationSeedDataGenerationJobOptions.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/SimulationSeedDataGenerationJobOptions.java index ea68e78e59dae..95fcc69f27be1 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/SimulationSeedDataGenerationJobOptions.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/SimulationSeedDataGenerationJobOptions.java @@ -26,16 +26,6 @@ public final class SimulationSeedDataGenerationJobOptions extends DataGeneration @Generated private DataGenerationJobType type = DataGenerationJobType.SIMULATION_SEED; - /** - * Creates an instance of SimulationSeedDataGenerationJobOptions class. - * - * @param maxSamples the maxSamples value to set. - */ - @Generated - public SimulationSeedDataGenerationJobOptions(int maxSamples) { - super(maxSamples); - } - /** * Get the type property: The data generation job type. * @@ -74,7 +64,6 @@ public SimulationSeedDataGenerationJobOptions setModelOptions(DataGenerationMode @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); - jsonWriter.writeIntField("max_samples", getMaxSamples()); jsonWriter.writeNumberField("train_split", getTrainSplit()); jsonWriter.writeJsonField("model_options", getModelOptions()); jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); @@ -87,37 +76,37 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { * @param jsonReader The JsonReader being read. * @return An instance of SimulationSeedDataGenerationJobOptions if the JsonReader was pointing to an instance of * it, or null if it was pointing to JSON null. - * @throws IllegalStateException If the deserialized JSON object was missing any required properties. * @throws IOException If an error occurs while reading the SimulationSeedDataGenerationJobOptions. */ @Generated public static SimulationSeedDataGenerationJobOptions fromJson(JsonReader jsonReader) throws IOException { return jsonReader.readObject(reader -> { - int maxSamples = 0; - Double trainSplit = null; - DataGenerationModelOptions modelOptions = null; - DataGenerationJobType type = DataGenerationJobType.SIMULATION_SEED; + SimulationSeedDataGenerationJobOptions deserializedSimulationSeedDataGenerationJobOptions + = new SimulationSeedDataGenerationJobOptions(); while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); reader.nextToken(); - if ("max_samples".equals(fieldName)) { - maxSamples = reader.getInt(); - } else if ("train_split".equals(fieldName)) { - trainSplit = reader.getNullable(JsonReader::getDouble); + if ("train_split".equals(fieldName)) { + deserializedSimulationSeedDataGenerationJobOptions + .setTrainSplit(reader.getNullable(JsonReader::getDouble)); } else if ("model_options".equals(fieldName)) { - modelOptions = DataGenerationModelOptions.fromJson(reader); + deserializedSimulationSeedDataGenerationJobOptions + .setModelOptions(DataGenerationModelOptions.fromJson(reader)); } else if ("type".equals(fieldName)) { - type = DataGenerationJobType.fromString(reader.getString()); + deserializedSimulationSeedDataGenerationJobOptions.type + = DataGenerationJobType.fromString(reader.getString()); } else { reader.skipChildren(); } } - SimulationSeedDataGenerationJobOptions deserializedSimulationSeedDataGenerationJobOptions - = new SimulationSeedDataGenerationJobOptions(maxSamples); - deserializedSimulationSeedDataGenerationJobOptions.setTrainSplit(trainSplit); - deserializedSimulationSeedDataGenerationJobOptions.setModelOptions(modelOptions); - deserializedSimulationSeedDataGenerationJobOptions.type = type; return deserializedSimulationSeedDataGenerationJobOptions; }); } + + /** + * Creates an instance of SimulationSeedDataGenerationJobOptions class. + */ + @Generated + public SimulationSeedDataGenerationJobOptions() { + } } diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/ToolUseFineTuningDataGenerationJobOptions.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/ToolUseFineTuningDataGenerationJobOptions.java index 61772e83165c8..7e88fea0e6a37 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/ToolUseFineTuningDataGenerationJobOptions.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/ToolUseFineTuningDataGenerationJobOptions.java @@ -31,7 +31,7 @@ public final class ToolUseFineTuningDataGenerationJobOptions extends DataGenerat */ @Generated public ToolUseFineTuningDataGenerationJobOptions(int maxSamples) { - super(maxSamples); + this.maxSamples = maxSamples; } /** @@ -72,9 +72,9 @@ public ToolUseFineTuningDataGenerationJobOptions setModelOptions(DataGenerationM @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); - jsonWriter.writeIntField("max_samples", getMaxSamples()); jsonWriter.writeNumberField("train_split", getTrainSplit()); jsonWriter.writeJsonField("model_options", getModelOptions()); + jsonWriter.writeIntField("max_samples", this.maxSamples); jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); return jsonWriter.writeEndObject(); } @@ -91,19 +91,19 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { @Generated public static ToolUseFineTuningDataGenerationJobOptions fromJson(JsonReader jsonReader) throws IOException { return jsonReader.readObject(reader -> { - int maxSamples = 0; Double trainSplit = null; DataGenerationModelOptions modelOptions = null; + int maxSamples = 0; DataGenerationJobType type = DataGenerationJobType.TOOL_USE; while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); reader.nextToken(); - if ("max_samples".equals(fieldName)) { - maxSamples = reader.getInt(); - } else if ("train_split".equals(fieldName)) { + if ("train_split".equals(fieldName)) { trainSplit = reader.getNullable(JsonReader::getDouble); } else if ("model_options".equals(fieldName)) { modelOptions = DataGenerationModelOptions.fromJson(reader); + } else if ("max_samples".equals(fieldName)) { + maxSamples = reader.getInt(); } else if ("type".equals(fieldName)) { type = DataGenerationJobType.fromString(reader.getString()); } else { @@ -118,4 +118,20 @@ public static ToolUseFineTuningDataGenerationJobOptions fromJson(JsonReader json return deserializedToolUseFineTuningDataGenerationJobOptions; }); } + + /* + * Maximum number of samples to generate, up to service-defined limits. + */ + @Generated + private final int maxSamples; + + /** + * Get the maxSamples property: Maximum number of samples to generate, up to service-defined limits. + * + * @return the maxSamples value. + */ + @Generated + public int getMaxSamples() { + return this.maxSamples; + } } diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobOptions.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobOptions.java index 042c4b89086b9..49d9ee70f0c60 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobOptions.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobOptions.java @@ -24,16 +24,6 @@ public final class TracesDataGenerationJobOptions extends DataGenerationJobOptio @Generated private DataGenerationJobType type = DataGenerationJobType.TRACES; - /** - * Creates an instance of TracesDataGenerationJobOptions class. - * - * @param maxSamples the maxSamples value to set. - */ - @Generated - public TracesDataGenerationJobOptions(int maxSamples) { - super(maxSamples); - } - /** * Get the type property: The data generation job type. * @@ -72,10 +62,10 @@ public TracesDataGenerationJobOptions setModelOptions(DataGenerationModelOptions @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); - jsonWriter.writeIntField("max_samples", getMaxSamples()); jsonWriter.writeNumberField("train_split", getTrainSplit()); jsonWriter.writeJsonField("model_options", getModelOptions()); jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString()); + jsonWriter.writeNumberField("max_samples", this.maxSamples); jsonWriter.writeBooleanField("redact_private_content", this.redactPrivateContent); return jsonWriter.writeEndObject(); } @@ -86,40 +76,33 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { * @param jsonReader The JsonReader being read. * @return An instance of TracesDataGenerationJobOptions if the JsonReader was pointing to an instance of it, or * null if it was pointing to JSON null. - * @throws IllegalStateException If the deserialized JSON object was missing any required properties. * @throws IOException If an error occurs while reading the TracesDataGenerationJobOptions. */ @Generated public static TracesDataGenerationJobOptions fromJson(JsonReader jsonReader) throws IOException { return jsonReader.readObject(reader -> { - int maxSamples = 0; - Double trainSplit = null; - DataGenerationModelOptions modelOptions = null; - DataGenerationJobType type = DataGenerationJobType.TRACES; - Boolean redactPrivateContent = null; + TracesDataGenerationJobOptions deserializedTracesDataGenerationJobOptions + = new TracesDataGenerationJobOptions(); while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); reader.nextToken(); - if ("max_samples".equals(fieldName)) { - maxSamples = reader.getInt(); - } else if ("train_split".equals(fieldName)) { - trainSplit = reader.getNullable(JsonReader::getDouble); + if ("train_split".equals(fieldName)) { + deserializedTracesDataGenerationJobOptions.setTrainSplit(reader.getNullable(JsonReader::getDouble)); } else if ("model_options".equals(fieldName)) { - modelOptions = DataGenerationModelOptions.fromJson(reader); + deserializedTracesDataGenerationJobOptions + .setModelOptions(DataGenerationModelOptions.fromJson(reader)); } else if ("type".equals(fieldName)) { - type = DataGenerationJobType.fromString(reader.getString()); + deserializedTracesDataGenerationJobOptions.type + = DataGenerationJobType.fromString(reader.getString()); + } else if ("max_samples".equals(fieldName)) { + deserializedTracesDataGenerationJobOptions.maxSamples = reader.getNullable(JsonReader::getInt); } else if ("redact_private_content".equals(fieldName)) { - redactPrivateContent = reader.getNullable(JsonReader::getBoolean); + deserializedTracesDataGenerationJobOptions.redactPrivateContent + = reader.getNullable(JsonReader::getBoolean); } else { reader.skipChildren(); } } - TracesDataGenerationJobOptions deserializedTracesDataGenerationJobOptions - = new TracesDataGenerationJobOptions(maxSamples); - deserializedTracesDataGenerationJobOptions.setTrainSplit(trainSplit); - deserializedTracesDataGenerationJobOptions.setModelOptions(modelOptions); - deserializedTracesDataGenerationJobOptions.type = type; - deserializedTracesDataGenerationJobOptions.redactPrivateContent = redactPrivateContent; return deserializedTracesDataGenerationJobOptions; }); } @@ -154,4 +137,41 @@ public TracesDataGenerationJobOptions setRedactPrivateContent(Boolean redactPriv this.redactPrivateContent = redactPrivateContent; return this; } + + /* + * Maximum number of samples to generate, up to service-defined limits. If omitted, sampling is turned off. + */ + @Generated + private Integer maxSamples; + + /** + * Creates an instance of TracesDataGenerationJobOptions class. + */ + @Generated + public TracesDataGenerationJobOptions() { + } + + /** + * Get the maxSamples property: Maximum number of samples to generate, up to service-defined limits. If omitted, + * sampling is turned off. + * + * @return the maxSamples value. + */ + @Generated + public Integer getMaxSamples() { + return this.maxSamples; + } + + /** + * Set the maxSamples property: Maximum number of samples to generate, up to service-defined limits. If omitted, + * sampling is turned off. + * + * @param maxSamples the maxSamples value to set. + * @return the TracesDataGenerationJobOptions object itself. + */ + @Generated + public TracesDataGenerationJobOptions setMaxSamples(Integer maxSamples) { + this.maxSamples = maxSamples; + return this; + } } diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobSource.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobSource.java index 6a70f04c7c629..3dbdfc2ab95f0 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobSource.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobSource.java @@ -13,6 +13,7 @@ import java.time.Instant; import java.time.OffsetDateTime; import java.time.ZoneOffset; +import java.util.List; /** * Traces source for data generation jobs — conversation traces from Application Insights. @@ -238,6 +239,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStringField("agent_name", this.agentName); jsonWriter.writeStringField("agent_version", this.agentVersion); jsonWriter.writeNumberField("end_time", this.endTime); + jsonWriter.writeArrayField("trace_ids", this.traceIds, (writer, element) -> writer.writeString(element)); return jsonWriter.writeEndObject(); } @@ -260,6 +262,7 @@ public static TracesDataGenerationJobSource fromJson(JsonReader jsonReader) thro String agentName = null; String agentVersion = null; Long endTime = null; + List traceIds = null; while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); reader.nextToken(); @@ -277,6 +280,8 @@ public static TracesDataGenerationJobSource fromJson(JsonReader jsonReader) thro agentVersion = reader.getString(); } else if ("end_time".equals(fieldName)) { endTime = reader.getNullable(JsonReader::getLong); + } else if ("trace_ids".equals(fieldName)) { + traceIds = reader.readArray(reader1 -> reader1.getString()); } else { reader.skipChildren(); } @@ -289,7 +294,36 @@ public static TracesDataGenerationJobSource fromJson(JsonReader jsonReader) thro deserializedTracesDataGenerationJobSource.agentName = agentName; deserializedTracesDataGenerationJobSource.agentVersion = agentVersion; deserializedTracesDataGenerationJobSource.endTime = endTime; + deserializedTracesDataGenerationJobSource.traceIds = traceIds; return deserializedTracesDataGenerationJobSource; }); } + + /* + * Optional explicit list of trace IDs to include. + */ + @Generated + private List traceIds; + + /** + * Get the traceIds property: Optional explicit list of trace IDs to include. + * + * @return the traceIds value. + */ + @Generated + public List getTraceIds() { + return this.traceIds; + } + + /** + * Set the traceIds property: Optional explicit list of trace IDs to include. + * + * @param traceIds the traceIds value to set. + * @return the TracesDataGenerationJobSource object itself. + */ + @Generated + public TracesDataGenerationJobSource setTraceIds(List traceIds) { + this.traceIds = traceIds; + return this; + } } diff --git a/sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_metadata.json b/sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_metadata.json index aed9bc66185fc..3058a637612c0 100644 --- a/sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_metadata.json +++ b/sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_metadata.json @@ -1 +1 @@ -{"flavor":"azure","apiVersions":{"Azure.AI.Projects":"v1"},"crossLanguagePackageId":"Azure.AI.Projects","crossLanguageVersion":"66b942121dae","crossLanguageDefinitions":{"com.azure.ai.projects.AIProjectClientBuilder":"Azure.AI.Projects","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient":"Azure.AI.Projects.Beta.AgentInsightMonitors","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.beginCreateAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.beginCreateAgentInsightRunWithModel":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.cancelAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.cancelAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.createAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.createAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.deleteAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.deleteAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsightMonitors":"Azure.AI.Projects.AgentInsightMonitors.list","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsightRuns":"Azure.AI.Projects.AgentInsightMonitors.listRuns","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsights":"Azure.AI.Projects.AgentInsightMonitors.listInsights","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.resetAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.resetAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient":"Azure.AI.Projects.Beta.AgentInsightMonitors","com.azure.ai.projects.BetaAgentInsightMonitorsClient.beginCreateAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.beginCreateAgentInsightRunWithModel":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.cancelAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.cancelAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.createAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsClient.createAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsClient.deleteAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsClient.deleteAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsightMonitors":"Azure.AI.Projects.AgentInsightMonitors.list","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsightRuns":"Azure.AI.Projects.AgentInsightMonitors.listRuns","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsights":"Azure.AI.Projects.AgentInsightMonitors.listInsights","com.azure.ai.projects.BetaAgentInsightMonitorsClient.resetAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsClient.resetAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaDatasetsAsyncClient":"Azure.AI.Projects.Beta.Datasets","com.azure.ai.projects.BetaDatasetsAsyncClient.beginCreateGenerationJob":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsAsyncClient.beginCreateGenerationJobWithModel":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsAsyncClient.cancelGenerationJob":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsAsyncClient.cancelGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsAsyncClient.deleteGenerationJob":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsAsyncClient.deleteGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsAsyncClient.getGenerationJob":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsAsyncClient.getGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsAsyncClient.listGenerationJobs":"Azure.AI.Projects.DataGenerationJobs.list","com.azure.ai.projects.BetaDatasetsClient":"Azure.AI.Projects.Beta.Datasets","com.azure.ai.projects.BetaDatasetsClient.beginCreateGenerationJob":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsClient.beginCreateGenerationJobWithModel":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsClient.cancelGenerationJob":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsClient.cancelGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsClient.deleteGenerationJob":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsClient.deleteGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsClient.getGenerationJob":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsClient.getGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsClient.listGenerationJobs":"Azure.AI.Projects.DataGenerationJobs.list","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient":"Azure.AI.Projects.Beta.EvaluationTaxonomies","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.createEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.createEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.deleteEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.deleteEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.getEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.getEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.listEvaluationTaxonomies":"Azure.AI.Projects.EvaluationTaxonomies.list","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.updateEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.updateEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesClient":"Azure.AI.Projects.Beta.EvaluationTaxonomies","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.createEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.createEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.deleteEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.deleteEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.getEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.getEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.listEvaluationTaxonomies":"Azure.AI.Projects.EvaluationTaxonomies.list","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.updateEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.updateEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluatorsAsyncClient":"Azure.AI.Projects.Beta.Evaluators","com.azure.ai.projects.BetaEvaluatorsAsyncClient.beginCreateEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsAsyncClient.beginCreateEvaluatorGenerationJobWithModel":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsAsyncClient.cancelEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsAsyncClient.cancelEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsAsyncClient.createEvaluatorVersion":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.createEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorVersion":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getCredentials":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getCredentialsWithResponse":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorVersion":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listEvaluatorGenerationJobs":"Azure.AI.Projects.EvaluatorGenerationJobs.list","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listEvaluatorVersions":"Azure.AI.Projects.Evaluators.listVersions","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listLatestEvaluatorVersions":"Azure.AI.Projects.Evaluators.listLatestVersions","com.azure.ai.projects.BetaEvaluatorsAsyncClient.startPendingUpload":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsAsyncClient.startPendingUploadWithResponse":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsAsyncClient.updateEvaluatorVersion":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.updateEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsClient":"Azure.AI.Projects.Beta.Evaluators","com.azure.ai.projects.BetaEvaluatorsClient.beginCreateEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsClient.beginCreateEvaluatorGenerationJobWithModel":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsClient.cancelEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsClient.cancelEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsClient.createEvaluatorVersion":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsClient.createEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorVersion":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsClient.getCredentials":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsClient.getCredentialsWithResponse":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorVersion":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsClient.listEvaluatorGenerationJobs":"Azure.AI.Projects.EvaluatorGenerationJobs.list","com.azure.ai.projects.BetaEvaluatorsClient.listEvaluatorVersions":"Azure.AI.Projects.Evaluators.listVersions","com.azure.ai.projects.BetaEvaluatorsClient.listLatestEvaluatorVersions":"Azure.AI.Projects.Evaluators.listLatestVersions","com.azure.ai.projects.BetaEvaluatorsClient.startPendingUpload":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsClient.startPendingUploadWithResponse":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsClient.updateEvaluatorVersion":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsClient.updateEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaInsightsAsyncClient":"Azure.AI.Projects.Beta.Insights","com.azure.ai.projects.BetaInsightsAsyncClient.generateInsight":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsAsyncClient.generateInsightWithResponse":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsAsyncClient.getInsight":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsAsyncClient.getInsightWithResponse":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsAsyncClient.listInsights":"Azure.AI.Projects.Insights.list","com.azure.ai.projects.BetaInsightsClient":"Azure.AI.Projects.Beta.Insights","com.azure.ai.projects.BetaInsightsClient.generateInsight":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsClient.generateInsightWithResponse":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsClient.getInsight":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsClient.getInsightWithResponse":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsClient.listInsights":"Azure.AI.Projects.Insights.list","com.azure.ai.projects.BetaModelsAsyncClient":"Azure.AI.Projects.Beta.Models","com.azure.ai.projects.BetaModelsAsyncClient.createModelVersionAsyncWithResponse":"Azure.AI.Projects.Models.createAsync","com.azure.ai.projects.BetaModelsAsyncClient.deleteModelVersion":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsAsyncClient.deleteModelVersionWithResponse":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsAsyncClient.getModelCredentials":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsAsyncClient.getModelCredentialsWithResponse":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsAsyncClient.getModelVersion":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsAsyncClient.getModelVersionWithResponse":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsAsyncClient.listLatestModelVersions":"Azure.AI.Projects.Models.listLatest","com.azure.ai.projects.BetaModelsAsyncClient.listModelVersions":"Azure.AI.Projects.Models.listVersions","com.azure.ai.projects.BetaModelsAsyncClient.startModelPendingUpload":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsAsyncClient.startModelPendingUploadWithResponse":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsAsyncClient.updateModelVersion":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsAsyncClient.updateModelVersionWithResponse":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsClient":"Azure.AI.Projects.Beta.Models","com.azure.ai.projects.BetaModelsClient.createModelVersionAsyncWithResponse":"Azure.AI.Projects.Models.createAsync","com.azure.ai.projects.BetaModelsClient.deleteModelVersion":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsClient.deleteModelVersionWithResponse":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsClient.getModelCredentials":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsClient.getModelCredentialsWithResponse":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsClient.getModelVersion":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsClient.getModelVersionWithResponse":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsClient.listLatestModelVersions":"Azure.AI.Projects.Models.listLatest","com.azure.ai.projects.BetaModelsClient.listModelVersions":"Azure.AI.Projects.Models.listVersions","com.azure.ai.projects.BetaModelsClient.startModelPendingUpload":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsClient.startModelPendingUploadWithResponse":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsClient.updateModelVersion":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsClient.updateModelVersionWithResponse":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaRedTeamsAsyncClient":"Azure.AI.Projects.Beta.RedTeams","com.azure.ai.projects.BetaRedTeamsAsyncClient.createRedTeamRun":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsAsyncClient.createRedTeamRunWithResponse":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsAsyncClient.getRedTeam":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsAsyncClient.getRedTeamWithResponse":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsAsyncClient.listRedTeams":"Azure.AI.Projects.RedTeams.list","com.azure.ai.projects.BetaRedTeamsClient":"Azure.AI.Projects.Beta.RedTeams","com.azure.ai.projects.BetaRedTeamsClient.createRedTeamRun":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsClient.createRedTeamRunWithResponse":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsClient.getRedTeam":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsClient.getRedTeamWithResponse":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsClient.listRedTeams":"Azure.AI.Projects.RedTeams.list","com.azure.ai.projects.BetaRoutinesAsyncClient":"Azure.AI.Projects.Beta.Routines","com.azure.ai.projects.BetaRoutinesAsyncClient.createOrUpdateRoutine":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.createOrUpdateRoutineWithResponse":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.deleteRoutine":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.deleteRoutineWithResponse":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.disableRoutine":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.disableRoutineWithResponse":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.dispatchRoutine":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesAsyncClient.dispatchRoutineWithResponse":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesAsyncClient.enableRoutine":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.enableRoutineWithResponse":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.getRoutine":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.getRoutineWithResponse":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.listRoutineRuns":"Azure.AI.Projects.Routines.listRoutineRuns","com.azure.ai.projects.BetaRoutinesAsyncClient.listRoutines":"Azure.AI.Projects.Routines.listRoutines","com.azure.ai.projects.BetaRoutinesClient":"Azure.AI.Projects.Beta.Routines","com.azure.ai.projects.BetaRoutinesClient.createOrUpdateRoutine":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesClient.createOrUpdateRoutineWithResponse":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesClient.deleteRoutine":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesClient.deleteRoutineWithResponse":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesClient.disableRoutine":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesClient.disableRoutineWithResponse":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesClient.dispatchRoutine":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesClient.dispatchRoutineWithResponse":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesClient.enableRoutine":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesClient.enableRoutineWithResponse":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesClient.getRoutine":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesClient.getRoutineWithResponse":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesClient.listRoutineRuns":"Azure.AI.Projects.Routines.listRoutineRuns","com.azure.ai.projects.BetaRoutinesClient.listRoutines":"Azure.AI.Projects.Routines.listRoutines","com.azure.ai.projects.BetaSchedulesAsyncClient":"Azure.AI.Projects.Beta.Schedules","com.azure.ai.projects.BetaSchedulesAsyncClient.createOrUpdateSchedule":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesAsyncClient.createOrUpdateScheduleWithResponse":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesAsyncClient.deleteSchedule":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesAsyncClient.deleteScheduleWithResponse":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesAsyncClient.getSchedule":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleRun":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleRunWithResponse":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleWithResponse":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesAsyncClient.listScheduleRuns":"Azure.AI.Projects.Schedules.listRuns","com.azure.ai.projects.BetaSchedulesAsyncClient.listSchedules":"Azure.AI.Projects.Schedules.list","com.azure.ai.projects.BetaSchedulesClient":"Azure.AI.Projects.Beta.Schedules","com.azure.ai.projects.BetaSchedulesClient.createOrUpdateSchedule":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesClient.createOrUpdateScheduleWithResponse":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesClient.deleteSchedule":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesClient.deleteScheduleWithResponse":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesClient.getSchedule":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesClient.getScheduleRun":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesClient.getScheduleRunWithResponse":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesClient.getScheduleWithResponse":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesClient.listScheduleRuns":"Azure.AI.Projects.Schedules.listRuns","com.azure.ai.projects.BetaSchedulesClient.listSchedules":"Azure.AI.Projects.Schedules.list","com.azure.ai.projects.BetaSkillsAsyncClient":"Azure.AI.Projects.Beta.Skills","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersion":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionFromFiles":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionFromFilesWithResponseInternal":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionWithResponse":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkill":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillContent":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillContentWithResponse":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersion":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionContent":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionContentWithResponse":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionWithResponse":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillWithResponse":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsAsyncClient.listSkillVersions":"Azure.AI.Projects.Skills.listSkillVersions","com.azure.ai.projects.BetaSkillsAsyncClient.listSkills":"Azure.AI.Projects.Skills.listSkills","com.azure.ai.projects.BetaSkillsAsyncClient.updateSkill":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsAsyncClient.updateSkillWithResponse":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsClient":"Azure.AI.Projects.Beta.Skills","com.azure.ai.projects.BetaSkillsClient.createSkillVersion":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsClient.createSkillVersionFromFiles":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsClient.createSkillVersionFromFilesWithResponseInternal":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsClient.createSkillVersionWithResponse":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkill":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsClient.getSkillContent":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsClient.getSkillContentWithResponse":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersion":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkillVersionContent":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersionContentWithResponse":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersionWithResponse":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkillWithResponse":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsClient.listSkillVersions":"Azure.AI.Projects.Skills.listSkillVersions","com.azure.ai.projects.BetaSkillsClient.listSkills":"Azure.AI.Projects.Skills.listSkills","com.azure.ai.projects.BetaSkillsClient.updateSkill":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsClient.updateSkillWithResponse":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.ConnectionsAsyncClient":"Azure.AI.Projects.Connections","com.azure.ai.projects.ConnectionsAsyncClient.getConnection":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithCredentials":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithCredentialsWithResponse":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithResponse":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsAsyncClient.listConnections":"Azure.AI.Projects.Connections.list","com.azure.ai.projects.ConnectionsClient":"Azure.AI.Projects.Connections","com.azure.ai.projects.ConnectionsClient.getConnection":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsClient.getConnectionWithCredentials":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsClient.getConnectionWithCredentialsWithResponse":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsClient.getConnectionWithResponse":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsClient.listConnections":"Azure.AI.Projects.Connections.list","com.azure.ai.projects.DatasetsAsyncClient":"Azure.AI.Projects.Datasets","com.azure.ai.projects.DatasetsAsyncClient.createOrUpdateDatasetVersion":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsAsyncClient.createOrUpdateDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsAsyncClient.deleteDatasetVersion":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsAsyncClient.deleteDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsAsyncClient.getCredentials":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsAsyncClient.getCredentialsWithResponse":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsAsyncClient.getDatasetVersion":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsAsyncClient.getDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsAsyncClient.listDatasetVersions":"Azure.AI.Projects.Datasets.listVersions","com.azure.ai.projects.DatasetsAsyncClient.listLatestDatasetVersions":"Azure.AI.Projects.Datasets.listLatest","com.azure.ai.projects.DatasetsAsyncClient.pendingUpload":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsAsyncClient.pendingUploadWithResponse":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsClient":"Azure.AI.Projects.Datasets","com.azure.ai.projects.DatasetsClient.createOrUpdateDatasetVersion":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsClient.createOrUpdateDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsClient.deleteDatasetVersion":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsClient.deleteDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsClient.getCredentials":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsClient.getCredentialsWithResponse":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsClient.getDatasetVersion":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsClient.getDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsClient.listDatasetVersions":"Azure.AI.Projects.Datasets.listVersions","com.azure.ai.projects.DatasetsClient.listLatestDatasetVersions":"Azure.AI.Projects.Datasets.listLatest","com.azure.ai.projects.DatasetsClient.pendingUpload":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsClient.pendingUploadWithResponse":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DeploymentsAsyncClient":"Azure.AI.Projects.Deployments","com.azure.ai.projects.DeploymentsAsyncClient.getDeployment":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsAsyncClient.getDeploymentWithResponse":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsAsyncClient.listDeployments":"Azure.AI.Projects.Deployments.list","com.azure.ai.projects.DeploymentsClient":"Azure.AI.Projects.Deployments","com.azure.ai.projects.DeploymentsClient.getDeployment":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsClient.getDeploymentWithResponse":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsClient.listDeployments":"Azure.AI.Projects.Deployments.list","com.azure.ai.projects.EvaluationRulesAsyncClient":"Azure.AI.Projects.EvaluationRules","com.azure.ai.projects.EvaluationRulesAsyncClient.createOrUpdateEvaluationRule":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesAsyncClient.createOrUpdateEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesAsyncClient.deleteEvaluationRule":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesAsyncClient.deleteEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesAsyncClient.getEvaluationRule":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesAsyncClient.getEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesAsyncClient.listEvaluationRules":"Azure.AI.Projects.EvaluationRules.list","com.azure.ai.projects.EvaluationRulesClient":"Azure.AI.Projects.EvaluationRules","com.azure.ai.projects.EvaluationRulesClient.createOrUpdateEvaluationRule":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesClient.createOrUpdateEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesClient.deleteEvaluationRule":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesClient.deleteEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesClient.getEvaluationRule":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesClient.getEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesClient.listEvaluationRules":"Azure.AI.Projects.EvaluationRules.list","com.azure.ai.projects.IndexesAsyncClient":"Azure.AI.Projects.Indexes","com.azure.ai.projects.IndexesAsyncClient.createOrUpdateIndexVersion":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesAsyncClient.createOrUpdateIndexVersionWithResponse":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesAsyncClient.deleteIndexVersion":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesAsyncClient.deleteIndexVersionWithResponse":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesAsyncClient.getIndexVersion":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesAsyncClient.getIndexVersionWithResponse":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesAsyncClient.listIndexVersions":"Azure.AI.Projects.Indexes.listVersions","com.azure.ai.projects.IndexesAsyncClient.listLatestIndexVersions":"Azure.AI.Projects.Indexes.listLatest","com.azure.ai.projects.IndexesClient":"Azure.AI.Projects.Indexes","com.azure.ai.projects.IndexesClient.createOrUpdateIndexVersion":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesClient.createOrUpdateIndexVersionWithResponse":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesClient.deleteIndexVersion":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesClient.deleteIndexVersionWithResponse":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesClient.getIndexVersion":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesClient.getIndexVersionWithResponse":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesClient.listIndexVersions":"Azure.AI.Projects.Indexes.listVersions","com.azure.ai.projects.IndexesClient.listLatestIndexVersions":"Azure.AI.Projects.Indexes.listLatest","com.azure.ai.projects.implementation.models.CreateOrUpdateRoutineRequest":"Azure.AI.Projects.createOrUpdateRoutine.Request.anonymous","com.azure.ai.projects.implementation.models.CreateSkillVersionRequest":"Azure.AI.Projects.createSkillVersion.Request.anonymous","com.azure.ai.projects.implementation.models.DispatchRoutineAsyncRequest":"Azure.AI.Projects.dispatchRoutineAsync.Request.anonymous","com.azure.ai.projects.implementation.models.FoundryFeaturesOptInKeys":"Azure.AI.Projects.FoundryFeaturesOptInKeys","com.azure.ai.projects.implementation.models.UpdateSkillRequest":"Azure.AI.Projects.updateSkill.Request.anonymous","com.azure.ai.projects.models.AIProjectIndex":"Azure.AI.Projects.Index","com.azure.ai.projects.models.AgentClusterInsightRequest":"Azure.AI.Projects.AgentClusterInsightRequest","com.azure.ai.projects.models.AgentClusterInsightResult":"Azure.AI.Projects.AgentClusterInsightResult","com.azure.ai.projects.models.AgentDataGenerationJobSource":"Azure.AI.Projects.AgentDataGenerationJobSource","com.azure.ai.projects.models.AgentEvaluatorGenerationJobSource":"Azure.AI.Projects.AgentEvaluatorGenerationJobSource","com.azure.ai.projects.models.AgentInsight":"Azure.AI.Projects.AgentInsight","com.azure.ai.projects.models.AgentInsightDetails":"Azure.AI.Projects.AgentInsightDetails","com.azure.ai.projects.models.AgentInsightEstimatedCost":"Azure.AI.Projects.AgentInsightEstimatedCost","com.azure.ai.projects.models.AgentInsightHighlightedTrace":"Azure.AI.Projects.AgentInsightHighlightedTrace","com.azure.ai.projects.models.AgentInsightLinkedTrace":"Azure.AI.Projects.AgentInsightLinkedTrace","com.azure.ai.projects.models.AgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitor","com.azure.ai.projects.models.AgentInsightMonitorCreate":"Azure.AI.Projects.AgentInsightMonitorCreate","com.azure.ai.projects.models.AgentInsightMonitorListItem":"Azure.AI.Projects.AgentInsightMonitorListItem","com.azure.ai.projects.models.AgentInsightMonitorUpdate":"Azure.AI.Projects.AgentInsightMonitorUpdate","com.azure.ai.projects.models.AgentInsightOverviewSource":"Azure.AI.Projects.AgentInsightOverviewSource","com.azure.ai.projects.models.AgentInsightPromptSurface":"Azure.AI.Projects.AgentInsightPromptSurface","com.azure.ai.projects.models.AgentInsightProposedFix":"Azure.AI.Projects.AgentInsightProposedFix","com.azure.ai.projects.models.AgentInsightProposedFixChange":"Azure.AI.Projects.AgentInsightProposedFixChange","com.azure.ai.projects.models.AgentInsightProposedFixKind":"Azure.AI.Projects.AgentInsightProposedFixKind","com.azure.ai.projects.models.AgentInsightRecommendedAction":"Azure.AI.Projects.AgentInsightRecommendedAction","com.azure.ai.projects.models.AgentInsightRun":"Azure.AI.Projects.AgentInsightRun","com.azure.ai.projects.models.AgentInsightRunCreate":"Azure.AI.Projects.AgentInsightRunCreate","com.azure.ai.projects.models.AgentInsightRunResult":"Azure.AI.Projects.AgentInsightRunResult","com.azure.ai.projects.models.AgentInsightRunTrigger":"Azure.AI.Projects.AgentInsightRunTrigger","com.azure.ai.projects.models.AgentInsightSeverity":"Azure.AI.Projects.AgentInsightSeverity","com.azure.ai.projects.models.AgentInsightStatus":"Azure.AI.Projects.AgentInsightStatus","com.azure.ai.projects.models.AgentInsightSuspension":"Azure.AI.Projects.AgentInsightSuspension","com.azure.ai.projects.models.AgentInsightTokenUsage":"Azure.AI.Projects.AgentInsightTokenUsage","com.azure.ai.projects.models.AgentInsightUpdate":"Azure.AI.Projects.AgentInsightUpdate","com.azure.ai.projects.models.AgentInsightsOverview":"Azure.AI.Projects.AgentInsightsOverview","com.azure.ai.projects.models.AgentInsightsOverviewOverride":"Azure.AI.Projects.AgentInsightsOverviewOverride","com.azure.ai.projects.models.AgentTaxonomyInput":"Azure.AI.Projects.AgentTaxonomyInput","com.azure.ai.projects.models.AgenticIdentityPreviewCredential":"Azure.AI.Projects.AgenticIdentityPreviewCredentials","com.azure.ai.projects.models.ApiError":"OpenAI.Error","com.azure.ai.projects.models.ApiKeyCredential":"Azure.AI.Projects.ApiKeyCredentials","com.azure.ai.projects.models.ArtifactProfile":"Azure.AI.Projects.ArtifactProfile","com.azure.ai.projects.models.AttackStrategy":"Azure.AI.Projects.AttackStrategy","com.azure.ai.projects.models.AzureAIAgentTarget":"Azure.AI.Projects.AzureAIAgentTarget","com.azure.ai.projects.models.AzureAIModelTarget":"Azure.AI.Projects.AzureAIModelTarget","com.azure.ai.projects.models.AzureAISearchIndex":"Azure.AI.Projects.AzureAISearchIndex","com.azure.ai.projects.models.AzureOpenAIModelConfiguration":"Azure.AI.Projects.AzureOpenAIModelConfiguration","com.azure.ai.projects.models.BaseCredential":"Azure.AI.Projects.BaseCredentials","com.azure.ai.projects.models.BlobReference":"Azure.AI.Projects.BlobReference","com.azure.ai.projects.models.BlobReferenceSasCredential":"Azure.AI.Projects.SasCredential","com.azure.ai.projects.models.ChartCoordinate":"Azure.AI.Projects.ChartCoordinate","com.azure.ai.projects.models.ClusterInsightResult":"Azure.AI.Projects.ClusterInsightResult","com.azure.ai.projects.models.ClusterTokenUsage":"Azure.AI.Projects.ClusterTokenUsage","com.azure.ai.projects.models.CodeBasedEvaluatorDefinition":"Azure.AI.Projects.CodeBasedEvaluatorDefinition","com.azure.ai.projects.models.Connection":"Azure.AI.Projects.Connection","com.azure.ai.projects.models.ConnectionType":"Azure.AI.Projects.ConnectionType","com.azure.ai.projects.models.ContinuousEvaluationRuleAction":"Azure.AI.Projects.ContinuousEvaluationRuleAction","com.azure.ai.projects.models.CosmosDBIndex":"Azure.AI.Projects.CosmosDBIndex","com.azure.ai.projects.models.CreateAsyncResponse":"Azure.AI.Projects.createAsync.Response.anonymous","com.azure.ai.projects.models.CreateSkillVersionFromFilesBody":"Azure.AI.Projects.CreateSkillVersionFromFilesBody","com.azure.ai.projects.models.CredentialType":"Azure.AI.Projects.CredentialType","com.azure.ai.projects.models.CronTrigger":"Azure.AI.Projects.CronTrigger","com.azure.ai.projects.models.CustomCredential":"Azure.AI.Projects.CustomCredential","com.azure.ai.projects.models.CustomRoutineTrigger":"Azure.AI.Projects.CustomRoutineTrigger","com.azure.ai.projects.models.DailyRecurrenceSchedule":"Azure.AI.Projects.DailyRecurrenceSchedule","com.azure.ai.projects.models.DataGenerationJob":"Azure.AI.Projects.DataGenerationJob","com.azure.ai.projects.models.DataGenerationJobInputs":"Azure.AI.Projects.DataGenerationJobInputs","com.azure.ai.projects.models.DataGenerationJobOptions":"Azure.AI.Projects.DataGenerationJobOptions","com.azure.ai.projects.models.DataGenerationJobOutput":"Azure.AI.Projects.DataGenerationJobOutput","com.azure.ai.projects.models.DataGenerationJobOutputOptions":"Azure.AI.Projects.DataGenerationJobOutputOptions","com.azure.ai.projects.models.DataGenerationJobOutputType":"Azure.AI.Projects.DataGenerationJobOutputType","com.azure.ai.projects.models.DataGenerationJobResult":"Azure.AI.Projects.DataGenerationJobResult","com.azure.ai.projects.models.DataGenerationJobScenario":"Azure.AI.Projects.DataGenerationJobScenario","com.azure.ai.projects.models.DataGenerationJobSource":"Azure.AI.Projects.DataGenerationJobSource","com.azure.ai.projects.models.DataGenerationJobSourceType":"Azure.AI.Projects.DataGenerationJobSourceType","com.azure.ai.projects.models.DataGenerationJobType":"Azure.AI.Projects.DataGenerationJobType","com.azure.ai.projects.models.DataGenerationModelOptions":"Azure.AI.Projects.DataGenerationModelOptions","com.azure.ai.projects.models.DataGenerationTokenUsage":"Azure.AI.Projects.DataGenerationTokenUsage","com.azure.ai.projects.models.DatasetCredential":"Azure.AI.Projects.AssetCredentialResponse","com.azure.ai.projects.models.DatasetDataGenerationJobOutput":"Azure.AI.Projects.DatasetDataGenerationJobOutput","com.azure.ai.projects.models.DatasetEvaluatorGenerationJobSource":"Azure.AI.Projects.DatasetEvaluatorGenerationJobSource","com.azure.ai.projects.models.DatasetReference":"Azure.AI.Projects.DatasetReference","com.azure.ai.projects.models.DatasetType":"Azure.AI.Projects.DatasetType","com.azure.ai.projects.models.DatasetVersion":"Azure.AI.Projects.DatasetVersion","com.azure.ai.projects.models.Deployment":"Azure.AI.Projects.Deployment","com.azure.ai.projects.models.DeploymentType":"Azure.AI.Projects.DeploymentType","com.azure.ai.projects.models.Dimension":"Azure.AI.Projects.Dimension","com.azure.ai.projects.models.DispatchRoutineResult":"Azure.AI.Projects.DispatchRoutineResponse","com.azure.ai.projects.models.EmbeddingConfiguration":"Azure.AI.Projects.EmbeddingConfiguration","com.azure.ai.projects.models.EndpointBasedEvaluatorDefinition":"Azure.AI.Projects.EndpointBasedEvaluatorDefinition","com.azure.ai.projects.models.EntraIdCredential":"Azure.AI.Projects.EntraIDCredentials","com.azure.ai.projects.models.EvaluationComparisonInsightRequest":"Azure.AI.Projects.EvaluationComparisonInsightRequest","com.azure.ai.projects.models.EvaluationComparisonInsightResult":"Azure.AI.Projects.EvaluationComparisonInsightResult","com.azure.ai.projects.models.EvaluationLevel":"Azure.AI.Projects.EvaluationLevel","com.azure.ai.projects.models.EvaluationResult":"Azure.AI.Projects.EvalResult","com.azure.ai.projects.models.EvaluationResultSample":"Azure.AI.Projects.EvaluationResultSample","com.azure.ai.projects.models.EvaluationRule":"Azure.AI.Projects.EvaluationRule","com.azure.ai.projects.models.EvaluationRuleAction":"Azure.AI.Projects.EvaluationRuleAction","com.azure.ai.projects.models.EvaluationRuleActionType":"Azure.AI.Projects.EvaluationRuleActionType","com.azure.ai.projects.models.EvaluationRuleEventType":"Azure.AI.Projects.EvaluationRuleEventType","com.azure.ai.projects.models.EvaluationRuleFilter":"Azure.AI.Projects.EvaluationRuleFilter","com.azure.ai.projects.models.EvaluationRunClusterInsightRequest":"Azure.AI.Projects.EvaluationRunClusterInsightRequest","com.azure.ai.projects.models.EvaluationRunClusterInsightResult":"Azure.AI.Projects.EvaluationRunClusterInsightResult","com.azure.ai.projects.models.EvaluationRunResultCompareItem":"Azure.AI.Projects.EvalRunResultCompareItem","com.azure.ai.projects.models.EvaluationRunResultComparison":"Azure.AI.Projects.EvalRunResultComparison","com.azure.ai.projects.models.EvaluationRunResultSummary":"Azure.AI.Projects.EvalRunResultSummary","com.azure.ai.projects.models.EvaluationScheduleTask":"Azure.AI.Projects.EvaluationScheduleTask","com.azure.ai.projects.models.EvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomy","com.azure.ai.projects.models.EvaluationTaxonomyInput":"Azure.AI.Projects.EvaluationTaxonomyInput","com.azure.ai.projects.models.EvaluationTaxonomyInputType":"Azure.AI.Projects.EvaluationTaxonomyInputType","com.azure.ai.projects.models.EvaluatorCategory":"Azure.AI.Projects.EvaluatorCategory","com.azure.ai.projects.models.EvaluatorCredentialInput":"Azure.AI.Projects.EvaluatorCredentialRequest","com.azure.ai.projects.models.EvaluatorDefinition":"Azure.AI.Projects.EvaluatorDefinition","com.azure.ai.projects.models.EvaluatorDefinitionType":"Azure.AI.Projects.EvaluatorDefinitionType","com.azure.ai.projects.models.EvaluatorGenerationArtifacts":"Azure.AI.Projects.EvaluatorGenerationArtifacts","com.azure.ai.projects.models.EvaluatorGenerationInputs":"Azure.AI.Projects.EvaluatorGenerationInputs","com.azure.ai.projects.models.EvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJob","com.azure.ai.projects.models.EvaluatorGenerationJobSource":"Azure.AI.Projects.EvaluatorGenerationJobSource","com.azure.ai.projects.models.EvaluatorGenerationJobSourceType":"Azure.AI.Projects.EvaluatorGenerationJobSourceType","com.azure.ai.projects.models.EvaluatorGenerationTokenUsage":"Azure.AI.Projects.EvaluatorGenerationTokenUsage","com.azure.ai.projects.models.EvaluatorMetric":"Azure.AI.Projects.EvaluatorMetric","com.azure.ai.projects.models.EvaluatorMetricDirection":"Azure.AI.Projects.EvaluatorMetricDirection","com.azure.ai.projects.models.EvaluatorMetricType":"Azure.AI.Projects.EvaluatorMetricType","com.azure.ai.projects.models.EvaluatorType":"Azure.AI.Projects.EvaluatorType","com.azure.ai.projects.models.EvaluatorVersion":"Azure.AI.Projects.EvaluatorVersion","com.azure.ai.projects.models.FieldMapping":"Azure.AI.Projects.FieldMapping","com.azure.ai.projects.models.FileDataGenerationJobOutput":"Azure.AI.Projects.FileDataGenerationJobOutput","com.azure.ai.projects.models.FileDataGenerationJobSource":"Azure.AI.Projects.FileDataGenerationJobSource","com.azure.ai.projects.models.FileDatasetVersion":"Azure.AI.Projects.FileDatasetVersion","com.azure.ai.projects.models.FolderDatasetVersion":"Azure.AI.Projects.FolderDatasetVersion","com.azure.ai.projects.models.FoundryEvaluationTarget":"Azure.AI.Projects.FoundryEvaluationTarget","com.azure.ai.projects.models.FoundryModelArtifactProfileCategory":"Azure.AI.Projects.FoundryModelArtifactProfileCategory","com.azure.ai.projects.models.FoundryModelArtifactProfileSignal":"Azure.AI.Projects.FoundryModelArtifactProfileSignal","com.azure.ai.projects.models.FoundryModelSourceType":"Azure.AI.Projects.FoundryModelSourceType","com.azure.ai.projects.models.FoundryModelWarning":"Azure.AI.Projects.FoundryModelWarning","com.azure.ai.projects.models.FoundryModelWarningCode":"Azure.AI.Projects.FoundryModelWarningCode","com.azure.ai.projects.models.FoundryModelWeightType":"Azure.AI.Projects.FoundryModelWeightType","com.azure.ai.projects.models.GenerationWarningType":"Azure.AI.Projects.GenerationWarningType","com.azure.ai.projects.models.GitHubIssueEvent":"Azure.AI.Projects.GitHubIssueEvent","com.azure.ai.projects.models.GitHubIssueRoutineTrigger":"Azure.AI.Projects.GitHubIssueRoutineTrigger","com.azure.ai.projects.models.GraderAzureAIEvaluator":"Azure.AI.Projects.GraderAzureAIEvaluator","com.azure.ai.projects.models.HourlyRecurrenceSchedule":"Azure.AI.Projects.HourlyRecurrenceSchedule","com.azure.ai.projects.models.HumanEvaluationPreviewRuleAction":"Azure.AI.Projects.HumanEvaluationPreviewRuleAction","com.azure.ai.projects.models.IndexType":"Azure.AI.Projects.IndexType","com.azure.ai.projects.models.Insight":"Azure.AI.Projects.Insight","com.azure.ai.projects.models.InsightCluster":"Azure.AI.Projects.InsightCluster","com.azure.ai.projects.models.InsightModelConfiguration":"Azure.AI.Projects.InsightModelConfiguration","com.azure.ai.projects.models.InsightRequest":"Azure.AI.Projects.InsightRequest","com.azure.ai.projects.models.InsightResult":"Azure.AI.Projects.InsightResult","com.azure.ai.projects.models.InsightSample":"Azure.AI.Projects.InsightSample","com.azure.ai.projects.models.InsightScheduleTask":"Azure.AI.Projects.InsightScheduleTask","com.azure.ai.projects.models.InsightSummary":"Azure.AI.Projects.InsightSummary","com.azure.ai.projects.models.InsightType":"Azure.AI.Projects.InsightType","com.azure.ai.projects.models.InsightsMetadata":"Azure.AI.Projects.InsightsMetadata","com.azure.ai.projects.models.InvokeAgentInvocationsApiDispatchPayload":"Azure.AI.Projects.InvokeAgentInvocationsApiDispatchPayload","com.azure.ai.projects.models.InvokeAgentInvocationsApiRoutineAction":"Azure.AI.Projects.InvokeAgentInvocationsApiRoutineAction","com.azure.ai.projects.models.InvokeAgentResponsesApiDispatchPayload":"Azure.AI.Projects.InvokeAgentResponsesApiDispatchPayload","com.azure.ai.projects.models.InvokeAgentResponsesApiRoutineAction":"Azure.AI.Projects.InvokeAgentResponsesApiRoutineAction","com.azure.ai.projects.models.JobStatus":"Azure.AI.Projects.JobStatus","com.azure.ai.projects.models.ListVersionsRequestType":"Azure.AI.Projects.listVersions.RequestType.anonymous","com.azure.ai.projects.models.LoraConfig":"Azure.AI.Projects.LoraConfig","com.azure.ai.projects.models.ManagedAzureAISearchIndex":"Azure.AI.Projects.ManagedAzureAISearchIndex","com.azure.ai.projects.models.ModelCredentialInput":"Azure.AI.Projects.ModelCredentialRequest","com.azure.ai.projects.models.ModelDeployment":"Azure.AI.Projects.ModelDeployment","com.azure.ai.projects.models.ModelDeploymentSku":"Azure.AI.Projects.Sku","com.azure.ai.projects.models.ModelPendingUploadInput":"Azure.AI.Projects.ModelPendingUploadRequest","com.azure.ai.projects.models.ModelPendingUploadResult":"Azure.AI.Projects.ModelPendingUploadResponse","com.azure.ai.projects.models.ModelSamplingParams":"Azure.AI.Projects.ModelSamplingParams","com.azure.ai.projects.models.ModelSourceData":"Azure.AI.Projects.ModelSourceData","com.azure.ai.projects.models.ModelVersion":"Azure.AI.Projects.ModelVersion","com.azure.ai.projects.models.MonthlyRecurrenceSchedule":"Azure.AI.Projects.MonthlyRecurrenceSchedule","com.azure.ai.projects.models.NoAuthenticationCredential":"Azure.AI.Projects.NoAuthenticationCredentials","com.azure.ai.projects.models.OneTimeTrigger":"Azure.AI.Projects.OneTimeTrigger","com.azure.ai.projects.models.OperationStatus":"Azure.Core.Foundations.OperationState","com.azure.ai.projects.models.PendingUploadRequest":"Azure.AI.Projects.PendingUploadRequest","com.azure.ai.projects.models.PendingUploadResponse":"Azure.AI.Projects.PendingUploadResponse","com.azure.ai.projects.models.PendingUploadType":"Azure.AI.Projects.PendingUploadType","com.azure.ai.projects.models.PromptBasedEvaluatorDefinition":"Azure.AI.Projects.PromptBasedEvaluatorDefinition","com.azure.ai.projects.models.PromptDataGenerationJobSource":"Azure.AI.Projects.PromptDataGenerationJobSource","com.azure.ai.projects.models.PromptEvaluatorGenerationJobSource":"Azure.AI.Projects.PromptEvaluatorGenerationJobSource","com.azure.ai.projects.models.RecurrenceSchedule":"Azure.AI.Projects.RecurrenceSchedule","com.azure.ai.projects.models.RecurrenceTrigger":"Azure.AI.Projects.RecurrenceTrigger","com.azure.ai.projects.models.RecurrenceType":"Azure.AI.Projects.RecurrenceType","com.azure.ai.projects.models.RedTeam":"Azure.AI.Projects.RedTeam","com.azure.ai.projects.models.RiskCategory":"Azure.AI.Projects.RiskCategory","com.azure.ai.projects.models.Routine":"Azure.AI.Projects.Routine","com.azure.ai.projects.models.RoutineAction":"Azure.AI.Projects.RoutineAction","com.azure.ai.projects.models.RoutineActionType":"Azure.AI.Projects.RoutineActionType","com.azure.ai.projects.models.RoutineAttemptSource":"Azure.AI.Projects.RoutineAttemptSource","com.azure.ai.projects.models.RoutineAuthorization":"Azure.AI.Projects.RoutineAuthorization","com.azure.ai.projects.models.RoutineDispatchIdentity":"Azure.AI.Projects.RoutineDispatchIdentity","com.azure.ai.projects.models.RoutineDispatchPayload":"Azure.AI.Projects.RoutineDispatchPayload","com.azure.ai.projects.models.RoutineDispatchPayloadType":"Azure.AI.Projects.RoutineDispatchPayloadType","com.azure.ai.projects.models.RoutineRun":"Azure.AI.Projects.RoutineRun","com.azure.ai.projects.models.RoutineRunPhase":"Azure.AI.Projects.RoutineRunPhase","com.azure.ai.projects.models.RoutineTrigger":"Azure.AI.Projects.RoutineTrigger","com.azure.ai.projects.models.RoutineTriggerType":"Azure.AI.Projects.RoutineTriggerType","com.azure.ai.projects.models.RubricBasedEvaluatorDefinition":"Azure.AI.Projects.RubricBasedEvaluatorDefinition","com.azure.ai.projects.models.RubricGenerationInputQualityWarning":"Azure.AI.Projects.RubricGenerationInputQualityWarning","com.azure.ai.projects.models.RubricGenerationInputQualityWarningCode":"Azure.AI.Projects.RubricGenerationInputQualityWarningCode","com.azure.ai.projects.models.RubricGenerationInputQualityWarningSeverity":"Azure.AI.Projects.RubricGenerationInputQualityWarningSeverity","com.azure.ai.projects.models.RubricGenerationInputQualityWarningSource":"Azure.AI.Projects.RubricGenerationInputQualityWarningSource","com.azure.ai.projects.models.SampleType":"Azure.AI.Projects.SampleType","com.azure.ai.projects.models.SasCredential":"Azure.AI.Projects.SASCredentials","com.azure.ai.projects.models.Schedule":"Azure.AI.Projects.Schedule","com.azure.ai.projects.models.ScheduleProvisioningStatus":"Azure.AI.Projects.ScheduleProvisioningStatus","com.azure.ai.projects.models.ScheduleRoutineTrigger":"Azure.AI.Projects.ScheduleRoutineTrigger","com.azure.ai.projects.models.ScheduleRun":"Azure.AI.Projects.ScheduleRun","com.azure.ai.projects.models.ScheduleTask":"Azure.AI.Projects.ScheduleTask","com.azure.ai.projects.models.ScheduleTaskType":"Azure.AI.Projects.ScheduleTaskType","com.azure.ai.projects.models.SimpleQnADataGenerationJobOptions":"Azure.AI.Projects.SimpleQnADataGenerationJobOptions","com.azure.ai.projects.models.SimpleQnAFineTuningQuestionType":"Azure.AI.Projects.SimpleQnAFineTuningQuestionType","com.azure.ai.projects.models.SimulationSeedDataGenerationJobOptions":"Azure.AI.Projects.SimulationSeedDataGenerationJobOptions","com.azure.ai.projects.models.SkillDetails":"Azure.AI.Projects.Skill","com.azure.ai.projects.models.SkillFileDetails":"TypeSpec.Http.File","com.azure.ai.projects.models.SkillInlineContent":"Azure.AI.Projects.SkillInlineContent","com.azure.ai.projects.models.SkillVersion":"Azure.AI.Projects.SkillVersion","com.azure.ai.projects.models.TargetConfig":"Azure.AI.Projects.RedTeamTargetConfig","com.azure.ai.projects.models.TaxonomyCategory":"Azure.AI.Projects.TaxonomyCategory","com.azure.ai.projects.models.TaxonomySubCategory":"Azure.AI.Projects.TaxonomySubCategory","com.azure.ai.projects.models.TestingCriterionAzureAIEvaluator":"Azure.AI.Projects.TestingCriterionAzureAIEvaluator","com.azure.ai.projects.models.TimerRoutineTrigger":"Azure.AI.Projects.TimerRoutineTrigger","com.azure.ai.projects.models.ToolDescription":"Azure.AI.Projects.ToolDescription","com.azure.ai.projects.models.ToolUseFineTuningDataGenerationJobOptions":"Azure.AI.Projects.ToolUseFineTuningDataGenerationJobOptions","com.azure.ai.projects.models.TracesDataGenerationJobOptions":"Azure.AI.Projects.TracesDataGenerationJobOptions","com.azure.ai.projects.models.TracesDataGenerationJobSource":"Azure.AI.Projects.TracesDataGenerationJobSource","com.azure.ai.projects.models.TracesEvaluatorGenerationJobSource":"Azure.AI.Projects.TracesEvaluatorGenerationJobSource","com.azure.ai.projects.models.TreatmentEffectType":"Azure.AI.Projects.TreatmentEffectType","com.azure.ai.projects.models.Trigger":"Azure.AI.Projects.Trigger","com.azure.ai.projects.models.TriggerType":"Azure.AI.Projects.TriggerType","com.azure.ai.projects.models.UpdateModelVersionInput":"Azure.AI.Projects.UpdateModelVersionRequest","com.azure.ai.projects.models.WeeklyRecurrenceSchedule":"Azure.AI.Projects.WeeklyRecurrenceSchedule"},"generatedFiles":["src/main/java/com/azure/ai/projects/AIProjectClientBuilder.java","src/main/java/com/azure/ai/projects/AIProjectsServiceVersion.java","src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsClient.java","src/main/java/com/azure/ai/projects/BetaDatasetsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaDatasetsClient.java","src/main/java/com/azure/ai/projects/BetaEvaluationTaxonomiesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaEvaluationTaxonomiesClient.java","src/main/java/com/azure/ai/projects/BetaEvaluatorsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaEvaluatorsClient.java","src/main/java/com/azure/ai/projects/BetaInsightsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaInsightsClient.java","src/main/java/com/azure/ai/projects/BetaModelsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaModelsClient.java","src/main/java/com/azure/ai/projects/BetaRedTeamsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaRedTeamsClient.java","src/main/java/com/azure/ai/projects/BetaRoutinesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaRoutinesClient.java","src/main/java/com/azure/ai/projects/BetaSchedulesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaSchedulesClient.java","src/main/java/com/azure/ai/projects/BetaSkillsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaSkillsClient.java","src/main/java/com/azure/ai/projects/ConnectionsAsyncClient.java","src/main/java/com/azure/ai/projects/ConnectionsClient.java","src/main/java/com/azure/ai/projects/DatasetsAsyncClient.java","src/main/java/com/azure/ai/projects/DatasetsClient.java","src/main/java/com/azure/ai/projects/DeploymentsAsyncClient.java","src/main/java/com/azure/ai/projects/DeploymentsClient.java","src/main/java/com/azure/ai/projects/EvaluationRulesAsyncClient.java","src/main/java/com/azure/ai/projects/EvaluationRulesClient.java","src/main/java/com/azure/ai/projects/IndexesAsyncClient.java","src/main/java/com/azure/ai/projects/IndexesClient.java","src/main/java/com/azure/ai/projects/implementation/AIProjectClientImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaAgentInsightMonitorsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaDatasetsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaEvaluationTaxonomiesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaEvaluatorsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaInsightsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaModelsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaRedTeamsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaRoutinesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaSchedulesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaSkillsImpl.java","src/main/java/com/azure/ai/projects/implementation/ConnectionsImpl.java","src/main/java/com/azure/ai/projects/implementation/DatasetsImpl.java","src/main/java/com/azure/ai/projects/implementation/DeploymentsImpl.java","src/main/java/com/azure/ai/projects/implementation/EvaluationRulesImpl.java","src/main/java/com/azure/ai/projects/implementation/IndexesImpl.java","src/main/java/com/azure/ai/projects/implementation/JsonMergePatchHelper.java","src/main/java/com/azure/ai/projects/implementation/MultipartFormDataHelper.java","src/main/java/com/azure/ai/projects/implementation/OperationLocationPollingStrategy.java","src/main/java/com/azure/ai/projects/implementation/PollingUtils.java","src/main/java/com/azure/ai/projects/implementation/SyncOperationLocationPollingStrategy.java","src/main/java/com/azure/ai/projects/implementation/models/CreateOrUpdateRoutineRequest.java","src/main/java/com/azure/ai/projects/implementation/models/CreateSkillVersionRequest.java","src/main/java/com/azure/ai/projects/implementation/models/DispatchRoutineAsyncRequest.java","src/main/java/com/azure/ai/projects/implementation/models/FoundryFeaturesOptInKeys.java","src/main/java/com/azure/ai/projects/implementation/models/UpdateSkillRequest.java","src/main/java/com/azure/ai/projects/implementation/models/package-info.java","src/main/java/com/azure/ai/projects/implementation/package-info.java","src/main/java/com/azure/ai/projects/models/AIProjectIndex.java","src/main/java/com/azure/ai/projects/models/AgentClusterInsightRequest.java","src/main/java/com/azure/ai/projects/models/AgentClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/AgentDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/AgentEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/AgentInsight.java","src/main/java/com/azure/ai/projects/models/AgentInsightDetails.java","src/main/java/com/azure/ai/projects/models/AgentInsightEstimatedCost.java","src/main/java/com/azure/ai/projects/models/AgentInsightHighlightedTrace.java","src/main/java/com/azure/ai/projects/models/AgentInsightLinkedTrace.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitor.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorCreate.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorListItem.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorUpdate.java","src/main/java/com/azure/ai/projects/models/AgentInsightOverviewSource.java","src/main/java/com/azure/ai/projects/models/AgentInsightPromptSurface.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFix.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFixChange.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFixKind.java","src/main/java/com/azure/ai/projects/models/AgentInsightRecommendedAction.java","src/main/java/com/azure/ai/projects/models/AgentInsightRun.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunCreate.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunResult.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunTrigger.java","src/main/java/com/azure/ai/projects/models/AgentInsightSeverity.java","src/main/java/com/azure/ai/projects/models/AgentInsightStatus.java","src/main/java/com/azure/ai/projects/models/AgentInsightSuspension.java","src/main/java/com/azure/ai/projects/models/AgentInsightTokenUsage.java","src/main/java/com/azure/ai/projects/models/AgentInsightUpdate.java","src/main/java/com/azure/ai/projects/models/AgentInsightsOverview.java","src/main/java/com/azure/ai/projects/models/AgentInsightsOverviewOverride.java","src/main/java/com/azure/ai/projects/models/AgentTaxonomyInput.java","src/main/java/com/azure/ai/projects/models/AgenticIdentityPreviewCredential.java","src/main/java/com/azure/ai/projects/models/ApiError.java","src/main/java/com/azure/ai/projects/models/ApiKeyCredential.java","src/main/java/com/azure/ai/projects/models/ArtifactProfile.java","src/main/java/com/azure/ai/projects/models/AttackStrategy.java","src/main/java/com/azure/ai/projects/models/AzureAIAgentTarget.java","src/main/java/com/azure/ai/projects/models/AzureAIModelTarget.java","src/main/java/com/azure/ai/projects/models/AzureAISearchIndex.java","src/main/java/com/azure/ai/projects/models/AzureOpenAIModelConfiguration.java","src/main/java/com/azure/ai/projects/models/BaseCredential.java","src/main/java/com/azure/ai/projects/models/BlobReference.java","src/main/java/com/azure/ai/projects/models/BlobReferenceSasCredential.java","src/main/java/com/azure/ai/projects/models/ChartCoordinate.java","src/main/java/com/azure/ai/projects/models/ClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/ClusterTokenUsage.java","src/main/java/com/azure/ai/projects/models/CodeBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/Connection.java","src/main/java/com/azure/ai/projects/models/ConnectionType.java","src/main/java/com/azure/ai/projects/models/ContinuousEvaluationRuleAction.java","src/main/java/com/azure/ai/projects/models/CosmosDBIndex.java","src/main/java/com/azure/ai/projects/models/CreateAsyncResponse.java","src/main/java/com/azure/ai/projects/models/CreateSkillVersionFromFilesBody.java","src/main/java/com/azure/ai/projects/models/CredentialType.java","src/main/java/com/azure/ai/projects/models/CronTrigger.java","src/main/java/com/azure/ai/projects/models/CustomCredential.java","src/main/java/com/azure/ai/projects/models/CustomRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/DailyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/DataGenerationJob.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobInputs.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputType.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobResult.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobScenario.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobSourceType.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobType.java","src/main/java/com/azure/ai/projects/models/DataGenerationModelOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationTokenUsage.java","src/main/java/com/azure/ai/projects/models/DatasetCredential.java","src/main/java/com/azure/ai/projects/models/DatasetDataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/DatasetEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/DatasetReference.java","src/main/java/com/azure/ai/projects/models/DatasetType.java","src/main/java/com/azure/ai/projects/models/DatasetVersion.java","src/main/java/com/azure/ai/projects/models/Deployment.java","src/main/java/com/azure/ai/projects/models/DeploymentType.java","src/main/java/com/azure/ai/projects/models/Dimension.java","src/main/java/com/azure/ai/projects/models/DispatchRoutineResult.java","src/main/java/com/azure/ai/projects/models/EmbeddingConfiguration.java","src/main/java/com/azure/ai/projects/models/EndpointBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/EntraIdCredential.java","src/main/java/com/azure/ai/projects/models/EvaluationComparisonInsightRequest.java","src/main/java/com/azure/ai/projects/models/EvaluationComparisonInsightResult.java","src/main/java/com/azure/ai/projects/models/EvaluationLevel.java","src/main/java/com/azure/ai/projects/models/EvaluationResult.java","src/main/java/com/azure/ai/projects/models/EvaluationResultSample.java","src/main/java/com/azure/ai/projects/models/EvaluationRule.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleAction.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleActionType.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleEventType.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleFilter.java","src/main/java/com/azure/ai/projects/models/EvaluationRunClusterInsightRequest.java","src/main/java/com/azure/ai/projects/models/EvaluationRunClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultCompareItem.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultComparison.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultSummary.java","src/main/java/com/azure/ai/projects/models/EvaluationScheduleTask.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomy.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomyInput.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomyInputType.java","src/main/java/com/azure/ai/projects/models/EvaluatorCategory.java","src/main/java/com/azure/ai/projects/models/EvaluatorCredentialInput.java","src/main/java/com/azure/ai/projects/models/EvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/EvaluatorDefinitionType.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationArtifacts.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationInputs.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJob.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJobSourceType.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationTokenUsage.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetric.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetricDirection.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetricType.java","src/main/java/com/azure/ai/projects/models/EvaluatorType.java","src/main/java/com/azure/ai/projects/models/EvaluatorVersion.java","src/main/java/com/azure/ai/projects/models/FieldMapping.java","src/main/java/com/azure/ai/projects/models/FileDataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/FileDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/FileDatasetVersion.java","src/main/java/com/azure/ai/projects/models/FolderDatasetVersion.java","src/main/java/com/azure/ai/projects/models/FoundryEvaluationTarget.java","src/main/java/com/azure/ai/projects/models/FoundryModelArtifactProfileCategory.java","src/main/java/com/azure/ai/projects/models/FoundryModelArtifactProfileSignal.java","src/main/java/com/azure/ai/projects/models/FoundryModelSourceType.java","src/main/java/com/azure/ai/projects/models/FoundryModelWarning.java","src/main/java/com/azure/ai/projects/models/FoundryModelWarningCode.java","src/main/java/com/azure/ai/projects/models/FoundryModelWeightType.java","src/main/java/com/azure/ai/projects/models/GenerationWarningType.java","src/main/java/com/azure/ai/projects/models/GitHubIssueEvent.java","src/main/java/com/azure/ai/projects/models/GitHubIssueRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/GraderAzureAIEvaluator.java","src/main/java/com/azure/ai/projects/models/HourlyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/HumanEvaluationPreviewRuleAction.java","src/main/java/com/azure/ai/projects/models/IndexType.java","src/main/java/com/azure/ai/projects/models/Insight.java","src/main/java/com/azure/ai/projects/models/InsightCluster.java","src/main/java/com/azure/ai/projects/models/InsightModelConfiguration.java","src/main/java/com/azure/ai/projects/models/InsightRequest.java","src/main/java/com/azure/ai/projects/models/InsightResult.java","src/main/java/com/azure/ai/projects/models/InsightSample.java","src/main/java/com/azure/ai/projects/models/InsightScheduleTask.java","src/main/java/com/azure/ai/projects/models/InsightSummary.java","src/main/java/com/azure/ai/projects/models/InsightType.java","src/main/java/com/azure/ai/projects/models/InsightsMetadata.java","src/main/java/com/azure/ai/projects/models/InvokeAgentInvocationsApiDispatchPayload.java","src/main/java/com/azure/ai/projects/models/InvokeAgentInvocationsApiRoutineAction.java","src/main/java/com/azure/ai/projects/models/InvokeAgentResponsesApiDispatchPayload.java","src/main/java/com/azure/ai/projects/models/InvokeAgentResponsesApiRoutineAction.java","src/main/java/com/azure/ai/projects/models/JobStatus.java","src/main/java/com/azure/ai/projects/models/ListVersionsRequestType.java","src/main/java/com/azure/ai/projects/models/LoraConfig.java","src/main/java/com/azure/ai/projects/models/ManagedAzureAISearchIndex.java","src/main/java/com/azure/ai/projects/models/ModelCredentialInput.java","src/main/java/com/azure/ai/projects/models/ModelDeployment.java","src/main/java/com/azure/ai/projects/models/ModelDeploymentSku.java","src/main/java/com/azure/ai/projects/models/ModelPendingUploadInput.java","src/main/java/com/azure/ai/projects/models/ModelPendingUploadResult.java","src/main/java/com/azure/ai/projects/models/ModelSamplingParams.java","src/main/java/com/azure/ai/projects/models/ModelSourceData.java","src/main/java/com/azure/ai/projects/models/ModelVersion.java","src/main/java/com/azure/ai/projects/models/MonthlyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/NoAuthenticationCredential.java","src/main/java/com/azure/ai/projects/models/OneTimeTrigger.java","src/main/java/com/azure/ai/projects/models/OperationStatus.java","src/main/java/com/azure/ai/projects/models/PendingUploadRequest.java","src/main/java/com/azure/ai/projects/models/PendingUploadResponse.java","src/main/java/com/azure/ai/projects/models/PendingUploadType.java","src/main/java/com/azure/ai/projects/models/PromptBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/PromptDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/PromptEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/RecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/RecurrenceTrigger.java","src/main/java/com/azure/ai/projects/models/RecurrenceType.java","src/main/java/com/azure/ai/projects/models/RedTeam.java","src/main/java/com/azure/ai/projects/models/RiskCategory.java","src/main/java/com/azure/ai/projects/models/Routine.java","src/main/java/com/azure/ai/projects/models/RoutineAction.java","src/main/java/com/azure/ai/projects/models/RoutineActionType.java","src/main/java/com/azure/ai/projects/models/RoutineAttemptSource.java","src/main/java/com/azure/ai/projects/models/RoutineAuthorization.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchIdentity.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchPayload.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchPayloadType.java","src/main/java/com/azure/ai/projects/models/RoutineRun.java","src/main/java/com/azure/ai/projects/models/RoutineRunPhase.java","src/main/java/com/azure/ai/projects/models/RoutineTrigger.java","src/main/java/com/azure/ai/projects/models/RoutineTriggerType.java","src/main/java/com/azure/ai/projects/models/RubricBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarning.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningCode.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningSeverity.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningSource.java","src/main/java/com/azure/ai/projects/models/SampleType.java","src/main/java/com/azure/ai/projects/models/SasCredential.java","src/main/java/com/azure/ai/projects/models/Schedule.java","src/main/java/com/azure/ai/projects/models/ScheduleProvisioningStatus.java","src/main/java/com/azure/ai/projects/models/ScheduleRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/ScheduleRun.java","src/main/java/com/azure/ai/projects/models/ScheduleTask.java","src/main/java/com/azure/ai/projects/models/ScheduleTaskType.java","src/main/java/com/azure/ai/projects/models/SimpleQnADataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/SimpleQnAFineTuningQuestionType.java","src/main/java/com/azure/ai/projects/models/SimulationSeedDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/SkillDetails.java","src/main/java/com/azure/ai/projects/models/SkillFileDetails.java","src/main/java/com/azure/ai/projects/models/SkillInlineContent.java","src/main/java/com/azure/ai/projects/models/SkillVersion.java","src/main/java/com/azure/ai/projects/models/TargetConfig.java","src/main/java/com/azure/ai/projects/models/TaxonomyCategory.java","src/main/java/com/azure/ai/projects/models/TaxonomySubCategory.java","src/main/java/com/azure/ai/projects/models/TestingCriterionAzureAIEvaluator.java","src/main/java/com/azure/ai/projects/models/TimerRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/ToolDescription.java","src/main/java/com/azure/ai/projects/models/ToolUseFineTuningDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/TracesEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/TreatmentEffectType.java","src/main/java/com/azure/ai/projects/models/Trigger.java","src/main/java/com/azure/ai/projects/models/TriggerType.java","src/main/java/com/azure/ai/projects/models/UpdateModelVersionInput.java","src/main/java/com/azure/ai/projects/models/WeeklyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/package-info.java","src/main/java/com/azure/ai/projects/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file +{"flavor":"azure","apiVersions":{"Azure.AI.Projects":"v1"},"crossLanguagePackageId":"Azure.AI.Projects","crossLanguageVersion":"9d214da512fb","crossLanguageDefinitions":{"com.azure.ai.projects.AIProjectClientBuilder":"Azure.AI.Projects","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient":"Azure.AI.Projects.Beta.AgentInsightMonitors","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.beginCreateAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.beginCreateAgentInsightRunWithModel":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.cancelAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.cancelAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.createAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.createAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.deleteAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.deleteAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsightMonitors":"Azure.AI.Projects.AgentInsightMonitors.list","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsightRuns":"Azure.AI.Projects.AgentInsightMonitors.listRuns","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsights":"Azure.AI.Projects.AgentInsightMonitors.listInsights","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.resetAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.resetAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient":"Azure.AI.Projects.Beta.AgentInsightMonitors","com.azure.ai.projects.BetaAgentInsightMonitorsClient.beginCreateAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.beginCreateAgentInsightRunWithModel":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.cancelAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.cancelAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.createAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsClient.createAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsClient.deleteAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsClient.deleteAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsightMonitors":"Azure.AI.Projects.AgentInsightMonitors.list","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsightRuns":"Azure.AI.Projects.AgentInsightMonitors.listRuns","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsights":"Azure.AI.Projects.AgentInsightMonitors.listInsights","com.azure.ai.projects.BetaAgentInsightMonitorsClient.resetAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsClient.resetAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaDatasetsAsyncClient":"Azure.AI.Projects.Beta.Datasets","com.azure.ai.projects.BetaDatasetsAsyncClient.beginCreateGenerationJob":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsAsyncClient.beginCreateGenerationJobWithModel":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsAsyncClient.cancelGenerationJob":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsAsyncClient.cancelGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsAsyncClient.deleteGenerationJob":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsAsyncClient.deleteGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsAsyncClient.getGenerationJob":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsAsyncClient.getGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsAsyncClient.listGenerationJobs":"Azure.AI.Projects.DataGenerationJobs.list","com.azure.ai.projects.BetaDatasetsClient":"Azure.AI.Projects.Beta.Datasets","com.azure.ai.projects.BetaDatasetsClient.beginCreateGenerationJob":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsClient.beginCreateGenerationJobWithModel":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsClient.cancelGenerationJob":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsClient.cancelGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsClient.deleteGenerationJob":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsClient.deleteGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsClient.getGenerationJob":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsClient.getGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsClient.listGenerationJobs":"Azure.AI.Projects.DataGenerationJobs.list","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient":"Azure.AI.Projects.Beta.EvaluationTaxonomies","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.createEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.createEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.deleteEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.deleteEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.getEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.getEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.listEvaluationTaxonomies":"Azure.AI.Projects.EvaluationTaxonomies.list","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.updateEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.updateEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesClient":"Azure.AI.Projects.Beta.EvaluationTaxonomies","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.createEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.createEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.deleteEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.deleteEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.getEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.getEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.listEvaluationTaxonomies":"Azure.AI.Projects.EvaluationTaxonomies.list","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.updateEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.updateEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluatorsAsyncClient":"Azure.AI.Projects.Beta.Evaluators","com.azure.ai.projects.BetaEvaluatorsAsyncClient.beginCreateEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsAsyncClient.beginCreateEvaluatorGenerationJobWithModel":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsAsyncClient.cancelEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsAsyncClient.cancelEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsAsyncClient.createEvaluatorVersion":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.createEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorVersion":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getCredentials":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getCredentialsWithResponse":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorVersion":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listEvaluatorGenerationJobs":"Azure.AI.Projects.EvaluatorGenerationJobs.list","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listEvaluatorVersions":"Azure.AI.Projects.Evaluators.listVersions","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listLatestEvaluatorVersions":"Azure.AI.Projects.Evaluators.listLatestVersions","com.azure.ai.projects.BetaEvaluatorsAsyncClient.startPendingUpload":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsAsyncClient.startPendingUploadWithResponse":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsAsyncClient.updateEvaluatorVersion":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.updateEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsClient":"Azure.AI.Projects.Beta.Evaluators","com.azure.ai.projects.BetaEvaluatorsClient.beginCreateEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsClient.beginCreateEvaluatorGenerationJobWithModel":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsClient.cancelEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsClient.cancelEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsClient.createEvaluatorVersion":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsClient.createEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorVersion":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsClient.getCredentials":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsClient.getCredentialsWithResponse":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorVersion":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsClient.listEvaluatorGenerationJobs":"Azure.AI.Projects.EvaluatorGenerationJobs.list","com.azure.ai.projects.BetaEvaluatorsClient.listEvaluatorVersions":"Azure.AI.Projects.Evaluators.listVersions","com.azure.ai.projects.BetaEvaluatorsClient.listLatestEvaluatorVersions":"Azure.AI.Projects.Evaluators.listLatestVersions","com.azure.ai.projects.BetaEvaluatorsClient.startPendingUpload":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsClient.startPendingUploadWithResponse":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsClient.updateEvaluatorVersion":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsClient.updateEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaInsightsAsyncClient":"Azure.AI.Projects.Beta.Insights","com.azure.ai.projects.BetaInsightsAsyncClient.generateInsight":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsAsyncClient.generateInsightWithResponse":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsAsyncClient.getInsight":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsAsyncClient.getInsightWithResponse":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsAsyncClient.listInsights":"Azure.AI.Projects.Insights.list","com.azure.ai.projects.BetaInsightsClient":"Azure.AI.Projects.Beta.Insights","com.azure.ai.projects.BetaInsightsClient.generateInsight":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsClient.generateInsightWithResponse":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsClient.getInsight":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsClient.getInsightWithResponse":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsClient.listInsights":"Azure.AI.Projects.Insights.list","com.azure.ai.projects.BetaModelsAsyncClient":"Azure.AI.Projects.Beta.Models","com.azure.ai.projects.BetaModelsAsyncClient.createModelVersionAsyncWithResponse":"Azure.AI.Projects.Models.createAsync","com.azure.ai.projects.BetaModelsAsyncClient.deleteModelVersion":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsAsyncClient.deleteModelVersionWithResponse":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsAsyncClient.getModelCredentials":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsAsyncClient.getModelCredentialsWithResponse":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsAsyncClient.getModelVersion":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsAsyncClient.getModelVersionWithResponse":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsAsyncClient.listLatestModelVersions":"Azure.AI.Projects.Models.listLatest","com.azure.ai.projects.BetaModelsAsyncClient.listModelVersions":"Azure.AI.Projects.Models.listVersions","com.azure.ai.projects.BetaModelsAsyncClient.startModelPendingUpload":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsAsyncClient.startModelPendingUploadWithResponse":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsAsyncClient.updateModelVersion":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsAsyncClient.updateModelVersionWithResponse":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsClient":"Azure.AI.Projects.Beta.Models","com.azure.ai.projects.BetaModelsClient.createModelVersionAsyncWithResponse":"Azure.AI.Projects.Models.createAsync","com.azure.ai.projects.BetaModelsClient.deleteModelVersion":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsClient.deleteModelVersionWithResponse":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsClient.getModelCredentials":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsClient.getModelCredentialsWithResponse":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsClient.getModelVersion":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsClient.getModelVersionWithResponse":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsClient.listLatestModelVersions":"Azure.AI.Projects.Models.listLatest","com.azure.ai.projects.BetaModelsClient.listModelVersions":"Azure.AI.Projects.Models.listVersions","com.azure.ai.projects.BetaModelsClient.startModelPendingUpload":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsClient.startModelPendingUploadWithResponse":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsClient.updateModelVersion":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsClient.updateModelVersionWithResponse":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaRedTeamsAsyncClient":"Azure.AI.Projects.Beta.RedTeams","com.azure.ai.projects.BetaRedTeamsAsyncClient.createRedTeamRun":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsAsyncClient.createRedTeamRunWithResponse":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsAsyncClient.getRedTeam":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsAsyncClient.getRedTeamWithResponse":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsAsyncClient.listRedTeams":"Azure.AI.Projects.RedTeams.list","com.azure.ai.projects.BetaRedTeamsClient":"Azure.AI.Projects.Beta.RedTeams","com.azure.ai.projects.BetaRedTeamsClient.createRedTeamRun":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsClient.createRedTeamRunWithResponse":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsClient.getRedTeam":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsClient.getRedTeamWithResponse":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsClient.listRedTeams":"Azure.AI.Projects.RedTeams.list","com.azure.ai.projects.BetaRoutinesAsyncClient":"Azure.AI.Projects.Beta.Routines","com.azure.ai.projects.BetaRoutinesAsyncClient.createOrUpdateRoutine":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.createOrUpdateRoutineWithResponse":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.deleteRoutine":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.deleteRoutineWithResponse":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.disableRoutine":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.disableRoutineWithResponse":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.dispatchRoutine":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesAsyncClient.dispatchRoutineWithResponse":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesAsyncClient.enableRoutine":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.enableRoutineWithResponse":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.getRoutine":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.getRoutineWithResponse":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.listRoutineRuns":"Azure.AI.Projects.Routines.listRoutineRuns","com.azure.ai.projects.BetaRoutinesAsyncClient.listRoutines":"Azure.AI.Projects.Routines.listRoutines","com.azure.ai.projects.BetaRoutinesClient":"Azure.AI.Projects.Beta.Routines","com.azure.ai.projects.BetaRoutinesClient.createOrUpdateRoutine":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesClient.createOrUpdateRoutineWithResponse":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesClient.deleteRoutine":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesClient.deleteRoutineWithResponse":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesClient.disableRoutine":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesClient.disableRoutineWithResponse":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesClient.dispatchRoutine":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesClient.dispatchRoutineWithResponse":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesClient.enableRoutine":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesClient.enableRoutineWithResponse":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesClient.getRoutine":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesClient.getRoutineWithResponse":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesClient.listRoutineRuns":"Azure.AI.Projects.Routines.listRoutineRuns","com.azure.ai.projects.BetaRoutinesClient.listRoutines":"Azure.AI.Projects.Routines.listRoutines","com.azure.ai.projects.BetaSchedulesAsyncClient":"Azure.AI.Projects.Beta.Schedules","com.azure.ai.projects.BetaSchedulesAsyncClient.createOrUpdateSchedule":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesAsyncClient.createOrUpdateScheduleWithResponse":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesAsyncClient.deleteSchedule":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesAsyncClient.deleteScheduleWithResponse":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesAsyncClient.getSchedule":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleRun":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleRunWithResponse":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleWithResponse":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesAsyncClient.listScheduleRuns":"Azure.AI.Projects.Schedules.listRuns","com.azure.ai.projects.BetaSchedulesAsyncClient.listSchedules":"Azure.AI.Projects.Schedules.list","com.azure.ai.projects.BetaSchedulesClient":"Azure.AI.Projects.Beta.Schedules","com.azure.ai.projects.BetaSchedulesClient.createOrUpdateSchedule":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesClient.createOrUpdateScheduleWithResponse":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesClient.deleteSchedule":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesClient.deleteScheduleWithResponse":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesClient.getSchedule":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesClient.getScheduleRun":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesClient.getScheduleRunWithResponse":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesClient.getScheduleWithResponse":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesClient.listScheduleRuns":"Azure.AI.Projects.Schedules.listRuns","com.azure.ai.projects.BetaSchedulesClient.listSchedules":"Azure.AI.Projects.Schedules.list","com.azure.ai.projects.BetaSkillsAsyncClient":"Azure.AI.Projects.Beta.Skills","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersion":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionFromFiles":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionFromFilesWithResponseInternal":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionWithResponse":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkill":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillContent":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillContentWithResponse":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersion":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionContent":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionContentWithResponse":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionWithResponse":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillWithResponse":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsAsyncClient.listSkillVersions":"Azure.AI.Projects.Skills.listSkillVersions","com.azure.ai.projects.BetaSkillsAsyncClient.listSkills":"Azure.AI.Projects.Skills.listSkills","com.azure.ai.projects.BetaSkillsAsyncClient.updateSkill":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsAsyncClient.updateSkillWithResponse":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsClient":"Azure.AI.Projects.Beta.Skills","com.azure.ai.projects.BetaSkillsClient.createSkillVersion":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsClient.createSkillVersionFromFiles":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsClient.createSkillVersionFromFilesWithResponseInternal":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsClient.createSkillVersionWithResponse":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkill":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsClient.getSkillContent":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsClient.getSkillContentWithResponse":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersion":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkillVersionContent":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersionContentWithResponse":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersionWithResponse":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkillWithResponse":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsClient.listSkillVersions":"Azure.AI.Projects.Skills.listSkillVersions","com.azure.ai.projects.BetaSkillsClient.listSkills":"Azure.AI.Projects.Skills.listSkills","com.azure.ai.projects.BetaSkillsClient.updateSkill":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsClient.updateSkillWithResponse":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.ConnectionsAsyncClient":"Azure.AI.Projects.Connections","com.azure.ai.projects.ConnectionsAsyncClient.getConnection":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithCredentials":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithCredentialsWithResponse":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithResponse":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsAsyncClient.listConnections":"Azure.AI.Projects.Connections.list","com.azure.ai.projects.ConnectionsClient":"Azure.AI.Projects.Connections","com.azure.ai.projects.ConnectionsClient.getConnection":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsClient.getConnectionWithCredentials":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsClient.getConnectionWithCredentialsWithResponse":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsClient.getConnectionWithResponse":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsClient.listConnections":"Azure.AI.Projects.Connections.list","com.azure.ai.projects.DatasetsAsyncClient":"Azure.AI.Projects.Datasets","com.azure.ai.projects.DatasetsAsyncClient.createOrUpdateDatasetVersion":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsAsyncClient.createOrUpdateDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsAsyncClient.deleteDatasetVersion":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsAsyncClient.deleteDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsAsyncClient.getCredentials":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsAsyncClient.getCredentialsWithResponse":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsAsyncClient.getDatasetVersion":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsAsyncClient.getDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsAsyncClient.listDatasetVersions":"Azure.AI.Projects.Datasets.listVersions","com.azure.ai.projects.DatasetsAsyncClient.listLatestDatasetVersions":"Azure.AI.Projects.Datasets.listLatest","com.azure.ai.projects.DatasetsAsyncClient.pendingUpload":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsAsyncClient.pendingUploadWithResponse":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsClient":"Azure.AI.Projects.Datasets","com.azure.ai.projects.DatasetsClient.createOrUpdateDatasetVersion":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsClient.createOrUpdateDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsClient.deleteDatasetVersion":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsClient.deleteDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsClient.getCredentials":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsClient.getCredentialsWithResponse":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsClient.getDatasetVersion":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsClient.getDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsClient.listDatasetVersions":"Azure.AI.Projects.Datasets.listVersions","com.azure.ai.projects.DatasetsClient.listLatestDatasetVersions":"Azure.AI.Projects.Datasets.listLatest","com.azure.ai.projects.DatasetsClient.pendingUpload":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsClient.pendingUploadWithResponse":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DeploymentsAsyncClient":"Azure.AI.Projects.Deployments","com.azure.ai.projects.DeploymentsAsyncClient.getDeployment":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsAsyncClient.getDeploymentWithResponse":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsAsyncClient.listDeployments":"Azure.AI.Projects.Deployments.list","com.azure.ai.projects.DeploymentsClient":"Azure.AI.Projects.Deployments","com.azure.ai.projects.DeploymentsClient.getDeployment":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsClient.getDeploymentWithResponse":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsClient.listDeployments":"Azure.AI.Projects.Deployments.list","com.azure.ai.projects.EvaluationRulesAsyncClient":"Azure.AI.Projects.EvaluationRules","com.azure.ai.projects.EvaluationRulesAsyncClient.createOrUpdateEvaluationRule":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesAsyncClient.createOrUpdateEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesAsyncClient.deleteEvaluationRule":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesAsyncClient.deleteEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesAsyncClient.getEvaluationRule":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesAsyncClient.getEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesAsyncClient.listEvaluationRules":"Azure.AI.Projects.EvaluationRules.list","com.azure.ai.projects.EvaluationRulesClient":"Azure.AI.Projects.EvaluationRules","com.azure.ai.projects.EvaluationRulesClient.createOrUpdateEvaluationRule":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesClient.createOrUpdateEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesClient.deleteEvaluationRule":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesClient.deleteEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesClient.getEvaluationRule":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesClient.getEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesClient.listEvaluationRules":"Azure.AI.Projects.EvaluationRules.list","com.azure.ai.projects.IndexesAsyncClient":"Azure.AI.Projects.Indexes","com.azure.ai.projects.IndexesAsyncClient.createOrUpdateIndexVersion":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesAsyncClient.createOrUpdateIndexVersionWithResponse":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesAsyncClient.deleteIndexVersion":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesAsyncClient.deleteIndexVersionWithResponse":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesAsyncClient.getIndexVersion":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesAsyncClient.getIndexVersionWithResponse":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesAsyncClient.listIndexVersions":"Azure.AI.Projects.Indexes.listVersions","com.azure.ai.projects.IndexesAsyncClient.listLatestIndexVersions":"Azure.AI.Projects.Indexes.listLatest","com.azure.ai.projects.IndexesClient":"Azure.AI.Projects.Indexes","com.azure.ai.projects.IndexesClient.createOrUpdateIndexVersion":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesClient.createOrUpdateIndexVersionWithResponse":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesClient.deleteIndexVersion":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesClient.deleteIndexVersionWithResponse":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesClient.getIndexVersion":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesClient.getIndexVersionWithResponse":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesClient.listIndexVersions":"Azure.AI.Projects.Indexes.listVersions","com.azure.ai.projects.IndexesClient.listLatestIndexVersions":"Azure.AI.Projects.Indexes.listLatest","com.azure.ai.projects.implementation.models.CreateOrUpdateRoutineRequest":"Azure.AI.Projects.createOrUpdateRoutine.Request.anonymous","com.azure.ai.projects.implementation.models.CreateSkillVersionRequest":"Azure.AI.Projects.createSkillVersion.Request.anonymous","com.azure.ai.projects.implementation.models.DispatchRoutineAsyncRequest":"Azure.AI.Projects.dispatchRoutineAsync.Request.anonymous","com.azure.ai.projects.implementation.models.FoundryFeaturesOptInKeys":"Azure.AI.Projects.FoundryFeaturesOptInKeys","com.azure.ai.projects.implementation.models.UpdateSkillRequest":"Azure.AI.Projects.updateSkill.Request.anonymous","com.azure.ai.projects.models.AIProjectIndex":"Azure.AI.Projects.Index","com.azure.ai.projects.models.AgentClusterInsightRequest":"Azure.AI.Projects.AgentClusterInsightRequest","com.azure.ai.projects.models.AgentClusterInsightResult":"Azure.AI.Projects.AgentClusterInsightResult","com.azure.ai.projects.models.AgentDataGenerationJobSource":"Azure.AI.Projects.AgentDataGenerationJobSource","com.azure.ai.projects.models.AgentEvaluatorGenerationJobSource":"Azure.AI.Projects.AgentEvaluatorGenerationJobSource","com.azure.ai.projects.models.AgentInsight":"Azure.AI.Projects.AgentInsight","com.azure.ai.projects.models.AgentInsightDetails":"Azure.AI.Projects.AgentInsightDetails","com.azure.ai.projects.models.AgentInsightEstimatedCost":"Azure.AI.Projects.AgentInsightEstimatedCost","com.azure.ai.projects.models.AgentInsightHighlightedTrace":"Azure.AI.Projects.AgentInsightHighlightedTrace","com.azure.ai.projects.models.AgentInsightLinkedTrace":"Azure.AI.Projects.AgentInsightLinkedTrace","com.azure.ai.projects.models.AgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitor","com.azure.ai.projects.models.AgentInsightMonitorCreate":"Azure.AI.Projects.AgentInsightMonitorCreate","com.azure.ai.projects.models.AgentInsightMonitorListItem":"Azure.AI.Projects.AgentInsightMonitorListItem","com.azure.ai.projects.models.AgentInsightMonitorUpdate":"Azure.AI.Projects.AgentInsightMonitorUpdate","com.azure.ai.projects.models.AgentInsightOverviewSource":"Azure.AI.Projects.AgentInsightOverviewSource","com.azure.ai.projects.models.AgentInsightPromptSurface":"Azure.AI.Projects.AgentInsightPromptSurface","com.azure.ai.projects.models.AgentInsightProposedFix":"Azure.AI.Projects.AgentInsightProposedFix","com.azure.ai.projects.models.AgentInsightProposedFixChange":"Azure.AI.Projects.AgentInsightProposedFixChange","com.azure.ai.projects.models.AgentInsightProposedFixKind":"Azure.AI.Projects.AgentInsightProposedFixKind","com.azure.ai.projects.models.AgentInsightRecommendedAction":"Azure.AI.Projects.AgentInsightRecommendedAction","com.azure.ai.projects.models.AgentInsightRun":"Azure.AI.Projects.AgentInsightRun","com.azure.ai.projects.models.AgentInsightRunCreate":"Azure.AI.Projects.AgentInsightRunCreate","com.azure.ai.projects.models.AgentInsightRunResult":"Azure.AI.Projects.AgentInsightRunResult","com.azure.ai.projects.models.AgentInsightRunTrigger":"Azure.AI.Projects.AgentInsightRunTrigger","com.azure.ai.projects.models.AgentInsightSeverity":"Azure.AI.Projects.AgentInsightSeverity","com.azure.ai.projects.models.AgentInsightStatus":"Azure.AI.Projects.AgentInsightStatus","com.azure.ai.projects.models.AgentInsightSuspension":"Azure.AI.Projects.AgentInsightSuspension","com.azure.ai.projects.models.AgentInsightTokenUsage":"Azure.AI.Projects.AgentInsightTokenUsage","com.azure.ai.projects.models.AgentInsightUpdate":"Azure.AI.Projects.AgentInsightUpdate","com.azure.ai.projects.models.AgentInsightsOverview":"Azure.AI.Projects.AgentInsightsOverview","com.azure.ai.projects.models.AgentInsightsOverviewOverride":"Azure.AI.Projects.AgentInsightsOverviewOverride","com.azure.ai.projects.models.AgentTaxonomyInput":"Azure.AI.Projects.AgentTaxonomyInput","com.azure.ai.projects.models.AgenticIdentityPreviewCredential":"Azure.AI.Projects.AgenticIdentityPreviewCredentials","com.azure.ai.projects.models.ApiError":"OpenAI.Error","com.azure.ai.projects.models.ApiKeyCredential":"Azure.AI.Projects.ApiKeyCredentials","com.azure.ai.projects.models.ArtifactProfile":"Azure.AI.Projects.ArtifactProfile","com.azure.ai.projects.models.AttackStrategy":"Azure.AI.Projects.AttackStrategy","com.azure.ai.projects.models.AzureAIAgentTarget":"Azure.AI.Projects.AzureAIAgentTarget","com.azure.ai.projects.models.AzureAIModelTarget":"Azure.AI.Projects.AzureAIModelTarget","com.azure.ai.projects.models.AzureAISearchIndex":"Azure.AI.Projects.AzureAISearchIndex","com.azure.ai.projects.models.AzureOpenAIModelConfiguration":"Azure.AI.Projects.AzureOpenAIModelConfiguration","com.azure.ai.projects.models.BaseCredential":"Azure.AI.Projects.BaseCredentials","com.azure.ai.projects.models.BlobReference":"Azure.AI.Projects.BlobReference","com.azure.ai.projects.models.BlobReferenceSasCredential":"Azure.AI.Projects.SasCredential","com.azure.ai.projects.models.ChartCoordinate":"Azure.AI.Projects.ChartCoordinate","com.azure.ai.projects.models.ClusterInsightResult":"Azure.AI.Projects.ClusterInsightResult","com.azure.ai.projects.models.ClusterTokenUsage":"Azure.AI.Projects.ClusterTokenUsage","com.azure.ai.projects.models.CodeBasedEvaluatorDefinition":"Azure.AI.Projects.CodeBasedEvaluatorDefinition","com.azure.ai.projects.models.Connection":"Azure.AI.Projects.Connection","com.azure.ai.projects.models.ConnectionType":"Azure.AI.Projects.ConnectionType","com.azure.ai.projects.models.ContinuousEvaluationRuleAction":"Azure.AI.Projects.ContinuousEvaluationRuleAction","com.azure.ai.projects.models.CosmosDBIndex":"Azure.AI.Projects.CosmosDBIndex","com.azure.ai.projects.models.CreateAsyncResponse":"Azure.AI.Projects.createAsync.Response.anonymous","com.azure.ai.projects.models.CreateSkillVersionFromFilesBody":"Azure.AI.Projects.CreateSkillVersionFromFilesBody","com.azure.ai.projects.models.CredentialType":"Azure.AI.Projects.CredentialType","com.azure.ai.projects.models.CronTrigger":"Azure.AI.Projects.CronTrigger","com.azure.ai.projects.models.CustomCredential":"Azure.AI.Projects.CustomCredential","com.azure.ai.projects.models.CustomRoutineTrigger":"Azure.AI.Projects.CustomRoutineTrigger","com.azure.ai.projects.models.DailyRecurrenceSchedule":"Azure.AI.Projects.DailyRecurrenceSchedule","com.azure.ai.projects.models.DataGenerationJob":"Azure.AI.Projects.DataGenerationJob","com.azure.ai.projects.models.DataGenerationJobInputs":"Azure.AI.Projects.DataGenerationJobInputs","com.azure.ai.projects.models.DataGenerationJobOptions":"Azure.AI.Projects.DataGenerationJobOptions","com.azure.ai.projects.models.DataGenerationJobOutput":"Azure.AI.Projects.DataGenerationJobOutput","com.azure.ai.projects.models.DataGenerationJobOutputOptions":"Azure.AI.Projects.DataGenerationJobOutputOptions","com.azure.ai.projects.models.DataGenerationJobOutputType":"Azure.AI.Projects.DataGenerationJobOutputType","com.azure.ai.projects.models.DataGenerationJobOutputWriteMode":"Azure.AI.Projects.DataGenerationJobOutputWriteMode","com.azure.ai.projects.models.DataGenerationJobResult":"Azure.AI.Projects.DataGenerationJobResult","com.azure.ai.projects.models.DataGenerationJobScenario":"Azure.AI.Projects.DataGenerationJobScenario","com.azure.ai.projects.models.DataGenerationJobSource":"Azure.AI.Projects.DataGenerationJobSource","com.azure.ai.projects.models.DataGenerationJobSourceType":"Azure.AI.Projects.DataGenerationJobSourceType","com.azure.ai.projects.models.DataGenerationJobType":"Azure.AI.Projects.DataGenerationJobType","com.azure.ai.projects.models.DataGenerationModelOptions":"Azure.AI.Projects.DataGenerationModelOptions","com.azure.ai.projects.models.DataGenerationTokenUsage":"Azure.AI.Projects.DataGenerationTokenUsage","com.azure.ai.projects.models.DatasetCredential":"Azure.AI.Projects.AssetCredentialResponse","com.azure.ai.projects.models.DatasetDataGenerationJobOutput":"Azure.AI.Projects.DatasetDataGenerationJobOutput","com.azure.ai.projects.models.DatasetEvaluatorGenerationJobSource":"Azure.AI.Projects.DatasetEvaluatorGenerationJobSource","com.azure.ai.projects.models.DatasetReference":"Azure.AI.Projects.DatasetReference","com.azure.ai.projects.models.DatasetType":"Azure.AI.Projects.DatasetType","com.azure.ai.projects.models.DatasetVersion":"Azure.AI.Projects.DatasetVersion","com.azure.ai.projects.models.Deployment":"Azure.AI.Projects.Deployment","com.azure.ai.projects.models.DeploymentType":"Azure.AI.Projects.DeploymentType","com.azure.ai.projects.models.Dimension":"Azure.AI.Projects.Dimension","com.azure.ai.projects.models.DispatchRoutineResult":"Azure.AI.Projects.DispatchRoutineResponse","com.azure.ai.projects.models.EmbeddingConfiguration":"Azure.AI.Projects.EmbeddingConfiguration","com.azure.ai.projects.models.EndpointBasedEvaluatorDefinition":"Azure.AI.Projects.EndpointBasedEvaluatorDefinition","com.azure.ai.projects.models.EntraIdCredential":"Azure.AI.Projects.EntraIDCredentials","com.azure.ai.projects.models.EvaluationComparisonInsightRequest":"Azure.AI.Projects.EvaluationComparisonInsightRequest","com.azure.ai.projects.models.EvaluationComparisonInsightResult":"Azure.AI.Projects.EvaluationComparisonInsightResult","com.azure.ai.projects.models.EvaluationLevel":"Azure.AI.Projects.EvaluationLevel","com.azure.ai.projects.models.EvaluationResult":"Azure.AI.Projects.EvalResult","com.azure.ai.projects.models.EvaluationResultSample":"Azure.AI.Projects.EvaluationResultSample","com.azure.ai.projects.models.EvaluationRule":"Azure.AI.Projects.EvaluationRule","com.azure.ai.projects.models.EvaluationRuleAction":"Azure.AI.Projects.EvaluationRuleAction","com.azure.ai.projects.models.EvaluationRuleActionType":"Azure.AI.Projects.EvaluationRuleActionType","com.azure.ai.projects.models.EvaluationRuleEventType":"Azure.AI.Projects.EvaluationRuleEventType","com.azure.ai.projects.models.EvaluationRuleFilter":"Azure.AI.Projects.EvaluationRuleFilter","com.azure.ai.projects.models.EvaluationRunClusterInsightRequest":"Azure.AI.Projects.EvaluationRunClusterInsightRequest","com.azure.ai.projects.models.EvaluationRunClusterInsightResult":"Azure.AI.Projects.EvaluationRunClusterInsightResult","com.azure.ai.projects.models.EvaluationRunResultCompareItem":"Azure.AI.Projects.EvalRunResultCompareItem","com.azure.ai.projects.models.EvaluationRunResultComparison":"Azure.AI.Projects.EvalRunResultComparison","com.azure.ai.projects.models.EvaluationRunResultSummary":"Azure.AI.Projects.EvalRunResultSummary","com.azure.ai.projects.models.EvaluationScheduleTask":"Azure.AI.Projects.EvaluationScheduleTask","com.azure.ai.projects.models.EvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomy","com.azure.ai.projects.models.EvaluationTaxonomyInput":"Azure.AI.Projects.EvaluationTaxonomyInput","com.azure.ai.projects.models.EvaluationTaxonomyInputType":"Azure.AI.Projects.EvaluationTaxonomyInputType","com.azure.ai.projects.models.EvaluatorCategory":"Azure.AI.Projects.EvaluatorCategory","com.azure.ai.projects.models.EvaluatorCredentialInput":"Azure.AI.Projects.EvaluatorCredentialRequest","com.azure.ai.projects.models.EvaluatorDefinition":"Azure.AI.Projects.EvaluatorDefinition","com.azure.ai.projects.models.EvaluatorDefinitionType":"Azure.AI.Projects.EvaluatorDefinitionType","com.azure.ai.projects.models.EvaluatorGenerationArtifacts":"Azure.AI.Projects.EvaluatorGenerationArtifacts","com.azure.ai.projects.models.EvaluatorGenerationInputs":"Azure.AI.Projects.EvaluatorGenerationInputs","com.azure.ai.projects.models.EvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJob","com.azure.ai.projects.models.EvaluatorGenerationJobSource":"Azure.AI.Projects.EvaluatorGenerationJobSource","com.azure.ai.projects.models.EvaluatorGenerationJobSourceType":"Azure.AI.Projects.EvaluatorGenerationJobSourceType","com.azure.ai.projects.models.EvaluatorGenerationTokenUsage":"Azure.AI.Projects.EvaluatorGenerationTokenUsage","com.azure.ai.projects.models.EvaluatorMetric":"Azure.AI.Projects.EvaluatorMetric","com.azure.ai.projects.models.EvaluatorMetricDirection":"Azure.AI.Projects.EvaluatorMetricDirection","com.azure.ai.projects.models.EvaluatorMetricType":"Azure.AI.Projects.EvaluatorMetricType","com.azure.ai.projects.models.EvaluatorType":"Azure.AI.Projects.EvaluatorType","com.azure.ai.projects.models.EvaluatorVersion":"Azure.AI.Projects.EvaluatorVersion","com.azure.ai.projects.models.FieldMapping":"Azure.AI.Projects.FieldMapping","com.azure.ai.projects.models.FileDataGenerationJobOutput":"Azure.AI.Projects.FileDataGenerationJobOutput","com.azure.ai.projects.models.FileDataGenerationJobSource":"Azure.AI.Projects.FileDataGenerationJobSource","com.azure.ai.projects.models.FileDatasetVersion":"Azure.AI.Projects.FileDatasetVersion","com.azure.ai.projects.models.FolderDatasetVersion":"Azure.AI.Projects.FolderDatasetVersion","com.azure.ai.projects.models.FoundryEvaluationTarget":"Azure.AI.Projects.FoundryEvaluationTarget","com.azure.ai.projects.models.FoundryModelArtifactProfileCategory":"Azure.AI.Projects.FoundryModelArtifactProfileCategory","com.azure.ai.projects.models.FoundryModelArtifactProfileSignal":"Azure.AI.Projects.FoundryModelArtifactProfileSignal","com.azure.ai.projects.models.FoundryModelSourceType":"Azure.AI.Projects.FoundryModelSourceType","com.azure.ai.projects.models.FoundryModelWarning":"Azure.AI.Projects.FoundryModelWarning","com.azure.ai.projects.models.FoundryModelWarningCode":"Azure.AI.Projects.FoundryModelWarningCode","com.azure.ai.projects.models.FoundryModelWeightType":"Azure.AI.Projects.FoundryModelWeightType","com.azure.ai.projects.models.GenerationWarningType":"Azure.AI.Projects.GenerationWarningType","com.azure.ai.projects.models.GitHubIssueEvent":"Azure.AI.Projects.GitHubIssueEvent","com.azure.ai.projects.models.GitHubIssueRoutineTrigger":"Azure.AI.Projects.GitHubIssueRoutineTrigger","com.azure.ai.projects.models.GraderAzureAIEvaluator":"Azure.AI.Projects.GraderAzureAIEvaluator","com.azure.ai.projects.models.HourlyRecurrenceSchedule":"Azure.AI.Projects.HourlyRecurrenceSchedule","com.azure.ai.projects.models.HumanEvaluationPreviewRuleAction":"Azure.AI.Projects.HumanEvaluationPreviewRuleAction","com.azure.ai.projects.models.IndexType":"Azure.AI.Projects.IndexType","com.azure.ai.projects.models.Insight":"Azure.AI.Projects.Insight","com.azure.ai.projects.models.InsightCluster":"Azure.AI.Projects.InsightCluster","com.azure.ai.projects.models.InsightModelConfiguration":"Azure.AI.Projects.InsightModelConfiguration","com.azure.ai.projects.models.InsightRequest":"Azure.AI.Projects.InsightRequest","com.azure.ai.projects.models.InsightResult":"Azure.AI.Projects.InsightResult","com.azure.ai.projects.models.InsightSample":"Azure.AI.Projects.InsightSample","com.azure.ai.projects.models.InsightScheduleTask":"Azure.AI.Projects.InsightScheduleTask","com.azure.ai.projects.models.InsightSummary":"Azure.AI.Projects.InsightSummary","com.azure.ai.projects.models.InsightType":"Azure.AI.Projects.InsightType","com.azure.ai.projects.models.InsightsMetadata":"Azure.AI.Projects.InsightsMetadata","com.azure.ai.projects.models.InvokeAgentInvocationsApiDispatchPayload":"Azure.AI.Projects.InvokeAgentInvocationsApiDispatchPayload","com.azure.ai.projects.models.InvokeAgentInvocationsApiRoutineAction":"Azure.AI.Projects.InvokeAgentInvocationsApiRoutineAction","com.azure.ai.projects.models.InvokeAgentResponsesApiDispatchPayload":"Azure.AI.Projects.InvokeAgentResponsesApiDispatchPayload","com.azure.ai.projects.models.InvokeAgentResponsesApiRoutineAction":"Azure.AI.Projects.InvokeAgentResponsesApiRoutineAction","com.azure.ai.projects.models.JobStatus":"Azure.AI.Projects.JobStatus","com.azure.ai.projects.models.ListVersionsRequestType":"Azure.AI.Projects.listVersions.RequestType.anonymous","com.azure.ai.projects.models.LoraConfig":"Azure.AI.Projects.LoraConfig","com.azure.ai.projects.models.ManagedAzureAISearchIndex":"Azure.AI.Projects.ManagedAzureAISearchIndex","com.azure.ai.projects.models.ModelCredentialInput":"Azure.AI.Projects.ModelCredentialRequest","com.azure.ai.projects.models.ModelDeployment":"Azure.AI.Projects.ModelDeployment","com.azure.ai.projects.models.ModelDeploymentSku":"Azure.AI.Projects.Sku","com.azure.ai.projects.models.ModelPendingUploadInput":"Azure.AI.Projects.ModelPendingUploadRequest","com.azure.ai.projects.models.ModelPendingUploadResult":"Azure.AI.Projects.ModelPendingUploadResponse","com.azure.ai.projects.models.ModelSamplingParams":"Azure.AI.Projects.ModelSamplingParams","com.azure.ai.projects.models.ModelSourceData":"Azure.AI.Projects.ModelSourceData","com.azure.ai.projects.models.ModelVersion":"Azure.AI.Projects.ModelVersion","com.azure.ai.projects.models.MonthlyRecurrenceSchedule":"Azure.AI.Projects.MonthlyRecurrenceSchedule","com.azure.ai.projects.models.NoAuthenticationCredential":"Azure.AI.Projects.NoAuthenticationCredentials","com.azure.ai.projects.models.OneTimeTrigger":"Azure.AI.Projects.OneTimeTrigger","com.azure.ai.projects.models.OperationStatus":"Azure.Core.Foundations.OperationState","com.azure.ai.projects.models.PendingUploadRequest":"Azure.AI.Projects.PendingUploadRequest","com.azure.ai.projects.models.PendingUploadResponse":"Azure.AI.Projects.PendingUploadResponse","com.azure.ai.projects.models.PendingUploadType":"Azure.AI.Projects.PendingUploadType","com.azure.ai.projects.models.PromptBasedEvaluatorDefinition":"Azure.AI.Projects.PromptBasedEvaluatorDefinition","com.azure.ai.projects.models.PromptDataGenerationJobSource":"Azure.AI.Projects.PromptDataGenerationJobSource","com.azure.ai.projects.models.PromptEvaluatorGenerationJobSource":"Azure.AI.Projects.PromptEvaluatorGenerationJobSource","com.azure.ai.projects.models.RecurrenceSchedule":"Azure.AI.Projects.RecurrenceSchedule","com.azure.ai.projects.models.RecurrenceTrigger":"Azure.AI.Projects.RecurrenceTrigger","com.azure.ai.projects.models.RecurrenceType":"Azure.AI.Projects.RecurrenceType","com.azure.ai.projects.models.RedTeam":"Azure.AI.Projects.RedTeam","com.azure.ai.projects.models.RiskCategory":"Azure.AI.Projects.RiskCategory","com.azure.ai.projects.models.Routine":"Azure.AI.Projects.Routine","com.azure.ai.projects.models.RoutineAction":"Azure.AI.Projects.RoutineAction","com.azure.ai.projects.models.RoutineActionType":"Azure.AI.Projects.RoutineActionType","com.azure.ai.projects.models.RoutineAttemptSource":"Azure.AI.Projects.RoutineAttemptSource","com.azure.ai.projects.models.RoutineAuthorization":"Azure.AI.Projects.RoutineAuthorization","com.azure.ai.projects.models.RoutineDispatchIdentity":"Azure.AI.Projects.RoutineDispatchIdentity","com.azure.ai.projects.models.RoutineDispatchPayload":"Azure.AI.Projects.RoutineDispatchPayload","com.azure.ai.projects.models.RoutineDispatchPayloadType":"Azure.AI.Projects.RoutineDispatchPayloadType","com.azure.ai.projects.models.RoutineRun":"Azure.AI.Projects.RoutineRun","com.azure.ai.projects.models.RoutineRunPhase":"Azure.AI.Projects.RoutineRunPhase","com.azure.ai.projects.models.RoutineTrigger":"Azure.AI.Projects.RoutineTrigger","com.azure.ai.projects.models.RoutineTriggerType":"Azure.AI.Projects.RoutineTriggerType","com.azure.ai.projects.models.RubricBasedEvaluatorDefinition":"Azure.AI.Projects.RubricBasedEvaluatorDefinition","com.azure.ai.projects.models.RubricGenerationInputQualityWarning":"Azure.AI.Projects.RubricGenerationInputQualityWarning","com.azure.ai.projects.models.RubricGenerationInputQualityWarningCode":"Azure.AI.Projects.RubricGenerationInputQualityWarningCode","com.azure.ai.projects.models.RubricGenerationInputQualityWarningSeverity":"Azure.AI.Projects.RubricGenerationInputQualityWarningSeverity","com.azure.ai.projects.models.RubricGenerationInputQualityWarningSource":"Azure.AI.Projects.RubricGenerationInputQualityWarningSource","com.azure.ai.projects.models.SampleType":"Azure.AI.Projects.SampleType","com.azure.ai.projects.models.SasCredential":"Azure.AI.Projects.SASCredentials","com.azure.ai.projects.models.Schedule":"Azure.AI.Projects.Schedule","com.azure.ai.projects.models.ScheduleProvisioningStatus":"Azure.AI.Projects.ScheduleProvisioningStatus","com.azure.ai.projects.models.ScheduleRoutineTrigger":"Azure.AI.Projects.ScheduleRoutineTrigger","com.azure.ai.projects.models.ScheduleRun":"Azure.AI.Projects.ScheduleRun","com.azure.ai.projects.models.ScheduleTask":"Azure.AI.Projects.ScheduleTask","com.azure.ai.projects.models.ScheduleTaskType":"Azure.AI.Projects.ScheduleTaskType","com.azure.ai.projects.models.SimpleQnADataGenerationJobOptions":"Azure.AI.Projects.SimpleQnADataGenerationJobOptions","com.azure.ai.projects.models.SimpleQnAFineTuningQuestionType":"Azure.AI.Projects.SimpleQnAFineTuningQuestionType","com.azure.ai.projects.models.SimulationSeedDataGenerationJobOptions":"Azure.AI.Projects.SimulationSeedDataGenerationJobOptions","com.azure.ai.projects.models.SkillDetails":"Azure.AI.Projects.Skill","com.azure.ai.projects.models.SkillFileDetails":"TypeSpec.Http.File","com.azure.ai.projects.models.SkillInlineContent":"Azure.AI.Projects.SkillInlineContent","com.azure.ai.projects.models.SkillVersion":"Azure.AI.Projects.SkillVersion","com.azure.ai.projects.models.TargetConfig":"Azure.AI.Projects.RedTeamTargetConfig","com.azure.ai.projects.models.TaxonomyCategory":"Azure.AI.Projects.TaxonomyCategory","com.azure.ai.projects.models.TaxonomySubCategory":"Azure.AI.Projects.TaxonomySubCategory","com.azure.ai.projects.models.TestingCriterionAzureAIEvaluator":"Azure.AI.Projects.TestingCriterionAzureAIEvaluator","com.azure.ai.projects.models.TimerRoutineTrigger":"Azure.AI.Projects.TimerRoutineTrigger","com.azure.ai.projects.models.ToolDescription":"Azure.AI.Projects.ToolDescription","com.azure.ai.projects.models.ToolUseFineTuningDataGenerationJobOptions":"Azure.AI.Projects.ToolUseFineTuningDataGenerationJobOptions","com.azure.ai.projects.models.TracesDataGenerationJobOptions":"Azure.AI.Projects.TracesDataGenerationJobOptions","com.azure.ai.projects.models.TracesDataGenerationJobSource":"Azure.AI.Projects.TracesDataGenerationJobSource","com.azure.ai.projects.models.TracesEvaluatorGenerationJobSource":"Azure.AI.Projects.TracesEvaluatorGenerationJobSource","com.azure.ai.projects.models.TreatmentEffectType":"Azure.AI.Projects.TreatmentEffectType","com.azure.ai.projects.models.Trigger":"Azure.AI.Projects.Trigger","com.azure.ai.projects.models.TriggerType":"Azure.AI.Projects.TriggerType","com.azure.ai.projects.models.UpdateModelVersionInput":"Azure.AI.Projects.UpdateModelVersionRequest","com.azure.ai.projects.models.WeeklyRecurrenceSchedule":"Azure.AI.Projects.WeeklyRecurrenceSchedule"},"generatedFiles":["src/main/java/com/azure/ai/projects/AIProjectClientBuilder.java","src/main/java/com/azure/ai/projects/AIProjectsServiceVersion.java","src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsClient.java","src/main/java/com/azure/ai/projects/BetaDatasetsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaDatasetsClient.java","src/main/java/com/azure/ai/projects/BetaEvaluationTaxonomiesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaEvaluationTaxonomiesClient.java","src/main/java/com/azure/ai/projects/BetaEvaluatorsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaEvaluatorsClient.java","src/main/java/com/azure/ai/projects/BetaInsightsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaInsightsClient.java","src/main/java/com/azure/ai/projects/BetaModelsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaModelsClient.java","src/main/java/com/azure/ai/projects/BetaRedTeamsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaRedTeamsClient.java","src/main/java/com/azure/ai/projects/BetaRoutinesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaRoutinesClient.java","src/main/java/com/azure/ai/projects/BetaSchedulesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaSchedulesClient.java","src/main/java/com/azure/ai/projects/BetaSkillsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaSkillsClient.java","src/main/java/com/azure/ai/projects/ConnectionsAsyncClient.java","src/main/java/com/azure/ai/projects/ConnectionsClient.java","src/main/java/com/azure/ai/projects/DatasetsAsyncClient.java","src/main/java/com/azure/ai/projects/DatasetsClient.java","src/main/java/com/azure/ai/projects/DeploymentsAsyncClient.java","src/main/java/com/azure/ai/projects/DeploymentsClient.java","src/main/java/com/azure/ai/projects/EvaluationRulesAsyncClient.java","src/main/java/com/azure/ai/projects/EvaluationRulesClient.java","src/main/java/com/azure/ai/projects/IndexesAsyncClient.java","src/main/java/com/azure/ai/projects/IndexesClient.java","src/main/java/com/azure/ai/projects/implementation/AIProjectClientImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaAgentInsightMonitorsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaDatasetsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaEvaluationTaxonomiesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaEvaluatorsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaInsightsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaModelsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaRedTeamsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaRoutinesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaSchedulesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaSkillsImpl.java","src/main/java/com/azure/ai/projects/implementation/ConnectionsImpl.java","src/main/java/com/azure/ai/projects/implementation/DatasetsImpl.java","src/main/java/com/azure/ai/projects/implementation/DeploymentsImpl.java","src/main/java/com/azure/ai/projects/implementation/EvaluationRulesImpl.java","src/main/java/com/azure/ai/projects/implementation/IndexesImpl.java","src/main/java/com/azure/ai/projects/implementation/JsonMergePatchHelper.java","src/main/java/com/azure/ai/projects/implementation/MultipartFormDataHelper.java","src/main/java/com/azure/ai/projects/implementation/OperationLocationPollingStrategy.java","src/main/java/com/azure/ai/projects/implementation/PollingUtils.java","src/main/java/com/azure/ai/projects/implementation/SyncOperationLocationPollingStrategy.java","src/main/java/com/azure/ai/projects/implementation/models/CreateOrUpdateRoutineRequest.java","src/main/java/com/azure/ai/projects/implementation/models/CreateSkillVersionRequest.java","src/main/java/com/azure/ai/projects/implementation/models/DispatchRoutineAsyncRequest.java","src/main/java/com/azure/ai/projects/implementation/models/FoundryFeaturesOptInKeys.java","src/main/java/com/azure/ai/projects/implementation/models/UpdateSkillRequest.java","src/main/java/com/azure/ai/projects/implementation/models/package-info.java","src/main/java/com/azure/ai/projects/implementation/package-info.java","src/main/java/com/azure/ai/projects/models/AIProjectIndex.java","src/main/java/com/azure/ai/projects/models/AgentClusterInsightRequest.java","src/main/java/com/azure/ai/projects/models/AgentClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/AgentDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/AgentEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/AgentInsight.java","src/main/java/com/azure/ai/projects/models/AgentInsightDetails.java","src/main/java/com/azure/ai/projects/models/AgentInsightEstimatedCost.java","src/main/java/com/azure/ai/projects/models/AgentInsightHighlightedTrace.java","src/main/java/com/azure/ai/projects/models/AgentInsightLinkedTrace.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitor.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorCreate.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorListItem.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorUpdate.java","src/main/java/com/azure/ai/projects/models/AgentInsightOverviewSource.java","src/main/java/com/azure/ai/projects/models/AgentInsightPromptSurface.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFix.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFixChange.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFixKind.java","src/main/java/com/azure/ai/projects/models/AgentInsightRecommendedAction.java","src/main/java/com/azure/ai/projects/models/AgentInsightRun.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunCreate.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunResult.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunTrigger.java","src/main/java/com/azure/ai/projects/models/AgentInsightSeverity.java","src/main/java/com/azure/ai/projects/models/AgentInsightStatus.java","src/main/java/com/azure/ai/projects/models/AgentInsightSuspension.java","src/main/java/com/azure/ai/projects/models/AgentInsightTokenUsage.java","src/main/java/com/azure/ai/projects/models/AgentInsightUpdate.java","src/main/java/com/azure/ai/projects/models/AgentInsightsOverview.java","src/main/java/com/azure/ai/projects/models/AgentInsightsOverviewOverride.java","src/main/java/com/azure/ai/projects/models/AgentTaxonomyInput.java","src/main/java/com/azure/ai/projects/models/AgenticIdentityPreviewCredential.java","src/main/java/com/azure/ai/projects/models/ApiError.java","src/main/java/com/azure/ai/projects/models/ApiKeyCredential.java","src/main/java/com/azure/ai/projects/models/ArtifactProfile.java","src/main/java/com/azure/ai/projects/models/AttackStrategy.java","src/main/java/com/azure/ai/projects/models/AzureAIAgentTarget.java","src/main/java/com/azure/ai/projects/models/AzureAIModelTarget.java","src/main/java/com/azure/ai/projects/models/AzureAISearchIndex.java","src/main/java/com/azure/ai/projects/models/AzureOpenAIModelConfiguration.java","src/main/java/com/azure/ai/projects/models/BaseCredential.java","src/main/java/com/azure/ai/projects/models/BlobReference.java","src/main/java/com/azure/ai/projects/models/BlobReferenceSasCredential.java","src/main/java/com/azure/ai/projects/models/ChartCoordinate.java","src/main/java/com/azure/ai/projects/models/ClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/ClusterTokenUsage.java","src/main/java/com/azure/ai/projects/models/CodeBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/Connection.java","src/main/java/com/azure/ai/projects/models/ConnectionType.java","src/main/java/com/azure/ai/projects/models/ContinuousEvaluationRuleAction.java","src/main/java/com/azure/ai/projects/models/CosmosDBIndex.java","src/main/java/com/azure/ai/projects/models/CreateAsyncResponse.java","src/main/java/com/azure/ai/projects/models/CreateSkillVersionFromFilesBody.java","src/main/java/com/azure/ai/projects/models/CredentialType.java","src/main/java/com/azure/ai/projects/models/CronTrigger.java","src/main/java/com/azure/ai/projects/models/CustomCredential.java","src/main/java/com/azure/ai/projects/models/CustomRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/DailyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/DataGenerationJob.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobInputs.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputType.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputWriteMode.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobResult.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobScenario.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobSourceType.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobType.java","src/main/java/com/azure/ai/projects/models/DataGenerationModelOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationTokenUsage.java","src/main/java/com/azure/ai/projects/models/DatasetCredential.java","src/main/java/com/azure/ai/projects/models/DatasetDataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/DatasetEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/DatasetReference.java","src/main/java/com/azure/ai/projects/models/DatasetType.java","src/main/java/com/azure/ai/projects/models/DatasetVersion.java","src/main/java/com/azure/ai/projects/models/Deployment.java","src/main/java/com/azure/ai/projects/models/DeploymentType.java","src/main/java/com/azure/ai/projects/models/Dimension.java","src/main/java/com/azure/ai/projects/models/DispatchRoutineResult.java","src/main/java/com/azure/ai/projects/models/EmbeddingConfiguration.java","src/main/java/com/azure/ai/projects/models/EndpointBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/EntraIdCredential.java","src/main/java/com/azure/ai/projects/models/EvaluationComparisonInsightRequest.java","src/main/java/com/azure/ai/projects/models/EvaluationComparisonInsightResult.java","src/main/java/com/azure/ai/projects/models/EvaluationLevel.java","src/main/java/com/azure/ai/projects/models/EvaluationResult.java","src/main/java/com/azure/ai/projects/models/EvaluationResultSample.java","src/main/java/com/azure/ai/projects/models/EvaluationRule.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleAction.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleActionType.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleEventType.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleFilter.java","src/main/java/com/azure/ai/projects/models/EvaluationRunClusterInsightRequest.java","src/main/java/com/azure/ai/projects/models/EvaluationRunClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultCompareItem.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultComparison.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultSummary.java","src/main/java/com/azure/ai/projects/models/EvaluationScheduleTask.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomy.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomyInput.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomyInputType.java","src/main/java/com/azure/ai/projects/models/EvaluatorCategory.java","src/main/java/com/azure/ai/projects/models/EvaluatorCredentialInput.java","src/main/java/com/azure/ai/projects/models/EvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/EvaluatorDefinitionType.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationArtifacts.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationInputs.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJob.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJobSourceType.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationTokenUsage.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetric.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetricDirection.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetricType.java","src/main/java/com/azure/ai/projects/models/EvaluatorType.java","src/main/java/com/azure/ai/projects/models/EvaluatorVersion.java","src/main/java/com/azure/ai/projects/models/FieldMapping.java","src/main/java/com/azure/ai/projects/models/FileDataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/FileDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/FileDatasetVersion.java","src/main/java/com/azure/ai/projects/models/FolderDatasetVersion.java","src/main/java/com/azure/ai/projects/models/FoundryEvaluationTarget.java","src/main/java/com/azure/ai/projects/models/FoundryModelArtifactProfileCategory.java","src/main/java/com/azure/ai/projects/models/FoundryModelArtifactProfileSignal.java","src/main/java/com/azure/ai/projects/models/FoundryModelSourceType.java","src/main/java/com/azure/ai/projects/models/FoundryModelWarning.java","src/main/java/com/azure/ai/projects/models/FoundryModelWarningCode.java","src/main/java/com/azure/ai/projects/models/FoundryModelWeightType.java","src/main/java/com/azure/ai/projects/models/GenerationWarningType.java","src/main/java/com/azure/ai/projects/models/GitHubIssueEvent.java","src/main/java/com/azure/ai/projects/models/GitHubIssueRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/GraderAzureAIEvaluator.java","src/main/java/com/azure/ai/projects/models/HourlyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/HumanEvaluationPreviewRuleAction.java","src/main/java/com/azure/ai/projects/models/IndexType.java","src/main/java/com/azure/ai/projects/models/Insight.java","src/main/java/com/azure/ai/projects/models/InsightCluster.java","src/main/java/com/azure/ai/projects/models/InsightModelConfiguration.java","src/main/java/com/azure/ai/projects/models/InsightRequest.java","src/main/java/com/azure/ai/projects/models/InsightResult.java","src/main/java/com/azure/ai/projects/models/InsightSample.java","src/main/java/com/azure/ai/projects/models/InsightScheduleTask.java","src/main/java/com/azure/ai/projects/models/InsightSummary.java","src/main/java/com/azure/ai/projects/models/InsightType.java","src/main/java/com/azure/ai/projects/models/InsightsMetadata.java","src/main/java/com/azure/ai/projects/models/InvokeAgentInvocationsApiDispatchPayload.java","src/main/java/com/azure/ai/projects/models/InvokeAgentInvocationsApiRoutineAction.java","src/main/java/com/azure/ai/projects/models/InvokeAgentResponsesApiDispatchPayload.java","src/main/java/com/azure/ai/projects/models/InvokeAgentResponsesApiRoutineAction.java","src/main/java/com/azure/ai/projects/models/JobStatus.java","src/main/java/com/azure/ai/projects/models/ListVersionsRequestType.java","src/main/java/com/azure/ai/projects/models/LoraConfig.java","src/main/java/com/azure/ai/projects/models/ManagedAzureAISearchIndex.java","src/main/java/com/azure/ai/projects/models/ModelCredentialInput.java","src/main/java/com/azure/ai/projects/models/ModelDeployment.java","src/main/java/com/azure/ai/projects/models/ModelDeploymentSku.java","src/main/java/com/azure/ai/projects/models/ModelPendingUploadInput.java","src/main/java/com/azure/ai/projects/models/ModelPendingUploadResult.java","src/main/java/com/azure/ai/projects/models/ModelSamplingParams.java","src/main/java/com/azure/ai/projects/models/ModelSourceData.java","src/main/java/com/azure/ai/projects/models/ModelVersion.java","src/main/java/com/azure/ai/projects/models/MonthlyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/NoAuthenticationCredential.java","src/main/java/com/azure/ai/projects/models/OneTimeTrigger.java","src/main/java/com/azure/ai/projects/models/OperationStatus.java","src/main/java/com/azure/ai/projects/models/PendingUploadRequest.java","src/main/java/com/azure/ai/projects/models/PendingUploadResponse.java","src/main/java/com/azure/ai/projects/models/PendingUploadType.java","src/main/java/com/azure/ai/projects/models/PromptBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/PromptDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/PromptEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/RecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/RecurrenceTrigger.java","src/main/java/com/azure/ai/projects/models/RecurrenceType.java","src/main/java/com/azure/ai/projects/models/RedTeam.java","src/main/java/com/azure/ai/projects/models/RiskCategory.java","src/main/java/com/azure/ai/projects/models/Routine.java","src/main/java/com/azure/ai/projects/models/RoutineAction.java","src/main/java/com/azure/ai/projects/models/RoutineActionType.java","src/main/java/com/azure/ai/projects/models/RoutineAttemptSource.java","src/main/java/com/azure/ai/projects/models/RoutineAuthorization.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchIdentity.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchPayload.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchPayloadType.java","src/main/java/com/azure/ai/projects/models/RoutineRun.java","src/main/java/com/azure/ai/projects/models/RoutineRunPhase.java","src/main/java/com/azure/ai/projects/models/RoutineTrigger.java","src/main/java/com/azure/ai/projects/models/RoutineTriggerType.java","src/main/java/com/azure/ai/projects/models/RubricBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarning.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningCode.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningSeverity.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningSource.java","src/main/java/com/azure/ai/projects/models/SampleType.java","src/main/java/com/azure/ai/projects/models/SasCredential.java","src/main/java/com/azure/ai/projects/models/Schedule.java","src/main/java/com/azure/ai/projects/models/ScheduleProvisioningStatus.java","src/main/java/com/azure/ai/projects/models/ScheduleRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/ScheduleRun.java","src/main/java/com/azure/ai/projects/models/ScheduleTask.java","src/main/java/com/azure/ai/projects/models/ScheduleTaskType.java","src/main/java/com/azure/ai/projects/models/SimpleQnADataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/SimpleQnAFineTuningQuestionType.java","src/main/java/com/azure/ai/projects/models/SimulationSeedDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/SkillDetails.java","src/main/java/com/azure/ai/projects/models/SkillFileDetails.java","src/main/java/com/azure/ai/projects/models/SkillInlineContent.java","src/main/java/com/azure/ai/projects/models/SkillVersion.java","src/main/java/com/azure/ai/projects/models/TargetConfig.java","src/main/java/com/azure/ai/projects/models/TaxonomyCategory.java","src/main/java/com/azure/ai/projects/models/TaxonomySubCategory.java","src/main/java/com/azure/ai/projects/models/TestingCriterionAzureAIEvaluator.java","src/main/java/com/azure/ai/projects/models/TimerRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/ToolDescription.java","src/main/java/com/azure/ai/projects/models/ToolUseFineTuningDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/TracesEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/TreatmentEffectType.java","src/main/java/com/azure/ai/projects/models/Trigger.java","src/main/java/com/azure/ai/projects/models/TriggerType.java","src/main/java/com/azure/ai/projects/models/UpdateModelVersionInput.java","src/main/java/com/azure/ai/projects/models/WeeklyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/package-info.java","src/main/java/com/azure/ai/projects/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file diff --git a/sdk/ai/azure-ai-projects/tsp-location.yaml b/sdk/ai/azure-ai-projects/tsp-location.yaml index a600d8eb85d1c..5876a0959e58b 100644 --- a/sdk/ai/azure-ai-projects/tsp-location.yaml +++ b/sdk/ai/azure-ai-projects/tsp-location.yaml @@ -1,5 +1,5 @@ directory: specification/ai-foundry/data-plane/Foundry/src/sdk-java-azure-ai-projects -commit: b25b27f1034082e994bdb68e33eb52bdfae2f3e9 +commit: 3cfd33d89eee4517b43b04435a01fea558a77202 repo: Azure/azure-rest-api-specs additionalDirectories: - specification/ai-foundry/data-plane/Foundry/src/agent-insights From 707a40a5615c17c82810fe995f34b326e431629d Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 19:34:34 +0800 Subject: [PATCH 26/29] Update Agents TypeSpec commit pin --- sdk/ai/azure-ai-agents/tsp-location.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/ai/azure-ai-agents/tsp-location.yaml b/sdk/ai/azure-ai-agents/tsp-location.yaml index fa10f6eeee215..2710a8bc23cb2 100644 --- a/sdk/ai/azure-ai-agents/tsp-location.yaml +++ b/sdk/ai/azure-ai-agents/tsp-location.yaml @@ -1,5 +1,5 @@ directory: specification/ai-foundry/data-plane/Foundry/src/sdk-java-azure-ai-agents -commit: b25b27f1034082e994bdb68e33eb52bdfae2f3e9 +commit: 3cfd33d89eee4517b43b04435a01fea558a77202 repo: Azure/azure-rest-api-specs additionalDirectories: - specification/ai-foundry/data-plane/Foundry/src/agents From 7cb7acd21716168d8c1b5cd619a2701b012f4d6d Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 20:06:38 +0800 Subject: [PATCH 27/29] Regenerate azure-ai-projects from TypeSpec --- .../projects/models/DataGenerationJobOutputWriteMode.java | 8 ++++---- .../resources/META-INF/azure-ai-projects_metadata.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputWriteMode.java b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputWriteMode.java index 2e3cda21c7e5d..b577747222a82 100644 --- a/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputWriteMode.java +++ b/sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputWriteMode.java @@ -1,7 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // Code generated by Microsoft (R) TypeSpec Code Generator. - package com.azure.ai.projects.models; import com.azure.core.annotation.Generated; @@ -12,6 +11,7 @@ * The supported write modes for data generation job outputs. */ public final class DataGenerationJobOutputWriteMode extends ExpandableStringEnum { + /** * Default behavior. Create the next dataset version using only newly generated rows, replacing the previous * version's rows in the new version. @@ -28,7 +28,7 @@ public final class DataGenerationJobOutputWriteMode extends ExpandableStringEnum /** * Creates a new instance of DataGenerationJobOutputWriteMode value. - * + * * @deprecated Use the {@link #fromString(String)} factory method. */ @Generated @@ -38,7 +38,7 @@ public DataGenerationJobOutputWriteMode() { /** * Creates or finds a DataGenerationJobOutputWriteMode from its string representation. - * + * * @param name a name to look for. * @return the corresponding DataGenerationJobOutputWriteMode. */ @@ -49,7 +49,7 @@ public static DataGenerationJobOutputWriteMode fromString(String name) { /** * Gets known DataGenerationJobOutputWriteMode values. - * + * * @return known DataGenerationJobOutputWriteMode values. */ @Generated diff --git a/sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_metadata.json b/sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_metadata.json index 3058a637612c0..5d781fb497a83 100644 --- a/sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_metadata.json +++ b/sdk/ai/azure-ai-projects/src/main/resources/META-INF/azure-ai-projects_metadata.json @@ -1 +1 @@ -{"flavor":"azure","apiVersions":{"Azure.AI.Projects":"v1"},"crossLanguagePackageId":"Azure.AI.Projects","crossLanguageVersion":"9d214da512fb","crossLanguageDefinitions":{"com.azure.ai.projects.AIProjectClientBuilder":"Azure.AI.Projects","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient":"Azure.AI.Projects.Beta.AgentInsightMonitors","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.beginCreateAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.beginCreateAgentInsightRunWithModel":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.cancelAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.cancelAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.createAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.createAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.deleteAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.deleteAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsightMonitors":"Azure.AI.Projects.AgentInsightMonitors.list","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsightRuns":"Azure.AI.Projects.AgentInsightMonitors.listRuns","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsights":"Azure.AI.Projects.AgentInsightMonitors.listInsights","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.resetAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.resetAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient":"Azure.AI.Projects.Beta.AgentInsightMonitors","com.azure.ai.projects.BetaAgentInsightMonitorsClient.beginCreateAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.beginCreateAgentInsightRunWithModel":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.cancelAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.cancelAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.createAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsClient.createAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsClient.deleteAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsClient.deleteAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsightMonitors":"Azure.AI.Projects.AgentInsightMonitors.list","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsightRuns":"Azure.AI.Projects.AgentInsightMonitors.listRuns","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsights":"Azure.AI.Projects.AgentInsightMonitors.listInsights","com.azure.ai.projects.BetaAgentInsightMonitorsClient.resetAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsClient.resetAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaDatasetsAsyncClient":"Azure.AI.Projects.Beta.Datasets","com.azure.ai.projects.BetaDatasetsAsyncClient.beginCreateGenerationJob":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsAsyncClient.beginCreateGenerationJobWithModel":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsAsyncClient.cancelGenerationJob":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsAsyncClient.cancelGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsAsyncClient.deleteGenerationJob":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsAsyncClient.deleteGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsAsyncClient.getGenerationJob":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsAsyncClient.getGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsAsyncClient.listGenerationJobs":"Azure.AI.Projects.DataGenerationJobs.list","com.azure.ai.projects.BetaDatasetsClient":"Azure.AI.Projects.Beta.Datasets","com.azure.ai.projects.BetaDatasetsClient.beginCreateGenerationJob":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsClient.beginCreateGenerationJobWithModel":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsClient.cancelGenerationJob":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsClient.cancelGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsClient.deleteGenerationJob":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsClient.deleteGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsClient.getGenerationJob":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsClient.getGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsClient.listGenerationJobs":"Azure.AI.Projects.DataGenerationJobs.list","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient":"Azure.AI.Projects.Beta.EvaluationTaxonomies","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.createEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.createEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.deleteEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.deleteEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.getEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.getEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.listEvaluationTaxonomies":"Azure.AI.Projects.EvaluationTaxonomies.list","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.updateEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.updateEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesClient":"Azure.AI.Projects.Beta.EvaluationTaxonomies","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.createEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.createEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.deleteEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.deleteEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.getEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.getEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.listEvaluationTaxonomies":"Azure.AI.Projects.EvaluationTaxonomies.list","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.updateEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.updateEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluatorsAsyncClient":"Azure.AI.Projects.Beta.Evaluators","com.azure.ai.projects.BetaEvaluatorsAsyncClient.beginCreateEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsAsyncClient.beginCreateEvaluatorGenerationJobWithModel":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsAsyncClient.cancelEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsAsyncClient.cancelEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsAsyncClient.createEvaluatorVersion":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.createEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorVersion":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getCredentials":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getCredentialsWithResponse":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorVersion":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listEvaluatorGenerationJobs":"Azure.AI.Projects.EvaluatorGenerationJobs.list","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listEvaluatorVersions":"Azure.AI.Projects.Evaluators.listVersions","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listLatestEvaluatorVersions":"Azure.AI.Projects.Evaluators.listLatestVersions","com.azure.ai.projects.BetaEvaluatorsAsyncClient.startPendingUpload":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsAsyncClient.startPendingUploadWithResponse":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsAsyncClient.updateEvaluatorVersion":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.updateEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsClient":"Azure.AI.Projects.Beta.Evaluators","com.azure.ai.projects.BetaEvaluatorsClient.beginCreateEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsClient.beginCreateEvaluatorGenerationJobWithModel":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsClient.cancelEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsClient.cancelEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsClient.createEvaluatorVersion":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsClient.createEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorVersion":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsClient.getCredentials":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsClient.getCredentialsWithResponse":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorVersion":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsClient.listEvaluatorGenerationJobs":"Azure.AI.Projects.EvaluatorGenerationJobs.list","com.azure.ai.projects.BetaEvaluatorsClient.listEvaluatorVersions":"Azure.AI.Projects.Evaluators.listVersions","com.azure.ai.projects.BetaEvaluatorsClient.listLatestEvaluatorVersions":"Azure.AI.Projects.Evaluators.listLatestVersions","com.azure.ai.projects.BetaEvaluatorsClient.startPendingUpload":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsClient.startPendingUploadWithResponse":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsClient.updateEvaluatorVersion":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsClient.updateEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaInsightsAsyncClient":"Azure.AI.Projects.Beta.Insights","com.azure.ai.projects.BetaInsightsAsyncClient.generateInsight":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsAsyncClient.generateInsightWithResponse":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsAsyncClient.getInsight":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsAsyncClient.getInsightWithResponse":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsAsyncClient.listInsights":"Azure.AI.Projects.Insights.list","com.azure.ai.projects.BetaInsightsClient":"Azure.AI.Projects.Beta.Insights","com.azure.ai.projects.BetaInsightsClient.generateInsight":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsClient.generateInsightWithResponse":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsClient.getInsight":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsClient.getInsightWithResponse":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsClient.listInsights":"Azure.AI.Projects.Insights.list","com.azure.ai.projects.BetaModelsAsyncClient":"Azure.AI.Projects.Beta.Models","com.azure.ai.projects.BetaModelsAsyncClient.createModelVersionAsyncWithResponse":"Azure.AI.Projects.Models.createAsync","com.azure.ai.projects.BetaModelsAsyncClient.deleteModelVersion":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsAsyncClient.deleteModelVersionWithResponse":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsAsyncClient.getModelCredentials":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsAsyncClient.getModelCredentialsWithResponse":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsAsyncClient.getModelVersion":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsAsyncClient.getModelVersionWithResponse":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsAsyncClient.listLatestModelVersions":"Azure.AI.Projects.Models.listLatest","com.azure.ai.projects.BetaModelsAsyncClient.listModelVersions":"Azure.AI.Projects.Models.listVersions","com.azure.ai.projects.BetaModelsAsyncClient.startModelPendingUpload":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsAsyncClient.startModelPendingUploadWithResponse":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsAsyncClient.updateModelVersion":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsAsyncClient.updateModelVersionWithResponse":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsClient":"Azure.AI.Projects.Beta.Models","com.azure.ai.projects.BetaModelsClient.createModelVersionAsyncWithResponse":"Azure.AI.Projects.Models.createAsync","com.azure.ai.projects.BetaModelsClient.deleteModelVersion":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsClient.deleteModelVersionWithResponse":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsClient.getModelCredentials":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsClient.getModelCredentialsWithResponse":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsClient.getModelVersion":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsClient.getModelVersionWithResponse":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsClient.listLatestModelVersions":"Azure.AI.Projects.Models.listLatest","com.azure.ai.projects.BetaModelsClient.listModelVersions":"Azure.AI.Projects.Models.listVersions","com.azure.ai.projects.BetaModelsClient.startModelPendingUpload":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsClient.startModelPendingUploadWithResponse":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsClient.updateModelVersion":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsClient.updateModelVersionWithResponse":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaRedTeamsAsyncClient":"Azure.AI.Projects.Beta.RedTeams","com.azure.ai.projects.BetaRedTeamsAsyncClient.createRedTeamRun":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsAsyncClient.createRedTeamRunWithResponse":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsAsyncClient.getRedTeam":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsAsyncClient.getRedTeamWithResponse":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsAsyncClient.listRedTeams":"Azure.AI.Projects.RedTeams.list","com.azure.ai.projects.BetaRedTeamsClient":"Azure.AI.Projects.Beta.RedTeams","com.azure.ai.projects.BetaRedTeamsClient.createRedTeamRun":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsClient.createRedTeamRunWithResponse":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsClient.getRedTeam":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsClient.getRedTeamWithResponse":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsClient.listRedTeams":"Azure.AI.Projects.RedTeams.list","com.azure.ai.projects.BetaRoutinesAsyncClient":"Azure.AI.Projects.Beta.Routines","com.azure.ai.projects.BetaRoutinesAsyncClient.createOrUpdateRoutine":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.createOrUpdateRoutineWithResponse":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.deleteRoutine":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.deleteRoutineWithResponse":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.disableRoutine":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.disableRoutineWithResponse":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.dispatchRoutine":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesAsyncClient.dispatchRoutineWithResponse":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesAsyncClient.enableRoutine":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.enableRoutineWithResponse":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.getRoutine":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.getRoutineWithResponse":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.listRoutineRuns":"Azure.AI.Projects.Routines.listRoutineRuns","com.azure.ai.projects.BetaRoutinesAsyncClient.listRoutines":"Azure.AI.Projects.Routines.listRoutines","com.azure.ai.projects.BetaRoutinesClient":"Azure.AI.Projects.Beta.Routines","com.azure.ai.projects.BetaRoutinesClient.createOrUpdateRoutine":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesClient.createOrUpdateRoutineWithResponse":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesClient.deleteRoutine":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesClient.deleteRoutineWithResponse":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesClient.disableRoutine":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesClient.disableRoutineWithResponse":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesClient.dispatchRoutine":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesClient.dispatchRoutineWithResponse":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesClient.enableRoutine":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesClient.enableRoutineWithResponse":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesClient.getRoutine":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesClient.getRoutineWithResponse":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesClient.listRoutineRuns":"Azure.AI.Projects.Routines.listRoutineRuns","com.azure.ai.projects.BetaRoutinesClient.listRoutines":"Azure.AI.Projects.Routines.listRoutines","com.azure.ai.projects.BetaSchedulesAsyncClient":"Azure.AI.Projects.Beta.Schedules","com.azure.ai.projects.BetaSchedulesAsyncClient.createOrUpdateSchedule":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesAsyncClient.createOrUpdateScheduleWithResponse":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesAsyncClient.deleteSchedule":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesAsyncClient.deleteScheduleWithResponse":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesAsyncClient.getSchedule":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleRun":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleRunWithResponse":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleWithResponse":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesAsyncClient.listScheduleRuns":"Azure.AI.Projects.Schedules.listRuns","com.azure.ai.projects.BetaSchedulesAsyncClient.listSchedules":"Azure.AI.Projects.Schedules.list","com.azure.ai.projects.BetaSchedulesClient":"Azure.AI.Projects.Beta.Schedules","com.azure.ai.projects.BetaSchedulesClient.createOrUpdateSchedule":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesClient.createOrUpdateScheduleWithResponse":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesClient.deleteSchedule":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesClient.deleteScheduleWithResponse":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesClient.getSchedule":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesClient.getScheduleRun":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesClient.getScheduleRunWithResponse":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesClient.getScheduleWithResponse":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesClient.listScheduleRuns":"Azure.AI.Projects.Schedules.listRuns","com.azure.ai.projects.BetaSchedulesClient.listSchedules":"Azure.AI.Projects.Schedules.list","com.azure.ai.projects.BetaSkillsAsyncClient":"Azure.AI.Projects.Beta.Skills","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersion":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionFromFiles":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionFromFilesWithResponseInternal":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionWithResponse":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkill":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillContent":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillContentWithResponse":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersion":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionContent":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionContentWithResponse":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionWithResponse":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillWithResponse":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsAsyncClient.listSkillVersions":"Azure.AI.Projects.Skills.listSkillVersions","com.azure.ai.projects.BetaSkillsAsyncClient.listSkills":"Azure.AI.Projects.Skills.listSkills","com.azure.ai.projects.BetaSkillsAsyncClient.updateSkill":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsAsyncClient.updateSkillWithResponse":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsClient":"Azure.AI.Projects.Beta.Skills","com.azure.ai.projects.BetaSkillsClient.createSkillVersion":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsClient.createSkillVersionFromFiles":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsClient.createSkillVersionFromFilesWithResponseInternal":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsClient.createSkillVersionWithResponse":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkill":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsClient.getSkillContent":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsClient.getSkillContentWithResponse":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersion":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkillVersionContent":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersionContentWithResponse":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersionWithResponse":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkillWithResponse":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsClient.listSkillVersions":"Azure.AI.Projects.Skills.listSkillVersions","com.azure.ai.projects.BetaSkillsClient.listSkills":"Azure.AI.Projects.Skills.listSkills","com.azure.ai.projects.BetaSkillsClient.updateSkill":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsClient.updateSkillWithResponse":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.ConnectionsAsyncClient":"Azure.AI.Projects.Connections","com.azure.ai.projects.ConnectionsAsyncClient.getConnection":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithCredentials":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithCredentialsWithResponse":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithResponse":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsAsyncClient.listConnections":"Azure.AI.Projects.Connections.list","com.azure.ai.projects.ConnectionsClient":"Azure.AI.Projects.Connections","com.azure.ai.projects.ConnectionsClient.getConnection":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsClient.getConnectionWithCredentials":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsClient.getConnectionWithCredentialsWithResponse":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsClient.getConnectionWithResponse":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsClient.listConnections":"Azure.AI.Projects.Connections.list","com.azure.ai.projects.DatasetsAsyncClient":"Azure.AI.Projects.Datasets","com.azure.ai.projects.DatasetsAsyncClient.createOrUpdateDatasetVersion":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsAsyncClient.createOrUpdateDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsAsyncClient.deleteDatasetVersion":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsAsyncClient.deleteDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsAsyncClient.getCredentials":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsAsyncClient.getCredentialsWithResponse":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsAsyncClient.getDatasetVersion":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsAsyncClient.getDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsAsyncClient.listDatasetVersions":"Azure.AI.Projects.Datasets.listVersions","com.azure.ai.projects.DatasetsAsyncClient.listLatestDatasetVersions":"Azure.AI.Projects.Datasets.listLatest","com.azure.ai.projects.DatasetsAsyncClient.pendingUpload":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsAsyncClient.pendingUploadWithResponse":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsClient":"Azure.AI.Projects.Datasets","com.azure.ai.projects.DatasetsClient.createOrUpdateDatasetVersion":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsClient.createOrUpdateDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsClient.deleteDatasetVersion":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsClient.deleteDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsClient.getCredentials":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsClient.getCredentialsWithResponse":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsClient.getDatasetVersion":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsClient.getDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsClient.listDatasetVersions":"Azure.AI.Projects.Datasets.listVersions","com.azure.ai.projects.DatasetsClient.listLatestDatasetVersions":"Azure.AI.Projects.Datasets.listLatest","com.azure.ai.projects.DatasetsClient.pendingUpload":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsClient.pendingUploadWithResponse":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DeploymentsAsyncClient":"Azure.AI.Projects.Deployments","com.azure.ai.projects.DeploymentsAsyncClient.getDeployment":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsAsyncClient.getDeploymentWithResponse":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsAsyncClient.listDeployments":"Azure.AI.Projects.Deployments.list","com.azure.ai.projects.DeploymentsClient":"Azure.AI.Projects.Deployments","com.azure.ai.projects.DeploymentsClient.getDeployment":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsClient.getDeploymentWithResponse":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsClient.listDeployments":"Azure.AI.Projects.Deployments.list","com.azure.ai.projects.EvaluationRulesAsyncClient":"Azure.AI.Projects.EvaluationRules","com.azure.ai.projects.EvaluationRulesAsyncClient.createOrUpdateEvaluationRule":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesAsyncClient.createOrUpdateEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesAsyncClient.deleteEvaluationRule":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesAsyncClient.deleteEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesAsyncClient.getEvaluationRule":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesAsyncClient.getEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesAsyncClient.listEvaluationRules":"Azure.AI.Projects.EvaluationRules.list","com.azure.ai.projects.EvaluationRulesClient":"Azure.AI.Projects.EvaluationRules","com.azure.ai.projects.EvaluationRulesClient.createOrUpdateEvaluationRule":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesClient.createOrUpdateEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesClient.deleteEvaluationRule":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesClient.deleteEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesClient.getEvaluationRule":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesClient.getEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesClient.listEvaluationRules":"Azure.AI.Projects.EvaluationRules.list","com.azure.ai.projects.IndexesAsyncClient":"Azure.AI.Projects.Indexes","com.azure.ai.projects.IndexesAsyncClient.createOrUpdateIndexVersion":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesAsyncClient.createOrUpdateIndexVersionWithResponse":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesAsyncClient.deleteIndexVersion":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesAsyncClient.deleteIndexVersionWithResponse":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesAsyncClient.getIndexVersion":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesAsyncClient.getIndexVersionWithResponse":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesAsyncClient.listIndexVersions":"Azure.AI.Projects.Indexes.listVersions","com.azure.ai.projects.IndexesAsyncClient.listLatestIndexVersions":"Azure.AI.Projects.Indexes.listLatest","com.azure.ai.projects.IndexesClient":"Azure.AI.Projects.Indexes","com.azure.ai.projects.IndexesClient.createOrUpdateIndexVersion":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesClient.createOrUpdateIndexVersionWithResponse":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesClient.deleteIndexVersion":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesClient.deleteIndexVersionWithResponse":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesClient.getIndexVersion":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesClient.getIndexVersionWithResponse":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesClient.listIndexVersions":"Azure.AI.Projects.Indexes.listVersions","com.azure.ai.projects.IndexesClient.listLatestIndexVersions":"Azure.AI.Projects.Indexes.listLatest","com.azure.ai.projects.implementation.models.CreateOrUpdateRoutineRequest":"Azure.AI.Projects.createOrUpdateRoutine.Request.anonymous","com.azure.ai.projects.implementation.models.CreateSkillVersionRequest":"Azure.AI.Projects.createSkillVersion.Request.anonymous","com.azure.ai.projects.implementation.models.DispatchRoutineAsyncRequest":"Azure.AI.Projects.dispatchRoutineAsync.Request.anonymous","com.azure.ai.projects.implementation.models.FoundryFeaturesOptInKeys":"Azure.AI.Projects.FoundryFeaturesOptInKeys","com.azure.ai.projects.implementation.models.UpdateSkillRequest":"Azure.AI.Projects.updateSkill.Request.anonymous","com.azure.ai.projects.models.AIProjectIndex":"Azure.AI.Projects.Index","com.azure.ai.projects.models.AgentClusterInsightRequest":"Azure.AI.Projects.AgentClusterInsightRequest","com.azure.ai.projects.models.AgentClusterInsightResult":"Azure.AI.Projects.AgentClusterInsightResult","com.azure.ai.projects.models.AgentDataGenerationJobSource":"Azure.AI.Projects.AgentDataGenerationJobSource","com.azure.ai.projects.models.AgentEvaluatorGenerationJobSource":"Azure.AI.Projects.AgentEvaluatorGenerationJobSource","com.azure.ai.projects.models.AgentInsight":"Azure.AI.Projects.AgentInsight","com.azure.ai.projects.models.AgentInsightDetails":"Azure.AI.Projects.AgentInsightDetails","com.azure.ai.projects.models.AgentInsightEstimatedCost":"Azure.AI.Projects.AgentInsightEstimatedCost","com.azure.ai.projects.models.AgentInsightHighlightedTrace":"Azure.AI.Projects.AgentInsightHighlightedTrace","com.azure.ai.projects.models.AgentInsightLinkedTrace":"Azure.AI.Projects.AgentInsightLinkedTrace","com.azure.ai.projects.models.AgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitor","com.azure.ai.projects.models.AgentInsightMonitorCreate":"Azure.AI.Projects.AgentInsightMonitorCreate","com.azure.ai.projects.models.AgentInsightMonitorListItem":"Azure.AI.Projects.AgentInsightMonitorListItem","com.azure.ai.projects.models.AgentInsightMonitorUpdate":"Azure.AI.Projects.AgentInsightMonitorUpdate","com.azure.ai.projects.models.AgentInsightOverviewSource":"Azure.AI.Projects.AgentInsightOverviewSource","com.azure.ai.projects.models.AgentInsightPromptSurface":"Azure.AI.Projects.AgentInsightPromptSurface","com.azure.ai.projects.models.AgentInsightProposedFix":"Azure.AI.Projects.AgentInsightProposedFix","com.azure.ai.projects.models.AgentInsightProposedFixChange":"Azure.AI.Projects.AgentInsightProposedFixChange","com.azure.ai.projects.models.AgentInsightProposedFixKind":"Azure.AI.Projects.AgentInsightProposedFixKind","com.azure.ai.projects.models.AgentInsightRecommendedAction":"Azure.AI.Projects.AgentInsightRecommendedAction","com.azure.ai.projects.models.AgentInsightRun":"Azure.AI.Projects.AgentInsightRun","com.azure.ai.projects.models.AgentInsightRunCreate":"Azure.AI.Projects.AgentInsightRunCreate","com.azure.ai.projects.models.AgentInsightRunResult":"Azure.AI.Projects.AgentInsightRunResult","com.azure.ai.projects.models.AgentInsightRunTrigger":"Azure.AI.Projects.AgentInsightRunTrigger","com.azure.ai.projects.models.AgentInsightSeverity":"Azure.AI.Projects.AgentInsightSeverity","com.azure.ai.projects.models.AgentInsightStatus":"Azure.AI.Projects.AgentInsightStatus","com.azure.ai.projects.models.AgentInsightSuspension":"Azure.AI.Projects.AgentInsightSuspension","com.azure.ai.projects.models.AgentInsightTokenUsage":"Azure.AI.Projects.AgentInsightTokenUsage","com.azure.ai.projects.models.AgentInsightUpdate":"Azure.AI.Projects.AgentInsightUpdate","com.azure.ai.projects.models.AgentInsightsOverview":"Azure.AI.Projects.AgentInsightsOverview","com.azure.ai.projects.models.AgentInsightsOverviewOverride":"Azure.AI.Projects.AgentInsightsOverviewOverride","com.azure.ai.projects.models.AgentTaxonomyInput":"Azure.AI.Projects.AgentTaxonomyInput","com.azure.ai.projects.models.AgenticIdentityPreviewCredential":"Azure.AI.Projects.AgenticIdentityPreviewCredentials","com.azure.ai.projects.models.ApiError":"OpenAI.Error","com.azure.ai.projects.models.ApiKeyCredential":"Azure.AI.Projects.ApiKeyCredentials","com.azure.ai.projects.models.ArtifactProfile":"Azure.AI.Projects.ArtifactProfile","com.azure.ai.projects.models.AttackStrategy":"Azure.AI.Projects.AttackStrategy","com.azure.ai.projects.models.AzureAIAgentTarget":"Azure.AI.Projects.AzureAIAgentTarget","com.azure.ai.projects.models.AzureAIModelTarget":"Azure.AI.Projects.AzureAIModelTarget","com.azure.ai.projects.models.AzureAISearchIndex":"Azure.AI.Projects.AzureAISearchIndex","com.azure.ai.projects.models.AzureOpenAIModelConfiguration":"Azure.AI.Projects.AzureOpenAIModelConfiguration","com.azure.ai.projects.models.BaseCredential":"Azure.AI.Projects.BaseCredentials","com.azure.ai.projects.models.BlobReference":"Azure.AI.Projects.BlobReference","com.azure.ai.projects.models.BlobReferenceSasCredential":"Azure.AI.Projects.SasCredential","com.azure.ai.projects.models.ChartCoordinate":"Azure.AI.Projects.ChartCoordinate","com.azure.ai.projects.models.ClusterInsightResult":"Azure.AI.Projects.ClusterInsightResult","com.azure.ai.projects.models.ClusterTokenUsage":"Azure.AI.Projects.ClusterTokenUsage","com.azure.ai.projects.models.CodeBasedEvaluatorDefinition":"Azure.AI.Projects.CodeBasedEvaluatorDefinition","com.azure.ai.projects.models.Connection":"Azure.AI.Projects.Connection","com.azure.ai.projects.models.ConnectionType":"Azure.AI.Projects.ConnectionType","com.azure.ai.projects.models.ContinuousEvaluationRuleAction":"Azure.AI.Projects.ContinuousEvaluationRuleAction","com.azure.ai.projects.models.CosmosDBIndex":"Azure.AI.Projects.CosmosDBIndex","com.azure.ai.projects.models.CreateAsyncResponse":"Azure.AI.Projects.createAsync.Response.anonymous","com.azure.ai.projects.models.CreateSkillVersionFromFilesBody":"Azure.AI.Projects.CreateSkillVersionFromFilesBody","com.azure.ai.projects.models.CredentialType":"Azure.AI.Projects.CredentialType","com.azure.ai.projects.models.CronTrigger":"Azure.AI.Projects.CronTrigger","com.azure.ai.projects.models.CustomCredential":"Azure.AI.Projects.CustomCredential","com.azure.ai.projects.models.CustomRoutineTrigger":"Azure.AI.Projects.CustomRoutineTrigger","com.azure.ai.projects.models.DailyRecurrenceSchedule":"Azure.AI.Projects.DailyRecurrenceSchedule","com.azure.ai.projects.models.DataGenerationJob":"Azure.AI.Projects.DataGenerationJob","com.azure.ai.projects.models.DataGenerationJobInputs":"Azure.AI.Projects.DataGenerationJobInputs","com.azure.ai.projects.models.DataGenerationJobOptions":"Azure.AI.Projects.DataGenerationJobOptions","com.azure.ai.projects.models.DataGenerationJobOutput":"Azure.AI.Projects.DataGenerationJobOutput","com.azure.ai.projects.models.DataGenerationJobOutputOptions":"Azure.AI.Projects.DataGenerationJobOutputOptions","com.azure.ai.projects.models.DataGenerationJobOutputType":"Azure.AI.Projects.DataGenerationJobOutputType","com.azure.ai.projects.models.DataGenerationJobOutputWriteMode":"Azure.AI.Projects.DataGenerationJobOutputWriteMode","com.azure.ai.projects.models.DataGenerationJobResult":"Azure.AI.Projects.DataGenerationJobResult","com.azure.ai.projects.models.DataGenerationJobScenario":"Azure.AI.Projects.DataGenerationJobScenario","com.azure.ai.projects.models.DataGenerationJobSource":"Azure.AI.Projects.DataGenerationJobSource","com.azure.ai.projects.models.DataGenerationJobSourceType":"Azure.AI.Projects.DataGenerationJobSourceType","com.azure.ai.projects.models.DataGenerationJobType":"Azure.AI.Projects.DataGenerationJobType","com.azure.ai.projects.models.DataGenerationModelOptions":"Azure.AI.Projects.DataGenerationModelOptions","com.azure.ai.projects.models.DataGenerationTokenUsage":"Azure.AI.Projects.DataGenerationTokenUsage","com.azure.ai.projects.models.DatasetCredential":"Azure.AI.Projects.AssetCredentialResponse","com.azure.ai.projects.models.DatasetDataGenerationJobOutput":"Azure.AI.Projects.DatasetDataGenerationJobOutput","com.azure.ai.projects.models.DatasetEvaluatorGenerationJobSource":"Azure.AI.Projects.DatasetEvaluatorGenerationJobSource","com.azure.ai.projects.models.DatasetReference":"Azure.AI.Projects.DatasetReference","com.azure.ai.projects.models.DatasetType":"Azure.AI.Projects.DatasetType","com.azure.ai.projects.models.DatasetVersion":"Azure.AI.Projects.DatasetVersion","com.azure.ai.projects.models.Deployment":"Azure.AI.Projects.Deployment","com.azure.ai.projects.models.DeploymentType":"Azure.AI.Projects.DeploymentType","com.azure.ai.projects.models.Dimension":"Azure.AI.Projects.Dimension","com.azure.ai.projects.models.DispatchRoutineResult":"Azure.AI.Projects.DispatchRoutineResponse","com.azure.ai.projects.models.EmbeddingConfiguration":"Azure.AI.Projects.EmbeddingConfiguration","com.azure.ai.projects.models.EndpointBasedEvaluatorDefinition":"Azure.AI.Projects.EndpointBasedEvaluatorDefinition","com.azure.ai.projects.models.EntraIdCredential":"Azure.AI.Projects.EntraIDCredentials","com.azure.ai.projects.models.EvaluationComparisonInsightRequest":"Azure.AI.Projects.EvaluationComparisonInsightRequest","com.azure.ai.projects.models.EvaluationComparisonInsightResult":"Azure.AI.Projects.EvaluationComparisonInsightResult","com.azure.ai.projects.models.EvaluationLevel":"Azure.AI.Projects.EvaluationLevel","com.azure.ai.projects.models.EvaluationResult":"Azure.AI.Projects.EvalResult","com.azure.ai.projects.models.EvaluationResultSample":"Azure.AI.Projects.EvaluationResultSample","com.azure.ai.projects.models.EvaluationRule":"Azure.AI.Projects.EvaluationRule","com.azure.ai.projects.models.EvaluationRuleAction":"Azure.AI.Projects.EvaluationRuleAction","com.azure.ai.projects.models.EvaluationRuleActionType":"Azure.AI.Projects.EvaluationRuleActionType","com.azure.ai.projects.models.EvaluationRuleEventType":"Azure.AI.Projects.EvaluationRuleEventType","com.azure.ai.projects.models.EvaluationRuleFilter":"Azure.AI.Projects.EvaluationRuleFilter","com.azure.ai.projects.models.EvaluationRunClusterInsightRequest":"Azure.AI.Projects.EvaluationRunClusterInsightRequest","com.azure.ai.projects.models.EvaluationRunClusterInsightResult":"Azure.AI.Projects.EvaluationRunClusterInsightResult","com.azure.ai.projects.models.EvaluationRunResultCompareItem":"Azure.AI.Projects.EvalRunResultCompareItem","com.azure.ai.projects.models.EvaluationRunResultComparison":"Azure.AI.Projects.EvalRunResultComparison","com.azure.ai.projects.models.EvaluationRunResultSummary":"Azure.AI.Projects.EvalRunResultSummary","com.azure.ai.projects.models.EvaluationScheduleTask":"Azure.AI.Projects.EvaluationScheduleTask","com.azure.ai.projects.models.EvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomy","com.azure.ai.projects.models.EvaluationTaxonomyInput":"Azure.AI.Projects.EvaluationTaxonomyInput","com.azure.ai.projects.models.EvaluationTaxonomyInputType":"Azure.AI.Projects.EvaluationTaxonomyInputType","com.azure.ai.projects.models.EvaluatorCategory":"Azure.AI.Projects.EvaluatorCategory","com.azure.ai.projects.models.EvaluatorCredentialInput":"Azure.AI.Projects.EvaluatorCredentialRequest","com.azure.ai.projects.models.EvaluatorDefinition":"Azure.AI.Projects.EvaluatorDefinition","com.azure.ai.projects.models.EvaluatorDefinitionType":"Azure.AI.Projects.EvaluatorDefinitionType","com.azure.ai.projects.models.EvaluatorGenerationArtifacts":"Azure.AI.Projects.EvaluatorGenerationArtifacts","com.azure.ai.projects.models.EvaluatorGenerationInputs":"Azure.AI.Projects.EvaluatorGenerationInputs","com.azure.ai.projects.models.EvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJob","com.azure.ai.projects.models.EvaluatorGenerationJobSource":"Azure.AI.Projects.EvaluatorGenerationJobSource","com.azure.ai.projects.models.EvaluatorGenerationJobSourceType":"Azure.AI.Projects.EvaluatorGenerationJobSourceType","com.azure.ai.projects.models.EvaluatorGenerationTokenUsage":"Azure.AI.Projects.EvaluatorGenerationTokenUsage","com.azure.ai.projects.models.EvaluatorMetric":"Azure.AI.Projects.EvaluatorMetric","com.azure.ai.projects.models.EvaluatorMetricDirection":"Azure.AI.Projects.EvaluatorMetricDirection","com.azure.ai.projects.models.EvaluatorMetricType":"Azure.AI.Projects.EvaluatorMetricType","com.azure.ai.projects.models.EvaluatorType":"Azure.AI.Projects.EvaluatorType","com.azure.ai.projects.models.EvaluatorVersion":"Azure.AI.Projects.EvaluatorVersion","com.azure.ai.projects.models.FieldMapping":"Azure.AI.Projects.FieldMapping","com.azure.ai.projects.models.FileDataGenerationJobOutput":"Azure.AI.Projects.FileDataGenerationJobOutput","com.azure.ai.projects.models.FileDataGenerationJobSource":"Azure.AI.Projects.FileDataGenerationJobSource","com.azure.ai.projects.models.FileDatasetVersion":"Azure.AI.Projects.FileDatasetVersion","com.azure.ai.projects.models.FolderDatasetVersion":"Azure.AI.Projects.FolderDatasetVersion","com.azure.ai.projects.models.FoundryEvaluationTarget":"Azure.AI.Projects.FoundryEvaluationTarget","com.azure.ai.projects.models.FoundryModelArtifactProfileCategory":"Azure.AI.Projects.FoundryModelArtifactProfileCategory","com.azure.ai.projects.models.FoundryModelArtifactProfileSignal":"Azure.AI.Projects.FoundryModelArtifactProfileSignal","com.azure.ai.projects.models.FoundryModelSourceType":"Azure.AI.Projects.FoundryModelSourceType","com.azure.ai.projects.models.FoundryModelWarning":"Azure.AI.Projects.FoundryModelWarning","com.azure.ai.projects.models.FoundryModelWarningCode":"Azure.AI.Projects.FoundryModelWarningCode","com.azure.ai.projects.models.FoundryModelWeightType":"Azure.AI.Projects.FoundryModelWeightType","com.azure.ai.projects.models.GenerationWarningType":"Azure.AI.Projects.GenerationWarningType","com.azure.ai.projects.models.GitHubIssueEvent":"Azure.AI.Projects.GitHubIssueEvent","com.azure.ai.projects.models.GitHubIssueRoutineTrigger":"Azure.AI.Projects.GitHubIssueRoutineTrigger","com.azure.ai.projects.models.GraderAzureAIEvaluator":"Azure.AI.Projects.GraderAzureAIEvaluator","com.azure.ai.projects.models.HourlyRecurrenceSchedule":"Azure.AI.Projects.HourlyRecurrenceSchedule","com.azure.ai.projects.models.HumanEvaluationPreviewRuleAction":"Azure.AI.Projects.HumanEvaluationPreviewRuleAction","com.azure.ai.projects.models.IndexType":"Azure.AI.Projects.IndexType","com.azure.ai.projects.models.Insight":"Azure.AI.Projects.Insight","com.azure.ai.projects.models.InsightCluster":"Azure.AI.Projects.InsightCluster","com.azure.ai.projects.models.InsightModelConfiguration":"Azure.AI.Projects.InsightModelConfiguration","com.azure.ai.projects.models.InsightRequest":"Azure.AI.Projects.InsightRequest","com.azure.ai.projects.models.InsightResult":"Azure.AI.Projects.InsightResult","com.azure.ai.projects.models.InsightSample":"Azure.AI.Projects.InsightSample","com.azure.ai.projects.models.InsightScheduleTask":"Azure.AI.Projects.InsightScheduleTask","com.azure.ai.projects.models.InsightSummary":"Azure.AI.Projects.InsightSummary","com.azure.ai.projects.models.InsightType":"Azure.AI.Projects.InsightType","com.azure.ai.projects.models.InsightsMetadata":"Azure.AI.Projects.InsightsMetadata","com.azure.ai.projects.models.InvokeAgentInvocationsApiDispatchPayload":"Azure.AI.Projects.InvokeAgentInvocationsApiDispatchPayload","com.azure.ai.projects.models.InvokeAgentInvocationsApiRoutineAction":"Azure.AI.Projects.InvokeAgentInvocationsApiRoutineAction","com.azure.ai.projects.models.InvokeAgentResponsesApiDispatchPayload":"Azure.AI.Projects.InvokeAgentResponsesApiDispatchPayload","com.azure.ai.projects.models.InvokeAgentResponsesApiRoutineAction":"Azure.AI.Projects.InvokeAgentResponsesApiRoutineAction","com.azure.ai.projects.models.JobStatus":"Azure.AI.Projects.JobStatus","com.azure.ai.projects.models.ListVersionsRequestType":"Azure.AI.Projects.listVersions.RequestType.anonymous","com.azure.ai.projects.models.LoraConfig":"Azure.AI.Projects.LoraConfig","com.azure.ai.projects.models.ManagedAzureAISearchIndex":"Azure.AI.Projects.ManagedAzureAISearchIndex","com.azure.ai.projects.models.ModelCredentialInput":"Azure.AI.Projects.ModelCredentialRequest","com.azure.ai.projects.models.ModelDeployment":"Azure.AI.Projects.ModelDeployment","com.azure.ai.projects.models.ModelDeploymentSku":"Azure.AI.Projects.Sku","com.azure.ai.projects.models.ModelPendingUploadInput":"Azure.AI.Projects.ModelPendingUploadRequest","com.azure.ai.projects.models.ModelPendingUploadResult":"Azure.AI.Projects.ModelPendingUploadResponse","com.azure.ai.projects.models.ModelSamplingParams":"Azure.AI.Projects.ModelSamplingParams","com.azure.ai.projects.models.ModelSourceData":"Azure.AI.Projects.ModelSourceData","com.azure.ai.projects.models.ModelVersion":"Azure.AI.Projects.ModelVersion","com.azure.ai.projects.models.MonthlyRecurrenceSchedule":"Azure.AI.Projects.MonthlyRecurrenceSchedule","com.azure.ai.projects.models.NoAuthenticationCredential":"Azure.AI.Projects.NoAuthenticationCredentials","com.azure.ai.projects.models.OneTimeTrigger":"Azure.AI.Projects.OneTimeTrigger","com.azure.ai.projects.models.OperationStatus":"Azure.Core.Foundations.OperationState","com.azure.ai.projects.models.PendingUploadRequest":"Azure.AI.Projects.PendingUploadRequest","com.azure.ai.projects.models.PendingUploadResponse":"Azure.AI.Projects.PendingUploadResponse","com.azure.ai.projects.models.PendingUploadType":"Azure.AI.Projects.PendingUploadType","com.azure.ai.projects.models.PromptBasedEvaluatorDefinition":"Azure.AI.Projects.PromptBasedEvaluatorDefinition","com.azure.ai.projects.models.PromptDataGenerationJobSource":"Azure.AI.Projects.PromptDataGenerationJobSource","com.azure.ai.projects.models.PromptEvaluatorGenerationJobSource":"Azure.AI.Projects.PromptEvaluatorGenerationJobSource","com.azure.ai.projects.models.RecurrenceSchedule":"Azure.AI.Projects.RecurrenceSchedule","com.azure.ai.projects.models.RecurrenceTrigger":"Azure.AI.Projects.RecurrenceTrigger","com.azure.ai.projects.models.RecurrenceType":"Azure.AI.Projects.RecurrenceType","com.azure.ai.projects.models.RedTeam":"Azure.AI.Projects.RedTeam","com.azure.ai.projects.models.RiskCategory":"Azure.AI.Projects.RiskCategory","com.azure.ai.projects.models.Routine":"Azure.AI.Projects.Routine","com.azure.ai.projects.models.RoutineAction":"Azure.AI.Projects.RoutineAction","com.azure.ai.projects.models.RoutineActionType":"Azure.AI.Projects.RoutineActionType","com.azure.ai.projects.models.RoutineAttemptSource":"Azure.AI.Projects.RoutineAttemptSource","com.azure.ai.projects.models.RoutineAuthorization":"Azure.AI.Projects.RoutineAuthorization","com.azure.ai.projects.models.RoutineDispatchIdentity":"Azure.AI.Projects.RoutineDispatchIdentity","com.azure.ai.projects.models.RoutineDispatchPayload":"Azure.AI.Projects.RoutineDispatchPayload","com.azure.ai.projects.models.RoutineDispatchPayloadType":"Azure.AI.Projects.RoutineDispatchPayloadType","com.azure.ai.projects.models.RoutineRun":"Azure.AI.Projects.RoutineRun","com.azure.ai.projects.models.RoutineRunPhase":"Azure.AI.Projects.RoutineRunPhase","com.azure.ai.projects.models.RoutineTrigger":"Azure.AI.Projects.RoutineTrigger","com.azure.ai.projects.models.RoutineTriggerType":"Azure.AI.Projects.RoutineTriggerType","com.azure.ai.projects.models.RubricBasedEvaluatorDefinition":"Azure.AI.Projects.RubricBasedEvaluatorDefinition","com.azure.ai.projects.models.RubricGenerationInputQualityWarning":"Azure.AI.Projects.RubricGenerationInputQualityWarning","com.azure.ai.projects.models.RubricGenerationInputQualityWarningCode":"Azure.AI.Projects.RubricGenerationInputQualityWarningCode","com.azure.ai.projects.models.RubricGenerationInputQualityWarningSeverity":"Azure.AI.Projects.RubricGenerationInputQualityWarningSeverity","com.azure.ai.projects.models.RubricGenerationInputQualityWarningSource":"Azure.AI.Projects.RubricGenerationInputQualityWarningSource","com.azure.ai.projects.models.SampleType":"Azure.AI.Projects.SampleType","com.azure.ai.projects.models.SasCredential":"Azure.AI.Projects.SASCredentials","com.azure.ai.projects.models.Schedule":"Azure.AI.Projects.Schedule","com.azure.ai.projects.models.ScheduleProvisioningStatus":"Azure.AI.Projects.ScheduleProvisioningStatus","com.azure.ai.projects.models.ScheduleRoutineTrigger":"Azure.AI.Projects.ScheduleRoutineTrigger","com.azure.ai.projects.models.ScheduleRun":"Azure.AI.Projects.ScheduleRun","com.azure.ai.projects.models.ScheduleTask":"Azure.AI.Projects.ScheduleTask","com.azure.ai.projects.models.ScheduleTaskType":"Azure.AI.Projects.ScheduleTaskType","com.azure.ai.projects.models.SimpleQnADataGenerationJobOptions":"Azure.AI.Projects.SimpleQnADataGenerationJobOptions","com.azure.ai.projects.models.SimpleQnAFineTuningQuestionType":"Azure.AI.Projects.SimpleQnAFineTuningQuestionType","com.azure.ai.projects.models.SimulationSeedDataGenerationJobOptions":"Azure.AI.Projects.SimulationSeedDataGenerationJobOptions","com.azure.ai.projects.models.SkillDetails":"Azure.AI.Projects.Skill","com.azure.ai.projects.models.SkillFileDetails":"TypeSpec.Http.File","com.azure.ai.projects.models.SkillInlineContent":"Azure.AI.Projects.SkillInlineContent","com.azure.ai.projects.models.SkillVersion":"Azure.AI.Projects.SkillVersion","com.azure.ai.projects.models.TargetConfig":"Azure.AI.Projects.RedTeamTargetConfig","com.azure.ai.projects.models.TaxonomyCategory":"Azure.AI.Projects.TaxonomyCategory","com.azure.ai.projects.models.TaxonomySubCategory":"Azure.AI.Projects.TaxonomySubCategory","com.azure.ai.projects.models.TestingCriterionAzureAIEvaluator":"Azure.AI.Projects.TestingCriterionAzureAIEvaluator","com.azure.ai.projects.models.TimerRoutineTrigger":"Azure.AI.Projects.TimerRoutineTrigger","com.azure.ai.projects.models.ToolDescription":"Azure.AI.Projects.ToolDescription","com.azure.ai.projects.models.ToolUseFineTuningDataGenerationJobOptions":"Azure.AI.Projects.ToolUseFineTuningDataGenerationJobOptions","com.azure.ai.projects.models.TracesDataGenerationJobOptions":"Azure.AI.Projects.TracesDataGenerationJobOptions","com.azure.ai.projects.models.TracesDataGenerationJobSource":"Azure.AI.Projects.TracesDataGenerationJobSource","com.azure.ai.projects.models.TracesEvaluatorGenerationJobSource":"Azure.AI.Projects.TracesEvaluatorGenerationJobSource","com.azure.ai.projects.models.TreatmentEffectType":"Azure.AI.Projects.TreatmentEffectType","com.azure.ai.projects.models.Trigger":"Azure.AI.Projects.Trigger","com.azure.ai.projects.models.TriggerType":"Azure.AI.Projects.TriggerType","com.azure.ai.projects.models.UpdateModelVersionInput":"Azure.AI.Projects.UpdateModelVersionRequest","com.azure.ai.projects.models.WeeklyRecurrenceSchedule":"Azure.AI.Projects.WeeklyRecurrenceSchedule"},"generatedFiles":["src/main/java/com/azure/ai/projects/AIProjectClientBuilder.java","src/main/java/com/azure/ai/projects/AIProjectsServiceVersion.java","src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsClient.java","src/main/java/com/azure/ai/projects/BetaDatasetsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaDatasetsClient.java","src/main/java/com/azure/ai/projects/BetaEvaluationTaxonomiesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaEvaluationTaxonomiesClient.java","src/main/java/com/azure/ai/projects/BetaEvaluatorsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaEvaluatorsClient.java","src/main/java/com/azure/ai/projects/BetaInsightsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaInsightsClient.java","src/main/java/com/azure/ai/projects/BetaModelsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaModelsClient.java","src/main/java/com/azure/ai/projects/BetaRedTeamsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaRedTeamsClient.java","src/main/java/com/azure/ai/projects/BetaRoutinesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaRoutinesClient.java","src/main/java/com/azure/ai/projects/BetaSchedulesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaSchedulesClient.java","src/main/java/com/azure/ai/projects/BetaSkillsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaSkillsClient.java","src/main/java/com/azure/ai/projects/ConnectionsAsyncClient.java","src/main/java/com/azure/ai/projects/ConnectionsClient.java","src/main/java/com/azure/ai/projects/DatasetsAsyncClient.java","src/main/java/com/azure/ai/projects/DatasetsClient.java","src/main/java/com/azure/ai/projects/DeploymentsAsyncClient.java","src/main/java/com/azure/ai/projects/DeploymentsClient.java","src/main/java/com/azure/ai/projects/EvaluationRulesAsyncClient.java","src/main/java/com/azure/ai/projects/EvaluationRulesClient.java","src/main/java/com/azure/ai/projects/IndexesAsyncClient.java","src/main/java/com/azure/ai/projects/IndexesClient.java","src/main/java/com/azure/ai/projects/implementation/AIProjectClientImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaAgentInsightMonitorsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaDatasetsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaEvaluationTaxonomiesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaEvaluatorsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaInsightsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaModelsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaRedTeamsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaRoutinesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaSchedulesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaSkillsImpl.java","src/main/java/com/azure/ai/projects/implementation/ConnectionsImpl.java","src/main/java/com/azure/ai/projects/implementation/DatasetsImpl.java","src/main/java/com/azure/ai/projects/implementation/DeploymentsImpl.java","src/main/java/com/azure/ai/projects/implementation/EvaluationRulesImpl.java","src/main/java/com/azure/ai/projects/implementation/IndexesImpl.java","src/main/java/com/azure/ai/projects/implementation/JsonMergePatchHelper.java","src/main/java/com/azure/ai/projects/implementation/MultipartFormDataHelper.java","src/main/java/com/azure/ai/projects/implementation/OperationLocationPollingStrategy.java","src/main/java/com/azure/ai/projects/implementation/PollingUtils.java","src/main/java/com/azure/ai/projects/implementation/SyncOperationLocationPollingStrategy.java","src/main/java/com/azure/ai/projects/implementation/models/CreateOrUpdateRoutineRequest.java","src/main/java/com/azure/ai/projects/implementation/models/CreateSkillVersionRequest.java","src/main/java/com/azure/ai/projects/implementation/models/DispatchRoutineAsyncRequest.java","src/main/java/com/azure/ai/projects/implementation/models/FoundryFeaturesOptInKeys.java","src/main/java/com/azure/ai/projects/implementation/models/UpdateSkillRequest.java","src/main/java/com/azure/ai/projects/implementation/models/package-info.java","src/main/java/com/azure/ai/projects/implementation/package-info.java","src/main/java/com/azure/ai/projects/models/AIProjectIndex.java","src/main/java/com/azure/ai/projects/models/AgentClusterInsightRequest.java","src/main/java/com/azure/ai/projects/models/AgentClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/AgentDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/AgentEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/AgentInsight.java","src/main/java/com/azure/ai/projects/models/AgentInsightDetails.java","src/main/java/com/azure/ai/projects/models/AgentInsightEstimatedCost.java","src/main/java/com/azure/ai/projects/models/AgentInsightHighlightedTrace.java","src/main/java/com/azure/ai/projects/models/AgentInsightLinkedTrace.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitor.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorCreate.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorListItem.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorUpdate.java","src/main/java/com/azure/ai/projects/models/AgentInsightOverviewSource.java","src/main/java/com/azure/ai/projects/models/AgentInsightPromptSurface.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFix.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFixChange.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFixKind.java","src/main/java/com/azure/ai/projects/models/AgentInsightRecommendedAction.java","src/main/java/com/azure/ai/projects/models/AgentInsightRun.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunCreate.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunResult.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunTrigger.java","src/main/java/com/azure/ai/projects/models/AgentInsightSeverity.java","src/main/java/com/azure/ai/projects/models/AgentInsightStatus.java","src/main/java/com/azure/ai/projects/models/AgentInsightSuspension.java","src/main/java/com/azure/ai/projects/models/AgentInsightTokenUsage.java","src/main/java/com/azure/ai/projects/models/AgentInsightUpdate.java","src/main/java/com/azure/ai/projects/models/AgentInsightsOverview.java","src/main/java/com/azure/ai/projects/models/AgentInsightsOverviewOverride.java","src/main/java/com/azure/ai/projects/models/AgentTaxonomyInput.java","src/main/java/com/azure/ai/projects/models/AgenticIdentityPreviewCredential.java","src/main/java/com/azure/ai/projects/models/ApiError.java","src/main/java/com/azure/ai/projects/models/ApiKeyCredential.java","src/main/java/com/azure/ai/projects/models/ArtifactProfile.java","src/main/java/com/azure/ai/projects/models/AttackStrategy.java","src/main/java/com/azure/ai/projects/models/AzureAIAgentTarget.java","src/main/java/com/azure/ai/projects/models/AzureAIModelTarget.java","src/main/java/com/azure/ai/projects/models/AzureAISearchIndex.java","src/main/java/com/azure/ai/projects/models/AzureOpenAIModelConfiguration.java","src/main/java/com/azure/ai/projects/models/BaseCredential.java","src/main/java/com/azure/ai/projects/models/BlobReference.java","src/main/java/com/azure/ai/projects/models/BlobReferenceSasCredential.java","src/main/java/com/azure/ai/projects/models/ChartCoordinate.java","src/main/java/com/azure/ai/projects/models/ClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/ClusterTokenUsage.java","src/main/java/com/azure/ai/projects/models/CodeBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/Connection.java","src/main/java/com/azure/ai/projects/models/ConnectionType.java","src/main/java/com/azure/ai/projects/models/ContinuousEvaluationRuleAction.java","src/main/java/com/azure/ai/projects/models/CosmosDBIndex.java","src/main/java/com/azure/ai/projects/models/CreateAsyncResponse.java","src/main/java/com/azure/ai/projects/models/CreateSkillVersionFromFilesBody.java","src/main/java/com/azure/ai/projects/models/CredentialType.java","src/main/java/com/azure/ai/projects/models/CronTrigger.java","src/main/java/com/azure/ai/projects/models/CustomCredential.java","src/main/java/com/azure/ai/projects/models/CustomRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/DailyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/DataGenerationJob.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobInputs.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputType.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputWriteMode.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobResult.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobScenario.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobSourceType.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobType.java","src/main/java/com/azure/ai/projects/models/DataGenerationModelOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationTokenUsage.java","src/main/java/com/azure/ai/projects/models/DatasetCredential.java","src/main/java/com/azure/ai/projects/models/DatasetDataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/DatasetEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/DatasetReference.java","src/main/java/com/azure/ai/projects/models/DatasetType.java","src/main/java/com/azure/ai/projects/models/DatasetVersion.java","src/main/java/com/azure/ai/projects/models/Deployment.java","src/main/java/com/azure/ai/projects/models/DeploymentType.java","src/main/java/com/azure/ai/projects/models/Dimension.java","src/main/java/com/azure/ai/projects/models/DispatchRoutineResult.java","src/main/java/com/azure/ai/projects/models/EmbeddingConfiguration.java","src/main/java/com/azure/ai/projects/models/EndpointBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/EntraIdCredential.java","src/main/java/com/azure/ai/projects/models/EvaluationComparisonInsightRequest.java","src/main/java/com/azure/ai/projects/models/EvaluationComparisonInsightResult.java","src/main/java/com/azure/ai/projects/models/EvaluationLevel.java","src/main/java/com/azure/ai/projects/models/EvaluationResult.java","src/main/java/com/azure/ai/projects/models/EvaluationResultSample.java","src/main/java/com/azure/ai/projects/models/EvaluationRule.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleAction.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleActionType.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleEventType.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleFilter.java","src/main/java/com/azure/ai/projects/models/EvaluationRunClusterInsightRequest.java","src/main/java/com/azure/ai/projects/models/EvaluationRunClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultCompareItem.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultComparison.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultSummary.java","src/main/java/com/azure/ai/projects/models/EvaluationScheduleTask.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomy.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomyInput.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomyInputType.java","src/main/java/com/azure/ai/projects/models/EvaluatorCategory.java","src/main/java/com/azure/ai/projects/models/EvaluatorCredentialInput.java","src/main/java/com/azure/ai/projects/models/EvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/EvaluatorDefinitionType.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationArtifacts.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationInputs.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJob.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJobSourceType.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationTokenUsage.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetric.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetricDirection.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetricType.java","src/main/java/com/azure/ai/projects/models/EvaluatorType.java","src/main/java/com/azure/ai/projects/models/EvaluatorVersion.java","src/main/java/com/azure/ai/projects/models/FieldMapping.java","src/main/java/com/azure/ai/projects/models/FileDataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/FileDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/FileDatasetVersion.java","src/main/java/com/azure/ai/projects/models/FolderDatasetVersion.java","src/main/java/com/azure/ai/projects/models/FoundryEvaluationTarget.java","src/main/java/com/azure/ai/projects/models/FoundryModelArtifactProfileCategory.java","src/main/java/com/azure/ai/projects/models/FoundryModelArtifactProfileSignal.java","src/main/java/com/azure/ai/projects/models/FoundryModelSourceType.java","src/main/java/com/azure/ai/projects/models/FoundryModelWarning.java","src/main/java/com/azure/ai/projects/models/FoundryModelWarningCode.java","src/main/java/com/azure/ai/projects/models/FoundryModelWeightType.java","src/main/java/com/azure/ai/projects/models/GenerationWarningType.java","src/main/java/com/azure/ai/projects/models/GitHubIssueEvent.java","src/main/java/com/azure/ai/projects/models/GitHubIssueRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/GraderAzureAIEvaluator.java","src/main/java/com/azure/ai/projects/models/HourlyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/HumanEvaluationPreviewRuleAction.java","src/main/java/com/azure/ai/projects/models/IndexType.java","src/main/java/com/azure/ai/projects/models/Insight.java","src/main/java/com/azure/ai/projects/models/InsightCluster.java","src/main/java/com/azure/ai/projects/models/InsightModelConfiguration.java","src/main/java/com/azure/ai/projects/models/InsightRequest.java","src/main/java/com/azure/ai/projects/models/InsightResult.java","src/main/java/com/azure/ai/projects/models/InsightSample.java","src/main/java/com/azure/ai/projects/models/InsightScheduleTask.java","src/main/java/com/azure/ai/projects/models/InsightSummary.java","src/main/java/com/azure/ai/projects/models/InsightType.java","src/main/java/com/azure/ai/projects/models/InsightsMetadata.java","src/main/java/com/azure/ai/projects/models/InvokeAgentInvocationsApiDispatchPayload.java","src/main/java/com/azure/ai/projects/models/InvokeAgentInvocationsApiRoutineAction.java","src/main/java/com/azure/ai/projects/models/InvokeAgentResponsesApiDispatchPayload.java","src/main/java/com/azure/ai/projects/models/InvokeAgentResponsesApiRoutineAction.java","src/main/java/com/azure/ai/projects/models/JobStatus.java","src/main/java/com/azure/ai/projects/models/ListVersionsRequestType.java","src/main/java/com/azure/ai/projects/models/LoraConfig.java","src/main/java/com/azure/ai/projects/models/ManagedAzureAISearchIndex.java","src/main/java/com/azure/ai/projects/models/ModelCredentialInput.java","src/main/java/com/azure/ai/projects/models/ModelDeployment.java","src/main/java/com/azure/ai/projects/models/ModelDeploymentSku.java","src/main/java/com/azure/ai/projects/models/ModelPendingUploadInput.java","src/main/java/com/azure/ai/projects/models/ModelPendingUploadResult.java","src/main/java/com/azure/ai/projects/models/ModelSamplingParams.java","src/main/java/com/azure/ai/projects/models/ModelSourceData.java","src/main/java/com/azure/ai/projects/models/ModelVersion.java","src/main/java/com/azure/ai/projects/models/MonthlyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/NoAuthenticationCredential.java","src/main/java/com/azure/ai/projects/models/OneTimeTrigger.java","src/main/java/com/azure/ai/projects/models/OperationStatus.java","src/main/java/com/azure/ai/projects/models/PendingUploadRequest.java","src/main/java/com/azure/ai/projects/models/PendingUploadResponse.java","src/main/java/com/azure/ai/projects/models/PendingUploadType.java","src/main/java/com/azure/ai/projects/models/PromptBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/PromptDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/PromptEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/RecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/RecurrenceTrigger.java","src/main/java/com/azure/ai/projects/models/RecurrenceType.java","src/main/java/com/azure/ai/projects/models/RedTeam.java","src/main/java/com/azure/ai/projects/models/RiskCategory.java","src/main/java/com/azure/ai/projects/models/Routine.java","src/main/java/com/azure/ai/projects/models/RoutineAction.java","src/main/java/com/azure/ai/projects/models/RoutineActionType.java","src/main/java/com/azure/ai/projects/models/RoutineAttemptSource.java","src/main/java/com/azure/ai/projects/models/RoutineAuthorization.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchIdentity.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchPayload.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchPayloadType.java","src/main/java/com/azure/ai/projects/models/RoutineRun.java","src/main/java/com/azure/ai/projects/models/RoutineRunPhase.java","src/main/java/com/azure/ai/projects/models/RoutineTrigger.java","src/main/java/com/azure/ai/projects/models/RoutineTriggerType.java","src/main/java/com/azure/ai/projects/models/RubricBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarning.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningCode.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningSeverity.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningSource.java","src/main/java/com/azure/ai/projects/models/SampleType.java","src/main/java/com/azure/ai/projects/models/SasCredential.java","src/main/java/com/azure/ai/projects/models/Schedule.java","src/main/java/com/azure/ai/projects/models/ScheduleProvisioningStatus.java","src/main/java/com/azure/ai/projects/models/ScheduleRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/ScheduleRun.java","src/main/java/com/azure/ai/projects/models/ScheduleTask.java","src/main/java/com/azure/ai/projects/models/ScheduleTaskType.java","src/main/java/com/azure/ai/projects/models/SimpleQnADataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/SimpleQnAFineTuningQuestionType.java","src/main/java/com/azure/ai/projects/models/SimulationSeedDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/SkillDetails.java","src/main/java/com/azure/ai/projects/models/SkillFileDetails.java","src/main/java/com/azure/ai/projects/models/SkillInlineContent.java","src/main/java/com/azure/ai/projects/models/SkillVersion.java","src/main/java/com/azure/ai/projects/models/TargetConfig.java","src/main/java/com/azure/ai/projects/models/TaxonomyCategory.java","src/main/java/com/azure/ai/projects/models/TaxonomySubCategory.java","src/main/java/com/azure/ai/projects/models/TestingCriterionAzureAIEvaluator.java","src/main/java/com/azure/ai/projects/models/TimerRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/ToolDescription.java","src/main/java/com/azure/ai/projects/models/ToolUseFineTuningDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/TracesEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/TreatmentEffectType.java","src/main/java/com/azure/ai/projects/models/Trigger.java","src/main/java/com/azure/ai/projects/models/TriggerType.java","src/main/java/com/azure/ai/projects/models/UpdateModelVersionInput.java","src/main/java/com/azure/ai/projects/models/WeeklyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/package-info.java","src/main/java/com/azure/ai/projects/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file +{"flavor":"azure","apiVersions":{"Azure.AI.Projects":"v1"},"crossLanguagePackageId":"Azure.AI.Projects","crossLanguageVersion":"9d214da512fb","crossLanguageDefinitions":{"com.azure.ai.projects.AIProjectClientBuilder":"Azure.AI.Projects","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient":"Azure.AI.Projects.Beta.AgentInsightMonitors","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.beginCreateAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.beginCreateAgentInsightRunWithModel":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.cancelAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.cancelAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.createAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.createAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.deleteAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.deleteAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.getAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsightMonitors":"Azure.AI.Projects.AgentInsightMonitors.list","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsightRuns":"Azure.AI.Projects.AgentInsightMonitors.listRuns","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.listAgentInsights":"Azure.AI.Projects.AgentInsightMonitors.listInsights","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.resetAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.resetAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsAsyncClient.updateAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient":"Azure.AI.Projects.Beta.AgentInsightMonitors","com.azure.ai.projects.BetaAgentInsightMonitorsClient.beginCreateAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.beginCreateAgentInsightRunWithModel":"Azure.AI.Projects.AgentInsightMonitors.createRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.cancelAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.cancelAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.cancelRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.createAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsClient.createAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.create","com.azure.ai.projects.BetaAgentInsightMonitorsClient.deleteAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsClient.deleteAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.delete","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.get","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightRun":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightRunWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getRun","com.azure.ai.projects.BetaAgentInsightMonitorsClient.getAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.getInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsightMonitors":"Azure.AI.Projects.AgentInsightMonitors.list","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsightRuns":"Azure.AI.Projects.AgentInsightMonitors.listRuns","com.azure.ai.projects.BetaAgentInsightMonitorsClient.listAgentInsights":"Azure.AI.Projects.AgentInsightMonitors.listInsights","com.azure.ai.projects.BetaAgentInsightMonitorsClient.resetAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsClient.resetAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.reset","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsight":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightMonitorWithResponse":"Azure.AI.Projects.AgentInsightMonitors.update","com.azure.ai.projects.BetaAgentInsightMonitorsClient.updateAgentInsightWithResponse":"Azure.AI.Projects.AgentInsightMonitors.updateInsight","com.azure.ai.projects.BetaDatasetsAsyncClient":"Azure.AI.Projects.Beta.Datasets","com.azure.ai.projects.BetaDatasetsAsyncClient.beginCreateGenerationJob":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsAsyncClient.beginCreateGenerationJobWithModel":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsAsyncClient.cancelGenerationJob":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsAsyncClient.cancelGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsAsyncClient.deleteGenerationJob":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsAsyncClient.deleteGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsAsyncClient.getGenerationJob":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsAsyncClient.getGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsAsyncClient.listGenerationJobs":"Azure.AI.Projects.DataGenerationJobs.list","com.azure.ai.projects.BetaDatasetsClient":"Azure.AI.Projects.Beta.Datasets","com.azure.ai.projects.BetaDatasetsClient.beginCreateGenerationJob":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsClient.beginCreateGenerationJobWithModel":"Azure.AI.Projects.DataGenerationJobs.create","com.azure.ai.projects.BetaDatasetsClient.cancelGenerationJob":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsClient.cancelGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.cancel","com.azure.ai.projects.BetaDatasetsClient.deleteGenerationJob":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsClient.deleteGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.delete","com.azure.ai.projects.BetaDatasetsClient.getGenerationJob":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsClient.getGenerationJobWithResponse":"Azure.AI.Projects.DataGenerationJobs.get","com.azure.ai.projects.BetaDatasetsClient.listGenerationJobs":"Azure.AI.Projects.DataGenerationJobs.list","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient":"Azure.AI.Projects.Beta.EvaluationTaxonomies","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.createEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.createEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.deleteEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.deleteEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.getEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.getEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.listEvaluationTaxonomies":"Azure.AI.Projects.EvaluationTaxonomies.list","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.updateEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesAsyncClient.updateEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesClient":"Azure.AI.Projects.Beta.EvaluationTaxonomies","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.createEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.createEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.create","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.deleteEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.deleteEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.delete","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.getEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.getEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.get","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.listEvaluationTaxonomies":"Azure.AI.Projects.EvaluationTaxonomies.list","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.updateEvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluationTaxonomiesClient.updateEvaluationTaxonomyWithResponse":"Azure.AI.Projects.EvaluationTaxonomies.update","com.azure.ai.projects.BetaEvaluatorsAsyncClient":"Azure.AI.Projects.Beta.Evaluators","com.azure.ai.projects.BetaEvaluatorsAsyncClient.beginCreateEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsAsyncClient.beginCreateEvaluatorGenerationJobWithModel":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsAsyncClient.cancelEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsAsyncClient.cancelEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsAsyncClient.createEvaluatorVersion":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.createEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorVersion":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.deleteEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getCredentials":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getCredentialsWithResponse":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorVersion":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.getEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listEvaluatorGenerationJobs":"Azure.AI.Projects.EvaluatorGenerationJobs.list","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listEvaluatorVersions":"Azure.AI.Projects.Evaluators.listVersions","com.azure.ai.projects.BetaEvaluatorsAsyncClient.listLatestEvaluatorVersions":"Azure.AI.Projects.Evaluators.listLatestVersions","com.azure.ai.projects.BetaEvaluatorsAsyncClient.startPendingUpload":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsAsyncClient.startPendingUploadWithResponse":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsAsyncClient.updateEvaluatorVersion":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsAsyncClient.updateEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsClient":"Azure.AI.Projects.Beta.Evaluators","com.azure.ai.projects.BetaEvaluatorsClient.beginCreateEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsClient.beginCreateEvaluatorGenerationJobWithModel":"Azure.AI.Projects.EvaluatorGenerationJobs.create","com.azure.ai.projects.BetaEvaluatorsClient.cancelEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsClient.cancelEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.cancel","com.azure.ai.projects.BetaEvaluatorsClient.createEvaluatorVersion":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsClient.createEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.createVersion","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.delete","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorVersion":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsClient.deleteEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.deleteVersion","com.azure.ai.projects.BetaEvaluatorsClient.getCredentials":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsClient.getCredentialsWithResponse":"Azure.AI.Projects.Evaluators.getCredentials","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorGenerationJobWithResponse":"Azure.AI.Projects.EvaluatorGenerationJobs.get","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorVersion":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsClient.getEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.getVersion","com.azure.ai.projects.BetaEvaluatorsClient.listEvaluatorGenerationJobs":"Azure.AI.Projects.EvaluatorGenerationJobs.list","com.azure.ai.projects.BetaEvaluatorsClient.listEvaluatorVersions":"Azure.AI.Projects.Evaluators.listVersions","com.azure.ai.projects.BetaEvaluatorsClient.listLatestEvaluatorVersions":"Azure.AI.Projects.Evaluators.listLatestVersions","com.azure.ai.projects.BetaEvaluatorsClient.startPendingUpload":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsClient.startPendingUploadWithResponse":"Azure.AI.Projects.Evaluators.startPendingUpload","com.azure.ai.projects.BetaEvaluatorsClient.updateEvaluatorVersion":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaEvaluatorsClient.updateEvaluatorVersionWithResponse":"Azure.AI.Projects.Evaluators.updateVersion","com.azure.ai.projects.BetaInsightsAsyncClient":"Azure.AI.Projects.Beta.Insights","com.azure.ai.projects.BetaInsightsAsyncClient.generateInsight":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsAsyncClient.generateInsightWithResponse":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsAsyncClient.getInsight":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsAsyncClient.getInsightWithResponse":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsAsyncClient.listInsights":"Azure.AI.Projects.Insights.list","com.azure.ai.projects.BetaInsightsClient":"Azure.AI.Projects.Beta.Insights","com.azure.ai.projects.BetaInsightsClient.generateInsight":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsClient.generateInsightWithResponse":"Azure.AI.Projects.Insights.generate","com.azure.ai.projects.BetaInsightsClient.getInsight":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsClient.getInsightWithResponse":"Azure.AI.Projects.Insights.get","com.azure.ai.projects.BetaInsightsClient.listInsights":"Azure.AI.Projects.Insights.list","com.azure.ai.projects.BetaModelsAsyncClient":"Azure.AI.Projects.Beta.Models","com.azure.ai.projects.BetaModelsAsyncClient.createModelVersionAsyncWithResponse":"Azure.AI.Projects.Models.createAsync","com.azure.ai.projects.BetaModelsAsyncClient.deleteModelVersion":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsAsyncClient.deleteModelVersionWithResponse":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsAsyncClient.getModelCredentials":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsAsyncClient.getModelCredentialsWithResponse":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsAsyncClient.getModelVersion":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsAsyncClient.getModelVersionWithResponse":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsAsyncClient.listLatestModelVersions":"Azure.AI.Projects.Models.listLatest","com.azure.ai.projects.BetaModelsAsyncClient.listModelVersions":"Azure.AI.Projects.Models.listVersions","com.azure.ai.projects.BetaModelsAsyncClient.startModelPendingUpload":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsAsyncClient.startModelPendingUploadWithResponse":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsAsyncClient.updateModelVersion":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsAsyncClient.updateModelVersionWithResponse":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsClient":"Azure.AI.Projects.Beta.Models","com.azure.ai.projects.BetaModelsClient.createModelVersionAsyncWithResponse":"Azure.AI.Projects.Models.createAsync","com.azure.ai.projects.BetaModelsClient.deleteModelVersion":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsClient.deleteModelVersionWithResponse":"Azure.AI.Projects.Models.deleteVersion","com.azure.ai.projects.BetaModelsClient.getModelCredentials":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsClient.getModelCredentialsWithResponse":"Azure.AI.Projects.Models.getCredentials","com.azure.ai.projects.BetaModelsClient.getModelVersion":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsClient.getModelVersionWithResponse":"Azure.AI.Projects.Models.getVersion","com.azure.ai.projects.BetaModelsClient.listLatestModelVersions":"Azure.AI.Projects.Models.listLatest","com.azure.ai.projects.BetaModelsClient.listModelVersions":"Azure.AI.Projects.Models.listVersions","com.azure.ai.projects.BetaModelsClient.startModelPendingUpload":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsClient.startModelPendingUploadWithResponse":"Azure.AI.Projects.Models.startPendingUpload","com.azure.ai.projects.BetaModelsClient.updateModelVersion":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaModelsClient.updateModelVersionWithResponse":"Azure.AI.Projects.Models.createOrUpdateVersion","com.azure.ai.projects.BetaRedTeamsAsyncClient":"Azure.AI.Projects.Beta.RedTeams","com.azure.ai.projects.BetaRedTeamsAsyncClient.createRedTeamRun":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsAsyncClient.createRedTeamRunWithResponse":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsAsyncClient.getRedTeam":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsAsyncClient.getRedTeamWithResponse":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsAsyncClient.listRedTeams":"Azure.AI.Projects.RedTeams.list","com.azure.ai.projects.BetaRedTeamsClient":"Azure.AI.Projects.Beta.RedTeams","com.azure.ai.projects.BetaRedTeamsClient.createRedTeamRun":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsClient.createRedTeamRunWithResponse":"Azure.AI.Projects.RedTeams.create","com.azure.ai.projects.BetaRedTeamsClient.getRedTeam":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsClient.getRedTeamWithResponse":"Azure.AI.Projects.RedTeams.get","com.azure.ai.projects.BetaRedTeamsClient.listRedTeams":"Azure.AI.Projects.RedTeams.list","com.azure.ai.projects.BetaRoutinesAsyncClient":"Azure.AI.Projects.Beta.Routines","com.azure.ai.projects.BetaRoutinesAsyncClient.createOrUpdateRoutine":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.createOrUpdateRoutineWithResponse":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.deleteRoutine":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.deleteRoutineWithResponse":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.disableRoutine":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.disableRoutineWithResponse":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.dispatchRoutine":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesAsyncClient.dispatchRoutineWithResponse":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesAsyncClient.enableRoutine":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.enableRoutineWithResponse":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.getRoutine":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.getRoutineWithResponse":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesAsyncClient.listRoutineRuns":"Azure.AI.Projects.Routines.listRoutineRuns","com.azure.ai.projects.BetaRoutinesAsyncClient.listRoutines":"Azure.AI.Projects.Routines.listRoutines","com.azure.ai.projects.BetaRoutinesClient":"Azure.AI.Projects.Beta.Routines","com.azure.ai.projects.BetaRoutinesClient.createOrUpdateRoutine":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesClient.createOrUpdateRoutineWithResponse":"Azure.AI.Projects.Routines.createOrUpdateRoutine","com.azure.ai.projects.BetaRoutinesClient.deleteRoutine":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesClient.deleteRoutineWithResponse":"Azure.AI.Projects.Routines.deleteRoutine","com.azure.ai.projects.BetaRoutinesClient.disableRoutine":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesClient.disableRoutineWithResponse":"Azure.AI.Projects.Routines.disableRoutine","com.azure.ai.projects.BetaRoutinesClient.dispatchRoutine":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesClient.dispatchRoutineWithResponse":"Azure.AI.Projects.Routines.dispatchRoutineAsync","com.azure.ai.projects.BetaRoutinesClient.enableRoutine":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesClient.enableRoutineWithResponse":"Azure.AI.Projects.Routines.enableRoutine","com.azure.ai.projects.BetaRoutinesClient.getRoutine":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesClient.getRoutineWithResponse":"Azure.AI.Projects.Routines.getRoutine","com.azure.ai.projects.BetaRoutinesClient.listRoutineRuns":"Azure.AI.Projects.Routines.listRoutineRuns","com.azure.ai.projects.BetaRoutinesClient.listRoutines":"Azure.AI.Projects.Routines.listRoutines","com.azure.ai.projects.BetaSchedulesAsyncClient":"Azure.AI.Projects.Beta.Schedules","com.azure.ai.projects.BetaSchedulesAsyncClient.createOrUpdateSchedule":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesAsyncClient.createOrUpdateScheduleWithResponse":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesAsyncClient.deleteSchedule":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesAsyncClient.deleteScheduleWithResponse":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesAsyncClient.getSchedule":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleRun":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleRunWithResponse":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesAsyncClient.getScheduleWithResponse":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesAsyncClient.listScheduleRuns":"Azure.AI.Projects.Schedules.listRuns","com.azure.ai.projects.BetaSchedulesAsyncClient.listSchedules":"Azure.AI.Projects.Schedules.list","com.azure.ai.projects.BetaSchedulesClient":"Azure.AI.Projects.Beta.Schedules","com.azure.ai.projects.BetaSchedulesClient.createOrUpdateSchedule":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesClient.createOrUpdateScheduleWithResponse":"Azure.AI.Projects.Schedules.createOrUpdate","com.azure.ai.projects.BetaSchedulesClient.deleteSchedule":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesClient.deleteScheduleWithResponse":"Azure.AI.Projects.Schedules.delete","com.azure.ai.projects.BetaSchedulesClient.getSchedule":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesClient.getScheduleRun":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesClient.getScheduleRunWithResponse":"Azure.AI.Projects.Schedules.getRun","com.azure.ai.projects.BetaSchedulesClient.getScheduleWithResponse":"Azure.AI.Projects.Schedules.get","com.azure.ai.projects.BetaSchedulesClient.listScheduleRuns":"Azure.AI.Projects.Schedules.listRuns","com.azure.ai.projects.BetaSchedulesClient.listSchedules":"Azure.AI.Projects.Schedules.list","com.azure.ai.projects.BetaSkillsAsyncClient":"Azure.AI.Projects.Beta.Skills","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersion":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionFromFiles":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionFromFilesWithResponseInternal":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsAsyncClient.createSkillVersionWithResponse":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkill":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillContent":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillContentWithResponse":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersion":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionContent":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionContentWithResponse":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillVersionWithResponse":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsAsyncClient.getSkillWithResponse":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsAsyncClient.listSkillVersions":"Azure.AI.Projects.Skills.listSkillVersions","com.azure.ai.projects.BetaSkillsAsyncClient.listSkills":"Azure.AI.Projects.Skills.listSkills","com.azure.ai.projects.BetaSkillsAsyncClient.updateSkill":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsAsyncClient.updateSkillWithResponse":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsClient":"Azure.AI.Projects.Beta.Skills","com.azure.ai.projects.BetaSkillsClient.createSkillVersion":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsClient.createSkillVersionFromFiles":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsClient.createSkillVersionFromFilesWithResponseInternal":"Azure.AI.Projects.Skills.createSkillVersionFromFiles","com.azure.ai.projects.BetaSkillsClient.createSkillVersionWithResponse":"Azure.AI.Projects.Skills.createSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkill":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsClient.getSkillContent":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsClient.getSkillContentWithResponse":"Azure.AI.Projects.Skills.getSkillContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersion":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkillVersionContent":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersionContentWithResponse":"Azure.AI.Projects.Skills.getSkillVersionContent","com.azure.ai.projects.BetaSkillsClient.getSkillVersionWithResponse":"Azure.AI.Projects.Skills.getSkillVersion","com.azure.ai.projects.BetaSkillsClient.getSkillWithResponse":"Azure.AI.Projects.Skills.getSkill","com.azure.ai.projects.BetaSkillsClient.listSkillVersions":"Azure.AI.Projects.Skills.listSkillVersions","com.azure.ai.projects.BetaSkillsClient.listSkills":"Azure.AI.Projects.Skills.listSkills","com.azure.ai.projects.BetaSkillsClient.updateSkill":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.BetaSkillsClient.updateSkillWithResponse":"Azure.AI.Projects.Skills.updateSkill","com.azure.ai.projects.ConnectionsAsyncClient":"Azure.AI.Projects.Connections","com.azure.ai.projects.ConnectionsAsyncClient.getConnection":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithCredentials":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithCredentialsWithResponse":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsAsyncClient.getConnectionWithResponse":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsAsyncClient.listConnections":"Azure.AI.Projects.Connections.list","com.azure.ai.projects.ConnectionsClient":"Azure.AI.Projects.Connections","com.azure.ai.projects.ConnectionsClient.getConnection":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsClient.getConnectionWithCredentials":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsClient.getConnectionWithCredentialsWithResponse":"Azure.AI.Projects.Connections.getWithCredentials","com.azure.ai.projects.ConnectionsClient.getConnectionWithResponse":"Azure.AI.Projects.Connections.get","com.azure.ai.projects.ConnectionsClient.listConnections":"Azure.AI.Projects.Connections.list","com.azure.ai.projects.DatasetsAsyncClient":"Azure.AI.Projects.Datasets","com.azure.ai.projects.DatasetsAsyncClient.createOrUpdateDatasetVersion":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsAsyncClient.createOrUpdateDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsAsyncClient.deleteDatasetVersion":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsAsyncClient.deleteDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsAsyncClient.getCredentials":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsAsyncClient.getCredentialsWithResponse":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsAsyncClient.getDatasetVersion":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsAsyncClient.getDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsAsyncClient.listDatasetVersions":"Azure.AI.Projects.Datasets.listVersions","com.azure.ai.projects.DatasetsAsyncClient.listLatestDatasetVersions":"Azure.AI.Projects.Datasets.listLatest","com.azure.ai.projects.DatasetsAsyncClient.pendingUpload":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsAsyncClient.pendingUploadWithResponse":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsClient":"Azure.AI.Projects.Datasets","com.azure.ai.projects.DatasetsClient.createOrUpdateDatasetVersion":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsClient.createOrUpdateDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.createOrUpdateVersion","com.azure.ai.projects.DatasetsClient.deleteDatasetVersion":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsClient.deleteDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.deleteVersion","com.azure.ai.projects.DatasetsClient.getCredentials":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsClient.getCredentialsWithResponse":"Azure.AI.Projects.Datasets.getCredentials","com.azure.ai.projects.DatasetsClient.getDatasetVersion":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsClient.getDatasetVersionWithResponse":"Azure.AI.Projects.Datasets.getVersion","com.azure.ai.projects.DatasetsClient.listDatasetVersions":"Azure.AI.Projects.Datasets.listVersions","com.azure.ai.projects.DatasetsClient.listLatestDatasetVersions":"Azure.AI.Projects.Datasets.listLatest","com.azure.ai.projects.DatasetsClient.pendingUpload":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DatasetsClient.pendingUploadWithResponse":"Azure.AI.Projects.Datasets.startPendingUploadVersion","com.azure.ai.projects.DeploymentsAsyncClient":"Azure.AI.Projects.Deployments","com.azure.ai.projects.DeploymentsAsyncClient.getDeployment":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsAsyncClient.getDeploymentWithResponse":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsAsyncClient.listDeployments":"Azure.AI.Projects.Deployments.list","com.azure.ai.projects.DeploymentsClient":"Azure.AI.Projects.Deployments","com.azure.ai.projects.DeploymentsClient.getDeployment":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsClient.getDeploymentWithResponse":"Azure.AI.Projects.Deployments.get","com.azure.ai.projects.DeploymentsClient.listDeployments":"Azure.AI.Projects.Deployments.list","com.azure.ai.projects.EvaluationRulesAsyncClient":"Azure.AI.Projects.EvaluationRules","com.azure.ai.projects.EvaluationRulesAsyncClient.createOrUpdateEvaluationRule":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesAsyncClient.createOrUpdateEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesAsyncClient.deleteEvaluationRule":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesAsyncClient.deleteEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesAsyncClient.getEvaluationRule":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesAsyncClient.getEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesAsyncClient.listEvaluationRules":"Azure.AI.Projects.EvaluationRules.list","com.azure.ai.projects.EvaluationRulesClient":"Azure.AI.Projects.EvaluationRules","com.azure.ai.projects.EvaluationRulesClient.createOrUpdateEvaluationRule":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesClient.createOrUpdateEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.createOrUpdate","com.azure.ai.projects.EvaluationRulesClient.deleteEvaluationRule":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesClient.deleteEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.delete","com.azure.ai.projects.EvaluationRulesClient.getEvaluationRule":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesClient.getEvaluationRuleWithResponse":"Azure.AI.Projects.EvaluationRules.get","com.azure.ai.projects.EvaluationRulesClient.listEvaluationRules":"Azure.AI.Projects.EvaluationRules.list","com.azure.ai.projects.IndexesAsyncClient":"Azure.AI.Projects.Indexes","com.azure.ai.projects.IndexesAsyncClient.createOrUpdateIndexVersion":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesAsyncClient.createOrUpdateIndexVersionWithResponse":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesAsyncClient.deleteIndexVersion":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesAsyncClient.deleteIndexVersionWithResponse":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesAsyncClient.getIndexVersion":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesAsyncClient.getIndexVersionWithResponse":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesAsyncClient.listIndexVersions":"Azure.AI.Projects.Indexes.listVersions","com.azure.ai.projects.IndexesAsyncClient.listLatestIndexVersions":"Azure.AI.Projects.Indexes.listLatest","com.azure.ai.projects.IndexesClient":"Azure.AI.Projects.Indexes","com.azure.ai.projects.IndexesClient.createOrUpdateIndexVersion":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesClient.createOrUpdateIndexVersionWithResponse":"Azure.AI.Projects.Indexes.createOrUpdateVersion","com.azure.ai.projects.IndexesClient.deleteIndexVersion":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesClient.deleteIndexVersionWithResponse":"Azure.AI.Projects.Indexes.deleteVersion","com.azure.ai.projects.IndexesClient.getIndexVersion":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesClient.getIndexVersionWithResponse":"Azure.AI.Projects.Indexes.getVersion","com.azure.ai.projects.IndexesClient.listIndexVersions":"Azure.AI.Projects.Indexes.listVersions","com.azure.ai.projects.IndexesClient.listLatestIndexVersions":"Azure.AI.Projects.Indexes.listLatest","com.azure.ai.projects.implementation.models.CreateOrUpdateRoutineRequest":"Azure.AI.Projects.createOrUpdateRoutine.Request.anonymous","com.azure.ai.projects.implementation.models.CreateSkillVersionRequest":"Azure.AI.Projects.createSkillVersion.Request.anonymous","com.azure.ai.projects.implementation.models.DispatchRoutineAsyncRequest":"Azure.AI.Projects.dispatchRoutineAsync.Request.anonymous","com.azure.ai.projects.implementation.models.FoundryFeaturesOptInKeys":"Azure.AI.Projects.FoundryFeaturesOptInKeys","com.azure.ai.projects.implementation.models.UpdateSkillRequest":"Azure.AI.Projects.updateSkill.Request.anonymous","com.azure.ai.projects.models.AIProjectIndex":"Azure.AI.Projects.Index","com.azure.ai.projects.models.AgentClusterInsightRequest":"Azure.AI.Projects.AgentClusterInsightRequest","com.azure.ai.projects.models.AgentClusterInsightResult":"Azure.AI.Projects.AgentClusterInsightResult","com.azure.ai.projects.models.AgentDataGenerationJobSource":"Azure.AI.Projects.AgentDataGenerationJobSource","com.azure.ai.projects.models.AgentEvaluatorGenerationJobSource":"Azure.AI.Projects.AgentEvaluatorGenerationJobSource","com.azure.ai.projects.models.AgentInsight":"Azure.AI.Projects.AgentInsight","com.azure.ai.projects.models.AgentInsightDetails":"Azure.AI.Projects.AgentInsightDetails","com.azure.ai.projects.models.AgentInsightEstimatedCost":"Azure.AI.Projects.AgentInsightEstimatedCost","com.azure.ai.projects.models.AgentInsightHighlightedTrace":"Azure.AI.Projects.AgentInsightHighlightedTrace","com.azure.ai.projects.models.AgentInsightLinkedTrace":"Azure.AI.Projects.AgentInsightLinkedTrace","com.azure.ai.projects.models.AgentInsightMonitor":"Azure.AI.Projects.AgentInsightMonitor","com.azure.ai.projects.models.AgentInsightMonitorCreate":"Azure.AI.Projects.AgentInsightMonitorCreate","com.azure.ai.projects.models.AgentInsightMonitorListItem":"Azure.AI.Projects.AgentInsightMonitorListItem","com.azure.ai.projects.models.AgentInsightMonitorUpdate":"Azure.AI.Projects.AgentInsightMonitorUpdate","com.azure.ai.projects.models.AgentInsightOverviewSource":"Azure.AI.Projects.AgentInsightOverviewSource","com.azure.ai.projects.models.AgentInsightPromptSurface":"Azure.AI.Projects.AgentInsightPromptSurface","com.azure.ai.projects.models.AgentInsightProposedFix":"Azure.AI.Projects.AgentInsightProposedFix","com.azure.ai.projects.models.AgentInsightProposedFixChange":"Azure.AI.Projects.AgentInsightProposedFixChange","com.azure.ai.projects.models.AgentInsightProposedFixKind":"Azure.AI.Projects.AgentInsightProposedFixKind","com.azure.ai.projects.models.AgentInsightRecommendedAction":"Azure.AI.Projects.AgentInsightRecommendedAction","com.azure.ai.projects.models.AgentInsightRun":"Azure.AI.Projects.AgentInsightRun","com.azure.ai.projects.models.AgentInsightRunCreate":"Azure.AI.Projects.AgentInsightRunCreate","com.azure.ai.projects.models.AgentInsightRunResult":"Azure.AI.Projects.AgentInsightRunResult","com.azure.ai.projects.models.AgentInsightRunTrigger":"Azure.AI.Projects.AgentInsightRunTrigger","com.azure.ai.projects.models.AgentInsightSeverity":"Azure.AI.Projects.AgentInsightSeverity","com.azure.ai.projects.models.AgentInsightStatus":"Azure.AI.Projects.AgentInsightStatus","com.azure.ai.projects.models.AgentInsightSuspension":"Azure.AI.Projects.AgentInsightSuspension","com.azure.ai.projects.models.AgentInsightTokenUsage":"Azure.AI.Projects.AgentInsightTokenUsage","com.azure.ai.projects.models.AgentInsightUpdate":"Azure.AI.Projects.AgentInsightUpdate","com.azure.ai.projects.models.AgentInsightsOverview":"Azure.AI.Projects.AgentInsightsOverview","com.azure.ai.projects.models.AgentInsightsOverviewOverride":"Azure.AI.Projects.AgentInsightsOverviewOverride","com.azure.ai.projects.models.AgentTaxonomyInput":"Azure.AI.Projects.AgentTaxonomyInput","com.azure.ai.projects.models.AgenticIdentityPreviewCredential":"Azure.AI.Projects.AgenticIdentityPreviewCredentials","com.azure.ai.projects.models.ApiError":"OpenAI.Error","com.azure.ai.projects.models.ApiKeyCredential":"Azure.AI.Projects.ApiKeyCredentials","com.azure.ai.projects.models.ArtifactProfile":"Azure.AI.Projects.ArtifactProfile","com.azure.ai.projects.models.AttackStrategy":"Azure.AI.Projects.AttackStrategy","com.azure.ai.projects.models.AzureAIAgentTarget":"Azure.AI.Projects.AzureAIAgentTarget","com.azure.ai.projects.models.AzureAIModelTarget":"Azure.AI.Projects.AzureAIModelTarget","com.azure.ai.projects.models.AzureAISearchIndex":"Azure.AI.Projects.AzureAISearchIndex","com.azure.ai.projects.models.AzureOpenAIModelConfiguration":"Azure.AI.Projects.AzureOpenAIModelConfiguration","com.azure.ai.projects.models.BaseCredential":"Azure.AI.Projects.BaseCredentials","com.azure.ai.projects.models.BlobReference":"Azure.AI.Projects.BlobReference","com.azure.ai.projects.models.BlobReferenceSasCredential":"Azure.AI.Projects.SasCredential","com.azure.ai.projects.models.ChartCoordinate":"Azure.AI.Projects.ChartCoordinate","com.azure.ai.projects.models.ClusterInsightResult":"Azure.AI.Projects.ClusterInsightResult","com.azure.ai.projects.models.ClusterTokenUsage":"Azure.AI.Projects.ClusterTokenUsage","com.azure.ai.projects.models.CodeBasedEvaluatorDefinition":"Azure.AI.Projects.CodeBasedEvaluatorDefinition","com.azure.ai.projects.models.Connection":"Azure.AI.Projects.Connection","com.azure.ai.projects.models.ConnectionType":"Azure.AI.Projects.ConnectionType","com.azure.ai.projects.models.ContinuousEvaluationRuleAction":"Azure.AI.Projects.ContinuousEvaluationRuleAction","com.azure.ai.projects.models.CosmosDBIndex":"Azure.AI.Projects.CosmosDBIndex","com.azure.ai.projects.models.CreateAsyncResponse":"Azure.AI.Projects.createAsync.Response.anonymous","com.azure.ai.projects.models.CreateSkillVersionFromFilesBody":"Azure.AI.Projects.CreateSkillVersionFromFilesBody","com.azure.ai.projects.models.CredentialType":"Azure.AI.Projects.CredentialType","com.azure.ai.projects.models.CronTrigger":"Azure.AI.Projects.CronTrigger","com.azure.ai.projects.models.CustomCredential":"Azure.AI.Projects.CustomCredential","com.azure.ai.projects.models.CustomRoutineTrigger":"Azure.AI.Projects.CustomRoutineTrigger","com.azure.ai.projects.models.DailyRecurrenceSchedule":"Azure.AI.Projects.DailyRecurrenceSchedule","com.azure.ai.projects.models.DataGenerationJob":"Azure.AI.Projects.DataGenerationJob","com.azure.ai.projects.models.DataGenerationJobInputs":"Azure.AI.Projects.DataGenerationJobInputs","com.azure.ai.projects.models.DataGenerationJobOptions":"Azure.AI.Projects.DataGenerationJobOptions","com.azure.ai.projects.models.DataGenerationJobOutput":"Azure.AI.Projects.DataGenerationJobOutput","com.azure.ai.projects.models.DataGenerationJobOutputOptions":"Azure.AI.Projects.DataGenerationJobOutputOptions","com.azure.ai.projects.models.DataGenerationJobOutputType":"Azure.AI.Projects.DataGenerationJobOutputType","com.azure.ai.projects.models.DataGenerationJobOutputWriteMode":"Azure.AI.Projects.DataGenerationJobOutputWriteMode","com.azure.ai.projects.models.DataGenerationJobResult":"Azure.AI.Projects.DataGenerationJobResult","com.azure.ai.projects.models.DataGenerationJobScenario":"Azure.AI.Projects.DataGenerationJobScenario","com.azure.ai.projects.models.DataGenerationJobSource":"Azure.AI.Projects.DataGenerationJobSource","com.azure.ai.projects.models.DataGenerationJobSourceType":"Azure.AI.Projects.DataGenerationJobSourceType","com.azure.ai.projects.models.DataGenerationJobType":"Azure.AI.Projects.DataGenerationJobType","com.azure.ai.projects.models.DataGenerationModelOptions":"Azure.AI.Projects.DataGenerationModelOptions","com.azure.ai.projects.models.DataGenerationTokenUsage":"Azure.AI.Projects.DataGenerationTokenUsage","com.azure.ai.projects.models.DatasetCredential":"Azure.AI.Projects.AssetCredentialResponse","com.azure.ai.projects.models.DatasetDataGenerationJobOutput":"Azure.AI.Projects.DatasetDataGenerationJobOutput","com.azure.ai.projects.models.DatasetEvaluatorGenerationJobSource":"Azure.AI.Projects.DatasetEvaluatorGenerationJobSource","com.azure.ai.projects.models.DatasetReference":"Azure.AI.Projects.DatasetReference","com.azure.ai.projects.models.DatasetType":"Azure.AI.Projects.DatasetType","com.azure.ai.projects.models.DatasetVersion":"Azure.AI.Projects.DatasetVersion","com.azure.ai.projects.models.Deployment":"Azure.AI.Projects.Deployment","com.azure.ai.projects.models.DeploymentType":"Azure.AI.Projects.DeploymentType","com.azure.ai.projects.models.Dimension":"Azure.AI.Projects.Dimension","com.azure.ai.projects.models.DispatchRoutineResult":"Azure.AI.Projects.DispatchRoutineResponse","com.azure.ai.projects.models.EmbeddingConfiguration":"Azure.AI.Projects.EmbeddingConfiguration","com.azure.ai.projects.models.EndpointBasedEvaluatorDefinition":"Azure.AI.Projects.EndpointBasedEvaluatorDefinition","com.azure.ai.projects.models.EntraIdCredential":"Azure.AI.Projects.EntraIDCredentials","com.azure.ai.projects.models.EvaluationComparisonInsightRequest":"Azure.AI.Projects.EvaluationComparisonInsightRequest","com.azure.ai.projects.models.EvaluationComparisonInsightResult":"Azure.AI.Projects.EvaluationComparisonInsightResult","com.azure.ai.projects.models.EvaluationLevel":"Azure.AI.Projects.EvaluationLevel","com.azure.ai.projects.models.EvaluationResult":"Azure.AI.Projects.EvalResult","com.azure.ai.projects.models.EvaluationResultSample":"Azure.AI.Projects.EvaluationResultSample","com.azure.ai.projects.models.EvaluationRule":"Azure.AI.Projects.EvaluationRule","com.azure.ai.projects.models.EvaluationRuleAction":"Azure.AI.Projects.EvaluationRuleAction","com.azure.ai.projects.models.EvaluationRuleActionType":"Azure.AI.Projects.EvaluationRuleActionType","com.azure.ai.projects.models.EvaluationRuleEventType":"Azure.AI.Projects.EvaluationRuleEventType","com.azure.ai.projects.models.EvaluationRuleFilter":"Azure.AI.Projects.EvaluationRuleFilter","com.azure.ai.projects.models.EvaluationRunClusterInsightRequest":"Azure.AI.Projects.EvaluationRunClusterInsightRequest","com.azure.ai.projects.models.EvaluationRunClusterInsightResult":"Azure.AI.Projects.EvaluationRunClusterInsightResult","com.azure.ai.projects.models.EvaluationRunResultCompareItem":"Azure.AI.Projects.EvalRunResultCompareItem","com.azure.ai.projects.models.EvaluationRunResultComparison":"Azure.AI.Projects.EvalRunResultComparison","com.azure.ai.projects.models.EvaluationRunResultSummary":"Azure.AI.Projects.EvalRunResultSummary","com.azure.ai.projects.models.EvaluationScheduleTask":"Azure.AI.Projects.EvaluationScheduleTask","com.azure.ai.projects.models.EvaluationTaxonomy":"Azure.AI.Projects.EvaluationTaxonomy","com.azure.ai.projects.models.EvaluationTaxonomyInput":"Azure.AI.Projects.EvaluationTaxonomyInput","com.azure.ai.projects.models.EvaluationTaxonomyInputType":"Azure.AI.Projects.EvaluationTaxonomyInputType","com.azure.ai.projects.models.EvaluatorCategory":"Azure.AI.Projects.EvaluatorCategory","com.azure.ai.projects.models.EvaluatorCredentialInput":"Azure.AI.Projects.EvaluatorCredentialRequest","com.azure.ai.projects.models.EvaluatorDefinition":"Azure.AI.Projects.EvaluatorDefinition","com.azure.ai.projects.models.EvaluatorDefinitionType":"Azure.AI.Projects.EvaluatorDefinitionType","com.azure.ai.projects.models.EvaluatorGenerationArtifacts":"Azure.AI.Projects.EvaluatorGenerationArtifacts","com.azure.ai.projects.models.EvaluatorGenerationInputs":"Azure.AI.Projects.EvaluatorGenerationInputs","com.azure.ai.projects.models.EvaluatorGenerationJob":"Azure.AI.Projects.EvaluatorGenerationJob","com.azure.ai.projects.models.EvaluatorGenerationJobSource":"Azure.AI.Projects.EvaluatorGenerationJobSource","com.azure.ai.projects.models.EvaluatorGenerationJobSourceType":"Azure.AI.Projects.EvaluatorGenerationJobSourceType","com.azure.ai.projects.models.EvaluatorGenerationTokenUsage":"Azure.AI.Projects.EvaluatorGenerationTokenUsage","com.azure.ai.projects.models.EvaluatorMetric":"Azure.AI.Projects.EvaluatorMetric","com.azure.ai.projects.models.EvaluatorMetricDirection":"Azure.AI.Projects.EvaluatorMetricDirection","com.azure.ai.projects.models.EvaluatorMetricType":"Azure.AI.Projects.EvaluatorMetricType","com.azure.ai.projects.models.EvaluatorType":"Azure.AI.Projects.EvaluatorType","com.azure.ai.projects.models.EvaluatorVersion":"Azure.AI.Projects.EvaluatorVersion","com.azure.ai.projects.models.FieldMapping":"Azure.AI.Projects.FieldMapping","com.azure.ai.projects.models.FileDataGenerationJobOutput":"Azure.AI.Projects.FileDataGenerationJobOutput","com.azure.ai.projects.models.FileDataGenerationJobSource":"Azure.AI.Projects.FileDataGenerationJobSource","com.azure.ai.projects.models.FileDatasetVersion":"Azure.AI.Projects.FileDatasetVersion","com.azure.ai.projects.models.FolderDatasetVersion":"Azure.AI.Projects.FolderDatasetVersion","com.azure.ai.projects.models.FoundryEvaluationTarget":"Azure.AI.Projects.FoundryEvaluationTarget","com.azure.ai.projects.models.FoundryModelArtifactProfileCategory":"Azure.AI.Projects.FoundryModelArtifactProfileCategory","com.azure.ai.projects.models.FoundryModelArtifactProfileSignal":"Azure.AI.Projects.FoundryModelArtifactProfileSignal","com.azure.ai.projects.models.FoundryModelSourceType":"Azure.AI.Projects.FoundryModelSourceType","com.azure.ai.projects.models.FoundryModelWarning":"Azure.AI.Projects.FoundryModelWarning","com.azure.ai.projects.models.FoundryModelWarningCode":"Azure.AI.Projects.FoundryModelWarningCode","com.azure.ai.projects.models.FoundryModelWeightType":"Azure.AI.Projects.FoundryModelWeightType","com.azure.ai.projects.models.GenerationWarningType":"Azure.AI.Projects.GenerationWarningType","com.azure.ai.projects.models.GitHubIssueEvent":"Azure.AI.Projects.GitHubIssueEvent","com.azure.ai.projects.models.GitHubIssueRoutineTrigger":"Azure.AI.Projects.GitHubIssueRoutineTrigger","com.azure.ai.projects.models.GraderAzureAIEvaluator":"Azure.AI.Projects.GraderAzureAIEvaluator","com.azure.ai.projects.models.HourlyRecurrenceSchedule":"Azure.AI.Projects.HourlyRecurrenceSchedule","com.azure.ai.projects.models.HumanEvaluationPreviewRuleAction":"Azure.AI.Projects.HumanEvaluationPreviewRuleAction","com.azure.ai.projects.models.IndexType":"Azure.AI.Projects.IndexType","com.azure.ai.projects.models.Insight":"Azure.AI.Projects.Insight","com.azure.ai.projects.models.InsightCluster":"Azure.AI.Projects.InsightCluster","com.azure.ai.projects.models.InsightModelConfiguration":"Azure.AI.Projects.InsightModelConfiguration","com.azure.ai.projects.models.InsightRequest":"Azure.AI.Projects.InsightRequest","com.azure.ai.projects.models.InsightResult":"Azure.AI.Projects.InsightResult","com.azure.ai.projects.models.InsightSample":"Azure.AI.Projects.InsightSample","com.azure.ai.projects.models.InsightScheduleTask":"Azure.AI.Projects.InsightScheduleTask","com.azure.ai.projects.models.InsightSummary":"Azure.AI.Projects.InsightSummary","com.azure.ai.projects.models.InsightType":"Azure.AI.Projects.InsightType","com.azure.ai.projects.models.InsightsMetadata":"Azure.AI.Projects.InsightsMetadata","com.azure.ai.projects.models.InvokeAgentInvocationsApiDispatchPayload":"Azure.AI.Projects.InvokeAgentInvocationsApiDispatchPayload","com.azure.ai.projects.models.InvokeAgentInvocationsApiRoutineAction":"Azure.AI.Projects.InvokeAgentInvocationsApiRoutineAction","com.azure.ai.projects.models.InvokeAgentResponsesApiDispatchPayload":"Azure.AI.Projects.InvokeAgentResponsesApiDispatchPayload","com.azure.ai.projects.models.InvokeAgentResponsesApiRoutineAction":"Azure.AI.Projects.InvokeAgentResponsesApiRoutineAction","com.azure.ai.projects.models.JobStatus":"Azure.AI.Projects.JobStatus","com.azure.ai.projects.models.ListVersionsRequestType":"Azure.AI.Projects.listVersions.RequestType.anonymous","com.azure.ai.projects.models.LoraConfig":"Azure.AI.Projects.LoraConfig","com.azure.ai.projects.models.ManagedAzureAISearchIndex":"Azure.AI.Projects.ManagedAzureAISearchIndex","com.azure.ai.projects.models.ModelCredentialInput":"Azure.AI.Projects.ModelCredentialRequest","com.azure.ai.projects.models.ModelDeployment":"Azure.AI.Projects.ModelDeployment","com.azure.ai.projects.models.ModelDeploymentSku":"Azure.AI.Projects.Sku","com.azure.ai.projects.models.ModelPendingUploadInput":"Azure.AI.Projects.ModelPendingUploadRequest","com.azure.ai.projects.models.ModelPendingUploadResult":"Azure.AI.Projects.ModelPendingUploadResponse","com.azure.ai.projects.models.ModelSamplingParams":"Azure.AI.Projects.ModelSamplingParams","com.azure.ai.projects.models.ModelSourceData":"Azure.AI.Projects.ModelSourceData","com.azure.ai.projects.models.ModelVersion":"Azure.AI.Projects.ModelVersion","com.azure.ai.projects.models.MonthlyRecurrenceSchedule":"Azure.AI.Projects.MonthlyRecurrenceSchedule","com.azure.ai.projects.models.NoAuthenticationCredential":"Azure.AI.Projects.NoAuthenticationCredentials","com.azure.ai.projects.models.OneTimeTrigger":"Azure.AI.Projects.OneTimeTrigger","com.azure.ai.projects.models.OperationStatus":"Azure.Core.Foundations.OperationState","com.azure.ai.projects.models.PendingUploadRequest":"Azure.AI.Projects.PendingUploadRequest","com.azure.ai.projects.models.PendingUploadResponse":"Azure.AI.Projects.PendingUploadResponse","com.azure.ai.projects.models.PendingUploadType":"Azure.AI.Projects.PendingUploadType","com.azure.ai.projects.models.PromptBasedEvaluatorDefinition":"Azure.AI.Projects.PromptBasedEvaluatorDefinition","com.azure.ai.projects.models.PromptDataGenerationJobSource":"Azure.AI.Projects.PromptDataGenerationJobSource","com.azure.ai.projects.models.PromptEvaluatorGenerationJobSource":"Azure.AI.Projects.PromptEvaluatorGenerationJobSource","com.azure.ai.projects.models.RecurrenceSchedule":"Azure.AI.Projects.RecurrenceSchedule","com.azure.ai.projects.models.RecurrenceTrigger":"Azure.AI.Projects.RecurrenceTrigger","com.azure.ai.projects.models.RecurrenceType":"Azure.AI.Projects.RecurrenceType","com.azure.ai.projects.models.RedTeam":"Azure.AI.Projects.RedTeam","com.azure.ai.projects.models.RiskCategory":"Azure.AI.Projects.RiskCategory","com.azure.ai.projects.models.Routine":"Azure.AI.Projects.Routine","com.azure.ai.projects.models.RoutineAction":"Azure.AI.Projects.RoutineAction","com.azure.ai.projects.models.RoutineActionType":"Azure.AI.Projects.RoutineActionType","com.azure.ai.projects.models.RoutineAttemptSource":"Azure.AI.Projects.RoutineAttemptSource","com.azure.ai.projects.models.RoutineAuthorization":"Azure.AI.Projects.RoutineAuthorization","com.azure.ai.projects.models.RoutineDispatchIdentity":"Azure.AI.Projects.RoutineDispatchIdentity","com.azure.ai.projects.models.RoutineDispatchPayload":"Azure.AI.Projects.RoutineDispatchPayload","com.azure.ai.projects.models.RoutineDispatchPayloadType":"Azure.AI.Projects.RoutineDispatchPayloadType","com.azure.ai.projects.models.RoutineRun":"Azure.AI.Projects.RoutineRun","com.azure.ai.projects.models.RoutineRunPhase":"Azure.AI.Projects.RoutineRunPhase","com.azure.ai.projects.models.RoutineTrigger":"Azure.AI.Projects.RoutineTrigger","com.azure.ai.projects.models.RoutineTriggerType":"Azure.AI.Projects.RoutineTriggerType","com.azure.ai.projects.models.RubricBasedEvaluatorDefinition":"Azure.AI.Projects.RubricBasedEvaluatorDefinition","com.azure.ai.projects.models.RubricGenerationInputQualityWarning":"Azure.AI.Projects.RubricGenerationInputQualityWarning","com.azure.ai.projects.models.RubricGenerationInputQualityWarningCode":"Azure.AI.Projects.RubricGenerationInputQualityWarningCode","com.azure.ai.projects.models.RubricGenerationInputQualityWarningSeverity":"Azure.AI.Projects.RubricGenerationInputQualityWarningSeverity","com.azure.ai.projects.models.RubricGenerationInputQualityWarningSource":"Azure.AI.Projects.RubricGenerationInputQualityWarningSource","com.azure.ai.projects.models.SampleType":"Azure.AI.Projects.SampleType","com.azure.ai.projects.models.SasCredential":"Azure.AI.Projects.SASCredentials","com.azure.ai.projects.models.Schedule":"Azure.AI.Projects.Schedule","com.azure.ai.projects.models.ScheduleProvisioningStatus":"Azure.AI.Projects.ScheduleProvisioningStatus","com.azure.ai.projects.models.ScheduleRoutineTrigger":"Azure.AI.Projects.ScheduleRoutineTrigger","com.azure.ai.projects.models.ScheduleRun":"Azure.AI.Projects.ScheduleRun","com.azure.ai.projects.models.ScheduleTask":"Azure.AI.Projects.ScheduleTask","com.azure.ai.projects.models.ScheduleTaskType":"Azure.AI.Projects.ScheduleTaskType","com.azure.ai.projects.models.SimpleQnADataGenerationJobOptions":"Azure.AI.Projects.SimpleQnADataGenerationJobOptions","com.azure.ai.projects.models.SimpleQnAFineTuningQuestionType":"Azure.AI.Projects.SimpleQnAFineTuningQuestionType","com.azure.ai.projects.models.SimulationSeedDataGenerationJobOptions":"Azure.AI.Projects.SimulationSeedDataGenerationJobOptions","com.azure.ai.projects.models.SkillDetails":"Azure.AI.Projects.Skill","com.azure.ai.projects.models.SkillFileDetails":"TypeSpec.Http.File","com.azure.ai.projects.models.SkillInlineContent":"Azure.AI.Projects.SkillInlineContent","com.azure.ai.projects.models.SkillVersion":"Azure.AI.Projects.SkillVersion","com.azure.ai.projects.models.TargetConfig":"Azure.AI.Projects.RedTeamTargetConfig","com.azure.ai.projects.models.TaxonomyCategory":"Azure.AI.Projects.TaxonomyCategory","com.azure.ai.projects.models.TaxonomySubCategory":"Azure.AI.Projects.TaxonomySubCategory","com.azure.ai.projects.models.TestingCriterionAzureAIEvaluator":"Azure.AI.Projects.TestingCriterionAzureAIEvaluator","com.azure.ai.projects.models.TimerRoutineTrigger":"Azure.AI.Projects.TimerRoutineTrigger","com.azure.ai.projects.models.ToolDescription":"Azure.AI.Projects.ToolDescription","com.azure.ai.projects.models.ToolUseFineTuningDataGenerationJobOptions":"Azure.AI.Projects.ToolUseFineTuningDataGenerationJobOptions","com.azure.ai.projects.models.TracesDataGenerationJobOptions":"Azure.AI.Projects.TracesDataGenerationJobOptions","com.azure.ai.projects.models.TracesDataGenerationJobSource":"Azure.AI.Projects.TracesDataGenerationJobSource","com.azure.ai.projects.models.TracesEvaluatorGenerationJobSource":"Azure.AI.Projects.TracesEvaluatorGenerationJobSource","com.azure.ai.projects.models.TreatmentEffectType":"Azure.AI.Projects.TreatmentEffectType","com.azure.ai.projects.models.Trigger":"Azure.AI.Projects.Trigger","com.azure.ai.projects.models.TriggerType":"Azure.AI.Projects.TriggerType","com.azure.ai.projects.models.UpdateModelVersionInput":"Azure.AI.Projects.UpdateModelVersionRequest","com.azure.ai.projects.models.WeeklyRecurrenceSchedule":"Azure.AI.Projects.WeeklyRecurrenceSchedule"},"generatedFiles":["src/main/java/com/azure/ai/projects/AIProjectClientBuilder.java","src/main/java/com/azure/ai/projects/AIProjectsServiceVersion.java","src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaAgentInsightMonitorsClient.java","src/main/java/com/azure/ai/projects/BetaDatasetsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaDatasetsClient.java","src/main/java/com/azure/ai/projects/BetaEvaluationTaxonomiesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaEvaluationTaxonomiesClient.java","src/main/java/com/azure/ai/projects/BetaEvaluatorsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaEvaluatorsClient.java","src/main/java/com/azure/ai/projects/BetaInsightsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaInsightsClient.java","src/main/java/com/azure/ai/projects/BetaModelsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaModelsClient.java","src/main/java/com/azure/ai/projects/BetaRedTeamsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaRedTeamsClient.java","src/main/java/com/azure/ai/projects/BetaRoutinesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaRoutinesClient.java","src/main/java/com/azure/ai/projects/BetaSchedulesAsyncClient.java","src/main/java/com/azure/ai/projects/BetaSchedulesClient.java","src/main/java/com/azure/ai/projects/BetaSkillsAsyncClient.java","src/main/java/com/azure/ai/projects/BetaSkillsClient.java","src/main/java/com/azure/ai/projects/ConnectionsAsyncClient.java","src/main/java/com/azure/ai/projects/ConnectionsClient.java","src/main/java/com/azure/ai/projects/DatasetsAsyncClient.java","src/main/java/com/azure/ai/projects/DatasetsClient.java","src/main/java/com/azure/ai/projects/DeploymentsAsyncClient.java","src/main/java/com/azure/ai/projects/DeploymentsClient.java","src/main/java/com/azure/ai/projects/EvaluationRulesAsyncClient.java","src/main/java/com/azure/ai/projects/EvaluationRulesClient.java","src/main/java/com/azure/ai/projects/IndexesAsyncClient.java","src/main/java/com/azure/ai/projects/IndexesClient.java","src/main/java/com/azure/ai/projects/implementation/AIProjectClientImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaAgentInsightMonitorsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaDatasetsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaEvaluationTaxonomiesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaEvaluatorsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaInsightsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaModelsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaRedTeamsImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaRoutinesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaSchedulesImpl.java","src/main/java/com/azure/ai/projects/implementation/BetaSkillsImpl.java","src/main/java/com/azure/ai/projects/implementation/ConnectionsImpl.java","src/main/java/com/azure/ai/projects/implementation/DatasetsImpl.java","src/main/java/com/azure/ai/projects/implementation/DeploymentsImpl.java","src/main/java/com/azure/ai/projects/implementation/EvaluationRulesImpl.java","src/main/java/com/azure/ai/projects/implementation/IndexesImpl.java","src/main/java/com/azure/ai/projects/implementation/JsonMergePatchHelper.java","src/main/java/com/azure/ai/projects/implementation/MultipartFormDataHelper.java","src/main/java/com/azure/ai/projects/implementation/OperationLocationPollingStrategy.java","src/main/java/com/azure/ai/projects/implementation/PollingUtils.java","src/main/java/com/azure/ai/projects/implementation/SyncOperationLocationPollingStrategy.java","src/main/java/com/azure/ai/projects/implementation/models/CreateOrUpdateRoutineRequest.java","src/main/java/com/azure/ai/projects/implementation/models/CreateSkillVersionRequest.java","src/main/java/com/azure/ai/projects/implementation/models/DispatchRoutineAsyncRequest.java","src/main/java/com/azure/ai/projects/implementation/models/FoundryFeaturesOptInKeys.java","src/main/java/com/azure/ai/projects/implementation/models/UpdateSkillRequest.java","src/main/java/com/azure/ai/projects/implementation/models/package-info.java","src/main/java/com/azure/ai/projects/implementation/package-info.java","src/main/java/com/azure/ai/projects/models/AIProjectIndex.java","src/main/java/com/azure/ai/projects/models/AgentClusterInsightRequest.java","src/main/java/com/azure/ai/projects/models/AgentClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/AgentDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/AgentEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/AgentInsight.java","src/main/java/com/azure/ai/projects/models/AgentInsightDetails.java","src/main/java/com/azure/ai/projects/models/AgentInsightEstimatedCost.java","src/main/java/com/azure/ai/projects/models/AgentInsightHighlightedTrace.java","src/main/java/com/azure/ai/projects/models/AgentInsightLinkedTrace.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitor.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorCreate.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorListItem.java","src/main/java/com/azure/ai/projects/models/AgentInsightMonitorUpdate.java","src/main/java/com/azure/ai/projects/models/AgentInsightOverviewSource.java","src/main/java/com/azure/ai/projects/models/AgentInsightPromptSurface.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFix.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFixChange.java","src/main/java/com/azure/ai/projects/models/AgentInsightProposedFixKind.java","src/main/java/com/azure/ai/projects/models/AgentInsightRecommendedAction.java","src/main/java/com/azure/ai/projects/models/AgentInsightRun.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunCreate.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunResult.java","src/main/java/com/azure/ai/projects/models/AgentInsightRunTrigger.java","src/main/java/com/azure/ai/projects/models/AgentInsightSeverity.java","src/main/java/com/azure/ai/projects/models/AgentInsightStatus.java","src/main/java/com/azure/ai/projects/models/AgentInsightSuspension.java","src/main/java/com/azure/ai/projects/models/AgentInsightTokenUsage.java","src/main/java/com/azure/ai/projects/models/AgentInsightUpdate.java","src/main/java/com/azure/ai/projects/models/AgentInsightsOverview.java","src/main/java/com/azure/ai/projects/models/AgentInsightsOverviewOverride.java","src/main/java/com/azure/ai/projects/models/AgentTaxonomyInput.java","src/main/java/com/azure/ai/projects/models/AgenticIdentityPreviewCredential.java","src/main/java/com/azure/ai/projects/models/ApiError.java","src/main/java/com/azure/ai/projects/models/ApiKeyCredential.java","src/main/java/com/azure/ai/projects/models/ArtifactProfile.java","src/main/java/com/azure/ai/projects/models/AttackStrategy.java","src/main/java/com/azure/ai/projects/models/AzureAIAgentTarget.java","src/main/java/com/azure/ai/projects/models/AzureAIModelTarget.java","src/main/java/com/azure/ai/projects/models/AzureAISearchIndex.java","src/main/java/com/azure/ai/projects/models/AzureOpenAIModelConfiguration.java","src/main/java/com/azure/ai/projects/models/BaseCredential.java","src/main/java/com/azure/ai/projects/models/BlobReference.java","src/main/java/com/azure/ai/projects/models/BlobReferenceSasCredential.java","src/main/java/com/azure/ai/projects/models/ChartCoordinate.java","src/main/java/com/azure/ai/projects/models/ClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/ClusterTokenUsage.java","src/main/java/com/azure/ai/projects/models/CodeBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/Connection.java","src/main/java/com/azure/ai/projects/models/ConnectionType.java","src/main/java/com/azure/ai/projects/models/ContinuousEvaluationRuleAction.java","src/main/java/com/azure/ai/projects/models/CosmosDBIndex.java","src/main/java/com/azure/ai/projects/models/CreateAsyncResponse.java","src/main/java/com/azure/ai/projects/models/CreateSkillVersionFromFilesBody.java","src/main/java/com/azure/ai/projects/models/CredentialType.java","src/main/java/com/azure/ai/projects/models/CronTrigger.java","src/main/java/com/azure/ai/projects/models/CustomCredential.java","src/main/java/com/azure/ai/projects/models/CustomRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/DailyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/DataGenerationJob.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobInputs.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputType.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobOutputWriteMode.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobResult.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobScenario.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobSourceType.java","src/main/java/com/azure/ai/projects/models/DataGenerationJobType.java","src/main/java/com/azure/ai/projects/models/DataGenerationModelOptions.java","src/main/java/com/azure/ai/projects/models/DataGenerationTokenUsage.java","src/main/java/com/azure/ai/projects/models/DatasetCredential.java","src/main/java/com/azure/ai/projects/models/DatasetDataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/DatasetEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/DatasetReference.java","src/main/java/com/azure/ai/projects/models/DatasetType.java","src/main/java/com/azure/ai/projects/models/DatasetVersion.java","src/main/java/com/azure/ai/projects/models/Deployment.java","src/main/java/com/azure/ai/projects/models/DeploymentType.java","src/main/java/com/azure/ai/projects/models/Dimension.java","src/main/java/com/azure/ai/projects/models/DispatchRoutineResult.java","src/main/java/com/azure/ai/projects/models/EmbeddingConfiguration.java","src/main/java/com/azure/ai/projects/models/EndpointBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/EntraIdCredential.java","src/main/java/com/azure/ai/projects/models/EvaluationComparisonInsightRequest.java","src/main/java/com/azure/ai/projects/models/EvaluationComparisonInsightResult.java","src/main/java/com/azure/ai/projects/models/EvaluationLevel.java","src/main/java/com/azure/ai/projects/models/EvaluationResult.java","src/main/java/com/azure/ai/projects/models/EvaluationResultSample.java","src/main/java/com/azure/ai/projects/models/EvaluationRule.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleAction.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleActionType.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleEventType.java","src/main/java/com/azure/ai/projects/models/EvaluationRuleFilter.java","src/main/java/com/azure/ai/projects/models/EvaluationRunClusterInsightRequest.java","src/main/java/com/azure/ai/projects/models/EvaluationRunClusterInsightResult.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultCompareItem.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultComparison.java","src/main/java/com/azure/ai/projects/models/EvaluationRunResultSummary.java","src/main/java/com/azure/ai/projects/models/EvaluationScheduleTask.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomy.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomyInput.java","src/main/java/com/azure/ai/projects/models/EvaluationTaxonomyInputType.java","src/main/java/com/azure/ai/projects/models/EvaluatorCategory.java","src/main/java/com/azure/ai/projects/models/EvaluatorCredentialInput.java","src/main/java/com/azure/ai/projects/models/EvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/EvaluatorDefinitionType.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationArtifacts.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationInputs.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJob.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationJobSourceType.java","src/main/java/com/azure/ai/projects/models/EvaluatorGenerationTokenUsage.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetric.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetricDirection.java","src/main/java/com/azure/ai/projects/models/EvaluatorMetricType.java","src/main/java/com/azure/ai/projects/models/EvaluatorType.java","src/main/java/com/azure/ai/projects/models/EvaluatorVersion.java","src/main/java/com/azure/ai/projects/models/FieldMapping.java","src/main/java/com/azure/ai/projects/models/FileDataGenerationJobOutput.java","src/main/java/com/azure/ai/projects/models/FileDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/FileDatasetVersion.java","src/main/java/com/azure/ai/projects/models/FolderDatasetVersion.java","src/main/java/com/azure/ai/projects/models/FoundryEvaluationTarget.java","src/main/java/com/azure/ai/projects/models/FoundryModelArtifactProfileCategory.java","src/main/java/com/azure/ai/projects/models/FoundryModelArtifactProfileSignal.java","src/main/java/com/azure/ai/projects/models/FoundryModelSourceType.java","src/main/java/com/azure/ai/projects/models/FoundryModelWarning.java","src/main/java/com/azure/ai/projects/models/FoundryModelWarningCode.java","src/main/java/com/azure/ai/projects/models/FoundryModelWeightType.java","src/main/java/com/azure/ai/projects/models/GenerationWarningType.java","src/main/java/com/azure/ai/projects/models/GitHubIssueEvent.java","src/main/java/com/azure/ai/projects/models/GitHubIssueRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/GraderAzureAIEvaluator.java","src/main/java/com/azure/ai/projects/models/HourlyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/HumanEvaluationPreviewRuleAction.java","src/main/java/com/azure/ai/projects/models/IndexType.java","src/main/java/com/azure/ai/projects/models/Insight.java","src/main/java/com/azure/ai/projects/models/InsightCluster.java","src/main/java/com/azure/ai/projects/models/InsightModelConfiguration.java","src/main/java/com/azure/ai/projects/models/InsightRequest.java","src/main/java/com/azure/ai/projects/models/InsightResult.java","src/main/java/com/azure/ai/projects/models/InsightSample.java","src/main/java/com/azure/ai/projects/models/InsightScheduleTask.java","src/main/java/com/azure/ai/projects/models/InsightSummary.java","src/main/java/com/azure/ai/projects/models/InsightType.java","src/main/java/com/azure/ai/projects/models/InsightsMetadata.java","src/main/java/com/azure/ai/projects/models/InvokeAgentInvocationsApiDispatchPayload.java","src/main/java/com/azure/ai/projects/models/InvokeAgentInvocationsApiRoutineAction.java","src/main/java/com/azure/ai/projects/models/InvokeAgentResponsesApiDispatchPayload.java","src/main/java/com/azure/ai/projects/models/InvokeAgentResponsesApiRoutineAction.java","src/main/java/com/azure/ai/projects/models/JobStatus.java","src/main/java/com/azure/ai/projects/models/ListVersionsRequestType.java","src/main/java/com/azure/ai/projects/models/LoraConfig.java","src/main/java/com/azure/ai/projects/models/ManagedAzureAISearchIndex.java","src/main/java/com/azure/ai/projects/models/ModelCredentialInput.java","src/main/java/com/azure/ai/projects/models/ModelDeployment.java","src/main/java/com/azure/ai/projects/models/ModelDeploymentSku.java","src/main/java/com/azure/ai/projects/models/ModelPendingUploadInput.java","src/main/java/com/azure/ai/projects/models/ModelPendingUploadResult.java","src/main/java/com/azure/ai/projects/models/ModelSamplingParams.java","src/main/java/com/azure/ai/projects/models/ModelSourceData.java","src/main/java/com/azure/ai/projects/models/ModelVersion.java","src/main/java/com/azure/ai/projects/models/MonthlyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/NoAuthenticationCredential.java","src/main/java/com/azure/ai/projects/models/OneTimeTrigger.java","src/main/java/com/azure/ai/projects/models/OperationStatus.java","src/main/java/com/azure/ai/projects/models/PendingUploadRequest.java","src/main/java/com/azure/ai/projects/models/PendingUploadResponse.java","src/main/java/com/azure/ai/projects/models/PendingUploadType.java","src/main/java/com/azure/ai/projects/models/PromptBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/PromptDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/PromptEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/RecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/RecurrenceTrigger.java","src/main/java/com/azure/ai/projects/models/RecurrenceType.java","src/main/java/com/azure/ai/projects/models/RedTeam.java","src/main/java/com/azure/ai/projects/models/RiskCategory.java","src/main/java/com/azure/ai/projects/models/Routine.java","src/main/java/com/azure/ai/projects/models/RoutineAction.java","src/main/java/com/azure/ai/projects/models/RoutineActionType.java","src/main/java/com/azure/ai/projects/models/RoutineAttemptSource.java","src/main/java/com/azure/ai/projects/models/RoutineAuthorization.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchIdentity.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchPayload.java","src/main/java/com/azure/ai/projects/models/RoutineDispatchPayloadType.java","src/main/java/com/azure/ai/projects/models/RoutineRun.java","src/main/java/com/azure/ai/projects/models/RoutineRunPhase.java","src/main/java/com/azure/ai/projects/models/RoutineTrigger.java","src/main/java/com/azure/ai/projects/models/RoutineTriggerType.java","src/main/java/com/azure/ai/projects/models/RubricBasedEvaluatorDefinition.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarning.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningCode.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningSeverity.java","src/main/java/com/azure/ai/projects/models/RubricGenerationInputQualityWarningSource.java","src/main/java/com/azure/ai/projects/models/SampleType.java","src/main/java/com/azure/ai/projects/models/SasCredential.java","src/main/java/com/azure/ai/projects/models/Schedule.java","src/main/java/com/azure/ai/projects/models/ScheduleProvisioningStatus.java","src/main/java/com/azure/ai/projects/models/ScheduleRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/ScheduleRun.java","src/main/java/com/azure/ai/projects/models/ScheduleTask.java","src/main/java/com/azure/ai/projects/models/ScheduleTaskType.java","src/main/java/com/azure/ai/projects/models/SimpleQnADataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/SimpleQnAFineTuningQuestionType.java","src/main/java/com/azure/ai/projects/models/SimulationSeedDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/SkillDetails.java","src/main/java/com/azure/ai/projects/models/SkillFileDetails.java","src/main/java/com/azure/ai/projects/models/SkillInlineContent.java","src/main/java/com/azure/ai/projects/models/SkillVersion.java","src/main/java/com/azure/ai/projects/models/TargetConfig.java","src/main/java/com/azure/ai/projects/models/TaxonomyCategory.java","src/main/java/com/azure/ai/projects/models/TaxonomySubCategory.java","src/main/java/com/azure/ai/projects/models/TestingCriterionAzureAIEvaluator.java","src/main/java/com/azure/ai/projects/models/TimerRoutineTrigger.java","src/main/java/com/azure/ai/projects/models/ToolDescription.java","src/main/java/com/azure/ai/projects/models/ToolUseFineTuningDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobOptions.java","src/main/java/com/azure/ai/projects/models/TracesDataGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/TracesEvaluatorGenerationJobSource.java","src/main/java/com/azure/ai/projects/models/TreatmentEffectType.java","src/main/java/com/azure/ai/projects/models/Trigger.java","src/main/java/com/azure/ai/projects/models/TriggerType.java","src/main/java/com/azure/ai/projects/models/UpdateModelVersionInput.java","src/main/java/com/azure/ai/projects/models/WeeklyRecurrenceSchedule.java","src/main/java/com/azure/ai/projects/models/package-info.java","src/main/java/com/azure/ai/projects/package-info.java","src/main/java/module-info.java"]} \ No newline at end of file From 53d5fcb08d055947669baadcbbdbdd494e85e34b Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 20:23:39 +0800 Subject: [PATCH 28/29] Suppress preview target RevApi changes --- sdk/ai/azure-ai-projects/revapi.json | 29 ++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/sdk/ai/azure-ai-projects/revapi.json b/sdk/ai/azure-ai-projects/revapi.json index 07dce1b6d71ef..77c4f519f81f4 100644 --- a/sdk/ai/azure-ai-projects/revapi.json +++ b/sdk/ai/azure-ai-projects/revapi.json @@ -32,6 +32,35 @@ "old": "method int com.azure.ai.projects.models.DataGenerationJobOptions::getMaxSamples() @ com.azure.ai.projects.models.TracesDataGenerationJobOptions", "new": "method java.lang.Integer com.azure.ai.projects.models.TracesDataGenerationJobOptions::getMaxSamples()", "justification": "Breaking change in preview models: traces maxSamples is now optional, so getMaxSamples returns Integer and setMaxSamples configures the value." + }, + { + "code": "java.method.parameterTypeChanged", + "old": "parameter void com.azure.ai.projects.models.AgentTaxonomyInput::(===com.azure.ai.projects.models.Target===, java.util.List)", + "new": "parameter void com.azure.ai.projects.models.AgentTaxonomyInput::(===com.azure.ai.projects.models.FoundryEvaluationTarget===, java.util.List)", + "justification": "Breaking change in preview models: Target was renamed to FoundryEvaluationTarget to clarify that the model represents an evaluation target." + }, + { + "code": "java.method.returnTypeChanged", + "old": "method com.azure.ai.projects.models.Target com.azure.ai.projects.models.AgentTaxonomyInput::getTarget()", + "new": "method com.azure.ai.projects.models.FoundryEvaluationTarget com.azure.ai.projects.models.AgentTaxonomyInput::getTarget()", + "justification": "Breaking change in preview models: Target was renamed to FoundryEvaluationTarget to clarify that the model represents an evaluation target." + }, + { + "code": "java.class.noLongerInheritsFromClass", + "old": "class com.azure.ai.projects.models.AzureAIAgentTarget", + "new": "class com.azure.ai.projects.models.AzureAIAgentTarget", + "justification": "Breaking change in preview models: AzureAIAgentTarget now inherits from the renamed FoundryEvaluationTarget base class." + }, + { + "code": "java.class.noLongerInheritsFromClass", + "old": "class com.azure.ai.projects.models.AzureAIModelTarget", + "new": "class com.azure.ai.projects.models.AzureAIModelTarget", + "justification": "Breaking change in preview models: AzureAIModelTarget now inherits from the renamed FoundryEvaluationTarget base class." + }, + { + "code": "java.class.removed", + "old": "class com.azure.ai.projects.models.Target", + "justification": "Breaking change in preview models: Target was renamed to FoundryEvaluationTarget to clarify that the model represents an evaluation target." } ] } From 57c5340602f17835bb03a3627527a1ad422a908a Mon Sep 17 00:00:00 2001 From: Mike Guo Date: Thu, 10 Sep 2026 20:24:32 +0800 Subject: [PATCH 29/29] Update AI TypeSpec commit pins --- sdk/ai/azure-ai-agents/tsp-location.yaml | 2 +- sdk/ai/azure-ai-projects/tsp-location.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/ai/azure-ai-agents/tsp-location.yaml b/sdk/ai/azure-ai-agents/tsp-location.yaml index 2710a8bc23cb2..eb4261d12127b 100644 --- a/sdk/ai/azure-ai-agents/tsp-location.yaml +++ b/sdk/ai/azure-ai-agents/tsp-location.yaml @@ -1,5 +1,5 @@ directory: specification/ai-foundry/data-plane/Foundry/src/sdk-java-azure-ai-agents -commit: 3cfd33d89eee4517b43b04435a01fea558a77202 +commit: 3a7e6d33ec41667a7c007d2d3ba8508d1c5baa6d repo: Azure/azure-rest-api-specs additionalDirectories: - specification/ai-foundry/data-plane/Foundry/src/agents diff --git a/sdk/ai/azure-ai-projects/tsp-location.yaml b/sdk/ai/azure-ai-projects/tsp-location.yaml index 5876a0959e58b..d1200cde3672b 100644 --- a/sdk/ai/azure-ai-projects/tsp-location.yaml +++ b/sdk/ai/azure-ai-projects/tsp-location.yaml @@ -1,5 +1,5 @@ directory: specification/ai-foundry/data-plane/Foundry/src/sdk-java-azure-ai-projects -commit: 3cfd33d89eee4517b43b04435a01fea558a77202 +commit: 3a7e6d33ec41667a7c007d2d3ba8508d1c5baa6d repo: Azure/azure-rest-api-specs additionalDirectories: - specification/ai-foundry/data-plane/Foundry/src/agent-insights