From 51966c15db272c551aca738374a5cf4f6308386b Mon Sep 17 00:00:00 2001 From: azure-sdk Date: Mon, 18 May 2026 22:32:20 +0000 Subject: [PATCH 1/3] Configurations: 'specification/keyvault/data-plane/Secrets/tspconfig.yaml', API Version: 2026-03-01-preview, SDK Release Type: beta, and CommitSHA: 'ea20c467080ed3d3875c8b5aeff28ce52f6a55ca' in SpecRepo: 'https://github.com/Azure/azure-rest-api-specs' Pipeline run: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6316472 Refer to https://eng.ms/docs/products/azure-developer-experience/develop/sdk-release/sdk-release-prerequisites to prepare for SDK release. --- .../CHANGELOG.md | 20 +++++++++++++++---- .../tsp-location.yaml | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/sdk/keyvault/azure-security-keyvault-secrets/CHANGELOG.md b/sdk/keyvault/azure-security-keyvault-secrets/CHANGELOG.md index e63b0aa543b9..778e0f51671c 100644 --- a/sdk/keyvault/azure-security-keyvault-secrets/CHANGELOG.md +++ b/sdk/keyvault/azure-security-keyvault-secrets/CHANGELOG.md @@ -1,14 +1,26 @@ # Release History -## 4.11.0-beta.2 (Unreleased) +## 4.11.0-beta.2 (2026-05-18) ### Features Added -### Breaking Changes +#### `models.SecretProperties` was modified -### Bugs Fixed +* `getPreviousVersion()` was added -### Other Changes +#### `SecretClient` was modified + +* `getSecretWithResponse(java.lang.String,java.lang.String,java.lang.String,com.azure.core.util.Context)` was added +* `getSecret(java.lang.String,java.lang.String,java.lang.String)` was added + +#### `SecretServiceVersion` was modified + +* `V2025_07_01` was added + +#### `SecretAsyncClient` was modified + +* `getSecret(java.lang.String,java.lang.String,java.lang.String)` was added +* `getSecretWithResponse(java.lang.String,java.lang.String,java.lang.String)` was added ## 4.10.7 (2026-05-05) diff --git a/sdk/keyvault/azure-security-keyvault-secrets/tsp-location.yaml b/sdk/keyvault/azure-security-keyvault-secrets/tsp-location.yaml index 37a919b3611b..4902060cc27a 100644 --- a/sdk/keyvault/azure-security-keyvault-secrets/tsp-location.yaml +++ b/sdk/keyvault/azure-security-keyvault-secrets/tsp-location.yaml @@ -1,5 +1,5 @@ directory: specification/keyvault/data-plane/Secrets -commit: 3d69f01137e1271361cc8003e399475cbfefadec +commit: ea20c467080ed3d3875c8b5aeff28ce52f6a55ca repo: Azure/azure-rest-api-specs additionalDirectories: - specification/keyvault/data-plane/Secrets/common From 23276047c89b8164c299bede3996e0af71eff650 Mon Sep 17 00:00:00 2001 From: Rohit Singhal Date: Tue, 19 May 2026 21:47:48 +0100 Subject: [PATCH 2/3] Add Key Vault Secrets 2026-03-01-preview service version Expose the generated 2026-03-01-preview API version through SecretServiceVersion, make it the default latest service version, and update the code generation customization to preserve it. Add tests that verify default and explicit clients send the new api-version, and update the package recording asset tag. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../CHANGELOG.md | 2 +- .../assets.json | 2 +- .../src/main/java/SecretsCustomizations.java | 5 +- .../secrets/SecretServiceVersion.java | 8 +++- .../secrets/SecretClientBuilderTest.java | 47 +++++++++++++++++++ 5 files changed, 58 insertions(+), 6 deletions(-) diff --git a/sdk/keyvault/azure-security-keyvault-secrets/CHANGELOG.md b/sdk/keyvault/azure-security-keyvault-secrets/CHANGELOG.md index 778e0f51671c..8f9902765d32 100644 --- a/sdk/keyvault/azure-security-keyvault-secrets/CHANGELOG.md +++ b/sdk/keyvault/azure-security-keyvault-secrets/CHANGELOG.md @@ -15,7 +15,7 @@ #### `SecretServiceVersion` was modified -* `V2025_07_01` was added +* `V2026_03_01_PREVIEW` was added #### `SecretAsyncClient` was modified diff --git a/sdk/keyvault/azure-security-keyvault-secrets/assets.json b/sdk/keyvault/azure-security-keyvault-secrets/assets.json index dac3f2f96018..a597cd937aff 100644 --- a/sdk/keyvault/azure-security-keyvault-secrets/assets.json +++ b/sdk/keyvault/azure-security-keyvault-secrets/assets.json @@ -2,5 +2,5 @@ "AssetsRepo": "Azure/azure-sdk-assets", "AssetsRepoPrefixPath": "java", "TagPrefix": "java/keyvault/azure-security-keyvault-secrets", - "Tag": "java/keyvault/azure-security-keyvault-secrets_d3c81a13be" + "Tag": "java/keyvault/azure-security-keyvault-secrets_157d16541f" } diff --git a/sdk/keyvault/azure-security-keyvault-secrets/customizations/src/main/java/SecretsCustomizations.java b/sdk/keyvault/azure-security-keyvault-secrets/customizations/src/main/java/SecretsCustomizations.java index 61348f901139..3a11f4e127c4 100644 --- a/sdk/keyvault/azure-security-keyvault-secrets/customizations/src/main/java/SecretsCustomizations.java +++ b/sdk/keyvault/azure-security-keyvault-secrets/customizations/src/main/java/SecretsCustomizations.java @@ -49,7 +49,8 @@ private static void customizeServiceVersion(LibraryCustomization customization) .addImplementedType("ServiceVersion") .setJavadocComment("The versions of Azure Key Vault Secrets supported by this client library."); - for (String version : Arrays.asList("7.0", "7.1", "7.2", "7.3", "7.4", "7.5", "7.6", "2025-07-01")) { + for (String version : Arrays.asList("7.0", "7.1", "7.2", "7.3", "7.4", "7.5", "7.6", "2025-07-01", + "2026-03-01-preview")) { enumDeclaration.addEnumConstant("V" + version.replace('.', '_').replace('-', '_').toUpperCase()) .setJavadocComment("Service version {@code " + version + "}.") .addArgument(new StringLiteralExpr(version)); @@ -70,7 +71,7 @@ private static void customizeServiceVersion(LibraryCustomization customization) .setType("SecretServiceVersion") .setJavadocComment(new Javadoc(parseText("Gets the latest service version supported by this client library.")) .addBlockTag("return", "The latest {@link SecretServiceVersion}.")) - .setBody(StaticJavaParser.parseBlock("{ return V2025_07_01; }")); + .setBody(StaticJavaParser.parseBlock("{ return V2026_03_01_PREVIEW; }")); customization.getRawEditor() .addFile("src/main/java/com/azure/security/keyvault/secrets/SecretServiceVersion.java", diff --git a/sdk/keyvault/azure-security-keyvault-secrets/src/main/java/com/azure/security/keyvault/secrets/SecretServiceVersion.java b/sdk/keyvault/azure-security-keyvault-secrets/src/main/java/com/azure/security/keyvault/secrets/SecretServiceVersion.java index b3d365222c41..225deefd6473 100644 --- a/sdk/keyvault/azure-security-keyvault-secrets/src/main/java/com/azure/security/keyvault/secrets/SecretServiceVersion.java +++ b/sdk/keyvault/azure-security-keyvault-secrets/src/main/java/com/azure/security/keyvault/secrets/SecretServiceVersion.java @@ -41,7 +41,11 @@ public enum SecretServiceVersion implements ServiceVersion { /** * Service version {@code 2025-07-01}. */ - V2025_07_01("2025-07-01"); + V2025_07_01("2025-07-01"), + /** + * Service version {@code 2026-03-01-preview}. + */ + V2026_03_01_PREVIEW("2026-03-01-preview"); private final String version; @@ -63,6 +67,6 @@ public String getVersion() { * @return The latest {@link SecretServiceVersion}. */ public static SecretServiceVersion getLatest() { - return V2025_07_01; + return V2026_03_01_PREVIEW; } } diff --git a/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/SecretClientBuilderTest.java b/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/SecretClientBuilderTest.java index 7f0df112d3a3..1e76aca175cd 100644 --- a/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/SecretClientBuilderTest.java +++ b/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/SecretClientBuilderTest.java @@ -17,7 +17,9 @@ import org.junit.jupiter.api.Test; import reactor.core.publisher.Mono; +import java.nio.charset.StandardCharsets; import java.util.Collections; +import java.util.concurrent.atomic.AtomicReference; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -82,6 +84,51 @@ public void buildAsyncClientUsingDefaultApiVersionTest() { assertEquals(SecretAsyncClient.class.getSimpleName(), secretAsyncClient.getClass().getSimpleName()); } + @Test + public void latestServiceVersionIs20260301Preview() { + assertEquals("2026-03-01-preview", SecretServiceVersion.V2026_03_01_PREVIEW.getVersion()); + assertEquals(SecretServiceVersion.V2026_03_01_PREVIEW, SecretServiceVersion.getLatest()); + } + + @Test + public void defaultClientUsesLatestServiceVersion() { + AtomicReference requestedUrl = new AtomicReference<>(); + SecretClient secretClient = new SecretClientBuilder().vaultUrl(vaultUrl) + .credential(new TestUtils.TestCredential()) + .httpClient(request -> { + requestedUrl.set(request.getUrl().toString()); + return Mono.just(new MockHttpResponse(request, 200, + ("{\"value\":\"secret-value\"," + + "\"id\":\"https://key-vault-url.vault.azure.net/secrets/TestSecret/version\"}") + .getBytes(StandardCharsets.UTF_8))); + }) + .buildClient(); + + secretClient.getSecret(secretName); + + assertTrue(requestedUrl.get().contains("api-version=2026-03-01-preview")); + } + + @Test + public void configuredClientUses20260301PreviewServiceVersion() { + AtomicReference requestedUrl = new AtomicReference<>(); + SecretClient secretClient = new SecretClientBuilder().vaultUrl(vaultUrl) + .serviceVersion(SecretServiceVersion.V2026_03_01_PREVIEW) + .credential(new TestUtils.TestCredential()) + .httpClient(request -> { + requestedUrl.set(request.getUrl().toString()); + return Mono.just(new MockHttpResponse(request, 200, + ("{\"value\":\"secret-value\"," + + "\"id\":\"https://key-vault-url.vault.azure.net/secrets/TestSecret/version\"}") + .getBytes(StandardCharsets.UTF_8))); + }) + .buildClient(); + + secretClient.getSecret(secretName); + + assertTrue(requestedUrl.get().contains("api-version=2026-03-01-preview")); + } + @Test public void emptyVaultUrlThrowsIllegalArgumentException() { assertThrows(IllegalArgumentException.class, () -> new SecretClientBuilder().vaultUrl("")); From 68688dcaf280e79873563248c7caf1a7dffaf128 Mon Sep 17 00:00:00 2001 From: Rohit Singhal Date: Tue, 26 May 2026 00:11:25 +0100 Subject: [PATCH 3/3] Add async client unit tests for 2026-03-01-preview service version Covers the async path (default + explicit version) so the new api-version is asserted on both sync and async clients. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../secrets/SecretClientBuilderTest.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/SecretClientBuilderTest.java b/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/SecretClientBuilderTest.java index 1e76aca175cd..b67a1413507c 100644 --- a/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/SecretClientBuilderTest.java +++ b/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/SecretClientBuilderTest.java @@ -129,6 +129,45 @@ public void configuredClientUses20260301PreviewServiceVersion() { assertTrue(requestedUrl.get().contains("api-version=2026-03-01-preview")); } + @Test + public void defaultAsyncClientUsesLatestServiceVersion() { + AtomicReference requestedUrl = new AtomicReference<>(); + SecretAsyncClient secretAsyncClient = new SecretClientBuilder().vaultUrl(vaultUrl) + .credential(new TestUtils.TestCredential()) + .httpClient(request -> { + requestedUrl.set(request.getUrl().toString()); + return Mono.just(new MockHttpResponse(request, 200, + ("{\"value\":\"secret-value\"," + + "\"id\":\"https://key-vault-url.vault.azure.net/secrets/TestSecret/version\"}") + .getBytes(StandardCharsets.UTF_8))); + }) + .buildAsyncClient(); + + secretAsyncClient.getSecret(secretName).block(); + + assertTrue(requestedUrl.get().contains("api-version=2026-03-01-preview")); + } + + @Test + public void configuredAsyncClientUses20260301PreviewServiceVersion() { + AtomicReference requestedUrl = new AtomicReference<>(); + SecretAsyncClient secretAsyncClient = new SecretClientBuilder().vaultUrl(vaultUrl) + .serviceVersion(SecretServiceVersion.V2026_03_01_PREVIEW) + .credential(new TestUtils.TestCredential()) + .httpClient(request -> { + requestedUrl.set(request.getUrl().toString()); + return Mono.just(new MockHttpResponse(request, 200, + ("{\"value\":\"secret-value\"," + + "\"id\":\"https://key-vault-url.vault.azure.net/secrets/TestSecret/version\"}") + .getBytes(StandardCharsets.UTF_8))); + }) + .buildAsyncClient(); + + secretAsyncClient.getSecret(secretName).block(); + + assertTrue(requestedUrl.get().contains("api-version=2026-03-01-preview")); + } + @Test public void emptyVaultUrlThrowsIllegalArgumentException() { assertThrows(IllegalArgumentException.class, () -> new SecretClientBuilder().vaultUrl(""));