diff --git a/sdk/keyvault/azure-security-keyvault-secrets/CHANGELOG.md b/sdk/keyvault/azure-security-keyvault-secrets/CHANGELOG.md index e63b0aa543b9..8f9902765d32 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 + +* `V2026_03_01_PREVIEW` 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/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..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 @@ -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,90 @@ 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 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("")); 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