diff --git a/eng/scripts/generate_from_source_pom.py b/eng/scripts/generate_from_source_pom.py index 89e60945c04c..78f6f399e087 100644 --- a/eng/scripts/generate_from_source_pom.py +++ b/eng/scripts/generate_from_source_pom.py @@ -97,9 +97,9 @@ def create_from_source_pom(artifacts_list: str, additional_modules_list: str, se source_projects: Set[Project] = set() # Finally map the project identifiers to projects. - add_source_projects(source_projects, artifacts_list_identifiers, projects) - add_source_projects(source_projects, dependent_modules, projects) - add_source_projects(source_projects, dependency_modules, projects) + add_source_projects(source_projects, artifacts_list_identifiers, projects, artifact_identifier_to_version) + add_source_projects(source_projects, dependent_modules, projects, artifact_identifier_to_version) + add_source_projects(source_projects, dependency_modules, projects, artifact_identifier_to_version) modules = sorted(list(set([p.module_path for p in source_projects]))) with open(file=client_from_source_pom_path, mode='w') as fromSourcePom: @@ -307,15 +307,22 @@ def resolve_project_dependencies(pom_identifier: str, dependency_modules: Set[st dependency_modules.add(dependency) dependency_modules = resolve_project_dependencies(dependency, dependency_modules, projects) - # Add the dependencies of the parent POM. - # These are added since From Source the parent POMs are also built. - if project.parent_pom is not None and project.parent_pom in projects: - parent_project = projects[project.parent_pom] + # Add the dependencies of the full parent POM chain. + # Modules inherit from their parent hierarchy, so walking only + # one level is insufficient. For example, azure-cosmos-spark_3-5_2-12 inherits + # test dependencies (including unreleased ones) from its grandparent + # azure-cosmos-spark_3. Without walking the full chain those unreleased + # dependencies would not be added to the reactor, causing Maven to fail when + # it tries to download them from the artifact feed. + parent_id = project.parent_pom + while parent_id is not None and parent_id in projects: + parent_project = projects[parent_id] for dependency in parent_project.dependencies: # Only continue if the parent's dependencies haven't already been resolved. if not dependency in dependency_modules: dependency_modules.add(dependency) dependency_modules = resolve_project_dependencies(dependency, dependency_modules, projects) + parent_id = parent_project.parent_pom return dependency_modules @@ -328,7 +335,7 @@ def is_spring_child_pom(tree_root: ET.Element): and artifact_id_node.text != 'spring-cloud-azure' \ and artifact_id_node.text != 'spring-cloud-azure-experimental' # Exclude parent pom to fix this error: "Project is duplicated in the reactor" -def add_source_projects(source_projects: Set[Project], project_identifiers: Iterable[str], projects: Dict[str, Project]): +def add_source_projects(source_projects: Set[Project], project_identifiers: Iterable[str], projects: Dict[str, Project], artifact_identifier_to_version: Dict[str, ArtifactVersion]): for project_identifier in project_identifiers: project = projects[project_identifier] source_projects.add(project) @@ -336,7 +343,17 @@ def add_source_projects(source_projects: Set[Project], project_identifiers: Iter while project.parent_pom is not None: project = projects.get(project.parent_pom, default_project) if project.module_path is not None: - source_projects.add(project) + # Only add parent POMs to the reactor if they need to be built from source. + # Parent POMs already released (dependency_version == current_version) and not in + # parent_pom_identifiers can be resolved by Maven via relativePath without being in + # the reactor. Including them in the reactor causes Maven to validate their declared + # (including test-scope unreleased ones), which can fail for PRs in + # unrelated service areas. + artifact_version = artifact_identifier_to_version.get(project.identifier) + if project.identifier in parent_pom_identifiers \ + or artifact_version is None \ + or artifact_version.dependency_version != artifact_version.current_version: + source_projects.add(project) def project_uses_client_parent(project: Project, projects: Dict[str, Project]) -> bool: while project.parent_pom is not None: diff --git a/sdk/keyvault/azure-security-keyvault-certificates/CHANGELOG.md b/sdk/keyvault/azure-security-keyvault-certificates/CHANGELOG.md index ee77ebe4aed9..3a849ee63e71 100644 --- a/sdk/keyvault/azure-security-keyvault-certificates/CHANGELOG.md +++ b/sdk/keyvault/azure-security-keyvault-certificates/CHANGELOG.md @@ -4,6 +4,18 @@ ### Features Added +#### `models.SubjectAlternativeNames` was modified + +* `setUniformResourceIdentifiers(java.util.List)` was added +* `setIpAddresses(java.util.List)` was added +* `getUniformResourceIdentifiers()` was added +* `getIpAddresses()` was added + +#### `CertificateServiceVersion` was modified + +* `V2025_06_01_PREVIEW` was added +* `V2025_07_01` was added + ### Breaking Changes ### Bugs Fixed diff --git a/sdk/keyvault/azure-security-keyvault-certificates/customizations/src/main/java/CertificatesCustomizations.java b/sdk/keyvault/azure-security-keyvault-certificates/customizations/src/main/java/CertificatesCustomizations.java index 22d052ee4585..b861c4f6d082 100644 --- a/sdk/keyvault/azure-security-keyvault-certificates/customizations/src/main/java/CertificatesCustomizations.java +++ b/sdk/keyvault/azure-security-keyvault-certificates/customizations/src/main/java/CertificatesCustomizations.java @@ -103,7 +103,8 @@ private static void customizeServiceVersion(LibraryCustomization customization) .addImplementedType("ServiceVersion") .setJavadocComment("The versions of Azure Key Vault Certificates supported by this client library."); - for (String version : Arrays.asList("7.0", "7.1", "7.2", "7.3", "7.4", "7.5", "7.6")) { + for (String version : Arrays.asList("7.0", "7.1", "7.2", "7.3", "7.4", "7.5", "7.6", + "2025-06-01-preview", "2025-07-01")) { enumDeclaration.addEnumConstant("V" + version.replace('.', '_').replace('-', '_').toUpperCase()) .setJavadocComment("Service version {@code " + version + "}.") .addArgument(new StringLiteralExpr(version)); diff --git a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateAsyncClient.java b/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateAsyncClient.java index da2d5e0dc7f9..e639083437f8 100644 --- a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateAsyncClient.java +++ b/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateAsyncClient.java @@ -963,7 +963,8 @@ public Mono purgeDeletedCertificate(String certificateName) { @ServiceMethod(returns = ReturnType.SINGLE) public Mono> purgeDeletedCertificateWithResponse(String certificateName) { try { - return implClient.purgeDeletedCertificateWithResponseAsync(certificateName, EMPTY_OPTIONS); + return implClient.purgeDeletedCertificateWithResponseAsync(certificateName, + new RequestOptions().addHeader("Accept", "application/json")); } catch (RuntimeException e) { return monoError(LOGGER, e); } diff --git a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateClient.java b/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateClient.java index 00e25b18005d..65e571f3d498 100644 --- a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateClient.java +++ b/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateClient.java @@ -799,7 +799,7 @@ public Response getDeletedCertificateWithResponse(String cer *

Code Samples

*

Purges the deleted certificate from the key vault enabled for soft-delete. Prints out the status code from the * server response when a response has been received.

- + * * *
      * certificateClient.purgeDeletedCertificate("certificateName");
@@ -823,7 +823,7 @@ public void purgeDeletedCertificate(String certificateName) {
      * 

Code Samples

*

Purges the deleted certificate from the key vault enabled for soft-delete. Prints out the status code from the * server response when a response has been received.

- + * * *
      * Response<Void> purgeResponse = certificateClient.purgeDeletedCertificateWithResponse("certificateName",
@@ -841,7 +841,7 @@ public void purgeDeletedCertificate(String certificateName) {
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Response purgeDeletedCertificateWithResponse(String certificateName, Context context) {
         return implClient.purgeDeletedCertificateWithResponse(certificateName,
-            new RequestOptions().setContext(context));
+            new RequestOptions().setContext(context).addHeader("Accept", "application/json"));
     }
 
     /**
diff --git a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateServiceVersion.java b/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateServiceVersion.java
index 87b7d760bf7c..82ad642622e6 100644
--- a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateServiceVersion.java
+++ b/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateServiceVersion.java
@@ -37,7 +37,15 @@ public enum CertificateServiceVersion implements ServiceVersion {
     /**
      * Service version {@code 7.6}.
      */
-    V7_6("7.6");
+    V7_6("7.6"),
+    /**
+     * Service version {@code 2025-06-01-preview}.
+     */
+    V2025_06_01_PREVIEW("2025-06-01-preview"),
+    /**
+     * Service version {@code 2025-07-01}.
+     */
+    V2025_07_01("2025-07-01");
 
     private final String version;
 
diff --git a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/implementation/CertificateClientImpl.java b/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/implementation/CertificateClientImpl.java
index a6ac254483a3..6934edb665c8 100644
--- a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/implementation/CertificateClientImpl.java
+++ b/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/implementation/CertificateClientImpl.java
@@ -693,7 +693,7 @@ Response getDeletedCertificateSync(@HostParam("vaultBaseUrl") String
         @UnexpectedResponseExceptionType(HttpResponseException.class)
         Mono> purgeDeletedCertificate(@HostParam("vaultBaseUrl") String vaultBaseUrl,
             @QueryParam("api-version") String apiVersion, @PathParam("certificate-name") String certificateName,
-            @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context);
+            RequestOptions requestOptions, Context context);
 
         @Delete("/deletedcertificates/{certificate-name}")
         @ExpectedResponses({ 204 })
@@ -703,7 +703,7 @@ Mono> purgeDeletedCertificate(@HostParam("vaultBaseUrl") String v
         @UnexpectedResponseExceptionType(HttpResponseException.class)
         Response purgeDeletedCertificateSync(@HostParam("vaultBaseUrl") String vaultBaseUrl,
             @QueryParam("api-version") String apiVersion, @PathParam("certificate-name") String certificateName,
-            @HeaderParam("Accept") String accept, RequestOptions requestOptions, Context context);
+            RequestOptions requestOptions, Context context);
 
         @Post("/deletedcertificates/{certificate-name}/recover")
         @ExpectedResponses({ 200 })
@@ -1071,6 +1071,12 @@ public PagedIterable getCertificates(RequestOptions requestOptions)
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -1176,6 +1182,12 @@ public Mono> deleteCertificateWithResponseAsync(String cert
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -2245,6 +2257,12 @@ public Response deleteCertificateIssuerWithResponse(String issuerNam
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -2371,6 +2389,12 @@ public Mono> createCertificateWithResponseAsync(String cert
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -2499,6 +2523,12 @@ public Response createCertificateWithResponse(String certificateName
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -2576,6 +2606,12 @@ public Response createCertificateWithResponse(String certificateName
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -2681,6 +2717,12 @@ public Mono> importCertificateWithResponseAsync(String cert
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -2758,6 +2800,12 @@ public Mono> importCertificateWithResponseAsync(String cert
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -3071,6 +3119,12 @@ public PagedIterable getCertificateVersions(String certificateName,
      *             upns (Optional): [
      *                 String (Optional)
      *             ]
+     *             uris (Optional): [
+     *                 String (Optional)
+     *             ]
+     *             ipAddresses (Optional): [
+     *                 String (Optional)
+     *             ]
      *         }
      *         key_usage (Optional): [
      *             String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -3158,6 +3212,12 @@ public Mono> getCertificatePolicyWithResponseAsync(String c
      *             upns (Optional): [
      *                 String (Optional)
      *             ]
+     *             uris (Optional): [
+     *                 String (Optional)
+     *             ]
+     *             ipAddresses (Optional): [
+     *                 String (Optional)
+     *             ]
      *         }
      *         key_usage (Optional): [
      *             String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -3245,6 +3305,12 @@ public Response getCertificatePolicyWithResponse(String certificateN
      *             upns (Optional): [
      *                 String (Optional)
      *             ]
+     *             uris (Optional): [
+     *                 String (Optional)
+     *             ]
+     *             ipAddresses (Optional): [
+     *                 String (Optional)
+     *             ]
      *         }
      *         key_usage (Optional): [
      *             String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -3311,6 +3377,12 @@ public Response getCertificatePolicyWithResponse(String certificateN
      *             upns (Optional): [
      *                 String (Optional)
      *             ]
+     *             uris (Optional): [
+     *                 String (Optional)
+     *             ]
+     *             ipAddresses (Optional): [
+     *                 String (Optional)
+     *             ]
      *         }
      *         key_usage (Optional): [
      *             String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -3401,6 +3473,12 @@ public Mono> updateCertificatePolicyWithResponseAsync(Strin
      *             upns (Optional): [
      *                 String (Optional)
      *             ]
+     *             uris (Optional): [
+     *                 String (Optional)
+     *             ]
+     *             ipAddresses (Optional): [
+     *                 String (Optional)
+     *             ]
      *         }
      *         key_usage (Optional): [
      *             String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -3467,6 +3545,12 @@ public Mono> updateCertificatePolicyWithResponseAsync(Strin
      *             upns (Optional): [
      *                 String (Optional)
      *             ]
+     *             uris (Optional): [
+     *                 String (Optional)
+     *             ]
+     *             ipAddresses (Optional): [
+     *                 String (Optional)
+     *             ]
      *         }
      *         key_usage (Optional): [
      *             String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -3557,6 +3641,12 @@ public Response updateCertificatePolicyWithResponse(String certifica
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -3633,6 +3723,12 @@ public Response updateCertificatePolicyWithResponse(String certifica
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -3734,6 +3830,12 @@ public Mono> updateCertificateWithResponseAsync(String cert
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -3810,6 +3912,12 @@ public Mono> updateCertificateWithResponseAsync(String cert
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -3912,6 +4020,12 @@ public Response updateCertificateWithResponse(String certificateName
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -4017,6 +4131,12 @@ public Mono> getCertificateWithResponseAsync(String certifi
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -4465,6 +4585,12 @@ public Response deleteCertificateOperationWithResponse(String certif
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -4593,6 +4719,12 @@ public Mono> mergeCertificateWithResponseAsync(String certi
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -4767,6 +4899,12 @@ public Response backupCertificateWithResponse(String certificateName
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -4879,6 +5017,12 @@ public Mono> restoreCertificateWithResponseAsync(BinaryData
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -5215,6 +5359,12 @@ public PagedIterable getDeletedCertificates(RequestOptions requestOp
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -5320,6 +5470,12 @@ public Mono> getDeletedCertificateWithResponseAsync(String
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -5401,9 +5557,8 @@ public Response getDeletedCertificateWithResponse(String certificate
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Mono> purgeDeletedCertificateWithResponseAsync(String certificateName,
         RequestOptions requestOptions) {
-        final String accept = "application/json";
         return FluxUtil.withContext(context -> service.purgeDeletedCertificate(this.getVaultBaseUrl(),
-            this.getServiceVersion().getVersion(), certificateName, accept, requestOptions, context));
+            this.getServiceVersion().getVersion(), certificateName, requestOptions, context));
     }
 
     /**
@@ -5423,9 +5578,8 @@ public Mono> purgeDeletedCertificateWithResponseAsync(String cert
      */
     @ServiceMethod(returns = ReturnType.SINGLE)
     public Response purgeDeletedCertificateWithResponse(String certificateName, RequestOptions requestOptions) {
-        final String accept = "application/json";
         return service.purgeDeletedCertificateSync(this.getVaultBaseUrl(), this.getServiceVersion().getVersion(),
-            certificateName, accept, requestOptions, Context.NONE);
+            certificateName, requestOptions, Context.NONE);
     }
 
     /**
@@ -5470,6 +5624,12 @@ public Response purgeDeletedCertificateWithResponse(String certificateName
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
@@ -5572,6 +5732,12 @@ public Mono> recoverDeletedCertificateWithResponseAsync(Str
      *                 upns (Optional): [
      *                     String (Optional)
      *                 ]
+     *                 uris (Optional): [
+     *                     String (Optional)
+     *                 ]
+     *                 ipAddresses (Optional): [
+     *                     String (Optional)
+     *                 ]
      *             }
      *             key_usage (Optional): [
      *                 String(digitalSignature/nonRepudiation/keyEncipherment/dataEncipherment/keyAgreement/keyCertSign/cRLSign/encipherOnly/decipherOnly) (Optional)
diff --git a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/models/SubjectAlternativeNames.java b/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/models/SubjectAlternativeNames.java
index 659dd3462af7..c8e236f0b497 100644
--- a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/models/SubjectAlternativeNames.java
+++ b/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/models/SubjectAlternativeNames.java
@@ -36,6 +36,18 @@ public final class SubjectAlternativeNames implements JsonSerializable userPrincipalNames;
 
+    /*
+     * Uniform Resource Identifiers.
+     */
+    @Generated
+    private List uniformResourceIdentifiers;
+
+    /*
+     * IP addresses; supports IPv4 and IPv6.
+     */
+    @Generated
+    private List ipAddresses;
+
     /**
      * Creates an instance of SubjectAlternativeNames class.
      */
@@ -109,6 +121,50 @@ public SubjectAlternativeNames setUserPrincipalNames(List userPrincipalN
         return this;
     }
 
+    /**
+     * Get the uniformResourceIdentifiers property: Uniform Resource Identifiers.
+     * 
+     * @return the uniformResourceIdentifiers value.
+     */
+    @Generated
+    public List getUniformResourceIdentifiers() {
+        return this.uniformResourceIdentifiers;
+    }
+
+    /**
+     * Set the uniformResourceIdentifiers property: Uniform Resource Identifiers.
+     * 
+     * @param uniformResourceIdentifiers the uniformResourceIdentifiers value to set.
+     * @return the SubjectAlternativeNames object itself.
+     */
+    @Generated
+    public SubjectAlternativeNames setUniformResourceIdentifiers(List uniformResourceIdentifiers) {
+        this.uniformResourceIdentifiers = uniformResourceIdentifiers;
+        return this;
+    }
+
+    /**
+     * Get the ipAddresses property: IP addresses; supports IPv4 and IPv6.
+     * 
+     * @return the ipAddresses value.
+     */
+    @Generated
+    public List getIpAddresses() {
+        return this.ipAddresses;
+    }
+
+    /**
+     * Set the ipAddresses property: IP addresses; supports IPv4 and IPv6.
+     * 
+     * @param ipAddresses the ipAddresses value to set.
+     * @return the SubjectAlternativeNames object itself.
+     */
+    @Generated
+    public SubjectAlternativeNames setIpAddresses(List ipAddresses) {
+        this.ipAddresses = ipAddresses;
+        return this;
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -119,6 +175,9 @@ public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
         jsonWriter.writeArrayField("emails", this.emails, (writer, element) -> writer.writeString(element));
         jsonWriter.writeArrayField("dns_names", this.dnsNames, (writer, element) -> writer.writeString(element));
         jsonWriter.writeArrayField("upns", this.userPrincipalNames, (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("uris", this.uniformResourceIdentifiers,
+            (writer, element) -> writer.writeString(element));
+        jsonWriter.writeArrayField("ipAddresses", this.ipAddresses, (writer, element) -> writer.writeString(element));
         return jsonWriter.writeEndObject();
     }
 
@@ -147,6 +206,12 @@ public static SubjectAlternativeNames fromJson(JsonReader jsonReader) throws IOE
                 } else if ("upns".equals(fieldName)) {
                     List userPrincipalNames = reader.readArray(reader1 -> reader1.getString());
                     deserializedSubjectAlternativeNames.userPrincipalNames = userPrincipalNames;
+                } else if ("uris".equals(fieldName)) {
+                    List uniformResourceIdentifiers = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSubjectAlternativeNames.uniformResourceIdentifiers = uniformResourceIdentifiers;
+                } else if ("ipAddresses".equals(fieldName)) {
+                    List ipAddresses = reader.readArray(reader1 -> reader1.getString());
+                    deserializedSubjectAlternativeNames.ipAddresses = ipAddresses;
                 } else {
                     reader.skipChildren();
                 }
diff --git a/sdk/keyvault/azure-security-keyvault-certificates/tsp-location.yaml b/sdk/keyvault/azure-security-keyvault-certificates/tsp-location.yaml
index 51d3add132dd..94a2837d2b59 100644
--- a/sdk/keyvault/azure-security-keyvault-certificates/tsp-location.yaml
+++ b/sdk/keyvault/azure-security-keyvault-certificates/tsp-location.yaml
@@ -1,5 +1,5 @@
 directory: specification/keyvault/Security.KeyVault.Certificates
-commit: 396ab529763b7195ab089f58e2eefb011e1b290d
+commit: 35275d315efee7fa79b6661c29cb3f1c05e86b76
 repo: Azure/azure-rest-api-specs
 cleanup: true
 additionalDirectories: