From 488b554c8590cfdd975efb2cbb6331d41d5ca29b Mon Sep 17 00:00:00 2001
From: Xiting Zhang
Date: Mon, 18 May 2026 13:06:01 -0700
Subject: [PATCH 01/13] [VoiceLive] Release initial GA version 1.0.0
---
sdk/voicelive/azure-ai-voicelive/CHANGELOG.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md b/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md
index 4bc0a844d528..d7cf6f25a886 100644
--- a/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md
+++ b/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md
@@ -1,6 +1,6 @@
# Release History
-## 1.0.0 (Unreleased)
+## 1.0.0 (2026-05-25)
This is the first General Availability (GA) release of the Azure VoiceLive client library for Java.
From bc91180c011914ba0cde26e5e2bbc34c9b0632df Mon Sep 17 00:00:00 2001
From: Xiting Zhang
Date: Mon, 18 May 2026 14:49:49 -0700
Subject: [PATCH 02/13] Align voice samples: en-US-AvaNeural voice, English
transcription, serialized audio sends
- Switch voice to AzureStandardVoice("en-US-AvaNeural") in MCPSample, VoiceAssistantSample, FunctionCallingSample (replaces OpenAIVoice ALLOY).
- Pin Whisper transcription language with setLanguage("en") to stop cross-language mis-detection.
- Block on the AudioCapture thread instead of fire-and-forget subscribe to sendInputAudio, preventing WebSocket send-sink FAIL_OVERFLOW.
- Add "Always respond in English" to assistant instructions.
- Add NEAR_FIELD AudioNoiseReduction to MCPSample for parity with VoiceAssistantSample.
- Drop unused OpenAIVoice/OpenAIVoiceName imports.
---
.../ai/voicelive/FunctionCallingSample.java | 21 ++++++++------
.../com/azure/ai/voicelive/MCPSample.java | 24 ++++++++--------
.../ai/voicelive/VoiceAssistantSample.java | 28 +++++++++----------
3 files changed, 38 insertions(+), 35 deletions(-)
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/FunctionCallingSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/FunctionCallingSample.java
index 67c23b671cc5..a9e471175428 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/FunctionCallingSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/FunctionCallingSample.java
@@ -16,10 +16,9 @@
import com.azure.ai.voicelive.models.InputAudioFormat;
import com.azure.ai.voicelive.models.InteractionModality;
import com.azure.ai.voicelive.models.ItemType;
-import com.azure.ai.voicelive.models.OpenAIVoice;
-import com.azure.ai.voicelive.models.OpenAIVoiceName;
import com.azure.ai.voicelive.models.OutputAudioFormat;
import com.azure.ai.voicelive.models.ResponseFunctionCallItem;
+import com.azure.ai.voicelive.models.AzureStandardVoice;
import com.azure.ai.voicelive.models.SessionUpdateConversationItemCreated;
import com.azure.ai.voicelive.models.SessionUpdateResponseFunctionCallArgumentsDone;
import com.azure.ai.voicelive.models.ServerEventType;
@@ -231,7 +230,7 @@ private static ClientEventSessionUpdate createSessionConfigWithFunctions() {
+ "When asked about weather, use the get_current_weather function. "
+ "Acknowledge when you're calling a function and present the results naturally in your response."
)
- .setVoice(BinaryData.fromObject(new OpenAIVoice(OpenAIVoiceName.ALLOY)))
+ .setVoice(BinaryData.fromObject(new AzureStandardVoice("en-US-AvaNeural")))
.setModalities(Arrays.asList(InteractionModality.TEXT, InteractionModality.AUDIO))
.setInputAudioFormat(InputAudioFormat.PCM16)
.setOutputAudioFormat(OutputAudioFormat.PCM16)
@@ -247,7 +246,7 @@ private static ClientEventSessionUpdate createSessionConfigWithFunctions() {
.setCreateResponse(true))
.setTools(functionTools)
.setInputAudioTranscription(
- new AudioInputTranscriptionOptions(AudioInputTranscriptionOptionsModel.WHISPER_1)
+ new AudioInputTranscriptionOptions(AudioInputTranscriptionOptionsModel.WHISPER_1).setLanguage("en")
);
return new ClientEventSessionUpdate(sessionOptions);
@@ -503,11 +502,15 @@ void startCapture() {
int bytesRead = microphone.read(buffer, 0, buffer.length);
if (bytesRead > 0) {
byte[] audioData = Arrays.copyOf(buffer, bytesRead);
- session.sendInputAudio(BinaryData.fromBytes(audioData))
- .subscribe(
- noValueEmitted -> { /* sendInputAudio returns Mono; no onNext values are ever emitted */ },
- error -> System.err.println("Error sending audio: " + error.getMessage())
- );
+ // Block on this capture thread so sends are serialized; fire-and-forget
+ // subscribes can flood the WebSocket send sink and trigger FAIL_OVERFLOW.
+ try {
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block();
+ } catch (Exception sendError) {
+ if (isCapturing.get()) {
+ System.err.println("Error sending audio: " + sendError.getMessage());
+ }
+ }
}
} catch (Exception e) {
if (isCapturing.get()) {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MCPSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MCPSample.java
index 8d47ddff21f9..cec8a6959612 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MCPSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MCPSample.java
@@ -11,8 +11,7 @@
import com.azure.ai.voicelive.models.MCPApprovalResponseRequestItem;
import com.azure.ai.voicelive.models.MCPApprovalType;
import com.azure.ai.voicelive.models.MCPServer;
-import com.azure.ai.voicelive.models.OpenAIVoice;
-import com.azure.ai.voicelive.models.OpenAIVoiceName;
+import com.azure.ai.voicelive.models.AzureStandardVoice;
import com.azure.ai.voicelive.models.ResponseMCPApprovalRequestItem;
import com.azure.ai.voicelive.models.ResponseMCPCallItem;
import com.azure.ai.voicelive.models.ServerEventResponseMcpCallArgumentsDone;
@@ -224,7 +223,7 @@ private static ClientEventSessionUpdate createSessionConfigWithMCPTools() {
+ "You can use MCP tools to search for information when needed. "
+ "When calling MCP tools, explain what you're doing and present the results naturally."
)
- .setVoice(BinaryData.fromObject(new OpenAIVoice(OpenAIVoiceName.ALLOY)))
+ .setVoice(BinaryData.fromObject(new AzureStandardVoice("en-US-AvaNeural")))
.setModalities(Arrays.asList(InteractionModality.TEXT, InteractionModality.AUDIO))
.setInputAudioFormat(InputAudioFormat.PCM16)
.setOutputAudioFormat(OutputAudioFormat.PCM16)
@@ -239,7 +238,7 @@ private static ClientEventSessionUpdate createSessionConfigWithMCPTools() {
.setCreateResponse(true))
.setTools(mcpTools)
.setInputAudioTranscription(
- new AudioInputTranscriptionOptions(AudioInputTranscriptionOptionsModel.WHISPER_1)
+ new AudioInputTranscriptionOptions(AudioInputTranscriptionOptionsModel.WHISPER_1).setLanguage("en")
);
return new ClientEventSessionUpdate(sessionOptions);
@@ -506,13 +505,16 @@ void startCapture() {
int bytesRead = microphone.read(buffer, 0, buffer.length);
if (bytesRead > 0) {
byte[] audioData = Arrays.copyOf(buffer, bytesRead);
- // sendInputAudio returns a cold Mono - it must be subscribed
- // for the audio to actually be sent over the WebSocket.
- session.sendInputAudio(BinaryData.fromBytes(audioData))
- .subscribe(
- noValueEmitted -> { /* sendInputAudio returns Mono; no onNext values are ever emitted */ },
- error -> System.err.println("Error sending audio: " + error.getMessage())
- );
+ // sendInputAudio returns a cold Mono. Block on this capture thread so
+ // sends are serialized; otherwise fire-and-forget subscribes can flood
+ // the WebSocket send sink and trigger FAIL_OVERFLOW.
+ try {
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block();
+ } catch (Exception sendError) {
+ if (isCapturing.get()) {
+ System.err.println("Error sending audio: " + sendError.getMessage());
+ }
+ }
}
} catch (Exception e) {
if (isCapturing.get()) {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/VoiceAssistantSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/VoiceAssistantSample.java
index a9fb90803d8d..9003da40f0fc 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/VoiceAssistantSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/VoiceAssistantSample.java
@@ -8,11 +8,10 @@
import com.azure.ai.voicelive.models.AudioInputTranscriptionOptionsModel;
import com.azure.ai.voicelive.models.AudioNoiseReduction;
import com.azure.ai.voicelive.models.AudioNoiseReductionType;
+import com.azure.ai.voicelive.models.AzureStandardVoice;
import com.azure.ai.voicelive.models.ClientEventSessionUpdate;
import com.azure.ai.voicelive.models.InputAudioFormat;
import com.azure.ai.voicelive.models.InteractionModality;
-import com.azure.ai.voicelive.models.OpenAIVoice;
-import com.azure.ai.voicelive.models.OpenAIVoiceName;
import com.azure.ai.voicelive.models.OutputAudioFormat;
import com.azure.ai.voicelive.models.ServerEventType;
import com.azure.ai.voicelive.models.ServerVadTurnDetection;
@@ -247,17 +246,16 @@ private void captureAudioLoop() {
// Send audio to VoiceLive service
byte[] audioChunk = Arrays.copyOf(buffer, bytesRead);
- // Send audio asynchronously using the session's audio buffer append
- session.sendInputAudio(BinaryData.fromBytes(audioChunk))
- .subscribe(
- noValueEmitted -> { /* sendInputAudio returns Mono; no onNext values are ever emitted */ }, // onNext
- error -> {
- // Only log non-interruption errors
- if (!error.getMessage().contains("cancelled")) {
- System.err.println("❌ Error sending audio: " + error.getMessage());
- }
- }
- );
+ // Block on this capture thread so sends are serialized; fire-and-forget
+ // subscribes can flood the WebSocket send sink and trigger FAIL_OVERFLOW.
+ try {
+ session.sendInputAudio(BinaryData.fromBytes(audioChunk)).block();
+ } catch (Exception sendError) {
+ String msg = sendError.getMessage();
+ if (isCapturing.get() && (msg == null || !msg.contains("cancelled"))) {
+ System.err.println("❌ Error sending audio: " + msg);
+ }
+ }
}
} catch (Exception e) {
if (isCapturing.get()) {
@@ -527,12 +525,12 @@ private static VoiceLiveSessionOptions createVoiceSessionOptions() {
.setCreateResponse(true);
// Create audio input transcription configuration
- AudioInputTranscriptionOptions transcriptionOptions = new AudioInputTranscriptionOptions(AudioInputTranscriptionOptionsModel.WHISPER_1);
+ AudioInputTranscriptionOptions transcriptionOptions = new AudioInputTranscriptionOptions(AudioInputTranscriptionOptionsModel.WHISPER_1).setLanguage("en");
VoiceLiveSessionOptions options = new VoiceLiveSessionOptions()
.setInstructions("You are a helpful AI voice assistant. Respond naturally and conversationally. Keep your responses concise but engaging. Speak as if having a real conversation.")
// Voice: OpenAIVoice (OpenAIVoiceName enum) or AzureStandardVoice/AzureCustomVoice/AzurePersonalVoice
- .setVoice(BinaryData.fromObject(new OpenAIVoice(OpenAIVoiceName.ALLOY)))
+ .setVoice(BinaryData.fromObject(new AzureStandardVoice("en-US-AvaNeural")))
.setModalities(Arrays.asList(InteractionModality.TEXT, InteractionModality.AUDIO))
.setInputAudioFormat(InputAudioFormat.PCM16)
.setOutputAudioFormat(OutputAudioFormat.PCM16)
From a6051a3e513416e601d4edf965495c2b2fff91f9 Mon Sep 17 00:00:00 2001
From: Xiting Zhang
Date: Tue, 19 May 2026 15:35:14 -0700
Subject: [PATCH 03/13] client changes
---
.../ai/voicelive/VoiceLiveAsyncClient.java | 53 +++++++++----
.../VoiceLiveSessionAsyncClient.java | 46 +++++++-----
.../voicelive/models/AgentSessionConfig.java | 31 --------
.../com/azure/ai/voicelive/AgentV2Sample.java | 2 +-
.../voicelive/VoiceLiveAsyncClientTest.java | 62 +++++++++++++---
.../livetests/VoiceLiveAudioFormatTests.java | 17 +++--
.../livetests/VoiceLiveAudioTests.java | 5 +-
.../livetests/VoiceLiveConversationTests.java | 11 +--
.../livetests/VoiceLiveToolCallTests.java | 18 ++---
.../VoiceLiveTranscriptionTests.java | 9 ++-
.../VoiceLiveTurnDetectionTests.java | 12 +--
.../VoiceLiveVoicePropertiesTests.java | 6 +-
.../models/AgentSessionConfigTest.java | 74 -------------------
13 files changed, 160 insertions(+), 186 deletions(-)
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveAsyncClient.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveAsyncClient.java
index 332886626312..1fc77dffb1f7 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveAsyncClient.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveAsyncClient.java
@@ -54,30 +54,30 @@ public final class VoiceLiveAsyncClient {
}
/**
- * Starts a new VoiceLiveSessionAsyncClient for real-time voice communication.
+ * Starts a new VoiceLiveSessionAsyncClient for real-time voice communication using the default
+ * service-side model configuration.
*
- * @param model The model to use for the session.
* @return A Mono containing the connected VoiceLiveSessionAsyncClient.
- * @throws NullPointerException if {@code model} is null.
*/
- public Mono startSession(String model) {
- Objects.requireNonNull(model, "'model' cannot be null");
-
- return Mono.fromCallable(() -> convertToWebSocketEndpoint(endpoint, model)).flatMap(wsEndpoint -> {
- VoiceLiveSessionAsyncClient session = createSessionClient(wsEndpoint, model, null);
+ public Mono startSession() {
+ return Mono.fromCallable(() -> convertToWebSocketEndpoint(endpoint, null)).flatMap(wsEndpoint -> {
+ VoiceLiveSessionAsyncClient session = createSessionClient(wsEndpoint, null, null);
return session.connect(additionalHeaders).thenReturn(session);
});
}
/**
- * Starts a new VoiceLiveSessionAsyncClient for real-time voice communication without specifying a model.
- * The model can be provided via custom query parameters or through the endpoint URL if required by the service.
+ * Starts a new VoiceLiveSessionAsyncClient for real-time voice communication.
*
+ * @param model The model to use for the session.
* @return A Mono containing the connected VoiceLiveSessionAsyncClient.
+ * @throws NullPointerException if {@code model} is null.
*/
- public Mono startSession() {
- return Mono.fromCallable(() -> convertToWebSocketEndpoint(endpoint, null)).flatMap(wsEndpoint -> {
- VoiceLiveSessionAsyncClient session = createSessionClient(wsEndpoint, null, null);
+ public Mono startSession(String model) {
+ Objects.requireNonNull(model, "'model' cannot be null");
+
+ return Mono.fromCallable(() -> convertToWebSocketEndpoint(endpoint, model)).flatMap(wsEndpoint -> {
+ VoiceLiveSessionAsyncClient session = createSessionClient(wsEndpoint, model, null);
return session.connect(additionalHeaders).thenReturn(session);
});
}
@@ -139,7 +139,7 @@ public Mono startSession(VoiceLiveRequestOptions re
public Mono startSession(AgentSessionConfig agentConfig) {
Objects.requireNonNull(agentConfig, "'agentConfig' cannot be null");
- return Mono.fromCallable(() -> convertToWebSocketEndpoint(endpoint, null, agentConfig.toQueryParameters()))
+ return Mono.fromCallable(() -> convertToWebSocketEndpoint(endpoint, null, toQueryParameters(agentConfig)))
.flatMap(wsEndpoint -> {
VoiceLiveSessionAsyncClient session = createSessionClient(wsEndpoint, null, agentConfig);
return session.connect(additionalHeaders).thenReturn(session);
@@ -165,7 +165,7 @@ public Mono startSession(AgentSessionConfig agentCo
Objects.requireNonNull(requestOptions, "'requestOptions' cannot be null");
// Merge agent config params with custom query params (custom params take precedence)
- Map mergedParams = new LinkedHashMap<>(agentConfig.toQueryParameters());
+ Map mergedParams = new LinkedHashMap<>(toQueryParameters(agentConfig));
if (requestOptions.getCustomQueryParameters() != null) {
mergedParams.putAll(requestOptions.getCustomQueryParameters());
}
@@ -196,6 +196,29 @@ private VoiceLiveSessionAsyncClient createSessionClient(URI wsEndpoint, String m
}
}
+ /**
+ * Converts an {@link AgentSessionConfig} to a map of WebSocket query parameters.
+ */
+ static Map toQueryParameters(AgentSessionConfig agentConfig) {
+ Map params = new LinkedHashMap<>();
+ params.put("agent-name", agentConfig.getAgentName());
+ params.put("agent-project-name", agentConfig.getProjectName());
+ if (agentConfig.getAgentVersion() != null && !agentConfig.getAgentVersion().isEmpty()) {
+ params.put("agent-version", agentConfig.getAgentVersion());
+ }
+ if (agentConfig.getConversationId() != null && !agentConfig.getConversationId().isEmpty()) {
+ params.put("conversation-id", agentConfig.getConversationId());
+ }
+ if (agentConfig.getAuthenticationIdentityClientId() != null
+ && !agentConfig.getAuthenticationIdentityClientId().isEmpty()) {
+ params.put("agent-authentication-identity-client-id", agentConfig.getAuthenticationIdentityClientId());
+ }
+ if (agentConfig.getFoundryResourceOverride() != null && !agentConfig.getFoundryResourceOverride().isEmpty()) {
+ params.put("foundry-resource-override", agentConfig.getFoundryResourceOverride());
+ }
+ return params;
+ }
+
/**
* Merges two HttpHeaders objects, with custom headers taking precedence.
*
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java
index 4d920b97b219..7372c005c35b 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java
@@ -5,6 +5,7 @@
import java.io.IOException;
import java.net.URI;
+import java.time.Duration;
import java.util.Base64;
import java.util.Locale;
import java.util.Objects;
@@ -493,14 +494,18 @@ private Mono parseToSessionUpdate(BinaryData data) {
// ============================================================================
/**
- * Transmits audio data from a byte array.
+ * Transmits audio data from BinaryData.
*
* @param audio The audio data to transmit.
* @return A Mono that completes when the audio is sent.
* @throws IllegalStateException if another audio stream is already being sent.
*/
- public Mono sendInputAudio(byte[] audio) {
+ public Mono sendInputAudio(BinaryData audio) {
Objects.requireNonNull(audio, "'audio' cannot be null");
+ return sendInputAudioInternal(audio.toBytes());
+ }
+
+ private Mono sendInputAudioInternal(byte[] audio) {
throwIfNotConnected();
if (!isSendingAudioStream.compareAndSet(false, true)) {
@@ -514,18 +519,6 @@ public Mono sendInputAudio(byte[] audio) {
return sendEvent(appendCommand).doFinally(signal -> isSendingAudioStream.set(false));
}
- /**
- * Transmits audio data from BinaryData.
- *
- * @param audio The audio data to transmit.
- * @return A Mono that completes when the audio is sent.
- * @throws IllegalStateException if another audio stream is already being sent.
- */
- public Mono sendInputAudio(BinaryData audio) {
- Objects.requireNonNull(audio, "'audio' cannot be null");
- return sendInputAudio(audio.toBytes());
- }
-
/**
* Clears the input audio buffer.
*
@@ -696,7 +689,12 @@ public Mono addItem(ConversationRequestItem item, String previousItemId) {
}
/**
- * Retrieves an item from the conversation.
+ * Sends a request to retrieve an item from the conversation.
+ *
+ * This method only sends the retrieval request; the requested item is delivered
+ * asynchronously by the service as a server event on the {@link #receiveEvents()} stream.
+ * Subscribe to {@link #receiveEvents()} to observe the response.
+ *
*
* @param itemId The ID of the item to retrieve.
* @return A Mono that completes when the retrieval request is sent.
@@ -734,18 +732,26 @@ public Mono deleteItem(String itemId) {
*
* @param itemId The ID of the item up to which to truncate the conversation.
* @param contentIndex The content index within the item to truncate to.
- * @param audioEndMilliseconds Inclusive duration up to which audio is truncated (in milliseconds).
+ * @param audioEnd Inclusive duration up to which audio is truncated. May be {@code null} or
+ * {@link Duration#ZERO} to indicate no audio truncation.
* @return A Mono that completes when the conversation is truncated.
- * @throws IllegalArgumentException if itemId is null or empty.
+ * @throws IllegalArgumentException if itemId is null or empty, or audioEnd is negative.
*/
- public Mono truncateConversation(String itemId, int contentIndex, int audioEndMilliseconds) {
+ public Mono truncateConversation(String itemId, int contentIndex, Duration audioEnd) {
if (itemId == null || itemId.isEmpty()) {
return Mono.error(new IllegalArgumentException("'itemId' cannot be null or empty"));
}
+ if (audioEnd != null && audioEnd.isNegative()) {
+ return Mono.error(new IllegalArgumentException("'audioEnd' cannot be negative"));
+ }
throwIfNotConnected();
+ long millis = audioEnd == null ? 0L : audioEnd.toMillis();
+ if (millis > Integer.MAX_VALUE) {
+ return Mono.error(new IllegalArgumentException("'audioEnd' exceeds the maximum supported value"));
+ }
ClientEventConversationItemTruncate truncateEvent
- = new ClientEventConversationItemTruncate(itemId, contentIndex, audioEndMilliseconds);
+ = new ClientEventConversationItemTruncate(itemId, contentIndex, (int) millis);
return sendEvent(truncateEvent);
}
@@ -758,7 +764,7 @@ public Mono truncateConversation(String itemId, int contentIndex, int audi
* @throws IllegalArgumentException if itemId is null or empty.
*/
public Mono truncateConversation(String itemId, int contentIndex) {
- return truncateConversation(itemId, contentIndex, 0);
+ return truncateConversation(itemId, contentIndex, Duration.ZERO);
}
// ============================================================================
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AgentSessionConfig.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AgentSessionConfig.java
index 038967c363b4..ad19a427f340 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AgentSessionConfig.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AgentSessionConfig.java
@@ -5,8 +5,6 @@
import com.azure.core.annotation.Fluent;
-import java.util.LinkedHashMap;
-import java.util.Map;
import java.util.Objects;
/**
@@ -169,33 +167,4 @@ public AgentSessionConfig setFoundryResourceOverride(String foundryResourceOverr
this.foundryResourceOverride = foundryResourceOverride;
return this;
}
-
- /**
- * Converts this configuration to query parameters for the WebSocket connection.
- *
- * @return A map of query parameter names to values.
- */
- public Map toQueryParameters() {
- Map params = new LinkedHashMap<>();
-
- // Required parameters
- params.put("agent-name", agentName);
- params.put("agent-project-name", projectName);
-
- // Optional parameters
- if (agentVersion != null && !agentVersion.isEmpty()) {
- params.put("agent-version", agentVersion);
- }
- if (conversationId != null && !conversationId.isEmpty()) {
- params.put("conversation-id", conversationId);
- }
- if (authenticationIdentityClientId != null && !authenticationIdentityClientId.isEmpty()) {
- params.put("agent-authentication-identity-client-id", authenticationIdentityClientId);
- }
- if (foundryResourceOverride != null && !foundryResourceOverride.isEmpty()) {
- params.put("foundry-resource-override", foundryResourceOverride);
- }
-
- return params;
- }
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AgentV2Sample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AgentV2Sample.java
index f6aaa185a126..b81fcde82156 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AgentV2Sample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AgentV2Sample.java
@@ -477,7 +477,7 @@ private void captureLoop() {
// sendInputAudio returns a cold Mono - it must be subscribed for the
// audio to actually be sent over the WebSocket.
- session.sendInputAudio(audioData)
+ session.sendInputAudio(BinaryData.fromBytes(audioData))
.subscribe(
noValueEmitted -> { /* sendInputAudio returns Mono; no onNext values are ever emitted */ },
error -> System.err.println("Error sending audio: " + error.getMessage())
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/VoiceLiveAsyncClientTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/VoiceLiveAsyncClientTest.java
index 41788c563209..f81cfe52203b 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/VoiceLiveAsyncClientTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/VoiceLiveAsyncClientTest.java
@@ -13,8 +13,11 @@
import reactor.core.publisher.Mono;
import java.net.URI;
+import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -74,6 +77,15 @@ void testStartSessionWithNullOptions() {
assertThrows(NullPointerException.class, () -> client.startSession((String) null));
}
+ @Test
+ void testStartSessionWithoutModel() {
+ // Act & Assert
+ assertDoesNotThrow(() -> {
+ Mono result = client.startSession();
+ assertNotNull(result);
+ });
+ }
+
@Test
void testStartSessionWithModelString() {
// Arrange
@@ -151,15 +163,6 @@ void testReturnTypeOptimization() {
});
}
- @Test
- void testStartSessionWithoutModel() {
- // Test that startSession() without parameters works
- assertDoesNotThrow(() -> {
- Mono sessionMono = client.startSession();
- assertNotNull(sessionMono);
- });
- }
-
@Test
void testStartSessionWithAgentConfig() {
// Arrange
@@ -224,4 +227,45 @@ void testStartSessionWithNullAgentConfigAndValidRequestOptions() {
assertThrows(NullPointerException.class, () -> client.startSession((AgentSessionConfig) null, requestOptions));
}
+ @Test
+ void testToQueryParametersWithRequiredOnly() {
+ AgentSessionConfig config = new AgentSessionConfig("my-agent", "my-project");
+
+ Map params = VoiceLiveAsyncClient.toQueryParameters(config);
+
+ assertEquals(2, params.size());
+ assertEquals("my-agent", params.get("agent-name"));
+ assertEquals("my-project", params.get("agent-project-name"));
+ }
+
+ @Test
+ void testToQueryParametersWithAllOptions() {
+ AgentSessionConfig config = new AgentSessionConfig("my-agent", "my-project").setAgentVersion("2.0")
+ .setConversationId("conversation-xyz")
+ .setAuthenticationIdentityClientId("auth-client-id")
+ .setFoundryResourceOverride("override-resource");
+
+ Map params = VoiceLiveAsyncClient.toQueryParameters(config);
+
+ assertEquals(6, params.size());
+ assertEquals("my-agent", params.get("agent-name"));
+ assertEquals("my-project", params.get("agent-project-name"));
+ assertEquals("2.0", params.get("agent-version"));
+ assertEquals("conversation-xyz", params.get("conversation-id"));
+ assertEquals("auth-client-id", params.get("agent-authentication-identity-client-id"));
+ assertEquals("override-resource", params.get("foundry-resource-override"));
+ }
+
+ @Test
+ void testToQueryParametersExcludesEmptyOptionalValues() {
+ AgentSessionConfig config
+ = new AgentSessionConfig("my-agent", "my-project").setAgentVersion("").setConversationId("");
+
+ Map params = VoiceLiveAsyncClient.toQueryParameters(config);
+
+ assertEquals(2, params.size());
+ assertFalse(params.containsKey("agent-version"));
+ assertFalse(params.containsKey("conversation-id"));
+ }
+
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioFormatTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioFormatTests.java
index 388a676647c2..bd61508405f9 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioFormatTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioFormatTests.java
@@ -155,8 +155,8 @@ public void testRealtimeServiceWithInputAudioFormat(String model, String audioFo
}
}
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
- session.sendInputAudio(getTrailingSilenceBytes(8000, 2.0)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(getTrailingSilenceBytes(8000, 2.0))).block(SEND_TIMEOUT);
boolean received = responseLatch.await(EVENT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
@@ -263,8 +263,9 @@ public void testRealtimeServiceWithInputAudioSamplingRate(String model, int samp
"Expected sampling rate " + samplingRate + ", got " + actualSamplingRate);
}
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
- session.sendInputAudio(getTrailingSilenceBytes(samplingRate, 2.0)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(getTrailingSilenceBytes(samplingRate, 2.0)))
+ .block(SEND_TIMEOUT);
boolean speechStarted = speechStartedLatch.await(EVENT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
Assertions.assertTrue(speechStarted, "Should receive speech started event");
@@ -351,8 +352,8 @@ public void testOutputFormatsWithAzureVoice(String model, String outputFormat, S
waitForSetup();
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
- session.sendInputAudio(getTrailingSilenceBytes()).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(getTrailingSilenceBytes())).block(SEND_TIMEOUT);
boolean received = responseLatch.await(EVENT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
@@ -427,8 +428,8 @@ public void testOutputFormatsWithOpenAIVoice(String model, String outputFormat,
waitForSetup();
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
- session.sendInputAudio(getTrailingSilenceBytes()).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(getTrailingSilenceBytes())).block(SEND_TIMEOUT);
boolean received = responseLatch.await(EVENT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioTests.java
index 2b697d5a0f73..13daf6f23d66 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioTests.java
@@ -15,6 +15,7 @@
import com.azure.ai.voicelive.models.SessionUpdateResponseAudioDelta;
import com.azure.ai.voicelive.models.VoiceLiveSessionOptions;
import com.azure.core.test.annotation.LiveOnly;
+import com.azure.core.util.BinaryData;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
@@ -91,7 +92,7 @@ public void testRealtimeServiceWithAudio(String model, String apiVersion) throws
Thread.sleep(SETUP_DELAY_MS);
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
boolean received = audioResponseLatch.await(EVENT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
@@ -166,7 +167,7 @@ public void testRealtimeServiceWithAudioEnhancements(String model, String apiVer
waitForSetup();
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
// Wait for events to be collected
Thread.sleep(EVENT_TIMEOUT_SECONDS * 1000);
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveConversationTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveConversationTests.java
index a756f9b604d9..c1b9a4011da4 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveConversationTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveConversationTests.java
@@ -26,6 +26,7 @@
import org.junit.jupiter.params.provider.MethodSource;
import java.io.IOException;
+import java.time.Duration;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
@@ -101,8 +102,8 @@ public void testRealtimeServiceRetrieveItem(String model, String apiVersion)
waitForSetup();
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
- session.sendInputAudio(getTrailingSilenceBytes()).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(getTrailingSilenceBytes())).block(SEND_TIMEOUT);
boolean outputReceived = outputItemLatch.await(EVENT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
Assertions.assertTrue(outputReceived, "Should receive output item done event");
@@ -193,15 +194,15 @@ public void testRealtimeServiceTruncateItem(String model, String apiVersion)
waitForSetup();
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
- session.sendInputAudio(getTrailingSilenceBytes()).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(getTrailingSilenceBytes())).block(SEND_TIMEOUT);
boolean outputReceived = outputItemLatch.await(EVENT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
Assertions.assertTrue(outputReceived, "Should receive output item done event");
Assertions.assertNotNull(outputItemId.get(), "Output item ID should not be null");
// Truncate the conversation item at 1000ms
- session.truncateConversation(outputItemId.get(), 0, 1000).block(SEND_TIMEOUT);
+ session.truncateConversation(outputItemId.get(), 0, Duration.ofMillis(1000)).block(SEND_TIMEOUT);
boolean truncated = truncateLatch.await(EVENT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
Assertions.assertTrue(truncated, "Should receive conversation item truncated event");
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveToolCallTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveToolCallTests.java
index 755ab6db1b57..543fb532afd5 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveToolCallTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveToolCallTests.java
@@ -138,7 +138,7 @@ private void doTestRealtimeServiceToolCall(String model, String apiVersion)
// Send audio and response.create() in tight succession to beat server VAD.
// With gpt-realtime, the default server VAD detects speech, auto-commits the
// buffer and triggers its own response before a delayed response.create() arrives.
- session.sendInputAudio(audioData)
+ session.sendInputAudio(BinaryData.fromBytes(audioData))
.then(session.sendEvent(new ClientEventResponseCreate()))
.block(SEND_TIMEOUT);
@@ -233,8 +233,8 @@ public void testRealtimeServiceToolChoice(String model, String apiVersion)
session.sendEvent(new ClientEventSessionUpdate(sessionOptions)).block(SEND_TIMEOUT);
waitForSetup();
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
- session.sendInputAudio(getTrailingSilenceBytes()).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(getTrailingSilenceBytes())).block(SEND_TIMEOUT);
boolean done = responseDoneLatch.await(EVENT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
Assertions.assertTrue(done, "Should receive response done event");
@@ -351,8 +351,8 @@ public void testRealtimeServiceToolCallParameter(String model, String apiVersion
waitForSetup();
// Send audio + trailing silence
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
- session.sendInputAudio(getTrailingSilenceBytes()).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(getTrailingSilenceBytes())).block(SEND_TIMEOUT);
// Wait for RESPONSE_DONE that contains the function call.
// This ensures all interleaved audio_transcript events from the same response
@@ -499,8 +499,8 @@ public void testRealtimeServiceLiveSessionUpdate(String model, String apiVersion
session.sendEvent(new ClientEventSessionUpdate(sessionOptionsNoTools)).block(SEND_TIMEOUT);
waitForSetup();
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
- session.sendInputAudio(getTrailingSilenceBytes()).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(getTrailingSilenceBytes())).block(SEND_TIMEOUT);
boolean phase1Done = phase1Latch.await(EVENT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
Assertions.assertTrue(phase1Done, "Phase 1: Should receive audio transcript done event");
@@ -527,8 +527,8 @@ public void testRealtimeServiceLiveSessionUpdate(String model, String apiVersion
session.sendEvent(new ClientEventSessionUpdate(sessionOptionsWithTools)).block(SEND_TIMEOUT);
waitForSetup();
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
- session.sendInputAudio(getTrailingSilenceBytes()).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(getTrailingSilenceBytes())).block(SEND_TIMEOUT);
boolean phase2Done = phase2Latch.await(EVENT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
Assertions.assertTrue(phase2Done, "Phase 2: Should receive function call after adding tools");
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTranscriptionTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTranscriptionTests.java
index 6b81c311e1b3..280af11534c3 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTranscriptionTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTranscriptionTests.java
@@ -13,6 +13,7 @@
import com.azure.ai.voicelive.models.ServerEventType;
import com.azure.ai.voicelive.models.SessionUpdateConversationItemInputAudioTranscriptionCompleted;
import com.azure.ai.voicelive.models.VoiceLiveSessionOptions;
+import com.azure.core.util.BinaryData;
import com.azure.core.test.annotation.LiveOnly;
import org.junit.jupiter.api.Assertions;
import reactor.core.Disposable;
@@ -92,8 +93,8 @@ public void testInputAudioTranscriptionWithWhisper(String model, String apiVersi
waitForSetup();
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
- session.sendInputAudio(getTrailingSilenceBytes()).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(getTrailingSilenceBytes())).block(SEND_TIMEOUT);
boolean received = transcriptionLatch.await(EVENT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
@@ -168,8 +169,8 @@ public void testInputAudioTranscriptionWithGpt4oTranscribe(String transcriptionM
waitForSetup();
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
- session.sendInputAudio(getTrailingSilenceBytes()).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(getTrailingSilenceBytes())).block(SEND_TIMEOUT);
boolean received = transcriptionLatch.await(EVENT_TIMEOUT_SECONDS, TimeUnit.SECONDS);
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTurnDetectionTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTurnDetectionTests.java
index 5cb735b4fdb5..730752e64c2a 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTurnDetectionTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTurnDetectionTests.java
@@ -16,6 +16,7 @@
import com.azure.ai.voicelive.models.TurnDetection;
import com.azure.ai.voicelive.models.VoiceLiveSessionOptions;
import com.azure.core.test.annotation.LiveOnly;
+import com.azure.core.util.BinaryData;
import org.junit.jupiter.api.Assertions;
import reactor.core.Disposable;
import org.junit.jupiter.params.ParameterizedTest;
@@ -111,7 +112,7 @@ private void doTestLongTtsVadDuration(String model, String apiVersion) throws In
session.sendEvent(new ClientEventSessionUpdate(sessionOptions)).block(SEND_TIMEOUT);
waitForSetup();
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
// Python: _wait_for_event(conn, {RESPONSE_AUDIO_DELTA}, 30)
boolean received = audioDeltaLatch.await(30, TimeUnit.SECONDS);
@@ -209,8 +210,8 @@ private void doTestMultilingual(String description, String model, TurnDetection
session.sendEvent(new ClientEventSessionUpdate(sessionOptions)).block(SEND_TIMEOUT);
waitForSetup();
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
- session.sendInputAudio(getTrailingSilenceBytes()).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(getTrailingSilenceBytes())).block(SEND_TIMEOUT);
// Python uses _collect_event which collects events over a timeout period
Thread.sleep(EVENT_TIMEOUT_SECONDS * 1000);
@@ -329,9 +330,10 @@ private void doTestEou(String description, TurnDetection turnDetection, String a
session.sendEvent(new ClientEventSessionUpdate(sessionOptions)).block(SEND_TIMEOUT);
waitForSetup();
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
// Python: _get_trailing_silence_bytes(duration_s=0.5)
- session.sendInputAudio(getTrailingSilenceBytes(DEFAULT_SAMPLE_RATE, 0.5)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(getTrailingSilenceBytes(DEFAULT_SAMPLE_RATE, 0.5)))
+ .block(SEND_TIMEOUT);
// Python: _collect_event(conn, event_type=ServerEventType.RESPONSE_DONE)
Thread.sleep(EVENT_TIMEOUT_SECONDS * 1000);
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java
index 90044e045f4c..ffc6618c4df6 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java
@@ -94,8 +94,8 @@ public void testRealtimeServiceWithVoiceProperties(String model, String apiVersi
waitForSetup();
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
- session.sendInputAudio(getTrailingSilenceBytes()).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(getTrailingSilenceBytes())).block(SEND_TIMEOUT);
boolean received = responseLatch.await(EVENT_TIMEOUT_SECONDS, java.util.concurrent.TimeUnit.SECONDS);
@@ -171,7 +171,7 @@ public void testRealtimeServiceWithAudioTimestampAndViseme(String model, String
waitForSetup();
- session.sendInputAudio(audioData).block(SEND_TIMEOUT);
+ session.sendInputAudio(BinaryData.fromBytes(audioData)).block(SEND_TIMEOUT);
Thread.sleep(10000);
collectingEvents.set(false);
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/AgentSessionConfigTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/AgentSessionConfigTest.java
index 7beb7d875e0f..76500449881d 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/AgentSessionConfigTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/AgentSessionConfigTest.java
@@ -83,78 +83,4 @@ void testOptionalPropertiesDefaultToNull() {
assertNull(config.getAuthenticationIdentityClientId());
assertNull(config.getFoundryResourceOverride());
}
-
- @Test
- void testToQueryParametersWithRequiredOnly() {
- // Arrange
- AgentSessionConfig config = new AgentSessionConfig("my-agent", "my-project");
-
- // Act
- Map params = config.toQueryParameters();
-
- // Assert
- assertNotNull(params);
- assertEquals(2, params.size());
- assertEquals("my-agent", params.get("agent-name"));
- assertEquals("my-project", params.get("agent-project-name"));
- }
-
- @Test
- void testToQueryParametersWithAllOptions() {
- // Arrange
- AgentSessionConfig config = new AgentSessionConfig("my-agent", "my-project").setAgentVersion("2.0")
- .setConversationId("conversation-xyz")
- .setAuthenticationIdentityClientId("auth-client-id")
- .setFoundryResourceOverride("override-resource");
-
- // Act
- Map params = config.toQueryParameters();
-
- // Assert
- assertNotNull(params);
- assertEquals(6, params.size());
- assertEquals("my-agent", params.get("agent-name"));
- assertEquals("my-project", params.get("agent-project-name"));
- assertEquals("2.0", params.get("agent-version"));
- assertEquals("conversation-xyz", params.get("conversation-id"));
- assertEquals("auth-client-id", params.get("agent-authentication-identity-client-id"));
- assertEquals("override-resource", params.get("foundry-resource-override"));
- }
-
- @Test
- void testToQueryParametersExcludesEmptyStrings() {
- // Arrange
- AgentSessionConfig config
- = new AgentSessionConfig("my-agent", "my-project").setAgentVersion("").setConversationId("");
-
- // Act
- Map params = config.toQueryParameters();
-
- // Assert
- assertNotNull(params);
- assertEquals(2, params.size());
- assertTrue(params.containsKey("agent-name"));
- assertTrue(params.containsKey("agent-project-name"));
- assertFalse(params.containsKey("agent-version"));
- assertFalse(params.containsKey("conversation-id"));
- }
-
- @Test
- void testToQueryParametersWithSomeOptionalParams() {
- // Arrange
- AgentSessionConfig config = new AgentSessionConfig("supervisor", "ai-project").setAgentVersion("1.5");
-
- // Act
- Map params = config.toQueryParameters();
-
- // Assert
- assertNotNull(params);
- assertEquals(3, params.size());
- assertEquals("supervisor", params.get("agent-name"));
- assertEquals("ai-project", params.get("agent-project-name"));
- assertEquals("1.5", params.get("agent-version"));
- assertFalse(params.containsKey("conversation-id"));
- assertFalse(params.containsKey("agent-authentication-identity-client-id"));
- assertFalse(params.containsKey("foundry-resource-override"));
- }
}
From 0e5d9ba1cea504657c91eb30a9baebf088ceeeaa Mon Sep 17 00:00:00 2001
From: Xiting Zhang
Date: Tue, 19 May 2026 16:31:24 -0700
Subject: [PATCH 04/13] Polish GA API: rename event base types, Pascal-case
Mcp*, Duration-based truncateConversation, trim service versions to GA
- ClientEvent -> SessionClientEvent and SessionUpdate -> SessionServerEvent (client/server symmetry)
- MCP* -> Mcp* Pascal-case across model types
- truncateConversation(String,int,int) -> truncateConversation(String,int,Duration); preserved 2-arg overload
- Remove sendInputAudio(byte[]) in favor of BinaryData overload
- AgentSessionConfig.toQueryParameters() moved internal
- AnimationOptions: setOutputs->setOutputTypes; setAnimation->setAnimationOptions
- LogProbProperties: getLogprob->getLogProb; getLogprobs->getLogProbs
- VoiceLiveServiceVersion: keep only GA versions V2025_10_01 and V2026_04_10 (latest)
- Restored no-arg startSession() overload
- Update README, CHANGELOG, samples, and tests to match
- Fix checkstyle unused imports in AgentSessionConfigTest
---
sdk/voicelive/azure-ai-voicelive/CHANGELOG.md | 22 +-
sdk/voicelive/azure-ai-voicelive/README.md | 10 +-
.../ai/voicelive/VoiceLiveServiceVersion.java | 11 +-
.../VoiceLiveSessionAsyncClient.java | 30 +-
.../implementation/VoiceLiveTracer.java | 20 +-
.../ai/voicelive/models/AnimationOptions.java | 62 +--
...rConfiguration.java => AvatarOptions.java} | 358 +++++++++---------
.../ClientEventConversationItemCreate.java | 2 +-
.../ClientEventConversationItemDelete.java | 2 +-
.../ClientEventConversationItemRetrieve.java | 2 +-
.../ClientEventConversationItemTruncate.java | 2 +-
.../ClientEventInputAudioBufferAppend.java | 2 +-
.../ClientEventInputAudioBufferClear.java | 2 +-
.../ClientEventInputAudioBufferCommit.java | 2 +-
.../models/ClientEventInputAudioClear.java | 2 +-
.../ClientEventInputAudioTurnAppend.java | 2 +-
.../ClientEventInputAudioTurnCancel.java | 2 +-
.../models/ClientEventInputAudioTurnEnd.java | 2 +-
.../ClientEventInputAudioTurnStart.java | 2 +-
.../ClientEventOutputAudioBufferClear.java | 2 +-
.../models/ClientEventResponseCancel.java | 2 +-
.../models/ClientEventResponseCreate.java | 2 +-
.../ClientEventSessionAvatarConnect.java | 2 +-
.../models/ClientEventSessionUpdate.java | 2 +-
.../models/ConversationRequestItem.java | 2 +-
.../azure/ai/voicelive/models/IceServer.java | 46 +--
.../voicelive/models/LogProbProperties.java | 46 +--
.../MCPApprovalResponseRequestItem.java | 40 +-
.../ai/voicelive/models/MCPApprovalType.java | 34 +-
.../azure/ai/voicelive/models/MCPServer.java | 74 ++--
.../azure/ai/voicelive/models/MCPTool.java | 38 +-
.../ResponseMCPApprovalRequestItem.java | 44 ++-
.../ResponseMCPApprovalResponseItem.java | 44 ++-
.../voicelive/models/ResponseMCPCallItem.java | 52 +--
.../models/ResponseMCPListToolItem.java | 48 +--
.../ServerEventMcpListToolsCompleted.java | 2 +-
.../models/ServerEventMcpListToolsFailed.java | 2 +-
.../ServerEventMcpListToolsInProgress.java | 2 +-
.../ServerEventOutputAudioBufferCleared.java | 2 +-
...esponseAudioTranscriptAnnotationAdded.java | 2 +-
...rEventResponseFileSearchCallCompleted.java | 2 +-
...EventResponseFileSearchCallInProgress.java | 2 +-
...rEventResponseFileSearchCallSearching.java | 2 +-
...verEventResponseMcpCallArgumentsDelta.java | 2 +-
...rverEventResponseMcpCallArgumentsDone.java | 2 +-
.../ServerEventResponseMcpCallCompleted.java | 2 +-
.../ServerEventResponseMcpCallFailed.java | 2 +-
.../ServerEventResponseMcpCallInProgress.java | 2 +-
.../models/ServerEventResponseVideoDelta.java | 2 +-
...erEventResponseWebSearchCallCompleted.java | 2 +-
...rEventResponseWebSearchCallInProgress.java | 2 +-
...erEventResponseWebSearchCallSearching.java | 2 +-
.../ServerEventSessionAvatarSwitchToIdle.java | 2 +-
...verEventSessionAvatarSwitchToSpeaking.java | 2 +-
.../voicelive/models/ServerEventWarning.java | 2 +-
...ientEvent.java => SessionClientEvent.java} | 45 +--
.../voicelive/models/SessionResponseItem.java | 8 +-
...ionUpdate.java => SessionServerEvent.java} | 45 +--
.../models/SessionUpdateAvatarConnecting.java | 2 +-
.../SessionUpdateConversationItemCreated.java | 2 +-
.../SessionUpdateConversationItemDeleted.java | 2 +-
...nItemInputAudioTranscriptionCompleted.java | 38 +-
...ationItemInputAudioTranscriptionDelta.java | 42 +-
...tionItemInputAudioTranscriptionFailed.java | 2 +-
...essionUpdateConversationItemRetrieved.java | 2 +-
...essionUpdateConversationItemTruncated.java | 2 +-
.../voicelive/models/SessionUpdateError.java | 2 +-
.../SessionUpdateInputAudioBufferCleared.java | 2 +-
...essionUpdateInputAudioBufferCommitted.java | 2 +-
...onUpdateInputAudioBufferSpeechStarted.java | 2 +-
...onUpdateInputAudioBufferSpeechStopped.java | 2 +-
...pdateResponseAnimationBlendshapeDelta.java | 2 +-
...UpdateResponseAnimationBlendshapeDone.java | 2 +-
...ionUpdateResponseAnimationVisemeDelta.java | 2 +-
...sionUpdateResponseAnimationVisemeDone.java | 2 +-
.../SessionUpdateResponseAudioDelta.java | 2 +-
.../SessionUpdateResponseAudioDone.java | 2 +-
...sionUpdateResponseAudioTimestampDelta.java | 2 +-
...ssionUpdateResponseAudioTimestampDone.java | 2 +-
...ionUpdateResponseAudioTranscriptDelta.java | 2 +-
...sionUpdateResponseAudioTranscriptDone.java | 2 +-
...SessionUpdateResponseContentPartAdded.java | 2 +-
.../SessionUpdateResponseContentPartDone.java | 2 +-
.../models/SessionUpdateResponseCreated.java | 2 +-
.../models/SessionUpdateResponseDone.java | 2 +-
...ateResponseFunctionCallArgumentsDelta.java | 2 +-
...dateResponseFunctionCallArgumentsDone.java | 2 +-
.../SessionUpdateResponseOutputItemAdded.java | 2 +-
.../SessionUpdateResponseOutputItemDone.java | 2 +-
.../SessionUpdateResponseTextDelta.java | 2 +-
.../models/SessionUpdateResponseTextDone.java | 2 +-
.../models/SessionUpdateSessionCreated.java | 2 +-
.../models/SessionUpdateSessionUpdated.java | 2 +-
.../models/VoiceLiveSessionOptions.java | 120 +++---
.../models/VoiceLiveSessionResponse.java | 120 +++---
.../models/VoiceLiveToolDefinition.java | 2 +-
.../META-INF/azure-ai-voicelive_metadata.json | 2 +-
.../com/azure/ai/voicelive/AgentV2Sample.java | 6 +-
.../ai/voicelive/AudioPlaybackSample.java | 4 +-
.../BasicVoiceConversationSample.java | 4 +-
.../ai/voicelive/FunctionCallingSample.java | 4 +-
.../com/azure/ai/voicelive/MCPSample.java | 36 +-
.../ai/voicelive/MicrophoneInputSample.java | 4 +-
.../com/azure/ai/voicelive/ReadmeSamples.java | 22 +-
.../ai/voicelive/VoiceAssistantSample.java | 4 +-
.../telemetry/GlobalTracingSample.java | 2 +-
.../voicelive/VoiceLiveClientBuilderTest.java | 6 +-
.../implementation/VoiceLiveTracerTest.java | 30 +-
.../livetests/VoiceLiveTestBase.java | 4 +-
.../VoiceLiveVoicePropertiesTests.java | 3 +-
.../models/AgentSessionConfigTest.java | 5 -
.../AvatarAndAudioBufferEventsTest.java | 6 +-
.../voicelive/models/MCPApprovalTypeTest.java | 36 +-
.../ai/voicelive/models/MCPServerTest.java | 38 +-
.../ResponseMCPApprovalRequestItemTest.java | 30 +-
.../ResponseMCPApprovalResponseItemTest.java | 38 +-
.../models/ResponseMCPCallItemTest.java | 18 +-
.../models/ResponseMCPListToolItemTest.java | 26 +-
.../TranscriptionAndIncludeOptionsTest.java | 24 +-
.../models/WebAndFileSearchTest.java | 2 +-
.../azure-ai-voicelive/tsp-location.yaml | 2 +-
121 files changed, 965 insertions(+), 932 deletions(-)
rename sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/{AvatarConfiguration.java => AvatarOptions.java} (81%)
rename sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/{ClientEvent.java => SessionClientEvent.java} (83%)
rename sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/{SessionUpdate.java => SessionServerEvent.java} (92%)
diff --git a/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md b/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md
index d7cf6f25a886..908659614339 100644
--- a/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md
+++ b/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md
@@ -4,6 +4,23 @@
This is the first General Availability (GA) release of the Azure VoiceLive client library for Java.
+### Breaking Changes
+
+- Renamed base event types for client↔server symmetry:
+ - `ClientEvent` (base for outbound events) → `SessionClientEvent`
+ - `SessionUpdate` (base for inbound events) → `SessionServerEvent`
+ - `VoiceLiveSessionAsyncClient.receiveEvents()` now returns `Flux`
+ - `VoiceLiveSessionAsyncClient.sendEvent(...)` now accepts `SessionClientEvent`
+- Renamed MCP-related model types to Pascal case (`MCP*` → `Mcp*`): `McpApprovalType`, `McpServer`, `McpTool`, `McpApprovalResponseRequestItem`, `ResponseMcpApprovalRequestItem`, `ResponseMcpApprovalResponseItem`, `ResponseMcpCallItem`, `ResponseMcpListToolItem`.
+- `VoiceLiveSessionAsyncClient.truncateConversation(String, int, int)` now accepts a `java.time.Duration` for the audio-end position instead of raw milliseconds. The two-argument overload (`itemId`, `contentIndex`) is preserved and defaults to `Duration.ZERO`.
+- Removed `sendInputAudio(byte[])`; use `sendInputAudio(BinaryData)` (wrap raw bytes with `BinaryData.fromBytes(...)`).
+- `AgentSessionConfig.toQueryParameters()` is no longer part of the public API; the conversion is handled internally by `VoiceLiveAsyncClient`.
+- `VoiceLiveSessionOptions.setAnimation(...)` renamed to `setAnimationOptions(...)`.
+- `AnimationOptions.setOutputs(...)` / `getOutputs()` renamed to `setOutputTypes(...)` / `getOutputTypes()`.
+- `LogProbProperties.getLogprob()` renamed to `getLogProb()`.
+- `SessionUpdateConversationItemInputAudioTranscriptionCompleted.getLogprobs()` renamed to `getLogProbs()`.
+- Removed preview service versions from `VoiceLiveServiceVersion`; only GA versions remain (`V2025_10_01`, `V2026_04_10`). The latest version is now `V2026_04_10`.
+
### Features Added
- **Avatar voice synchronization** for video avatars:
@@ -18,7 +35,7 @@ This is the first General Availability (GA) release of the Azure VoiceLive clien
- **Transcription enhancements**:
- New transcription models on `AudioInputTranscriptionOptionsModel`: `GPT_4O_TRANSCRIBE_DIARIZE`, `MAI_TRANSCRIBE_1`
- New `TranscriptionPhrase` and `TranscriptionWord` types with timing/confidence information
- - `SessionUpdateConversationItemInputAudioTranscriptionCompleted` now exposes `getLogprobs()` and `getPhrases()`
+ - `SessionUpdateConversationItemInputAudioTranscriptionCompleted` now exposes `getLogProbs()` and `getPhrases()`
- New `ServerEventResponseAudioTranscriptAnnotationAdded` event
- **Session include options and metadata**:
- New `SessionIncludeOption` expandable enum for opting into additional response payloads (e.g. logprobs, phrases, file-search results)
@@ -26,11 +43,12 @@ This is the first General Availability (GA) release of the Azure VoiceLive clien
- **Personal voice models**: added `PersonalVoiceModels.DRAGON_HDOMNI_LATEST_NEURAL` and `MAI_VOICE_1`
- **Reasoning token usage**: `OutputTokenDetails.getReasoningTokens()` exposes reasoning token counts
- **Interim response on response.create**: `ResponseCreateParams.setInterimResponse(BinaryData)` lets callers attach interim response config to a single response request
+- Restored no-arg `VoiceLiveAsyncClient.startSession()` overload (uses the deployment's default model).
- Significantly improved Javadoc for `ServerVadTurnDetection`, `AzureCustomVoice`, `AzurePersonalVoice`, `AzureStandardVoice`, `AzureSemanticVadTurnDetection*`, and other model types
### Other Changes
-- Updated default service API version to track the latest TypeSpec spec.
+- Updated default service API version to `2026-04-10` (GA).
## 1.0.0-beta.6 (2026-05-01)
diff --git a/sdk/voicelive/azure-ai-voicelive/README.md b/sdk/voicelive/azure-ai-voicelive/README.md
index 99ace0c12523..07ebd0cbdd7d 100644
--- a/sdk/voicelive/azure-ai-voicelive/README.md
+++ b/sdk/voicelive/azure-ai-voicelive/README.md
@@ -422,8 +422,8 @@ Use [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) servers to
```java com.azure.ai.voicelive.mcp
// Configure MCP servers as tools
-MCPServer mcpServer = new MCPServer("deepwiki", "https://mcp.deepwiki.com/mcp")
- .setRequireApproval(BinaryData.fromObject(MCPApprovalType.ALWAYS));
+McpServer mcpServer = new McpServer("deepwiki", "https://mcp.deepwiki.com/mcp")
+ .setRequireApproval(BinaryData.fromObject(McpApprovalType.ALWAYS));
VoiceLiveSessionOptions options = new VoiceLiveSessionOptions()
.setTools(Arrays.asList(mcpServer))
@@ -436,10 +436,10 @@ session.receiveEvents()
SessionUpdateResponseOutputItemDone itemDone = (SessionUpdateResponseOutputItemDone) event;
SessionResponseItem item = itemDone.getItem();
- if (item instanceof ResponseMCPApprovalRequestItem) {
+ if (item instanceof ResponseMcpApprovalRequestItem) {
// Approve the tool call
- ResponseMCPApprovalRequestItem approvalRequest = (ResponseMCPApprovalRequestItem) item;
- MCPApprovalResponseRequestItem approval = new MCPApprovalResponseRequestItem(
+ ResponseMcpApprovalRequestItem approvalRequest = (ResponseMcpApprovalRequestItem) item;
+ McpApprovalResponseRequestItem approval = new McpApprovalResponseRequestItem(
approvalRequest.getId(), true);
ClientEventConversationItemCreate createItem = new ClientEventConversationItemCreate()
.setItem(approval);
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveServiceVersion.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveServiceVersion.java
index 97d8379cf214..2dcaa3476257 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveServiceVersion.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveServiceVersion.java
@@ -9,20 +9,15 @@
* Service version of VoiceLive.
*/
public enum VoiceLiveServiceVersion implements ServiceVersion {
- /**
- * Service version {@code 2025-05-01-preview}.
- */
- V2025_05_01_PREVIEW("2025-05-01-preview"),
-
/**
* Service version {@code 2025-10-01}.
*/
V2025_10_01("2025-10-01"),
/**
- * Service version {@code 2026-01-01-preview}.
+ * Service version {@code 2026-04-10}.
*/
- V2026_01_01_PREVIEW("2026-01-01-preview");
+ V2026_04_10("2026-04-10");
private final String version;
@@ -44,6 +39,6 @@ public String getVersion() {
* @return The latest {@link VoiceLiveServiceVersion}.
*/
public static VoiceLiveServiceVersion getLatest() {
- return V2026_01_01_PREVIEW;
+ return V2026_04_10;
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java
index 7372c005c35b..c28de05ef4cb 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java
@@ -14,7 +14,7 @@
import com.azure.ai.voicelive.implementation.VoiceLiveTracer;
import com.azure.ai.voicelive.models.AgentSessionConfig;
-import com.azure.ai.voicelive.models.ClientEvent;
+import com.azure.ai.voicelive.models.SessionClientEvent;
import com.azure.ai.voicelive.models.ClientEventConversationItemCreate;
import com.azure.ai.voicelive.models.ClientEventConversationItemDelete;
import com.azure.ai.voicelive.models.ClientEventConversationItemRetrieve;
@@ -32,7 +32,7 @@
import com.azure.ai.voicelive.models.ClientEventSessionAvatarConnect;
import com.azure.ai.voicelive.models.ClientEventSessionUpdate;
import com.azure.ai.voicelive.models.ConversationRequestItem;
-import com.azure.ai.voicelive.models.SessionUpdate;
+import com.azure.ai.voicelive.models.SessionServerEvent;
import com.azure.ai.voicelive.models.VoiceLiveSessionOptions;
import com.azure.core.credential.KeyCredential;
import com.azure.core.credential.TokenCredential;
@@ -111,7 +111,7 @@ public final class VoiceLiveSessionAsyncClient implements AsyncCloseable, AutoCl
private final Sinks.Many sendSink = Sinks.many().multicast().onBackpressureBuffer();
// Cached shared events flux — ensures tracing fires only once per event regardless of subscriber count
- private volatile Flux sharedEventsFlux;
+ private volatile Flux sharedEventsFlux;
// WebSocket connection state management
private final AtomicReference inboundRef = new AtomicReference<>();
@@ -364,7 +364,7 @@ public boolean isConnected() {
* @param event The client event to send.
* @return A Mono that completes when the command is sent.
*/
- public Mono sendEvent(ClientEvent event) {
+ public Mono sendEvent(SessionClientEvent event) {
Objects.requireNonNull(event, "'event' cannot be null");
throwIfNotConnected();
@@ -408,10 +408,10 @@ public Mono send(BinaryData data) {
}
/**
- * Receives parsed events from the service as strongly-typed SessionUpdate objects.
+ * Receives parsed events from the service as strongly-typed SessionServerEvent objects.
*
* This method provides a higher-level alternative to {@link #receive()} by automatically
- * parsing the raw BinaryData into the appropriate SessionUpdate subclass based on the
+ * parsing the raw BinaryData into the appropriate SessionServerEvent subclass based on the
* event type. This enables type-safe event handling and better developer experience.
*
*
@@ -419,11 +419,11 @@ public Mono send(BinaryData data) {
* to operate even if unknown event types are received.
*
*
- * @return A Flux of SessionUpdate objects representing parsed server events.
+ * @return A Flux of SessionServerEvent objects representing parsed server events.
*/
- public Flux receiveEvents() {
+ public Flux receiveEvents() {
throwIfNotConnected();
- Flux result = sharedEventsFlux;
+ Flux result = sharedEventsFlux;
if (result == null) {
synchronized (this) {
result = sharedEventsFlux;
@@ -469,21 +469,21 @@ private Flux receive() {
}
/**
- * Parses raw BinaryData into a SessionUpdate object.
+ * Parses raw BinaryData into a SessionServerEvent object.
*
* The generated code now uses JsonReaderHelper to avoid bufferObject() issues.
- * This method simply delegates to SessionUpdate.fromJson() for polymorphic deserialization.
+ * This method simply delegates to SessionServerEvent.fromJson() for polymorphic deserialization.
*
*
* @param data The raw binary data from the service.
- * @return A Mono containing the parsed SessionUpdate, or empty if parsing fails.
+ * @return A Mono containing the parsed SessionServerEvent, or empty if parsing fails.
*/
- private Mono parseToSessionUpdate(BinaryData data) {
+ private Mono parseToSessionUpdate(BinaryData data) {
return Mono.fromCallable(() -> {
try {
- return SessionUpdate.fromJson(com.azure.json.JsonProviders.createReader(data.toString()));
+ return SessionServerEvent.fromJson(com.azure.json.JsonProviders.createReader(data.toString()));
} catch (IOException e) {
- LOGGER.atError().addKeyValue("error", e.getMessage()).log("Failed to parse SessionUpdate");
+ LOGGER.atError().addKeyValue("error", e.getMessage()).log("Failed to parse SessionServerEvent");
return null;
}
}).filter(Objects::nonNull);
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/implementation/VoiceLiveTracer.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/implementation/VoiceLiveTracer.java
index ce7479195476..7ae23fa3aa9a 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/implementation/VoiceLiveTracer.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/implementation/VoiceLiveTracer.java
@@ -8,7 +8,7 @@
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;
-import com.azure.ai.voicelive.models.ClientEvent;
+import com.azure.ai.voicelive.models.SessionClientEvent;
import com.azure.ai.voicelive.models.ClientEventInputAudioBufferAppend;
import com.azure.ai.voicelive.models.ClientEventResponseCancel;
import com.azure.ai.voicelive.models.ClientEventResponseCreate;
@@ -16,7 +16,7 @@
import com.azure.ai.voicelive.models.ClientEventType;
import com.azure.ai.voicelive.models.ResponseTokenStatistics;
import com.azure.ai.voicelive.models.SessionResponse;
-import com.azure.ai.voicelive.models.SessionUpdate;
+import com.azure.ai.voicelive.models.SessionServerEvent;
import com.azure.ai.voicelive.models.SessionUpdateConversationItemCreated;
import com.azure.ai.voicelive.models.SessionUpdateError;
import com.azure.ai.voicelive.models.SessionUpdateErrorDetails;
@@ -454,7 +454,7 @@ private SpanBuilder childSpanBuilder(String spanName, String operationName) {
* @param event The client event being sent.
* @param jsonPayload The serialized JSON payload.
*/
- public void traceSend(ClientEvent event, String jsonPayload) {
+ public void traceSend(SessionClientEvent event, String jsonPayload) {
Context parentCtx = connectContext.get();
if (parentCtx == null) {
return;
@@ -516,7 +516,7 @@ public void traceSend(ClientEvent event, String jsonPayload) {
* @param update The parsed session update event.
* @param rawPayload The raw JSON payload string (for message size and content recording).
*/
- public void traceRecv(SessionUpdate update, String rawPayload) {
+ public void traceRecv(SessionServerEvent update, String rawPayload) {
Context parentCtx = connectContext.get();
if (parentCtx == null) {
return;
@@ -691,7 +691,7 @@ private static String extractRateLimits(String rawPayload) {
// Counter Tracking
// ============================================================================
- private void trackSendCounters(ClientEvent event, String jsonPayload) {
+ private void trackSendCounters(SessionClientEvent event, String jsonPayload) {
// Track audio bytes sent from input_audio_buffer.append
if (event instanceof ClientEventInputAudioBufferAppend) {
ClientEventInputAudioBufferAppend appendEvent = (ClientEventInputAudioBufferAppend) event;
@@ -863,7 +863,7 @@ private static String extractJsonNumberField(String json, String fieldName) {
return null;
}
- private void trackRecvCounters(SessionUpdate update) {
+ private void trackRecvCounters(SessionServerEvent update) {
// Track session ID from session.created / session.updated
if (update instanceof SessionUpdateSessionCreated) {
VoiceLiveSessionResponse session = ((SessionUpdateSessionCreated) update).getSession();
@@ -935,7 +935,7 @@ private void trackRecvCounters(SessionUpdate update) {
/**
* Tracks response metadata (id, conversation_id, finish_reasons) on the recv span.
*/
- private void trackResponseMetadata(SessionUpdate update, Span span) {
+ private void trackResponseMetadata(SessionServerEvent update, Span span) {
if (update instanceof SessionUpdateResponseDone) {
SessionResponse response = ((SessionUpdateResponseDone) update).getResponse();
if (response != null) {
@@ -972,7 +972,7 @@ private void trackResponseMetadata(SessionUpdate update, Span span) {
* conversation.item.created, response.output_item.added/done,
* and response.function_call_arguments.delta/done events.
*/
- private void trackRecvItemAttributes(SessionUpdate update, Span span) {
+ private void trackRecvItemAttributes(SessionServerEvent update, Span span) {
// conversation.item.created -> item_id
if (update instanceof SessionUpdateConversationItemCreated) {
SessionUpdateConversationItemCreated itemCreated = (SessionUpdateConversationItemCreated) update;
@@ -1034,7 +1034,7 @@ private void trackRecvItemAttributes(SessionUpdate update, Span span) {
}
}
- private void trackRecvTokenUsage(SessionUpdate update, Span span) {
+ private void trackRecvTokenUsage(SessionServerEvent update, Span span) {
if (update instanceof SessionUpdateResponseDone) {
SessionResponse response = ((SessionUpdateResponseDone) update).getResponse();
if (response != null) {
@@ -1047,7 +1047,7 @@ private void trackRecvTokenUsage(SessionUpdate update, Span span) {
}
}
- private void trackErrorEvents(SessionUpdate update, Span span) {
+ private void trackErrorEvents(SessionServerEvent update, Span span) {
if (update instanceof SessionUpdateError) {
SessionUpdateError errorUpdate = (SessionUpdateError) update;
SessionUpdateErrorDetails errorDetails = errorUpdate.getError();
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AnimationOptions.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AnimationOptions.java
index 56fc7f133048..f64d94c80463 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AnimationOptions.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AnimationOptions.java
@@ -24,12 +24,6 @@ public final class AnimationOptions implements JsonSerializable outputs;
-
/**
* Creates an instance of AnimationOptions class.
*/
@@ -59,28 +53,6 @@ public AnimationOptions setModelName(String modelName) {
return this;
}
- /**
- * Get the outputs property: Set of output data types requested from the animation system.
- *
- * @return the outputs value.
- */
- @Generated
- public List getOutputs() {
- return this.outputs;
- }
-
- /**
- * Set the outputs property: Set of output data types requested from the animation system.
- *
- * @param outputs the outputs value to set.
- * @return the AnimationOptions object itself.
- */
- @Generated
- public AnimationOptions setOutputs(List outputs) {
- this.outputs = outputs;
- return this;
- }
-
/**
* {@inheritDoc}
*/
@@ -89,7 +61,7 @@ public AnimationOptions setOutputs(List outputs) {
public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
jsonWriter.writeStartObject();
jsonWriter.writeStringField("model_name", this.modelName);
- jsonWriter.writeArrayField("outputs", this.outputs,
+ jsonWriter.writeArrayField("outputs", this.outputTypes,
(writer, element) -> writer.writeString(element == null ? null : element.toString()));
return jsonWriter.writeEndObject();
}
@@ -112,9 +84,9 @@ public static AnimationOptions fromJson(JsonReader jsonReader) throws IOExceptio
if ("model_name".equals(fieldName)) {
deserializedAnimationOptions.modelName = reader.getString();
} else if ("outputs".equals(fieldName)) {
- List outputs
+ List outputTypes
= reader.readArray(reader1 -> AnimationOutputType.fromString(reader1.getString()));
- deserializedAnimationOptions.outputs = outputs;
+ deserializedAnimationOptions.outputTypes = outputTypes;
} else {
reader.skipChildren();
}
@@ -122,4 +94,32 @@ public static AnimationOptions fromJson(JsonReader jsonReader) throws IOExceptio
return deserializedAnimationOptions;
});
}
+
+ /*
+ * Set of output data types requested from the animation system.
+ */
+ @Generated
+ private List outputTypes;
+
+ /**
+ * Get the outputTypes property: Set of output data types requested from the animation system.
+ *
+ * @return the outputTypes value.
+ */
+ @Generated
+ public List getOutputTypes() {
+ return this.outputTypes;
+ }
+
+ /**
+ * Set the outputTypes property: Set of output data types requested from the animation system.
+ *
+ * @param outputTypes the outputTypes value to set.
+ * @return the AnimationOptions object itself.
+ */
+ @Generated
+ public AnimationOptions setOutputTypes(List outputTypes) {
+ this.outputTypes = outputTypes;
+ return this;
+ }
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AvatarConfiguration.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AvatarOptions.java
similarity index 81%
rename from sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AvatarConfiguration.java
rename to sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AvatarOptions.java
index 5478b3a2d59c..3b42029cf305 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AvatarConfiguration.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AvatarOptions.java
@@ -1,6 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) TypeSpec Code Generator.
+
package com.azure.ai.voicelive.models;
import com.azure.core.annotation.Fluent;
@@ -16,7 +17,12 @@
* Configuration for avatar streaming and behavior during the session.
*/
@Fluent
-public final class AvatarConfiguration implements JsonSerializable {
+public final class AvatarOptions implements JsonSerializable {
+ /*
+ * Type of avatar to use.
+ */
+ @Generated
+ private AvatarConfigTypes type;
/*
* Optional list of ICE servers to use for WebRTC connection establishment.
@@ -36,6 +42,12 @@ public final class AvatarConfiguration implements JsonSerializable getIceServers() {
/**
* Set the iceServers property: Optional list of ICE servers to use for WebRTC connection establishment.
- *
+ *
* @param iceServers the iceServers value to set.
- * @return the AvatarConfiguration object itself.
+ * @return the AvatarOptions object itself.
*/
@Generated
- public AvatarConfiguration setIceServers(List iceServers) {
+ public AvatarOptions setIceServers(List iceServers) {
this.iceServers = iceServers;
return this;
}
/**
* Get the character property: The character name or ID used for the avatar.
- *
+ *
* @return the character value.
*/
@Generated
@@ -94,7 +147,7 @@ public String getCharacter() {
/**
* Get the style property: Optional avatar style, such as emotional tone or speaking style.
- *
+ *
* @return the style value.
*/
@Generated
@@ -104,19 +157,41 @@ public String getStyle() {
/**
* Set the style property: Optional avatar style, such as emotional tone or speaking style.
- *
+ *
* @param style the style value to set.
- * @return the AvatarConfiguration object itself.
+ * @return the AvatarOptions object itself.
*/
@Generated
- public AvatarConfiguration setStyle(String style) {
+ public AvatarOptions setStyle(String style) {
this.style = style;
return this;
}
+ /**
+ * Get the model property: Base model to use for the avatar. Required for photo avatar.
+ *
+ * @return the model value.
+ */
+ @Generated
+ public PhotoAvatarBaseModes getModel() {
+ return this.model;
+ }
+
+ /**
+ * Set the model property: Base model to use for the avatar. Required for photo avatar.
+ *
+ * @param model the model value to set.
+ * @return the AvatarOptions object itself.
+ */
+ @Generated
+ public AvatarOptions setModel(PhotoAvatarBaseModes model) {
+ this.model = model;
+ return this;
+ }
+
/**
* Get the customized property: Indicates whether the avatar is customized or not.
- *
+ *
* @return the customized value.
*/
@Generated
@@ -126,7 +201,7 @@ public boolean isCustomized() {
/**
* Get the video property: Optional video configuration including resolution, bitrate, and codec.
- *
+ *
* @return the video value.
*/
@Generated
@@ -136,16 +211,86 @@ public VideoParams getVideo() {
/**
* Set the video property: Optional video configuration including resolution, bitrate, and codec.
- *
+ *
* @param video the video value to set.
- * @return the AvatarConfiguration object itself.
+ * @return the AvatarOptions object itself.
*/
@Generated
- public AvatarConfiguration setVideo(VideoParams video) {
+ public AvatarOptions setVideo(VideoParams video) {
this.video = video;
return this;
}
+ /**
+ * Get the scene property: Configuration for the avatar's zoom level, position, rotation and movement amplitude in
+ * the video frame.
+ *
+ * @return the scene value.
+ */
+ @Generated
+ public Scene getScene() {
+ return this.scene;
+ }
+
+ /**
+ * Set the scene property: Configuration for the avatar's zoom level, position, rotation and movement amplitude in
+ * the video frame.
+ *
+ * @param scene the scene value to set.
+ * @return the AvatarOptions object itself.
+ */
+ @Generated
+ public AvatarOptions setScene(Scene scene) {
+ this.scene = scene;
+ return this;
+ }
+
+ /**
+ * Get the outputProtocol property: Output protocol for avatar streaming. Default is 'webrtc'.
+ *
+ * @return the outputProtocol value.
+ */
+ @Generated
+ public AvatarOutputProtocol getOutputProtocol() {
+ return this.outputProtocol;
+ }
+
+ /**
+ * Set the outputProtocol property: Output protocol for avatar streaming. Default is 'webrtc'.
+ *
+ * @param outputProtocol the outputProtocol value to set.
+ * @return the AvatarOptions object itself.
+ */
+ @Generated
+ public AvatarOptions setOutputProtocol(AvatarOutputProtocol outputProtocol) {
+ this.outputProtocol = outputProtocol;
+ return this;
+ }
+
+ /**
+ * Get the outputAuditAudio property: When enabled, forwards audit audio via WebSocket for review/debugging
+ * purposes, even when avatar output is delivered via WebRTC.
+ *
+ * @return the outputAuditAudio value.
+ */
+ @Generated
+ public Boolean isOutputAuditAudio() {
+ return this.outputAuditAudio;
+ }
+
+ /**
+ * Set the outputAuditAudio property: When enabled, forwards audit audio via WebSocket for review/debugging
+ * purposes, even when avatar output is delivered via WebRTC.
+ *
+ * @param outputAuditAudio the outputAuditAudio value to set.
+ * @return the AvatarOptions object itself.
+ */
+ @Generated
+ public AvatarOptions setOutputAuditAudio(Boolean outputAuditAudio) {
+ this.outputAuditAudio = outputAuditAudio;
+ return this;
+ }
+
/**
* {@inheritDoc}
*/
@@ -168,16 +313,16 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
}
/**
- * Reads an instance of AvatarConfiguration from the JsonReader.
- *
+ * Reads an instance of AvatarOptions from the JsonReader.
+ *
* @param jsonReader The JsonReader being read.
- * @return An instance of AvatarConfiguration if the JsonReader was pointing to an instance of it, or null if it was
+ * @return An instance of AvatarOptions 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 AvatarConfiguration.
+ * @throws IOException If an error occurs while reading the AvatarOptions.
*/
@Generated
- public static AvatarConfiguration fromJson(JsonReader jsonReader) throws IOException {
+ public static AvatarOptions fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
String character = null;
boolean customized = false;
@@ -192,6 +337,7 @@ public static AvatarConfiguration fromJson(JsonReader jsonReader) throws IOExcep
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
+
if ("character".equals(fieldName)) {
character = reader.getString();
} else if ("customized".equals(fieldName)) {
@@ -216,161 +362,17 @@ public static AvatarConfiguration fromJson(JsonReader jsonReader) throws IOExcep
reader.skipChildren();
}
}
- AvatarConfiguration deserializedAvatarConfiguration = new AvatarConfiguration(character, customized);
- deserializedAvatarConfiguration.type = type;
- deserializedAvatarConfiguration.iceServers = iceServers;
- deserializedAvatarConfiguration.style = style;
- deserializedAvatarConfiguration.model = model;
- deserializedAvatarConfiguration.video = video;
- deserializedAvatarConfiguration.scene = scene;
- deserializedAvatarConfiguration.outputProtocol = outputProtocol;
- deserializedAvatarConfiguration.outputAuditAudio = outputAuditAudio;
- return deserializedAvatarConfiguration;
+ AvatarOptions deserializedAvatarOptions = new AvatarOptions(character, customized);
+ deserializedAvatarOptions.type = type;
+ deserializedAvatarOptions.iceServers = iceServers;
+ deserializedAvatarOptions.style = style;
+ deserializedAvatarOptions.model = model;
+ deserializedAvatarOptions.video = video;
+ deserializedAvatarOptions.scene = scene;
+ deserializedAvatarOptions.outputProtocol = outputProtocol;
+ deserializedAvatarOptions.outputAuditAudio = outputAuditAudio;
+
+ return deserializedAvatarOptions;
});
}
-
- /*
- * Type of avatar to use.
- */
- @Generated
- private AvatarConfigTypes type;
-
- /*
- * Base model to use for the avatar. Required for photo avatar.
- */
- @Generated
- private PhotoAvatarBaseModes model;
-
- /*
- * Output protocol for avatar streaming. Default is 'webrtc'.
- */
- @Generated
- private AvatarOutputProtocol outputProtocol;
-
- /**
- * Get the type property: Type of avatar to use.
- *
- * @return the type value.
- */
- @Generated
- public AvatarConfigTypes getType() {
- return this.type;
- }
-
- /**
- * Set the type property: Type of avatar to use.
- *
- * @param type the type value to set.
- * @return the AvatarConfiguration object itself.
- */
- @Generated
- public AvatarConfiguration setType(AvatarConfigTypes type) {
- this.type = type;
- return this;
- }
-
- /**
- * Get the model property: Base model to use for the avatar. Required for photo avatar.
- *
- * @return the model value.
- */
- @Generated
- public PhotoAvatarBaseModes getModel() {
- return this.model;
- }
-
- /**
- * Set the model property: Base model to use for the avatar. Required for photo avatar.
- *
- * @param model the model value to set.
- * @return the AvatarConfiguration object itself.
- */
- @Generated
- public AvatarConfiguration setModel(PhotoAvatarBaseModes model) {
- this.model = model;
- return this;
- }
-
- /**
- * Get the outputProtocol property: Output protocol for avatar streaming. Default is 'webrtc'.
- *
- * @return the outputProtocol value.
- */
- @Generated
- public AvatarOutputProtocol getOutputProtocol() {
- return this.outputProtocol;
- }
-
- /**
- * Set the outputProtocol property: Output protocol for avatar streaming. Default is 'webrtc'.
- *
- * @param outputProtocol the outputProtocol value to set.
- * @return the AvatarConfiguration object itself.
- */
- @Generated
- public AvatarConfiguration setOutputProtocol(AvatarOutputProtocol outputProtocol) {
- this.outputProtocol = outputProtocol;
- return this;
- }
-
- /*
- * Configuration for the avatar's zoom level, position, rotation and movement amplitude in the video frame.
- */
- @Generated
- private Scene scene;
-
- /*
- * When enabled, forwards audit audio via WebSocket for review/debugging purposes, even when avatar output is
- * delivered via WebRTC.
- */
- @Generated
- private Boolean outputAuditAudio;
-
- /**
- * Get the scene property: Configuration for the avatar's zoom level, position, rotation and movement amplitude in
- * the video frame.
- *
- * @return the scene value.
- */
- @Generated
- public Scene getScene() {
- return this.scene;
- }
-
- /**
- * Set the scene property: Configuration for the avatar's zoom level, position, rotation and movement amplitude in
- * the video frame.
- *
- * @param scene the scene value to set.
- * @return the AvatarConfiguration object itself.
- */
- @Generated
- public AvatarConfiguration setScene(Scene scene) {
- this.scene = scene;
- return this;
- }
-
- /**
- * Get the outputAuditAudio property: When enabled, forwards audit audio via WebSocket for review/debugging
- * purposes, even when avatar output is delivered via WebRTC.
- *
- * @return the outputAuditAudio value.
- */
- @Generated
- public Boolean isOutputAuditAudio() {
- return this.outputAuditAudio;
- }
-
- /**
- * Set the outputAuditAudio property: When enabled, forwards audit audio via WebSocket for review/debugging
- * purposes, even when avatar output is delivered via WebRTC.
- *
- * @param outputAuditAudio the outputAuditAudio value to set.
- * @return the AvatarConfiguration object itself.
- */
- @Generated
- public AvatarConfiguration setOutputAuditAudio(Boolean outputAuditAudio) {
- this.outputAuditAudio = outputAuditAudio;
- return this;
- }
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemCreate.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemCreate.java
index 4fd89eb7e709..7f031c6c3b67 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemCreate.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemCreate.java
@@ -19,7 +19,7 @@
* event, otherwise an `error` event will be sent.
*/
@Fluent
-public final class ClientEventConversationItemCreate extends ClientEvent {
+public final class ClientEventConversationItemCreate extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemDelete.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemDelete.java
index 41d0223b0c53..bc55a806e09d 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemDelete.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemDelete.java
@@ -17,7 +17,7 @@
* server will respond with an error.
*/
@Fluent
-public final class ClientEventConversationItemDelete extends ClientEvent {
+public final class ClientEventConversationItemDelete extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemRetrieve.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemRetrieve.java
index 67341273c269..646e68d00649 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemRetrieve.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemRetrieve.java
@@ -18,7 +18,7 @@
* server will respond with an error.
*/
@Fluent
-public final class ClientEventConversationItemRetrieve extends ClientEvent {
+public final class ClientEventConversationItemRetrieve extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemTruncate.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemTruncate.java
index 10802422da88..f67e36a29d65 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemTruncate.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemTruncate.java
@@ -22,7 +22,7 @@
* event.
*/
@Fluent
-public final class ClientEventConversationItemTruncate extends ClientEvent {
+public final class ClientEventConversationItemTruncate extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferAppend.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferAppend.java
index 66516fead685..4b6e47285e44 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferAppend.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferAppend.java
@@ -23,7 +23,7 @@
* not send a confirmation response to this event.
*/
@Fluent
-public final class ClientEventInputAudioBufferAppend extends ClientEvent {
+public final class ClientEventInputAudioBufferAppend extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferClear.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferClear.java
index 7366a58ef2d5..1696b386b199 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferClear.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferClear.java
@@ -15,7 +15,7 @@
* respond with an `input_audio_buffer.cleared` event.
*/
@Fluent
-public final class ClientEventInputAudioBufferClear extends ClientEvent {
+public final class ClientEventInputAudioBufferClear extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferCommit.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferCommit.java
index 6471bd636ac7..9354c387d1da 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferCommit.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferCommit.java
@@ -22,7 +22,7 @@
* event.
*/
@Fluent
-public final class ClientEventInputAudioBufferCommit extends ClientEvent {
+public final class ClientEventInputAudioBufferCommit extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioClear.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioClear.java
index 53e88d82ec0f..77dfd07d63e7 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioClear.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioClear.java
@@ -14,7 +14,7 @@
* Clears all input audio currently being streamed.
*/
@Fluent
-public final class ClientEventInputAudioClear extends ClientEvent {
+public final class ClientEventInputAudioClear extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnAppend.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnAppend.java
index 79ae2b5ed554..d0244ca3b576 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnAppend.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnAppend.java
@@ -14,7 +14,7 @@
* Appends audio data to an ongoing input turn.
*/
@Fluent
-public final class ClientEventInputAudioTurnAppend extends ClientEvent {
+public final class ClientEventInputAudioTurnAppend extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnCancel.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnCancel.java
index 21bd2113ef90..e8731cf1e75e 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnCancel.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnCancel.java
@@ -14,7 +14,7 @@
* Cancels an in-progress input audio turn.
*/
@Fluent
-public final class ClientEventInputAudioTurnCancel extends ClientEvent {
+public final class ClientEventInputAudioTurnCancel extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnEnd.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnEnd.java
index 027e16db3e2f..96c42bc8f0c5 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnEnd.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnEnd.java
@@ -14,7 +14,7 @@
* Marks the end of an audio input turn.
*/
@Fluent
-public final class ClientEventInputAudioTurnEnd extends ClientEvent {
+public final class ClientEventInputAudioTurnEnd extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnStart.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnStart.java
index a8de0c0d6f95..39d229becf3c 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnStart.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnStart.java
@@ -14,7 +14,7 @@
* Indicates the start of a new audio input turn.
*/
@Fluent
-public final class ClientEventInputAudioTurnStart extends ClientEvent {
+public final class ClientEventInputAudioTurnStart extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventOutputAudioBufferClear.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventOutputAudioBufferClear.java
index ef91bf12ec76..6229e0f2b387 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventOutputAudioBufferClear.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventOutputAudioBufferClear.java
@@ -14,7 +14,7 @@
* Client request to clear the avatar output buffer.
*/
@Fluent
-public final class ClientEventOutputAudioBufferClear extends ClientEvent {
+public final class ClientEventOutputAudioBufferClear extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCancel.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCancel.java
index adb41290c79f..c0b9b53f53ff 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCancel.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCancel.java
@@ -16,7 +16,7 @@
* cancel.
*/
@Fluent
-public final class ClientEventResponseCancel extends ClientEvent {
+public final class ClientEventResponseCancel extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCreate.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCreate.java
index 0959de47b434..06be330a98fe 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCreate.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCreate.java
@@ -25,7 +25,7 @@
* configuration for this Response only.
*/
@Fluent
-public final class ClientEventResponseCreate extends ClientEvent {
+public final class ClientEventResponseCreate extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventSessionAvatarConnect.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventSessionAvatarConnect.java
index 126de48d3e9a..ae056802556f 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventSessionAvatarConnect.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventSessionAvatarConnect.java
@@ -16,7 +16,7 @@
* for avatar-related media negotiation.
*/
@Fluent
-public final class ClientEventSessionAvatarConnect extends ClientEvent {
+public final class ClientEventSessionAvatarConnect extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventSessionUpdate.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventSessionUpdate.java
index 573b42b1b172..b8b585136c05 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventSessionUpdate.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEventSessionUpdate.java
@@ -22,7 +22,7 @@
* `instructions`, pass an empty string.
*/
@Fluent
-public final class ClientEventSessionUpdate extends ClientEvent {
+public final class ClientEventSessionUpdate extends SessionClientEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ConversationRequestItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ConversationRequestItem.java
index 01c549613eab..4d09224f13bd 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ConversationRequestItem.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ConversationRequestItem.java
@@ -113,7 +113,7 @@ public static ConversationRequestItem fromJson(JsonReader jsonReader) throws IOE
} else if ("function_call_output".equals(discriminatorValue)) {
return FunctionCallOutputItem.fromJson(readerToUse.reset());
} else if ("mcp_approval_response".equals(discriminatorValue)) {
- return MCPApprovalResponseRequestItem.fromJson(readerToUse.reset());
+ return McpApprovalResponseRequestItem.fromJson(readerToUse.reset());
} else {
return fromJsonKnownDiscriminator(readerToUse.reset());
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/IceServer.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/IceServer.java
index fa2505d4a646..6410997343d9 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/IceServer.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/IceServer.java
@@ -18,12 +18,6 @@
@Fluent
public final class IceServer implements JsonSerializable {
- /*
- * List of ICE server URLs (e.g., TURN or STUN endpoints).
- */
- @Generated
- private final List uris;
-
/*
* Optional username used for authentication with the ICE server.
*/
@@ -39,21 +33,11 @@ public final class IceServer implements JsonSerializable {
/**
* Creates an instance of IceServer class.
*
- * @param uris the uris value to set.
- */
- @Generated
- public IceServer(List uris) {
- this.uris = uris;
- }
-
- /**
- * Get the uris property: List of ICE server URLs (e.g., TURN or STUN endpoints).
- *
- * @return the uris value.
+ * @param urls the urls value to set.
*/
@Generated
- public List getUris() {
- return this.uris;
+ public IceServer(List urls) {
+ this.urls = urls;
}
/**
@@ -107,7 +91,7 @@ public IceServer setCredential(String credential) {
@Override
public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
jsonWriter.writeStartObject();
- jsonWriter.writeArrayField("urls", this.uris, (writer, element) -> writer.writeString(element));
+ jsonWriter.writeArrayField("urls", this.urls, (writer, element) -> writer.writeString(element));
jsonWriter.writeStringField("username", this.username);
jsonWriter.writeStringField("credential", this.credential);
return jsonWriter.writeEndObject();
@@ -125,14 +109,14 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
@Generated
public static IceServer fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
- List uris = null;
+ 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)) {
- uris = reader.readArray(reader1 -> reader1.getString());
+ urls = reader.readArray(reader1 -> reader1.getString());
} else if ("username".equals(fieldName)) {
username = reader.getString();
} else if ("credential".equals(fieldName)) {
@@ -141,10 +125,26 @@ public static IceServer fromJson(JsonReader jsonReader) throws IOException {
reader.skipChildren();
}
}
- IceServer deserializedIceServer = new IceServer(uris);
+ IceServer deserializedIceServer = new IceServer(urls);
deserializedIceServer.username = username;
deserializedIceServer.credential = credential;
return deserializedIceServer;
});
}
+
+ /*
+ * List of ICE server URLs (e.g., TURN or STUN endpoints).
+ */
+ @Generated
+ private final List urls;
+
+ /**
+ * Get the urls property: List of ICE server URLs (e.g., TURN or STUN endpoints).
+ *
+ * @return the urls value.
+ */
+ @Generated
+ public List getUrls() {
+ return this.urls;
+ }
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/LogProbProperties.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/LogProbProperties.java
index 5748d7e75da5..a894f7159c58 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/LogProbProperties.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/LogProbProperties.java
@@ -24,12 +24,6 @@ public final class LogProbProperties implements JsonSerializable bytes) {
+ private LogProbProperties(String token, double logProb, List bytes) {
this.token = token;
- this.logprob = logprob;
+ this.logProb = logProb;
this.bytes = bytes;
}
@@ -60,16 +54,6 @@ 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.
*
@@ -88,7 +72,7 @@ public List getBytes() {
public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
jsonWriter.writeStartObject();
jsonWriter.writeStringField("token", this.token);
- jsonWriter.writeDoubleField("logprob", this.logprob);
+ jsonWriter.writeDoubleField("logprob", this.logProb);
jsonWriter.writeArrayField("bytes", this.bytes, (writer, element) -> writer.writeInt(element));
return jsonWriter.writeEndObject();
}
@@ -106,7 +90,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
public static LogProbProperties fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
String token = null;
- double logprob = 0.0;
+ double logProb = 0.0;
List bytes = null;
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
@@ -114,14 +98,30 @@ public static LogProbProperties fromJson(JsonReader jsonReader) throws IOExcepti
if ("token".equals(fieldName)) {
token = reader.getString();
} else if ("logprob".equals(fieldName)) {
- logprob = reader.getDouble();
+ logProb = reader.getDouble();
} else if ("bytes".equals(fieldName)) {
bytes = reader.readArray(reader1 -> reader1.getInt());
} else {
reader.skipChildren();
}
}
- return new LogProbProperties(token, logprob, bytes);
+ return new LogProbProperties(token, logProb, bytes);
});
}
+
+ /*
+ * The log probability of the token.
+ */
+ @Generated
+ private final double logProb;
+
+ /**
+ * Get the logProb property: The log probability of the token.
+ *
+ * @return the logProb value.
+ */
+ @Generated
+ public double getLogProb() {
+ return this.logProb;
+ }
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPApprovalResponseRequestItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPApprovalResponseRequestItem.java
index 6c4c3c9230c3..3bcb7b491abc 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPApprovalResponseRequestItem.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPApprovalResponseRequestItem.java
@@ -1,6 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) TypeSpec Code Generator.
+
package com.azure.ai.voicelive.models;
import com.azure.core.annotation.Fluent;
@@ -14,8 +15,7 @@
* A request item that represents a response to an MCP approval request.
*/
@Fluent
-public final class MCPApprovalResponseRequestItem extends ConversationRequestItem {
-
+public final class McpApprovalResponseRequestItem extends ConversationRequestItem {
/*
* The type property.
*/
@@ -35,20 +35,20 @@ public final class MCPApprovalResponseRequestItem extends ConversationRequestIte
private final boolean approve;
/**
- * Creates an instance of MCPApprovalResponseRequestItem class.
- *
+ * Creates an instance of McpApprovalResponseRequestItem class.
+ *
* @param approvalRequestId the approvalRequestId value to set.
* @param approve the approve value to set.
*/
@Generated
- public MCPApprovalResponseRequestItem(String approvalRequestId, boolean approve) {
+ public McpApprovalResponseRequestItem(String approvalRequestId, boolean approve) {
this.approvalRequestId = approvalRequestId;
this.approve = approve;
}
/**
* Get the type property: The type property.
- *
+ *
* @return the type value.
*/
@Generated
@@ -59,7 +59,7 @@ public ItemType getType() {
/**
* Get the approvalRequestId property: The ID of the approval request.
- *
+ *
* @return the approvalRequestId value.
*/
@Generated
@@ -69,7 +69,7 @@ public String getApprovalRequestId() {
/**
* Get the approve property: Whether the tool call was approved.
- *
+ *
* @return the approve value.
*/
@Generated
@@ -82,7 +82,7 @@ public boolean isApprove() {
*/
@Generated
@Override
- public MCPApprovalResponseRequestItem setId(String id) {
+ public McpApprovalResponseRequestItem setId(String id) {
super.setId(id);
return this;
}
@@ -102,16 +102,16 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
}
/**
- * Reads an instance of MCPApprovalResponseRequestItem from the JsonReader.
- *
+ * Reads an instance of McpApprovalResponseRequestItem from the JsonReader.
+ *
* @param jsonReader The JsonReader being read.
- * @return An instance of MCPApprovalResponseRequestItem if the JsonReader was pointing to an instance of it, or
+ * @return An instance of McpApprovalResponseRequestItem 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 MCPApprovalResponseRequestItem.
+ * @throws IOException If an error occurs while reading the McpApprovalResponseRequestItem.
*/
@Generated
- public static MCPApprovalResponseRequestItem fromJson(JsonReader jsonReader) throws IOException {
+ public static McpApprovalResponseRequestItem fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
String id = null;
String approvalRequestId = null;
@@ -120,6 +120,7 @@ public static MCPApprovalResponseRequestItem fromJson(JsonReader jsonReader) thr
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)) {
@@ -132,11 +133,12 @@ public static MCPApprovalResponseRequestItem fromJson(JsonReader jsonReader) thr
reader.skipChildren();
}
}
- MCPApprovalResponseRequestItem deserializedMCPApprovalResponseRequestItem
- = new MCPApprovalResponseRequestItem(approvalRequestId, approve);
- deserializedMCPApprovalResponseRequestItem.setId(id);
- deserializedMCPApprovalResponseRequestItem.type = type;
- return deserializedMCPApprovalResponseRequestItem;
+ McpApprovalResponseRequestItem deserializedMcpApprovalResponseRequestItem
+ = new McpApprovalResponseRequestItem(approvalRequestId, approve);
+ deserializedMcpApprovalResponseRequestItem.setId(id);
+ deserializedMcpApprovalResponseRequestItem.type = type;
+
+ return deserializedMcpApprovalResponseRequestItem;
});
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPApprovalType.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPApprovalType.java
index 378487863c90..79332fc7ae4e 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPApprovalType.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPApprovalType.java
@@ -1,6 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) TypeSpec Code Generator.
+
package com.azure.ai.voicelive.models;
import com.azure.core.annotation.Generated;
@@ -10,48 +11,47 @@
/**
* The available set of MCP approval types.
*/
-public final class MCPApprovalType extends ExpandableStringEnum {
-
+public final class McpApprovalType extends ExpandableStringEnum {
/**
* Approval is never required.
*/
@Generated
- public static final MCPApprovalType NEVER = fromString("never");
+ public static final McpApprovalType NEVER = fromString("never");
/**
* Approval is always required.
*/
@Generated
- public static final MCPApprovalType ALWAYS = fromString("always");
+ public static final McpApprovalType ALWAYS = fromString("always");
/**
- * Creates a new instance of MCPApprovalType value.
- *
+ * Creates a new instance of McpApprovalType value.
+ *
* @deprecated Use the {@link #fromString(String)} factory method.
*/
@Generated
@Deprecated
- public MCPApprovalType() {
+ public McpApprovalType() {
}
/**
- * Creates or finds a MCPApprovalType from its string representation.
- *
+ * Creates or finds a McpApprovalType from its string representation.
+ *
* @param name a name to look for.
- * @return the corresponding MCPApprovalType.
+ * @return the corresponding McpApprovalType.
*/
@Generated
- public static MCPApprovalType fromString(String name) {
- return fromString(name, MCPApprovalType.class);
+ public static McpApprovalType fromString(String name) {
+ return fromString(name, McpApprovalType.class);
}
/**
- * Gets known MCPApprovalType values.
- *
- * @return known MCPApprovalType values.
+ * Gets known McpApprovalType values.
+ *
+ * @return known McpApprovalType values.
*/
@Generated
- public static Collection values() {
- return values(MCPApprovalType.class);
+ public static Collection values() {
+ return values(McpApprovalType.class);
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPServer.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPServer.java
index 26ecffb88f30..3d4b2394cd3c 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPServer.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPServer.java
@@ -1,6 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) TypeSpec Code Generator.
+
package com.azure.ai.voicelive.models;
import com.azure.core.annotation.Fluent;
@@ -17,8 +18,7 @@
* The definition of an MCP server as used by the voicelive endpoint.
*/
@Fluent
-public final class MCPServer extends VoiceLiveToolDefinition {
-
+public final class McpServer extends VoiceLiveToolDefinition {
/*
* The type property.
*/
@@ -62,20 +62,20 @@ public final class MCPServer extends VoiceLiveToolDefinition {
private BinaryData requireApproval;
/**
- * Creates an instance of MCPServer class.
- *
+ * Creates an instance of McpServer class.
+ *
* @param serverLabel the serverLabel value to set.
* @param serverUrl the serverUrl value to set.
*/
@Generated
- public MCPServer(String serverLabel, String serverUrl) {
+ public McpServer(String serverLabel, String serverUrl) {
this.serverLabel = serverLabel;
this.serverUrl = serverUrl;
}
/**
* Get the type property: The type property.
- *
+ *
* @return the type value.
*/
@Generated
@@ -86,7 +86,7 @@ public ToolType getType() {
/**
* Get the serverLabel property: The server_label property.
- *
+ *
* @return the serverLabel value.
*/
@Generated
@@ -96,7 +96,7 @@ public String getServerLabel() {
/**
* Get the serverUrl property: The server_url property.
- *
+ *
* @return the serverUrl value.
*/
@Generated
@@ -106,7 +106,7 @@ public String getServerUrl() {
/**
* Get the authorization property: The authorization property.
- *
+ *
* @return the authorization value.
*/
@Generated
@@ -116,19 +116,19 @@ public String getAuthorization() {
/**
* Set the authorization property: The authorization property.
- *
+ *
* @param authorization the authorization value to set.
- * @return the MCPServer object itself.
+ * @return the McpServer object itself.
*/
@Generated
- public MCPServer setAuthorization(String authorization) {
+ public McpServer setAuthorization(String authorization) {
this.authorization = authorization;
return this;
}
/**
* Get the headers property: The headers property.
- *
+ *
* @return the headers value.
*/
@Generated
@@ -138,19 +138,19 @@ public Map getHeaders() {
/**
* Set the headers property: The headers property.
- *
+ *
* @param headers the headers value to set.
- * @return the MCPServer object itself.
+ * @return the McpServer object itself.
*/
@Generated
- public MCPServer setHeaders(Map headers) {
+ public McpServer setHeaders(Map headers) {
this.headers = headers;
return this;
}
/**
* Get the allowedTools property: The allowed_tools property.
- *
+ *
* @return the allowedTools value.
*/
@Generated
@@ -160,19 +160,19 @@ public List getAllowedTools() {
/**
* Set the allowedTools property: The allowed_tools property.
- *
+ *
* @param allowedTools the allowedTools value to set.
- * @return the MCPServer object itself.
+ * @return the McpServer object itself.
*/
@Generated
- public MCPServer setAllowedTools(List allowedTools) {
+ public McpServer setAllowedTools(List allowedTools) {
this.allowedTools = allowedTools;
return this;
}
/**
* Get the requireApproval property: The require_approval property.
- *
+ *
* @return the requireApproval value.
*/
@Generated
@@ -182,12 +182,12 @@ public BinaryData getRequireApproval() {
/**
* Set the requireApproval property: The require_approval property.
- *
+ *
* @param requireApproval the requireApproval value to set.
- * @return the MCPServer object itself.
+ * @return the McpServer object itself.
*/
@Generated
- public MCPServer setRequireApproval(BinaryData requireApproval) {
+ public McpServer setRequireApproval(BinaryData requireApproval) {
this.requireApproval = requireApproval;
return this;
}
@@ -214,16 +214,16 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
}
/**
- * Reads an instance of MCPServer from the JsonReader.
- *
+ * Reads an instance of McpServer from the JsonReader.
+ *
* @param jsonReader The JsonReader being read.
- * @return An instance of MCPServer if the JsonReader was pointing to an instance of it, or null if it was pointing
+ * @return An instance of McpServer 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 MCPServer.
+ * @throws IOException If an error occurs while reading the McpServer.
*/
@Generated
- public static MCPServer fromJson(JsonReader jsonReader) throws IOException {
+ public static McpServer fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
String serverLabel = null;
String serverUrl = null;
@@ -235,6 +235,7 @@ public static MCPServer fromJson(JsonReader jsonReader) throws IOException {
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
+
if ("server_label".equals(fieldName)) {
serverLabel = reader.getString();
} else if ("server_url".equals(fieldName)) {
@@ -254,13 +255,14 @@ public static MCPServer fromJson(JsonReader jsonReader) throws IOException {
reader.skipChildren();
}
}
- MCPServer deserializedMCPServer = new MCPServer(serverLabel, serverUrl);
- deserializedMCPServer.type = type;
- deserializedMCPServer.authorization = authorization;
- deserializedMCPServer.headers = headers;
- deserializedMCPServer.allowedTools = allowedTools;
- deserializedMCPServer.requireApproval = requireApproval;
- return deserializedMCPServer;
+ McpServer deserializedMcpServer = new McpServer(serverLabel, serverUrl);
+ deserializedMcpServer.type = type;
+ deserializedMcpServer.authorization = authorization;
+ deserializedMcpServer.headers = headers;
+ deserializedMcpServer.allowedTools = allowedTools;
+ deserializedMcpServer.requireApproval = requireApproval;
+
+ return deserializedMcpServer;
});
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPTool.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPTool.java
index 3b8adcbb9a73..c8b298df60ec 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPTool.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPTool.java
@@ -1,6 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) TypeSpec Code Generator.
+
package com.azure.ai.voicelive.models;
import com.azure.core.annotation.Generated;
@@ -16,8 +17,7 @@
* Represents a mcp tool definition.
*/
@Immutable
-public final class MCPTool implements JsonSerializable {
-
+public final class McpTool implements JsonSerializable {
/*
* The name of the tool.
*/
@@ -43,20 +43,20 @@ public final class MCPTool implements JsonSerializable {
private BinaryData annotations;
/**
- * Creates an instance of MCPTool class.
- *
+ * Creates an instance of McpTool class.
+ *
* @param name the name value to set.
* @param inputSchema the inputSchema value to set.
*/
@Generated
- private MCPTool(String name, BinaryData inputSchema) {
+ private McpTool(String name, BinaryData inputSchema) {
this.name = name;
this.inputSchema = inputSchema;
}
/**
* Get the name property: The name of the tool.
- *
+ *
* @return the name value.
*/
@Generated
@@ -66,7 +66,7 @@ public String getName() {
/**
* Get the description property: The description of the tool.
- *
+ *
* @return the description value.
*/
@Generated
@@ -76,7 +76,7 @@ public String getDescription() {
/**
* Get the inputSchema property: The input schema for the tool.
- *
+ *
* @return the inputSchema value.
*/
@Generated
@@ -86,7 +86,7 @@ public BinaryData getInputSchema() {
/**
* Get the annotations property: The annotations for the tool.
- *
+ *
* @return the annotations value.
*/
@Generated
@@ -113,16 +113,16 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
}
/**
- * Reads an instance of MCPTool from the JsonReader.
- *
+ * Reads an instance of McpTool from the JsonReader.
+ *
* @param jsonReader The JsonReader being read.
- * @return An instance of MCPTool if the JsonReader was pointing to an instance of it, or null if it was pointing to
+ * @return An instance of McpTool 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 MCPTool.
+ * @throws IOException If an error occurs while reading the McpTool.
*/
@Generated
- public static MCPTool fromJson(JsonReader jsonReader) throws IOException {
+ public static McpTool fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
String name = null;
BinaryData inputSchema = null;
@@ -131,6 +131,7 @@ public static MCPTool fromJson(JsonReader jsonReader) throws IOException {
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)) {
@@ -145,10 +146,11 @@ public static MCPTool fromJson(JsonReader jsonReader) throws IOException {
reader.skipChildren();
}
}
- MCPTool deserializedMCPTool = new MCPTool(name, inputSchema);
- deserializedMCPTool.description = description;
- deserializedMCPTool.annotations = annotations;
- return deserializedMCPTool;
+ McpTool deserializedMcpTool = new McpTool(name, inputSchema);
+ deserializedMcpTool.description = description;
+ deserializedMcpTool.annotations = annotations;
+
+ return deserializedMcpTool;
});
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItem.java
index 08f8e164f486..1706fda44404 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItem.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItem.java
@@ -1,6 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) TypeSpec Code Generator.
+
package com.azure.ai.voicelive.models;
import com.azure.core.annotation.Generated;
@@ -14,8 +15,7 @@
* A response item that represents a request for approval to call an MCP tool.
*/
@Immutable
-public final class ResponseMCPApprovalRequestItem extends SessionResponseItem {
-
+public final class ResponseMcpApprovalRequestItem extends SessionResponseItem {
/*
* The type property.
*/
@@ -41,20 +41,20 @@ public final class ResponseMCPApprovalRequestItem extends SessionResponseItem {
private final String serverLabel;
/**
- * Creates an instance of ResponseMCPApprovalRequestItem class.
- *
+ * Creates an instance of ResponseMcpApprovalRequestItem class.
+ *
* @param name the name value to set.
* @param serverLabel the serverLabel value to set.
*/
@Generated
- private ResponseMCPApprovalRequestItem(String name, String serverLabel) {
+ private ResponseMcpApprovalRequestItem(String name, String serverLabel) {
this.name = name;
this.serverLabel = serverLabel;
}
/**
* Get the type property: The type property.
- *
+ *
* @return the type value.
*/
@Generated
@@ -65,7 +65,7 @@ public ItemType getType() {
/**
* Get the arguments property: The arguments for the tool call.
- *
+ *
* @return the arguments value.
*/
@Generated
@@ -75,7 +75,7 @@ public String getArguments() {
/**
* Get the name property: The name of the tool to call.
- *
+ *
* @return the name value.
*/
@Generated
@@ -85,7 +85,7 @@ public String getName() {
/**
* Get the serverLabel property: The label of the server that provides the tool.
- *
+ *
* @return the serverLabel value.
*/
@Generated
@@ -110,16 +110,16 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
}
/**
- * Reads an instance of ResponseMCPApprovalRequestItem from the JsonReader.
- *
+ * Reads an instance of ResponseMcpApprovalRequestItem from the JsonReader.
+ *
* @param jsonReader The JsonReader being read.
- * @return An instance of ResponseMCPApprovalRequestItem if the JsonReader was pointing to an instance of it, or
+ * @return An instance of ResponseMcpApprovalRequestItem 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 ResponseMCPApprovalRequestItem.
+ * @throws IOException If an error occurs while reading the ResponseMcpApprovalRequestItem.
*/
@Generated
- public static ResponseMCPApprovalRequestItem fromJson(JsonReader jsonReader) throws IOException {
+ public static ResponseMcpApprovalRequestItem fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
String id = null;
ResponseItemObject object = null;
@@ -130,6 +130,7 @@ public static ResponseMCPApprovalRequestItem fromJson(JsonReader jsonReader) thr
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
+
if ("id".equals(fieldName)) {
id = reader.getString();
} else if ("object".equals(fieldName)) {
@@ -146,13 +147,14 @@ public static ResponseMCPApprovalRequestItem fromJson(JsonReader jsonReader) thr
reader.skipChildren();
}
}
- ResponseMCPApprovalRequestItem deserializedResponseMCPApprovalRequestItem
- = new ResponseMCPApprovalRequestItem(name, serverLabel);
- deserializedResponseMCPApprovalRequestItem.setId(id);
- deserializedResponseMCPApprovalRequestItem.setObject(object);
- deserializedResponseMCPApprovalRequestItem.type = type;
- deserializedResponseMCPApprovalRequestItem.arguments = arguments;
- return deserializedResponseMCPApprovalRequestItem;
+ ResponseMcpApprovalRequestItem deserializedResponseMcpApprovalRequestItem
+ = new ResponseMcpApprovalRequestItem(name, serverLabel);
+ deserializedResponseMcpApprovalRequestItem.setId(id);
+ deserializedResponseMcpApprovalRequestItem.setObject(object);
+ deserializedResponseMcpApprovalRequestItem.type = type;
+ deserializedResponseMcpApprovalRequestItem.arguments = arguments;
+
+ return deserializedResponseMcpApprovalRequestItem;
});
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItem.java
index 621f74804e8a..9e5fa88f02c4 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItem.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItem.java
@@ -1,6 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) TypeSpec Code Generator.
+
package com.azure.ai.voicelive.models;
import com.azure.core.annotation.Generated;
@@ -14,8 +15,7 @@
* A response item that represents a response to an MCP approval request.
*/
@Immutable
-public final class ResponseMCPApprovalResponseItem extends SessionResponseItem {
-
+public final class ResponseMcpApprovalResponseItem extends SessionResponseItem {
/*
* The type property.
*/
@@ -41,20 +41,20 @@ public final class ResponseMCPApprovalResponseItem extends SessionResponseItem {
private String reason;
/**
- * Creates an instance of ResponseMCPApprovalResponseItem class.
- *
+ * Creates an instance of ResponseMcpApprovalResponseItem class.
+ *
* @param approvalRequestId the approvalRequestId value to set.
* @param approve the approve value to set.
*/
@Generated
- private ResponseMCPApprovalResponseItem(String approvalRequestId, boolean approve) {
+ private ResponseMcpApprovalResponseItem(String approvalRequestId, boolean approve) {
this.approvalRequestId = approvalRequestId;
this.approve = approve;
}
/**
* Get the type property: The type property.
- *
+ *
* @return the type value.
*/
@Generated
@@ -65,7 +65,7 @@ public ItemType getType() {
/**
* Get the approvalRequestId property: The ID of the approval request.
- *
+ *
* @return the approvalRequestId value.
*/
@Generated
@@ -75,7 +75,7 @@ public String getApprovalRequestId() {
/**
* Get the approve property: Whether the tool call was approved.
- *
+ *
* @return the approve value.
*/
@Generated
@@ -85,7 +85,7 @@ public boolean isApprove() {
/**
* Get the reason property: The reason for the approval decision.
- *
+ *
* @return the reason value.
*/
@Generated
@@ -110,16 +110,16 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
}
/**
- * Reads an instance of ResponseMCPApprovalResponseItem from the JsonReader.
- *
+ * Reads an instance of ResponseMcpApprovalResponseItem from the JsonReader.
+ *
* @param jsonReader The JsonReader being read.
- * @return An instance of ResponseMCPApprovalResponseItem if the JsonReader was pointing to an instance of it, or
+ * @return An instance of ResponseMcpApprovalResponseItem 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 ResponseMCPApprovalResponseItem.
+ * @throws IOException If an error occurs while reading the ResponseMcpApprovalResponseItem.
*/
@Generated
- public static ResponseMCPApprovalResponseItem fromJson(JsonReader jsonReader) throws IOException {
+ public static ResponseMcpApprovalResponseItem fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
String id = null;
ResponseItemObject object = null;
@@ -130,6 +130,7 @@ public static ResponseMCPApprovalResponseItem fromJson(JsonReader jsonReader) th
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
+
if ("id".equals(fieldName)) {
id = reader.getString();
} else if ("object".equals(fieldName)) {
@@ -146,13 +147,14 @@ public static ResponseMCPApprovalResponseItem fromJson(JsonReader jsonReader) th
reader.skipChildren();
}
}
- ResponseMCPApprovalResponseItem deserializedResponseMCPApprovalResponseItem
- = new ResponseMCPApprovalResponseItem(approvalRequestId, approve);
- deserializedResponseMCPApprovalResponseItem.setId(id);
- deserializedResponseMCPApprovalResponseItem.setObject(object);
- deserializedResponseMCPApprovalResponseItem.type = type;
- deserializedResponseMCPApprovalResponseItem.reason = reason;
- return deserializedResponseMCPApprovalResponseItem;
+ ResponseMcpApprovalResponseItem deserializedResponseMcpApprovalResponseItem
+ = new ResponseMcpApprovalResponseItem(approvalRequestId, approve);
+ deserializedResponseMcpApprovalResponseItem.setId(id);
+ deserializedResponseMcpApprovalResponseItem.setObject(object);
+ deserializedResponseMcpApprovalResponseItem.type = type;
+ deserializedResponseMcpApprovalResponseItem.reason = reason;
+
+ return deserializedResponseMcpApprovalResponseItem;
});
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPCallItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPCallItem.java
index 502bfea89335..a72da8d677cf 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPCallItem.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPCallItem.java
@@ -1,6 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) TypeSpec Code Generator.
+
package com.azure.ai.voicelive.models;
import com.azure.core.annotation.Generated;
@@ -15,8 +16,7 @@
* A response item that represents a call to an MCP tool.
*/
@Immutable
-public final class ResponseMCPCallItem extends SessionResponseItem {
-
+public final class ResponseMcpCallItem extends SessionResponseItem {
/*
* The type property.
*/
@@ -60,14 +60,14 @@ public final class ResponseMCPCallItem extends SessionResponseItem {
private BinaryData error;
/**
- * Creates an instance of ResponseMCPCallItem class.
- *
+ * Creates an instance of ResponseMcpCallItem class.
+ *
* @param arguments the arguments value to set.
* @param serverLabel the serverLabel value to set.
* @param name the name value to set.
*/
@Generated
- private ResponseMCPCallItem(String arguments, String serverLabel, String name) {
+ private ResponseMcpCallItem(String arguments, String serverLabel, String name) {
this.arguments = arguments;
this.serverLabel = serverLabel;
this.name = name;
@@ -75,7 +75,7 @@ private ResponseMCPCallItem(String arguments, String serverLabel, String name) {
/**
* Get the type property: The type property.
- *
+ *
* @return the type value.
*/
@Generated
@@ -86,7 +86,7 @@ public ItemType getType() {
/**
* Get the approvalRequestId property: The ID of the approval request, if any.
- *
+ *
* @return the approvalRequestId value.
*/
@Generated
@@ -96,7 +96,7 @@ public String getApprovalRequestId() {
/**
* Get the arguments property: The arguments for the tool call.
- *
+ *
* @return the arguments value.
*/
@Generated
@@ -106,7 +106,7 @@ public String getArguments() {
/**
* Get the serverLabel property: The label of the server that provides the tool.
- *
+ *
* @return the serverLabel value.
*/
@Generated
@@ -116,7 +116,7 @@ public String getServerLabel() {
/**
* Get the name property: The name of the tool to call.
- *
+ *
* @return the name value.
*/
@Generated
@@ -126,7 +126,7 @@ public String getName() {
/**
* Get the output property: The output of the tool call.
- *
+ *
* @return the output value.
*/
@Generated
@@ -136,7 +136,7 @@ public String getOutput() {
/**
* Get the error property: The error, if any, from the tool call.
- *
+ *
* @return the error value.
*/
@Generated
@@ -167,16 +167,16 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
}
/**
- * Reads an instance of ResponseMCPCallItem from the JsonReader.
- *
+ * Reads an instance of ResponseMcpCallItem from the JsonReader.
+ *
* @param jsonReader The JsonReader being read.
- * @return An instance of ResponseMCPCallItem if the JsonReader was pointing to an instance of it, or null if it was
+ * @return An instance of ResponseMcpCallItem 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 ResponseMCPCallItem.
+ * @throws IOException If an error occurs while reading the ResponseMcpCallItem.
*/
@Generated
- public static ResponseMCPCallItem fromJson(JsonReader jsonReader) throws IOException {
+ public static ResponseMcpCallItem fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
String id = null;
ResponseItemObject object = null;
@@ -190,6 +190,7 @@ public static ResponseMCPCallItem fromJson(JsonReader jsonReader) throws IOExcep
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
+
if ("id".equals(fieldName)) {
id = reader.getString();
} else if ("object".equals(fieldName)) {
@@ -212,14 +213,15 @@ public static ResponseMCPCallItem fromJson(JsonReader jsonReader) throws IOExcep
reader.skipChildren();
}
}
- ResponseMCPCallItem deserializedResponseMCPCallItem = new ResponseMCPCallItem(arguments, serverLabel, name);
- deserializedResponseMCPCallItem.setId(id);
- deserializedResponseMCPCallItem.setObject(object);
- deserializedResponseMCPCallItem.type = type;
- deserializedResponseMCPCallItem.approvalRequestId = approvalRequestId;
- deserializedResponseMCPCallItem.output = output;
- deserializedResponseMCPCallItem.error = error;
- return deserializedResponseMCPCallItem;
+ ResponseMcpCallItem deserializedResponseMcpCallItem = new ResponseMcpCallItem(arguments, serverLabel, name);
+ deserializedResponseMcpCallItem.setId(id);
+ deserializedResponseMcpCallItem.setObject(object);
+ deserializedResponseMcpCallItem.type = type;
+ deserializedResponseMcpCallItem.approvalRequestId = approvalRequestId;
+ deserializedResponseMcpCallItem.output = output;
+ deserializedResponseMcpCallItem.error = error;
+
+ return deserializedResponseMcpCallItem;
});
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPListToolItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPListToolItem.java
index f5d9666642a4..9506c701a91c 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPListToolItem.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPListToolItem.java
@@ -1,6 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) TypeSpec Code Generator.
+
package com.azure.ai.voicelive.models;
import com.azure.core.annotation.Generated;
@@ -15,8 +16,7 @@
* A response item that lists the tools available on an MCP server.
*/
@Immutable
-public final class ResponseMCPListToolItem extends SessionResponseItem {
-
+public final class ResponseMcpListToolItem extends SessionResponseItem {
/*
* The type property.
*/
@@ -27,7 +27,7 @@ public final class ResponseMCPListToolItem extends SessionResponseItem {
* The tools available on the server.
*/
@Generated
- private final List tools;
+ private final List tools;
/*
* The label of the server that provides the tools.
@@ -36,20 +36,20 @@ public final class ResponseMCPListToolItem extends SessionResponseItem {
private final String serverLabel;
/**
- * Creates an instance of ResponseMCPListToolItem class.
- *
+ * Creates an instance of ResponseMcpListToolItem class.
+ *
* @param tools the tools value to set.
* @param serverLabel the serverLabel value to set.
*/
@Generated
- private ResponseMCPListToolItem(List tools, String serverLabel) {
+ private ResponseMcpListToolItem(List tools, String serverLabel) {
this.tools = tools;
this.serverLabel = serverLabel;
}
/**
* Get the type property: The type property.
- *
+ *
* @return the type value.
*/
@Generated
@@ -60,17 +60,17 @@ public ItemType getType() {
/**
* Get the tools property: The tools available on the server.
- *
+ *
* @return the tools value.
*/
@Generated
- public List getTools() {
+ public List getTools() {
return this.tools;
}
/**
* Get the serverLabel property: The label of the server that provides the tools.
- *
+ *
* @return the serverLabel value.
*/
@Generated
@@ -94,31 +94,32 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
}
/**
- * Reads an instance of ResponseMCPListToolItem from the JsonReader.
- *
+ * Reads an instance of ResponseMcpListToolItem from the JsonReader.
+ *
* @param jsonReader The JsonReader being read.
- * @return An instance of ResponseMCPListToolItem if the JsonReader was pointing to an instance of it, or null if it
+ * @return An instance of ResponseMcpListToolItem 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 ResponseMCPListToolItem.
+ * @throws IOException If an error occurs while reading the ResponseMcpListToolItem.
*/
@Generated
- public static ResponseMCPListToolItem fromJson(JsonReader jsonReader) throws IOException {
+ public static ResponseMcpListToolItem fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
String id = null;
ResponseItemObject object = null;
- List tools = null;
+ List tools = null;
String serverLabel = null;
ItemType type = ItemType.MCP_LIST_TOOLS;
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
+
if ("id".equals(fieldName)) {
id = reader.getString();
} else if ("object".equals(fieldName)) {
object = ResponseItemObject.fromString(reader.getString());
} else if ("tools".equals(fieldName)) {
- tools = reader.readArray(reader1 -> MCPTool.fromJson(reader1));
+ tools = reader.readArray(reader1 -> McpTool.fromJson(reader1));
} else if ("server_label".equals(fieldName)) {
serverLabel = reader.getString();
} else if ("type".equals(fieldName)) {
@@ -127,12 +128,13 @@ public static ResponseMCPListToolItem fromJson(JsonReader jsonReader) throws IOE
reader.skipChildren();
}
}
- ResponseMCPListToolItem deserializedResponseMCPListToolItem
- = new ResponseMCPListToolItem(tools, serverLabel);
- deserializedResponseMCPListToolItem.setId(id);
- deserializedResponseMCPListToolItem.setObject(object);
- deserializedResponseMCPListToolItem.type = type;
- return deserializedResponseMCPListToolItem;
+ ResponseMcpListToolItem deserializedResponseMcpListToolItem
+ = new ResponseMcpListToolItem(tools, serverLabel);
+ deserializedResponseMcpListToolItem.setId(id);
+ deserializedResponseMcpListToolItem.setObject(object);
+ deserializedResponseMcpListToolItem.type = type;
+
+ return deserializedResponseMcpListToolItem;
});
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsCompleted.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsCompleted.java
index 874bc77f3a47..558c18f615c6 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsCompleted.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsCompleted.java
@@ -14,7 +14,7 @@
* MCP list tools completed message.
*/
@Immutable
-public final class ServerEventMcpListToolsCompleted extends SessionUpdate {
+public final class ServerEventMcpListToolsCompleted extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsFailed.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsFailed.java
index bfc2a7408735..6e56e9c5ad1a 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsFailed.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsFailed.java
@@ -14,7 +14,7 @@
* MCP list tools failed message.
*/
@Immutable
-public final class ServerEventMcpListToolsFailed extends SessionUpdate {
+public final class ServerEventMcpListToolsFailed extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsInProgress.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsInProgress.java
index 211d37403b4a..1692b6be1475 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsInProgress.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsInProgress.java
@@ -14,7 +14,7 @@
* MCP list tools in progress message.
*/
@Immutable
-public final class ServerEventMcpListToolsInProgress extends SessionUpdate {
+public final class ServerEventMcpListToolsInProgress extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventOutputAudioBufferCleared.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventOutputAudioBufferCleared.java
index db8be39b514d..eb7ea981df49 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventOutputAudioBufferCleared.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventOutputAudioBufferCleared.java
@@ -14,7 +14,7 @@
* Returned when the output audio buffer has been cleared.
*/
@Immutable
-public final class ServerEventOutputAudioBufferCleared extends SessionUpdate {
+public final class ServerEventOutputAudioBufferCleared extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseAudioTranscriptAnnotationAdded.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseAudioTranscriptAnnotationAdded.java
index ff8de4caa71f..345c91d5f1bc 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseAudioTranscriptAnnotationAdded.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseAudioTranscriptAnnotationAdded.java
@@ -15,7 +15,7 @@
* Returned when an audio transcript annotation is added to a response.
*/
@Immutable
-public final class ServerEventResponseAudioTranscriptAnnotationAdded extends SessionUpdate {
+public final class ServerEventResponseAudioTranscriptAnnotationAdded extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallCompleted.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallCompleted.java
index 16b76d56af91..f450b22e59f5 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallCompleted.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallCompleted.java
@@ -14,7 +14,7 @@
* Returned when a file search call has completed.
*/
@Immutable
-public final class ServerEventResponseFileSearchCallCompleted extends SessionUpdate {
+public final class ServerEventResponseFileSearchCallCompleted extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallInProgress.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallInProgress.java
index e38a3b835bfc..d0689cb0bccd 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallInProgress.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallInProgress.java
@@ -14,7 +14,7 @@
* Returned when a file search call is in progress.
*/
@Immutable
-public final class ServerEventResponseFileSearchCallInProgress extends SessionUpdate {
+public final class ServerEventResponseFileSearchCallInProgress extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallSearching.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallSearching.java
index 981d3c8d69a7..916c021b5473 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallSearching.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallSearching.java
@@ -14,7 +14,7 @@
* Returned when a file search call is searching.
*/
@Immutable
-public final class ServerEventResponseFileSearchCallSearching extends SessionUpdate {
+public final class ServerEventResponseFileSearchCallSearching extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDelta.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDelta.java
index aa95b6773f2c..c67f9c8c9dc6 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDelta.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDelta.java
@@ -14,7 +14,7 @@
* Represents a delta update of the arguments for an MCP tool call.
*/
@Immutable
-public final class ServerEventResponseMcpCallArgumentsDelta extends SessionUpdate {
+public final class ServerEventResponseMcpCallArgumentsDelta extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDone.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDone.java
index 6be9d831b5e4..d63bbe648d93 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDone.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDone.java
@@ -14,7 +14,7 @@
* Indicates the completion of the arguments for an MCP tool call.
*/
@Immutable
-public final class ServerEventResponseMcpCallArgumentsDone extends SessionUpdate {
+public final class ServerEventResponseMcpCallArgumentsDone extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallCompleted.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallCompleted.java
index c98be999611e..e953f2327e8c 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallCompleted.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallCompleted.java
@@ -14,7 +14,7 @@
* Indicates the MCP call has completed.
*/
@Immutable
-public final class ServerEventResponseMcpCallCompleted extends SessionUpdate {
+public final class ServerEventResponseMcpCallCompleted extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallFailed.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallFailed.java
index 84362a744497..c1b5d31543e8 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallFailed.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallFailed.java
@@ -14,7 +14,7 @@
* Indicates the MCP call has failed.
*/
@Immutable
-public final class ServerEventResponseMcpCallFailed extends SessionUpdate {
+public final class ServerEventResponseMcpCallFailed extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallInProgress.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallInProgress.java
index ed930eea6188..b2788614741f 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallInProgress.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallInProgress.java
@@ -14,7 +14,7 @@
* Indicates the MCP call running.
*/
@Immutable
-public final class ServerEventResponseMcpCallInProgress extends SessionUpdate {
+public final class ServerEventResponseMcpCallInProgress extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseVideoDelta.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseVideoDelta.java
index 18b172acf841..3dcf8004141f 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseVideoDelta.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseVideoDelta.java
@@ -14,7 +14,7 @@
* Returned when avatar video frame data is streamed.
*/
@Immutable
-public final class ServerEventResponseVideoDelta extends SessionUpdate {
+public final class ServerEventResponseVideoDelta extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallCompleted.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallCompleted.java
index 04592ec6954a..c18c0c64382d 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallCompleted.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallCompleted.java
@@ -14,7 +14,7 @@
* Returned when a web search call has completed.
*/
@Immutable
-public final class ServerEventResponseWebSearchCallCompleted extends SessionUpdate {
+public final class ServerEventResponseWebSearchCallCompleted extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallInProgress.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallInProgress.java
index 703352f7057c..0bc7968ed45a 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallInProgress.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallInProgress.java
@@ -14,7 +14,7 @@
* Returned when a web search call is in progress.
*/
@Immutable
-public final class ServerEventResponseWebSearchCallInProgress extends SessionUpdate {
+public final class ServerEventResponseWebSearchCallInProgress extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallSearching.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallSearching.java
index 00e5ff81a63a..6af8b50c4ce1 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallSearching.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallSearching.java
@@ -14,7 +14,7 @@
* Returned when a web search call is searching.
*/
@Immutable
-public final class ServerEventResponseWebSearchCallSearching extends SessionUpdate {
+public final class ServerEventResponseWebSearchCallSearching extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToIdle.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToIdle.java
index d6dd3be767ac..04b829f1a1fe 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToIdle.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToIdle.java
@@ -14,7 +14,7 @@
* Returned when the avatar switches to idle state.
*/
@Immutable
-public final class ServerEventSessionAvatarSwitchToIdle extends SessionUpdate {
+public final class ServerEventSessionAvatarSwitchToIdle extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToSpeaking.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToSpeaking.java
index 8819f0b56748..36b4a90d3c4b 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToSpeaking.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToSpeaking.java
@@ -14,7 +14,7 @@
* Returned when the avatar switches to speaking state.
*/
@Immutable
-public final class ServerEventSessionAvatarSwitchToSpeaking extends SessionUpdate {
+public final class ServerEventSessionAvatarSwitchToSpeaking extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventWarning.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventWarning.java
index d2e897a05e20..136f2bffd514 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventWarning.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ServerEventWarning.java
@@ -15,7 +15,7 @@
* Warnings are informational and the session will continue normally.
*/
@Immutable
-public final class ServerEventWarning extends SessionUpdate {
+public final class ServerEventWarning extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEvent.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionClientEvent.java
similarity index 83%
rename from sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEvent.java
rename to sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionClientEvent.java
index 980409458c07..7e2629ea2c11 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ClientEvent.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionClientEvent.java
@@ -1,6 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) TypeSpec Code Generator.
+
package com.azure.ai.voicelive.models;
import com.azure.core.annotation.Fluent;
@@ -15,13 +16,12 @@
* A voicelive client event.
*/
@Fluent
-public class ClientEvent implements JsonSerializable {
-
+public class SessionClientEvent implements JsonSerializable {
/*
* The type of event.
*/
@Generated
- private ClientEventType type = ClientEventType.fromString("ClientEvent");
+ private ClientEventType type = ClientEventType.fromString("SessionClientEvent");
/*
* The event_id property.
@@ -30,15 +30,15 @@ public class ClientEvent implements JsonSerializable {
private String eventId;
/**
- * Creates an instance of ClientEvent class.
+ * Creates an instance of SessionClientEvent class.
*/
@Generated
- public ClientEvent() {
+ public SessionClientEvent() {
}
/**
* Get the type property: The type of event.
- *
+ *
* @return the type value.
*/
@Generated
@@ -48,7 +48,7 @@ public ClientEventType getType() {
/**
* Get the eventId property: The event_id property.
- *
+ *
* @return the eventId value.
*/
@Generated
@@ -58,12 +58,12 @@ public String getEventId() {
/**
* Set the eventId property: The event_id property.
- *
+ *
* @param eventId the eventId value to set.
- * @return the ClientEvent object itself.
+ * @return the SessionClientEvent object itself.
*/
@Generated
- public ClientEvent setEventId(String eventId) {
+ public SessionClientEvent setEventId(String eventId) {
this.eventId = eventId;
return this;
}
@@ -81,20 +81,19 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
}
/**
- * Reads an instance of ClientEvent from the JsonReader.
- *
+ * Reads an instance of SessionClientEvent from the JsonReader.
+ *
* @param jsonReader The JsonReader being read.
- * @return An instance of ClientEvent if the JsonReader was pointing to an instance of it, or null if it was
+ * @return An instance of SessionClientEvent 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 ClientEvent.
+ * @throws IOException If an error occurs while reading the SessionClientEvent.
*/
@Generated
- public static ClientEvent fromJson(JsonReader jsonReader) throws IOException {
+ public static SessionClientEvent fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
String discriminatorValue = null;
try (JsonReader readerToUse = reader.bufferObject()) {
- // Prepare for reading
- readerToUse.nextToken();
+ readerToUse.nextToken(); // Prepare for reading
while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
String fieldName = readerToUse.getFieldName();
readerToUse.nextToken();
@@ -148,21 +147,23 @@ public static ClientEvent fromJson(JsonReader jsonReader) throws IOException {
}
@Generated
- static ClientEvent fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+ static SessionClientEvent fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
- ClientEvent deserializedClientEvent = new ClientEvent();
+ SessionClientEvent deserializedSessionClientEvent = new SessionClientEvent();
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
+
if ("type".equals(fieldName)) {
- deserializedClientEvent.type = ClientEventType.fromString(reader.getString());
+ deserializedSessionClientEvent.type = ClientEventType.fromString(reader.getString());
} else if ("event_id".equals(fieldName)) {
- deserializedClientEvent.eventId = reader.getString();
+ deserializedSessionClientEvent.eventId = reader.getString();
} else {
reader.skipChildren();
}
}
- return deserializedClientEvent;
+
+ return deserializedSessionClientEvent;
});
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionResponseItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionResponseItem.java
index d8025bca30c6..75d787c00493 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionResponseItem.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionResponseItem.java
@@ -142,13 +142,13 @@ public static SessionResponseItem fromJson(JsonReader jsonReader) throws IOExcep
} else if ("function_call_output".equals(discriminatorValue)) {
return ResponseFunctionCallOutputItem.fromJson(readerToUse.reset());
} else if ("mcp_list_tools".equals(discriminatorValue)) {
- return ResponseMCPListToolItem.fromJson(readerToUse.reset());
+ return ResponseMcpListToolItem.fromJson(readerToUse.reset());
} else if ("mcp_call".equals(discriminatorValue)) {
- return ResponseMCPCallItem.fromJson(readerToUse.reset());
+ return ResponseMcpCallItem.fromJson(readerToUse.reset());
} else if ("mcp_approval_request".equals(discriminatorValue)) {
- return ResponseMCPApprovalRequestItem.fromJson(readerToUse.reset());
+ return ResponseMcpApprovalRequestItem.fromJson(readerToUse.reset());
} else if ("mcp_approval_response".equals(discriminatorValue)) {
- return ResponseMCPApprovalResponseItem.fromJson(readerToUse.reset());
+ return ResponseMcpApprovalResponseItem.fromJson(readerToUse.reset());
} else if ("web_search_call".equals(discriminatorValue)) {
return ResponseWebSearchCallItem.fromJson(readerToUse.reset());
} else if ("file_search_call".equals(discriminatorValue)) {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdate.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionServerEvent.java
similarity index 92%
rename from sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdate.java
rename to sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionServerEvent.java
index edb634601605..d9ade7b78ec2 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdate.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionServerEvent.java
@@ -1,6 +1,7 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) TypeSpec Code Generator.
+
package com.azure.ai.voicelive.models;
import com.azure.core.annotation.Generated;
@@ -15,13 +16,12 @@
* A voicelive server event.
*/
@Immutable
-public class SessionUpdate implements JsonSerializable {
-
+public class SessionServerEvent implements JsonSerializable {
/*
* The type of event.
*/
@Generated
- private ServerEventType type = ServerEventType.fromString("SessionUpdate");
+ private ServerEventType type = ServerEventType.fromString("SessionServerEvent");
/*
* The event_id property.
@@ -30,15 +30,15 @@ public class SessionUpdate implements JsonSerializable {
private String eventId;
/**
- * Creates an instance of SessionUpdate class.
+ * Creates an instance of SessionServerEvent class.
*/
@Generated
- protected SessionUpdate() {
+ protected SessionServerEvent() {
}
/**
* Get the type property: The type of event.
- *
+ *
* @return the type value.
*/
@Generated
@@ -48,7 +48,7 @@ public ServerEventType getType() {
/**
* Get the eventId property: The event_id property.
- *
+ *
* @return the eventId value.
*/
@Generated
@@ -58,12 +58,12 @@ public String getEventId() {
/**
* Set the eventId property: The event_id property.
- *
+ *
* @param eventId the eventId value to set.
- * @return the SessionUpdate object itself.
+ * @return the SessionServerEvent object itself.
*/
@Generated
- SessionUpdate setEventId(String eventId) {
+ SessionServerEvent setEventId(String eventId) {
this.eventId = eventId;
return this;
}
@@ -81,20 +81,19 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
}
/**
- * Reads an instance of SessionUpdate from the JsonReader.
- *
+ * Reads an instance of SessionServerEvent from the JsonReader.
+ *
* @param jsonReader The JsonReader being read.
- * @return An instance of SessionUpdate if the JsonReader was pointing to an instance of it, or null if it was
+ * @return An instance of SessionServerEvent 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 SessionUpdate.
+ * @throws IOException If an error occurs while reading the SessionServerEvent.
*/
@Generated
- public static SessionUpdate fromJson(JsonReader jsonReader) throws IOException {
+ public static SessionServerEvent fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
String discriminatorValue = null;
try (JsonReader readerToUse = reader.bufferObject()) {
- // Prepare for reading
- readerToUse.nextToken();
+ readerToUse.nextToken(); // Prepare for reading
while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
String fieldName = readerToUse.getFieldName();
readerToUse.nextToken();
@@ -224,21 +223,23 @@ public static SessionUpdate fromJson(JsonReader jsonReader) throws IOException {
}
@Generated
- static SessionUpdate fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
+ static SessionServerEvent fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
- SessionUpdate deserializedSessionUpdate = new SessionUpdate();
+ SessionServerEvent deserializedSessionServerEvent = new SessionServerEvent();
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
+
if ("type".equals(fieldName)) {
- deserializedSessionUpdate.type = ServerEventType.fromString(reader.getString());
+ deserializedSessionServerEvent.type = ServerEventType.fromString(reader.getString());
} else if ("event_id".equals(fieldName)) {
- deserializedSessionUpdate.eventId = reader.getString();
+ deserializedSessionServerEvent.eventId = reader.getString();
} else {
reader.skipChildren();
}
}
- return deserializedSessionUpdate;
+
+ return deserializedSessionServerEvent;
});
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateAvatarConnecting.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateAvatarConnecting.java
index 6d1e3a78e694..5d49e281f6db 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateAvatarConnecting.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateAvatarConnecting.java
@@ -14,7 +14,7 @@
* Sent when the server is in the process of establishing an avatar media connection and provides its SDP answer.
*/
@Immutable
-public final class SessionUpdateAvatarConnecting extends SessionUpdate {
+public final class SessionUpdateAvatarConnecting extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemCreated.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemCreated.java
index e9a2dbacc421..11817e36503b 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemCreated.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemCreated.java
@@ -22,7 +22,7 @@
* to the Conversation.
*/
@Immutable
-public final class SessionUpdateConversationItemCreated extends SessionUpdate {
+public final class SessionUpdateConversationItemCreated extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemDeleted.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemDeleted.java
index cc0e3f257972..172cb12e52a5 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemDeleted.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemDeleted.java
@@ -16,7 +16,7 @@
* server's understanding of the conversation history with the client's view.
*/
@Immutable
-public final class SessionUpdateConversationItemDeleted extends SessionUpdate {
+public final class SessionUpdateConversationItemDeleted extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionCompleted.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionCompleted.java
index 42bf07e72145..72774b89fafa 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionCompleted.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionCompleted.java
@@ -23,7 +23,7 @@
* should be treated as a rough guide.
*/
@Immutable
-public final class SessionUpdateConversationItemInputAudioTranscriptionCompleted extends SessionUpdate {
+public final class SessionUpdateConversationItemInputAudioTranscriptionCompleted extends SessionServerEvent {
/*
* The type of event.
@@ -117,7 +117,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
jsonWriter.writeIntField("content_index", this.contentIndex);
jsonWriter.writeStringField("transcript", this.transcript);
jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString());
- jsonWriter.writeArrayField("logprobs", this.logprobs, (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();
}
@@ -141,7 +141,7 @@ public static SessionUpdateConversationItemInputAudioTranscriptionCompleted from
int contentIndex = 0;
String transcript = null;
ServerEventType type = ServerEventType.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_COMPLETED;
- List logprobs = null;
+ List logProbs = null;
List phrases = null;
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
@@ -157,7 +157,7 @@ public static SessionUpdateConversationItemInputAudioTranscriptionCompleted from
} else if ("type".equals(fieldName)) {
type = ServerEventType.fromString(reader.getString());
} else if ("logprobs".equals(fieldName)) {
- logprobs = reader.readArray(reader1 -> LogProbProperties.fromJson(reader1));
+ logProbs = reader.readArray(reader1 -> LogProbProperties.fromJson(reader1));
} else if ("phrases".equals(fieldName)) {
phrases = reader.readArray(reader1 -> TranscriptionPhrase.fromJson(reader1));
} else {
@@ -168,18 +168,12 @@ public static SessionUpdateConversationItemInputAudioTranscriptionCompleted from
= new SessionUpdateConversationItemInputAudioTranscriptionCompleted(itemId, contentIndex, transcript);
deserializedSessionUpdateConversationItemInputAudioTranscriptionCompleted.setEventId(eventId);
deserializedSessionUpdateConversationItemInputAudioTranscriptionCompleted.type = type;
- deserializedSessionUpdateConversationItemInputAudioTranscriptionCompleted.logprobs = logprobs;
+ deserializedSessionUpdateConversationItemInputAudioTranscriptionCompleted.logProbs = logProbs;
deserializedSessionUpdateConversationItemInputAudioTranscriptionCompleted.phrases = phrases;
return deserializedSessionUpdateConversationItemInputAudioTranscriptionCompleted;
});
}
- /*
- * The log probabilities of the transcription tokens.
- */
- @Generated
- private List logprobs;
-
/*
* The transcription phrases with timing information.
*/
@@ -187,22 +181,28 @@ public static SessionUpdateConversationItemInputAudioTranscriptionCompleted from
private List phrases;
/**
- * Get the logprobs property: The log probabilities of the transcription tokens.
+ * Get the phrases property: The transcription phrases with timing information.
*
- * @return the logprobs value.
+ * @return the phrases value.
*/
@Generated
- public List getLogprobs() {
- return this.logprobs;
+ public List getPhrases() {
+ return this.phrases;
}
+ /*
+ * The log probabilities of the transcription tokens.
+ */
+ @Generated
+ private List logProbs;
+
/**
- * Get the phrases property: The transcription phrases with timing information.
+ * Get the logProbs property: The log probabilities of the transcription tokens.
*
- * @return the phrases value.
+ * @return the logProbs value.
*/
@Generated
- public List getPhrases() {
- return this.phrases;
+ public List getLogProbs() {
+ return this.logProbs;
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionDelta.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionDelta.java
index 845d7151e1a7..123135120ca4 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionDelta.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionDelta.java
@@ -15,7 +15,7 @@
* Returned when the text value of an input audio transcription content part is updated.
*/
@Immutable
-public final class SessionUpdateConversationItemInputAudioTranscriptionDelta extends SessionUpdate {
+public final class SessionUpdateConversationItemInputAudioTranscriptionDelta extends SessionServerEvent {
/*
* The type of event.
@@ -41,12 +41,6 @@ public final class SessionUpdateConversationItemInputAudioTranscriptionDelta ext
@Generated
private String delta;
- /*
- * The log probabilities of the transcription.
- */
- @Generated
- private List logprobs;
-
/**
* Creates an instance of SessionUpdateConversationItemInputAudioTranscriptionDelta class.
*
@@ -98,16 +92,6 @@ public String getDelta() {
return this.delta;
}
- /**
- * Get the logprobs property: The log probabilities of the transcription.
- *
- * @return the logprobs value.
- */
- @Generated
- public List getLogprobs() {
- return this.logprobs;
- }
-
/**
* {@inheritDoc}
*/
@@ -120,7 +104,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
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));
+ jsonWriter.writeArrayField("logprobs", this.logProbs, (writer, element) -> writer.writeJson(element));
return jsonWriter.writeEndObject();
}
@@ -143,7 +127,7 @@ public static SessionUpdateConversationItemInputAudioTranscriptionDelta fromJson
ServerEventType type = ServerEventType.CONVERSATION_ITEM_INPUT_AUDIO_TRANSCRIPTION_DELTA;
Integer contentIndex = null;
String delta = null;
- List logprobs = null;
+ List logProbs = null;
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
@@ -158,7 +142,7 @@ public static SessionUpdateConversationItemInputAudioTranscriptionDelta fromJson
} else if ("delta".equals(fieldName)) {
delta = reader.getString();
} else if ("logprobs".equals(fieldName)) {
- logprobs = reader.readArray(reader1 -> LogProbProperties.fromJson(reader1));
+ logProbs = reader.readArray(reader1 -> LogProbProperties.fromJson(reader1));
} else {
reader.skipChildren();
}
@@ -169,8 +153,24 @@ public static SessionUpdateConversationItemInputAudioTranscriptionDelta fromJson
deserializedSessionUpdateConversationItemInputAudioTranscriptionDelta.type = type;
deserializedSessionUpdateConversationItemInputAudioTranscriptionDelta.contentIndex = contentIndex;
deserializedSessionUpdateConversationItemInputAudioTranscriptionDelta.delta = delta;
- deserializedSessionUpdateConversationItemInputAudioTranscriptionDelta.logprobs = logprobs;
+ deserializedSessionUpdateConversationItemInputAudioTranscriptionDelta.logProbs = logProbs;
return deserializedSessionUpdateConversationItemInputAudioTranscriptionDelta;
});
}
+
+ /*
+ * The log probabilities of the transcription.
+ */
+ @Generated
+ private List logProbs;
+
+ /**
+ * Get the logProbs property: The log probabilities of the transcription.
+ *
+ * @return the logProbs value.
+ */
+ @Generated
+ public List getLogProbs() {
+ return this.logProbs;
+ }
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionFailed.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionFailed.java
index 0445dce51d7a..882ae62b5d9b 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionFailed.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionFailed.java
@@ -16,7 +16,7 @@
* `error` events so that the client can identify the related Item.
*/
@Immutable
-public final class SessionUpdateConversationItemInputAudioTranscriptionFailed extends SessionUpdate {
+public final class SessionUpdateConversationItemInputAudioTranscriptionFailed extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemRetrieved.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemRetrieved.java
index 1c2783654dee..d99661ddccf6 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemRetrieved.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemRetrieved.java
@@ -14,7 +14,7 @@
* Returned when a conversation item is retrieved with `conversation.item.retrieve`.
*/
@Immutable
-public final class SessionUpdateConversationItemRetrieved extends SessionUpdate {
+public final class SessionUpdateConversationItemRetrieved extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemTruncated.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemTruncated.java
index f1af6d6b70e5..b376763cb052 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemTruncated.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemTruncated.java
@@ -18,7 +18,7 @@
* to ensure there is no text in the context that hasn't been heard by the user.
*/
@Immutable
-public final class SessionUpdateConversationItemTruncated extends SessionUpdate {
+public final class SessionUpdateConversationItemTruncated extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateError.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateError.java
index 7e8f8821f784..0139a732d602 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateError.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateError.java
@@ -16,7 +16,7 @@
* recommend to implementors to monitor and log error messages by default.
*/
@Immutable
-public final class SessionUpdateError extends SessionUpdate {
+public final class SessionUpdateError extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCleared.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCleared.java
index c4eaf3040ba3..82e4fab2322d 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCleared.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCleared.java
@@ -15,7 +15,7 @@
* `input_audio_buffer.clear` event.
*/
@Immutable
-public final class SessionUpdateInputAudioBufferCleared extends SessionUpdate {
+public final class SessionUpdateInputAudioBufferCleared extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCommitted.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCommitted.java
index 0aa7f09695b7..326f819405bb 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCommitted.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCommitted.java
@@ -17,7 +17,7 @@
* will also be sent to the client.
*/
@Immutable
-public final class SessionUpdateInputAudioBufferCommitted extends SessionUpdate {
+public final class SessionUpdateInputAudioBufferCommitted extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStarted.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStarted.java
index c1e908b9f0d5..2cb9ccbfa72a 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStarted.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStarted.java
@@ -22,7 +22,7 @@
* the audio buffer during VAD activation).
*/
@Immutable
-public final class SessionUpdateInputAudioBufferSpeechStarted extends SessionUpdate {
+public final class SessionUpdateInputAudioBufferSpeechStarted extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStopped.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStopped.java
index 81020e243332..9aa91903972e 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStopped.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStopped.java
@@ -16,7 +16,7 @@
* event with the user message item that is created from the audio buffer.
*/
@Immutable
-public final class SessionUpdateInputAudioBufferSpeechStopped extends SessionUpdate {
+public final class SessionUpdateInputAudioBufferSpeechStopped extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDelta.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDelta.java
index 719a82a2394d..617d48203e5b 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDelta.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDelta.java
@@ -15,7 +15,7 @@
* Represents a delta update of blendshape animation frames for a specific output of a response.
*/
@Immutable
-public final class SessionUpdateResponseAnimationBlendshapeDelta extends SessionUpdate {
+public final class SessionUpdateResponseAnimationBlendshapeDelta extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDone.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDone.java
index 75a49555c910..566317105bc2 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDone.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDone.java
@@ -14,7 +14,7 @@
* Indicates the completion of blendshape animation processing for a specific output of a response.
*/
@Immutable
-public final class SessionUpdateResponseAnimationBlendshapeDone extends SessionUpdate {
+public final class SessionUpdateResponseAnimationBlendshapeDone extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDelta.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDelta.java
index 9852be570dd8..0d8781dea309 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDelta.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDelta.java
@@ -14,7 +14,7 @@
* Represents a viseme ID delta update for animation based on audio.
*/
@Immutable
-public final class SessionUpdateResponseAnimationVisemeDelta extends SessionUpdate {
+public final class SessionUpdateResponseAnimationVisemeDelta extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDone.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDone.java
index 92c8b8161472..7f6188e71f0b 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDone.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDone.java
@@ -14,7 +14,7 @@
* Indicates completion of viseme animation delivery for a response.
*/
@Immutable
-public final class SessionUpdateResponseAnimationVisemeDone extends SessionUpdate {
+public final class SessionUpdateResponseAnimationVisemeDone extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDelta.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDelta.java
index 6b96b6507479..ac9fc60696be 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDelta.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDelta.java
@@ -15,7 +15,7 @@
* Returned when the model-generated audio is updated.
*/
@Immutable
-public final class SessionUpdateResponseAudioDelta extends SessionUpdate {
+public final class SessionUpdateResponseAudioDelta extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDone.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDone.java
index 31a08ad19089..9ea2e5f05573 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDone.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDone.java
@@ -15,7 +15,7 @@
* is interrupted, incomplete, or cancelled.
*/
@Immutable
-public final class SessionUpdateResponseAudioDone extends SessionUpdate {
+public final class SessionUpdateResponseAudioDone extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDelta.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDelta.java
index 21cb1e4d45b0..366709b99115 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDelta.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDelta.java
@@ -14,7 +14,7 @@
* Represents a word-level audio timestamp delta for a response.
*/
@Immutable
-public final class SessionUpdateResponseAudioTimestampDelta extends SessionUpdate {
+public final class SessionUpdateResponseAudioTimestampDelta extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDone.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDone.java
index 543066ae08d6..017b0567b747 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDone.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDone.java
@@ -14,7 +14,7 @@
* Indicates completion of audio timestamp delivery for a response.
*/
@Immutable
-public final class SessionUpdateResponseAudioTimestampDone extends SessionUpdate {
+public final class SessionUpdateResponseAudioTimestampDone extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDelta.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDelta.java
index e3a22c7adb20..c1435a5e45cd 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDelta.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDelta.java
@@ -14,7 +14,7 @@
* Returned when the model-generated transcription of audio output is updated.
*/
@Immutable
-public final class SessionUpdateResponseAudioTranscriptDelta extends SessionUpdate {
+public final class SessionUpdateResponseAudioTranscriptDelta extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDone.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDone.java
index 727604e54262..3f71bb67e78e 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDone.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDone.java
@@ -16,7 +16,7 @@
* cancelled.
*/
@Immutable
-public final class SessionUpdateResponseAudioTranscriptDone extends SessionUpdate {
+public final class SessionUpdateResponseAudioTranscriptDone extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartAdded.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartAdded.java
index d4fa452bd47a..e133349929b7 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartAdded.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartAdded.java
@@ -15,7 +15,7 @@
* response generation.
*/
@Immutable
-public final class SessionUpdateResponseContentPartAdded extends SessionUpdate {
+public final class SessionUpdateResponseContentPartAdded extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartDone.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartDone.java
index 08b79cb30c99..2350dc7ad28a 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartDone.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartDone.java
@@ -15,7 +15,7 @@
* Also emitted when a Response is interrupted, incomplete, or cancelled.
*/
@Immutable
-public final class SessionUpdateResponseContentPartDone extends SessionUpdate {
+public final class SessionUpdateResponseContentPartDone extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseCreated.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseCreated.java
index 358ad5a5035e..82acb250e4ca 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseCreated.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseCreated.java
@@ -15,7 +15,7 @@
* where the response is in an initial state of `in_progress`.
*/
@Immutable
-public final class SessionUpdateResponseCreated extends SessionUpdate {
+public final class SessionUpdateResponseCreated extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseDone.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseDone.java
index 209f56f29935..bd7044724a2f 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseDone.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseDone.java
@@ -16,7 +16,7 @@
* include all output Items in the Response but will omit the raw audio data.
*/
@Immutable
-public final class SessionUpdateResponseDone extends SessionUpdate {
+public final class SessionUpdateResponseDone extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDelta.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDelta.java
index 0d9d3e572351..0822d4cd50de 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDelta.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDelta.java
@@ -14,7 +14,7 @@
* Returned when the model-generated function call arguments are updated.
*/
@Immutable
-public final class SessionUpdateResponseFunctionCallArgumentsDelta extends SessionUpdate {
+public final class SessionUpdateResponseFunctionCallArgumentsDelta extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDone.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDone.java
index 8b52c8454ea9..e82d164136b2 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDone.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDone.java
@@ -15,7 +15,7 @@
* Also emitted when a Response is interrupted, incomplete, or cancelled.
*/
@Immutable
-public final class SessionUpdateResponseFunctionCallArgumentsDone extends SessionUpdate {
+public final class SessionUpdateResponseFunctionCallArgumentsDone extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemAdded.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemAdded.java
index e76ffd3c7aed..0873851416c0 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemAdded.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemAdded.java
@@ -14,7 +14,7 @@
* Returned when a new Item is created during Response generation.
*/
@Immutable
-public final class SessionUpdateResponseOutputItemAdded extends SessionUpdate {
+public final class SessionUpdateResponseOutputItemAdded extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemDone.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemDone.java
index bf55c8acc2b7..da6b454c06ee 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemDone.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemDone.java
@@ -15,7 +15,7 @@
* interrupted, incomplete, or cancelled.
*/
@Immutable
-public final class SessionUpdateResponseOutputItemDone extends SessionUpdate {
+public final class SessionUpdateResponseOutputItemDone extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDelta.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDelta.java
index 05859a3875c9..0e4aada5dbb8 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDelta.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDelta.java
@@ -14,7 +14,7 @@
* Returned when the text value of a "text" content part is updated.
*/
@Immutable
-public final class SessionUpdateResponseTextDelta extends SessionUpdate {
+public final class SessionUpdateResponseTextDelta extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDone.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDone.java
index 51b4dea5106b..cdf787312096 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDone.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDone.java
@@ -15,7 +15,7 @@
* emitted when a Response is interrupted, incomplete, or cancelled.
*/
@Immutable
-public final class SessionUpdateResponseTextDone extends SessionUpdate {
+public final class SessionUpdateResponseTextDone extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionCreated.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionCreated.java
index 9ee1a552af50..9990d788baad 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionCreated.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionCreated.java
@@ -16,7 +16,7 @@
* the default Session configuration.
*/
@Immutable
-public final class SessionUpdateSessionCreated extends SessionUpdate {
+public final class SessionUpdateSessionCreated extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionUpdated.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionUpdated.java
index be030083835a..fde5b7d65f99 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionUpdated.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionUpdated.java
@@ -15,7 +15,7 @@
* there is an error.
*/
@Immutable
-public final class SessionUpdateSessionUpdated extends SessionUpdate {
+public final class SessionUpdateSessionUpdated extends SessionServerEvent {
/*
* The type of event.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionOptions.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionOptions.java
index da9f1c71bf9d..c07412427293 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionOptions.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionOptions.java
@@ -32,12 +32,6 @@ public final class VoiceLiveSessionOptions implements JsonSerializable modalities;
- /*
- * The animation configuration for the session.
- */
- @Generated
- private AnimationOptions animation;
-
/*
* The voice configuration for the session.
*/
@@ -90,12 +84,6 @@ public final class VoiceLiveSessionOptions implements JsonSerializable modalitie
return this;
}
- /**
- * Get the animation property: The animation configuration for the session.
- *
- * @return the animation value.
- */
- @Generated
- public AnimationOptions getAnimation() {
- return this.animation;
- }
-
- /**
- * Set the animation property: The animation configuration for the session.
- *
- * @param animation the animation value to set.
- * @return the VoiceLiveSessionOptions object itself.
- */
- @Generated
- public VoiceLiveSessionOptions setAnimation(AnimationOptions animation) {
- this.animation = animation;
- return this;
- }
-
/**
* Get the voice property: The voice configuration for the session.
*
@@ -379,28 +345,6 @@ public VoiceLiveSessionOptions setInputAudioEchoCancellation(AudioEchoCancellati
return this;
}
- /**
- * Get the avatar property: Configuration for avatar streaming and behavior during the session.
- *
- * @return the avatar value.
- */
- @Generated
- public AvatarConfiguration getAvatar() {
- return this.avatar;
- }
-
- /**
- * Set the avatar property: Configuration for avatar streaming and behavior during the session.
- *
- * @param avatar the avatar value to set.
- * @return the VoiceLiveSessionOptions object itself.
- */
- @Generated
- public VoiceLiveSessionOptions setAvatar(AvatarConfiguration avatar) {
- this.avatar = avatar;
- return this;
- }
-
/**
* Get the inputAudioTranscription property: Configuration for input audio transcription.
*
@@ -520,7 +464,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
jsonWriter.writeStringField("model", this.model);
jsonWriter.writeArrayField("modalities", this.modalities,
(writer, element) -> writer.writeString(element == null ? null : element.toString()));
- jsonWriter.writeJsonField("animation", this.animation);
+ jsonWriter.writeJsonField("animation", this.animationOptions);
if (this.voice != null) {
jsonWriter.writeFieldName("voice");
this.voice.writeTo(jsonWriter);
@@ -534,7 +478,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
jsonWriter.writeJsonField("turn_detection", this.turnDetection);
jsonWriter.writeJsonField("input_audio_noise_reduction", this.inputAudioNoiseReduction);
jsonWriter.writeJsonField("input_audio_echo_cancellation", this.inputAudioEchoCancellation);
- jsonWriter.writeJsonField("avatar", this.avatar);
+ jsonWriter.writeJsonField("avatar", this.avatarOptions);
jsonWriter.writeJsonField("input_audio_transcription", this.inputAudioTranscription);
jsonWriter.writeArrayField("output_audio_timestamp_types", this.outputAudioTimestampTypes,
(writer, element) -> writer.writeString(element == null ? null : element.toString()));
@@ -582,7 +526,7 @@ public static VoiceLiveSessionOptions fromJson(JsonReader jsonReader) throws IOE
= reader.readArray(reader1 -> InteractionModality.fromString(reader1.getString()));
deserializedVoiceLiveSessionOptions.modalities = modalities;
} else if ("animation".equals(fieldName)) {
- deserializedVoiceLiveSessionOptions.animation = AnimationOptions.fromJson(reader);
+ deserializedVoiceLiveSessionOptions.animationOptions = AnimationOptions.fromJson(reader);
} else if ("voice".equals(fieldName)) {
deserializedVoiceLiveSessionOptions.voice
= reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped()));
@@ -604,7 +548,7 @@ public static VoiceLiveSessionOptions fromJson(JsonReader jsonReader) throws IOE
deserializedVoiceLiveSessionOptions.inputAudioEchoCancellation
= AudioEchoCancellation.fromJson(reader);
} else if ("avatar".equals(fieldName)) {
- deserializedVoiceLiveSessionOptions.avatar = AvatarConfiguration.fromJson(reader);
+ deserializedVoiceLiveSessionOptions.avatarOptions = AvatarOptions.fromJson(reader);
} else if ("input_audio_transcription".equals(fieldName)) {
deserializedVoiceLiveSessionOptions.inputAudioTranscription
= AudioInputTranscriptionOptions.fromJson(reader);
@@ -813,4 +757,60 @@ public VoiceLiveSessionOptions setMetadata(Map metadata) {
this.metadata = metadata;
return this;
}
+
+ /*
+ * The animation configuration for the session.
+ */
+ @Generated
+ private AnimationOptions animationOptions;
+
+ /*
+ * Configuration for avatar streaming and behavior during the session.
+ */
+ @Generated
+ private AvatarOptions avatarOptions;
+
+ /**
+ * Get the animationOptions property: The animation configuration for the session.
+ *
+ * @return the animationOptions value.
+ */
+ @Generated
+ public AnimationOptions getAnimationOptions() {
+ return this.animationOptions;
+ }
+
+ /**
+ * Set the animationOptions property: The animation configuration for the session.
+ *
+ * @param animationOptions the animationOptions value to set.
+ * @return the VoiceLiveSessionOptions object itself.
+ */
+ @Generated
+ public VoiceLiveSessionOptions setAnimationOptions(AnimationOptions animationOptions) {
+ this.animationOptions = animationOptions;
+ return this;
+ }
+
+ /**
+ * Get the avatarOptions property: Configuration for avatar streaming and behavior during the session.
+ *
+ * @return the avatarOptions value.
+ */
+ @Generated
+ public AvatarOptions getAvatarOptions() {
+ return this.avatarOptions;
+ }
+
+ /**
+ * Set the avatarOptions property: Configuration for avatar streaming and behavior during the session.
+ *
+ * @param avatarOptions the avatarOptions value to set.
+ * @return the VoiceLiveSessionOptions object itself.
+ */
+ @Generated
+ public VoiceLiveSessionOptions setAvatarOptions(AvatarOptions avatarOptions) {
+ this.avatarOptions = avatarOptions;
+ return this;
+ }
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionResponse.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionResponse.java
index 4c89d045e6d4..78c74fa3ba3e 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionResponse.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionResponse.java
@@ -32,12 +32,6 @@ public final class VoiceLiveSessionResponse implements JsonSerializable modalities;
- /*
- * The animation configuration for the session.
- */
- @Generated
- private AnimationOptions animation;
-
/*
* The voice configuration for the session.
*/
@@ -90,12 +84,6 @@ public final class VoiceLiveSessionResponse implements JsonSerializable modaliti
return this;
}
- /**
- * Get the animation property: The animation configuration for the session.
- *
- * @return the animation value.
- */
- @Generated
- public AnimationOptions getAnimation() {
- return this.animation;
- }
-
- /**
- * Set the animation property: The animation configuration for the session.
- *
- * @param animation the animation value to set.
- * @return the VoiceLiveSessionResponse object itself.
- */
- @Generated
- public VoiceLiveSessionResponse setAnimation(AnimationOptions animation) {
- this.animation = animation;
- return this;
- }
-
/**
* Get the voice property: The voice configuration for the session.
*
@@ -391,28 +357,6 @@ public VoiceLiveSessionResponse setInputAudioEchoCancellation(AudioEchoCancellat
return this;
}
- /**
- * Get the avatar property: Configuration for avatar streaming and behavior during the session.
- *
- * @return the avatar value.
- */
- @Generated
- public AvatarConfiguration getAvatar() {
- return this.avatar;
- }
-
- /**
- * Set the avatar property: Configuration for avatar streaming and behavior during the session.
- *
- * @param avatar the avatar value to set.
- * @return the VoiceLiveSessionResponse object itself.
- */
- @Generated
- public VoiceLiveSessionResponse setAvatar(AvatarConfiguration avatar) {
- this.avatar = avatar;
- return this;
- }
-
/**
* Get the inputAudioTranscription property: Configuration for input audio transcription.
*
@@ -576,7 +520,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
jsonWriter.writeStringField("model", this.model);
jsonWriter.writeArrayField("modalities", this.modalities,
(writer, element) -> writer.writeString(element == null ? null : element.toString()));
- jsonWriter.writeJsonField("animation", this.animation);
+ jsonWriter.writeJsonField("animation", this.animationOptions);
if (this.voice != null) {
jsonWriter.writeFieldName("voice");
this.voice.writeTo(jsonWriter);
@@ -590,7 +534,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
jsonWriter.writeJsonField("turn_detection", this.turnDetection);
jsonWriter.writeJsonField("input_audio_noise_reduction", this.inputAudioNoiseReduction);
jsonWriter.writeJsonField("input_audio_echo_cancellation", this.inputAudioEchoCancellation);
- jsonWriter.writeJsonField("avatar", this.avatar);
+ jsonWriter.writeJsonField("avatar", this.avatarOptions);
jsonWriter.writeJsonField("input_audio_transcription", this.inputAudioTranscription);
jsonWriter.writeArrayField("output_audio_timestamp_types", this.outputAudioTimestampTypes,
(writer, element) -> writer.writeString(element == null ? null : element.toString()));
@@ -640,7 +584,7 @@ public static VoiceLiveSessionResponse fromJson(JsonReader jsonReader) throws IO
= reader.readArray(reader1 -> InteractionModality.fromString(reader1.getString()));
deserializedVoiceLiveSessionResponse.modalities = modalities;
} else if ("animation".equals(fieldName)) {
- deserializedVoiceLiveSessionResponse.animation = AnimationOptions.fromJson(reader);
+ deserializedVoiceLiveSessionResponse.animationOptions = AnimationOptions.fromJson(reader);
} else if ("voice".equals(fieldName)) {
deserializedVoiceLiveSessionResponse.voice
= reader.getNullable(nonNullReader -> BinaryData.fromObject(nonNullReader.readUntyped()));
@@ -664,7 +608,7 @@ public static VoiceLiveSessionResponse fromJson(JsonReader jsonReader) throws IO
deserializedVoiceLiveSessionResponse.inputAudioEchoCancellation
= AudioEchoCancellation.fromJson(reader);
} else if ("avatar".equals(fieldName)) {
- deserializedVoiceLiveSessionResponse.avatar = AvatarConfiguration.fromJson(reader);
+ deserializedVoiceLiveSessionResponse.avatarOptions = AvatarOptions.fromJson(reader);
} else if ("input_audio_transcription".equals(fieldName)) {
deserializedVoiceLiveSessionResponse.inputAudioTranscription
= AudioInputTranscriptionOptions.fromJson(reader);
@@ -877,4 +821,60 @@ public VoiceLiveSessionResponse setMetadata(Map metadata) {
this.metadata = metadata;
return this;
}
+
+ /*
+ * The animation configuration for the session.
+ */
+ @Generated
+ private AnimationOptions animationOptions;
+
+ /*
+ * Configuration for avatar streaming and behavior during the session.
+ */
+ @Generated
+ private AvatarOptions avatarOptions;
+
+ /**
+ * Get the animationOptions property: The animation configuration for the session.
+ *
+ * @return the animationOptions value.
+ */
+ @Generated
+ public AnimationOptions getAnimationOptions() {
+ return this.animationOptions;
+ }
+
+ /**
+ * Set the animationOptions property: The animation configuration for the session.
+ *
+ * @param animationOptions the animationOptions value to set.
+ * @return the VoiceLiveSessionResponse object itself.
+ */
+ @Generated
+ public VoiceLiveSessionResponse setAnimationOptions(AnimationOptions animationOptions) {
+ this.animationOptions = animationOptions;
+ return this;
+ }
+
+ /**
+ * Get the avatarOptions property: Configuration for avatar streaming and behavior during the session.
+ *
+ * @return the avatarOptions value.
+ */
+ @Generated
+ public AvatarOptions getAvatarOptions() {
+ return this.avatarOptions;
+ }
+
+ /**
+ * Set the avatarOptions property: Configuration for avatar streaming and behavior during the session.
+ *
+ * @param avatarOptions the avatarOptions value to set.
+ * @return the VoiceLiveSessionResponse object itself.
+ */
+ @Generated
+ public VoiceLiveSessionResponse setAvatarOptions(AvatarOptions avatarOptions) {
+ this.avatarOptions = avatarOptions;
+ return this;
+ }
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/VoiceLiveToolDefinition.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/VoiceLiveToolDefinition.java
index dae0cd192f44..a03c0370410b 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/VoiceLiveToolDefinition.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/VoiceLiveToolDefinition.java
@@ -80,7 +80,7 @@ public static VoiceLiveToolDefinition fromJson(JsonReader jsonReader) throws IOE
if ("function".equals(discriminatorValue)) {
return VoiceLiveFunctionDefinition.fromJson(readerToUse.reset());
} else if ("mcp".equals(discriminatorValue)) {
- return MCPServer.fromJson(readerToUse.reset());
+ return McpServer.fromJson(readerToUse.reset());
} else {
return fromJsonKnownDiscriminator(readerToUse.reset());
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/resources/META-INF/azure-ai-voicelive_metadata.json b/sdk/voicelive/azure-ai-voicelive/src/main/resources/META-INF/azure-ai-voicelive_metadata.json
index d9c9db952ffc..4c23983b9965 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/resources/META-INF/azure-ai-voicelive_metadata.json
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/resources/META-INF/azure-ai-voicelive_metadata.json
@@ -1 +1 @@
-{"flavor":"azure","apiVersions":{"VoiceLive":"2026-04-10"},"crossLanguagePackageId":"VoiceLive","crossLanguageVersion":"86299c665983","crossLanguageDefinitions":{"com.azure.ai.voicelive.models.AnimationOptions":"VoiceLive.Animation","com.azure.ai.voicelive.models.AnimationOutputType":"VoiceLive.AnimationOutputType","com.azure.ai.voicelive.models.AssistantMessageItem":"VoiceLive.AssistantMessageItem","com.azure.ai.voicelive.models.AudioEchoCancellation":"VoiceLive.AudioEchoCancellation","com.azure.ai.voicelive.models.AudioInputTranscriptionOptions":"VoiceLive.AudioInputTranscriptionOptions","com.azure.ai.voicelive.models.AudioInputTranscriptionOptionsModel":"VoiceLive.AudioInputTranscriptionOptions.model.anonymous","com.azure.ai.voicelive.models.AudioNoiseReduction":"VoiceLive.AudioNoiseReduction","com.azure.ai.voicelive.models.AudioNoiseReductionType":"VoiceLive.AudioNoiseReduction.type.anonymous","com.azure.ai.voicelive.models.AudioTimestampType":"VoiceLive.AudioTimestampType","com.azure.ai.voicelive.models.AvatarConfigTypes":"VoiceLive.AvatarConfigTypes","com.azure.ai.voicelive.models.AvatarConfiguration":"VoiceLive.AvatarConfig","com.azure.ai.voicelive.models.AvatarOutputProtocol":"VoiceLive.AvatarOutputProtocol","com.azure.ai.voicelive.models.AzureAvatarVoiceSyncVoice":"VoiceLive.AzureAvatarVoiceSyncVoice","com.azure.ai.voicelive.models.AzureCustomVoice":"VoiceLive.AzureCustomVoice","com.azure.ai.voicelive.models.AzurePersonalVoice":"VoiceLive.AzurePersonalVoice","com.azure.ai.voicelive.models.AzureSemanticEouDetection":"VoiceLive.AzureSemanticDetection","com.azure.ai.voicelive.models.AzureSemanticEouDetectionEn":"VoiceLive.AzureSemanticDetectionEn","com.azure.ai.voicelive.models.AzureSemanticEouDetectionMultilingual":"VoiceLive.AzureSemanticDetectionMultilingual","com.azure.ai.voicelive.models.AzureSemanticVadTurnDetection":"VoiceLive.AzureSemanticVad","com.azure.ai.voicelive.models.AzureSemanticVadTurnDetectionEn":"VoiceLive.AzureSemanticVadEn","com.azure.ai.voicelive.models.AzureSemanticVadTurnDetectionMultilingual":"VoiceLive.AzureSemanticVadMultilingual","com.azure.ai.voicelive.models.AzureStandardVoice":"VoiceLive.AzureStandardVoice","com.azure.ai.voicelive.models.AzureVoice":"VoiceLive.AzureVoice","com.azure.ai.voicelive.models.AzureVoiceType":"VoiceLive.AzureVoiceType","com.azure.ai.voicelive.models.CachedTokenDetails":"VoiceLive.CachedTokenDetails","com.azure.ai.voicelive.models.ClientEvent":"VoiceLive.ClientEvent","com.azure.ai.voicelive.models.ClientEventConversationItemCreate":"VoiceLive.ClientEventConversationItemCreate","com.azure.ai.voicelive.models.ClientEventConversationItemDelete":"VoiceLive.ClientEventConversationItemDelete","com.azure.ai.voicelive.models.ClientEventConversationItemRetrieve":"VoiceLive.ClientEventConversationItemRetrieve","com.azure.ai.voicelive.models.ClientEventConversationItemTruncate":"VoiceLive.ClientEventConversationItemTruncate","com.azure.ai.voicelive.models.ClientEventInputAudioBufferAppend":"VoiceLive.ClientEventInputAudioBufferAppend","com.azure.ai.voicelive.models.ClientEventInputAudioBufferClear":"VoiceLive.ClientEventInputAudioBufferClear","com.azure.ai.voicelive.models.ClientEventInputAudioBufferCommit":"VoiceLive.ClientEventInputAudioBufferCommit","com.azure.ai.voicelive.models.ClientEventInputAudioClear":"VoiceLive.ClientEventInputAudioClear","com.azure.ai.voicelive.models.ClientEventInputAudioTurnAppend":"VoiceLive.ClientEventInputAudioTurnAppend","com.azure.ai.voicelive.models.ClientEventInputAudioTurnCancel":"VoiceLive.ClientEventInputAudioTurnCancel","com.azure.ai.voicelive.models.ClientEventInputAudioTurnEnd":"VoiceLive.ClientEventInputAudioTurnEnd","com.azure.ai.voicelive.models.ClientEventInputAudioTurnStart":"VoiceLive.ClientEventInputAudioTurnStart","com.azure.ai.voicelive.models.ClientEventOutputAudioBufferClear":"VoiceLive.ClientEventOutputAudioBufferClear","com.azure.ai.voicelive.models.ClientEventResponseCancel":"VoiceLive.ClientEventResponseCancel","com.azure.ai.voicelive.models.ClientEventResponseCreate":"VoiceLive.ClientEventResponseCreate","com.azure.ai.voicelive.models.ClientEventSessionAvatarConnect":"VoiceLive.ClientEventSessionAvatarConnect","com.azure.ai.voicelive.models.ClientEventSessionUpdate":"VoiceLive.ClientEventSessionUpdate","com.azure.ai.voicelive.models.ClientEventType":"VoiceLive.ClientEventType","com.azure.ai.voicelive.models.ContentPartType":"VoiceLive.ContentPartType","com.azure.ai.voicelive.models.ConversationRequestItem":"VoiceLive.ConversationRequestItem","com.azure.ai.voicelive.models.EouDetection":"VoiceLive.EouDetection","com.azure.ai.voicelive.models.EouDetectionModel":"VoiceLive.EouDetection.model.anonymous","com.azure.ai.voicelive.models.EouThresholdLevel":"VoiceLive.EouThresholdLevel","com.azure.ai.voicelive.models.FileSearchResult":"VoiceLive.FileSearchResult","com.azure.ai.voicelive.models.FunctionCallItem":"VoiceLive.FunctionCallItem","com.azure.ai.voicelive.models.FunctionCallOutputItem":"VoiceLive.FunctionCallOutputItem","com.azure.ai.voicelive.models.IceServer":"VoiceLive.IceServer","com.azure.ai.voicelive.models.InputAudioContentPart":"VoiceLive.InputAudioContentPart","com.azure.ai.voicelive.models.InputAudioFormat":"VoiceLive.InputAudioFormat","com.azure.ai.voicelive.models.InputTextContentPart":"VoiceLive.InputTextContentPart","com.azure.ai.voicelive.models.InputTokenDetails":"VoiceLive.InputTokenDetails","com.azure.ai.voicelive.models.InteractionModality":"VoiceLive.Modality","com.azure.ai.voicelive.models.InterimResponseConfigBase":"VoiceLive.InterimResponseConfigBase","com.azure.ai.voicelive.models.InterimResponseConfigType":"VoiceLive.InterimResponseConfigType","com.azure.ai.voicelive.models.InterimResponseTrigger":"VoiceLive.InterimResponseTrigger","com.azure.ai.voicelive.models.ItemParamStatus":"VoiceLive.ItemParamStatus","com.azure.ai.voicelive.models.ItemType":"VoiceLive.ItemType","com.azure.ai.voicelive.models.LlmInterimResponseConfig":"VoiceLive.LlmInterimResponseConfig","com.azure.ai.voicelive.models.LogProbProperties":"VoiceLive.LogProbProperties","com.azure.ai.voicelive.models.MCPApprovalResponseRequestItem":"VoiceLive.MCPApprovalResponseRequestItem","com.azure.ai.voicelive.models.MCPApprovalType":"VoiceLive.MCPApprovalType","com.azure.ai.voicelive.models.MCPServer":"VoiceLive.MCPServer","com.azure.ai.voicelive.models.MCPTool":"VoiceLive.MCPTool","com.azure.ai.voicelive.models.MessageContentPart":"VoiceLive.MessageContentPart","com.azure.ai.voicelive.models.MessageItem":"VoiceLive.MessageItem","com.azure.ai.voicelive.models.OpenAIVoice":"VoiceLive.OpenAIVoice","com.azure.ai.voicelive.models.OpenAIVoiceName":"VoiceLive.OAIVoice","com.azure.ai.voicelive.models.OutputAudioFormat":"VoiceLive.OutputAudioFormat","com.azure.ai.voicelive.models.OutputTextContentPart":"VoiceLive.OutputTextContentPart","com.azure.ai.voicelive.models.OutputTokenDetails":"VoiceLive.OutputTokenDetails","com.azure.ai.voicelive.models.PersonalVoiceModels":"VoiceLive.PersonalVoiceModels","com.azure.ai.voicelive.models.PhotoAvatarBaseModes":"VoiceLive.PhotoAvatarBaseModes","com.azure.ai.voicelive.models.ReasoningEffort":"VoiceLive.ReasoningEffort","com.azure.ai.voicelive.models.RequestAudioContentPart":"VoiceLive.RequestAudioContentPart","com.azure.ai.voicelive.models.RequestImageContentPart":"VoiceLive.RequestImageContentPart","com.azure.ai.voicelive.models.RequestImageContentPartDetail":"VoiceLive.RequestImageContentPartDetail","com.azure.ai.voicelive.models.RequestTextContentPart":"VoiceLive.RequestTextContentPart","com.azure.ai.voicelive.models.RespondingAgentOptions":"VoiceLive.AgentConfig","com.azure.ai.voicelive.models.ResponseAudioContentPart":"VoiceLive.ResponseAudioContentPart","com.azure.ai.voicelive.models.ResponseCancelledDetails":"VoiceLive.ResponseCancelledDetails","com.azure.ai.voicelive.models.ResponseCancelledDetailsReason":"VoiceLive.ResponseCancelledDetails.reason.anonymous","com.azure.ai.voicelive.models.ResponseCreateParams":"VoiceLive.ResponseCreateParams","com.azure.ai.voicelive.models.ResponseFailedDetails":"VoiceLive.ResponseFailedDetails","com.azure.ai.voicelive.models.ResponseFileSearchCallItem":"VoiceLive.ResponseFileSearchCallItem","com.azure.ai.voicelive.models.ResponseFileSearchCallItemStatus":"VoiceLive.ResponseFileSearchCallItem.status.anonymous","com.azure.ai.voicelive.models.ResponseFunctionCallItem":"VoiceLive.ResponseFunctionCallItem","com.azure.ai.voicelive.models.ResponseFunctionCallOutputItem":"VoiceLive.ResponseFunctionCallOutputItem","com.azure.ai.voicelive.models.ResponseIncompleteDetails":"VoiceLive.ResponseIncompleteDetails","com.azure.ai.voicelive.models.ResponseIncompleteDetailsReason":"VoiceLive.ResponseIncompleteDetails.reason.anonymous","com.azure.ai.voicelive.models.ResponseItemObject":null,"com.azure.ai.voicelive.models.ResponseMCPApprovalRequestItem":"VoiceLive.ResponseMCPApprovalRequestItem","com.azure.ai.voicelive.models.ResponseMCPApprovalResponseItem":"VoiceLive.ResponseMCPApprovalResponseItem","com.azure.ai.voicelive.models.ResponseMCPCallItem":"VoiceLive.ResponseMCPCallItem","com.azure.ai.voicelive.models.ResponseMCPListToolItem":"VoiceLive.ResponseMCPListToolItem","com.azure.ai.voicelive.models.ResponseMessageRole":"VoiceLive.MessageRole","com.azure.ai.voicelive.models.ResponseObject":null,"com.azure.ai.voicelive.models.ResponseStatusDetails":"VoiceLive.ResponseStatusDetails","com.azure.ai.voicelive.models.ResponseTextContentPart":"VoiceLive.ResponseTextContentPart","com.azure.ai.voicelive.models.ResponseTokenStatistics":"VoiceLive.TokenUsage","com.azure.ai.voicelive.models.ResponseWebSearchCallItem":"VoiceLive.ResponseWebSearchCallItem","com.azure.ai.voicelive.models.ResponseWebSearchCallItemStatus":"VoiceLive.ResponseWebSearchCallItem.status.anonymous","com.azure.ai.voicelive.models.Scene":"VoiceLive.Scene","com.azure.ai.voicelive.models.ServerEventMcpListToolsCompleted":"VoiceLive.ServerEventMcpListToolsCompleted","com.azure.ai.voicelive.models.ServerEventMcpListToolsFailed":"VoiceLive.ServerEventMcpListToolsFailed","com.azure.ai.voicelive.models.ServerEventMcpListToolsInProgress":"VoiceLive.ServerEventMcpListToolsInProgress","com.azure.ai.voicelive.models.ServerEventOutputAudioBufferCleared":"VoiceLive.ServerEventOutputAudioBufferCleared","com.azure.ai.voicelive.models.ServerEventResponseAudioTranscriptAnnotationAdded":"VoiceLive.ServerEventResponseAudioTranscriptAnnotationAdded","com.azure.ai.voicelive.models.ServerEventResponseFileSearchCallCompleted":"VoiceLive.ServerEventResponseFileSearchCallCompleted","com.azure.ai.voicelive.models.ServerEventResponseFileSearchCallInProgress":"VoiceLive.ServerEventResponseFileSearchCallInProgress","com.azure.ai.voicelive.models.ServerEventResponseFileSearchCallSearching":"VoiceLive.ServerEventResponseFileSearchCallSearching","com.azure.ai.voicelive.models.ServerEventResponseMcpCallArgumentsDelta":"VoiceLive.ServerEventResponseMcpCallArgumentsDelta","com.azure.ai.voicelive.models.ServerEventResponseMcpCallArgumentsDone":"VoiceLive.ServerEventResponseMcpCallArgumentsDone","com.azure.ai.voicelive.models.ServerEventResponseMcpCallCompleted":"VoiceLive.ServerEventResponseMcpCallCompleted","com.azure.ai.voicelive.models.ServerEventResponseMcpCallFailed":"VoiceLive.ServerEventResponseMcpCallFailed","com.azure.ai.voicelive.models.ServerEventResponseMcpCallInProgress":"VoiceLive.ServerEventResponseMcpCallInProgress","com.azure.ai.voicelive.models.ServerEventResponseVideoDelta":"VoiceLive.ServerEventResponseVideoDelta","com.azure.ai.voicelive.models.ServerEventResponseWebSearchCallCompleted":"VoiceLive.ServerEventResponseWebSearchCallCompleted","com.azure.ai.voicelive.models.ServerEventResponseWebSearchCallInProgress":"VoiceLive.ServerEventResponseWebSearchCallInProgress","com.azure.ai.voicelive.models.ServerEventResponseWebSearchCallSearching":"VoiceLive.ServerEventResponseWebSearchCallSearching","com.azure.ai.voicelive.models.ServerEventSessionAvatarSwitchToIdle":"VoiceLive.ServerEventSessionAvatarSwitchToIdle","com.azure.ai.voicelive.models.ServerEventSessionAvatarSwitchToSpeaking":"VoiceLive.ServerEventSessionAvatarSwitchToSpeaking","com.azure.ai.voicelive.models.ServerEventType":"VoiceLive.ServerEventType","com.azure.ai.voicelive.models.ServerEventWarning":"VoiceLive.ServerEventWarning","com.azure.ai.voicelive.models.ServerEventWarningDetails":"VoiceLive.ServerEventWarningDetails","com.azure.ai.voicelive.models.ServerVadTurnDetection":"VoiceLive.ServerVad","com.azure.ai.voicelive.models.SessionIncludeOption":"VoiceLive.SessionIncludeOption","com.azure.ai.voicelive.models.SessionResponse":"VoiceLive.Response","com.azure.ai.voicelive.models.SessionResponseItem":"VoiceLive.ResponseItem","com.azure.ai.voicelive.models.SessionResponseItemStatus":"VoiceLive.ResponseItemStatus","com.azure.ai.voicelive.models.SessionResponseMessageItem":"VoiceLive.ResponseMessageItem","com.azure.ai.voicelive.models.SessionResponseStatus":"VoiceLive.ResponseStatus","com.azure.ai.voicelive.models.SessionUpdate":"VoiceLive.ServerEvent","com.azure.ai.voicelive.models.SessionUpdateAvatarConnecting":"VoiceLive.ServerEventSessionAvatarConnecting","com.azure.ai.voicelive.models.SessionUpdateConversationItemCreated":"VoiceLive.ServerEventConversationItemCreated","com.azure.ai.voicelive.models.SessionUpdateConversationItemDeleted":"VoiceLive.ServerEventConversationItemDeleted","com.azure.ai.voicelive.models.SessionUpdateConversationItemInputAudioTranscriptionCompleted":"VoiceLive.ServerEventConversationItemInputAudioTranscriptionCompleted","com.azure.ai.voicelive.models.SessionUpdateConversationItemInputAudioTranscriptionDelta":"VoiceLive.ServerEventConversationItemInputAudioTranscriptionDelta","com.azure.ai.voicelive.models.SessionUpdateConversationItemInputAudioTranscriptionFailed":"VoiceLive.ServerEventConversationItemInputAudioTranscriptionFailed","com.azure.ai.voicelive.models.SessionUpdateConversationItemRetrieved":"VoiceLive.ServerEventConversationItemRetrieved","com.azure.ai.voicelive.models.SessionUpdateConversationItemTruncated":"VoiceLive.ServerEventConversationItemTruncated","com.azure.ai.voicelive.models.SessionUpdateError":"VoiceLive.ServerEventError","com.azure.ai.voicelive.models.SessionUpdateErrorDetails":"VoiceLive.ServerEventErrorDetails","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferCleared":"VoiceLive.ServerEventInputAudioBufferCleared","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferCommitted":"VoiceLive.ServerEventInputAudioBufferCommitted","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferSpeechStarted":"VoiceLive.ServerEventInputAudioBufferSpeechStarted","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferSpeechStopped":"VoiceLive.ServerEventInputAudioBufferSpeechStopped","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationBlendshapeDelta":"VoiceLive.ServerEventResponseAnimationBlendshapeDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationBlendshapeDone":"VoiceLive.ServerEventResponseAnimationBlendshapeDone","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationVisemeDelta":"VoiceLive.ServerEventResponseAnimationVisemeDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationVisemeDone":"VoiceLive.ServerEventResponseAnimationVisemeDone","com.azure.ai.voicelive.models.SessionUpdateResponseAudioDelta":"VoiceLive.ServerEventResponseAudioDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAudioDone":"VoiceLive.ServerEventResponseAudioDone","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTimestampDelta":"VoiceLive.ServerEventResponseAudioTimestampDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTimestampDone":"VoiceLive.ServerEventResponseAudioTimestampDone","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTranscriptDelta":"VoiceLive.ServerEventResponseAudioTranscriptDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTranscriptDone":"VoiceLive.ServerEventResponseAudioTranscriptDone","com.azure.ai.voicelive.models.SessionUpdateResponseContentPartAdded":"VoiceLive.ServerEventResponseContentPartAdded","com.azure.ai.voicelive.models.SessionUpdateResponseContentPartDone":"VoiceLive.ServerEventResponseContentPartDone","com.azure.ai.voicelive.models.SessionUpdateResponseCreated":"VoiceLive.ServerEventResponseCreated","com.azure.ai.voicelive.models.SessionUpdateResponseDone":"VoiceLive.ServerEventResponseDone","com.azure.ai.voicelive.models.SessionUpdateResponseFunctionCallArgumentsDelta":"VoiceLive.ServerEventResponseFunctionCallArgumentsDelta","com.azure.ai.voicelive.models.SessionUpdateResponseFunctionCallArgumentsDone":"VoiceLive.ServerEventResponseFunctionCallArgumentsDone","com.azure.ai.voicelive.models.SessionUpdateResponseOutputItemAdded":"VoiceLive.ServerEventResponseOutputItemAdded","com.azure.ai.voicelive.models.SessionUpdateResponseOutputItemDone":"VoiceLive.ServerEventResponseOutputItemDone","com.azure.ai.voicelive.models.SessionUpdateResponseTextDelta":"VoiceLive.ServerEventResponseTextDelta","com.azure.ai.voicelive.models.SessionUpdateResponseTextDone":"VoiceLive.ServerEventResponseTextDone","com.azure.ai.voicelive.models.SessionUpdateSessionCreated":"VoiceLive.ServerEventSessionCreated","com.azure.ai.voicelive.models.SessionUpdateSessionUpdated":"VoiceLive.ServerEventSessionUpdated","com.azure.ai.voicelive.models.StaticInterimResponseConfig":"VoiceLive.StaticInterimResponseConfig","com.azure.ai.voicelive.models.SystemMessageItem":"VoiceLive.SystemMessageItem","com.azure.ai.voicelive.models.ToolChoiceFunctionSelection":"VoiceLive.ToolChoiceFunctionObject","com.azure.ai.voicelive.models.ToolChoiceLiteral":"VoiceLive.ToolChoiceLiteral","com.azure.ai.voicelive.models.ToolChoiceSelection":"VoiceLive.ToolChoiceObject","com.azure.ai.voicelive.models.ToolType":"VoiceLive.ToolType","com.azure.ai.voicelive.models.TranscriptionPhrase":"VoiceLive.TranscriptionPhrase","com.azure.ai.voicelive.models.TranscriptionWord":"VoiceLive.TranscriptionWord","com.azure.ai.voicelive.models.TurnDetection":"VoiceLive.TurnDetection","com.azure.ai.voicelive.models.TurnDetectionType":"VoiceLive.TurnDetectionType","com.azure.ai.voicelive.models.UserMessageItem":"VoiceLive.UserMessageItem","com.azure.ai.voicelive.models.VideoBackground":"VoiceLive.Background","com.azure.ai.voicelive.models.VideoCrop":"VoiceLive.VideoCrop","com.azure.ai.voicelive.models.VideoParams":"VoiceLive.VideoParams","com.azure.ai.voicelive.models.VideoParamsCodec":null,"com.azure.ai.voicelive.models.VideoResolution":"VoiceLive.VideoResolution","com.azure.ai.voicelive.models.VoiceLiveContentPart":"VoiceLive.ContentPart","com.azure.ai.voicelive.models.VoiceLiveErrorDetails":"VoiceLive.VoiceLiveErrorDetails","com.azure.ai.voicelive.models.VoiceLiveFunctionDefinition":"VoiceLive.FunctionTool","com.azure.ai.voicelive.models.VoiceLiveSessionOptions":"VoiceLive.RequestSession","com.azure.ai.voicelive.models.VoiceLiveSessionResponse":"VoiceLive.ResponseSession","com.azure.ai.voicelive.models.VoiceLiveToolDefinition":"VoiceLive.Tool"},"generatedFiles":["src/main/java/com/azure/ai/voicelive/implementation/package-info.java","src/main/java/com/azure/ai/voicelive/models/AnimationOptions.java","src/main/java/com/azure/ai/voicelive/models/AnimationOutputType.java","src/main/java/com/azure/ai/voicelive/models/AssistantMessageItem.java","src/main/java/com/azure/ai/voicelive/models/AudioEchoCancellation.java","src/main/java/com/azure/ai/voicelive/models/AudioInputTranscriptionOptions.java","src/main/java/com/azure/ai/voicelive/models/AudioInputTranscriptionOptionsModel.java","src/main/java/com/azure/ai/voicelive/models/AudioNoiseReduction.java","src/main/java/com/azure/ai/voicelive/models/AudioNoiseReductionType.java","src/main/java/com/azure/ai/voicelive/models/AudioTimestampType.java","src/main/java/com/azure/ai/voicelive/models/AvatarConfigTypes.java","src/main/java/com/azure/ai/voicelive/models/AvatarConfiguration.java","src/main/java/com/azure/ai/voicelive/models/AvatarOutputProtocol.java","src/main/java/com/azure/ai/voicelive/models/AzureAvatarVoiceSyncVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureCustomVoice.java","src/main/java/com/azure/ai/voicelive/models/AzurePersonalVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticEouDetection.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticEouDetectionEn.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticEouDetectionMultilingual.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticVadTurnDetection.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticVadTurnDetectionEn.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticVadTurnDetectionMultilingual.java","src/main/java/com/azure/ai/voicelive/models/AzureStandardVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureVoiceType.java","src/main/java/com/azure/ai/voicelive/models/CachedTokenDetails.java","src/main/java/com/azure/ai/voicelive/models/ClientEvent.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemCreate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemDelete.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemRetrieve.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemTruncate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferAppend.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferClear.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferCommit.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioClear.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnAppend.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnCancel.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnEnd.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnStart.java","src/main/java/com/azure/ai/voicelive/models/ClientEventOutputAudioBufferClear.java","src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCancel.java","src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCreate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventSessionAvatarConnect.java","src/main/java/com/azure/ai/voicelive/models/ClientEventSessionUpdate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventType.java","src/main/java/com/azure/ai/voicelive/models/ContentPartType.java","src/main/java/com/azure/ai/voicelive/models/ConversationRequestItem.java","src/main/java/com/azure/ai/voicelive/models/EouDetection.java","src/main/java/com/azure/ai/voicelive/models/EouDetectionModel.java","src/main/java/com/azure/ai/voicelive/models/EouThresholdLevel.java","src/main/java/com/azure/ai/voicelive/models/FileSearchResult.java","src/main/java/com/azure/ai/voicelive/models/FunctionCallItem.java","src/main/java/com/azure/ai/voicelive/models/FunctionCallOutputItem.java","src/main/java/com/azure/ai/voicelive/models/IceServer.java","src/main/java/com/azure/ai/voicelive/models/InputAudioContentPart.java","src/main/java/com/azure/ai/voicelive/models/InputAudioFormat.java","src/main/java/com/azure/ai/voicelive/models/InputTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/InputTokenDetails.java","src/main/java/com/azure/ai/voicelive/models/InteractionModality.java","src/main/java/com/azure/ai/voicelive/models/InterimResponseConfigBase.java","src/main/java/com/azure/ai/voicelive/models/InterimResponseConfigType.java","src/main/java/com/azure/ai/voicelive/models/InterimResponseTrigger.java","src/main/java/com/azure/ai/voicelive/models/ItemParamStatus.java","src/main/java/com/azure/ai/voicelive/models/ItemType.java","src/main/java/com/azure/ai/voicelive/models/LlmInterimResponseConfig.java","src/main/java/com/azure/ai/voicelive/models/LogProbProperties.java","src/main/java/com/azure/ai/voicelive/models/MCPApprovalResponseRequestItem.java","src/main/java/com/azure/ai/voicelive/models/MCPApprovalType.java","src/main/java/com/azure/ai/voicelive/models/MCPServer.java","src/main/java/com/azure/ai/voicelive/models/MCPTool.java","src/main/java/com/azure/ai/voicelive/models/MessageContentPart.java","src/main/java/com/azure/ai/voicelive/models/MessageItem.java","src/main/java/com/azure/ai/voicelive/models/OpenAIVoice.java","src/main/java/com/azure/ai/voicelive/models/OpenAIVoiceName.java","src/main/java/com/azure/ai/voicelive/models/OutputAudioFormat.java","src/main/java/com/azure/ai/voicelive/models/OutputTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/OutputTokenDetails.java","src/main/java/com/azure/ai/voicelive/models/PersonalVoiceModels.java","src/main/java/com/azure/ai/voicelive/models/PhotoAvatarBaseModes.java","src/main/java/com/azure/ai/voicelive/models/ReasoningEffort.java","src/main/java/com/azure/ai/voicelive/models/RequestAudioContentPart.java","src/main/java/com/azure/ai/voicelive/models/RequestImageContentPart.java","src/main/java/com/azure/ai/voicelive/models/RequestImageContentPartDetail.java","src/main/java/com/azure/ai/voicelive/models/RequestTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/RespondingAgentOptions.java","src/main/java/com/azure/ai/voicelive/models/ResponseAudioContentPart.java","src/main/java/com/azure/ai/voicelive/models/ResponseCancelledDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseCancelledDetailsReason.java","src/main/java/com/azure/ai/voicelive/models/ResponseCreateParams.java","src/main/java/com/azure/ai/voicelive/models/ResponseFailedDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseFileSearchCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseFileSearchCallItemStatus.java","src/main/java/com/azure/ai/voicelive/models/ResponseFunctionCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseFunctionCallOutputItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseIncompleteDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseIncompleteDetailsReason.java","src/main/java/com/azure/ai/voicelive/models/ResponseItemObject.java","src/main/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMCPCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMCPListToolItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMessageRole.java","src/main/java/com/azure/ai/voicelive/models/ResponseObject.java","src/main/java/com/azure/ai/voicelive/models/ResponseStatusDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/ResponseTokenStatistics.java","src/main/java/com/azure/ai/voicelive/models/ResponseWebSearchCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseWebSearchCallItemStatus.java","src/main/java/com/azure/ai/voicelive/models/Scene.java","src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsFailed.java","src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventOutputAudioBufferCleared.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseAudioTranscriptAnnotationAdded.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallSearching.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDelta.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDone.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallFailed.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseVideoDelta.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallSearching.java","src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToIdle.java","src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToSpeaking.java","src/main/java/com/azure/ai/voicelive/models/ServerEventType.java","src/main/java/com/azure/ai/voicelive/models/ServerEventWarning.java","src/main/java/com/azure/ai/voicelive/models/ServerEventWarningDetails.java","src/main/java/com/azure/ai/voicelive/models/ServerVadTurnDetection.java","src/main/java/com/azure/ai/voicelive/models/SessionIncludeOption.java","src/main/java/com/azure/ai/voicelive/models/SessionResponse.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseItem.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseItemStatus.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseMessageItem.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseStatus.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdate.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateAvatarConnecting.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemCreated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemDeleted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionCompleted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionFailed.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemRetrieved.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemTruncated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateError.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateErrorDetails.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCleared.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCommitted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStarted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStopped.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartAdded.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseCreated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemAdded.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionCreated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionUpdated.java","src/main/java/com/azure/ai/voicelive/models/StaticInterimResponseConfig.java","src/main/java/com/azure/ai/voicelive/models/SystemMessageItem.java","src/main/java/com/azure/ai/voicelive/models/ToolChoiceFunctionSelection.java","src/main/java/com/azure/ai/voicelive/models/ToolChoiceLiteral.java","src/main/java/com/azure/ai/voicelive/models/ToolChoiceSelection.java","src/main/java/com/azure/ai/voicelive/models/ToolType.java","src/main/java/com/azure/ai/voicelive/models/TranscriptionPhrase.java","src/main/java/com/azure/ai/voicelive/models/TranscriptionWord.java","src/main/java/com/azure/ai/voicelive/models/TurnDetection.java","src/main/java/com/azure/ai/voicelive/models/TurnDetectionType.java","src/main/java/com/azure/ai/voicelive/models/UserMessageItem.java","src/main/java/com/azure/ai/voicelive/models/VideoBackground.java","src/main/java/com/azure/ai/voicelive/models/VideoCrop.java","src/main/java/com/azure/ai/voicelive/models/VideoParams.java","src/main/java/com/azure/ai/voicelive/models/VideoParamsCodec.java","src/main/java/com/azure/ai/voicelive/models/VideoResolution.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveContentPart.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveErrorDetails.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveFunctionDefinition.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionOptions.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionResponse.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveToolDefinition.java","src/main/java/com/azure/ai/voicelive/models/package-info.java","src/main/java/com/azure/ai/voicelive/package-info.java","src/main/java/module-info.java"]}
\ No newline at end of file
+{"flavor":"azure","apiVersions":{"VoiceLive":"2026-04-10"},"crossLanguagePackageId":"VoiceLive","crossLanguageVersion":"4f7c08a38aa5","crossLanguageDefinitions":{"com.azure.ai.voicelive.models.AnimationOptions":"VoiceLive.Animation","com.azure.ai.voicelive.models.AnimationOutputType":"VoiceLive.AnimationOutputType","com.azure.ai.voicelive.models.AssistantMessageItem":"VoiceLive.AssistantMessageItem","com.azure.ai.voicelive.models.AudioEchoCancellation":"VoiceLive.AudioEchoCancellation","com.azure.ai.voicelive.models.AudioInputTranscriptionOptions":"VoiceLive.AudioInputTranscriptionOptions","com.azure.ai.voicelive.models.AudioInputTranscriptionOptionsModel":"VoiceLive.AudioInputTranscriptionOptions.model.anonymous","com.azure.ai.voicelive.models.AudioNoiseReduction":"VoiceLive.AudioNoiseReduction","com.azure.ai.voicelive.models.AudioNoiseReductionType":"VoiceLive.AudioNoiseReduction.type.anonymous","com.azure.ai.voicelive.models.AudioTimestampType":"VoiceLive.AudioTimestampType","com.azure.ai.voicelive.models.AvatarConfigTypes":"VoiceLive.AvatarConfigTypes","com.azure.ai.voicelive.models.AvatarOptions":"VoiceLive.AvatarConfig","com.azure.ai.voicelive.models.AvatarOutputProtocol":"VoiceLive.AvatarOutputProtocol","com.azure.ai.voicelive.models.AzureAvatarVoiceSyncVoice":"VoiceLive.AzureAvatarVoiceSyncVoice","com.azure.ai.voicelive.models.AzureCustomVoice":"VoiceLive.AzureCustomVoice","com.azure.ai.voicelive.models.AzurePersonalVoice":"VoiceLive.AzurePersonalVoice","com.azure.ai.voicelive.models.AzureSemanticEouDetection":"VoiceLive.AzureSemanticDetection","com.azure.ai.voicelive.models.AzureSemanticEouDetectionEn":"VoiceLive.AzureSemanticDetectionEn","com.azure.ai.voicelive.models.AzureSemanticEouDetectionMultilingual":"VoiceLive.AzureSemanticDetectionMultilingual","com.azure.ai.voicelive.models.AzureSemanticVadTurnDetection":"VoiceLive.AzureSemanticVad","com.azure.ai.voicelive.models.AzureSemanticVadTurnDetectionEn":"VoiceLive.AzureSemanticVadEn","com.azure.ai.voicelive.models.AzureSemanticVadTurnDetectionMultilingual":"VoiceLive.AzureSemanticVadMultilingual","com.azure.ai.voicelive.models.AzureStandardVoice":"VoiceLive.AzureStandardVoice","com.azure.ai.voicelive.models.AzureVoice":"VoiceLive.AzureVoice","com.azure.ai.voicelive.models.AzureVoiceType":"VoiceLive.AzureVoiceType","com.azure.ai.voicelive.models.CachedTokenDetails":"VoiceLive.CachedTokenDetails","com.azure.ai.voicelive.models.ClientEventConversationItemCreate":"VoiceLive.ClientEventConversationItemCreate","com.azure.ai.voicelive.models.ClientEventConversationItemDelete":"VoiceLive.ClientEventConversationItemDelete","com.azure.ai.voicelive.models.ClientEventConversationItemRetrieve":"VoiceLive.ClientEventConversationItemRetrieve","com.azure.ai.voicelive.models.ClientEventConversationItemTruncate":"VoiceLive.ClientEventConversationItemTruncate","com.azure.ai.voicelive.models.ClientEventInputAudioBufferAppend":"VoiceLive.ClientEventInputAudioBufferAppend","com.azure.ai.voicelive.models.ClientEventInputAudioBufferClear":"VoiceLive.ClientEventInputAudioBufferClear","com.azure.ai.voicelive.models.ClientEventInputAudioBufferCommit":"VoiceLive.ClientEventInputAudioBufferCommit","com.azure.ai.voicelive.models.ClientEventInputAudioClear":"VoiceLive.ClientEventInputAudioClear","com.azure.ai.voicelive.models.ClientEventInputAudioTurnAppend":"VoiceLive.ClientEventInputAudioTurnAppend","com.azure.ai.voicelive.models.ClientEventInputAudioTurnCancel":"VoiceLive.ClientEventInputAudioTurnCancel","com.azure.ai.voicelive.models.ClientEventInputAudioTurnEnd":"VoiceLive.ClientEventInputAudioTurnEnd","com.azure.ai.voicelive.models.ClientEventInputAudioTurnStart":"VoiceLive.ClientEventInputAudioTurnStart","com.azure.ai.voicelive.models.ClientEventOutputAudioBufferClear":"VoiceLive.ClientEventOutputAudioBufferClear","com.azure.ai.voicelive.models.ClientEventResponseCancel":"VoiceLive.ClientEventResponseCancel","com.azure.ai.voicelive.models.ClientEventResponseCreate":"VoiceLive.ClientEventResponseCreate","com.azure.ai.voicelive.models.ClientEventSessionAvatarConnect":"VoiceLive.ClientEventSessionAvatarConnect","com.azure.ai.voicelive.models.ClientEventSessionUpdate":"VoiceLive.ClientEventSessionUpdate","com.azure.ai.voicelive.models.ClientEventType":"VoiceLive.ClientEventType","com.azure.ai.voicelive.models.ContentPartType":"VoiceLive.ContentPartType","com.azure.ai.voicelive.models.ConversationRequestItem":"VoiceLive.ConversationRequestItem","com.azure.ai.voicelive.models.EouDetection":"VoiceLive.EouDetection","com.azure.ai.voicelive.models.EouDetectionModel":"VoiceLive.EouDetection.model.anonymous","com.azure.ai.voicelive.models.EouThresholdLevel":"VoiceLive.EouThresholdLevel","com.azure.ai.voicelive.models.FileSearchResult":"VoiceLive.FileSearchResult","com.azure.ai.voicelive.models.FunctionCallItem":"VoiceLive.FunctionCallItem","com.azure.ai.voicelive.models.FunctionCallOutputItem":"VoiceLive.FunctionCallOutputItem","com.azure.ai.voicelive.models.IceServer":"VoiceLive.IceServer","com.azure.ai.voicelive.models.InputAudioContentPart":"VoiceLive.InputAudioContentPart","com.azure.ai.voicelive.models.InputAudioFormat":"VoiceLive.InputAudioFormat","com.azure.ai.voicelive.models.InputTextContentPart":"VoiceLive.InputTextContentPart","com.azure.ai.voicelive.models.InputTokenDetails":"VoiceLive.InputTokenDetails","com.azure.ai.voicelive.models.InteractionModality":"VoiceLive.Modality","com.azure.ai.voicelive.models.InterimResponseConfigBase":"VoiceLive.InterimResponseConfigBase","com.azure.ai.voicelive.models.InterimResponseConfigType":"VoiceLive.InterimResponseConfigType","com.azure.ai.voicelive.models.InterimResponseTrigger":"VoiceLive.InterimResponseTrigger","com.azure.ai.voicelive.models.ItemParamStatus":"VoiceLive.ItemParamStatus","com.azure.ai.voicelive.models.ItemType":"VoiceLive.ItemType","com.azure.ai.voicelive.models.LlmInterimResponseConfig":"VoiceLive.LlmInterimResponseConfig","com.azure.ai.voicelive.models.LogProbProperties":"VoiceLive.LogProbProperties","com.azure.ai.voicelive.models.McpApprovalResponseRequestItem":"VoiceLive.MCPApprovalResponseRequestItem","com.azure.ai.voicelive.models.McpApprovalType":"VoiceLive.MCPApprovalType","com.azure.ai.voicelive.models.McpServer":"VoiceLive.MCPServer","com.azure.ai.voicelive.models.McpTool":"VoiceLive.MCPTool","com.azure.ai.voicelive.models.MessageContentPart":"VoiceLive.MessageContentPart","com.azure.ai.voicelive.models.MessageItem":"VoiceLive.MessageItem","com.azure.ai.voicelive.models.OpenAIVoice":"VoiceLive.OpenAIVoice","com.azure.ai.voicelive.models.OpenAIVoiceName":"VoiceLive.OAIVoice","com.azure.ai.voicelive.models.OutputAudioFormat":"VoiceLive.OutputAudioFormat","com.azure.ai.voicelive.models.OutputTextContentPart":"VoiceLive.OutputTextContentPart","com.azure.ai.voicelive.models.OutputTokenDetails":"VoiceLive.OutputTokenDetails","com.azure.ai.voicelive.models.PersonalVoiceModels":"VoiceLive.PersonalVoiceModels","com.azure.ai.voicelive.models.PhotoAvatarBaseModes":"VoiceLive.PhotoAvatarBaseModes","com.azure.ai.voicelive.models.ReasoningEffort":"VoiceLive.ReasoningEffort","com.azure.ai.voicelive.models.RequestAudioContentPart":"VoiceLive.RequestAudioContentPart","com.azure.ai.voicelive.models.RequestImageContentPart":"VoiceLive.RequestImageContentPart","com.azure.ai.voicelive.models.RequestImageContentPartDetail":"VoiceLive.RequestImageContentPartDetail","com.azure.ai.voicelive.models.RequestTextContentPart":"VoiceLive.RequestTextContentPart","com.azure.ai.voicelive.models.RespondingAgentOptions":"VoiceLive.AgentConfig","com.azure.ai.voicelive.models.ResponseAudioContentPart":"VoiceLive.ResponseAudioContentPart","com.azure.ai.voicelive.models.ResponseCancelledDetails":"VoiceLive.ResponseCancelledDetails","com.azure.ai.voicelive.models.ResponseCancelledDetailsReason":"VoiceLive.ResponseCancelledDetails.reason.anonymous","com.azure.ai.voicelive.models.ResponseCreateParams":"VoiceLive.ResponseCreateParams","com.azure.ai.voicelive.models.ResponseFailedDetails":"VoiceLive.ResponseFailedDetails","com.azure.ai.voicelive.models.ResponseFileSearchCallItem":"VoiceLive.ResponseFileSearchCallItem","com.azure.ai.voicelive.models.ResponseFileSearchCallItemStatus":"VoiceLive.ResponseFileSearchCallItem.status.anonymous","com.azure.ai.voicelive.models.ResponseFunctionCallItem":"VoiceLive.ResponseFunctionCallItem","com.azure.ai.voicelive.models.ResponseFunctionCallOutputItem":"VoiceLive.ResponseFunctionCallOutputItem","com.azure.ai.voicelive.models.ResponseIncompleteDetails":"VoiceLive.ResponseIncompleteDetails","com.azure.ai.voicelive.models.ResponseIncompleteDetailsReason":"VoiceLive.ResponseIncompleteDetails.reason.anonymous","com.azure.ai.voicelive.models.ResponseItemObject":null,"com.azure.ai.voicelive.models.ResponseMcpApprovalRequestItem":"VoiceLive.ResponseMCPApprovalRequestItem","com.azure.ai.voicelive.models.ResponseMcpApprovalResponseItem":"VoiceLive.ResponseMCPApprovalResponseItem","com.azure.ai.voicelive.models.ResponseMcpCallItem":"VoiceLive.ResponseMCPCallItem","com.azure.ai.voicelive.models.ResponseMcpListToolItem":"VoiceLive.ResponseMCPListToolItem","com.azure.ai.voicelive.models.ResponseMessageRole":"VoiceLive.MessageRole","com.azure.ai.voicelive.models.ResponseObject":null,"com.azure.ai.voicelive.models.ResponseStatusDetails":"VoiceLive.ResponseStatusDetails","com.azure.ai.voicelive.models.ResponseTextContentPart":"VoiceLive.ResponseTextContentPart","com.azure.ai.voicelive.models.ResponseTokenStatistics":"VoiceLive.TokenUsage","com.azure.ai.voicelive.models.ResponseWebSearchCallItem":"VoiceLive.ResponseWebSearchCallItem","com.azure.ai.voicelive.models.ResponseWebSearchCallItemStatus":"VoiceLive.ResponseWebSearchCallItem.status.anonymous","com.azure.ai.voicelive.models.Scene":"VoiceLive.Scene","com.azure.ai.voicelive.models.ServerEventMcpListToolsCompleted":"VoiceLive.ServerEventMcpListToolsCompleted","com.azure.ai.voicelive.models.ServerEventMcpListToolsFailed":"VoiceLive.ServerEventMcpListToolsFailed","com.azure.ai.voicelive.models.ServerEventMcpListToolsInProgress":"VoiceLive.ServerEventMcpListToolsInProgress","com.azure.ai.voicelive.models.ServerEventOutputAudioBufferCleared":"VoiceLive.ServerEventOutputAudioBufferCleared","com.azure.ai.voicelive.models.ServerEventResponseAudioTranscriptAnnotationAdded":"VoiceLive.ServerEventResponseAudioTranscriptAnnotationAdded","com.azure.ai.voicelive.models.ServerEventResponseFileSearchCallCompleted":"VoiceLive.ServerEventResponseFileSearchCallCompleted","com.azure.ai.voicelive.models.ServerEventResponseFileSearchCallInProgress":"VoiceLive.ServerEventResponseFileSearchCallInProgress","com.azure.ai.voicelive.models.ServerEventResponseFileSearchCallSearching":"VoiceLive.ServerEventResponseFileSearchCallSearching","com.azure.ai.voicelive.models.ServerEventResponseMcpCallArgumentsDelta":"VoiceLive.ServerEventResponseMcpCallArgumentsDelta","com.azure.ai.voicelive.models.ServerEventResponseMcpCallArgumentsDone":"VoiceLive.ServerEventResponseMcpCallArgumentsDone","com.azure.ai.voicelive.models.ServerEventResponseMcpCallCompleted":"VoiceLive.ServerEventResponseMcpCallCompleted","com.azure.ai.voicelive.models.ServerEventResponseMcpCallFailed":"VoiceLive.ServerEventResponseMcpCallFailed","com.azure.ai.voicelive.models.ServerEventResponseMcpCallInProgress":"VoiceLive.ServerEventResponseMcpCallInProgress","com.azure.ai.voicelive.models.ServerEventResponseVideoDelta":"VoiceLive.ServerEventResponseVideoDelta","com.azure.ai.voicelive.models.ServerEventResponseWebSearchCallCompleted":"VoiceLive.ServerEventResponseWebSearchCallCompleted","com.azure.ai.voicelive.models.ServerEventResponseWebSearchCallInProgress":"VoiceLive.ServerEventResponseWebSearchCallInProgress","com.azure.ai.voicelive.models.ServerEventResponseWebSearchCallSearching":"VoiceLive.ServerEventResponseWebSearchCallSearching","com.azure.ai.voicelive.models.ServerEventSessionAvatarSwitchToIdle":"VoiceLive.ServerEventSessionAvatarSwitchToIdle","com.azure.ai.voicelive.models.ServerEventSessionAvatarSwitchToSpeaking":"VoiceLive.ServerEventSessionAvatarSwitchToSpeaking","com.azure.ai.voicelive.models.ServerEventType":"VoiceLive.ServerEventType","com.azure.ai.voicelive.models.ServerEventWarning":"VoiceLive.ServerEventWarning","com.azure.ai.voicelive.models.ServerEventWarningDetails":"VoiceLive.ServerEventWarningDetails","com.azure.ai.voicelive.models.ServerVadTurnDetection":"VoiceLive.ServerVad","com.azure.ai.voicelive.models.SessionClientEvent":"VoiceLive.ClientEvent","com.azure.ai.voicelive.models.SessionIncludeOption":"VoiceLive.SessionIncludeOption","com.azure.ai.voicelive.models.SessionResponse":"VoiceLive.Response","com.azure.ai.voicelive.models.SessionResponseItem":"VoiceLive.ResponseItem","com.azure.ai.voicelive.models.SessionResponseItemStatus":"VoiceLive.ResponseItemStatus","com.azure.ai.voicelive.models.SessionResponseMessageItem":"VoiceLive.ResponseMessageItem","com.azure.ai.voicelive.models.SessionResponseStatus":"VoiceLive.ResponseStatus","com.azure.ai.voicelive.models.SessionServerEvent":"VoiceLive.ServerEvent","com.azure.ai.voicelive.models.SessionUpdateAvatarConnecting":"VoiceLive.ServerEventSessionAvatarConnecting","com.azure.ai.voicelive.models.SessionUpdateConversationItemCreated":"VoiceLive.ServerEventConversationItemCreated","com.azure.ai.voicelive.models.SessionUpdateConversationItemDeleted":"VoiceLive.ServerEventConversationItemDeleted","com.azure.ai.voicelive.models.SessionUpdateConversationItemInputAudioTranscriptionCompleted":"VoiceLive.ServerEventConversationItemInputAudioTranscriptionCompleted","com.azure.ai.voicelive.models.SessionUpdateConversationItemInputAudioTranscriptionDelta":"VoiceLive.ServerEventConversationItemInputAudioTranscriptionDelta","com.azure.ai.voicelive.models.SessionUpdateConversationItemInputAudioTranscriptionFailed":"VoiceLive.ServerEventConversationItemInputAudioTranscriptionFailed","com.azure.ai.voicelive.models.SessionUpdateConversationItemRetrieved":"VoiceLive.ServerEventConversationItemRetrieved","com.azure.ai.voicelive.models.SessionUpdateConversationItemTruncated":"VoiceLive.ServerEventConversationItemTruncated","com.azure.ai.voicelive.models.SessionUpdateError":"VoiceLive.ServerEventError","com.azure.ai.voicelive.models.SessionUpdateErrorDetails":"VoiceLive.ServerEventErrorDetails","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferCleared":"VoiceLive.ServerEventInputAudioBufferCleared","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferCommitted":"VoiceLive.ServerEventInputAudioBufferCommitted","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferSpeechStarted":"VoiceLive.ServerEventInputAudioBufferSpeechStarted","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferSpeechStopped":"VoiceLive.ServerEventInputAudioBufferSpeechStopped","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationBlendshapeDelta":"VoiceLive.ServerEventResponseAnimationBlendshapeDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationBlendshapeDone":"VoiceLive.ServerEventResponseAnimationBlendshapeDone","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationVisemeDelta":"VoiceLive.ServerEventResponseAnimationVisemeDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationVisemeDone":"VoiceLive.ServerEventResponseAnimationVisemeDone","com.azure.ai.voicelive.models.SessionUpdateResponseAudioDelta":"VoiceLive.ServerEventResponseAudioDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAudioDone":"VoiceLive.ServerEventResponseAudioDone","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTimestampDelta":"VoiceLive.ServerEventResponseAudioTimestampDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTimestampDone":"VoiceLive.ServerEventResponseAudioTimestampDone","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTranscriptDelta":"VoiceLive.ServerEventResponseAudioTranscriptDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTranscriptDone":"VoiceLive.ServerEventResponseAudioTranscriptDone","com.azure.ai.voicelive.models.SessionUpdateResponseContentPartAdded":"VoiceLive.ServerEventResponseContentPartAdded","com.azure.ai.voicelive.models.SessionUpdateResponseContentPartDone":"VoiceLive.ServerEventResponseContentPartDone","com.azure.ai.voicelive.models.SessionUpdateResponseCreated":"VoiceLive.ServerEventResponseCreated","com.azure.ai.voicelive.models.SessionUpdateResponseDone":"VoiceLive.ServerEventResponseDone","com.azure.ai.voicelive.models.SessionUpdateResponseFunctionCallArgumentsDelta":"VoiceLive.ServerEventResponseFunctionCallArgumentsDelta","com.azure.ai.voicelive.models.SessionUpdateResponseFunctionCallArgumentsDone":"VoiceLive.ServerEventResponseFunctionCallArgumentsDone","com.azure.ai.voicelive.models.SessionUpdateResponseOutputItemAdded":"VoiceLive.ServerEventResponseOutputItemAdded","com.azure.ai.voicelive.models.SessionUpdateResponseOutputItemDone":"VoiceLive.ServerEventResponseOutputItemDone","com.azure.ai.voicelive.models.SessionUpdateResponseTextDelta":"VoiceLive.ServerEventResponseTextDelta","com.azure.ai.voicelive.models.SessionUpdateResponseTextDone":"VoiceLive.ServerEventResponseTextDone","com.azure.ai.voicelive.models.SessionUpdateSessionCreated":"VoiceLive.ServerEventSessionCreated","com.azure.ai.voicelive.models.SessionUpdateSessionUpdated":"VoiceLive.ServerEventSessionUpdated","com.azure.ai.voicelive.models.StaticInterimResponseConfig":"VoiceLive.StaticInterimResponseConfig","com.azure.ai.voicelive.models.SystemMessageItem":"VoiceLive.SystemMessageItem","com.azure.ai.voicelive.models.ToolChoiceFunctionSelection":"VoiceLive.ToolChoiceFunctionObject","com.azure.ai.voicelive.models.ToolChoiceLiteral":"VoiceLive.ToolChoiceLiteral","com.azure.ai.voicelive.models.ToolChoiceSelection":"VoiceLive.ToolChoiceObject","com.azure.ai.voicelive.models.ToolType":"VoiceLive.ToolType","com.azure.ai.voicelive.models.TranscriptionPhrase":"VoiceLive.TranscriptionPhrase","com.azure.ai.voicelive.models.TranscriptionWord":"VoiceLive.TranscriptionWord","com.azure.ai.voicelive.models.TurnDetection":"VoiceLive.TurnDetection","com.azure.ai.voicelive.models.TurnDetectionType":"VoiceLive.TurnDetectionType","com.azure.ai.voicelive.models.UserMessageItem":"VoiceLive.UserMessageItem","com.azure.ai.voicelive.models.VideoBackground":"VoiceLive.Background","com.azure.ai.voicelive.models.VideoCrop":"VoiceLive.VideoCrop","com.azure.ai.voicelive.models.VideoParams":"VoiceLive.VideoParams","com.azure.ai.voicelive.models.VideoParamsCodec":null,"com.azure.ai.voicelive.models.VideoResolution":"VoiceLive.VideoResolution","com.azure.ai.voicelive.models.VoiceLiveContentPart":"VoiceLive.ContentPart","com.azure.ai.voicelive.models.VoiceLiveErrorDetails":"VoiceLive.VoiceLiveErrorDetails","com.azure.ai.voicelive.models.VoiceLiveFunctionDefinition":"VoiceLive.FunctionTool","com.azure.ai.voicelive.models.VoiceLiveSessionOptions":"VoiceLive.RequestSession","com.azure.ai.voicelive.models.VoiceLiveSessionResponse":"VoiceLive.ResponseSession","com.azure.ai.voicelive.models.VoiceLiveToolDefinition":"VoiceLive.Tool"},"generatedFiles":["src/main/java/com/azure/ai/voicelive/implementation/package-info.java","src/main/java/com/azure/ai/voicelive/models/AnimationOptions.java","src/main/java/com/azure/ai/voicelive/models/AnimationOutputType.java","src/main/java/com/azure/ai/voicelive/models/AssistantMessageItem.java","src/main/java/com/azure/ai/voicelive/models/AudioEchoCancellation.java","src/main/java/com/azure/ai/voicelive/models/AudioInputTranscriptionOptions.java","src/main/java/com/azure/ai/voicelive/models/AudioInputTranscriptionOptionsModel.java","src/main/java/com/azure/ai/voicelive/models/AudioNoiseReduction.java","src/main/java/com/azure/ai/voicelive/models/AudioNoiseReductionType.java","src/main/java/com/azure/ai/voicelive/models/AudioTimestampType.java","src/main/java/com/azure/ai/voicelive/models/AvatarConfigTypes.java","src/main/java/com/azure/ai/voicelive/models/AvatarOptions.java","src/main/java/com/azure/ai/voicelive/models/AvatarOutputProtocol.java","src/main/java/com/azure/ai/voicelive/models/AzureAvatarVoiceSyncVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureCustomVoice.java","src/main/java/com/azure/ai/voicelive/models/AzurePersonalVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticEouDetection.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticEouDetectionEn.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticEouDetectionMultilingual.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticVadTurnDetection.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticVadTurnDetectionEn.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticVadTurnDetectionMultilingual.java","src/main/java/com/azure/ai/voicelive/models/AzureStandardVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureVoiceType.java","src/main/java/com/azure/ai/voicelive/models/CachedTokenDetails.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemCreate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemDelete.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemRetrieve.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemTruncate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferAppend.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferClear.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferCommit.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioClear.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnAppend.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnCancel.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnEnd.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnStart.java","src/main/java/com/azure/ai/voicelive/models/ClientEventOutputAudioBufferClear.java","src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCancel.java","src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCreate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventSessionAvatarConnect.java","src/main/java/com/azure/ai/voicelive/models/ClientEventSessionUpdate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventType.java","src/main/java/com/azure/ai/voicelive/models/ContentPartType.java","src/main/java/com/azure/ai/voicelive/models/ConversationRequestItem.java","src/main/java/com/azure/ai/voicelive/models/EouDetection.java","src/main/java/com/azure/ai/voicelive/models/EouDetectionModel.java","src/main/java/com/azure/ai/voicelive/models/EouThresholdLevel.java","src/main/java/com/azure/ai/voicelive/models/FileSearchResult.java","src/main/java/com/azure/ai/voicelive/models/FunctionCallItem.java","src/main/java/com/azure/ai/voicelive/models/FunctionCallOutputItem.java","src/main/java/com/azure/ai/voicelive/models/IceServer.java","src/main/java/com/azure/ai/voicelive/models/InputAudioContentPart.java","src/main/java/com/azure/ai/voicelive/models/InputAudioFormat.java","src/main/java/com/azure/ai/voicelive/models/InputTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/InputTokenDetails.java","src/main/java/com/azure/ai/voicelive/models/InteractionModality.java","src/main/java/com/azure/ai/voicelive/models/InterimResponseConfigBase.java","src/main/java/com/azure/ai/voicelive/models/InterimResponseConfigType.java","src/main/java/com/azure/ai/voicelive/models/InterimResponseTrigger.java","src/main/java/com/azure/ai/voicelive/models/ItemParamStatus.java","src/main/java/com/azure/ai/voicelive/models/ItemType.java","src/main/java/com/azure/ai/voicelive/models/LlmInterimResponseConfig.java","src/main/java/com/azure/ai/voicelive/models/LogProbProperties.java","src/main/java/com/azure/ai/voicelive/models/McpApprovalResponseRequestItem.java","src/main/java/com/azure/ai/voicelive/models/McpApprovalType.java","src/main/java/com/azure/ai/voicelive/models/McpServer.java","src/main/java/com/azure/ai/voicelive/models/McpTool.java","src/main/java/com/azure/ai/voicelive/models/MessageContentPart.java","src/main/java/com/azure/ai/voicelive/models/MessageItem.java","src/main/java/com/azure/ai/voicelive/models/OpenAIVoice.java","src/main/java/com/azure/ai/voicelive/models/OpenAIVoiceName.java","src/main/java/com/azure/ai/voicelive/models/OutputAudioFormat.java","src/main/java/com/azure/ai/voicelive/models/OutputTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/OutputTokenDetails.java","src/main/java/com/azure/ai/voicelive/models/PersonalVoiceModels.java","src/main/java/com/azure/ai/voicelive/models/PhotoAvatarBaseModes.java","src/main/java/com/azure/ai/voicelive/models/ReasoningEffort.java","src/main/java/com/azure/ai/voicelive/models/RequestAudioContentPart.java","src/main/java/com/azure/ai/voicelive/models/RequestImageContentPart.java","src/main/java/com/azure/ai/voicelive/models/RequestImageContentPartDetail.java","src/main/java/com/azure/ai/voicelive/models/RequestTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/RespondingAgentOptions.java","src/main/java/com/azure/ai/voicelive/models/ResponseAudioContentPart.java","src/main/java/com/azure/ai/voicelive/models/ResponseCancelledDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseCancelledDetailsReason.java","src/main/java/com/azure/ai/voicelive/models/ResponseCreateParams.java","src/main/java/com/azure/ai/voicelive/models/ResponseFailedDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseFileSearchCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseFileSearchCallItemStatus.java","src/main/java/com/azure/ai/voicelive/models/ResponseFunctionCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseFunctionCallOutputItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseIncompleteDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseIncompleteDetailsReason.java","src/main/java/com/azure/ai/voicelive/models/ResponseItemObject.java","src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalRequestItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalResponseItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMcpCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMcpListToolItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMessageRole.java","src/main/java/com/azure/ai/voicelive/models/ResponseObject.java","src/main/java/com/azure/ai/voicelive/models/ResponseStatusDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/ResponseTokenStatistics.java","src/main/java/com/azure/ai/voicelive/models/ResponseWebSearchCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseWebSearchCallItemStatus.java","src/main/java/com/azure/ai/voicelive/models/Scene.java","src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsFailed.java","src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventOutputAudioBufferCleared.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseAudioTranscriptAnnotationAdded.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallSearching.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDelta.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDone.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallFailed.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseVideoDelta.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallSearching.java","src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToIdle.java","src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToSpeaking.java","src/main/java/com/azure/ai/voicelive/models/ServerEventType.java","src/main/java/com/azure/ai/voicelive/models/ServerEventWarning.java","src/main/java/com/azure/ai/voicelive/models/ServerEventWarningDetails.java","src/main/java/com/azure/ai/voicelive/models/ServerVadTurnDetection.java","src/main/java/com/azure/ai/voicelive/models/SessionClientEvent.java","src/main/java/com/azure/ai/voicelive/models/SessionIncludeOption.java","src/main/java/com/azure/ai/voicelive/models/SessionResponse.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseItem.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseItemStatus.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseMessageItem.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseStatus.java","src/main/java/com/azure/ai/voicelive/models/SessionServerEvent.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateAvatarConnecting.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemCreated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemDeleted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionCompleted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionFailed.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemRetrieved.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemTruncated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateError.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateErrorDetails.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCleared.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCommitted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStarted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStopped.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartAdded.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseCreated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemAdded.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionCreated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionUpdated.java","src/main/java/com/azure/ai/voicelive/models/StaticInterimResponseConfig.java","src/main/java/com/azure/ai/voicelive/models/SystemMessageItem.java","src/main/java/com/azure/ai/voicelive/models/ToolChoiceFunctionSelection.java","src/main/java/com/azure/ai/voicelive/models/ToolChoiceLiteral.java","src/main/java/com/azure/ai/voicelive/models/ToolChoiceSelection.java","src/main/java/com/azure/ai/voicelive/models/ToolType.java","src/main/java/com/azure/ai/voicelive/models/TranscriptionPhrase.java","src/main/java/com/azure/ai/voicelive/models/TranscriptionWord.java","src/main/java/com/azure/ai/voicelive/models/TurnDetection.java","src/main/java/com/azure/ai/voicelive/models/TurnDetectionType.java","src/main/java/com/azure/ai/voicelive/models/UserMessageItem.java","src/main/java/com/azure/ai/voicelive/models/VideoBackground.java","src/main/java/com/azure/ai/voicelive/models/VideoCrop.java","src/main/java/com/azure/ai/voicelive/models/VideoParams.java","src/main/java/com/azure/ai/voicelive/models/VideoParamsCodec.java","src/main/java/com/azure/ai/voicelive/models/VideoResolution.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveContentPart.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveErrorDetails.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveFunctionDefinition.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionOptions.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionResponse.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveToolDefinition.java","src/main/java/com/azure/ai/voicelive/models/package-info.java","src/main/java/com/azure/ai/voicelive/package-info.java","src/main/java/module-info.java"]}
\ No newline at end of file
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AgentV2Sample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AgentV2Sample.java
index b81fcde82156..c91d52d8db64 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AgentV2Sample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AgentV2Sample.java
@@ -17,7 +17,7 @@
import com.azure.ai.voicelive.models.OutputAudioFormat;
import com.azure.ai.voicelive.models.ServerEventType;
import com.azure.ai.voicelive.models.ServerVadTurnDetection;
-import com.azure.ai.voicelive.models.SessionUpdate;
+import com.azure.ai.voicelive.models.SessionServerEvent;
import com.azure.ai.voicelive.models.SessionUpdateResponseAudioDelta;
import com.azure.ai.voicelive.models.SessionUpdateConversationItemInputAudioTranscriptionCompleted;
import com.azure.ai.voicelive.models.SessionUpdateResponseAudioTranscriptDone;
@@ -235,7 +235,7 @@ void start() {
// Create the VoiceLive client using DefaultAzureCredential (Entra ID).
VoiceLiveAsyncClient client = new VoiceLiveClientBuilder()
.endpoint(endpoint)
- .serviceVersion(VoiceLiveServiceVersion.V2026_01_01_PREVIEW)
+ .serviceVersion(VoiceLiveServiceVersion.V2026_04_10)
.credential(new DefaultAzureCredentialBuilder().build())
.buildAsyncClient();
@@ -313,7 +313,7 @@ private Mono configureSession(VoiceLiveSessionAsyncClient session) {
return session.sendEvent(sessionUpdate).then();
}
- private void handleEvent(SessionUpdate event) {
+ private void handleEvent(SessionServerEvent event) {
ServerEventType eventType = event.getType();
if (eventType == ServerEventType.SESSION_UPDATED) {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AudioPlaybackSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AudioPlaybackSample.java
index 40ddf63d832f..c74bfa765404 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AudioPlaybackSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AudioPlaybackSample.java
@@ -13,7 +13,7 @@
import com.azure.ai.voicelive.models.OpenAIVoiceName;
import com.azure.ai.voicelive.models.OutputAudioFormat;
import com.azure.ai.voicelive.models.ServerEventType;
-import com.azure.ai.voicelive.models.SessionUpdate;
+import com.azure.ai.voicelive.models.SessionServerEvent;
import com.azure.ai.voicelive.models.SessionUpdateError;
import com.azure.ai.voicelive.models.SessionUpdateResponseAudioDelta;
import com.azure.ai.voicelive.models.UserMessageItem;
@@ -313,7 +313,7 @@ private static void stopPlayback(BlockingQueue audioQueue, AtomicBoolean
* @param audioQueue Queue to receive audio data
* @param completionLatch Latch to release when the response is complete or fails
*/
- private static void handleEvent(SessionUpdate event, BlockingQueue audioQueue,
+ private static void handleEvent(SessionServerEvent event, BlockingQueue audioQueue,
CountDownLatch completionLatch) {
ServerEventType eventType = event.getType();
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/BasicVoiceConversationSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/BasicVoiceConversationSample.java
index e11c771de08f..a598f6a608e5 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/BasicVoiceConversationSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/BasicVoiceConversationSample.java
@@ -9,7 +9,7 @@
import com.azure.ai.voicelive.models.InputTextContentPart;
import com.azure.ai.voicelive.models.InteractionModality;
import com.azure.ai.voicelive.models.ServerEventType;
-import com.azure.ai.voicelive.models.SessionUpdate;
+import com.azure.ai.voicelive.models.SessionServerEvent;
import com.azure.ai.voicelive.models.SessionUpdateError;
import com.azure.ai.voicelive.models.SessionUpdateResponseTextDelta;
import com.azure.ai.voicelive.models.UserMessageItem;
@@ -160,7 +160,7 @@ public static void main(String[] args) {
* Handle incoming server events: print text deltas as they stream, and release the latch when
* the response is complete or an error occurs.
*/
- private static void handleEvent(SessionUpdate event, CountDownLatch completionLatch) {
+ private static void handleEvent(SessionServerEvent event, CountDownLatch completionLatch) {
ServerEventType eventType = event.getType();
if (eventType == ServerEventType.SESSION_CREATED) {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/FunctionCallingSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/FunctionCallingSample.java
index a9e471175428..74e9808d8355 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/FunctionCallingSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/FunctionCallingSample.java
@@ -23,7 +23,7 @@
import com.azure.ai.voicelive.models.SessionUpdateResponseFunctionCallArgumentsDone;
import com.azure.ai.voicelive.models.ServerEventType;
import com.azure.ai.voicelive.models.ServerVadTurnDetection;
-import com.azure.ai.voicelive.models.SessionUpdate;
+import com.azure.ai.voicelive.models.SessionServerEvent;
import com.azure.ai.voicelive.models.SessionUpdateResponseAudioDelta;
import com.azure.ai.voicelive.models.SessionUpdateSessionUpdated;
import com.azure.ai.voicelive.models.VoiceLiveSessionOptions;
@@ -301,7 +301,7 @@ private static VoiceLiveFunctionDefinition createGetCurrentWeatherFunction() {
*/
private static Mono handleServerEvent(
VoiceLiveSessionAsyncClient session,
- SessionUpdate event,
+ SessionServerEvent event,
AudioProcessor audioProcessor,
Map pendingFunctionCalls
) {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MCPSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MCPSample.java
index cec8a6959612..bc93ebe20080 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MCPSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MCPSample.java
@@ -8,12 +8,12 @@
import com.azure.ai.voicelive.models.ClientEventSessionUpdate;
import com.azure.ai.voicelive.models.InteractionModality;
import com.azure.ai.voicelive.models.ItemType;
-import com.azure.ai.voicelive.models.MCPApprovalResponseRequestItem;
-import com.azure.ai.voicelive.models.MCPApprovalType;
-import com.azure.ai.voicelive.models.MCPServer;
+import com.azure.ai.voicelive.models.McpApprovalResponseRequestItem;
+import com.azure.ai.voicelive.models.McpApprovalType;
+import com.azure.ai.voicelive.models.McpServer;
import com.azure.ai.voicelive.models.AzureStandardVoice;
-import com.azure.ai.voicelive.models.ResponseMCPApprovalRequestItem;
-import com.azure.ai.voicelive.models.ResponseMCPCallItem;
+import com.azure.ai.voicelive.models.ResponseMcpApprovalRequestItem;
+import com.azure.ai.voicelive.models.ResponseMcpCallItem;
import com.azure.ai.voicelive.models.ServerEventResponseMcpCallArgumentsDone;
import com.azure.ai.voicelive.models.ServerEventResponseMcpCallCompleted;
import com.azure.ai.voicelive.models.SessionUpdateConversationItemCreated;
@@ -21,7 +21,7 @@
import com.azure.ai.voicelive.models.SessionUpdateResponseOutputItemDone;
import com.azure.ai.voicelive.models.ServerEventType;
import com.azure.ai.voicelive.models.SessionResponseItem;
-import com.azure.ai.voicelive.models.SessionUpdate;
+import com.azure.ai.voicelive.models.SessionServerEvent;
import com.azure.ai.voicelive.models.SessionUpdateSessionUpdated;
import com.azure.ai.voicelive.models.VoiceLiveSessionOptions;
import com.azure.ai.voicelive.models.VoiceLiveToolDefinition;
@@ -145,7 +145,7 @@ private static void runMCPSample(String endpoint) {
// Create the VoiceLive client using DefaultAzureCredential (Entra ID).
VoiceLiveAsyncClient client = new VoiceLiveClientBuilder()
.endpoint(endpoint)
- .serviceVersion(VoiceLiveServiceVersion.V2026_01_01_PREVIEW)
+ .serviceVersion(VoiceLiveServiceVersion.V2026_04_10)
.credential(new DefaultAzureCredentialBuilder().build())
.buildAsyncClient();
@@ -207,13 +207,13 @@ private static ClientEventSessionUpdate createSessionConfigWithMCPTools() {
// Define MCP servers as tools
List mcpTools = Arrays.asList(
// DeepWiki MCP server - no approval required
- new MCPServer("deepwiki", "https://mcp.deepwiki.com/mcp")
+ new McpServer("deepwiki", "https://mcp.deepwiki.com/mcp")
.setAllowedTools(Arrays.asList("read_wiki_structure", "ask_question"))
- .setRequireApproval(BinaryData.fromObject(MCPApprovalType.NEVER)),
+ .setRequireApproval(BinaryData.fromObject(McpApprovalType.NEVER)),
// Azure documentation MCP server - approval always required
- new MCPServer("azure_doc", "https://learn.microsoft.com/api/mcp")
- .setRequireApproval(BinaryData.fromObject(MCPApprovalType.ALWAYS))
+ new McpServer("azure_doc", "https://learn.microsoft.com/api/mcp")
+ .setRequireApproval(BinaryData.fromObject(McpApprovalType.ALWAYS))
);
// Create session options
@@ -251,7 +251,7 @@ private static ClientEventSessionUpdate createSessionConfigWithMCPTools() {
*/
private static Mono handleServerEvent(
VoiceLiveSessionAsyncClient session,
- SessionUpdate event,
+ SessionServerEvent event,
AtomicReference activeMCPCallId,
AudioProcessor audioProcessor
) {
@@ -325,7 +325,7 @@ private static Mono handleServerEvent(
private static void handleOutputItemDone(SessionUpdateResponseOutputItemDone event) {
SessionResponseItem item = event.getItem();
if (item != null && item.getType() == ItemType.MCP_CALL) {
- ResponseMCPCallItem mcpCallItem = (ResponseMCPCallItem) item;
+ ResponseMcpCallItem mcpCallItem = (ResponseMcpCallItem) item;
String output = mcpCallItem.getOutput();
if (output != null && !output.isEmpty()) {
@@ -363,7 +363,7 @@ private static Mono handleConversationItemCreated(
System.out.println("📋 MCP list tools requested: id=" + itemCreated.getItem().getId());
} else if (itemType == ItemType.MCP_CALL) {
- ResponseMCPCallItem mcpCallItem = (ResponseMCPCallItem) itemCreated.getItem();
+ ResponseMcpCallItem mcpCallItem = (ResponseMcpCallItem) itemCreated.getItem();
String callId = mcpCallItem.getId();
activeMCPCallId.set(callId);
@@ -373,7 +373,7 @@ private static Mono handleConversationItemCreated(
System.out.println(" Call ID: " + callId);
} else if (itemType == ItemType.MCP_APPROVAL_REQUEST) {
- return handleMCPApprovalRequest(session, (ResponseMCPApprovalRequestItem) itemCreated.getItem());
+ return handleMCPApprovalRequest(session, (ResponseMcpApprovalRequestItem) itemCreated.getItem());
}
return Mono.empty();
@@ -384,7 +384,7 @@ private static Mono handleConversationItemCreated(
*/
private static Mono handleMCPApprovalRequest(
VoiceLiveSessionAsyncClient session,
- ResponseMCPApprovalRequestItem approvalItem
+ ResponseMcpApprovalRequestItem approvalItem
) {
String approvalId = approvalItem.getId();
String serverLabel = approvalItem.getServerLabel();
@@ -401,8 +401,8 @@ private static Mono handleMCPApprovalRequest(
// Get user approval
boolean approved = getUserApproval();
- MCPApprovalResponseRequestItem approvalResponse =
- new MCPApprovalResponseRequestItem(approvalId, approved);
+ McpApprovalResponseRequestItem approvalResponse =
+ new McpApprovalResponseRequestItem(approvalId, approved);
return session.sendEvent(new ClientEventConversationItemCreate().setItem(approvalResponse));
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MicrophoneInputSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MicrophoneInputSample.java
index e383783b08bf..2669c30eb688 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MicrophoneInputSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MicrophoneInputSample.java
@@ -12,7 +12,7 @@
import com.azure.ai.voicelive.models.ResponseTextContentPart;
import com.azure.ai.voicelive.models.ServerEventType;
import com.azure.ai.voicelive.models.SessionResponseMessageItem;
-import com.azure.ai.voicelive.models.SessionUpdate;
+import com.azure.ai.voicelive.models.SessionServerEvent;
import com.azure.ai.voicelive.models.SessionUpdateResponseDone;
import com.azure.ai.voicelive.models.VoiceLiveSessionOptions;
import com.azure.core.util.BinaryData;
@@ -187,7 +187,7 @@ private static boolean checkMicrophoneAvailable() {
*
* @param event The server event
*/
- private static void handleEvent(SessionUpdate event) {
+ private static void handleEvent(SessionServerEvent event) {
ServerEventType eventType = event.getType();
if (eventType == ServerEventType.SESSION_CREATED) {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/ReadmeSamples.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/ReadmeSamples.java
index 9664b857b379..825e169faf46 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/ReadmeSamples.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/ReadmeSamples.java
@@ -14,11 +14,11 @@
import com.azure.ai.voicelive.models.ClientEventResponseCreate;
import com.azure.ai.voicelive.models.FunctionCallOutputItem;
import com.azure.ai.voicelive.models.ItemType;
-import com.azure.ai.voicelive.models.MCPApprovalResponseRequestItem;
-import com.azure.ai.voicelive.models.MCPApprovalType;
-import com.azure.ai.voicelive.models.MCPServer;
+import com.azure.ai.voicelive.models.McpApprovalResponseRequestItem;
+import com.azure.ai.voicelive.models.McpApprovalType;
+import com.azure.ai.voicelive.models.McpServer;
import com.azure.ai.voicelive.models.ResponseFunctionCallItem;
-import com.azure.ai.voicelive.models.ResponseMCPApprovalRequestItem;
+import com.azure.ai.voicelive.models.ResponseMcpApprovalRequestItem;
import com.azure.ai.voicelive.models.SessionResponseItem;
import com.azure.ai.voicelive.models.SessionUpdateConversationItemCreated;
import com.azure.ai.voicelive.models.VoiceLiveFunctionDefinition;
@@ -33,7 +33,7 @@
import com.azure.ai.voicelive.models.PersonalVoiceModels;
import com.azure.ai.voicelive.models.ServerEventType;
import com.azure.ai.voicelive.models.ServerVadTurnDetection;
-import com.azure.ai.voicelive.models.SessionUpdate;
+import com.azure.ai.voicelive.models.SessionServerEvent;
import com.azure.ai.voicelive.models.SessionUpdateError;
import com.azure.ai.voicelive.models.SessionUpdateResponseAudioDelta;
import com.azure.ai.voicelive.models.SessionUpdateResponseOutputItemDone;
@@ -428,8 +428,8 @@ public void mcpToolIntegration() {
// BEGIN: com.azure.ai.voicelive.mcp
// Configure MCP servers as tools
- MCPServer mcpServer = new MCPServer("deepwiki", "https://mcp.deepwiki.com/mcp")
- .setRequireApproval(BinaryData.fromObject(MCPApprovalType.ALWAYS));
+ McpServer mcpServer = new McpServer("deepwiki", "https://mcp.deepwiki.com/mcp")
+ .setRequireApproval(BinaryData.fromObject(McpApprovalType.ALWAYS));
VoiceLiveSessionOptions options = new VoiceLiveSessionOptions()
.setTools(Arrays.asList(mcpServer))
@@ -442,10 +442,10 @@ public void mcpToolIntegration() {
SessionUpdateResponseOutputItemDone itemDone = (SessionUpdateResponseOutputItemDone) event;
SessionResponseItem item = itemDone.getItem();
- if (item instanceof ResponseMCPApprovalRequestItem) {
+ if (item instanceof ResponseMcpApprovalRequestItem) {
// Approve the tool call
- ResponseMCPApprovalRequestItem approvalRequest = (ResponseMCPApprovalRequestItem) item;
- MCPApprovalResponseRequestItem approval = new MCPApprovalResponseRequestItem(
+ ResponseMcpApprovalRequestItem approvalRequest = (ResponseMcpApprovalRequestItem) item;
+ McpApprovalResponseRequestItem approval = new McpApprovalResponseRequestItem(
approvalRequest.getId(), true);
ClientEventConversationItemCreate createItem = new ClientEventConversationItemCreate()
.setItem(approval);
@@ -504,7 +504,7 @@ private void playAudioChunk(byte[] delta) {
// Implementation for playing audio
}
- private void handleEvent(SessionUpdate event) {
+ private void handleEvent(SessionServerEvent event) {
// Implementation for handling events
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/VoiceAssistantSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/VoiceAssistantSample.java
index 9003da40f0fc..b7ffe7bd6e4c 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/VoiceAssistantSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/VoiceAssistantSample.java
@@ -15,7 +15,7 @@
import com.azure.ai.voicelive.models.OutputAudioFormat;
import com.azure.ai.voicelive.models.ServerEventType;
import com.azure.ai.voicelive.models.ServerVadTurnDetection;
-import com.azure.ai.voicelive.models.SessionUpdate;
+import com.azure.ai.voicelive.models.SessionServerEvent;
import com.azure.ai.voicelive.models.SessionUpdateError;
import com.azure.ai.voicelive.models.SessionUpdateResponseAudioDelta;
import com.azure.ai.voicelive.models.SessionUpdateSessionUpdated;
@@ -550,7 +550,7 @@ private static VoiceLiveSessionOptions createVoiceSessionOptions() {
* inside the reactive chain (no nested subscribe). The voice assistant doesn't send any
* follow-up events, so handlers always return {@link Mono#empty()}.
*/
- private static Mono handleServerEvent(SessionUpdate event, AudioProcessor audioProcessor) {
+ private static Mono handleServerEvent(SessionServerEvent event, AudioProcessor audioProcessor) {
ServerEventType eventType = event.getType();
try {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/telemetry/GlobalTracingSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/telemetry/GlobalTracingSample.java
index 998ecb4136ce..9af8146255f9 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/telemetry/GlobalTracingSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/telemetry/GlobalTracingSample.java
@@ -152,7 +152,7 @@ private static Mono configureSession(
* inside the reactive chain (no nested subscribe). This sample doesn't send any follow-up
* events from inside the handler.
*/
- private static Mono handleServerEvent(com.azure.ai.voicelive.models.SessionUpdate serverEvent) {
+ private static Mono handleServerEvent(com.azure.ai.voicelive.models.SessionServerEvent serverEvent) {
System.out.println("Event: " + serverEvent.getType());
if (serverEvent instanceof SessionUpdateResponseDone) {
SessionResponse response = ((SessionUpdateResponseDone) serverEvent).getResponse();
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/VoiceLiveClientBuilderTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/VoiceLiveClientBuilderTest.java
index c87ed6a42aff..463305c74f12 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/VoiceLiveClientBuilderTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/VoiceLiveClientBuilderTest.java
@@ -173,7 +173,7 @@ void testBuilderWithServiceVersion() {
assertDoesNotThrow(() -> {
VoiceLiveAsyncClient client = clientBuilder.endpoint(endpoint)
.credential(mockKeyCredential)
- .serviceVersion(VoiceLiveServiceVersion.V2026_01_01_PREVIEW)
+ .serviceVersion(VoiceLiveServiceVersion.V2026_04_10)
.buildAsyncClient();
assertNotNull(client);
@@ -189,7 +189,7 @@ void testBuilderChaining() {
assertDoesNotThrow(() -> {
VoiceLiveAsyncClient client = clientBuilder.endpoint(endpoint)
.credential(mockKeyCredential)
- .serviceVersion(VoiceLiveServiceVersion.V2026_01_01_PREVIEW)
+ .serviceVersion(VoiceLiveServiceVersion.V2026_04_10)
.buildAsyncClient();
assertNotNull(client);
@@ -201,7 +201,7 @@ void testBuilderReturnsBuilder() {
// Test that all methods return the builder for chaining
assertSame(clientBuilder, clientBuilder.endpoint("https://test.cognitiveservices.azure.com"));
assertSame(clientBuilder, clientBuilder.credential(mockKeyCredential));
- assertSame(clientBuilder, clientBuilder.serviceVersion(VoiceLiveServiceVersion.V2026_01_01_PREVIEW));
+ assertSame(clientBuilder, clientBuilder.serviceVersion(VoiceLiveServiceVersion.V2026_04_10));
}
@Test
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/implementation/VoiceLiveTracerTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/implementation/VoiceLiveTracerTest.java
index f2447d0b09bd..20d510aa904a 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/implementation/VoiceLiveTracerTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/implementation/VoiceLiveTracerTest.java
@@ -11,7 +11,7 @@
import com.azure.ai.voicelive.models.ClientEventResponseCancel;
import com.azure.ai.voicelive.models.ClientEventResponseCreate;
import com.azure.ai.voicelive.models.FunctionCallOutputItem;
-import com.azure.ai.voicelive.models.SessionUpdate;
+import com.azure.ai.voicelive.models.SessionServerEvent;
import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.api.trace.StatusCode;
@@ -115,7 +115,7 @@ void testRecvSpanCreated() throws Exception {
String json = "{\"type\":\"session.created\",\"event_id\":\"event1\","
+ "\"session\":{\"id\":\"session123\",\"model\":\"gpt-4o\"}}";
- SessionUpdate update = SessionUpdate.fromJson(com.azure.json.JsonProviders.createReader(json));
+ SessionServerEvent update = SessionServerEvent.fromJson(com.azure.json.JsonProviders.createReader(json));
voiceLiveTracer.traceRecv(update, json);
voiceLiveTracer.endConnectSpan(null);
@@ -176,7 +176,8 @@ void testResponseCreateTracksLatency() throws Exception {
Thread.sleep(10);
String audioJson = "{\"type\":\"response.audio.delta\",\"response_id\":\"r1\","
+ "\"item_id\":\"i1\",\"output_index\":0,\"content_index\":0,\"delta\":\"AQID\"}";
- SessionUpdate audioDelta = SessionUpdate.fromJson(com.azure.json.JsonProviders.createReader(audioJson));
+ SessionServerEvent audioDelta
+ = SessionServerEvent.fromJson(com.azure.json.JsonProviders.createReader(audioJson));
voiceLiveTracer.traceRecv(audioDelta, audioJson);
voiceLiveTracer.endConnectSpan(null);
@@ -199,7 +200,8 @@ void testAudioBytesTracking() throws Exception {
// Receive audio delta (base64 "AQIDBA==" = 4 bytes)
String audioJson = "{\"type\":\"response.audio.delta\",\"response_id\":\"r1\","
+ "\"item_id\":\"i1\",\"output_index\":0,\"content_index\":0,\"delta\":\"AQIDBA==\"}";
- SessionUpdate audioDelta = SessionUpdate.fromJson(com.azure.json.JsonProviders.createReader(audioJson));
+ SessionServerEvent audioDelta
+ = SessionServerEvent.fromJson(com.azure.json.JsonProviders.createReader(audioJson));
voiceLiveTracer.traceRecv(audioDelta, audioJson);
voiceLiveTracer.endConnectSpan(null);
@@ -217,7 +219,8 @@ void testTurnCountTracking() throws Exception {
String doneJson = "{\"type\":\"response.done\",\"event_id\":\"event1\","
+ "\"response\":{\"id\":\"response1\",\"status\":\"completed\",\"output\":[]}}";
- SessionUpdate responseDone = SessionUpdate.fromJson(com.azure.json.JsonProviders.createReader(doneJson));
+ SessionServerEvent responseDone
+ = SessionServerEvent.fromJson(com.azure.json.JsonProviders.createReader(doneJson));
voiceLiveTracer.traceRecv(responseDone, doneJson);
voiceLiveTracer.endConnectSpan(null);
@@ -236,7 +239,8 @@ void testTokenUsageOnResponseDone() throws Exception {
+ "\"usage\":{\"total_tokens\":150,\"input_tokens\":100,\"output_tokens\":50,"
+ "\"input_token_details\":{\"cached_tokens\":0,\"text_tokens\":50,\"audio_tokens\":50},"
+ "\"output_token_details\":{\"text_tokens\":25,\"audio_tokens\":25}}}}";
- SessionUpdate responseDone = SessionUpdate.fromJson(com.azure.json.JsonProviders.createReader(doneJson));
+ SessionServerEvent responseDone
+ = SessionServerEvent.fromJson(com.azure.json.JsonProviders.createReader(doneJson));
voiceLiveTracer.traceRecv(responseDone, doneJson);
voiceLiveTracer.endConnectSpan(null);
@@ -254,7 +258,8 @@ void testErrorEventTracking() throws Exception {
String errorJson = "{\"type\":\"error\",\"event_id\":\"event1\","
+ "\"error\":{\"type\":\"server_error\",\"code\":\"500\",\"message\":\"Internal error\"}}";
- SessionUpdate errorUpdate = SessionUpdate.fromJson(com.azure.json.JsonProviders.createReader(errorJson));
+ SessionServerEvent errorUpdate
+ = SessionServerEvent.fromJson(com.azure.json.JsonProviders.createReader(errorJson));
voiceLiveTracer.traceRecv(errorUpdate, errorJson);
voiceLiveTracer.endConnectSpan(null);
@@ -294,7 +299,7 @@ void testSessionIdFromSessionCreated() throws Exception {
String json = "{\"type\":\"session.created\",\"event_id\":\"event1\","
+ "\"session\":{\"id\":\"session456\",\"model\":\"gpt-4o\"}}";
- SessionUpdate update = SessionUpdate.fromJson(com.azure.json.JsonProviders.createReader(json));
+ SessionServerEvent update = SessionServerEvent.fromJson(com.azure.json.JsonProviders.createReader(json));
voiceLiveTracer.traceRecv(update, json);
voiceLiveTracer.endConnectSpan(null);
@@ -329,7 +334,7 @@ void testParentChildSpanHierarchy() throws Exception {
// Recv
String json = "{\"type\":\"session.created\",\"event_id\":\"event1\","
+ "\"session\":{\"id\":\"session123\",\"model\":\"gpt-4o\"}}";
- SessionUpdate update = SessionUpdate.fromJson(com.azure.json.JsonProviders.createReader(json));
+ SessionServerEvent update = SessionServerEvent.fromJson(com.azure.json.JsonProviders.createReader(json));
voiceLiveTracer.traceRecv(update, json);
// Close
@@ -390,7 +395,8 @@ void testResponseDoneTracksConversationAndFinishReason() throws Exception {
String doneJson = "{\"type\":\"response.done\",\"event_id\":\"event1\","
+ "\"response\":{\"id\":\"response1\",\"conversation_id\":\"conversation1\","
+ "\"status\":\"completed\",\"output\":[]}}";
- SessionUpdate responseDone = SessionUpdate.fromJson(com.azure.json.JsonProviders.createReader(doneJson));
+ SessionServerEvent responseDone
+ = SessionServerEvent.fromJson(com.azure.json.JsonProviders.createReader(doneJson));
voiceLiveTracer.traceRecv(responseDone, doneJson);
voiceLiveTracer.endConnectSpan(null);
@@ -456,7 +462,7 @@ void testSessionCreatedTracksAgentAttributes() throws Exception {
String json = "{\"type\":\"session.created\",\"event_id\":\"event1\",\"session\":{"
+ "\"id\":\"session123\",\"input_audio_sampling_rate\":24000,"
+ "\"agent\":{\"agent_id\":\"agent123\",\"thread_id\":\"thread456\"}}}";
- SessionUpdate update = SessionUpdate.fromJson(com.azure.json.JsonProviders.createReader(json));
+ SessionServerEvent update = SessionServerEvent.fromJson(com.azure.json.JsonProviders.createReader(json));
voiceLiveTracer.traceRecv(update, json);
voiceLiveTracer.endConnectSpan(null);
@@ -493,7 +499,7 @@ void testSessionCreatedTracksInputAudioSamplingRate() throws Exception {
String json = "{\"type\":\"session.created\",\"event_id\":\"event1\","
+ "\"session\":{\"id\":\"session789\",\"model\":\"gpt-4o\"," + "\"input_audio_sampling_rate\":24000}}";
- SessionUpdate update = SessionUpdate.fromJson(com.azure.json.JsonProviders.createReader(json));
+ SessionServerEvent update = SessionServerEvent.fromJson(com.azure.json.JsonProviders.createReader(json));
voiceLiveTracer.traceRecv(update, json);
voiceLiveTracer.endConnectSpan(null);
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTestBase.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTestBase.java
index 89d6d9096fc7..d010e1997fc7 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTestBase.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTestBase.java
@@ -11,7 +11,7 @@
import com.azure.ai.voicelive.models.AudioInputTranscriptionOptionsModel;
import com.azure.ai.voicelive.models.InputAudioFormat;
import com.azure.ai.voicelive.models.OutputAudioFormat;
-import com.azure.ai.voicelive.models.SessionUpdate;
+import com.azure.ai.voicelive.models.SessionServerEvent;
import com.azure.ai.voicelive.models.SessionUpdateError;
import com.azure.core.credential.KeyCredential;
import com.azure.core.test.TestProxyTestBase;
@@ -164,7 +164,7 @@ protected byte[] getTrailingSilenceBytes() {
return getTrailingSilenceBytes(DEFAULT_SAMPLE_RATE, DEFAULT_SILENCE_DURATION);
}
- protected void handleError(SessionUpdate event) {
+ protected void handleError(SessionServerEvent event) {
if (event instanceof SessionUpdateError) {
SessionUpdateError errorEvent = (SessionUpdateError) event;
System.err.println(
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java
index ffc6618c4df6..e360db8340ec 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java
@@ -133,7 +133,8 @@ public void testRealtimeServiceWithAudioTimestampAndViseme(String model, String
try {
VoiceLiveSessionOptions sessionOptions = new VoiceLiveSessionOptions()
.setVoice(BinaryData.fromObject(new AzureStandardVoice("en-US-NancyNeural")))
- .setAnimation(new AnimationOptions().setOutputs(Arrays.asList(AnimationOutputType.VISEME_ID)))
+ .setAnimationOptions(
+ new AnimationOptions().setOutputTypes(Arrays.asList(AnimationOutputType.VISEME_ID)))
.setOutputAudioTimestampTypes(Arrays.asList(AudioTimestampType.WORD));
session = client.startSession(model).block(SESSION_TIMEOUT);
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/AgentSessionConfigTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/AgentSessionConfigTest.java
index 76500449881d..49c14e3c2993 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/AgentSessionConfigTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/AgentSessionConfigTest.java
@@ -5,14 +5,9 @@
import org.junit.jupiter.api.Test;
-import java.util.Map;
-
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Unit tests for {@link AgentSessionConfig}.
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/AvatarAndAudioBufferEventsTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/AvatarAndAudioBufferEventsTest.java
index dc0a1c127a64..fd5f4f415742 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/AvatarAndAudioBufferEventsTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/AvatarAndAudioBufferEventsTest.java
@@ -60,7 +60,7 @@ void testAvatarSwitchToIdleDeserialization() {
void testAvatarSwitchToSpeakingPolymorphicViaSessionUpdate() {
String json = "{\"type\":\"session.avatar.switch_to_speaking\",\"event_id\":\"e3\",\"turn_id\":\"t3\"}";
- SessionUpdate update = BinaryData.fromString(json).toObject(SessionUpdate.class);
+ SessionServerEvent update = BinaryData.fromString(json).toObject(SessionServerEvent.class);
assertTrue(update instanceof ServerEventSessionAvatarSwitchToSpeaking,
"Expected ServerEventSessionAvatarSwitchToSpeaking, got " + update.getClass());
@@ -112,7 +112,7 @@ void testServerEventOutputAudioBufferClearedDeserialization() {
void testServerEventOutputAudioBufferClearedPolymorphicViaSessionUpdate() {
String json = "{\"type\":\"output_audio_buffer.cleared\",\"event_id\":\"e7\"}";
- SessionUpdate update = BinaryData.fromString(json).toObject(SessionUpdate.class);
+ SessionServerEvent update = BinaryData.fromString(json).toObject(SessionServerEvent.class);
assertTrue(update instanceof ServerEventOutputAudioBufferCleared,
"Expected ServerEventOutputAudioBufferCleared, got " + update.getClass());
@@ -155,7 +155,7 @@ void testClientEventOutputAudioBufferClearRoundTrip() {
void testClientEventOutputAudioBufferClearPolymorphicViaClientEvent() {
ClientEventOutputAudioBufferClear original = new ClientEventOutputAudioBufferClear().setEventId("clear-3");
- ClientEvent deserialized = BinaryData.fromObject(original).toObject(ClientEvent.class);
+ SessionClientEvent deserialized = BinaryData.fromObject(original).toObject(SessionClientEvent.class);
assertTrue(deserialized instanceof ClientEventOutputAudioBufferClear,
"Expected ClientEventOutputAudioBufferClear, got " + deserialized.getClass());
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPApprovalTypeTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPApprovalTypeTest.java
index be50ec40bc89..387d0edbdbd3 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPApprovalTypeTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPApprovalTypeTest.java
@@ -12,39 +12,39 @@
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
- * Unit tests for {@link MCPApprovalType}.
+ * Unit tests for {@link McpApprovalType}.
*/
class MCPApprovalTypeTest {
@Test
void testNeverApprovalType() {
// Assert
- assertNotNull(MCPApprovalType.NEVER);
- assertEquals("never", MCPApprovalType.NEVER.toString());
+ assertNotNull(McpApprovalType.NEVER);
+ assertEquals("never", McpApprovalType.NEVER.toString());
}
@Test
void testAlwaysApprovalType() {
// Assert
- assertNotNull(MCPApprovalType.ALWAYS);
- assertEquals("always", MCPApprovalType.ALWAYS.toString());
+ assertNotNull(McpApprovalType.ALWAYS);
+ assertEquals("always", McpApprovalType.ALWAYS.toString());
}
@Test
void testFromString() {
// Act
- MCPApprovalType never = MCPApprovalType.fromString("never");
- MCPApprovalType always = MCPApprovalType.fromString("always");
+ McpApprovalType never = McpApprovalType.fromString("never");
+ McpApprovalType always = McpApprovalType.fromString("always");
// Assert
- assertEquals(MCPApprovalType.NEVER, never);
- assertEquals(MCPApprovalType.ALWAYS, always);
+ assertEquals(McpApprovalType.NEVER, never);
+ assertEquals(McpApprovalType.ALWAYS, always);
}
@Test
void testFromStringWithCustomValue() {
// Act
- MCPApprovalType custom = MCPApprovalType.fromString("custom-approval-type");
+ McpApprovalType custom = McpApprovalType.fromString("custom-approval-type");
// Assert
assertNotNull(custom);
@@ -54,20 +54,20 @@ void testFromStringWithCustomValue() {
@Test
void testValues() {
// Act
- Collection values = MCPApprovalType.values();
+ Collection values = McpApprovalType.values();
// Assert
assertNotNull(values);
assertTrue(values.size() >= 2); // At least NEVER and ALWAYS
- assertTrue(values.contains(MCPApprovalType.NEVER));
- assertTrue(values.contains(MCPApprovalType.ALWAYS));
+ assertTrue(values.contains(McpApprovalType.NEVER));
+ assertTrue(values.contains(McpApprovalType.ALWAYS));
}
@Test
void testEquality() {
// Arrange
- MCPApprovalType never1 = MCPApprovalType.fromString("never");
- MCPApprovalType never2 = MCPApprovalType.NEVER;
+ McpApprovalType never1 = McpApprovalType.fromString("never");
+ McpApprovalType never2 = McpApprovalType.NEVER;
// Assert
assertEquals(never1, never2);
@@ -77,9 +77,9 @@ void testEquality() {
@Test
void testCaseInsensitivity() {
// Act
- MCPApprovalType lowercase = MCPApprovalType.fromString("never");
- MCPApprovalType uppercase = MCPApprovalType.fromString("NEVER");
- MCPApprovalType mixedCase = MCPApprovalType.fromString("Never");
+ McpApprovalType lowercase = McpApprovalType.fromString("never");
+ McpApprovalType uppercase = McpApprovalType.fromString("NEVER");
+ McpApprovalType mixedCase = McpApprovalType.fromString("Never");
// Assert - ExpandableStringEnum is typically case-sensitive for string matching
// but creates new instances for different cases
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerTest.java
index 40bc9ec6ccfa..716a6c84fc67 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerTest.java
@@ -20,17 +20,17 @@
import static org.junit.jupiter.api.Assertions.assertSame;
/**
- * Unit tests for {@link MCPServer}.
+ * Unit tests for {@link McpServer}.
*/
class MCPServerTest {
private static final String TEST_SERVER_LABEL = "test-server";
private static final String TEST_SERVER_URL = "http://localhost:8080";
- private MCPServer mcpServer;
+ private McpServer mcpServer;
@BeforeEach
void setUp() {
- mcpServer = new MCPServer(TEST_SERVER_LABEL, TEST_SERVER_URL);
+ mcpServer = new McpServer(TEST_SERVER_LABEL, TEST_SERVER_URL);
}
@Test
@@ -46,7 +46,7 @@ void testConstructorWithValidParameters() {
void testConstructorWithNullServerLabel() {
// Act & Assert
assertDoesNotThrow(() -> {
- MCPServer server = new MCPServer(null, TEST_SERVER_URL);
+ McpServer server = new McpServer(null, TEST_SERVER_URL);
assertNull(server.getServerLabel());
});
}
@@ -55,7 +55,7 @@ void testConstructorWithNullServerLabel() {
void testConstructorWithNullServerUrl() {
// Act & Assert
assertDoesNotThrow(() -> {
- MCPServer server = new MCPServer(TEST_SERVER_LABEL, null);
+ McpServer server = new McpServer(TEST_SERVER_LABEL, null);
assertNull(server.getServerUrl());
});
}
@@ -66,7 +66,7 @@ void testSetAndGetAuthorization() {
String authorization = "Bearer test-token";
// Act
- MCPServer result = mcpServer.setAuthorization(authorization);
+ McpServer result = mcpServer.setAuthorization(authorization);
// Assert
assertEquals(authorization, mcpServer.getAuthorization());
@@ -90,7 +90,7 @@ void testSetAndGetHeaders() {
headers.put("X-Custom-Header", "test-value");
// Act
- MCPServer result = mcpServer.setHeaders(headers);
+ McpServer result = mcpServer.setHeaders(headers);
// Assert
assertEquals(headers, mcpServer.getHeaders());
@@ -127,7 +127,7 @@ void testSetAndGetAllowedTools() {
List allowedTools = Arrays.asList("tool1", "tool2", "tool3");
// Act
- MCPServer result = mcpServer.setAllowedTools(allowedTools);
+ McpServer result = mcpServer.setAllowedTools(allowedTools);
// Assert
assertEquals(allowedTools, mcpServer.getAllowedTools());
@@ -160,10 +160,10 @@ void testSetAllowedToolsWithNull() {
@Test
void testSetAndGetRequireApproval() {
// Arrange
- BinaryData requireApproval = BinaryData.fromObject(MCPApprovalType.ALWAYS);
+ BinaryData requireApproval = BinaryData.fromObject(McpApprovalType.ALWAYS);
// Act
- MCPServer result = mcpServer.setRequireApproval(requireApproval);
+ McpServer result = mcpServer.setRequireApproval(requireApproval);
// Assert
assertEquals(requireApproval, mcpServer.getRequireApproval());
@@ -185,7 +185,7 @@ void testTypeIsAlwaysMCP() {
assertEquals(ToolType.MCP, mcpServer.getType());
// Create another instance to verify consistency
- MCPServer anotherServer = new MCPServer("another-server", "http://localhost:9090");
+ McpServer anotherServer = new McpServer("another-server", "http://localhost:9090");
assertEquals(ToolType.MCP, anotherServer.getType());
}
@@ -196,10 +196,10 @@ void testFluentConfiguration() {
Map headers = new HashMap<>();
headers.put("X-API-Key", "secret");
List allowedTools = Arrays.asList("tool1", "tool2");
- BinaryData requireApproval = BinaryData.fromObject(MCPApprovalType.NEVER);
+ BinaryData requireApproval = BinaryData.fromObject(McpApprovalType.NEVER);
// Act - Test fluent method chaining
- MCPServer result = mcpServer.setAuthorization(authorization)
+ McpServer result = mcpServer.setAuthorization(authorization)
.setHeaders(headers)
.setAllowedTools(allowedTools)
.setRequireApproval(requireApproval);
@@ -244,8 +244,8 @@ void testJsonSerializationRoundtrip() {
@Test
void testMultipleInstancesAreIndependent() {
// Arrange
- MCPServer server1 = new MCPServer("server1", "http://server1.com");
- MCPServer server2 = new MCPServer("server2", "http://server2.com");
+ McpServer server1 = new McpServer("server1", "http://server1.com");
+ McpServer server2 = new McpServer("server2", "http://server2.com");
server1.setAuthorization("token1");
server2.setAuthorization("token2");
@@ -259,13 +259,13 @@ void testMultipleInstancesAreIndependent() {
@Test
void testComplexRequireApprovalConfiguration() {
- // Test with MCPApprovalType.ALWAYS
- BinaryData alwaysApproval = BinaryData.fromObject(MCPApprovalType.ALWAYS);
+ // Test with McpApprovalType.ALWAYS
+ BinaryData alwaysApproval = BinaryData.fromObject(McpApprovalType.ALWAYS);
mcpServer.setRequireApproval(alwaysApproval);
assertEquals(alwaysApproval, mcpServer.getRequireApproval());
- // Test with MCPApprovalType.NEVER
- BinaryData neverApproval = BinaryData.fromObject(MCPApprovalType.NEVER);
+ // Test with McpApprovalType.NEVER
+ BinaryData neverApproval = BinaryData.fromObject(McpApprovalType.NEVER);
mcpServer.setRequireApproval(neverApproval);
assertEquals(neverApproval, mcpServer.getRequireApproval());
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItemTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItemTest.java
index 083ccd097a78..01bc94b44ff9 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItemTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItemTest.java
@@ -11,7 +11,7 @@
import static org.junit.jupiter.api.Assertions.assertNull;
/**
- * Unit tests for {@link ResponseMCPApprovalRequestItem}.
+ * Unit tests for {@link ResponseMcpApprovalRequestItem}.
*/
class ResponseMCPApprovalRequestItemTest {
@@ -23,8 +23,8 @@ void testFromJsonWithRequiredFields() {
+ "\"name\":\"sensitive-tool\"," + "\"server_label\":\"production-server\"" + "}";
// Act
- ResponseMCPApprovalRequestItem item
- = BinaryData.fromString(json).toObject(ResponseMCPApprovalRequestItem.class);
+ ResponseMcpApprovalRequestItem item
+ = BinaryData.fromString(json).toObject(ResponseMcpApprovalRequestItem.class);
// Assert
assertNotNull(item);
@@ -42,8 +42,8 @@ void testFromJsonWithArguments() {
+ "\"arguments\":\"{\\\"resource_id\\\":\\\"res-123\\\"}\"" + "}";
// Act
- ResponseMCPApprovalRequestItem item
- = BinaryData.fromString(json).toObject(ResponseMCPApprovalRequestItem.class);
+ ResponseMcpApprovalRequestItem item
+ = BinaryData.fromString(json).toObject(ResponseMcpApprovalRequestItem.class);
// Assert
assertNotNull(item);
@@ -60,8 +60,8 @@ void testTypeIsAlwaysMcpApprovalRequest() {
+ "\"type\":\"mcp_approval_request\"," + "\"name\":\"tool\"," + "\"server_label\":\"server\"" + "}";
// Act
- ResponseMCPApprovalRequestItem item
- = BinaryData.fromString(json).toObject(ResponseMCPApprovalRequestItem.class);
+ ResponseMcpApprovalRequestItem item
+ = BinaryData.fromString(json).toObject(ResponseMcpApprovalRequestItem.class);
// Assert
assertEquals(ItemType.MCP_APPROVAL_REQUEST, item.getType());
@@ -75,8 +75,8 @@ void testWithNullArguments() {
+ "\"name\":\"no-arg-tool\"," + "\"server_label\":\"test-server\"" + "}";
// Act
- ResponseMCPApprovalRequestItem item
- = BinaryData.fromString(json).toObject(ResponseMCPApprovalRequestItem.class);
+ ResponseMcpApprovalRequestItem item
+ = BinaryData.fromString(json).toObject(ResponseMcpApprovalRequestItem.class);
// Assert
assertNotNull(item);
@@ -91,14 +91,14 @@ void testJsonRoundTrip() {
+ "\"arguments\":\"{\\\"backup_type\\\":\\\"full\\\"}\"" + "}";
// Act
- ResponseMCPApprovalRequestItem item
- = BinaryData.fromString(originalJson).toObject(ResponseMCPApprovalRequestItem.class);
+ ResponseMcpApprovalRequestItem item
+ = BinaryData.fromString(originalJson).toObject(ResponseMcpApprovalRequestItem.class);
String serializedJson = BinaryData.fromObject(item).toString();
// Assert
assertNotNull(serializedJson);
- ResponseMCPApprovalRequestItem deserializedItem
- = BinaryData.fromString(serializedJson).toObject(ResponseMCPApprovalRequestItem.class);
+ ResponseMcpApprovalRequestItem deserializedItem
+ = BinaryData.fromString(serializedJson).toObject(ResponseMcpApprovalRequestItem.class);
assertEquals(item.getId(), deserializedItem.getId());
assertEquals(item.getName(), deserializedItem.getName());
assertEquals(item.getServerLabel(), deserializedItem.getServerLabel());
@@ -114,8 +114,8 @@ void testComplexToolArguments() {
+ "\"arguments\":\"" + complexArgs.replace("\"", "\\\"") + "\"" + "}";
// Act
- ResponseMCPApprovalRequestItem item
- = BinaryData.fromString(json).toObject(ResponseMCPApprovalRequestItem.class);
+ ResponseMcpApprovalRequestItem item
+ = BinaryData.fromString(json).toObject(ResponseMcpApprovalRequestItem.class);
// Assert
assertNotNull(item.getArguments());
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItemTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItemTest.java
index e388f4907bcd..4d732e015813 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItemTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItemTest.java
@@ -13,7 +13,7 @@
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
- * Unit tests for {@link ResponseMCPApprovalResponseItem}.
+ * Unit tests for {@link ResponseMcpApprovalResponseItem}.
*/
class ResponseMCPApprovalResponseItemTest {
@@ -24,8 +24,8 @@ void testFromJsonWithApprove() {
+ "\"type\":\"mcp_approval_response\"," + "\"approval_request_id\":\"req-123\"," + "\"approve\":true" + "}";
// Act
- ResponseMCPApprovalResponseItem item
- = BinaryData.fromString(json).toObject(ResponseMCPApprovalResponseItem.class);
+ ResponseMcpApprovalResponseItem item
+ = BinaryData.fromString(json).toObject(ResponseMcpApprovalResponseItem.class);
// Assert
assertNotNull(item);
@@ -43,8 +43,8 @@ void testFromJsonWithDeny() {
+ "\"approval_request_id\":\"req-456\"," + "\"approve\":false" + "}";
// Act
- ResponseMCPApprovalResponseItem item
- = BinaryData.fromString(json).toObject(ResponseMCPApprovalResponseItem.class);
+ ResponseMcpApprovalResponseItem item
+ = BinaryData.fromString(json).toObject(ResponseMcpApprovalResponseItem.class);
// Assert
assertNotNull(item);
@@ -61,8 +61,8 @@ void testFromJsonWithReason() {
+ "\"reason\":\"Security policy violation\"" + "}";
// Act
- ResponseMCPApprovalResponseItem item
- = BinaryData.fromString(json).toObject(ResponseMCPApprovalResponseItem.class);
+ ResponseMcpApprovalResponseItem item
+ = BinaryData.fromString(json).toObject(ResponseMcpApprovalResponseItem.class);
// Assert
assertNotNull(item);
@@ -77,8 +77,8 @@ void testTypeIsAlwaysMcpApprovalResponse() {
+ "\"type\":\"mcp_approval_response\"," + "\"approval_request_id\":\"req-999\"," + "\"approve\":true" + "}";
// Act
- ResponseMCPApprovalResponseItem item
- = BinaryData.fromString(json).toObject(ResponseMCPApprovalResponseItem.class);
+ ResponseMcpApprovalResponseItem item
+ = BinaryData.fromString(json).toObject(ResponseMcpApprovalResponseItem.class);
// Assert
assertEquals(ItemType.MCP_APPROVAL_RESPONSE, item.getType());
@@ -91,8 +91,8 @@ void testWithNullReason() {
+ "\"type\":\"mcp_approval_response\"," + "\"approval_request_id\":\"req-111\"," + "\"approve\":true" + "}";
// Act
- ResponseMCPApprovalResponseItem item
- = BinaryData.fromString(json).toObject(ResponseMCPApprovalResponseItem.class);
+ ResponseMcpApprovalResponseItem item
+ = BinaryData.fromString(json).toObject(ResponseMcpApprovalResponseItem.class);
// Assert
assertNotNull(item);
@@ -107,14 +107,14 @@ void testJsonRoundTrip() {
+ "\"reason\":\"User denied the action\"" + "}";
// Act
- ResponseMCPApprovalResponseItem item
- = BinaryData.fromString(originalJson).toObject(ResponseMCPApprovalResponseItem.class);
+ ResponseMcpApprovalResponseItem item
+ = BinaryData.fromString(originalJson).toObject(ResponseMcpApprovalResponseItem.class);
String serializedJson = BinaryData.fromObject(item).toString();
// Assert
assertNotNull(serializedJson);
- ResponseMCPApprovalResponseItem deserializedItem
- = BinaryData.fromString(serializedJson).toObject(ResponseMCPApprovalResponseItem.class);
+ ResponseMcpApprovalResponseItem deserializedItem
+ = BinaryData.fromString(serializedJson).toObject(ResponseMcpApprovalResponseItem.class);
assertEquals(item.getId(), deserializedItem.getId());
assertEquals(item.getApprovalRequestId(), deserializedItem.getApprovalRequestId());
assertEquals(item.isApprove(), deserializedItem.isApprove());
@@ -130,8 +130,8 @@ void testApprovalWithDetailedReason() {
+ "\"reason\":\"" + detailedReason + "\"" + "}";
// Act
- ResponseMCPApprovalResponseItem item
- = BinaryData.fromString(json).toObject(ResponseMCPApprovalResponseItem.class);
+ ResponseMcpApprovalResponseItem item
+ = BinaryData.fromString(json).toObject(ResponseMcpApprovalResponseItem.class);
// Assert
assertNotNull(item);
@@ -147,8 +147,8 @@ void testApprovalApprovedWithReason() {
+ "\"reason\":\"User explicitly confirmed the action\"" + "}";
// Act
- ResponseMCPApprovalResponseItem item
- = BinaryData.fromString(json).toObject(ResponseMCPApprovalResponseItem.class);
+ ResponseMcpApprovalResponseItem item
+ = BinaryData.fromString(json).toObject(ResponseMcpApprovalResponseItem.class);
// Assert
assertTrue(item.isApprove());
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPCallItemTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPCallItemTest.java
index a089e75bbe84..31d0fd1b0a15 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPCallItemTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPCallItemTest.java
@@ -11,7 +11,7 @@
import static org.junit.jupiter.api.Assertions.assertNull;
/**
- * Unit tests for {@link ResponseMCPCallItem}.
+ * Unit tests for {@link ResponseMcpCallItem}.
*/
class ResponseMCPCallItemTest {
@@ -23,7 +23,7 @@ void testFromJsonWithRequiredFields() {
+ "\"name\":\"test-tool\"" + "}";
// Act
- ResponseMCPCallItem item = BinaryData.fromString(json).toObject(ResponseMCPCallItem.class);
+ ResponseMcpCallItem item = BinaryData.fromString(json).toObject(ResponseMcpCallItem.class);
// Assert
assertNotNull(item);
@@ -43,7 +43,7 @@ void testFromJsonWithAllFields() {
+ "\"error\":{\"message\":\"error occurred\"}" + "}";
// Act
- ResponseMCPCallItem item = BinaryData.fromString(json).toObject(ResponseMCPCallItem.class);
+ ResponseMcpCallItem item = BinaryData.fromString(json).toObject(ResponseMcpCallItem.class);
// Assert
assertNotNull(item);
@@ -63,7 +63,7 @@ void testTypeIsAlwaysMcpCall() {
+ "\"arguments\":\"{}\"," + "\"server_label\":\"server\"," + "\"name\":\"tool\"" + "}";
// Act
- ResponseMCPCallItem item = BinaryData.fromString(json).toObject(ResponseMCPCallItem.class);
+ ResponseMcpCallItem item = BinaryData.fromString(json).toObject(ResponseMcpCallItem.class);
// Assert
assertEquals(ItemType.MCP_CALL, item.getType());
@@ -76,7 +76,7 @@ void testWithNullOptionalFields() {
+ "\"arguments\":\"{\\\"test\\\":true}\"," + "\"server_label\":\"label\"," + "\"name\":\"toolname\"" + "}";
// Act
- ResponseMCPCallItem item = BinaryData.fromString(json).toObject(ResponseMCPCallItem.class);
+ ResponseMcpCallItem item = BinaryData.fromString(json).toObject(ResponseMcpCallItem.class);
// Assert
assertNotNull(item);
@@ -93,14 +93,14 @@ void testJsonRoundTrip() {
+ "\"name\":\"test-tool\"," + "\"output\":\"result\"" + "}";
// Act
- ResponseMCPCallItem item = BinaryData.fromString(originalJson).toObject(ResponseMCPCallItem.class);
+ ResponseMcpCallItem item = BinaryData.fromString(originalJson).toObject(ResponseMcpCallItem.class);
String serializedJson = BinaryData.fromObject(item).toString();
// Assert
assertNotNull(serializedJson);
// Deserialize again to verify round-trip
- ResponseMCPCallItem deserializedItem
- = BinaryData.fromString(serializedJson).toObject(ResponseMCPCallItem.class);
+ ResponseMcpCallItem deserializedItem
+ = BinaryData.fromString(serializedJson).toObject(ResponseMcpCallItem.class);
assertEquals(item.getId(), deserializedItem.getId());
assertEquals(item.getArguments(), deserializedItem.getArguments());
assertEquals(item.getServerLabel(), deserializedItem.getServerLabel());
@@ -116,7 +116,7 @@ void testComplexArgumentsJson() {
+ "\"name\":\"complex-tool\"" + "}";
// Act
- ResponseMCPCallItem item = BinaryData.fromString(json).toObject(ResponseMCPCallItem.class);
+ ResponseMcpCallItem item = BinaryData.fromString(json).toObject(ResponseMcpCallItem.class);
// Assert
assertNotNull(item.getArguments());
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPListToolItemTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPListToolItemTest.java
index 8f433cae6786..6f58c1cd6199 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPListToolItemTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPListToolItemTest.java
@@ -13,7 +13,7 @@
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
- * Unit tests for {@link ResponseMCPListToolItem}.
+ * Unit tests for {@link ResponseMcpListToolItem}.
*/
class ResponseMCPListToolItemTest {
@@ -24,7 +24,7 @@ void testFromJsonWithEmptyTools() {
+ "\"tools\":[]," + "\"server_label\":\"test-server\"" + "}";
// Act
- ResponseMCPListToolItem item = BinaryData.fromString(json).toObject(ResponseMCPListToolItem.class);
+ ResponseMcpListToolItem item = BinaryData.fromString(json).toObject(ResponseMcpListToolItem.class);
// Assert
assertNotNull(item);
@@ -45,7 +45,7 @@ void testFromJsonWithMultipleTools() {
+ " \"input_schema\":{\"type\":\"object\"}" + " }" + "]" + "}";
// Act
- ResponseMCPListToolItem item = BinaryData.fromString(json).toObject(ResponseMCPListToolItem.class);
+ ResponseMcpListToolItem item = BinaryData.fromString(json).toObject(ResponseMcpListToolItem.class);
// Assert
assertNotNull(item);
@@ -54,7 +54,7 @@ void testFromJsonWithMultipleTools() {
assertNotNull(item.getTools());
assertEquals(2, item.getTools().size());
- List tools = item.getTools();
+ List tools = item.getTools();
assertEquals("get_weather", tools.get(0).getName());
assertEquals("Get weather information", tools.get(0).getDescription());
assertEquals("send_email", tools.get(1).getName());
@@ -68,7 +68,7 @@ void testTypeIsAlwaysMcpListTools() {
+ "\"tools\":[]," + "\"server_label\":\"test\"" + "}";
// Act
- ResponseMCPListToolItem item = BinaryData.fromString(json).toObject(ResponseMCPListToolItem.class);
+ ResponseMcpListToolItem item = BinaryData.fromString(json).toObject(ResponseMcpListToolItem.class);
// Assert
assertEquals(ItemType.MCP_LIST_TOOLS, item.getType());
@@ -84,13 +84,13 @@ void testJsonRoundTrip() {
+ "]" + "}";
// Act
- ResponseMCPListToolItem item = BinaryData.fromString(originalJson).toObject(ResponseMCPListToolItem.class);
+ ResponseMcpListToolItem item = BinaryData.fromString(originalJson).toObject(ResponseMcpListToolItem.class);
String serializedJson = BinaryData.fromObject(item).toString();
// Assert
assertNotNull(serializedJson);
- ResponseMCPListToolItem deserializedItem
- = BinaryData.fromString(serializedJson).toObject(ResponseMCPListToolItem.class);
+ ResponseMcpListToolItem deserializedItem
+ = BinaryData.fromString(serializedJson).toObject(ResponseMcpListToolItem.class);
assertEquals(item.getId(), deserializedItem.getId());
assertEquals(item.getServerLabel(), deserializedItem.getServerLabel());
assertEquals(item.getTools().size(), deserializedItem.getTools().size());
@@ -108,12 +108,12 @@ void testToolsWithComplexSchema() {
+ " \"required\":[\"query\"]" + " }" + " }" + "]" + "}";
// Act
- ResponseMCPListToolItem item = BinaryData.fromString(json).toObject(ResponseMCPListToolItem.class);
+ ResponseMcpListToolItem item = BinaryData.fromString(json).toObject(ResponseMcpListToolItem.class);
// Assert
assertNotNull(item);
assertEquals(1, item.getTools().size());
- MCPTool tool = item.getTools().get(0);
+ McpTool tool = item.getTools().get(0);
assertEquals("search", tool.getName());
assertEquals("Search for items", tool.getDescription());
assertNotNull(tool.getInputSchema());
@@ -129,12 +129,12 @@ void testToolsWithAnnotations() {
+ " \"annotations\":{\"version\":\"1.0\",\"author\":\"test\"}" + " }" + "]" + "}";
// Act
- ResponseMCPListToolItem item = BinaryData.fromString(json).toObject(ResponseMCPListToolItem.class);
+ ResponseMcpListToolItem item = BinaryData.fromString(json).toObject(ResponseMcpListToolItem.class);
// Assert
assertNotNull(item);
assertEquals(1, item.getTools().size());
- MCPTool tool = item.getTools().get(0);
+ McpTool tool = item.getTools().get(0);
assertEquals("annotated_tool", tool.getName());
assertNotNull(tool.getAnnotations());
}
@@ -151,7 +151,7 @@ void testMultipleToolsFromSameServer() {
+ " {\"name\":\"tool5\",\"input_schema\":{\"type\":\"object\"}}" + "]" + "}";
// Act
- ResponseMCPListToolItem item = BinaryData.fromString(json).toObject(ResponseMCPListToolItem.class);
+ ResponseMcpListToolItem item = BinaryData.fromString(json).toObject(ResponseMcpListToolItem.class);
// Assert
assertEquals(5, item.getTools().size());
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/TranscriptionAndIncludeOptionsTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/TranscriptionAndIncludeOptionsTest.java
index 9be1614a3c0e..f1ed2f7cc174 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/TranscriptionAndIncludeOptionsTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/TranscriptionAndIncludeOptionsTest.java
@@ -104,16 +104,16 @@ void testTranscriptionCompletedWithLogprobsAndPhrases() {
assertEquals(0, event.getContentIndex());
assertEquals("hello world", event.getTranscript());
- List logprobs = event.getLogprobs();
+ List logprobs = event.getLogProbs();
assertNotNull(logprobs);
assertEquals(2, logprobs.size());
assertEquals("hello", logprobs.get(0).getToken());
- assertEquals(-0.12, logprobs.get(0).getLogprob());
+ assertEquals(-0.12, logprobs.get(0).getLogProb());
assertNotNull(logprobs.get(0).getBytes());
assertEquals(5, logprobs.get(0).getBytes().size());
assertEquals(Integer.valueOf(104), logprobs.get(0).getBytes().get(0));
assertEquals(" world", logprobs.get(1).getToken());
- assertEquals(-0.34, logprobs.get(1).getLogprob());
+ assertEquals(-0.34, logprobs.get(1).getLogProb());
List phrases = event.getPhrases();
assertNotNull(phrases);
@@ -141,7 +141,7 @@ void testTranscriptionCompletedWithoutLogprobsOrPhrases() {
assertEquals("hi", event.getTranscript());
assertEquals(3, event.getContentIndex());
- assertNull(event.getLogprobs());
+ assertNull(event.getLogProbs());
assertNull(event.getPhrases());
}
@@ -158,11 +158,11 @@ void testTranscriptionCompletedJsonRoundTripPreservesArrays() {
SessionUpdateConversationItemInputAudioTranscriptionCompleted roundTripped = BinaryData.fromObject(original)
.toObject(SessionUpdateConversationItemInputAudioTranscriptionCompleted.class);
- assertNotNull(roundTripped.getLogprobs());
- assertEquals(1, roundTripped.getLogprobs().size());
- assertEquals("hi", roundTripped.getLogprobs().get(0).getToken());
- assertEquals(-0.5, roundTripped.getLogprobs().get(0).getLogprob());
- assertEquals(Arrays.asList(104, 105), roundTripped.getLogprobs().get(0).getBytes());
+ assertNotNull(roundTripped.getLogProbs());
+ assertEquals(1, roundTripped.getLogProbs().size());
+ assertEquals("hi", roundTripped.getLogProbs().get(0).getToken());
+ assertEquals(-0.5, roundTripped.getLogProbs().get(0).getLogProb());
+ assertEquals(Arrays.asList(104, 105), roundTripped.getLogProbs().get(0).getBytes());
assertNotNull(roundTripped.getPhrases());
assertEquals(1, roundTripped.getPhrases().size());
@@ -178,14 +178,14 @@ void testTranscriptionCompletedPolymorphicViaSessionUpdate() {
+ "\"logprobs\":[{\"token\":\"yo\",\"logprob\":-0.1,\"bytes\":[121,111]}],"
+ "\"phrases\":[{\"offset_milliseconds\":0,\"duration_milliseconds\":50,\"text\":\"yo\"}]}";
- SessionUpdate update = BinaryData.fromString(json).toObject(SessionUpdate.class);
+ SessionServerEvent update = BinaryData.fromString(json).toObject(SessionServerEvent.class);
assertTrue(update instanceof SessionUpdateConversationItemInputAudioTranscriptionCompleted,
"Expected SessionUpdateConversationItemInputAudioTranscriptionCompleted, got " + update.getClass());
SessionUpdateConversationItemInputAudioTranscriptionCompleted typed
= (SessionUpdateConversationItemInputAudioTranscriptionCompleted) update;
- assertNotNull(typed.getLogprobs());
- assertEquals(1, typed.getLogprobs().size());
+ assertNotNull(typed.getLogProbs());
+ assertEquals(1, typed.getLogProbs().size());
assertNotNull(typed.getPhrases());
assertEquals(1, typed.getPhrases().size());
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/WebAndFileSearchTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/WebAndFileSearchTest.java
index 68c7a6d35024..fbcf546b1b92 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/WebAndFileSearchTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/WebAndFileSearchTest.java
@@ -231,7 +231,7 @@ void testWebSearchCallCompletedPolymorphicViaSessionUpdate() {
String json = "{\"type\":\"response.web_search_call.completed\",\"event_id\":\"e4\","
+ "\"response_id\":\"r4\",\"item_id\":\"i4\",\"output_index\":2,\"sequence_number\":7}";
- SessionUpdate update = BinaryData.fromString(json).toObject(SessionUpdate.class);
+ SessionServerEvent update = BinaryData.fromString(json).toObject(SessionServerEvent.class);
assertTrue(update instanceof ServerEventResponseWebSearchCallCompleted,
"Expected ServerEventResponseWebSearchCallCompleted, got " + update.getClass());
diff --git a/sdk/voicelive/azure-ai-voicelive/tsp-location.yaml b/sdk/voicelive/azure-ai-voicelive/tsp-location.yaml
index 5dca041d3058..5dd1f4fa8dc7 100644
--- a/sdk/voicelive/azure-ai-voicelive/tsp-location.yaml
+++ b/sdk/voicelive/azure-ai-voicelive/tsp-location.yaml
@@ -1,4 +1,4 @@
directory: specification/ai/data-plane/VoiceLive
-commit: 1336b57a1c46df56e5190738f06504b65fad5ca9
+commit: 4d69968dee8ba220e3b8621b496eedbdb343b4ef
repo: Azure/azure-rest-api-specs
additionalDirectories:
From bb68ad79c46a1106549f7279183a3a790621f04b Mon Sep 17 00:00:00 2001
From: Xiting Zhang
Date: Tue, 19 May 2026 16:52:57 -0700
Subject: [PATCH 05/13] Fix filename case for Mcp* and McpSample
(case-insensitive Windows FS)
Linux CI compilation failed because the file names on disk were still MCP* (Windows treats them as same path). Properly rename via git mv to Mcp* / McpSample.java to match the public class declarations.
---
...stItem.java => McpApprovalResponseRequestItem.java} | 0
.../{MCPApprovalType.java => McpApprovalType.java} | 0
.../models/{MCPServer.java => McpServer.java} | 0
.../ai/voicelive/models/{MCPTool.java => McpTool.java} | 0
...stItem.java => ResponseMcpApprovalRequestItem.java} | 0
...eItem.java => ResponseMcpApprovalResponseItem.java} | 0
...sponseMCPCallItem.java => ResponseMcpCallItem.java} | 0
...PListToolItem.java => ResponseMcpListToolItem.java} | 0
.../ai/voicelive/{MCPSample.java => McpSample.java} | 10 +++++-----
...PApprovalTypeTest.java => McpApprovalTypeTest.java} | 2 +-
...MCPServerEventTest.java => McpServerEventTest.java} | 2 +-
.../models/{MCPServerTest.java => McpServerTest.java} | 2 +-
...st.java => ResponseMcpApprovalRequestItemTest.java} | 2 +-
...t.java => ResponseMcpApprovalResponseItemTest.java} | 2 +-
...PCallItemTest.java => ResponseMcpCallItemTest.java} | 2 +-
...lItemTest.java => ResponseMcpListToolItemTest.java} | 2 +-
16 files changed, 12 insertions(+), 12 deletions(-)
rename sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/{MCPApprovalResponseRequestItem.java => McpApprovalResponseRequestItem.java} (100%)
rename sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/{MCPApprovalType.java => McpApprovalType.java} (100%)
rename sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/{MCPServer.java => McpServer.java} (100%)
rename sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/{MCPTool.java => McpTool.java} (100%)
rename sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/{ResponseMCPApprovalRequestItem.java => ResponseMcpApprovalRequestItem.java} (100%)
rename sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/{ResponseMCPApprovalResponseItem.java => ResponseMcpApprovalResponseItem.java} (100%)
rename sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/{ResponseMCPCallItem.java => ResponseMcpCallItem.java} (100%)
rename sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/{ResponseMCPListToolItem.java => ResponseMcpListToolItem.java} (100%)
rename sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/{MCPSample.java => McpSample.java} (99%)
rename sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/{MCPApprovalTypeTest.java => McpApprovalTypeTest.java} (98%)
rename sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/{MCPServerEventTest.java => McpServerEventTest.java} (99%)
rename sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/{MCPServerTest.java => McpServerTest.java} (99%)
rename sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/{ResponseMCPApprovalRequestItemTest.java => ResponseMcpApprovalRequestItemTest.java} (99%)
rename sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/{ResponseMCPApprovalResponseItemTest.java => ResponseMcpApprovalResponseItemTest.java} (99%)
rename sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/{ResponseMCPCallItemTest.java => ResponseMcpCallItemTest.java} (99%)
rename sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/{ResponseMCPListToolItemTest.java => ResponseMcpListToolItemTest.java} (99%)
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPApprovalResponseRequestItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpApprovalResponseRequestItem.java
similarity index 100%
rename from sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPApprovalResponseRequestItem.java
rename to sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpApprovalResponseRequestItem.java
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPApprovalType.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpApprovalType.java
similarity index 100%
rename from sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPApprovalType.java
rename to sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpApprovalType.java
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPServer.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpServer.java
similarity index 100%
rename from sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPServer.java
rename to sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpServer.java
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPTool.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpTool.java
similarity index 100%
rename from sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/MCPTool.java
rename to sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpTool.java
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalRequestItem.java
similarity index 100%
rename from sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItem.java
rename to sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalRequestItem.java
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalResponseItem.java
similarity index 100%
rename from sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItem.java
rename to sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalResponseItem.java
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPCallItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpCallItem.java
similarity index 100%
rename from sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPCallItem.java
rename to sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpCallItem.java
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPListToolItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpListToolItem.java
similarity index 100%
rename from sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMCPListToolItem.java
rename to sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpListToolItem.java
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MCPSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/McpSample.java
similarity index 99%
rename from sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MCPSample.java
rename to sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/McpSample.java
index bc93ebe20080..aa96a39befa1 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MCPSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/McpSample.java
@@ -79,7 +79,7 @@
*
* How to Run:
* {@code
- * mvn exec:java -Dexec.mainClass="com.azure.ai.voicelive.MCPSample" -Dexec.classpathScope=test
+ * mvn exec:java -Dexec.mainClass="com.azure.ai.voicelive.McpSample" -Dexec.classpathScope=test
* }
*
* Try asking:
@@ -88,7 +88,7 @@
* "Can you summarize Azure docs about VoiceLive?"
*
*/
-public final class MCPSample {
+public final class McpSample {
// Service configuration
private static final String DEFAULT_MODEL = "gpt-realtime";
@@ -100,7 +100,7 @@ public final class MCPSample {
private static final int SAMPLE_SIZE_BITS = 16;
private static final int CHUNK_SIZE = 1200;
- private MCPSample() {
+ private McpSample() {
}
/**
@@ -119,7 +119,7 @@ public static void main(String[] args) {
}
try {
- runMCPSample(endpoint);
+ runMcpSample(endpoint);
} catch (Exception e) {
System.err.println("❌ Error: " + e.getMessage());
e.printStackTrace();
@@ -130,7 +130,7 @@ public static void main(String[] args) {
/**
* Run the MCP sample.
*/
- private static void runMCPSample(String endpoint) {
+ private static void runMcpSample(String endpoint) {
System.out.println("🔌 Connecting to VoiceLive API with MCP support...");
System.out.println("📡 Endpoint: " + endpoint);
System.out.println("🤖 Model: " + DEFAULT_MODEL);
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPApprovalTypeTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpApprovalTypeTest.java
similarity index 98%
rename from sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPApprovalTypeTest.java
rename to sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpApprovalTypeTest.java
index 387d0edbdbd3..c7bf75fca87b 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPApprovalTypeTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpApprovalTypeTest.java
@@ -14,7 +14,7 @@
/**
* Unit tests for {@link McpApprovalType}.
*/
-class MCPApprovalTypeTest {
+class McpApprovalTypeTest {
@Test
void testNeverApprovalType() {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerEventTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpServerEventTest.java
similarity index 99%
rename from sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerEventTest.java
rename to sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpServerEventTest.java
index b7a04394c10d..d196418dcb14 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerEventTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpServerEventTest.java
@@ -12,7 +12,7 @@
/**
* Unit tests for MCP server event classes.
*/
-class MCPServerEventTest {
+class McpServerEventTest {
@Test
void testServerEventMcpListToolsInProgress() {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpServerTest.java
similarity index 99%
rename from sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerTest.java
rename to sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpServerTest.java
index 716a6c84fc67..3d0bc720338d 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpServerTest.java
@@ -22,7 +22,7 @@
/**
* Unit tests for {@link McpServer}.
*/
-class MCPServerTest {
+class McpServerTest {
private static final String TEST_SERVER_LABEL = "test-server";
private static final String TEST_SERVER_URL = "http://localhost:8080";
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItemTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpApprovalRequestItemTest.java
similarity index 99%
rename from sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItemTest.java
rename to sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpApprovalRequestItemTest.java
index 01bc94b44ff9..2be0335a5e96 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItemTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpApprovalRequestItemTest.java
@@ -13,7 +13,7 @@
/**
* Unit tests for {@link ResponseMcpApprovalRequestItem}.
*/
-class ResponseMCPApprovalRequestItemTest {
+class ResponseMcpApprovalRequestItemTest {
@Test
void testFromJsonWithRequiredFields() {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItemTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpApprovalResponseItemTest.java
similarity index 99%
rename from sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItemTest.java
rename to sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpApprovalResponseItemTest.java
index 4d732e015813..b14b1fc628f3 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItemTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpApprovalResponseItemTest.java
@@ -15,7 +15,7 @@
/**
* Unit tests for {@link ResponseMcpApprovalResponseItem}.
*/
-class ResponseMCPApprovalResponseItemTest {
+class ResponseMcpApprovalResponseItemTest {
@Test
void testFromJsonWithApprove() {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPCallItemTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpCallItemTest.java
similarity index 99%
rename from sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPCallItemTest.java
rename to sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpCallItemTest.java
index 31d0fd1b0a15..75bc0e94dfc8 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPCallItemTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpCallItemTest.java
@@ -13,7 +13,7 @@
/**
* Unit tests for {@link ResponseMcpCallItem}.
*/
-class ResponseMCPCallItemTest {
+class ResponseMcpCallItemTest {
@Test
void testFromJsonWithRequiredFields() {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPListToolItemTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpListToolItemTest.java
similarity index 99%
rename from sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPListToolItemTest.java
rename to sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpListToolItemTest.java
index 6f58c1cd6199..31d58c0129d1 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPListToolItemTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpListToolItemTest.java
@@ -15,7 +15,7 @@
/**
* Unit tests for {@link ResponseMcpListToolItem}.
*/
-class ResponseMCPListToolItemTest {
+class ResponseMcpListToolItemTest {
@Test
void testFromJsonWithEmptyTools() {
From 30d75f0884e070a1d874be9f6378b0f5b362378a Mon Sep 17 00:00:00 2001
From: Xiting Zhang
Date: Tue, 19 May 2026 16:58:43 -0700
Subject: [PATCH 06/13] Fix filename case for Mcp* tests and sample (Windows
case-insensitive FS)
Rename MCP* -> Mcp* via git mv so the on-disk file names match the public class declarations; previously the merge brought renamed paths from main but local working tree retained MCP* casing, which broke Linux CI compilation.
---
.../ai/voicelive/{MCPSample.java => McpSample.java} | 10 +++++-----
...PApprovalTypeTest.java => McpApprovalTypeTest.java} | 2 +-
...MCPServerEventTest.java => McpServerEventTest.java} | 2 +-
.../models/{MCPServerTest.java => McpServerTest.java} | 2 +-
...st.java => ResponseMcpApprovalRequestItemTest.java} | 2 +-
...t.java => ResponseMcpApprovalResponseItemTest.java} | 2 +-
...PCallItemTest.java => ResponseMcpCallItemTest.java} | 2 +-
...lItemTest.java => ResponseMcpListToolItemTest.java} | 2 +-
8 files changed, 12 insertions(+), 12 deletions(-)
rename sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/{MCPSample.java => McpSample.java} (99%)
rename sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/{MCPApprovalTypeTest.java => McpApprovalTypeTest.java} (98%)
rename sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/{MCPServerEventTest.java => McpServerEventTest.java} (99%)
rename sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/{MCPServerTest.java => McpServerTest.java} (99%)
rename sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/{ResponseMCPApprovalRequestItemTest.java => ResponseMcpApprovalRequestItemTest.java} (99%)
rename sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/{ResponseMCPApprovalResponseItemTest.java => ResponseMcpApprovalResponseItemTest.java} (99%)
rename sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/{ResponseMCPCallItemTest.java => ResponseMcpCallItemTest.java} (99%)
rename sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/{ResponseMCPListToolItemTest.java => ResponseMcpListToolItemTest.java} (99%)
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MCPSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/McpSample.java
similarity index 99%
rename from sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MCPSample.java
rename to sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/McpSample.java
index bc93ebe20080..aa96a39befa1 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MCPSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/McpSample.java
@@ -79,7 +79,7 @@
*
* How to Run:
* {@code
- * mvn exec:java -Dexec.mainClass="com.azure.ai.voicelive.MCPSample" -Dexec.classpathScope=test
+ * mvn exec:java -Dexec.mainClass="com.azure.ai.voicelive.McpSample" -Dexec.classpathScope=test
* }
*
* Try asking:
@@ -88,7 +88,7 @@
* "Can you summarize Azure docs about VoiceLive?"
*
*/
-public final class MCPSample {
+public final class McpSample {
// Service configuration
private static final String DEFAULT_MODEL = "gpt-realtime";
@@ -100,7 +100,7 @@ public final class MCPSample {
private static final int SAMPLE_SIZE_BITS = 16;
private static final int CHUNK_SIZE = 1200;
- private MCPSample() {
+ private McpSample() {
}
/**
@@ -119,7 +119,7 @@ public static void main(String[] args) {
}
try {
- runMCPSample(endpoint);
+ runMcpSample(endpoint);
} catch (Exception e) {
System.err.println("❌ Error: " + e.getMessage());
e.printStackTrace();
@@ -130,7 +130,7 @@ public static void main(String[] args) {
/**
* Run the MCP sample.
*/
- private static void runMCPSample(String endpoint) {
+ private static void runMcpSample(String endpoint) {
System.out.println("🔌 Connecting to VoiceLive API with MCP support...");
System.out.println("📡 Endpoint: " + endpoint);
System.out.println("🤖 Model: " + DEFAULT_MODEL);
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPApprovalTypeTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpApprovalTypeTest.java
similarity index 98%
rename from sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPApprovalTypeTest.java
rename to sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpApprovalTypeTest.java
index 387d0edbdbd3..c7bf75fca87b 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPApprovalTypeTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpApprovalTypeTest.java
@@ -14,7 +14,7 @@
/**
* Unit tests for {@link McpApprovalType}.
*/
-class MCPApprovalTypeTest {
+class McpApprovalTypeTest {
@Test
void testNeverApprovalType() {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerEventTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpServerEventTest.java
similarity index 99%
rename from sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerEventTest.java
rename to sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpServerEventTest.java
index b7a04394c10d..d196418dcb14 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerEventTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpServerEventTest.java
@@ -12,7 +12,7 @@
/**
* Unit tests for MCP server event classes.
*/
-class MCPServerEventTest {
+class McpServerEventTest {
@Test
void testServerEventMcpListToolsInProgress() {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpServerTest.java
similarity index 99%
rename from sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerTest.java
rename to sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpServerTest.java
index 716a6c84fc67..3d0bc720338d 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/MCPServerTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/McpServerTest.java
@@ -22,7 +22,7 @@
/**
* Unit tests for {@link McpServer}.
*/
-class MCPServerTest {
+class McpServerTest {
private static final String TEST_SERVER_LABEL = "test-server";
private static final String TEST_SERVER_URL = "http://localhost:8080";
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItemTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpApprovalRequestItemTest.java
similarity index 99%
rename from sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItemTest.java
rename to sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpApprovalRequestItemTest.java
index 01bc94b44ff9..2be0335a5e96 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalRequestItemTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpApprovalRequestItemTest.java
@@ -13,7 +13,7 @@
/**
* Unit tests for {@link ResponseMcpApprovalRequestItem}.
*/
-class ResponseMCPApprovalRequestItemTest {
+class ResponseMcpApprovalRequestItemTest {
@Test
void testFromJsonWithRequiredFields() {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItemTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpApprovalResponseItemTest.java
similarity index 99%
rename from sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItemTest.java
rename to sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpApprovalResponseItemTest.java
index 4d732e015813..b14b1fc628f3 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPApprovalResponseItemTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpApprovalResponseItemTest.java
@@ -15,7 +15,7 @@
/**
* Unit tests for {@link ResponseMcpApprovalResponseItem}.
*/
-class ResponseMCPApprovalResponseItemTest {
+class ResponseMcpApprovalResponseItemTest {
@Test
void testFromJsonWithApprove() {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPCallItemTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpCallItemTest.java
similarity index 99%
rename from sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPCallItemTest.java
rename to sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpCallItemTest.java
index 31d0fd1b0a15..75bc0e94dfc8 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPCallItemTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpCallItemTest.java
@@ -13,7 +13,7 @@
/**
* Unit tests for {@link ResponseMcpCallItem}.
*/
-class ResponseMCPCallItemTest {
+class ResponseMcpCallItemTest {
@Test
void testFromJsonWithRequiredFields() {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPListToolItemTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpListToolItemTest.java
similarity index 99%
rename from sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPListToolItemTest.java
rename to sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpListToolItemTest.java
index 6f58c1cd6199..31d58c0129d1 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMCPListToolItemTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/ResponseMcpListToolItemTest.java
@@ -15,7 +15,7 @@
/**
* Unit tests for {@link ResponseMcpListToolItem}.
*/
-class ResponseMCPListToolItemTest {
+class ResponseMcpListToolItemTest {
@Test
void testFromJsonWithEmptyTools() {
From a50a5ef30384efd8f053a5ed39f24942d9dd63b0 Mon Sep 17 00:00:00 2001
From: Xiting Zhang
Date: Tue, 19 May 2026 17:14:02 -0700
Subject: [PATCH 07/13] Apply formatter cleanup to generated model files
---
.../ai/voicelive/models/AvatarOptions.java | 44 +++++++++----------
.../McpApprovalResponseRequestItem.java | 14 +++---
.../ai/voicelive/models/McpApprovalType.java | 8 ++--
.../azure/ai/voicelive/models/McpServer.java | 30 ++++++-------
.../azure/ai/voicelive/models/McpTool.java | 16 +++----
.../ResponseMcpApprovalRequestItem.java | 16 +++----
.../ResponseMcpApprovalResponseItem.java | 16 +++----
.../voicelive/models/ResponseMcpCallItem.java | 22 +++++-----
.../models/ResponseMcpListToolItem.java | 14 +++---
.../voicelive/models/SessionClientEvent.java | 15 +++----
.../voicelive/models/SessionServerEvent.java | 15 +++----
11 files changed, 96 insertions(+), 114 deletions(-)
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AvatarOptions.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AvatarOptions.java
index 3b42029cf305..d15ddce964b9 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AvatarOptions.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AvatarOptions.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.voicelive.models;
import com.azure.core.annotation.Fluent;
@@ -18,6 +17,7 @@
*/
@Fluent
public final class AvatarOptions implements JsonSerializable {
+
/*
* Type of avatar to use.
*/
@@ -81,7 +81,7 @@ public final class AvatarOptions implements JsonSerializable {
/**
* Creates an instance of AvatarOptions class.
- *
+ *
* @param character the character value to set.
* @param customized the customized value to set.
*/
@@ -93,7 +93,7 @@ public AvatarOptions(String character, boolean customized) {
/**
* Get the type property: Type of avatar to use.
- *
+ *
* @return the type value.
*/
@Generated
@@ -103,7 +103,7 @@ public AvatarConfigTypes getType() {
/**
* Set the type property: Type of avatar to use.
- *
+ *
* @param type the type value to set.
* @return the AvatarOptions object itself.
*/
@@ -115,7 +115,7 @@ public AvatarOptions setType(AvatarConfigTypes type) {
/**
* Get the iceServers property: Optional list of ICE servers to use for WebRTC connection establishment.
- *
+ *
* @return the iceServers value.
*/
@Generated
@@ -125,7 +125,7 @@ public List getIceServers() {
/**
* Set the iceServers property: Optional list of ICE servers to use for WebRTC connection establishment.
- *
+ *
* @param iceServers the iceServers value to set.
* @return the AvatarOptions object itself.
*/
@@ -137,7 +137,7 @@ public AvatarOptions setIceServers(List iceServers) {
/**
* Get the character property: The character name or ID used for the avatar.
- *
+ *
* @return the character value.
*/
@Generated
@@ -147,7 +147,7 @@ public String getCharacter() {
/**
* Get the style property: Optional avatar style, such as emotional tone or speaking style.
- *
+ *
* @return the style value.
*/
@Generated
@@ -157,7 +157,7 @@ public String getStyle() {
/**
* Set the style property: Optional avatar style, such as emotional tone or speaking style.
- *
+ *
* @param style the style value to set.
* @return the AvatarOptions object itself.
*/
@@ -169,7 +169,7 @@ public AvatarOptions setStyle(String style) {
/**
* Get the model property: Base model to use for the avatar. Required for photo avatar.
- *
+ *
* @return the model value.
*/
@Generated
@@ -179,7 +179,7 @@ public PhotoAvatarBaseModes getModel() {
/**
* Set the model property: Base model to use for the avatar. Required for photo avatar.
- *
+ *
* @param model the model value to set.
* @return the AvatarOptions object itself.
*/
@@ -191,7 +191,7 @@ public AvatarOptions setModel(PhotoAvatarBaseModes model) {
/**
* Get the customized property: Indicates whether the avatar is customized or not.
- *
+ *
* @return the customized value.
*/
@Generated
@@ -201,7 +201,7 @@ public boolean isCustomized() {
/**
* Get the video property: Optional video configuration including resolution, bitrate, and codec.
- *
+ *
* @return the video value.
*/
@Generated
@@ -211,7 +211,7 @@ public VideoParams getVideo() {
/**
* Set the video property: Optional video configuration including resolution, bitrate, and codec.
- *
+ *
* @param video the video value to set.
* @return the AvatarOptions object itself.
*/
@@ -224,7 +224,7 @@ public AvatarOptions setVideo(VideoParams video) {
/**
* Get the scene property: Configuration for the avatar's zoom level, position, rotation and movement amplitude in
* the video frame.
- *
+ *
* @return the scene value.
*/
@Generated
@@ -235,7 +235,7 @@ public Scene getScene() {
/**
* Set the scene property: Configuration for the avatar's zoom level, position, rotation and movement amplitude in
* the video frame.
- *
+ *
* @param scene the scene value to set.
* @return the AvatarOptions object itself.
*/
@@ -247,7 +247,7 @@ public AvatarOptions setScene(Scene scene) {
/**
* Get the outputProtocol property: Output protocol for avatar streaming. Default is 'webrtc'.
- *
+ *
* @return the outputProtocol value.
*/
@Generated
@@ -257,7 +257,7 @@ public AvatarOutputProtocol getOutputProtocol() {
/**
* Set the outputProtocol property: Output protocol for avatar streaming. Default is 'webrtc'.
- *
+ *
* @param outputProtocol the outputProtocol value to set.
* @return the AvatarOptions object itself.
*/
@@ -270,7 +270,7 @@ public AvatarOptions setOutputProtocol(AvatarOutputProtocol outputProtocol) {
/**
* Get the outputAuditAudio property: When enabled, forwards audit audio via WebSocket for review/debugging
* purposes, even when avatar output is delivered via WebRTC.
- *
+ *
* @return the outputAuditAudio value.
*/
@Generated
@@ -281,7 +281,7 @@ public Boolean isOutputAuditAudio() {
/**
* Set the outputAuditAudio property: When enabled, forwards audit audio via WebSocket for review/debugging
* purposes, even when avatar output is delivered via WebRTC.
- *
+ *
* @param outputAuditAudio the outputAuditAudio value to set.
* @return the AvatarOptions object itself.
*/
@@ -314,7 +314,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
/**
* Reads an instance of AvatarOptions from the JsonReader.
- *
+ *
* @param jsonReader The JsonReader being read.
* @return An instance of AvatarOptions if the JsonReader was pointing to an instance of it, or null if it was
* pointing to JSON null.
@@ -337,7 +337,6 @@ public static AvatarOptions fromJson(JsonReader jsonReader) throws IOException {
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
-
if ("character".equals(fieldName)) {
character = reader.getString();
} else if ("customized".equals(fieldName)) {
@@ -371,7 +370,6 @@ public static AvatarOptions fromJson(JsonReader jsonReader) throws IOException {
deserializedAvatarOptions.scene = scene;
deserializedAvatarOptions.outputProtocol = outputProtocol;
deserializedAvatarOptions.outputAuditAudio = outputAuditAudio;
-
return deserializedAvatarOptions;
});
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpApprovalResponseRequestItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpApprovalResponseRequestItem.java
index 3bcb7b491abc..c113fac98f22 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpApprovalResponseRequestItem.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpApprovalResponseRequestItem.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.voicelive.models;
import com.azure.core.annotation.Fluent;
@@ -16,6 +15,7 @@
*/
@Fluent
public final class McpApprovalResponseRequestItem extends ConversationRequestItem {
+
/*
* The type property.
*/
@@ -36,7 +36,7 @@ public final class McpApprovalResponseRequestItem extends ConversationRequestIte
/**
* Creates an instance of McpApprovalResponseRequestItem class.
- *
+ *
* @param approvalRequestId the approvalRequestId value to set.
* @param approve the approve value to set.
*/
@@ -48,7 +48,7 @@ public McpApprovalResponseRequestItem(String approvalRequestId, boolean approve)
/**
* Get the type property: The type property.
- *
+ *
* @return the type value.
*/
@Generated
@@ -59,7 +59,7 @@ public ItemType getType() {
/**
* Get the approvalRequestId property: The ID of the approval request.
- *
+ *
* @return the approvalRequestId value.
*/
@Generated
@@ -69,7 +69,7 @@ public String getApprovalRequestId() {
/**
* Get the approve property: Whether the tool call was approved.
- *
+ *
* @return the approve value.
*/
@Generated
@@ -103,7 +103,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
/**
* Reads an instance of McpApprovalResponseRequestItem from the JsonReader.
- *
+ *
* @param jsonReader The JsonReader being read.
* @return An instance of McpApprovalResponseRequestItem if the JsonReader was pointing to an instance of it, or
* null if it was pointing to JSON null.
@@ -120,7 +120,6 @@ public static McpApprovalResponseRequestItem fromJson(JsonReader jsonReader) thr
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)) {
@@ -137,7 +136,6 @@ public static McpApprovalResponseRequestItem fromJson(JsonReader jsonReader) thr
= new McpApprovalResponseRequestItem(approvalRequestId, approve);
deserializedMcpApprovalResponseRequestItem.setId(id);
deserializedMcpApprovalResponseRequestItem.type = type;
-
return deserializedMcpApprovalResponseRequestItem;
});
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpApprovalType.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpApprovalType.java
index 79332fc7ae4e..334439ed1cba 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpApprovalType.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpApprovalType.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.voicelive.models;
import com.azure.core.annotation.Generated;
@@ -12,6 +11,7 @@
* The available set of MCP approval types.
*/
public final class McpApprovalType extends ExpandableStringEnum {
+
/**
* Approval is never required.
*/
@@ -26,7 +26,7 @@ public final class McpApprovalType extends ExpandableStringEnum
/**
* Creates a new instance of McpApprovalType value.
- *
+ *
* @deprecated Use the {@link #fromString(String)} factory method.
*/
@Generated
@@ -36,7 +36,7 @@ public McpApprovalType() {
/**
* Creates or finds a McpApprovalType from its string representation.
- *
+ *
* @param name a name to look for.
* @return the corresponding McpApprovalType.
*/
@@ -47,7 +47,7 @@ public static McpApprovalType fromString(String name) {
/**
* Gets known McpApprovalType values.
- *
+ *
* @return known McpApprovalType values.
*/
@Generated
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpServer.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpServer.java
index 3d4b2394cd3c..e40e012fd8fc 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpServer.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpServer.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.voicelive.models;
import com.azure.core.annotation.Fluent;
@@ -19,6 +18,7 @@
*/
@Fluent
public final class McpServer extends VoiceLiveToolDefinition {
+
/*
* The type property.
*/
@@ -63,7 +63,7 @@ public final class McpServer extends VoiceLiveToolDefinition {
/**
* Creates an instance of McpServer class.
- *
+ *
* @param serverLabel the serverLabel value to set.
* @param serverUrl the serverUrl value to set.
*/
@@ -75,7 +75,7 @@ public McpServer(String serverLabel, String serverUrl) {
/**
* Get the type property: The type property.
- *
+ *
* @return the type value.
*/
@Generated
@@ -86,7 +86,7 @@ public ToolType getType() {
/**
* Get the serverLabel property: The server_label property.
- *
+ *
* @return the serverLabel value.
*/
@Generated
@@ -96,7 +96,7 @@ public String getServerLabel() {
/**
* Get the serverUrl property: The server_url property.
- *
+ *
* @return the serverUrl value.
*/
@Generated
@@ -106,7 +106,7 @@ public String getServerUrl() {
/**
* Get the authorization property: The authorization property.
- *
+ *
* @return the authorization value.
*/
@Generated
@@ -116,7 +116,7 @@ public String getAuthorization() {
/**
* Set the authorization property: The authorization property.
- *
+ *
* @param authorization the authorization value to set.
* @return the McpServer object itself.
*/
@@ -128,7 +128,7 @@ public McpServer setAuthorization(String authorization) {
/**
* Get the headers property: The headers property.
- *
+ *
* @return the headers value.
*/
@Generated
@@ -138,7 +138,7 @@ public Map getHeaders() {
/**
* Set the headers property: The headers property.
- *
+ *
* @param headers the headers value to set.
* @return the McpServer object itself.
*/
@@ -150,7 +150,7 @@ public McpServer setHeaders(Map headers) {
/**
* Get the allowedTools property: The allowed_tools property.
- *
+ *
* @return the allowedTools value.
*/
@Generated
@@ -160,7 +160,7 @@ public List getAllowedTools() {
/**
* Set the allowedTools property: The allowed_tools property.
- *
+ *
* @param allowedTools the allowedTools value to set.
* @return the McpServer object itself.
*/
@@ -172,7 +172,7 @@ public McpServer setAllowedTools(List allowedTools) {
/**
* Get the requireApproval property: The require_approval property.
- *
+ *
* @return the requireApproval value.
*/
@Generated
@@ -182,7 +182,7 @@ public BinaryData getRequireApproval() {
/**
* Set the requireApproval property: The require_approval property.
- *
+ *
* @param requireApproval the requireApproval value to set.
* @return the McpServer object itself.
*/
@@ -215,7 +215,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
/**
* Reads an instance of McpServer from the JsonReader.
- *
+ *
* @param jsonReader The JsonReader being read.
* @return An instance of McpServer if the JsonReader was pointing to an instance of it, or null if it was pointing
* to JSON null.
@@ -235,7 +235,6 @@ public static McpServer fromJson(JsonReader jsonReader) throws IOException {
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
-
if ("server_label".equals(fieldName)) {
serverLabel = reader.getString();
} else if ("server_url".equals(fieldName)) {
@@ -261,7 +260,6 @@ public static McpServer fromJson(JsonReader jsonReader) throws IOException {
deserializedMcpServer.headers = headers;
deserializedMcpServer.allowedTools = allowedTools;
deserializedMcpServer.requireApproval = requireApproval;
-
return deserializedMcpServer;
});
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpTool.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpTool.java
index c8b298df60ec..ba8719b6933b 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpTool.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/McpTool.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.voicelive.models;
import com.azure.core.annotation.Generated;
@@ -18,6 +17,7 @@
*/
@Immutable
public final class McpTool implements JsonSerializable {
+
/*
* The name of the tool.
*/
@@ -44,7 +44,7 @@ public final class McpTool implements JsonSerializable {
/**
* Creates an instance of McpTool class.
- *
+ *
* @param name the name value to set.
* @param inputSchema the inputSchema value to set.
*/
@@ -56,7 +56,7 @@ private McpTool(String name, BinaryData inputSchema) {
/**
* Get the name property: The name of the tool.
- *
+ *
* @return the name value.
*/
@Generated
@@ -66,7 +66,7 @@ public String getName() {
/**
* Get the description property: The description of the tool.
- *
+ *
* @return the description value.
*/
@Generated
@@ -76,7 +76,7 @@ public String getDescription() {
/**
* Get the inputSchema property: The input schema for the tool.
- *
+ *
* @return the inputSchema value.
*/
@Generated
@@ -86,7 +86,7 @@ public BinaryData getInputSchema() {
/**
* Get the annotations property: The annotations for the tool.
- *
+ *
* @return the annotations value.
*/
@Generated
@@ -114,7 +114,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
/**
* Reads an instance of McpTool from the JsonReader.
- *
+ *
* @param jsonReader The JsonReader being read.
* @return An instance of McpTool if the JsonReader was pointing to an instance of it, or null if it was pointing to
* JSON null.
@@ -131,7 +131,6 @@ public static McpTool fromJson(JsonReader jsonReader) throws IOException {
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)) {
@@ -149,7 +148,6 @@ public static McpTool fromJson(JsonReader jsonReader) throws IOException {
McpTool deserializedMcpTool = new McpTool(name, inputSchema);
deserializedMcpTool.description = description;
deserializedMcpTool.annotations = annotations;
-
return deserializedMcpTool;
});
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalRequestItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalRequestItem.java
index 1706fda44404..1d7899d7432d 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalRequestItem.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalRequestItem.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.voicelive.models;
import com.azure.core.annotation.Generated;
@@ -16,6 +15,7 @@
*/
@Immutable
public final class ResponseMcpApprovalRequestItem extends SessionResponseItem {
+
/*
* The type property.
*/
@@ -42,7 +42,7 @@ public final class ResponseMcpApprovalRequestItem extends SessionResponseItem {
/**
* Creates an instance of ResponseMcpApprovalRequestItem class.
- *
+ *
* @param name the name value to set.
* @param serverLabel the serverLabel value to set.
*/
@@ -54,7 +54,7 @@ private ResponseMcpApprovalRequestItem(String name, String serverLabel) {
/**
* Get the type property: The type property.
- *
+ *
* @return the type value.
*/
@Generated
@@ -65,7 +65,7 @@ public ItemType getType() {
/**
* Get the arguments property: The arguments for the tool call.
- *
+ *
* @return the arguments value.
*/
@Generated
@@ -75,7 +75,7 @@ public String getArguments() {
/**
* Get the name property: The name of the tool to call.
- *
+ *
* @return the name value.
*/
@Generated
@@ -85,7 +85,7 @@ public String getName() {
/**
* Get the serverLabel property: The label of the server that provides the tool.
- *
+ *
* @return the serverLabel value.
*/
@Generated
@@ -111,7 +111,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
/**
* Reads an instance of ResponseMcpApprovalRequestItem from the JsonReader.
- *
+ *
* @param jsonReader The JsonReader being read.
* @return An instance of ResponseMcpApprovalRequestItem if the JsonReader was pointing to an instance of it, or
* null if it was pointing to JSON null.
@@ -130,7 +130,6 @@ public static ResponseMcpApprovalRequestItem fromJson(JsonReader jsonReader) thr
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
-
if ("id".equals(fieldName)) {
id = reader.getString();
} else if ("object".equals(fieldName)) {
@@ -153,7 +152,6 @@ public static ResponseMcpApprovalRequestItem fromJson(JsonReader jsonReader) thr
deserializedResponseMcpApprovalRequestItem.setObject(object);
deserializedResponseMcpApprovalRequestItem.type = type;
deserializedResponseMcpApprovalRequestItem.arguments = arguments;
-
return deserializedResponseMcpApprovalRequestItem;
});
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalResponseItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalResponseItem.java
index 9e5fa88f02c4..d791b5e88715 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalResponseItem.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalResponseItem.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.voicelive.models;
import com.azure.core.annotation.Generated;
@@ -16,6 +15,7 @@
*/
@Immutable
public final class ResponseMcpApprovalResponseItem extends SessionResponseItem {
+
/*
* The type property.
*/
@@ -42,7 +42,7 @@ public final class ResponseMcpApprovalResponseItem extends SessionResponseItem {
/**
* Creates an instance of ResponseMcpApprovalResponseItem class.
- *
+ *
* @param approvalRequestId the approvalRequestId value to set.
* @param approve the approve value to set.
*/
@@ -54,7 +54,7 @@ private ResponseMcpApprovalResponseItem(String approvalRequestId, boolean approv
/**
* Get the type property: The type property.
- *
+ *
* @return the type value.
*/
@Generated
@@ -65,7 +65,7 @@ public ItemType getType() {
/**
* Get the approvalRequestId property: The ID of the approval request.
- *
+ *
* @return the approvalRequestId value.
*/
@Generated
@@ -75,7 +75,7 @@ public String getApprovalRequestId() {
/**
* Get the approve property: Whether the tool call was approved.
- *
+ *
* @return the approve value.
*/
@Generated
@@ -85,7 +85,7 @@ public boolean isApprove() {
/**
* Get the reason property: The reason for the approval decision.
- *
+ *
* @return the reason value.
*/
@Generated
@@ -111,7 +111,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
/**
* Reads an instance of ResponseMcpApprovalResponseItem from the JsonReader.
- *
+ *
* @param jsonReader The JsonReader being read.
* @return An instance of ResponseMcpApprovalResponseItem if the JsonReader was pointing to an instance of it, or
* null if it was pointing to JSON null.
@@ -130,7 +130,6 @@ public static ResponseMcpApprovalResponseItem fromJson(JsonReader jsonReader) th
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
-
if ("id".equals(fieldName)) {
id = reader.getString();
} else if ("object".equals(fieldName)) {
@@ -153,7 +152,6 @@ public static ResponseMcpApprovalResponseItem fromJson(JsonReader jsonReader) th
deserializedResponseMcpApprovalResponseItem.setObject(object);
deserializedResponseMcpApprovalResponseItem.type = type;
deserializedResponseMcpApprovalResponseItem.reason = reason;
-
return deserializedResponseMcpApprovalResponseItem;
});
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpCallItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpCallItem.java
index a72da8d677cf..f504b722ce0e 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpCallItem.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpCallItem.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.voicelive.models;
import com.azure.core.annotation.Generated;
@@ -17,6 +16,7 @@
*/
@Immutable
public final class ResponseMcpCallItem extends SessionResponseItem {
+
/*
* The type property.
*/
@@ -61,7 +61,7 @@ public final class ResponseMcpCallItem extends SessionResponseItem {
/**
* Creates an instance of ResponseMcpCallItem class.
- *
+ *
* @param arguments the arguments value to set.
* @param serverLabel the serverLabel value to set.
* @param name the name value to set.
@@ -75,7 +75,7 @@ private ResponseMcpCallItem(String arguments, String serverLabel, String name) {
/**
* Get the type property: The type property.
- *
+ *
* @return the type value.
*/
@Generated
@@ -86,7 +86,7 @@ public ItemType getType() {
/**
* Get the approvalRequestId property: The ID of the approval request, if any.
- *
+ *
* @return the approvalRequestId value.
*/
@Generated
@@ -96,7 +96,7 @@ public String getApprovalRequestId() {
/**
* Get the arguments property: The arguments for the tool call.
- *
+ *
* @return the arguments value.
*/
@Generated
@@ -106,7 +106,7 @@ public String getArguments() {
/**
* Get the serverLabel property: The label of the server that provides the tool.
- *
+ *
* @return the serverLabel value.
*/
@Generated
@@ -116,7 +116,7 @@ public String getServerLabel() {
/**
* Get the name property: The name of the tool to call.
- *
+ *
* @return the name value.
*/
@Generated
@@ -126,7 +126,7 @@ public String getName() {
/**
* Get the output property: The output of the tool call.
- *
+ *
* @return the output value.
*/
@Generated
@@ -136,7 +136,7 @@ public String getOutput() {
/**
* Get the error property: The error, if any, from the tool call.
- *
+ *
* @return the error value.
*/
@Generated
@@ -168,7 +168,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
/**
* Reads an instance of ResponseMcpCallItem from the JsonReader.
- *
+ *
* @param jsonReader The JsonReader being read.
* @return An instance of ResponseMcpCallItem if the JsonReader was pointing to an instance of it, or null if it was
* pointing to JSON null.
@@ -190,7 +190,6 @@ public static ResponseMcpCallItem fromJson(JsonReader jsonReader) throws IOExcep
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
-
if ("id".equals(fieldName)) {
id = reader.getString();
} else if ("object".equals(fieldName)) {
@@ -220,7 +219,6 @@ public static ResponseMcpCallItem fromJson(JsonReader jsonReader) throws IOExcep
deserializedResponseMcpCallItem.approvalRequestId = approvalRequestId;
deserializedResponseMcpCallItem.output = output;
deserializedResponseMcpCallItem.error = error;
-
return deserializedResponseMcpCallItem;
});
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpListToolItem.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpListToolItem.java
index 9506c701a91c..c245a22de9ef 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpListToolItem.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseMcpListToolItem.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.voicelive.models;
import com.azure.core.annotation.Generated;
@@ -17,6 +16,7 @@
*/
@Immutable
public final class ResponseMcpListToolItem extends SessionResponseItem {
+
/*
* The type property.
*/
@@ -37,7 +37,7 @@ public final class ResponseMcpListToolItem extends SessionResponseItem {
/**
* Creates an instance of ResponseMcpListToolItem class.
- *
+ *
* @param tools the tools value to set.
* @param serverLabel the serverLabel value to set.
*/
@@ -49,7 +49,7 @@ private ResponseMcpListToolItem(List tools, String serverLabel) {
/**
* Get the type property: The type property.
- *
+ *
* @return the type value.
*/
@Generated
@@ -60,7 +60,7 @@ public ItemType getType() {
/**
* Get the tools property: The tools available on the server.
- *
+ *
* @return the tools value.
*/
@Generated
@@ -70,7 +70,7 @@ public List getTools() {
/**
* Get the serverLabel property: The label of the server that provides the tools.
- *
+ *
* @return the serverLabel value.
*/
@Generated
@@ -95,7 +95,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
/**
* Reads an instance of ResponseMcpListToolItem from the JsonReader.
- *
+ *
* @param jsonReader The JsonReader being read.
* @return An instance of ResponseMcpListToolItem if the JsonReader was pointing to an instance of it, or null if it
* was pointing to JSON null.
@@ -113,7 +113,6 @@ public static ResponseMcpListToolItem fromJson(JsonReader jsonReader) throws IOE
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
-
if ("id".equals(fieldName)) {
id = reader.getString();
} else if ("object".equals(fieldName)) {
@@ -133,7 +132,6 @@ public static ResponseMcpListToolItem fromJson(JsonReader jsonReader) throws IOE
deserializedResponseMcpListToolItem.setId(id);
deserializedResponseMcpListToolItem.setObject(object);
deserializedResponseMcpListToolItem.type = type;
-
return deserializedResponseMcpListToolItem;
});
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionClientEvent.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionClientEvent.java
index 7e2629ea2c11..ff9125e59dd6 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionClientEvent.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionClientEvent.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.voicelive.models;
import com.azure.core.annotation.Fluent;
@@ -17,6 +16,7 @@
*/
@Fluent
public class SessionClientEvent implements JsonSerializable {
+
/*
* The type of event.
*/
@@ -38,7 +38,7 @@ public SessionClientEvent() {
/**
* Get the type property: The type of event.
- *
+ *
* @return the type value.
*/
@Generated
@@ -48,7 +48,7 @@ public ClientEventType getType() {
/**
* Get the eventId property: The event_id property.
- *
+ *
* @return the eventId value.
*/
@Generated
@@ -58,7 +58,7 @@ public String getEventId() {
/**
* Set the eventId property: The event_id property.
- *
+ *
* @param eventId the eventId value to set.
* @return the SessionClientEvent object itself.
*/
@@ -82,7 +82,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
/**
* Reads an instance of SessionClientEvent from the JsonReader.
- *
+ *
* @param jsonReader The JsonReader being read.
* @return An instance of SessionClientEvent if the JsonReader was pointing to an instance of it, or null if it was
* pointing to JSON null.
@@ -93,7 +93,8 @@ public static SessionClientEvent fromJson(JsonReader jsonReader) throws IOExcept
return jsonReader.readObject(reader -> {
String discriminatorValue = null;
try (JsonReader readerToUse = reader.bufferObject()) {
- readerToUse.nextToken(); // Prepare for reading
+ // Prepare for reading
+ readerToUse.nextToken();
while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
String fieldName = readerToUse.getFieldName();
readerToUse.nextToken();
@@ -153,7 +154,6 @@ static SessionClientEvent fromJsonKnownDiscriminator(JsonReader jsonReader) thro
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
-
if ("type".equals(fieldName)) {
deserializedSessionClientEvent.type = ClientEventType.fromString(reader.getString());
} else if ("event_id".equals(fieldName)) {
@@ -162,7 +162,6 @@ static SessionClientEvent fromJsonKnownDiscriminator(JsonReader jsonReader) thro
reader.skipChildren();
}
}
-
return deserializedSessionClientEvent;
});
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionServerEvent.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionServerEvent.java
index d9ade7b78ec2..5c9a352f4f49 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionServerEvent.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/SessionServerEvent.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.voicelive.models;
import com.azure.core.annotation.Generated;
@@ -17,6 +16,7 @@
*/
@Immutable
public class SessionServerEvent implements JsonSerializable {
+
/*
* The type of event.
*/
@@ -38,7 +38,7 @@ protected SessionServerEvent() {
/**
* Get the type property: The type of event.
- *
+ *
* @return the type value.
*/
@Generated
@@ -48,7 +48,7 @@ public ServerEventType getType() {
/**
* Get the eventId property: The event_id property.
- *
+ *
* @return the eventId value.
*/
@Generated
@@ -58,7 +58,7 @@ public String getEventId() {
/**
* Set the eventId property: The event_id property.
- *
+ *
* @param eventId the eventId value to set.
* @return the SessionServerEvent object itself.
*/
@@ -82,7 +82,7 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
/**
* Reads an instance of SessionServerEvent from the JsonReader.
- *
+ *
* @param jsonReader The JsonReader being read.
* @return An instance of SessionServerEvent if the JsonReader was pointing to an instance of it, or null if it was
* pointing to JSON null.
@@ -93,7 +93,8 @@ public static SessionServerEvent fromJson(JsonReader jsonReader) throws IOExcept
return jsonReader.readObject(reader -> {
String discriminatorValue = null;
try (JsonReader readerToUse = reader.bufferObject()) {
- readerToUse.nextToken(); // Prepare for reading
+ // Prepare for reading
+ readerToUse.nextToken();
while (readerToUse.nextToken() != JsonToken.END_OBJECT) {
String fieldName = readerToUse.getFieldName();
readerToUse.nextToken();
@@ -229,7 +230,6 @@ static SessionServerEvent fromJsonKnownDiscriminator(JsonReader jsonReader) thro
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
-
if ("type".equals(fieldName)) {
deserializedSessionServerEvent.type = ServerEventType.fromString(reader.getString());
} else if ("event_id".equals(fieldName)) {
@@ -238,7 +238,6 @@ static SessionServerEvent fromJsonKnownDiscriminator(JsonReader jsonReader) thro
reader.skipChildren();
}
}
-
return deserializedSessionServerEvent;
});
}
From c813ef4cd883ea0ce0c902da20e97563825c87b1 Mon Sep 17 00:00:00 2001
From: Xiting Zhang
Date: Tue, 19 May 2026 17:58:57 -0700
Subject: [PATCH 08/13] Remove byte[] overload of appendAudioToTurn; keep
BinaryData variant
Per reviewer feedback: callers with raw bytes can wrap with BinaryData.fromBytes(byte[]). Javadoc updated to mention this.
---
.../VoiceLiveSessionAsyncClient.java | 20 +++++--------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java
index c28de05ef4cb..2cc2160ec104 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java
@@ -575,37 +575,27 @@ public Mono startAudioTurn(String turnId) {
/**
* Appends audio data to an ongoing input turn.
+ *
+ * To append a raw byte array, wrap it with {@link BinaryData#fromBytes(byte[])}.
+ *
*
* @param turnId The ID of the turn this audio is part of.
* @param audio The audio data to append.
* @return A Mono that completes when the audio is appended.
* @throws IllegalArgumentException if turnId is null or empty, or audio is null.
*/
- public Mono appendAudioToTurn(String turnId, byte[] audio) {
+ public Mono appendAudioToTurn(String turnId, BinaryData audio) {
if (turnId == null || turnId.isEmpty()) {
return Mono.error(new IllegalArgumentException("'turnId' cannot be null or empty"));
}
Objects.requireNonNull(audio, "'audio' cannot be null");
throwIfNotConnected();
- String base64Audio = Base64.getEncoder().encodeToString(audio);
+ String base64Audio = Base64.getEncoder().encodeToString(audio.toBytes());
ClientEventInputAudioTurnAppend appendCommand = new ClientEventInputAudioTurnAppend(turnId, base64Audio);
return sendEvent(appendCommand);
}
- /**
- * Appends audio data to an ongoing input turn.
- *
- * @param turnId The ID of the turn this audio is part of.
- * @param audio The audio data to append.
- * @return A Mono that completes when the audio is appended.
- * @throws IllegalArgumentException if turnId is null or empty, or audio is null.
- */
- public Mono appendAudioToTurn(String turnId, BinaryData audio) {
- Objects.requireNonNull(audio, "'audio' cannot be null");
- return appendAudioToTurn(turnId, audio.toBytes());
- }
-
/**
* Marks the end of an audio input turn.
*
From 36b7b4c50149c77ea9c6da6412f2d7109d4304d1 Mon Sep 17 00:00:00 2001
From: Xiting Zhang
Date: Wed, 27 May 2026 16:37:26 -0700
Subject: [PATCH 09/13] Restore VoiceLiveRequestOptions startSession overloads
---
sdk/voicelive/azure-ai-voicelive/CHANGELOG.md | 4 +
sdk/voicelive/azure-ai-voicelive/README.md | 28 ++-
.../ai/voicelive/VoiceLiveAsyncClient.java | 184 +++---------------
.../VoiceLiveSessionAsyncClient.java | 5 +-
.../voicelive/models/AgentSessionConfig.java | 2 +-
.../com/azure/ai/voicelive/AgentV2Sample.java | 2 +-
.../ai/voicelive/AudioPlaybackSample.java | 2 +-
.../BasicVoiceConversationSample.java | 5 +-
.../ai/voicelive/FunctionCallingSample.java | 2 +-
.../com/azure/ai/voicelive/McpSample.java | 2 +-
.../ai/voicelive/MicrophoneInputSample.java | 2 +-
.../com/azure/ai/voicelive/ReadmeSamples.java | 24 +--
.../ai/voicelive/VoiceAssistantSample.java | 2 +-
.../telemetry/GlobalTracingSample.java | 2 +-
.../voicelive/VoiceLiveAsyncClientTest.java | 41 ++--
.../livetests/VoiceLiveAudioFormatTests.java | 8 +-
.../livetests/VoiceLiveAudioTests.java | 4 +-
.../livetests/VoiceLiveConversationTests.java | 4 +-
.../livetests/VoiceLiveSessionTests.java | 2 +-
.../livetests/VoiceLiveToolCallTests.java | 8 +-
.../VoiceLiveTranscriptionTests.java | 4 +-
.../VoiceLiveTurnDetectionTests.java | 6 +-
.../VoiceLiveVoicePropertiesTests.java | 4 +-
23 files changed, 126 insertions(+), 221 deletions(-)
diff --git a/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md b/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md
index 908659614339..d359a2ebfe19 100644
--- a/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md
+++ b/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md
@@ -6,6 +6,10 @@ This is the first General Availability (GA) release of the Azure VoiceLive clien
### Breaking Changes
+- Narrowed `VoiceLiveAsyncClient` session startup to three overloads:
+ - `startSession()`
+ - `startSession(String, VoiceLiveRequestOptions)`
+ - `startSession(AgentSessionConfig, VoiceLiveRequestOptions)`
- Renamed base event types for client↔server symmetry:
- `ClientEvent` (base for outbound events) → `SessionClientEvent`
- `SessionUpdate` (base for inbound events) → `SessionServerEvent`
diff --git a/sdk/voicelive/azure-ai-voicelive/README.md b/sdk/voicelive/azure-ai-voicelive/README.md
index 07ebd0cbdd7d..97d440ad9504 100644
--- a/sdk/voicelive/azure-ai-voicelive/README.md
+++ b/sdk/voicelive/azure-ai-voicelive/README.md
@@ -193,13 +193,23 @@ For easier learning, explore these focused samples in order:
> ```
> These samples use `javax.sound.sampled` for audio I/O.
+### Session startup overloads
+
+`VoiceLiveAsyncClient` exposes three session-start overloads:
+
+- `startSession()`
+- `startSession(String model, VoiceLiveRequestOptions options)`
+- `startSession(AgentSessionConfig agentConfig, VoiceLiveRequestOptions options)`
+
+Pass `null` for `VoiceLiveRequestOptions` in the samples below when you do not need to provide one.
+
### Simple voice assistant
Create a basic voice assistant session:
```java com.azure.ai.voicelive.simple.session
-// Start session with default options
-client.startSession("gpt-realtime")
+// Start session with a specific model; pass null when no VoiceLiveRequestOptions value is needed
+client.startSession("gpt-realtime", null)
.flatMap(session -> {
System.out.println("Session started");
@@ -243,8 +253,8 @@ VoiceLiveSessionOptions options = new VoiceLiveSessionOptions()
.setInputAudioTranscription(transcription)
.setTurnDetection(turnDetection);
-// Start session with options
-client.startSession("gpt-realtime")
+// Start session and then send session configuration
+client.startSession("gpt-realtime", null)
.flatMap(session -> {
// Send session configuration
ClientEventSessionUpdate updateEvent = new ClientEventSessionUpdate(options);
@@ -370,7 +380,7 @@ VoiceLiveSessionOptions options = new VoiceLiveSessionOptions()
.setInstructions("You have access to weather information. Use get_current_weather when asked about weather.");
// 3. Handle function call events
-client.startSession("gpt-realtime")
+client.startSession("gpt-realtime", null)
.flatMap(session -> {
return session.receiveEvents()
.doOnNext(event -> {
@@ -464,13 +474,13 @@ Connect directly to an Azure AI Foundry agent using `AgentSessionConfig`. The ag
AgentSessionConfig agentConfig = new AgentSessionConfig("my-agent", "my-project")
.setAgentVersion("1.0");
-// Start session with agent config (uses DefaultAzureCredential)
+// Start session with agent config; pass null when no VoiceLiveRequestOptions value is needed
VoiceLiveAsyncClient client = new VoiceLiveClientBuilder()
.endpoint(endpoint)
.credential(new DefaultAzureCredentialBuilder().build())
.buildAsyncClient();
-client.startSession(agentConfig)
+client.startSession(agentConfig, null)
.flatMap(session -> {
return session.receiveEvents()
.doOnNext(event -> handleEvent(event))
@@ -596,8 +606,8 @@ VoiceLiveSessionOptions sessionOptions = new VoiceLiveSessionOptions()
.setInputAudioTranscription(transcriptionOptions)
.setTurnDetection(turnDetection);
-// Start session and handle events
-client.startSession("gpt-4o-realtime-preview")
+// Start session (null VoiceLiveRequestOptions), then handle events
+client.startSession("gpt-4o-realtime-preview", null)
.flatMap(session -> {
// Subscribe to receive server events
session.receiveEvents()
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveAsyncClient.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveAsyncClient.java
index 1fc77dffb1f7..f48584f88806 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveAsyncClient.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveAsyncClient.java
@@ -60,69 +60,21 @@ public final class VoiceLiveAsyncClient {
* @return A Mono containing the connected VoiceLiveSessionAsyncClient.
*/
public Mono startSession() {
- return Mono.fromCallable(() -> convertToWebSocketEndpoint(endpoint, null)).flatMap(wsEndpoint -> {
- VoiceLiveSessionAsyncClient session = createSessionClient(wsEndpoint, null, null);
- return session.connect(additionalHeaders).thenReturn(session);
- });
- }
-
- /**
- * Starts a new VoiceLiveSessionAsyncClient for real-time voice communication.
- *
- * @param model The model to use for the session.
- * @return A Mono containing the connected VoiceLiveSessionAsyncClient.
- * @throws NullPointerException if {@code model} is null.
- */
- public Mono startSession(String model) {
- Objects.requireNonNull(model, "'model' cannot be null");
-
- return Mono.fromCallable(() -> convertToWebSocketEndpoint(endpoint, model)).flatMap(wsEndpoint -> {
- VoiceLiveSessionAsyncClient session = createSessionClient(wsEndpoint, model, null);
- return session.connect(additionalHeaders).thenReturn(session);
- });
+ return startSessionInternal(null, null, null);
}
/**
* Starts a new VoiceLiveSessionAsyncClient for real-time voice communication with custom request options.
*
* @param model The model to use for the session.
- * @param requestOptions Custom query parameters and headers for the request.
+ * @param requestOptions Custom query parameters and headers for the request. May be null.
* @return A Mono containing the connected VoiceLiveSessionAsyncClient.
- * @throws NullPointerException if {@code model} or {@code requestOptions} is null.
+ * @throws NullPointerException if {@code model} is null.
*/
public Mono startSession(String model, VoiceLiveRequestOptions requestOptions) {
Objects.requireNonNull(model, "'model' cannot be null");
- Objects.requireNonNull(requestOptions, "'requestOptions' cannot be null");
-
- return Mono
- .fromCallable(() -> convertToWebSocketEndpoint(endpoint, model, requestOptions.getCustomQueryParameters()))
- .flatMap(wsEndpoint -> {
- VoiceLiveSessionAsyncClient session = createSessionClient(wsEndpoint, model, null);
- // Merge additional headers with custom headers from requestOptions
- HttpHeaders mergedHeaders = mergeHeaders(additionalHeaders, requestOptions.getCustomHeaders());
- return session.connect(mergedHeaders).thenReturn(session);
- });
- }
- /**
- * Starts a new VoiceLiveSessionAsyncClient for real-time voice communication with custom request options.
- * The model can be provided via custom query parameters.
- *
- * @param requestOptions Custom query parameters and headers for the request.
- * @return A Mono containing the connected VoiceLiveSessionAsyncClient.
- * @throws NullPointerException if {@code requestOptions} is null.
- */
- public Mono startSession(VoiceLiveRequestOptions requestOptions) {
- Objects.requireNonNull(requestOptions, "'requestOptions' cannot be null");
-
- return Mono
- .fromCallable(() -> convertToWebSocketEndpoint(endpoint, null, requestOptions.getCustomQueryParameters()))
- .flatMap(wsEndpoint -> {
- VoiceLiveSessionAsyncClient session = createSessionClient(wsEndpoint, null, null);
- // Merge additional headers with custom headers from requestOptions
- HttpHeaders mergedHeaders = mergeHeaders(additionalHeaders, requestOptions.getCustomHeaders());
- return session.connect(mergedHeaders).thenReturn(session);
- });
+ return startSessionInternal(model, null, requestOptions);
}
/**
@@ -133,49 +85,46 @@ public Mono startSession(VoiceLiveRequestOptions re
*
* @param agentConfig The agent session configuration containing the agent name, project name,
* and optional parameters.
+ * @param requestOptions Custom query parameters and headers for the request. May be null.
* @return A Mono containing the connected VoiceLiveSessionAsyncClient.
* @throws NullPointerException if {@code agentConfig} is null.
*/
- public Mono startSession(AgentSessionConfig agentConfig) {
+ public Mono startSession(AgentSessionConfig agentConfig,
+ VoiceLiveRequestOptions requestOptions) {
Objects.requireNonNull(agentConfig, "'agentConfig' cannot be null");
- return Mono.fromCallable(() -> convertToWebSocketEndpoint(endpoint, null, toQueryParameters(agentConfig)))
- .flatMap(wsEndpoint -> {
- VoiceLiveSessionAsyncClient session = createSessionClient(wsEndpoint, null, agentConfig);
- return session.connect(additionalHeaders).thenReturn(session);
- });
+ return startSessionInternal(null, agentConfig, requestOptions);
}
/**
- * Starts a new VoiceLiveSessionAsyncClient for real-time voice communication with an Azure AI Foundry agent
- * and custom request options.
- *
- * This method configures the session to connect directly to an Azure AI Foundry agent,
- * combining the agent configuration with additional custom options.
+ * Starts a new VoiceLiveSessionAsyncClient for real-time voice communication.
*
- * @param agentConfig The agent session configuration containing the agent name, project name,
- * and optional parameters.
- * @param requestOptions Custom query parameters and headers for the request.
+ * @param model The model name to use for the session, or null.
+ * @param agentConfig The agent session configuration to use for the session, or null.
+ * @param requestOptions Custom query parameters and headers for the request, or null.
* @return A Mono containing the connected VoiceLiveSessionAsyncClient.
- * @throws NullPointerException if {@code agentConfig} or {@code requestOptions} is null.
*/
- public Mono startSession(AgentSessionConfig agentConfig,
+ private Mono startSessionInternal(String model, AgentSessionConfig agentConfig,
VoiceLiveRequestOptions requestOptions) {
- Objects.requireNonNull(agentConfig, "'agentConfig' cannot be null");
- Objects.requireNonNull(requestOptions, "'requestOptions' cannot be null");
+ Map queryParameters
+ = agentConfig == null ? new LinkedHashMap<>() : new LinkedHashMap<>(toQueryParameters(agentConfig));
+ HttpHeaders mergedHeaders = additionalHeaders;
- // Merge agent config params with custom query params (custom params take precedence)
- Map mergedParams = new LinkedHashMap<>(toQueryParameters(agentConfig));
- if (requestOptions.getCustomQueryParameters() != null) {
- mergedParams.putAll(requestOptions.getCustomQueryParameters());
+ if (requestOptions != null) {
+ if (requestOptions.getCustomQueryParameters() != null) {
+ queryParameters.putAll(requestOptions.getCustomQueryParameters());
+ }
+ mergedHeaders = mergeHeaders(additionalHeaders, requestOptions.getCustomHeaders());
}
- return Mono.fromCallable(() -> convertToWebSocketEndpoint(endpoint, null, mergedParams)).flatMap(wsEndpoint -> {
- VoiceLiveSessionAsyncClient session = createSessionClient(wsEndpoint, null, agentConfig);
- // Merge additional headers with custom headers from requestOptions
- HttpHeaders mergedHeaders = mergeHeaders(additionalHeaders, requestOptions.getCustomHeaders());
- return session.connect(mergedHeaders).thenReturn(session);
- });
+ final Map finalQueryParameters = queryParameters.isEmpty() ? null : queryParameters;
+ final HttpHeaders connectionHeaders = mergedHeaders;
+ final String sessionModel = model;
+ final AgentSessionConfig sessionAgentConfig = agentConfig;
+
+ URI wsEndpoint = convertToWebSocketEndpoint(endpoint, sessionModel, finalQueryParameters);
+ VoiceLiveSessionAsyncClient session = createSessionClient(wsEndpoint, sessionModel, sessionAgentConfig);
+ return session.connect(connectionHeaders).thenReturn(session);
}
/**
@@ -241,81 +190,6 @@ private HttpHeaders mergeHeaders(HttpHeaders baseHeaders, HttpHeaders customHead
return merged;
}
- /**
- * Converts an HTTP endpoint to a WebSocket endpoint.
- *
- * @param httpEndpoint The HTTP endpoint to convert.
- * @param model The model name to include in the query string.
- * @return The WebSocket endpoint URI.
- */
- private URI convertToWebSocketEndpoint(URI httpEndpoint, String model) {
- try {
- String scheme;
- switch (httpEndpoint.getScheme().toLowerCase()) {
- case "wss":
- case "ws":
- scheme = httpEndpoint.getScheme();
- break;
-
- case "https":
- scheme = "wss";
- break;
-
- case "http":
- scheme = "ws";
- break;
-
- default:
- throw LOGGER.logExceptionAsError(
- new IllegalArgumentException("Scheme " + httpEndpoint.getScheme() + " is not supported"));
- }
-
- String path = httpEndpoint.getPath();
- if (!path.endsWith("/realtime")) {
- path = path.replaceAll("/$", "") + "/voice-live/realtime";
- }
-
- // Build query parameter map to avoid duplicates
- Map queryParams = new LinkedHashMap<>();
-
- // Start with existing query parameters from the endpoint URL
- if (httpEndpoint.getQuery() != null && !httpEndpoint.getQuery().isEmpty()) {
- String[] pairs = httpEndpoint.getQuery().split("&");
- for (String pair : pairs) {
- int idx = pair.indexOf("=");
- if (idx > 0) {
- String key = pair.substring(0, idx);
- String value = pair.substring(idx + 1);
- queryParams.put(key, value);
- }
- }
- }
-
- // Ensure api-version is set (SDK's version takes precedence)
- queryParams.put("api-version", apiVersion);
-
- // Add model if provided (function parameter takes precedence)
- if (model != null && !model.isEmpty()) {
- queryParams.put("model", model);
- }
-
- // Build final query string
- StringBuilder queryBuilder = new StringBuilder();
- for (Map.Entry entry : queryParams.entrySet()) {
- if (queryBuilder.length() > 0) {
- queryBuilder.append("&");
- }
- queryBuilder.append(entry.getKey()).append("=").append(entry.getValue());
- }
-
- return new URI(scheme, httpEndpoint.getUserInfo(), httpEndpoint.getHost(), httpEndpoint.getPort(), path,
- queryBuilder.length() > 0 ? queryBuilder.toString() : null, httpEndpoint.getFragment());
- } catch (URISyntaxException e) {
- throw LOGGER
- .logExceptionAsError(new IllegalArgumentException("Failed to convert endpoint to WebSocket URI", e));
- }
- }
-
/**
* Converts an HTTP endpoint to a WebSocket endpoint with additional custom query parameters.
*
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java
index 2cc2160ec104..03b857abfca1 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/VoiceLiveSessionAsyncClient.java
@@ -68,7 +68,10 @@
* simultaneously sending and receiving WebSocket messages.
*
*
- * Users can obtain a VoiceLiveSessionAsyncClient instance from {@link VoiceLiveAsyncClient#startSession(String)} and work directly with it for optimal performance.
+ * Users can obtain a VoiceLiveSessionAsyncClient instance from {@link VoiceLiveAsyncClient#startSession()},
+ * {@link VoiceLiveAsyncClient#startSession(String, com.azure.ai.voicelive.models.VoiceLiveRequestOptions)}, or
+ * {@link VoiceLiveAsyncClient#startSession(com.azure.ai.voicelive.models.AgentSessionConfig,
+ * com.azure.ai.voicelive.models.VoiceLiveRequestOptions)} and work directly with it for optimal performance.
* Alternatively, users can use the convenience methods on {@link VoiceLiveAsyncClient} which delegate to
* the internal session.
*
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AgentSessionConfig.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AgentSessionConfig.java
index ad19a427f340..1ef05da09443 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AgentSessionConfig.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/AgentSessionConfig.java
@@ -20,7 +20,7 @@
* .setAgentVersion("1.0")
* .setConversationId("conv-123");
*
- * client.startSession(config).subscribe(session -> {
+ * client.startSession(config, null).subscribe(session -> {
* // Use the session
* });
* }
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AgentV2Sample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AgentV2Sample.java
index c91d52d8db64..80db8de02a96 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AgentV2Sample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AgentV2Sample.java
@@ -240,7 +240,7 @@ void start() {
.buildAsyncClient();
// Connect using AgentSessionConfig.
- client.startSession(agentConfig)
+ client.startSession(agentConfig, null)
.flatMapMany(voiceLiveSession -> {
System.out.println("Connected to VoiceLive service");
this.audioProcessor = new AudioProcessor(voiceLiveSession);
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AudioPlaybackSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AudioPlaybackSample.java
index c74bfa765404..9f7b43e8fec7 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AudioPlaybackSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/AudioPlaybackSample.java
@@ -142,7 +142,7 @@ public static void main(String[] args) {
final CountDownLatch completionLatch = new CountDownLatch(1);
// Open a WebSocket session against the realtime model.
- client.startSession("gpt-realtime")
+ client.startSession("gpt-realtime", null)
// Configure the session (voice, modalities, audio formats, instructions).
.flatMap(session -> {
ClientEventSessionUpdate updateEvent = new ClientEventSessionUpdate(sessionOptions);
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/BasicVoiceConversationSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/BasicVoiceConversationSample.java
index a598f6a608e5..7291330949f1 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/BasicVoiceConversationSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/BasicVoiceConversationSample.java
@@ -49,7 +49,7 @@
*
* Reactor pattern used by this sample:
* {@code
- * client.startSession(model)
+ * client.startSession(model, null)
* .flatMap(session -> session.sendEvent(sessionUpdate).thenReturn(session))
* .flatMap(session -> session.sendEvent(conversationItemCreate).thenReturn(session))
* .flatMap(session -> session.sendEvent(responseCreate).thenReturn(session))
@@ -117,7 +117,8 @@ public static void main(String[] args) {
final CountDownLatch completionLatch = new CountDownLatch(1);
// Open a WebSocket session against the realtime model.
- client.startSession("gpt-realtime")
+ // Pass null when no VoiceLiveRequestOptions value is needed.
+ client.startSession("gpt-realtime", null)
// Configure the session (text-only modality, instructions).
.flatMap(session -> {
ClientEventSessionUpdate updateEvent = new ClientEventSessionUpdate(sessionOptions);
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/FunctionCallingSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/FunctionCallingSample.java
index 74e9808d8355..4d02fb4c4125 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/FunctionCallingSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/FunctionCallingSample.java
@@ -164,7 +164,7 @@ private static void runFunctionCallingSession(VoiceLiveAsyncClient client) throw
// Start session. Session lifetime is local to this reactive chain — the session is
// captured by the lambda passed to flatMapMany and then threaded into per-event handling
// via flatMap, so no instance field or shared holder is needed.
- client.startSession(DEFAULT_MODEL)
+ client.startSession(DEFAULT_MODEL, null)
.flatMapMany(session -> {
System.out.println("✓ Session started successfully");
audioProcessorRef.set(new AudioProcessor(session));
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/McpSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/McpSample.java
index aa96a39befa1..d628045c5b51 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/McpSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/McpSample.java
@@ -152,7 +152,7 @@ private static void runMcpSample(String endpoint) {
// Start the session. Session lifetime is local to this reactive chain — the session is
// captured by the lambda passed to flatMapMany and then threaded into per-event handling
// via flatMap, so no instance field or shared holder is needed.
- client.startSession(DEFAULT_MODEL)
+ client.startSession(DEFAULT_MODEL, null)
.flatMapMany(session -> {
System.out.println("✓ Session started successfully");
audioProcessorRef.set(new AudioProcessor(session));
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MicrophoneInputSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MicrophoneInputSample.java
index 2669c30eb688..8d57511c2279 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MicrophoneInputSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/MicrophoneInputSample.java
@@ -125,7 +125,7 @@ public static void main(String[] args) {
// Start session. Session lifetime is local to this reactive chain; the session
// instance is captured only inside the flatMapMany lambda.
- client.startSession("gpt-realtime")
+ client.startSession("gpt-realtime", null)
.flatMapMany(session -> {
System.out.println("✓ Session started");
AudioProcessor audioProcessor = new AudioProcessor(session);
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/ReadmeSamples.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/ReadmeSamples.java
index 825e169faf46..44bee3a9fbad 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/ReadmeSamples.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/ReadmeSamples.java
@@ -99,8 +99,8 @@ public void readmeSamples() {
.setInputAudioTranscription(transcriptionOptions)
.setTurnDetection(turnDetection);
- // Start session and handle events
- client.startSession("gpt-realtime")
+ // Start session (null VoiceLiveRequestOptions), then handle events
+ client.startSession("gpt-realtime", null)
.flatMap(session -> {
// Send session configuration, then listen for events.
ClientEventSessionUpdate updateEvent = new ClientEventSessionUpdate(sessionOptions);
@@ -162,8 +162,8 @@ public void simpleSession() {
.buildAsyncClient();
// BEGIN: com.azure.ai.voicelive.simple.session
- // Start session with default options
- client.startSession("gpt-realtime")
+ // Start session with a specific model; pass null when no VoiceLiveRequestOptions value is needed
+ client.startSession("gpt-realtime", null)
.flatMap(session -> {
System.out.println("Session started");
@@ -213,8 +213,8 @@ public void configureSessionOptions() {
.setInputAudioTranscription(transcription)
.setTurnDetection(turnDetection);
- // Start session with options
- client.startSession("gpt-realtime")
+ // Start session and then send session configuration
+ client.startSession("gpt-realtime", null)
.flatMap(session -> {
// Send session configuration
ClientEventSessionUpdate updateEvent = new ClientEventSessionUpdate(options);
@@ -236,7 +236,7 @@ public void sendAudioInput() throws IOException {
.credential(new DefaultAzureCredentialBuilder().build())
.buildAsyncClient();
- VoiceLiveSessionAsyncClient session = client.startSession("gpt-realtime").block();
+ VoiceLiveSessionAsyncClient session = client.startSession("gpt-realtime", null).block();
// BEGIN: com.azure.ai.voicelive.send.audioinput
// Send audio chunk
@@ -265,7 +265,7 @@ public void handleEventTypes() {
.credential(new DefaultAzureCredentialBuilder().build())
.buildAsyncClient();
- VoiceLiveSessionAsyncClient session = client.startSession("gpt-realtime").block();
+ VoiceLiveSessionAsyncClient session = client.startSession("gpt-realtime", null).block();
// BEGIN: com.azure.ai.voicelive.handle.eventtypes
session.receiveEvents()
@@ -362,7 +362,7 @@ public void functionCalling() {
.setInstructions("You have access to weather information. Use get_current_weather when asked about weather.");
// 3. Handle function call events
- client.startSession("gpt-realtime")
+ client.startSession("gpt-realtime", null)
.flatMap(session -> {
return session.receiveEvents()
.doOnNext(event -> {
@@ -424,7 +424,7 @@ public void mcpToolIntegration() {
.credential(new DefaultAzureCredentialBuilder().build())
.buildAsyncClient();
- VoiceLiveSessionAsyncClient session = client.startSession("gpt-realtime").block();
+ VoiceLiveSessionAsyncClient session = client.startSession("gpt-realtime", null).block();
// BEGIN: com.azure.ai.voicelive.mcp
// Configure MCP servers as tools
@@ -469,13 +469,13 @@ public void agentSession() {
AgentSessionConfig agentConfig = new AgentSessionConfig("my-agent", "my-project")
.setAgentVersion("1.0");
- // Start session with agent config (uses DefaultAzureCredential)
+ // Start session with agent config; pass null when no VoiceLiveRequestOptions value is needed
VoiceLiveAsyncClient client = new VoiceLiveClientBuilder()
.endpoint(endpoint)
.credential(new DefaultAzureCredentialBuilder().build())
.buildAsyncClient();
- client.startSession(agentConfig)
+ client.startSession(agentConfig, null)
.flatMap(session -> {
return session.receiveEvents()
.doOnNext(event -> handleEvent(event))
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/VoiceAssistantSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/VoiceAssistantSample.java
index b7ffe7bd6e4c..315df9ca0668 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/VoiceAssistantSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/VoiceAssistantSample.java
@@ -462,7 +462,7 @@ private static void runVoiceAssistantWithClient(VoiceLiveAsyncClient client) {
// Start session. Session lifetime is local to this reactive chain — the session is
// captured by the lambda passed to flatMapMany and then threaded into per-event handling
// via flatMap, so no instance field or shared holder is needed.
- client.startSession(DEFAULT_MODEL)
+ client.startSession(DEFAULT_MODEL, null)
.flatMapMany(session -> {
System.out.println("✓ Session started successfully");
audioProcessorRef.set(new AudioProcessor(session));
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/telemetry/GlobalTracingSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/telemetry/GlobalTracingSample.java
index 9af8146255f9..74be408839f2 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/telemetry/GlobalTracingSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/telemetry/GlobalTracingSample.java
@@ -109,7 +109,7 @@ public static void main(String[] args) throws InterruptedException {
// Session lifetime is local to this reactive chain; the session is captured by the
// lambda passed to flatMapMany and then threaded into per-event handling via flatMap,
// so no instance field or shared holder is needed.
- client.startSession("gpt-realtime")
+ client.startSession("gpt-realtime", null)
.flatMapMany(session -> configureSession(session, sessionOptions, prompts)
.thenMany(session.receiveEvents())
.flatMap(GlobalTracingSample::handleServerEvent))
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/VoiceLiveAsyncClientTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/VoiceLiveAsyncClientTest.java
index f81cfe52203b..285ce1c6322e 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/VoiceLiveAsyncClientTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/VoiceLiveAsyncClientTest.java
@@ -67,14 +67,14 @@ void testStartSessionWithValidOptions() {
// Note: This test might need to be adjusted based on actual implementation
// For now, we're testing that the method exists and can be called
assertDoesNotThrow(() -> {
- client.startSession(sessionOptions.getModel());
+ client.startSession(sessionOptions.getModel(), null);
});
}
@Test
void testStartSessionWithNullOptions() {
// Act & Assert
- assertThrows(NullPointerException.class, () -> client.startSession((String) null));
+ assertThrows(NullPointerException.class, () -> client.startSession((String) null, null));
}
@Test
@@ -93,14 +93,25 @@ void testStartSessionWithModelString() {
// Act & Assert
assertDoesNotThrow(() -> {
- client.startSession(model);
+ client.startSession(model, null);
});
}
@Test
void testStartSessionWithNullModel() {
// Act & Assert
- assertThrows(NullPointerException.class, () -> client.startSession((String) null));
+ assertThrows(NullPointerException.class, () -> client.startSession((String) null, null));
+ }
+
+ @Test
+ void testStartSessionWithModelAndRequestOptions() {
+ String model = "gpt-4o-realtime-preview";
+ VoiceLiveRequestOptions requestOptions = new VoiceLiveRequestOptions();
+
+ assertDoesNotThrow(() -> {
+ Mono sessionMono = client.startSession(model, requestOptions);
+ assertNotNull(sessionMono);
+ });
}
@Test
@@ -128,20 +139,19 @@ void testOptimizedConnectMethods() {
// Test startSession with model string
assertDoesNotThrow(() -> {
- Mono result = client.startSession("gpt-4o-realtime-preview");
+ Mono result = client.startSession("gpt-4o-realtime-preview", null);
assertNotNull(result);
});
// Test startSession with session options
VoiceLiveSessionOptions sessionOptions = new VoiceLiveSessionOptions().setModel("gpt-4o-realtime-preview");
assertDoesNotThrow(() -> {
- Mono result = client.startSession(sessionOptions.getModel());
+ Mono result = client.startSession(sessionOptions.getModel(), null);
assertNotNull(result);
});
// Test null parameter validation for startSession methods
- assertThrows(NullPointerException.class, () -> client.startSession((String) null));
- assertThrows(NullPointerException.class, () -> client.startSession((VoiceLiveRequestOptions) null));
+ assertThrows(NullPointerException.class, () -> client.startSession((String) null, null));
}
@Test
@@ -150,14 +160,14 @@ void testReturnTypeOptimization() {
String model = "gpt-4o-realtime-preview";
assertDoesNotThrow(() -> {
- Mono sessionMono = client.startSession(model);
+ Mono sessionMono = client.startSession(model, null);
assertNotNull(sessionMono);
// The returned Mono should contain a VoiceLiveSessionAsyncClient when subscribed
});
VoiceLiveSessionOptions options = new VoiceLiveSessionOptions().setModel(model);
assertDoesNotThrow(() -> {
- Mono sessionMono = client.startSession(options.getModel());
+ Mono sessionMono = client.startSession(options.getModel(), null);
assertNotNull(sessionMono);
// The returned Mono should contain a VoiceLiveSessionAsyncClient when subscribed
});
@@ -170,7 +180,7 @@ void testStartSessionWithAgentConfig() {
// Act & Assert
assertDoesNotThrow(() -> {
- Mono sessionMono = client.startSession(agentConfig);
+ Mono sessionMono = client.startSession(agentConfig, null);
assertNotNull(sessionMono);
});
}
@@ -184,7 +194,7 @@ void testStartSessionWithAgentConfigAllOptions() {
// Act & Assert
assertDoesNotThrow(() -> {
- Mono sessionMono = client.startSession(agentConfig);
+ Mono sessionMono = client.startSession(agentConfig, null);
assertNotNull(sessionMono);
});
}
@@ -192,7 +202,7 @@ void testStartSessionWithAgentConfigAllOptions() {
@Test
void testStartSessionWithNullAgentConfig() {
// Act & Assert
- assertThrows(NullPointerException.class, () -> client.startSession((AgentSessionConfig) null));
+ assertThrows(NullPointerException.class, () -> client.startSession((AgentSessionConfig) null, null));
}
@Test
@@ -215,7 +225,10 @@ void testStartSessionWithAgentConfigAndNullRequestOptions() {
AgentSessionConfig agentConfig = new AgentSessionConfig("test-agent", "test-project");
// Act & Assert
- assertThrows(NullPointerException.class, () -> client.startSession(agentConfig, null));
+ assertDoesNotThrow(() -> {
+ Mono sessionMono = client.startSession(agentConfig, null);
+ assertNotNull(sessionMono);
+ });
}
@Test
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioFormatTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioFormatTests.java
index bd61508405f9..0018c4b97fee 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioFormatTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioFormatTests.java
@@ -101,7 +101,7 @@ public void testRealtimeServiceWithInputAudioFormat(String model, String audioFo
.setTurnDetection(turnDetection)
.setInputAudioTranscription(getSpeechRecognitionSetting(model));
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
@@ -203,7 +203,7 @@ public void testRealtimeServiceWithInputAudioSamplingRate(String model, int samp
? new ServerVadTurnDetection().setSilenceDurationMs(200)
: new ServerVadTurnDetection());
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
@@ -319,7 +319,7 @@ public void testOutputFormatsWithAzureVoice(String model, String outputFormat, S
.setTurnDetection(
new ServerVadTurnDetection().setThreshold(0.5).setPrefixPaddingMs(300).setSilenceDurationMs(200));
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
@@ -395,7 +395,7 @@ public void testOutputFormatsWithOpenAIVoice(String model, String outputFormat,
.setTurnDetection(
new ServerVadTurnDetection().setThreshold(0.5).setPrefixPaddingMs(300).setSilenceDurationMs(200));
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioTests.java
index 13daf6f23d66..3d96f97cd185 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioTests.java
@@ -60,7 +60,7 @@ public void testRealtimeServiceWithAudio(String model, String apiVersion) throws
.setModalities(Arrays.asList(InteractionModality.TEXT, InteractionModality.AUDIO))
.setInputAudioFormat(InputAudioFormat.PCM16);
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
@@ -134,7 +134,7 @@ public void testRealtimeServiceWithAudioEnhancements(String model, String apiVer
new AudioNoiseReduction(AudioNoiseReductionType.AZURE_DEEP_NOISE_SUPPRESSION))
.setInputAudioEchoCancellation(new AudioEchoCancellation());
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveConversationTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveConversationTests.java
index c1b9a4011da4..d1dbc6ae879f 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveConversationTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveConversationTests.java
@@ -62,7 +62,7 @@ public void testRealtimeServiceRetrieveItem(String model, String apiVersion)
= new VoiceLiveSessionOptions().setInstructions("You are a helpful assistant.")
.setVoice(BinaryData.fromObject(new OpenAIVoice(OpenAIVoiceName.ALLOY)));
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
@@ -156,7 +156,7 @@ public void testRealtimeServiceTruncateItem(String model, String apiVersion)
VoiceLiveSessionOptions sessionOptions
= new VoiceLiveSessionOptions().setInstructions("You are a helpful assistant.");
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveSessionTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveSessionTests.java
index 9c95d4f136ef..263e8360f033 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveSessionTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveSessionTests.java
@@ -52,7 +52,7 @@ public void testSessionUpdateEventIsReceived(String apiVersion) throws Interrupt
.setModalities(Arrays.asList(InteractionModality.TEXT, InteractionModality.AUDIO))
.setInputAudioFormat(InputAudioFormat.PCM16);
- session = client.startSession(TEST_MODEL).block(SESSION_TIMEOUT);
+ session = client.startSession(TEST_MODEL, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
Assertions.assertTrue(session.isConnected(), "Session should be connected");
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveToolCallTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveToolCallTests.java
index 543fb532afd5..902ccad26a52 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveToolCallTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveToolCallTests.java
@@ -113,7 +113,7 @@ private void doTestRealtimeServiceToolCall(String model, String apiVersion)
.setTools(Arrays.asList(assessTool))
.setToolChoice(BinaryData.fromObject("auto"));
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
subscription = session.receiveEvents().subscribe(event -> {
@@ -210,7 +210,7 @@ public void testRealtimeServiceToolChoice(String model, String apiVersion)
.setTools(Arrays.asList(weatherTool, timeTool))
.setToolChoice(BinaryData.fromObject(new ToolChoiceFunctionSelection("get_time")));
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
subscription = session.receiveEvents().subscribe(event -> {
@@ -311,7 +311,7 @@ public void testRealtimeServiceToolCallParameter(String model, String apiVersion
.setTools(Arrays.asList(weatherTool))
.setToolChoice(BinaryData.fromObject("auto"));
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
subscription = session.receiveEvents().subscribe(event -> {
@@ -428,7 +428,7 @@ public void testRealtimeServiceLiveSessionUpdate(String model, String apiVersion
VoiceLiveSessionAsyncClient session = null;
Disposable subscription = null;
try {
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
// Phase tracking: 1 = no tools, 2 = with tools, 3 = post-response.create
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTranscriptionTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTranscriptionTests.java
index 280af11534c3..2a92239eb29a 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTranscriptionTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTranscriptionTests.java
@@ -60,7 +60,7 @@ public void testInputAudioTranscriptionWithWhisper(String model, String apiVersi
.setInputAudioFormat(InputAudioFormat.PCM16)
.setInputAudioTranscription(getSpeechRecognitionSetting(model));
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
@@ -136,7 +136,7 @@ public void testInputAudioTranscriptionWithGpt4oTranscribe(String transcriptionM
VoiceLiveSessionOptions sessionOptions = new VoiceLiveSessionOptions().setInputAudioTranscription(
new AudioInputTranscriptionOptions(transcriptionOptionsModel).setLanguage("en-US"));
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTurnDetectionTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTurnDetectionTests.java
index 730752e64c2a..3f6ae7f87d5e 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTurnDetectionTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTurnDetectionTests.java
@@ -87,7 +87,7 @@ private void doTestLongTtsVadDuration(String model, String apiVersion) throws In
VoiceLiveSessionAsyncClient session = null;
Disposable subscription = null;
try {
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
subscription = session.receiveEvents().subscribe(event -> {
@@ -180,7 +180,7 @@ private void doTestMultilingual(String description, String model, TurnDetection
VoiceLiveSessionAsyncClient session = null;
Disposable subscription = null;
try {
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
subscription = session.receiveEvents().subscribe(event -> {
@@ -297,7 +297,7 @@ private void doTestEou(String description, TurnDetection turnDetection, String a
VoiceLiveSessionAsyncClient session = null;
Disposable subscription = null;
try {
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
subscription = session.receiveEvents().subscribe(event -> {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java
index e360db8340ec..730b157ed5f1 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java
@@ -61,7 +61,7 @@ public void testRealtimeServiceWithVoiceProperties(String model, String apiVersi
= new VoiceLiveSessionOptions().setVoice(BinaryData.fromObject(voice))
.setInputAudioTranscription(getSpeechRecognitionSetting(model));
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
@@ -137,7 +137,7 @@ public void testRealtimeServiceWithAudioTimestampAndViseme(String model, String
new AnimationOptions().setOutputTypes(Arrays.asList(AnimationOutputType.VISEME_ID)))
.setOutputAudioTimestampTypes(Arrays.asList(AudioTimestampType.WORD));
- session = client.startSession(model).block(SESSION_TIMEOUT);
+ session = client.startSession(model, null).block(SESSION_TIMEOUT);
Assertions.assertNotNull(session, "Session should be created successfully");
From e0070fd6af6957ffee591b28d8b517f01f578d19 Mon Sep 17 00:00:00 2001
From: Xiting Zhang
Date: Wed, 27 May 2026 20:17:44 -0700
Subject: [PATCH 10/13] Regenerate from TSP: rename token-count getters and
RequestImageContentPart image_url
---
sdk/voicelive/azure-ai-voicelive/CHANGELOG.md | 10 +-
.../voicelive/models/CachedTokenDetails.java | 110 ++++++------
.../voicelive/models/InputTokenDetails.java | 159 +++++++++---------
.../voicelive/models/OutputTokenDetails.java | 106 ++++++------
.../models/RequestImageContentPart.java | 62 +++----
.../models/ResponseTokenStatistics.java | 130 +++++++-------
.../META-INF/azure-ai-voicelive_metadata.json | 2 +-
.../telemetry/GlobalTracingSample.java | 2 +-
.../azure-ai-voicelive/tsp-location.yaml | 2 +-
9 files changed, 296 insertions(+), 287 deletions(-)
diff --git a/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md b/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md
index d359a2ebfe19..c84ddb474ffc 100644
--- a/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md
+++ b/sdk/voicelive/azure-ai-voicelive/CHANGELOG.md
@@ -10,6 +10,14 @@ This is the first General Availability (GA) release of the Azure VoiceLive clien
- `startSession()`
- `startSession(String, VoiceLiveRequestOptions)`
- `startSession(AgentSessionConfig, VoiceLiveRequestOptions)`
+- Renamed token-count accessors on token statistic models (JSON wire format unchanged):
+ - `CachedTokenDetails.getTextTokens()` / `getAudioTokens()` / `getImageTokens()` → `getTextTokenCount()` / `getAudioTokenCount()` / `getImageTokenCount()`
+ - `InputTokenDetails.getCachedTokens()` / `getTextTokens()` / `getAudioTokens()` / `getImageTokens()` → `getCachedTokenCount()` / `getTextTokenCount()` / `getAudioTokenCount()` / `getImageTokenCount()`
+ - `OutputTokenDetails.getTextTokens()` / `getAudioTokens()` / `getReasoningTokens()` → `getTextTokenCount()` / `getAudioTokenCount()` / `getReasoningTokenCount()`
+ - `ResponseTokenStatistics.getTotalTokens()` / `getInputTokens()` / `getOutputTokens()` → `getTotalTokenCount()` / `getInputTokenCount()` / `getOutputTokenCount()`
+- `RequestImageContentPart` URL accessor renamed and JSON field changed:
+ - `getUrl()` / `setUrl(String)` → `getImageUrl()` / `setImageUrl(String)`
+ - JSON property `url` → `image_url`
- Renamed base event types for client↔server symmetry:
- `ClientEvent` (base for outbound events) → `SessionClientEvent`
- `SessionUpdate` (base for inbound events) → `SessionServerEvent`
@@ -45,7 +53,7 @@ This is the first General Availability (GA) release of the Azure VoiceLive clien
- New `SessionIncludeOption` expandable enum for opting into additional response payloads (e.g. logprobs, phrases, file-search results)
- `VoiceLiveSessionOptions` and `VoiceLiveSessionResponse` now expose `include` (`List`) and `metadata` (`Map`, up to 16 entries)
- **Personal voice models**: added `PersonalVoiceModels.DRAGON_HDOMNI_LATEST_NEURAL` and `MAI_VOICE_1`
-- **Reasoning token usage**: `OutputTokenDetails.getReasoningTokens()` exposes reasoning token counts
+- **Reasoning token usage**: `OutputTokenDetails.getReasoningTokenCount()` exposes reasoning token counts
- **Interim response on response.create**: `ResponseCreateParams.setInterimResponse(BinaryData)` lets callers attach interim response config to a single response request
- Restored no-arg `VoiceLiveAsyncClient.startSession()` overload (uses the deployment's default model).
- Significantly improved Javadoc for `ServerVadTurnDetection`, `AzureCustomVoice`, `AzurePersonalVoice`, `AzureStandardVoice`, `AzureSemanticVadTurnDetection*`, and other model types
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/CachedTokenDetails.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/CachedTokenDetails.java
index f0fdc5121d97..3afcc2097ecb 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/CachedTokenDetails.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/CachedTokenDetails.java
@@ -17,38 +17,6 @@
@Immutable
public final class CachedTokenDetails implements JsonSerializable {
- /*
- * Number of cached text tokens.
- */
- @Generated
- private final int textTokens;
-
- /*
- * Number of cached audio tokens.
- */
- @Generated
- private final int audioTokens;
-
- /**
- * Get the textTokens property: Number of cached text tokens.
- *
- * @return the textTokens value.
- */
- @Generated
- public int getTextTokens() {
- return this.textTokens;
- }
-
- /**
- * Get the audioTokens property: Number of cached audio tokens.
- *
- * @return the audioTokens value.
- */
- @Generated
- public int getAudioTokens() {
- return this.audioTokens;
- }
-
/**
* {@inheritDoc}
*/
@@ -56,9 +24,9 @@ public int getAudioTokens() {
@Override
public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
jsonWriter.writeStartObject();
- jsonWriter.writeIntField("text_tokens", this.textTokens);
- jsonWriter.writeIntField("audio_tokens", this.audioTokens);
- jsonWriter.writeIntField("image_tokens", this.imageTokens);
+ jsonWriter.writeIntField("text_tokens", this.textTokenCount);
+ jsonWriter.writeIntField("audio_tokens", this.audioTokenCount);
+ jsonWriter.writeIntField("image_tokens", this.imageTokenCount);
return jsonWriter.writeEndObject();
}
@@ -74,53 +42,85 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
@Generated
public static CachedTokenDetails fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
- int textTokens = 0;
- int audioTokens = 0;
- int imageTokens = 0;
+ int textTokenCount = 0;
+ int audioTokenCount = 0;
+ int imageTokenCount = 0;
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
if ("text_tokens".equals(fieldName)) {
- textTokens = reader.getInt();
+ textTokenCount = reader.getInt();
} else if ("audio_tokens".equals(fieldName)) {
- audioTokens = reader.getInt();
+ audioTokenCount = reader.getInt();
} else if ("image_tokens".equals(fieldName)) {
- imageTokens = reader.getInt();
+ imageTokenCount = reader.getInt();
} else {
reader.skipChildren();
}
}
- return new CachedTokenDetails(textTokens, audioTokens, imageTokens);
+ return new CachedTokenDetails(textTokenCount, audioTokenCount, imageTokenCount);
});
}
+ /**
+ * Creates an instance of CachedTokenDetails class.
+ *
+ * @param textTokenCount the textTokenCount value to set.
+ * @param audioTokenCount the audioTokenCount value to set.
+ * @param imageTokenCount the imageTokenCount value to set.
+ */
+ @Generated
+ private CachedTokenDetails(int textTokenCount, int audioTokenCount, int imageTokenCount) {
+ this.textTokenCount = textTokenCount;
+ this.audioTokenCount = audioTokenCount;
+ this.imageTokenCount = imageTokenCount;
+ }
+
+ /*
+ * Number of cached text tokens.
+ */
+ @Generated
+ private final int textTokenCount;
+
+ /*
+ * Number of cached audio tokens.
+ */
+ @Generated
+ private final int audioTokenCount;
+
/*
* Number of cached image tokens.
*/
@Generated
- private final int imageTokens;
+ private final int imageTokenCount;
/**
- * Creates an instance of CachedTokenDetails class.
+ * Get the textTokenCount property: Number of cached text tokens.
+ *
+ * @return the textTokenCount value.
+ */
+ @Generated
+ public int getTextTokenCount() {
+ return this.textTokenCount;
+ }
+
+ /**
+ * Get the audioTokenCount property: Number of cached audio tokens.
*
- * @param textTokens the textTokens value to set.
- * @param audioTokens the audioTokens value to set.
- * @param imageTokens the imageTokens value to set.
+ * @return the audioTokenCount value.
*/
@Generated
- private CachedTokenDetails(int textTokens, int audioTokens, int imageTokens) {
- this.textTokens = textTokens;
- this.audioTokens = audioTokens;
- this.imageTokens = imageTokens;
+ public int getAudioTokenCount() {
+ return this.audioTokenCount;
}
/**
- * Get the imageTokens property: Number of cached image tokens.
+ * Get the imageTokenCount property: Number of cached image tokens.
*
- * @return the imageTokens value.
+ * @return the imageTokenCount value.
*/
@Generated
- public int getImageTokens() {
- return this.imageTokens;
+ public int getImageTokenCount() {
+ return this.imageTokenCount;
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/InputTokenDetails.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/InputTokenDetails.java
index 2fe3c8d502fc..fe30ff5c3f43 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/InputTokenDetails.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/InputTokenDetails.java
@@ -17,60 +17,12 @@
@Immutable
public final class InputTokenDetails implements JsonSerializable {
- /*
- * Number of cached tokens used in the input.
- */
- @Generated
- private final int cachedTokens;
-
- /*
- * Number of text tokens used in the input.
- */
- @Generated
- private final int textTokens;
-
- /*
- * Number of audio tokens used in the input.
- */
- @Generated
- private final int audioTokens;
-
/*
* Details of cached token usage.
*/
@Generated
private final CachedTokenDetails cachedTokensDetails;
- /**
- * Get the cachedTokens property: Number of cached tokens used in the input.
- *
- * @return the cachedTokens value.
- */
- @Generated
- public int getCachedTokens() {
- return this.cachedTokens;
- }
-
- /**
- * Get the textTokens property: Number of text tokens used in the input.
- *
- * @return the textTokens value.
- */
- @Generated
- public int getTextTokens() {
- return this.textTokens;
- }
-
- /**
- * Get the audioTokens property: Number of audio tokens used in the input.
- *
- * @return the audioTokens value.
- */
- @Generated
- public int getAudioTokens() {
- return this.audioTokens;
- }
-
/**
* Get the cachedTokensDetails property: Details of cached token usage.
*
@@ -88,10 +40,10 @@ public CachedTokenDetails getCachedTokensDetails() {
@Override
public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
jsonWriter.writeStartObject();
- jsonWriter.writeIntField("cached_tokens", this.cachedTokens);
- jsonWriter.writeIntField("text_tokens", this.textTokens);
- jsonWriter.writeIntField("audio_tokens", this.audioTokens);
- jsonWriter.writeIntField("image_tokens", this.imageTokens);
+ jsonWriter.writeIntField("cached_tokens", this.cachedTokenCount);
+ jsonWriter.writeIntField("text_tokens", this.textTokenCount);
+ jsonWriter.writeIntField("audio_tokens", this.audioTokenCount);
+ jsonWriter.writeIntField("image_tokens", this.imageTokenCount);
jsonWriter.writeJsonField("cached_tokens_details", this.cachedTokensDetails);
return jsonWriter.writeEndObject();
}
@@ -108,64 +60,113 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
@Generated
public static InputTokenDetails fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
- int cachedTokens = 0;
- int textTokens = 0;
- int audioTokens = 0;
- int imageTokens = 0;
+ int cachedTokenCount = 0;
+ int textTokenCount = 0;
+ int audioTokenCount = 0;
+ int imageTokenCount = 0;
CachedTokenDetails cachedTokensDetails = null;
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
if ("cached_tokens".equals(fieldName)) {
- cachedTokens = reader.getInt();
+ cachedTokenCount = reader.getInt();
} else if ("text_tokens".equals(fieldName)) {
- textTokens = reader.getInt();
+ textTokenCount = reader.getInt();
} else if ("audio_tokens".equals(fieldName)) {
- audioTokens = reader.getInt();
+ audioTokenCount = reader.getInt();
} else if ("image_tokens".equals(fieldName)) {
- imageTokens = reader.getInt();
+ imageTokenCount = reader.getInt();
} else if ("cached_tokens_details".equals(fieldName)) {
cachedTokensDetails = CachedTokenDetails.fromJson(reader);
} else {
reader.skipChildren();
}
}
- return new InputTokenDetails(cachedTokens, textTokens, audioTokens, imageTokens, cachedTokensDetails);
+ return new InputTokenDetails(cachedTokenCount, textTokenCount, audioTokenCount, imageTokenCount,
+ cachedTokensDetails);
});
}
+ /**
+ * Creates an instance of InputTokenDetails class.
+ *
+ * @param cachedTokenCount the cachedTokenCount value to set.
+ * @param textTokenCount the textTokenCount value to set.
+ * @param audioTokenCount the audioTokenCount value to set.
+ * @param imageTokenCount the imageTokenCount value to set.
+ * @param cachedTokensDetails the cachedTokensDetails value to set.
+ */
+ @Generated
+ private InputTokenDetails(int cachedTokenCount, int textTokenCount, int audioTokenCount, int imageTokenCount,
+ CachedTokenDetails cachedTokensDetails) {
+ this.cachedTokenCount = cachedTokenCount;
+ this.textTokenCount = textTokenCount;
+ this.audioTokenCount = audioTokenCount;
+ this.imageTokenCount = imageTokenCount;
+ this.cachedTokensDetails = cachedTokensDetails;
+ }
+
+ /*
+ * Number of cached tokens used in the input.
+ */
+ @Generated
+ private final int cachedTokenCount;
+
+ /*
+ * Number of text tokens used in the input.
+ */
+ @Generated
+ private final int textTokenCount;
+
+ /*
+ * Number of audio tokens used in the input.
+ */
+ @Generated
+ private final int audioTokenCount;
+
/*
* Number of image tokens used in the input.
*/
@Generated
- private final int imageTokens;
+ private final int imageTokenCount;
/**
- * Creates an instance of InputTokenDetails class.
+ * Get the cachedTokenCount property: Number of cached tokens used in the input.
*
- * @param cachedTokens the cachedTokens value to set.
- * @param textTokens the textTokens value to set.
- * @param audioTokens the audioTokens value to set.
- * @param imageTokens the imageTokens value to set.
- * @param cachedTokensDetails the cachedTokensDetails value to set.
+ * @return the cachedTokenCount value.
*/
@Generated
- private InputTokenDetails(int cachedTokens, int textTokens, int audioTokens, int imageTokens,
- CachedTokenDetails cachedTokensDetails) {
- this.cachedTokens = cachedTokens;
- this.textTokens = textTokens;
- this.audioTokens = audioTokens;
- this.imageTokens = imageTokens;
- this.cachedTokensDetails = cachedTokensDetails;
+ public int getCachedTokenCount() {
+ return this.cachedTokenCount;
+ }
+
+ /**
+ * Get the textTokenCount property: Number of text tokens used in the input.
+ *
+ * @return the textTokenCount value.
+ */
+ @Generated
+ public int getTextTokenCount() {
+ return this.textTokenCount;
+ }
+
+ /**
+ * Get the audioTokenCount property: Number of audio tokens used in the input.
+ *
+ * @return the audioTokenCount value.
+ */
+ @Generated
+ public int getAudioTokenCount() {
+ return this.audioTokenCount;
}
/**
- * Get the imageTokens property: Number of image tokens used in the input.
+ * Get the imageTokenCount property: Number of image tokens used in the input.
*
- * @return the imageTokens value.
+ * @return the imageTokenCount value.
*/
@Generated
- public int getImageTokens() {
- return this.imageTokens;
+ public int getImageTokenCount() {
+ return this.imageTokenCount;
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/OutputTokenDetails.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/OutputTokenDetails.java
index 41648ae92753..110bd7056497 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/OutputTokenDetails.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/OutputTokenDetails.java
@@ -17,48 +17,16 @@
@Immutable
public final class OutputTokenDetails implements JsonSerializable {
- /*
- * Number of text tokens generated in the output.
- */
- @Generated
- private final int textTokens;
-
- /*
- * Number of audio tokens generated in the output.
- */
- @Generated
- private final int audioTokens;
-
/**
* Creates an instance of OutputTokenDetails class.
*
- * @param textTokens the textTokens value to set.
- * @param audioTokens the audioTokens value to set.
- */
- @Generated
- private OutputTokenDetails(int textTokens, int audioTokens) {
- this.textTokens = textTokens;
- this.audioTokens = audioTokens;
- }
-
- /**
- * Get the textTokens property: Number of text tokens generated in the output.
- *
- * @return the textTokens value.
- */
- @Generated
- public int getTextTokens() {
- return this.textTokens;
- }
-
- /**
- * Get the audioTokens property: Number of audio tokens generated in the output.
- *
- * @return the audioTokens value.
+ * @param textTokenCount the textTokenCount value to set.
+ * @param audioTokenCount the audioTokenCount value to set.
*/
@Generated
- public int getAudioTokens() {
- return this.audioTokens;
+ private OutputTokenDetails(int textTokenCount, int audioTokenCount) {
+ this.textTokenCount = textTokenCount;
+ this.audioTokenCount = audioTokenCount;
}
/**
@@ -68,9 +36,9 @@ public int getAudioTokens() {
@Override
public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
jsonWriter.writeStartObject();
- jsonWriter.writeIntField("text_tokens", this.textTokens);
- jsonWriter.writeIntField("audio_tokens", this.audioTokens);
- jsonWriter.writeNumberField("reasoning_tokens", this.reasoningTokens);
+ jsonWriter.writeIntField("text_tokens", this.textTokenCount);
+ jsonWriter.writeIntField("audio_tokens", this.audioTokenCount);
+ jsonWriter.writeNumberField("reasoning_tokens", this.reasoningTokenCount);
return jsonWriter.writeEndObject();
}
@@ -86,41 +54,73 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
@Generated
public static OutputTokenDetails fromJson(JsonReader jsonReader) throws IOException {
return jsonReader.readObject(reader -> {
- int textTokens = 0;
- int audioTokens = 0;
- Integer reasoningTokens = null;
+ int textTokenCount = 0;
+ int audioTokenCount = 0;
+ Integer reasoningTokenCount = null;
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
if ("text_tokens".equals(fieldName)) {
- textTokens = reader.getInt();
+ textTokenCount = reader.getInt();
} else if ("audio_tokens".equals(fieldName)) {
- audioTokens = reader.getInt();
+ audioTokenCount = reader.getInt();
} else if ("reasoning_tokens".equals(fieldName)) {
- reasoningTokens = reader.getNullable(JsonReader::getInt);
+ reasoningTokenCount = reader.getNullable(JsonReader::getInt);
} else {
reader.skipChildren();
}
}
- OutputTokenDetails deserializedOutputTokenDetails = new OutputTokenDetails(textTokens, audioTokens);
- deserializedOutputTokenDetails.reasoningTokens = reasoningTokens;
+ OutputTokenDetails deserializedOutputTokenDetails = new OutputTokenDetails(textTokenCount, audioTokenCount);
+ deserializedOutputTokenDetails.reasoningTokenCount = reasoningTokenCount;
return deserializedOutputTokenDetails;
});
}
+ /*
+ * Number of text tokens generated in the output.
+ */
+ @Generated
+ private final int textTokenCount;
+
+ /*
+ * Number of audio tokens generated in the output.
+ */
+ @Generated
+ private final int audioTokenCount;
+
/*
* Number of reasoning tokens generated in the output.
*/
@Generated
- private Integer reasoningTokens;
+ private Integer reasoningTokenCount;
+
+ /**
+ * Get the textTokenCount property: Number of text tokens generated in the output.
+ *
+ * @return the textTokenCount value.
+ */
+ @Generated
+ public int getTextTokenCount() {
+ return this.textTokenCount;
+ }
+
+ /**
+ * Get the audioTokenCount property: Number of audio tokens generated in the output.
+ *
+ * @return the audioTokenCount value.
+ */
+ @Generated
+ public int getAudioTokenCount() {
+ return this.audioTokenCount;
+ }
/**
- * Get the reasoningTokens property: Number of reasoning tokens generated in the output.
+ * Get the reasoningTokenCount property: Number of reasoning tokens generated in the output.
*
- * @return the reasoningTokens value.
+ * @return the reasoningTokenCount value.
*/
@Generated
- public Integer getReasoningTokens() {
- return this.reasoningTokens;
+ public Integer getReasoningTokenCount() {
+ return this.reasoningTokenCount;
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/RequestImageContentPart.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/RequestImageContentPart.java
index 2023e2e109dc..8eabb18a756f 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/RequestImageContentPart.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/RequestImageContentPart.java
@@ -22,12 +22,6 @@ public final class RequestImageContentPart extends VoiceLiveContentPart {
@Generated
private ContentPartType type = ContentPartType.INPUT_IMAGE;
- /*
- * The url property.
- */
- @Generated
- private String url;
-
/*
* The detail property.
*/
@@ -52,28 +46,6 @@ public ContentPartType getType() {
return this.type;
}
- /**
- * Get the url property: The url property.
- *
- * @return the url value.
- */
- @Generated
- public String getUrl() {
- return this.url;
- }
-
- /**
- * Set the url property: The url property.
- *
- * @param url the url value to set.
- * @return the RequestImageContentPart object itself.
- */
- @Generated
- public RequestImageContentPart setUrl(String url) {
- this.url = url;
- return this;
- }
-
/**
* Get the detail property: The detail property.
*
@@ -104,7 +76,7 @@ public RequestImageContentPart setDetail(RequestImageContentPartDetail detail) {
public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
jsonWriter.writeStartObject();
jsonWriter.writeStringField("type", this.type == null ? null : this.type.toString());
- jsonWriter.writeStringField("url", this.url);
+ jsonWriter.writeStringField("image_url", this.imageUrl);
jsonWriter.writeStringField("detail", this.detail == null ? null : this.detail.toString());
return jsonWriter.writeEndObject();
}
@@ -126,8 +98,8 @@ public static RequestImageContentPart fromJson(JsonReader jsonReader) throws IOE
reader.nextToken();
if ("type".equals(fieldName)) {
deserializedRequestImageContentPart.type = ContentPartType.fromString(reader.getString());
- } else if ("url".equals(fieldName)) {
- deserializedRequestImageContentPart.url = reader.getString();
+ } else if ("image_url".equals(fieldName)) {
+ deserializedRequestImageContentPart.imageUrl = reader.getString();
} else if ("detail".equals(fieldName)) {
deserializedRequestImageContentPart.detail
= RequestImageContentPartDetail.fromString(reader.getString());
@@ -138,4 +110,32 @@ public static RequestImageContentPart fromJson(JsonReader jsonReader) throws IOE
return deserializedRequestImageContentPart;
});
}
+
+ /*
+ * The image_url property.
+ */
+ @Generated
+ private String imageUrl;
+
+ /**
+ * 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 RequestImageContentPart object itself.
+ */
+ @Generated
+ public RequestImageContentPart setImageUrl(String imageUrl) {
+ this.imageUrl = imageUrl;
+ return this;
+ }
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseTokenStatistics.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseTokenStatistics.java
index b1eda0fa0d5e..ebe84ba1369b 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseTokenStatistics.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/models/ResponseTokenStatistics.java
@@ -17,24 +17,6 @@
@Immutable
public final class ResponseTokenStatistics implements JsonSerializable {
- /*
- * Total number of tokens (input + output).
- */
- @Generated
- private final int totalTokens;
-
- /*
- * Number of input tokens.
- */
- @Generated
- private final int inputTokens;
-
- /*
- * Number of output tokens.
- */
- @Generated
- private final int outputTokens;
-
/*
* Detailed breakdown of input tokens.
*/
@@ -50,52 +32,22 @@ public final class ResponseTokenStatistics implements JsonSerializable {
- int totalTokens = 0;
- int inputTokens = 0;
- int outputTokens = 0;
+ int totalTokenCount = 0;
+ int inputTokenCount = 0;
+ int outputTokenCount = 0;
InputTokenDetails inputTokenDetails = null;
OutputTokenDetails outputTokenDetails = null;
while (reader.nextToken() != JsonToken.END_OBJECT) {
String fieldName = reader.getFieldName();
reader.nextToken();
if ("total_tokens".equals(fieldName)) {
- totalTokens = reader.getInt();
+ totalTokenCount = reader.getInt();
} else if ("input_tokens".equals(fieldName)) {
- inputTokens = reader.getInt();
+ inputTokenCount = reader.getInt();
} else if ("output_tokens".equals(fieldName)) {
- outputTokens = reader.getInt();
+ outputTokenCount = reader.getInt();
} else if ("input_token_details".equals(fieldName)) {
inputTokenDetails = InputTokenDetails.fromJson(reader);
} else if ("output_token_details".equals(fieldName)) {
@@ -165,8 +117,56 @@ public static ResponseTokenStatistics fromJson(JsonReader jsonReader) throws IOE
reader.skipChildren();
}
}
- return new ResponseTokenStatistics(totalTokens, inputTokens, outputTokens, inputTokenDetails,
+ return new ResponseTokenStatistics(totalTokenCount, inputTokenCount, outputTokenCount, inputTokenDetails,
outputTokenDetails);
});
}
+
+ /*
+ * Total number of tokens (input + output).
+ */
+ @Generated
+ private final int totalTokenCount;
+
+ /*
+ * Number of input tokens.
+ */
+ @Generated
+ private final int inputTokenCount;
+
+ /*
+ * Number of output tokens.
+ */
+ @Generated
+ private final int outputTokenCount;
+
+ /**
+ * Get the totalTokenCount property: Total number of tokens (input + output).
+ *
+ * @return the totalTokenCount value.
+ */
+ @Generated
+ public int getTotalTokenCount() {
+ return this.totalTokenCount;
+ }
+
+ /**
+ * Get the inputTokenCount property: Number of input tokens.
+ *
+ * @return the inputTokenCount value.
+ */
+ @Generated
+ public int getInputTokenCount() {
+ return this.inputTokenCount;
+ }
+
+ /**
+ * Get the outputTokenCount property: Number of output tokens.
+ *
+ * @return the outputTokenCount value.
+ */
+ @Generated
+ public int getOutputTokenCount() {
+ return this.outputTokenCount;
+ }
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/resources/META-INF/azure-ai-voicelive_metadata.json b/sdk/voicelive/azure-ai-voicelive/src/main/resources/META-INF/azure-ai-voicelive_metadata.json
index 4c23983b9965..350696f07ce2 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/resources/META-INF/azure-ai-voicelive_metadata.json
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/resources/META-INF/azure-ai-voicelive_metadata.json
@@ -1 +1 @@
-{"flavor":"azure","apiVersions":{"VoiceLive":"2026-04-10"},"crossLanguagePackageId":"VoiceLive","crossLanguageVersion":"4f7c08a38aa5","crossLanguageDefinitions":{"com.azure.ai.voicelive.models.AnimationOptions":"VoiceLive.Animation","com.azure.ai.voicelive.models.AnimationOutputType":"VoiceLive.AnimationOutputType","com.azure.ai.voicelive.models.AssistantMessageItem":"VoiceLive.AssistantMessageItem","com.azure.ai.voicelive.models.AudioEchoCancellation":"VoiceLive.AudioEchoCancellation","com.azure.ai.voicelive.models.AudioInputTranscriptionOptions":"VoiceLive.AudioInputTranscriptionOptions","com.azure.ai.voicelive.models.AudioInputTranscriptionOptionsModel":"VoiceLive.AudioInputTranscriptionOptions.model.anonymous","com.azure.ai.voicelive.models.AudioNoiseReduction":"VoiceLive.AudioNoiseReduction","com.azure.ai.voicelive.models.AudioNoiseReductionType":"VoiceLive.AudioNoiseReduction.type.anonymous","com.azure.ai.voicelive.models.AudioTimestampType":"VoiceLive.AudioTimestampType","com.azure.ai.voicelive.models.AvatarConfigTypes":"VoiceLive.AvatarConfigTypes","com.azure.ai.voicelive.models.AvatarOptions":"VoiceLive.AvatarConfig","com.azure.ai.voicelive.models.AvatarOutputProtocol":"VoiceLive.AvatarOutputProtocol","com.azure.ai.voicelive.models.AzureAvatarVoiceSyncVoice":"VoiceLive.AzureAvatarVoiceSyncVoice","com.azure.ai.voicelive.models.AzureCustomVoice":"VoiceLive.AzureCustomVoice","com.azure.ai.voicelive.models.AzurePersonalVoice":"VoiceLive.AzurePersonalVoice","com.azure.ai.voicelive.models.AzureSemanticEouDetection":"VoiceLive.AzureSemanticDetection","com.azure.ai.voicelive.models.AzureSemanticEouDetectionEn":"VoiceLive.AzureSemanticDetectionEn","com.azure.ai.voicelive.models.AzureSemanticEouDetectionMultilingual":"VoiceLive.AzureSemanticDetectionMultilingual","com.azure.ai.voicelive.models.AzureSemanticVadTurnDetection":"VoiceLive.AzureSemanticVad","com.azure.ai.voicelive.models.AzureSemanticVadTurnDetectionEn":"VoiceLive.AzureSemanticVadEn","com.azure.ai.voicelive.models.AzureSemanticVadTurnDetectionMultilingual":"VoiceLive.AzureSemanticVadMultilingual","com.azure.ai.voicelive.models.AzureStandardVoice":"VoiceLive.AzureStandardVoice","com.azure.ai.voicelive.models.AzureVoice":"VoiceLive.AzureVoice","com.azure.ai.voicelive.models.AzureVoiceType":"VoiceLive.AzureVoiceType","com.azure.ai.voicelive.models.CachedTokenDetails":"VoiceLive.CachedTokenDetails","com.azure.ai.voicelive.models.ClientEventConversationItemCreate":"VoiceLive.ClientEventConversationItemCreate","com.azure.ai.voicelive.models.ClientEventConversationItemDelete":"VoiceLive.ClientEventConversationItemDelete","com.azure.ai.voicelive.models.ClientEventConversationItemRetrieve":"VoiceLive.ClientEventConversationItemRetrieve","com.azure.ai.voicelive.models.ClientEventConversationItemTruncate":"VoiceLive.ClientEventConversationItemTruncate","com.azure.ai.voicelive.models.ClientEventInputAudioBufferAppend":"VoiceLive.ClientEventInputAudioBufferAppend","com.azure.ai.voicelive.models.ClientEventInputAudioBufferClear":"VoiceLive.ClientEventInputAudioBufferClear","com.azure.ai.voicelive.models.ClientEventInputAudioBufferCommit":"VoiceLive.ClientEventInputAudioBufferCommit","com.azure.ai.voicelive.models.ClientEventInputAudioClear":"VoiceLive.ClientEventInputAudioClear","com.azure.ai.voicelive.models.ClientEventInputAudioTurnAppend":"VoiceLive.ClientEventInputAudioTurnAppend","com.azure.ai.voicelive.models.ClientEventInputAudioTurnCancel":"VoiceLive.ClientEventInputAudioTurnCancel","com.azure.ai.voicelive.models.ClientEventInputAudioTurnEnd":"VoiceLive.ClientEventInputAudioTurnEnd","com.azure.ai.voicelive.models.ClientEventInputAudioTurnStart":"VoiceLive.ClientEventInputAudioTurnStart","com.azure.ai.voicelive.models.ClientEventOutputAudioBufferClear":"VoiceLive.ClientEventOutputAudioBufferClear","com.azure.ai.voicelive.models.ClientEventResponseCancel":"VoiceLive.ClientEventResponseCancel","com.azure.ai.voicelive.models.ClientEventResponseCreate":"VoiceLive.ClientEventResponseCreate","com.azure.ai.voicelive.models.ClientEventSessionAvatarConnect":"VoiceLive.ClientEventSessionAvatarConnect","com.azure.ai.voicelive.models.ClientEventSessionUpdate":"VoiceLive.ClientEventSessionUpdate","com.azure.ai.voicelive.models.ClientEventType":"VoiceLive.ClientEventType","com.azure.ai.voicelive.models.ContentPartType":"VoiceLive.ContentPartType","com.azure.ai.voicelive.models.ConversationRequestItem":"VoiceLive.ConversationRequestItem","com.azure.ai.voicelive.models.EouDetection":"VoiceLive.EouDetection","com.azure.ai.voicelive.models.EouDetectionModel":"VoiceLive.EouDetection.model.anonymous","com.azure.ai.voicelive.models.EouThresholdLevel":"VoiceLive.EouThresholdLevel","com.azure.ai.voicelive.models.FileSearchResult":"VoiceLive.FileSearchResult","com.azure.ai.voicelive.models.FunctionCallItem":"VoiceLive.FunctionCallItem","com.azure.ai.voicelive.models.FunctionCallOutputItem":"VoiceLive.FunctionCallOutputItem","com.azure.ai.voicelive.models.IceServer":"VoiceLive.IceServer","com.azure.ai.voicelive.models.InputAudioContentPart":"VoiceLive.InputAudioContentPart","com.azure.ai.voicelive.models.InputAudioFormat":"VoiceLive.InputAudioFormat","com.azure.ai.voicelive.models.InputTextContentPart":"VoiceLive.InputTextContentPart","com.azure.ai.voicelive.models.InputTokenDetails":"VoiceLive.InputTokenDetails","com.azure.ai.voicelive.models.InteractionModality":"VoiceLive.Modality","com.azure.ai.voicelive.models.InterimResponseConfigBase":"VoiceLive.InterimResponseConfigBase","com.azure.ai.voicelive.models.InterimResponseConfigType":"VoiceLive.InterimResponseConfigType","com.azure.ai.voicelive.models.InterimResponseTrigger":"VoiceLive.InterimResponseTrigger","com.azure.ai.voicelive.models.ItemParamStatus":"VoiceLive.ItemParamStatus","com.azure.ai.voicelive.models.ItemType":"VoiceLive.ItemType","com.azure.ai.voicelive.models.LlmInterimResponseConfig":"VoiceLive.LlmInterimResponseConfig","com.azure.ai.voicelive.models.LogProbProperties":"VoiceLive.LogProbProperties","com.azure.ai.voicelive.models.McpApprovalResponseRequestItem":"VoiceLive.MCPApprovalResponseRequestItem","com.azure.ai.voicelive.models.McpApprovalType":"VoiceLive.MCPApprovalType","com.azure.ai.voicelive.models.McpServer":"VoiceLive.MCPServer","com.azure.ai.voicelive.models.McpTool":"VoiceLive.MCPTool","com.azure.ai.voicelive.models.MessageContentPart":"VoiceLive.MessageContentPart","com.azure.ai.voicelive.models.MessageItem":"VoiceLive.MessageItem","com.azure.ai.voicelive.models.OpenAIVoice":"VoiceLive.OpenAIVoice","com.azure.ai.voicelive.models.OpenAIVoiceName":"VoiceLive.OAIVoice","com.azure.ai.voicelive.models.OutputAudioFormat":"VoiceLive.OutputAudioFormat","com.azure.ai.voicelive.models.OutputTextContentPart":"VoiceLive.OutputTextContentPart","com.azure.ai.voicelive.models.OutputTokenDetails":"VoiceLive.OutputTokenDetails","com.azure.ai.voicelive.models.PersonalVoiceModels":"VoiceLive.PersonalVoiceModels","com.azure.ai.voicelive.models.PhotoAvatarBaseModes":"VoiceLive.PhotoAvatarBaseModes","com.azure.ai.voicelive.models.ReasoningEffort":"VoiceLive.ReasoningEffort","com.azure.ai.voicelive.models.RequestAudioContentPart":"VoiceLive.RequestAudioContentPart","com.azure.ai.voicelive.models.RequestImageContentPart":"VoiceLive.RequestImageContentPart","com.azure.ai.voicelive.models.RequestImageContentPartDetail":"VoiceLive.RequestImageContentPartDetail","com.azure.ai.voicelive.models.RequestTextContentPart":"VoiceLive.RequestTextContentPart","com.azure.ai.voicelive.models.RespondingAgentOptions":"VoiceLive.AgentConfig","com.azure.ai.voicelive.models.ResponseAudioContentPart":"VoiceLive.ResponseAudioContentPart","com.azure.ai.voicelive.models.ResponseCancelledDetails":"VoiceLive.ResponseCancelledDetails","com.azure.ai.voicelive.models.ResponseCancelledDetailsReason":"VoiceLive.ResponseCancelledDetails.reason.anonymous","com.azure.ai.voicelive.models.ResponseCreateParams":"VoiceLive.ResponseCreateParams","com.azure.ai.voicelive.models.ResponseFailedDetails":"VoiceLive.ResponseFailedDetails","com.azure.ai.voicelive.models.ResponseFileSearchCallItem":"VoiceLive.ResponseFileSearchCallItem","com.azure.ai.voicelive.models.ResponseFileSearchCallItemStatus":"VoiceLive.ResponseFileSearchCallItem.status.anonymous","com.azure.ai.voicelive.models.ResponseFunctionCallItem":"VoiceLive.ResponseFunctionCallItem","com.azure.ai.voicelive.models.ResponseFunctionCallOutputItem":"VoiceLive.ResponseFunctionCallOutputItem","com.azure.ai.voicelive.models.ResponseIncompleteDetails":"VoiceLive.ResponseIncompleteDetails","com.azure.ai.voicelive.models.ResponseIncompleteDetailsReason":"VoiceLive.ResponseIncompleteDetails.reason.anonymous","com.azure.ai.voicelive.models.ResponseItemObject":null,"com.azure.ai.voicelive.models.ResponseMcpApprovalRequestItem":"VoiceLive.ResponseMCPApprovalRequestItem","com.azure.ai.voicelive.models.ResponseMcpApprovalResponseItem":"VoiceLive.ResponseMCPApprovalResponseItem","com.azure.ai.voicelive.models.ResponseMcpCallItem":"VoiceLive.ResponseMCPCallItem","com.azure.ai.voicelive.models.ResponseMcpListToolItem":"VoiceLive.ResponseMCPListToolItem","com.azure.ai.voicelive.models.ResponseMessageRole":"VoiceLive.MessageRole","com.azure.ai.voicelive.models.ResponseObject":null,"com.azure.ai.voicelive.models.ResponseStatusDetails":"VoiceLive.ResponseStatusDetails","com.azure.ai.voicelive.models.ResponseTextContentPart":"VoiceLive.ResponseTextContentPart","com.azure.ai.voicelive.models.ResponseTokenStatistics":"VoiceLive.TokenUsage","com.azure.ai.voicelive.models.ResponseWebSearchCallItem":"VoiceLive.ResponseWebSearchCallItem","com.azure.ai.voicelive.models.ResponseWebSearchCallItemStatus":"VoiceLive.ResponseWebSearchCallItem.status.anonymous","com.azure.ai.voicelive.models.Scene":"VoiceLive.Scene","com.azure.ai.voicelive.models.ServerEventMcpListToolsCompleted":"VoiceLive.ServerEventMcpListToolsCompleted","com.azure.ai.voicelive.models.ServerEventMcpListToolsFailed":"VoiceLive.ServerEventMcpListToolsFailed","com.azure.ai.voicelive.models.ServerEventMcpListToolsInProgress":"VoiceLive.ServerEventMcpListToolsInProgress","com.azure.ai.voicelive.models.ServerEventOutputAudioBufferCleared":"VoiceLive.ServerEventOutputAudioBufferCleared","com.azure.ai.voicelive.models.ServerEventResponseAudioTranscriptAnnotationAdded":"VoiceLive.ServerEventResponseAudioTranscriptAnnotationAdded","com.azure.ai.voicelive.models.ServerEventResponseFileSearchCallCompleted":"VoiceLive.ServerEventResponseFileSearchCallCompleted","com.azure.ai.voicelive.models.ServerEventResponseFileSearchCallInProgress":"VoiceLive.ServerEventResponseFileSearchCallInProgress","com.azure.ai.voicelive.models.ServerEventResponseFileSearchCallSearching":"VoiceLive.ServerEventResponseFileSearchCallSearching","com.azure.ai.voicelive.models.ServerEventResponseMcpCallArgumentsDelta":"VoiceLive.ServerEventResponseMcpCallArgumentsDelta","com.azure.ai.voicelive.models.ServerEventResponseMcpCallArgumentsDone":"VoiceLive.ServerEventResponseMcpCallArgumentsDone","com.azure.ai.voicelive.models.ServerEventResponseMcpCallCompleted":"VoiceLive.ServerEventResponseMcpCallCompleted","com.azure.ai.voicelive.models.ServerEventResponseMcpCallFailed":"VoiceLive.ServerEventResponseMcpCallFailed","com.azure.ai.voicelive.models.ServerEventResponseMcpCallInProgress":"VoiceLive.ServerEventResponseMcpCallInProgress","com.azure.ai.voicelive.models.ServerEventResponseVideoDelta":"VoiceLive.ServerEventResponseVideoDelta","com.azure.ai.voicelive.models.ServerEventResponseWebSearchCallCompleted":"VoiceLive.ServerEventResponseWebSearchCallCompleted","com.azure.ai.voicelive.models.ServerEventResponseWebSearchCallInProgress":"VoiceLive.ServerEventResponseWebSearchCallInProgress","com.azure.ai.voicelive.models.ServerEventResponseWebSearchCallSearching":"VoiceLive.ServerEventResponseWebSearchCallSearching","com.azure.ai.voicelive.models.ServerEventSessionAvatarSwitchToIdle":"VoiceLive.ServerEventSessionAvatarSwitchToIdle","com.azure.ai.voicelive.models.ServerEventSessionAvatarSwitchToSpeaking":"VoiceLive.ServerEventSessionAvatarSwitchToSpeaking","com.azure.ai.voicelive.models.ServerEventType":"VoiceLive.ServerEventType","com.azure.ai.voicelive.models.ServerEventWarning":"VoiceLive.ServerEventWarning","com.azure.ai.voicelive.models.ServerEventWarningDetails":"VoiceLive.ServerEventWarningDetails","com.azure.ai.voicelive.models.ServerVadTurnDetection":"VoiceLive.ServerVad","com.azure.ai.voicelive.models.SessionClientEvent":"VoiceLive.ClientEvent","com.azure.ai.voicelive.models.SessionIncludeOption":"VoiceLive.SessionIncludeOption","com.azure.ai.voicelive.models.SessionResponse":"VoiceLive.Response","com.azure.ai.voicelive.models.SessionResponseItem":"VoiceLive.ResponseItem","com.azure.ai.voicelive.models.SessionResponseItemStatus":"VoiceLive.ResponseItemStatus","com.azure.ai.voicelive.models.SessionResponseMessageItem":"VoiceLive.ResponseMessageItem","com.azure.ai.voicelive.models.SessionResponseStatus":"VoiceLive.ResponseStatus","com.azure.ai.voicelive.models.SessionServerEvent":"VoiceLive.ServerEvent","com.azure.ai.voicelive.models.SessionUpdateAvatarConnecting":"VoiceLive.ServerEventSessionAvatarConnecting","com.azure.ai.voicelive.models.SessionUpdateConversationItemCreated":"VoiceLive.ServerEventConversationItemCreated","com.azure.ai.voicelive.models.SessionUpdateConversationItemDeleted":"VoiceLive.ServerEventConversationItemDeleted","com.azure.ai.voicelive.models.SessionUpdateConversationItemInputAudioTranscriptionCompleted":"VoiceLive.ServerEventConversationItemInputAudioTranscriptionCompleted","com.azure.ai.voicelive.models.SessionUpdateConversationItemInputAudioTranscriptionDelta":"VoiceLive.ServerEventConversationItemInputAudioTranscriptionDelta","com.azure.ai.voicelive.models.SessionUpdateConversationItemInputAudioTranscriptionFailed":"VoiceLive.ServerEventConversationItemInputAudioTranscriptionFailed","com.azure.ai.voicelive.models.SessionUpdateConversationItemRetrieved":"VoiceLive.ServerEventConversationItemRetrieved","com.azure.ai.voicelive.models.SessionUpdateConversationItemTruncated":"VoiceLive.ServerEventConversationItemTruncated","com.azure.ai.voicelive.models.SessionUpdateError":"VoiceLive.ServerEventError","com.azure.ai.voicelive.models.SessionUpdateErrorDetails":"VoiceLive.ServerEventErrorDetails","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferCleared":"VoiceLive.ServerEventInputAudioBufferCleared","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferCommitted":"VoiceLive.ServerEventInputAudioBufferCommitted","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferSpeechStarted":"VoiceLive.ServerEventInputAudioBufferSpeechStarted","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferSpeechStopped":"VoiceLive.ServerEventInputAudioBufferSpeechStopped","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationBlendshapeDelta":"VoiceLive.ServerEventResponseAnimationBlendshapeDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationBlendshapeDone":"VoiceLive.ServerEventResponseAnimationBlendshapeDone","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationVisemeDelta":"VoiceLive.ServerEventResponseAnimationVisemeDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationVisemeDone":"VoiceLive.ServerEventResponseAnimationVisemeDone","com.azure.ai.voicelive.models.SessionUpdateResponseAudioDelta":"VoiceLive.ServerEventResponseAudioDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAudioDone":"VoiceLive.ServerEventResponseAudioDone","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTimestampDelta":"VoiceLive.ServerEventResponseAudioTimestampDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTimestampDone":"VoiceLive.ServerEventResponseAudioTimestampDone","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTranscriptDelta":"VoiceLive.ServerEventResponseAudioTranscriptDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTranscriptDone":"VoiceLive.ServerEventResponseAudioTranscriptDone","com.azure.ai.voicelive.models.SessionUpdateResponseContentPartAdded":"VoiceLive.ServerEventResponseContentPartAdded","com.azure.ai.voicelive.models.SessionUpdateResponseContentPartDone":"VoiceLive.ServerEventResponseContentPartDone","com.azure.ai.voicelive.models.SessionUpdateResponseCreated":"VoiceLive.ServerEventResponseCreated","com.azure.ai.voicelive.models.SessionUpdateResponseDone":"VoiceLive.ServerEventResponseDone","com.azure.ai.voicelive.models.SessionUpdateResponseFunctionCallArgumentsDelta":"VoiceLive.ServerEventResponseFunctionCallArgumentsDelta","com.azure.ai.voicelive.models.SessionUpdateResponseFunctionCallArgumentsDone":"VoiceLive.ServerEventResponseFunctionCallArgumentsDone","com.azure.ai.voicelive.models.SessionUpdateResponseOutputItemAdded":"VoiceLive.ServerEventResponseOutputItemAdded","com.azure.ai.voicelive.models.SessionUpdateResponseOutputItemDone":"VoiceLive.ServerEventResponseOutputItemDone","com.azure.ai.voicelive.models.SessionUpdateResponseTextDelta":"VoiceLive.ServerEventResponseTextDelta","com.azure.ai.voicelive.models.SessionUpdateResponseTextDone":"VoiceLive.ServerEventResponseTextDone","com.azure.ai.voicelive.models.SessionUpdateSessionCreated":"VoiceLive.ServerEventSessionCreated","com.azure.ai.voicelive.models.SessionUpdateSessionUpdated":"VoiceLive.ServerEventSessionUpdated","com.azure.ai.voicelive.models.StaticInterimResponseConfig":"VoiceLive.StaticInterimResponseConfig","com.azure.ai.voicelive.models.SystemMessageItem":"VoiceLive.SystemMessageItem","com.azure.ai.voicelive.models.ToolChoiceFunctionSelection":"VoiceLive.ToolChoiceFunctionObject","com.azure.ai.voicelive.models.ToolChoiceLiteral":"VoiceLive.ToolChoiceLiteral","com.azure.ai.voicelive.models.ToolChoiceSelection":"VoiceLive.ToolChoiceObject","com.azure.ai.voicelive.models.ToolType":"VoiceLive.ToolType","com.azure.ai.voicelive.models.TranscriptionPhrase":"VoiceLive.TranscriptionPhrase","com.azure.ai.voicelive.models.TranscriptionWord":"VoiceLive.TranscriptionWord","com.azure.ai.voicelive.models.TurnDetection":"VoiceLive.TurnDetection","com.azure.ai.voicelive.models.TurnDetectionType":"VoiceLive.TurnDetectionType","com.azure.ai.voicelive.models.UserMessageItem":"VoiceLive.UserMessageItem","com.azure.ai.voicelive.models.VideoBackground":"VoiceLive.Background","com.azure.ai.voicelive.models.VideoCrop":"VoiceLive.VideoCrop","com.azure.ai.voicelive.models.VideoParams":"VoiceLive.VideoParams","com.azure.ai.voicelive.models.VideoParamsCodec":null,"com.azure.ai.voicelive.models.VideoResolution":"VoiceLive.VideoResolution","com.azure.ai.voicelive.models.VoiceLiveContentPart":"VoiceLive.ContentPart","com.azure.ai.voicelive.models.VoiceLiveErrorDetails":"VoiceLive.VoiceLiveErrorDetails","com.azure.ai.voicelive.models.VoiceLiveFunctionDefinition":"VoiceLive.FunctionTool","com.azure.ai.voicelive.models.VoiceLiveSessionOptions":"VoiceLive.RequestSession","com.azure.ai.voicelive.models.VoiceLiveSessionResponse":"VoiceLive.ResponseSession","com.azure.ai.voicelive.models.VoiceLiveToolDefinition":"VoiceLive.Tool"},"generatedFiles":["src/main/java/com/azure/ai/voicelive/implementation/package-info.java","src/main/java/com/azure/ai/voicelive/models/AnimationOptions.java","src/main/java/com/azure/ai/voicelive/models/AnimationOutputType.java","src/main/java/com/azure/ai/voicelive/models/AssistantMessageItem.java","src/main/java/com/azure/ai/voicelive/models/AudioEchoCancellation.java","src/main/java/com/azure/ai/voicelive/models/AudioInputTranscriptionOptions.java","src/main/java/com/azure/ai/voicelive/models/AudioInputTranscriptionOptionsModel.java","src/main/java/com/azure/ai/voicelive/models/AudioNoiseReduction.java","src/main/java/com/azure/ai/voicelive/models/AudioNoiseReductionType.java","src/main/java/com/azure/ai/voicelive/models/AudioTimestampType.java","src/main/java/com/azure/ai/voicelive/models/AvatarConfigTypes.java","src/main/java/com/azure/ai/voicelive/models/AvatarOptions.java","src/main/java/com/azure/ai/voicelive/models/AvatarOutputProtocol.java","src/main/java/com/azure/ai/voicelive/models/AzureAvatarVoiceSyncVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureCustomVoice.java","src/main/java/com/azure/ai/voicelive/models/AzurePersonalVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticEouDetection.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticEouDetectionEn.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticEouDetectionMultilingual.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticVadTurnDetection.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticVadTurnDetectionEn.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticVadTurnDetectionMultilingual.java","src/main/java/com/azure/ai/voicelive/models/AzureStandardVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureVoiceType.java","src/main/java/com/azure/ai/voicelive/models/CachedTokenDetails.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemCreate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemDelete.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemRetrieve.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemTruncate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferAppend.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferClear.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferCommit.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioClear.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnAppend.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnCancel.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnEnd.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnStart.java","src/main/java/com/azure/ai/voicelive/models/ClientEventOutputAudioBufferClear.java","src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCancel.java","src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCreate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventSessionAvatarConnect.java","src/main/java/com/azure/ai/voicelive/models/ClientEventSessionUpdate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventType.java","src/main/java/com/azure/ai/voicelive/models/ContentPartType.java","src/main/java/com/azure/ai/voicelive/models/ConversationRequestItem.java","src/main/java/com/azure/ai/voicelive/models/EouDetection.java","src/main/java/com/azure/ai/voicelive/models/EouDetectionModel.java","src/main/java/com/azure/ai/voicelive/models/EouThresholdLevel.java","src/main/java/com/azure/ai/voicelive/models/FileSearchResult.java","src/main/java/com/azure/ai/voicelive/models/FunctionCallItem.java","src/main/java/com/azure/ai/voicelive/models/FunctionCallOutputItem.java","src/main/java/com/azure/ai/voicelive/models/IceServer.java","src/main/java/com/azure/ai/voicelive/models/InputAudioContentPart.java","src/main/java/com/azure/ai/voicelive/models/InputAudioFormat.java","src/main/java/com/azure/ai/voicelive/models/InputTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/InputTokenDetails.java","src/main/java/com/azure/ai/voicelive/models/InteractionModality.java","src/main/java/com/azure/ai/voicelive/models/InterimResponseConfigBase.java","src/main/java/com/azure/ai/voicelive/models/InterimResponseConfigType.java","src/main/java/com/azure/ai/voicelive/models/InterimResponseTrigger.java","src/main/java/com/azure/ai/voicelive/models/ItemParamStatus.java","src/main/java/com/azure/ai/voicelive/models/ItemType.java","src/main/java/com/azure/ai/voicelive/models/LlmInterimResponseConfig.java","src/main/java/com/azure/ai/voicelive/models/LogProbProperties.java","src/main/java/com/azure/ai/voicelive/models/McpApprovalResponseRequestItem.java","src/main/java/com/azure/ai/voicelive/models/McpApprovalType.java","src/main/java/com/azure/ai/voicelive/models/McpServer.java","src/main/java/com/azure/ai/voicelive/models/McpTool.java","src/main/java/com/azure/ai/voicelive/models/MessageContentPart.java","src/main/java/com/azure/ai/voicelive/models/MessageItem.java","src/main/java/com/azure/ai/voicelive/models/OpenAIVoice.java","src/main/java/com/azure/ai/voicelive/models/OpenAIVoiceName.java","src/main/java/com/azure/ai/voicelive/models/OutputAudioFormat.java","src/main/java/com/azure/ai/voicelive/models/OutputTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/OutputTokenDetails.java","src/main/java/com/azure/ai/voicelive/models/PersonalVoiceModels.java","src/main/java/com/azure/ai/voicelive/models/PhotoAvatarBaseModes.java","src/main/java/com/azure/ai/voicelive/models/ReasoningEffort.java","src/main/java/com/azure/ai/voicelive/models/RequestAudioContentPart.java","src/main/java/com/azure/ai/voicelive/models/RequestImageContentPart.java","src/main/java/com/azure/ai/voicelive/models/RequestImageContentPartDetail.java","src/main/java/com/azure/ai/voicelive/models/RequestTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/RespondingAgentOptions.java","src/main/java/com/azure/ai/voicelive/models/ResponseAudioContentPart.java","src/main/java/com/azure/ai/voicelive/models/ResponseCancelledDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseCancelledDetailsReason.java","src/main/java/com/azure/ai/voicelive/models/ResponseCreateParams.java","src/main/java/com/azure/ai/voicelive/models/ResponseFailedDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseFileSearchCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseFileSearchCallItemStatus.java","src/main/java/com/azure/ai/voicelive/models/ResponseFunctionCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseFunctionCallOutputItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseIncompleteDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseIncompleteDetailsReason.java","src/main/java/com/azure/ai/voicelive/models/ResponseItemObject.java","src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalRequestItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalResponseItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMcpCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMcpListToolItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMessageRole.java","src/main/java/com/azure/ai/voicelive/models/ResponseObject.java","src/main/java/com/azure/ai/voicelive/models/ResponseStatusDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/ResponseTokenStatistics.java","src/main/java/com/azure/ai/voicelive/models/ResponseWebSearchCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseWebSearchCallItemStatus.java","src/main/java/com/azure/ai/voicelive/models/Scene.java","src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsFailed.java","src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventOutputAudioBufferCleared.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseAudioTranscriptAnnotationAdded.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallSearching.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDelta.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDone.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallFailed.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseVideoDelta.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallSearching.java","src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToIdle.java","src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToSpeaking.java","src/main/java/com/azure/ai/voicelive/models/ServerEventType.java","src/main/java/com/azure/ai/voicelive/models/ServerEventWarning.java","src/main/java/com/azure/ai/voicelive/models/ServerEventWarningDetails.java","src/main/java/com/azure/ai/voicelive/models/ServerVadTurnDetection.java","src/main/java/com/azure/ai/voicelive/models/SessionClientEvent.java","src/main/java/com/azure/ai/voicelive/models/SessionIncludeOption.java","src/main/java/com/azure/ai/voicelive/models/SessionResponse.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseItem.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseItemStatus.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseMessageItem.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseStatus.java","src/main/java/com/azure/ai/voicelive/models/SessionServerEvent.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateAvatarConnecting.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemCreated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemDeleted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionCompleted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionFailed.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemRetrieved.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemTruncated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateError.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateErrorDetails.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCleared.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCommitted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStarted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStopped.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartAdded.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseCreated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemAdded.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionCreated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionUpdated.java","src/main/java/com/azure/ai/voicelive/models/StaticInterimResponseConfig.java","src/main/java/com/azure/ai/voicelive/models/SystemMessageItem.java","src/main/java/com/azure/ai/voicelive/models/ToolChoiceFunctionSelection.java","src/main/java/com/azure/ai/voicelive/models/ToolChoiceLiteral.java","src/main/java/com/azure/ai/voicelive/models/ToolChoiceSelection.java","src/main/java/com/azure/ai/voicelive/models/ToolType.java","src/main/java/com/azure/ai/voicelive/models/TranscriptionPhrase.java","src/main/java/com/azure/ai/voicelive/models/TranscriptionWord.java","src/main/java/com/azure/ai/voicelive/models/TurnDetection.java","src/main/java/com/azure/ai/voicelive/models/TurnDetectionType.java","src/main/java/com/azure/ai/voicelive/models/UserMessageItem.java","src/main/java/com/azure/ai/voicelive/models/VideoBackground.java","src/main/java/com/azure/ai/voicelive/models/VideoCrop.java","src/main/java/com/azure/ai/voicelive/models/VideoParams.java","src/main/java/com/azure/ai/voicelive/models/VideoParamsCodec.java","src/main/java/com/azure/ai/voicelive/models/VideoResolution.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveContentPart.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveErrorDetails.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveFunctionDefinition.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionOptions.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionResponse.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveToolDefinition.java","src/main/java/com/azure/ai/voicelive/models/package-info.java","src/main/java/com/azure/ai/voicelive/package-info.java","src/main/java/module-info.java"]}
\ No newline at end of file
+{"flavor":"azure","apiVersions":{"VoiceLive":"2026-04-10"},"crossLanguagePackageId":"VoiceLive","crossLanguageVersion":"a27d51d71448","crossLanguageDefinitions":{"com.azure.ai.voicelive.models.AnimationOptions":"VoiceLive.Animation","com.azure.ai.voicelive.models.AnimationOutputType":"VoiceLive.AnimationOutputType","com.azure.ai.voicelive.models.AssistantMessageItem":"VoiceLive.AssistantMessageItem","com.azure.ai.voicelive.models.AudioEchoCancellation":"VoiceLive.AudioEchoCancellation","com.azure.ai.voicelive.models.AudioInputTranscriptionOptions":"VoiceLive.AudioInputTranscriptionOptions","com.azure.ai.voicelive.models.AudioInputTranscriptionOptionsModel":"VoiceLive.AudioInputTranscriptionOptions.model.anonymous","com.azure.ai.voicelive.models.AudioNoiseReduction":"VoiceLive.AudioNoiseReduction","com.azure.ai.voicelive.models.AudioNoiseReductionType":"VoiceLive.AudioNoiseReduction.type.anonymous","com.azure.ai.voicelive.models.AudioTimestampType":"VoiceLive.AudioTimestampType","com.azure.ai.voicelive.models.AvatarConfigTypes":"VoiceLive.AvatarConfigTypes","com.azure.ai.voicelive.models.AvatarOptions":"VoiceLive.AvatarConfig","com.azure.ai.voicelive.models.AvatarOutputProtocol":"VoiceLive.AvatarOutputProtocol","com.azure.ai.voicelive.models.AzureAvatarVoiceSyncVoice":"VoiceLive.AzureAvatarVoiceSyncVoice","com.azure.ai.voicelive.models.AzureCustomVoice":"VoiceLive.AzureCustomVoice","com.azure.ai.voicelive.models.AzurePersonalVoice":"VoiceLive.AzurePersonalVoice","com.azure.ai.voicelive.models.AzureSemanticEouDetection":"VoiceLive.AzureSemanticDetection","com.azure.ai.voicelive.models.AzureSemanticEouDetectionEn":"VoiceLive.AzureSemanticDetectionEn","com.azure.ai.voicelive.models.AzureSemanticEouDetectionMultilingual":"VoiceLive.AzureSemanticDetectionMultilingual","com.azure.ai.voicelive.models.AzureSemanticVadTurnDetection":"VoiceLive.AzureSemanticVad","com.azure.ai.voicelive.models.AzureSemanticVadTurnDetectionEn":"VoiceLive.AzureSemanticVadEn","com.azure.ai.voicelive.models.AzureSemanticVadTurnDetectionMultilingual":"VoiceLive.AzureSemanticVadMultilingual","com.azure.ai.voicelive.models.AzureStandardVoice":"VoiceLive.AzureStandardVoice","com.azure.ai.voicelive.models.AzureVoice":"VoiceLive.AzureVoice","com.azure.ai.voicelive.models.AzureVoiceType":"VoiceLive.AzureVoiceType","com.azure.ai.voicelive.models.CachedTokenDetails":"VoiceLive.CachedTokenDetails","com.azure.ai.voicelive.models.ClientEventConversationItemCreate":"VoiceLive.ClientEventConversationItemCreate","com.azure.ai.voicelive.models.ClientEventConversationItemDelete":"VoiceLive.ClientEventConversationItemDelete","com.azure.ai.voicelive.models.ClientEventConversationItemRetrieve":"VoiceLive.ClientEventConversationItemRetrieve","com.azure.ai.voicelive.models.ClientEventConversationItemTruncate":"VoiceLive.ClientEventConversationItemTruncate","com.azure.ai.voicelive.models.ClientEventInputAudioBufferAppend":"VoiceLive.ClientEventInputAudioBufferAppend","com.azure.ai.voicelive.models.ClientEventInputAudioBufferClear":"VoiceLive.ClientEventInputAudioBufferClear","com.azure.ai.voicelive.models.ClientEventInputAudioBufferCommit":"VoiceLive.ClientEventInputAudioBufferCommit","com.azure.ai.voicelive.models.ClientEventInputAudioClear":"VoiceLive.ClientEventInputAudioClear","com.azure.ai.voicelive.models.ClientEventInputAudioTurnAppend":"VoiceLive.ClientEventInputAudioTurnAppend","com.azure.ai.voicelive.models.ClientEventInputAudioTurnCancel":"VoiceLive.ClientEventInputAudioTurnCancel","com.azure.ai.voicelive.models.ClientEventInputAudioTurnEnd":"VoiceLive.ClientEventInputAudioTurnEnd","com.azure.ai.voicelive.models.ClientEventInputAudioTurnStart":"VoiceLive.ClientEventInputAudioTurnStart","com.azure.ai.voicelive.models.ClientEventOutputAudioBufferClear":"VoiceLive.ClientEventOutputAudioBufferClear","com.azure.ai.voicelive.models.ClientEventResponseCancel":"VoiceLive.ClientEventResponseCancel","com.azure.ai.voicelive.models.ClientEventResponseCreate":"VoiceLive.ClientEventResponseCreate","com.azure.ai.voicelive.models.ClientEventSessionAvatarConnect":"VoiceLive.ClientEventSessionAvatarConnect","com.azure.ai.voicelive.models.ClientEventSessionUpdate":"VoiceLive.ClientEventSessionUpdate","com.azure.ai.voicelive.models.ClientEventType":"VoiceLive.ClientEventType","com.azure.ai.voicelive.models.ContentPartType":"VoiceLive.ContentPartType","com.azure.ai.voicelive.models.ConversationRequestItem":"VoiceLive.ConversationRequestItem","com.azure.ai.voicelive.models.EouDetection":"VoiceLive.EouDetection","com.azure.ai.voicelive.models.EouDetectionModel":"VoiceLive.EouDetection.model.anonymous","com.azure.ai.voicelive.models.EouThresholdLevel":"VoiceLive.EouThresholdLevel","com.azure.ai.voicelive.models.FileSearchResult":"VoiceLive.FileSearchResult","com.azure.ai.voicelive.models.FunctionCallItem":"VoiceLive.FunctionCallItem","com.azure.ai.voicelive.models.FunctionCallOutputItem":"VoiceLive.FunctionCallOutputItem","com.azure.ai.voicelive.models.IceServer":"VoiceLive.IceServer","com.azure.ai.voicelive.models.InputAudioContentPart":"VoiceLive.InputAudioContentPart","com.azure.ai.voicelive.models.InputAudioFormat":"VoiceLive.InputAudioFormat","com.azure.ai.voicelive.models.InputTextContentPart":"VoiceLive.InputTextContentPart","com.azure.ai.voicelive.models.InputTokenDetails":"VoiceLive.InputTokenDetails","com.azure.ai.voicelive.models.InteractionModality":"VoiceLive.Modality","com.azure.ai.voicelive.models.InterimResponseConfigBase":"VoiceLive.InterimResponseConfigBase","com.azure.ai.voicelive.models.InterimResponseConfigType":"VoiceLive.InterimResponseConfigType","com.azure.ai.voicelive.models.InterimResponseTrigger":"VoiceLive.InterimResponseTrigger","com.azure.ai.voicelive.models.ItemParamStatus":"VoiceLive.ItemParamStatus","com.azure.ai.voicelive.models.ItemType":"VoiceLive.ItemType","com.azure.ai.voicelive.models.LlmInterimResponseConfig":"VoiceLive.LlmInterimResponseConfig","com.azure.ai.voicelive.models.LogProbProperties":"VoiceLive.LogProbProperties","com.azure.ai.voicelive.models.McpApprovalResponseRequestItem":"VoiceLive.MCPApprovalResponseRequestItem","com.azure.ai.voicelive.models.McpApprovalType":"VoiceLive.MCPApprovalType","com.azure.ai.voicelive.models.McpServer":"VoiceLive.MCPServer","com.azure.ai.voicelive.models.McpTool":"VoiceLive.MCPTool","com.azure.ai.voicelive.models.MessageContentPart":"VoiceLive.MessageContentPart","com.azure.ai.voicelive.models.MessageItem":"VoiceLive.MessageItem","com.azure.ai.voicelive.models.OpenAIVoice":"VoiceLive.OpenAIVoice","com.azure.ai.voicelive.models.OpenAIVoiceName":"VoiceLive.OAIVoice","com.azure.ai.voicelive.models.OutputAudioFormat":"VoiceLive.OutputAudioFormat","com.azure.ai.voicelive.models.OutputTextContentPart":"VoiceLive.OutputTextContentPart","com.azure.ai.voicelive.models.OutputTokenDetails":"VoiceLive.OutputTokenDetails","com.azure.ai.voicelive.models.PersonalVoiceModels":"VoiceLive.PersonalVoiceModels","com.azure.ai.voicelive.models.PhotoAvatarBaseModes":"VoiceLive.PhotoAvatarBaseModes","com.azure.ai.voicelive.models.ReasoningEffort":"VoiceLive.ReasoningEffort","com.azure.ai.voicelive.models.RequestAudioContentPart":"VoiceLive.RequestAudioContentPart","com.azure.ai.voicelive.models.RequestImageContentPart":"VoiceLive.RequestImageContentPart","com.azure.ai.voicelive.models.RequestImageContentPartDetail":"VoiceLive.RequestImageContentPartDetail","com.azure.ai.voicelive.models.RequestTextContentPart":"VoiceLive.RequestTextContentPart","com.azure.ai.voicelive.models.RespondingAgentOptions":"VoiceLive.AgentConfig","com.azure.ai.voicelive.models.ResponseAudioContentPart":"VoiceLive.ResponseAudioContentPart","com.azure.ai.voicelive.models.ResponseCancelledDetails":"VoiceLive.ResponseCancelledDetails","com.azure.ai.voicelive.models.ResponseCancelledDetailsReason":"VoiceLive.ResponseCancelledDetails.reason.anonymous","com.azure.ai.voicelive.models.ResponseCreateParams":"VoiceLive.ResponseCreateParams","com.azure.ai.voicelive.models.ResponseFailedDetails":"VoiceLive.ResponseFailedDetails","com.azure.ai.voicelive.models.ResponseFileSearchCallItem":"VoiceLive.ResponseFileSearchCallItem","com.azure.ai.voicelive.models.ResponseFileSearchCallItemStatus":"VoiceLive.ResponseFileSearchCallItem.status.anonymous","com.azure.ai.voicelive.models.ResponseFunctionCallItem":"VoiceLive.ResponseFunctionCallItem","com.azure.ai.voicelive.models.ResponseFunctionCallOutputItem":"VoiceLive.ResponseFunctionCallOutputItem","com.azure.ai.voicelive.models.ResponseIncompleteDetails":"VoiceLive.ResponseIncompleteDetails","com.azure.ai.voicelive.models.ResponseIncompleteDetailsReason":"VoiceLive.ResponseIncompleteDetails.reason.anonymous","com.azure.ai.voicelive.models.ResponseItemObject":null,"com.azure.ai.voicelive.models.ResponseMcpApprovalRequestItem":"VoiceLive.ResponseMCPApprovalRequestItem","com.azure.ai.voicelive.models.ResponseMcpApprovalResponseItem":"VoiceLive.ResponseMCPApprovalResponseItem","com.azure.ai.voicelive.models.ResponseMcpCallItem":"VoiceLive.ResponseMCPCallItem","com.azure.ai.voicelive.models.ResponseMcpListToolItem":"VoiceLive.ResponseMCPListToolItem","com.azure.ai.voicelive.models.ResponseMessageRole":"VoiceLive.MessageRole","com.azure.ai.voicelive.models.ResponseObject":null,"com.azure.ai.voicelive.models.ResponseStatusDetails":"VoiceLive.ResponseStatusDetails","com.azure.ai.voicelive.models.ResponseTextContentPart":"VoiceLive.ResponseTextContentPart","com.azure.ai.voicelive.models.ResponseTokenStatistics":"VoiceLive.TokenUsage","com.azure.ai.voicelive.models.ResponseWebSearchCallItem":"VoiceLive.ResponseWebSearchCallItem","com.azure.ai.voicelive.models.ResponseWebSearchCallItemStatus":"VoiceLive.ResponseWebSearchCallItem.status.anonymous","com.azure.ai.voicelive.models.Scene":"VoiceLive.Scene","com.azure.ai.voicelive.models.ServerEventMcpListToolsCompleted":"VoiceLive.ServerEventMcpListToolsCompleted","com.azure.ai.voicelive.models.ServerEventMcpListToolsFailed":"VoiceLive.ServerEventMcpListToolsFailed","com.azure.ai.voicelive.models.ServerEventMcpListToolsInProgress":"VoiceLive.ServerEventMcpListToolsInProgress","com.azure.ai.voicelive.models.ServerEventOutputAudioBufferCleared":"VoiceLive.ServerEventOutputAudioBufferCleared","com.azure.ai.voicelive.models.ServerEventResponseAudioTranscriptAnnotationAdded":"VoiceLive.ServerEventResponseAudioTranscriptAnnotationAdded","com.azure.ai.voicelive.models.ServerEventResponseFileSearchCallCompleted":"VoiceLive.ServerEventResponseFileSearchCallCompleted","com.azure.ai.voicelive.models.ServerEventResponseFileSearchCallInProgress":"VoiceLive.ServerEventResponseFileSearchCallInProgress","com.azure.ai.voicelive.models.ServerEventResponseFileSearchCallSearching":"VoiceLive.ServerEventResponseFileSearchCallSearching","com.azure.ai.voicelive.models.ServerEventResponseMcpCallArgumentsDelta":"VoiceLive.ServerEventResponseMcpCallArgumentsDelta","com.azure.ai.voicelive.models.ServerEventResponseMcpCallArgumentsDone":"VoiceLive.ServerEventResponseMcpCallArgumentsDone","com.azure.ai.voicelive.models.ServerEventResponseMcpCallCompleted":"VoiceLive.ServerEventResponseMcpCallCompleted","com.azure.ai.voicelive.models.ServerEventResponseMcpCallFailed":"VoiceLive.ServerEventResponseMcpCallFailed","com.azure.ai.voicelive.models.ServerEventResponseMcpCallInProgress":"VoiceLive.ServerEventResponseMcpCallInProgress","com.azure.ai.voicelive.models.ServerEventResponseVideoDelta":"VoiceLive.ServerEventResponseVideoDelta","com.azure.ai.voicelive.models.ServerEventResponseWebSearchCallCompleted":"VoiceLive.ServerEventResponseWebSearchCallCompleted","com.azure.ai.voicelive.models.ServerEventResponseWebSearchCallInProgress":"VoiceLive.ServerEventResponseWebSearchCallInProgress","com.azure.ai.voicelive.models.ServerEventResponseWebSearchCallSearching":"VoiceLive.ServerEventResponseWebSearchCallSearching","com.azure.ai.voicelive.models.ServerEventSessionAvatarSwitchToIdle":"VoiceLive.ServerEventSessionAvatarSwitchToIdle","com.azure.ai.voicelive.models.ServerEventSessionAvatarSwitchToSpeaking":"VoiceLive.ServerEventSessionAvatarSwitchToSpeaking","com.azure.ai.voicelive.models.ServerEventType":"VoiceLive.ServerEventType","com.azure.ai.voicelive.models.ServerEventWarning":"VoiceLive.ServerEventWarning","com.azure.ai.voicelive.models.ServerEventWarningDetails":"VoiceLive.ServerEventWarningDetails","com.azure.ai.voicelive.models.ServerVadTurnDetection":"VoiceLive.ServerVad","com.azure.ai.voicelive.models.SessionClientEvent":"VoiceLive.ClientEvent","com.azure.ai.voicelive.models.SessionIncludeOption":"VoiceLive.SessionIncludeOption","com.azure.ai.voicelive.models.SessionResponse":"VoiceLive.Response","com.azure.ai.voicelive.models.SessionResponseItem":"VoiceLive.ResponseItem","com.azure.ai.voicelive.models.SessionResponseItemStatus":"VoiceLive.ResponseItemStatus","com.azure.ai.voicelive.models.SessionResponseMessageItem":"VoiceLive.ResponseMessageItem","com.azure.ai.voicelive.models.SessionResponseStatus":"VoiceLive.ResponseStatus","com.azure.ai.voicelive.models.SessionServerEvent":"VoiceLive.ServerEvent","com.azure.ai.voicelive.models.SessionUpdateAvatarConnecting":"VoiceLive.ServerEventSessionAvatarConnecting","com.azure.ai.voicelive.models.SessionUpdateConversationItemCreated":"VoiceLive.ServerEventConversationItemCreated","com.azure.ai.voicelive.models.SessionUpdateConversationItemDeleted":"VoiceLive.ServerEventConversationItemDeleted","com.azure.ai.voicelive.models.SessionUpdateConversationItemInputAudioTranscriptionCompleted":"VoiceLive.ServerEventConversationItemInputAudioTranscriptionCompleted","com.azure.ai.voicelive.models.SessionUpdateConversationItemInputAudioTranscriptionDelta":"VoiceLive.ServerEventConversationItemInputAudioTranscriptionDelta","com.azure.ai.voicelive.models.SessionUpdateConversationItemInputAudioTranscriptionFailed":"VoiceLive.ServerEventConversationItemInputAudioTranscriptionFailed","com.azure.ai.voicelive.models.SessionUpdateConversationItemRetrieved":"VoiceLive.ServerEventConversationItemRetrieved","com.azure.ai.voicelive.models.SessionUpdateConversationItemTruncated":"VoiceLive.ServerEventConversationItemTruncated","com.azure.ai.voicelive.models.SessionUpdateError":"VoiceLive.ServerEventError","com.azure.ai.voicelive.models.SessionUpdateErrorDetails":"VoiceLive.ServerEventErrorDetails","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferCleared":"VoiceLive.ServerEventInputAudioBufferCleared","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferCommitted":"VoiceLive.ServerEventInputAudioBufferCommitted","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferSpeechStarted":"VoiceLive.ServerEventInputAudioBufferSpeechStarted","com.azure.ai.voicelive.models.SessionUpdateInputAudioBufferSpeechStopped":"VoiceLive.ServerEventInputAudioBufferSpeechStopped","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationBlendshapeDelta":"VoiceLive.ServerEventResponseAnimationBlendshapeDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationBlendshapeDone":"VoiceLive.ServerEventResponseAnimationBlendshapeDone","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationVisemeDelta":"VoiceLive.ServerEventResponseAnimationVisemeDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAnimationVisemeDone":"VoiceLive.ServerEventResponseAnimationVisemeDone","com.azure.ai.voicelive.models.SessionUpdateResponseAudioDelta":"VoiceLive.ServerEventResponseAudioDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAudioDone":"VoiceLive.ServerEventResponseAudioDone","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTimestampDelta":"VoiceLive.ServerEventResponseAudioTimestampDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTimestampDone":"VoiceLive.ServerEventResponseAudioTimestampDone","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTranscriptDelta":"VoiceLive.ServerEventResponseAudioTranscriptDelta","com.azure.ai.voicelive.models.SessionUpdateResponseAudioTranscriptDone":"VoiceLive.ServerEventResponseAudioTranscriptDone","com.azure.ai.voicelive.models.SessionUpdateResponseContentPartAdded":"VoiceLive.ServerEventResponseContentPartAdded","com.azure.ai.voicelive.models.SessionUpdateResponseContentPartDone":"VoiceLive.ServerEventResponseContentPartDone","com.azure.ai.voicelive.models.SessionUpdateResponseCreated":"VoiceLive.ServerEventResponseCreated","com.azure.ai.voicelive.models.SessionUpdateResponseDone":"VoiceLive.ServerEventResponseDone","com.azure.ai.voicelive.models.SessionUpdateResponseFunctionCallArgumentsDelta":"VoiceLive.ServerEventResponseFunctionCallArgumentsDelta","com.azure.ai.voicelive.models.SessionUpdateResponseFunctionCallArgumentsDone":"VoiceLive.ServerEventResponseFunctionCallArgumentsDone","com.azure.ai.voicelive.models.SessionUpdateResponseOutputItemAdded":"VoiceLive.ServerEventResponseOutputItemAdded","com.azure.ai.voicelive.models.SessionUpdateResponseOutputItemDone":"VoiceLive.ServerEventResponseOutputItemDone","com.azure.ai.voicelive.models.SessionUpdateResponseTextDelta":"VoiceLive.ServerEventResponseTextDelta","com.azure.ai.voicelive.models.SessionUpdateResponseTextDone":"VoiceLive.ServerEventResponseTextDone","com.azure.ai.voicelive.models.SessionUpdateSessionCreated":"VoiceLive.ServerEventSessionCreated","com.azure.ai.voicelive.models.SessionUpdateSessionUpdated":"VoiceLive.ServerEventSessionUpdated","com.azure.ai.voicelive.models.StaticInterimResponseConfig":"VoiceLive.StaticInterimResponseConfig","com.azure.ai.voicelive.models.SystemMessageItem":"VoiceLive.SystemMessageItem","com.azure.ai.voicelive.models.ToolChoiceFunctionSelection":"VoiceLive.ToolChoiceFunctionObject","com.azure.ai.voicelive.models.ToolChoiceLiteral":"VoiceLive.ToolChoiceLiteral","com.azure.ai.voicelive.models.ToolChoiceSelection":"VoiceLive.ToolChoiceObject","com.azure.ai.voicelive.models.ToolType":"VoiceLive.ToolType","com.azure.ai.voicelive.models.TranscriptionPhrase":"VoiceLive.TranscriptionPhrase","com.azure.ai.voicelive.models.TranscriptionWord":"VoiceLive.TranscriptionWord","com.azure.ai.voicelive.models.TurnDetection":"VoiceLive.TurnDetection","com.azure.ai.voicelive.models.TurnDetectionType":"VoiceLive.TurnDetectionType","com.azure.ai.voicelive.models.UserMessageItem":"VoiceLive.UserMessageItem","com.azure.ai.voicelive.models.VideoBackground":"VoiceLive.Background","com.azure.ai.voicelive.models.VideoCrop":"VoiceLive.VideoCrop","com.azure.ai.voicelive.models.VideoParams":"VoiceLive.VideoParams","com.azure.ai.voicelive.models.VideoParamsCodec":null,"com.azure.ai.voicelive.models.VideoResolution":"VoiceLive.VideoResolution","com.azure.ai.voicelive.models.VoiceLiveContentPart":"VoiceLive.ContentPart","com.azure.ai.voicelive.models.VoiceLiveErrorDetails":"VoiceLive.VoiceLiveErrorDetails","com.azure.ai.voicelive.models.VoiceLiveFunctionDefinition":"VoiceLive.FunctionTool","com.azure.ai.voicelive.models.VoiceLiveSessionOptions":"VoiceLive.RequestSession","com.azure.ai.voicelive.models.VoiceLiveSessionResponse":"VoiceLive.ResponseSession","com.azure.ai.voicelive.models.VoiceLiveToolDefinition":"VoiceLive.Tool"},"generatedFiles":["src/main/java/com/azure/ai/voicelive/implementation/package-info.java","src/main/java/com/azure/ai/voicelive/models/AnimationOptions.java","src/main/java/com/azure/ai/voicelive/models/AnimationOutputType.java","src/main/java/com/azure/ai/voicelive/models/AssistantMessageItem.java","src/main/java/com/azure/ai/voicelive/models/AudioEchoCancellation.java","src/main/java/com/azure/ai/voicelive/models/AudioInputTranscriptionOptions.java","src/main/java/com/azure/ai/voicelive/models/AudioInputTranscriptionOptionsModel.java","src/main/java/com/azure/ai/voicelive/models/AudioNoiseReduction.java","src/main/java/com/azure/ai/voicelive/models/AudioNoiseReductionType.java","src/main/java/com/azure/ai/voicelive/models/AudioTimestampType.java","src/main/java/com/azure/ai/voicelive/models/AvatarConfigTypes.java","src/main/java/com/azure/ai/voicelive/models/AvatarOptions.java","src/main/java/com/azure/ai/voicelive/models/AvatarOutputProtocol.java","src/main/java/com/azure/ai/voicelive/models/AzureAvatarVoiceSyncVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureCustomVoice.java","src/main/java/com/azure/ai/voicelive/models/AzurePersonalVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticEouDetection.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticEouDetectionEn.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticEouDetectionMultilingual.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticVadTurnDetection.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticVadTurnDetectionEn.java","src/main/java/com/azure/ai/voicelive/models/AzureSemanticVadTurnDetectionMultilingual.java","src/main/java/com/azure/ai/voicelive/models/AzureStandardVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureVoice.java","src/main/java/com/azure/ai/voicelive/models/AzureVoiceType.java","src/main/java/com/azure/ai/voicelive/models/CachedTokenDetails.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemCreate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemDelete.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemRetrieve.java","src/main/java/com/azure/ai/voicelive/models/ClientEventConversationItemTruncate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferAppend.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferClear.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioBufferCommit.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioClear.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnAppend.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnCancel.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnEnd.java","src/main/java/com/azure/ai/voicelive/models/ClientEventInputAudioTurnStart.java","src/main/java/com/azure/ai/voicelive/models/ClientEventOutputAudioBufferClear.java","src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCancel.java","src/main/java/com/azure/ai/voicelive/models/ClientEventResponseCreate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventSessionAvatarConnect.java","src/main/java/com/azure/ai/voicelive/models/ClientEventSessionUpdate.java","src/main/java/com/azure/ai/voicelive/models/ClientEventType.java","src/main/java/com/azure/ai/voicelive/models/ContentPartType.java","src/main/java/com/azure/ai/voicelive/models/ConversationRequestItem.java","src/main/java/com/azure/ai/voicelive/models/EouDetection.java","src/main/java/com/azure/ai/voicelive/models/EouDetectionModel.java","src/main/java/com/azure/ai/voicelive/models/EouThresholdLevel.java","src/main/java/com/azure/ai/voicelive/models/FileSearchResult.java","src/main/java/com/azure/ai/voicelive/models/FunctionCallItem.java","src/main/java/com/azure/ai/voicelive/models/FunctionCallOutputItem.java","src/main/java/com/azure/ai/voicelive/models/IceServer.java","src/main/java/com/azure/ai/voicelive/models/InputAudioContentPart.java","src/main/java/com/azure/ai/voicelive/models/InputAudioFormat.java","src/main/java/com/azure/ai/voicelive/models/InputTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/InputTokenDetails.java","src/main/java/com/azure/ai/voicelive/models/InteractionModality.java","src/main/java/com/azure/ai/voicelive/models/InterimResponseConfigBase.java","src/main/java/com/azure/ai/voicelive/models/InterimResponseConfigType.java","src/main/java/com/azure/ai/voicelive/models/InterimResponseTrigger.java","src/main/java/com/azure/ai/voicelive/models/ItemParamStatus.java","src/main/java/com/azure/ai/voicelive/models/ItemType.java","src/main/java/com/azure/ai/voicelive/models/LlmInterimResponseConfig.java","src/main/java/com/azure/ai/voicelive/models/LogProbProperties.java","src/main/java/com/azure/ai/voicelive/models/McpApprovalResponseRequestItem.java","src/main/java/com/azure/ai/voicelive/models/McpApprovalType.java","src/main/java/com/azure/ai/voicelive/models/McpServer.java","src/main/java/com/azure/ai/voicelive/models/McpTool.java","src/main/java/com/azure/ai/voicelive/models/MessageContentPart.java","src/main/java/com/azure/ai/voicelive/models/MessageItem.java","src/main/java/com/azure/ai/voicelive/models/OpenAIVoice.java","src/main/java/com/azure/ai/voicelive/models/OpenAIVoiceName.java","src/main/java/com/azure/ai/voicelive/models/OutputAudioFormat.java","src/main/java/com/azure/ai/voicelive/models/OutputTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/OutputTokenDetails.java","src/main/java/com/azure/ai/voicelive/models/PersonalVoiceModels.java","src/main/java/com/azure/ai/voicelive/models/PhotoAvatarBaseModes.java","src/main/java/com/azure/ai/voicelive/models/ReasoningEffort.java","src/main/java/com/azure/ai/voicelive/models/RequestAudioContentPart.java","src/main/java/com/azure/ai/voicelive/models/RequestImageContentPart.java","src/main/java/com/azure/ai/voicelive/models/RequestImageContentPartDetail.java","src/main/java/com/azure/ai/voicelive/models/RequestTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/RespondingAgentOptions.java","src/main/java/com/azure/ai/voicelive/models/ResponseAudioContentPart.java","src/main/java/com/azure/ai/voicelive/models/ResponseCancelledDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseCancelledDetailsReason.java","src/main/java/com/azure/ai/voicelive/models/ResponseCreateParams.java","src/main/java/com/azure/ai/voicelive/models/ResponseFailedDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseFileSearchCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseFileSearchCallItemStatus.java","src/main/java/com/azure/ai/voicelive/models/ResponseFunctionCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseFunctionCallOutputItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseIncompleteDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseIncompleteDetailsReason.java","src/main/java/com/azure/ai/voicelive/models/ResponseItemObject.java","src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalRequestItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMcpApprovalResponseItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMcpCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMcpListToolItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseMessageRole.java","src/main/java/com/azure/ai/voicelive/models/ResponseObject.java","src/main/java/com/azure/ai/voicelive/models/ResponseStatusDetails.java","src/main/java/com/azure/ai/voicelive/models/ResponseTextContentPart.java","src/main/java/com/azure/ai/voicelive/models/ResponseTokenStatistics.java","src/main/java/com/azure/ai/voicelive/models/ResponseWebSearchCallItem.java","src/main/java/com/azure/ai/voicelive/models/ResponseWebSearchCallItemStatus.java","src/main/java/com/azure/ai/voicelive/models/Scene.java","src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsFailed.java","src/main/java/com/azure/ai/voicelive/models/ServerEventMcpListToolsInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventOutputAudioBufferCleared.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseAudioTranscriptAnnotationAdded.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseFileSearchCallSearching.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDelta.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallArgumentsDone.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallFailed.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseMcpCallInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseVideoDelta.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallCompleted.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallInProgress.java","src/main/java/com/azure/ai/voicelive/models/ServerEventResponseWebSearchCallSearching.java","src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToIdle.java","src/main/java/com/azure/ai/voicelive/models/ServerEventSessionAvatarSwitchToSpeaking.java","src/main/java/com/azure/ai/voicelive/models/ServerEventType.java","src/main/java/com/azure/ai/voicelive/models/ServerEventWarning.java","src/main/java/com/azure/ai/voicelive/models/ServerEventWarningDetails.java","src/main/java/com/azure/ai/voicelive/models/ServerVadTurnDetection.java","src/main/java/com/azure/ai/voicelive/models/SessionClientEvent.java","src/main/java/com/azure/ai/voicelive/models/SessionIncludeOption.java","src/main/java/com/azure/ai/voicelive/models/SessionResponse.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseItem.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseItemStatus.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseMessageItem.java","src/main/java/com/azure/ai/voicelive/models/SessionResponseStatus.java","src/main/java/com/azure/ai/voicelive/models/SessionServerEvent.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateAvatarConnecting.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemCreated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemDeleted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionCompleted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemInputAudioTranscriptionFailed.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemRetrieved.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateConversationItemTruncated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateError.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateErrorDetails.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCleared.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferCommitted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStarted.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateInputAudioBufferSpeechStopped.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationBlendshapeDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAnimationVisemeDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTimestampDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseAudioTranscriptDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartAdded.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseContentPartDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseCreated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseFunctionCallArgumentsDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemAdded.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseOutputItemDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDelta.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateResponseTextDone.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionCreated.java","src/main/java/com/azure/ai/voicelive/models/SessionUpdateSessionUpdated.java","src/main/java/com/azure/ai/voicelive/models/StaticInterimResponseConfig.java","src/main/java/com/azure/ai/voicelive/models/SystemMessageItem.java","src/main/java/com/azure/ai/voicelive/models/ToolChoiceFunctionSelection.java","src/main/java/com/azure/ai/voicelive/models/ToolChoiceLiteral.java","src/main/java/com/azure/ai/voicelive/models/ToolChoiceSelection.java","src/main/java/com/azure/ai/voicelive/models/ToolType.java","src/main/java/com/azure/ai/voicelive/models/TranscriptionPhrase.java","src/main/java/com/azure/ai/voicelive/models/TranscriptionWord.java","src/main/java/com/azure/ai/voicelive/models/TurnDetection.java","src/main/java/com/azure/ai/voicelive/models/TurnDetectionType.java","src/main/java/com/azure/ai/voicelive/models/UserMessageItem.java","src/main/java/com/azure/ai/voicelive/models/VideoBackground.java","src/main/java/com/azure/ai/voicelive/models/VideoCrop.java","src/main/java/com/azure/ai/voicelive/models/VideoParams.java","src/main/java/com/azure/ai/voicelive/models/VideoParamsCodec.java","src/main/java/com/azure/ai/voicelive/models/VideoResolution.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveContentPart.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveErrorDetails.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveFunctionDefinition.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionOptions.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveSessionResponse.java","src/main/java/com/azure/ai/voicelive/models/VoiceLiveToolDefinition.java","src/main/java/com/azure/ai/voicelive/models/package-info.java","src/main/java/com/azure/ai/voicelive/package-info.java","src/main/java/module-info.java"]}
\ No newline at end of file
diff --git a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/telemetry/GlobalTracingSample.java b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/telemetry/GlobalTracingSample.java
index 74be408839f2..333a1f85f7e4 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/telemetry/GlobalTracingSample.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/samples/java/com/azure/ai/voicelive/telemetry/GlobalTracingSample.java
@@ -157,7 +157,7 @@ private static Mono handleServerEvent(com.azure.ai.voicelive.models.Sessio
if (serverEvent instanceof SessionUpdateResponseDone) {
SessionResponse response = ((SessionUpdateResponseDone) serverEvent).getResponse();
if (response.getUsage() != null) {
- System.out.println(" Total tokens: " + response.getUsage().getTotalTokens());
+ System.out.println(" Total tokens: " + response.getUsage().getTotalTokenCount());
}
}
return Mono.empty();
diff --git a/sdk/voicelive/azure-ai-voicelive/tsp-location.yaml b/sdk/voicelive/azure-ai-voicelive/tsp-location.yaml
index 5dd1f4fa8dc7..e0aa3c5e6d9c 100644
--- a/sdk/voicelive/azure-ai-voicelive/tsp-location.yaml
+++ b/sdk/voicelive/azure-ai-voicelive/tsp-location.yaml
@@ -1,4 +1,4 @@
directory: specification/ai/data-plane/VoiceLive
-commit: 4d69968dee8ba220e3b8621b496eedbdb343b4ef
+commit: eca370c584051b74254a685f9b7f60c9683a9c26
repo: Azure/azure-rest-api-specs
additionalDirectories:
From cedb289e99b2c0413685b013ddd961d272885697 Mon Sep 17 00:00:00 2001
From: Xiting Zhang
Date: Wed, 27 May 2026 20:36:56 -0700
Subject: [PATCH 11/13] Fix VoiceLiveTracer to use renamed token-count getters
---
.../azure/ai/voicelive/implementation/VoiceLiveTracer.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/implementation/VoiceLiveTracer.java b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/implementation/VoiceLiveTracer.java
index 7ae23fa3aa9a..74ce04cf3f9c 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/implementation/VoiceLiveTracer.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/main/java/com/azure/ai/voicelive/implementation/VoiceLiveTracer.java
@@ -1040,8 +1040,8 @@ private void trackRecvTokenUsage(SessionServerEvent update, Span span) {
if (response != null) {
ResponseTokenStatistics usage = response.getUsage();
if (usage != null) {
- span.setAttribute(GEN_AI_USAGE_INPUT_TOKENS, (long) usage.getInputTokens());
- span.setAttribute(GEN_AI_USAGE_OUTPUT_TOKENS, (long) usage.getOutputTokens());
+ span.setAttribute(GEN_AI_USAGE_INPUT_TOKENS, usage.getInputTokenCount());
+ span.setAttribute(GEN_AI_USAGE_OUTPUT_TOKENS, usage.getOutputTokenCount());
}
}
}
From 0377780e8d60bebaa046551f6fde7eb40d34597e Mon Sep 17 00:00:00 2001
From: Xiting Zhang
Date: Wed, 27 May 2026 20:53:48 -0700
Subject: [PATCH 12/13] Update unit tests for renamed token-count and image_url
accessors
---
.../models/RequestImageContentPartTest.java | 24 +++++++++----------
.../TranscriptionAndIncludeOptionsTest.java | 8 +++----
2 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/RequestImageContentPartTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/RequestImageContentPartTest.java
index 11757ce01d11..997d1339e434 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/RequestImageContentPartTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/RequestImageContentPartTest.java
@@ -32,10 +32,10 @@ void testSetAndGetUrl() {
String imageUrl = "https://example.com/image.jpg";
// Act
- RequestImageContentPart result = imagePart.setUrl(imageUrl);
+ RequestImageContentPart result = imagePart.setImageUrl(imageUrl);
// Assert
- assertEquals(imageUrl, imagePart.getUrl());
+ assertEquals(imageUrl, imagePart.getImageUrl());
assertEquals(imagePart, result); // Fluent API
}
@@ -55,7 +55,7 @@ void testSetAndGetDetail() {
@Test
void testFromJsonWithUrl() {
// Arrange
- String json = "{\"type\":\"input_image\",\"url\":\"https://example.com/test.png\"}";
+ String json = "{\"type\":\"input_image\",\"image_url\":\"https://example.com/test.png\"}";
BinaryData data = BinaryData.fromString(json);
// Act
@@ -64,14 +64,14 @@ void testFromJsonWithUrl() {
// Assert
assertNotNull(imagePart);
assertEquals(ContentPartType.INPUT_IMAGE, imagePart.getType());
- assertEquals("https://example.com/test.png", imagePart.getUrl());
+ assertEquals("https://example.com/test.png", imagePart.getImageUrl());
assertNull(imagePart.getDetail());
}
@Test
void testFromJsonWithAllFields() {
// Arrange
- String json = "{\"type\":\"input_image\",\"url\":\"https://example.com/image.jpg\",\"detail\":\"high\"}";
+ String json = "{\"type\":\"input_image\",\"image_url\":\"https://example.com/image.jpg\",\"detail\":\"high\"}";
BinaryData data = BinaryData.fromString(json);
// Act
@@ -80,14 +80,14 @@ void testFromJsonWithAllFields() {
// Assert
assertNotNull(imagePart);
assertEquals(ContentPartType.INPUT_IMAGE, imagePart.getType());
- assertEquals("https://example.com/image.jpg", imagePart.getUrl());
+ assertEquals("https://example.com/image.jpg", imagePart.getImageUrl());
assertEquals(RequestImageContentPartDetail.HIGH, imagePart.getDetail());
}
@Test
void testJsonRoundTrip() {
// Arrange
- RequestImageContentPart original = new RequestImageContentPart().setUrl("https://example.com/photo.png")
+ RequestImageContentPart original = new RequestImageContentPart().setImageUrl("https://example.com/photo.png")
.setDetail(RequestImageContentPartDetail.AUTO);
// Act
@@ -97,14 +97,14 @@ void testJsonRoundTrip() {
// Assert
assertNotNull(deserialized);
assertEquals(original.getType(), deserialized.getType());
- assertEquals(original.getUrl(), deserialized.getUrl());
+ assertEquals(original.getImageUrl(), deserialized.getImageUrl());
assertEquals(original.getDetail(), deserialized.getDetail());
}
@Test
void testWithLowDetail() {
// Arrange
- String json = "{\"type\":\"input_image\",\"url\":\"https://example.com/low-res.jpg\",\"detail\":\"low\"}";
+ String json = "{\"type\":\"input_image\",\"image_url\":\"https://example.com/low-res.jpg\",\"detail\":\"low\"}";
BinaryData data = BinaryData.fromString(json);
// Act
@@ -117,7 +117,7 @@ void testWithLowDetail() {
@Test
void testWithAutoDetail() {
// Arrange
- String json = "{\"type\":\"input_image\",\"url\":\"https://example.com/auto.jpg\",\"detail\":\"auto\"}";
+ String json = "{\"type\":\"input_image\",\"image_url\":\"https://example.com/auto.jpg\",\"detail\":\"auto\"}";
BinaryData data = BinaryData.fromString(json);
// Act
@@ -130,12 +130,12 @@ void testWithAutoDetail() {
@Test
void testFluentApi() {
// Act
- RequestImageContentPart imagePart = new RequestImageContentPart().setUrl("https://example.com/fluent.png")
+ RequestImageContentPart imagePart = new RequestImageContentPart().setImageUrl("https://example.com/fluent.png")
.setDetail(RequestImageContentPartDetail.HIGH);
// Assert
assertNotNull(imagePart);
- assertEquals("https://example.com/fluent.png", imagePart.getUrl());
+ assertEquals("https://example.com/fluent.png", imagePart.getImageUrl());
assertEquals(RequestImageContentPartDetail.HIGH, imagePart.getDetail());
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/TranscriptionAndIncludeOptionsTest.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/TranscriptionAndIncludeOptionsTest.java
index f1ed2f7cc174..056ecb8412d4 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/TranscriptionAndIncludeOptionsTest.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/models/TranscriptionAndIncludeOptionsTest.java
@@ -286,9 +286,9 @@ void testOutputTokenDetailsReasoningTokens() {
OutputTokenDetails details = BinaryData.fromString(json).toObject(OutputTokenDetails.class);
- assertEquals(10, details.getTextTokens());
- assertEquals(20, details.getAudioTokens());
- assertEquals(Integer.valueOf(7), details.getReasoningTokens());
+ assertEquals(10, details.getTextTokenCount());
+ assertEquals(20, details.getAudioTokenCount());
+ assertEquals(Integer.valueOf(7), details.getReasoningTokenCount());
}
@Test
@@ -297,7 +297,7 @@ void testOutputTokenDetailsReasoningTokensNullable() {
OutputTokenDetails details = BinaryData.fromString(json).toObject(OutputTokenDetails.class);
- assertNull(details.getReasoningTokens());
+ assertNull(details.getReasoningTokenCount());
}
// -------- ResponseAudioTranscriptAnnotationAdded --------
From 7218a3267ce191716392b47f7f52e1b6e8edd289 Mon Sep 17 00:00:00 2001
From: Xiting Zhang
Date: Wed, 27 May 2026 22:05:34 -0700
Subject: [PATCH 13/13] Use shared API_VERSIONS array for test API version
parameterization
---
.../livetests/VoiceLiveAudioFormatTests.java | 4 ++--
.../livetests/VoiceLiveAudioTests.java | 9 +++-----
.../livetests/VoiceLiveConversationTests.java | 4 ++--
.../livetests/VoiceLiveSessionTests.java | 2 +-
.../livetests/VoiceLiveTestBase.java | 7 +++----
.../livetests/VoiceLiveToolCallTests.java | 21 ++++++++-----------
.../VoiceLiveTranscriptionTests.java | 6 ++----
.../VoiceLiveTurnDetectionTests.java | 9 ++++----
.../VoiceLiveVoicePropertiesTests.java | 6 ++----
9 files changed, 28 insertions(+), 40 deletions(-)
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioFormatTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioFormatTests.java
index 0018c4b97fee..f4bd80064633 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioFormatTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioFormatTests.java
@@ -46,7 +46,7 @@ public class VoiceLiveAudioFormatTests extends VoiceLiveTestBase {
static Stream modelAndSamplingRateProvider() {
return withApiVersions(Stream.of(Arguments.of("gpt-realtime", 16000), Arguments.of("gpt-realtime", 44100),
Arguments.of("gpt-realtime", 8000), Arguments.of("gpt-4o", 16000), Arguments.of("gpt-4o", 44100),
- Arguments.of("gpt-4.1", 8000)), API_VERSION_GA, API_VERSION_PREVIEW);
+ Arguments.of("gpt-4.1", 8000)));
}
static Stream modelAndInputAudioFormatProvider() {
@@ -199,7 +199,7 @@ public void testRealtimeServiceWithInputAudioSamplingRate(String model, int samp
.setInputAudioTranscription(getSpeechRecognitionSetting(model))
.setInstructions(
"You are a helpful assistant. Please respond briefly to the user's question about lakes.")
- .setTurnDetection(API_VERSION_PREVIEW.equals(apiVersion)
+ .setTurnDetection(API_VERSIONS[1].equals(apiVersion)
? new ServerVadTurnDetection().setSilenceDurationMs(200)
: new ServerVadTurnDetection());
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioTests.java
index 3d96f97cd185..394eb2056206 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveAudioTests.java
@@ -37,8 +37,7 @@
public class VoiceLiveAudioTests extends VoiceLiveTestBase {
static Stream audioParams() {
- return crossProduct(new String[] { "gpt-realtime", "gpt-4.1" },
- new String[] { API_VERSION_GA, API_VERSION_PREVIEW });
+ return crossProduct(new String[] { "gpt-realtime", "gpt-4.1" }, API_VERSIONS);
}
@ParameterizedTest
@@ -109,8 +108,7 @@ public void testRealtimeServiceWithAudio(String model, String apiVersion) throws
}
static Stream audioEnhancementsParams() {
- return crossProduct(new String[] { "gpt-realtime", "gpt-4.1" },
- new String[] { API_VERSION_GA, API_VERSION_PREVIEW });
+ return crossProduct(new String[] { "gpt-realtime", "gpt-4.1" }, API_VERSIONS);
}
@ParameterizedTest
@@ -184,7 +182,6 @@ public void testRealtimeServiceWithAudioEnhancements(String model, String apiVer
}
static Stream echoCancellationParams() {
- return crossProduct(new String[] { "gpt-realtime", "gpt-4.1" },
- new String[] { API_VERSION_GA, API_VERSION_PREVIEW });
+ return crossProduct(new String[] { "gpt-realtime", "gpt-4.1" }, API_VERSIONS);
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveConversationTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveConversationTests.java
index d1dbc6ae879f..6b73600a3480 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveConversationTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveConversationTests.java
@@ -38,7 +38,7 @@
public class VoiceLiveConversationTests extends VoiceLiveTestBase {
static Stream retrieveItemParams() {
- return crossProduct(new String[] { "gpt-realtime" }, new String[] { API_VERSION_GA, API_VERSION_PREVIEW });
+ return crossProduct(new String[] { "gpt-realtime" }, API_VERSIONS);
}
@ParameterizedTest
@@ -133,7 +133,7 @@ public void testRealtimeServiceRetrieveItem(String model, String apiVersion)
}
static Stream truncateItemParams() {
- return crossProduct(new String[] { "gpt-realtime" }, new String[] { API_VERSION_GA, API_VERSION_PREVIEW });
+ return crossProduct(new String[] { "gpt-realtime" }, API_VERSIONS);
}
@ParameterizedTest
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveSessionTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveSessionTests.java
index 263e8360f033..04f67cc1342c 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveSessionTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveSessionTests.java
@@ -31,7 +31,7 @@
public class VoiceLiveSessionTests extends VoiceLiveTestBase {
static Stream apiVersionParams() {
- return Stream.of(Arguments.of(API_VERSION_GA), Arguments.of(API_VERSION_PREVIEW));
+ return Arrays.stream(API_VERSIONS).map(Arguments::of);
}
@ParameterizedTest
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTestBase.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTestBase.java
index d010e1997fc7..94810f134660 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTestBase.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTestBase.java
@@ -65,9 +65,8 @@ public abstract class VoiceLiveTestBase extends TestProxyTestBase {
protected static final int DEFAULT_SAMPLE_RATE = 24000;
protected static final double DEFAULT_SILENCE_DURATION = 2.0;
- // API version constants
- protected static final String API_VERSION_GA = "2025-10-01";
- protected static final String API_VERSION_PREVIEW = "2026-01-01-preview";
+ // API versions exercised by parameterized live tests.
+ protected static final String[] API_VERSIONS = { "2025-10-01", "2026-04-10" };
protected String getEndpoint() {
String endpoint = Configuration.getGlobalConfiguration().get("AI_SERVICES_ENDPOINT");
@@ -112,7 +111,7 @@ protected static Stream crossProduct(String[] models, String[] apiVer
}
protected static Stream withApiVersions(Stream base) {
- return withApiVersions(base, API_VERSION_GA, API_VERSION_PREVIEW);
+ return withApiVersions(base, API_VERSIONS);
}
protected static Stream withApiVersions(Stream base, String... apiVersions) {
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveToolCallTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveToolCallTests.java
index 902ccad26a52..a974bc577061 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveToolCallTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveToolCallTests.java
@@ -49,13 +49,12 @@ public class VoiceLiveToolCallTests extends VoiceLiveTestBase {
private static final String API_VERSION_2025_05_01_PREVIEW = "2025-05-01-preview";
// ===== test_realtime_service_tool_call =====
- // Python: models=[gpt-realtime, gpt-4o], api_versions=[2025-10-01, 2026-01-01-preview]
+ // Python: models=[gpt-realtime, gpt-4o], api_versions=[2025-10-01, 2026-04-10]
// Uses _get_speech_recognition_setting(model), audio=4-1.wav, tool=assess_pronunciation
// Voice: AzureStandardVoice("en-US-AriaNeural")
static Stream toolCallParams() {
- return crossProduct(new String[] { MODEL_GPT_REALTIME, MODEL_GPT_4O },
- new String[] { API_VERSION_GA, API_VERSION_PREVIEW });
+ return crossProduct(new String[] { MODEL_GPT_REALTIME, MODEL_GPT_4O }, API_VERSIONS);
}
@ParameterizedTest
@@ -166,14 +165,13 @@ private void doTestRealtimeServiceToolCall(String model, String apiVersion)
// ===== test_realtime_service_tool_choice =====
// Python: models=[gpt-realtime, gpt-4o, gpt-5-chat], skip if "realtime" in model
// -> effective models: [gpt-4o, gpt-5-chat]
- // api_versions=[2025-10-01, 2026-01-01-preview]
+ // api_versions=[2025-10-01, 2026-04-10]
// Uses azure-speech + ServerVad, audio=ask_weather.wav
// Tools: get_weather, get_time. ToolChoice: get_time
// Assert: function_done.name == "get_time", arguments contains Beijing
static Stream toolChoiceParams() {
- return crossProduct(new String[] { MODEL_GPT_4O, MODEL_GPT_5_CHAT },
- new String[] { API_VERSION_GA, API_VERSION_PREVIEW });
+ return crossProduct(new String[] { MODEL_GPT_4O, MODEL_GPT_5_CHAT }, API_VERSIONS);
}
@ParameterizedTest
@@ -260,14 +258,13 @@ public void testRealtimeServiceToolChoice(String model, String apiVersion)
// ===== test_realtime_service_tool_call_parameter =====
// Python: models=[gpt-realtime, gpt-4.1, gpt-5, gpt-5.1, gpt-5.2, phi4-mm-realtime],
// skip if "realtime" in model -> effective models: [gpt-4.1, gpt-5]
- // api_versions=[2025-10-01, 2026-01-01-preview]
+ // api_versions=[2025-10-01, 2026-04-10]
// Uses azure-speech + ServerVad, audio=ask_weather.wav
// Tool: get_weather. Full tool call flow: get function call -> send tool output -> get transcript
// Assert: transcript contains "sunny" or chinese equivalent, and "25"
static Stream toolCallParameterParams() {
- return crossProduct(new String[] { MODEL_GPT_41, MODEL_GPT_5 },
- new String[] { API_VERSION_GA, API_VERSION_PREVIEW });
+ return crossProduct(new String[] { MODEL_GPT_41, MODEL_GPT_5 }, API_VERSIONS);
}
@ParameterizedTest
@@ -399,7 +396,7 @@ public void testRealtimeServiceToolCallParameter(String model, String apiVersion
}
// ===== test_realtime_service_live_session_update =====
- // Python: model=[gpt-realtime], api_versions=[2025-05-01-preview, 2026-01-01-preview]
+ // Python: model=[gpt-realtime], api_versions=[2025-05-01-preview, 2026-04-10]
// Two-phase test:
// Phase 1: Session without tools -> send audio -> expect no function call in response
// Phase 2: New session with tools -> send audio -> expect function call
@@ -407,7 +404,7 @@ public void testRealtimeServiceToolCallParameter(String model, String apiVersion
static Stream liveSessionUpdateParams() {
return crossProduct(new String[] { MODEL_GPT_REALTIME },
- new String[] { API_VERSION_2025_05_01_PREVIEW, API_VERSION_PREVIEW });
+ new String[] { API_VERSION_2025_05_01_PREVIEW, API_VERSIONS[1] });
}
@ParameterizedTest
@@ -569,6 +566,6 @@ public void testRealtimeServiceLiveSessionUpdate(String model, String apiVersion
// Python: @pytest.mark.skip() - skipped in Python tests
static Stream toolCallNoAudioOverlapParams() {
- return crossProduct(new String[] { MODEL_GPT_REALTIME }, new String[] { API_VERSION_GA, API_VERSION_PREVIEW });
+ return crossProduct(new String[] { MODEL_GPT_REALTIME }, API_VERSIONS);
}
}
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTranscriptionTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTranscriptionTests.java
index 2a92239eb29a..f4a00c8ad369 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTranscriptionTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTranscriptionTests.java
@@ -35,8 +35,7 @@
public class VoiceLiveTranscriptionTests extends VoiceLiveTestBase {
static Stream whisperTranscriptionParams() {
- return crossProduct(new String[] { "gpt-realtime", "gpt-4.1" },
- new String[] { API_VERSION_GA, API_VERSION_PREVIEW });
+ return crossProduct(new String[] { "gpt-realtime", "gpt-4.1" }, API_VERSIONS);
}
@ParameterizedTest
@@ -109,8 +108,7 @@ public void testInputAudioTranscriptionWithWhisper(String model, String apiVersi
}
static Stream gpt4oTranscribeParams() {
- return crossProduct(new String[] { "gpt-4o-transcribe", "gpt-4o-mini-transcribe" },
- new String[] { API_VERSION_GA, API_VERSION_PREVIEW });
+ return crossProduct(new String[] { "gpt-4o-transcribe", "gpt-4o-mini-transcribe" }, API_VERSIONS);
}
@ParameterizedTest
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTurnDetectionTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTurnDetectionTests.java
index 3f6ae7f87d5e..782ebd9fb469 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTurnDetectionTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveTurnDetectionTests.java
@@ -39,14 +39,13 @@
public class VoiceLiveTurnDetectionTests extends VoiceLiveTestBase {
// ===== test_realtime_service_with_turn_detection_long_tts_vad_duration =====
- // Python: models=[gpt-realtime, gpt-4o], api_versions=[2025-10-01, 2026-01-01-preview]
+ // Python: models=[gpt-realtime, gpt-4o], api_versions=[2025-10-01, 2026-04-10]
// turn_detection: {"type": "azure_semantic_vad", "speech_duration_assistant_speaking_ms": 800}
// Note: speechDurationAssistantSpeakingMs not available in Java SDK;
// using speechDurationMs(800) as the closest available parameter.
static Stream longTtsVadDurationParams() {
- return crossProduct(new String[] { MODEL_GPT_REALTIME, MODEL_GPT_4O },
- new String[] { API_VERSION_GA, API_VERSION_PREVIEW });
+ return crossProduct(new String[] { MODEL_GPT_REALTIME, MODEL_GPT_4O }, API_VERSIONS);
}
@ParameterizedTest
@@ -131,7 +130,7 @@ private void doTestLongTtsVadDuration(String model, String apiVersion) throws In
}
// ===== test_realtime_service_with_turn_detection_multilingual =====
- // Python: models × semanticVadParams, api_versions=[2025-10-01, 2026-01-01-preview]
+ // Python: models × semanticVadParams, api_versions=[2025-10-01, 2026-04-10]
// Uses AzureSemanticVadMultilingual(**semantic_vad_params)
static Stream multilingualParams() {
@@ -232,7 +231,7 @@ private void doTestMultilingual(String description, String model, TurnDetection
// ===== test_realtime_service_with_eou =====
// Python: model=gpt-4o, turn_detection_cls × end_of_detection combinations
// 6 combos: ServerVad/AzureSemanticVad/AzureSemanticVadMultilingual × AzureSemanticDetection/AzureSemanticDetectionEn
- // api_versions=[2025-10-01, 2026-01-01-preview]
+ // api_versions=[2025-10-01, 2026-04-10]
static Stream eouParams() {
return withApiVersions(Stream.of(
diff --git a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java
index 730b157ed5f1..d439b256d9d8 100644
--- a/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java
+++ b/sdk/voicelive/azure-ai-voicelive/src/test/java/com/azure/ai/voicelive/livetests/VoiceLiveVoicePropertiesTests.java
@@ -33,8 +33,7 @@
public class VoiceLiveVoicePropertiesTests extends VoiceLiveTestBase {
static Stream voicePropertiesParams() {
- return crossProduct(new String[] { "gpt-realtime", "gpt-4.1" },
- new String[] { API_VERSION_GA, API_VERSION_PREVIEW });
+ return crossProduct(new String[] { "gpt-realtime", "gpt-4.1" }, API_VERSIONS);
}
@ParameterizedTest
@@ -110,8 +109,7 @@ public void testRealtimeServiceWithVoiceProperties(String model, String apiVersi
}
static Stream audioTimestampAndVisemeParams() {
- return crossProduct(new String[] { "gpt-realtime", "gpt-4.1" },
- new String[] { API_VERSION_GA, API_VERSION_PREVIEW });
+ return crossProduct(new String[] { "gpt-realtime", "gpt-4.1" }, API_VERSIONS);
}
@ParameterizedTest