From 640de6ea2912a71129117bc278579ace77e6a8ff Mon Sep 17 00:00:00 2001
From: gracewilcox <graceawilcox@gmail.com>
Date: Wed, 31 May 2023 20:08:07 -0700
Subject: [PATCH 1/4] renames

---
 .../keyvault/azcertificates/CHANGELOG.md      |  29 +
 .../keyvault/azcertificates/autorest.md       | 111 ++-
 .../keyvault/azcertificates/client.go         | 664 +++++++++---------
 .../keyvault/azcertificates/client_test.go    |  62 +-
 .../keyvault/azcertificates/constants.go      | 113 +--
 .../keyvault/azcertificates/example_test.go   |   4 +-
 .../keyvault/azcertificates/models.go         | 289 ++++----
 .../keyvault/azcertificates/models_serde.go   | 502 ++++++-------
 .../keyvault/azcertificates/response_types.go |  90 +--
 9 files changed, 955 insertions(+), 909 deletions(-)

diff --git a/sdk/security/keyvault/azcertificates/CHANGELOG.md b/sdk/security/keyvault/azcertificates/CHANGELOG.md
index 62b8d79dfa80..53186f09ad9d 100644
--- a/sdk/security/keyvault/azcertificates/CHANGELOG.md
+++ b/sdk/security/keyvault/azcertificates/CHANGELOG.md
@@ -2,6 +2,35 @@
 
 ## 0.11.0 (unreleased)
 
+### Breaking Changes
+* Rename `ListCertificates` to `ListCertificateProperties`
+* `ListCertificateIssuers` to `ListIssuerProperties`
+* `ListCertificateVersions` to `ListCertificatePropertiesVersions`
+* `ListDeletedCertificates` to `ListDeletedCertificateProperties`
+* `CertificateListResult` to `CertificatePropertiesListResult`
+* `DeletedCertificateListResult` to `DeletedCertificatePropertiesListResult`
+* `SetCertificateContacts` to `SetContacts`
+* `GetCertificateContacts` to `GetContacts`
+* `DeleteCertificateContacts` to `DeleteContacts`
+* `SetCertificateIssuer` to `SetIssuer`
+* `UpdateCertificateIssuer` to `UpdateIssuer`
+* `GetCertificateIssuer` to `GetIssuer`
+* `DeleteCertificateIssuer` to `DeleteIssuer`
+* `CertificateIssuerListResult` to `IssuerPropertiesListResult`
+* `UpdateCertificateIssuerParameters` to `UpdateIssuerParameters`
+* `SetCertificateIssuerParameters` to `SetIssuerParameters`
+* `CertificateBundle` to `Certificate`
+* `CertificateItem` to `CertificateProperties`
+* `DeletedCertificateBundle` to `DeletedCertificate`
+* `DeletedCertificateItem` to `DeletedCertificateProperties`
+* `IssuerBundle` to `Issuer`
+* `CertificateIssuerItem` to `IssuerProperties`
+* `RestoreCertificateParameters.CertificateBundleBackup` to `RestoreCertificateParameters.CertificateBackup`
+* `JSONWebKeyCurveName` to `CurveName`
+* `JSONWebKeyType` to `KeyType`
+* remove `MaxResults` parameter
+* remove `DeletionRecoveryLevel` type
+
 ### Other Changes
 * Updated dependencies
 
diff --git a/sdk/security/keyvault/azcertificates/autorest.md b/sdk/security/keyvault/azcertificates/autorest.md
index 88da32a480bb..8b380cbd5411 100644
--- a/sdk/security/keyvault/azcertificates/autorest.md
+++ b/sdk/security/keyvault/azcertificates/autorest.md
@@ -53,28 +53,83 @@ directive:
   # rename paged operations from Get* to List*
   - rename-operation:
       from: GetCertificates
-      to: ListCertificates
+      to: ListCertificateProperties
   - rename-operation:
       from: GetCertificateIssuers
-      to: ListCertificateIssuers
+      to: ListIssuerProperties
   - rename-operation:
       from: GetCertificateVersions
-      to: ListCertificateVersions
+      to: ListCertificatePropertiesVersions
   - rename-operation:
       from: GetDeletedCertificates
-      to: ListDeletedCertificates
+      to: ListDeletedCertificateProperties
+  - rename-model:
+      from: CertificateListResult
+      to: CertificatePropertiesListResult
+  - rename-model:
+      from: DeletedCertificateListResult
+      to: DeletedCertificatePropertiesListResult
 
-  # Maxresults -> MaxResults
-  - from: swagger-document
-    where: $.paths..parameters..[?(@.name=='maxresults')]
-    transform: $["x-ms-client-name"] = "MaxResults"
+  # remove redunant "certificate" from operation name
+  - rename-operation:
+      from: SetCertificateContacts
+      to: SetContacts
+  - rename-operation:
+      from: GetCertificateContacts
+      to: GetContacts
+  - rename-operation:
+      from: DeleteCertificateContacts
+      to: DeleteContacts
+  - rename-operation:
+      from: SetCertificateIssuer
+      to: SetIssuer
+  - rename-operation:
+      from: UpdateCertificateIssuer
+      to: UpdateIssuer
+  - rename-operation:
+      from: GetCertificateIssuer
+      to: GetIssuer
+  - rename-operation:
+      from: DeleteCertificateIssuer
+      to: DeleteIssuer
+  - rename-model:
+      from: CertificateIssuerListResult
+      to: IssuerPropertiesListResult
+  - rename-model:
+      from: UpdateCertificateIssuerParameters
+      to: UpdateIssuerParameters
+  - rename-model:
+      from: SetCertificateIssuerParameters
+      to: SetIssuerParameters
+
+  # rename CertificateBundle, CertificateItem, IssuerBundle
+  - rename-model:
+      from: CertificateBundle
+      to: Certificate
+  - rename-model:
+      from: CertificateItem
+      to: CertificateProperties
+  - rename-model:
+      from: DeletedCertificateBundle
+      to: DeletedCertificate
+  - rename-model:
+      from: DeletedCertificateItem
+      to: DeletedCertificateProperties
+  - rename-model:
+      from: IssuerBundle
+      to: Issuer
+  - rename-model:
+      from: CertificateIssuerItem
+      to: IssuerProperties
+  - where-model: RestoreCertificateParameters
+    transform: $.properties.value["x-ms-client-name"] = "CertificateBackup"
 
   # capitalize acronyms
-  - where-model: CertificateBundle
+  - where-model: Certificate
     transform: $.properties.cer["x-ms-client-name"] = "CER"
-  - where-model: CertificateBundle
+  - where-model: Certificate
     transform: $.properties.kid["x-ms-client-name"] = "KID"
-  - where-model: CertificateBundle
+  - where-model: Certificate
     transform: $.properties.sid["x-ms-client-name"] = "SID"
   - where-model: CertificateOperation
     transform: $.properties.csr["x-ms-client-name"] = "CSR"
@@ -83,6 +138,38 @@ directive:
   - where-model: X509CertificateProperties
     transform: $.properties.ekus["x-ms-client-name"] = "EKUs"
 
+  # Remove MaxResults parameter
+  - where: "$.paths..*"
+    remove-parameter:
+      in: query
+      name: maxresults
+
+  # remove JSONWeb prefix
+  - from: 
+      - models.go
+      - constants.go
+    where: $
+    transform: return $.replace(/JSONWebKeyCurveName/g, "CurveName");
+  - from: 
+      - models.go
+      - constants.go
+    where: $
+    transform: return $.replace(/JSONWebKeyType/g, "KeyType");
+
+  # remove DeletionRecoveryLevel type
+  - from: models.go
+    where: $
+    transform: return $.replace(/RecoveryLevel \*DeletionRecoveryLevel/g, "RecoveryLevel *string");
+  - from: constants.go
+    where: $
+    transform: return $.replace(/(?:\/\/.*\s)+type DeletionRecoveryLevel string/, "");
+  - from: constants.go
+    where: $
+    transform: return $.replace(/(?:\/\/.*\s)+func PossibleDeletionRecovery(?:.+\s)+\}/, "");
+  - from: constants.go
+    where: $
+    transform: return $.replace(/const \(\n\s\/\/ DeletionRecoveryLevel(?:.+\s)+\)/, "");
+
   # delete unused error models
   - from: models.go
     where: $
@@ -119,7 +206,7 @@ directive:
   # (specifying models because others have "ID" fields whose values aren't cert IDs)
   - from: models.go
     where: $
-    transform: return $.replace(/(type (?:Deleted)?Certificate(?:Bundle|Item) struct \{(?:\s.+\s)+\sID \*)string/g, "$1ID")
+    transform: return $.replace(/(type (?:Deleted)?Certificate(?:\s|Properties\s)struct \{(?:\s.+\s)+\sID \*)string/g, "$1ID")
 
   # remove "certificate" prefix from some method parameter names
   - from: client.go
diff --git a/sdk/security/keyvault/azcertificates/client.go b/sdk/security/keyvault/azcertificates/client.go
index 35effb7d7560..7cc85a776e83 100644
--- a/sdk/security/keyvault/azcertificates/client.go
+++ b/sdk/security/keyvault/azcertificates/client.go
@@ -173,37 +173,42 @@ func (client *Client) deleteCertificateCreateRequest(ctx context.Context, certif
 // deleteCertificateHandleResponse handles the DeleteCertificate response.
 func (client *Client) deleteCertificateHandleResponse(resp *http.Response) (DeleteCertificateResponse, error) {
 	result := DeleteCertificateResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.DeletedCertificateBundle); err != nil {
+	if err := runtime.UnmarshalAsJSON(resp, &result.DeletedCertificate); err != nil {
 		return DeleteCertificateResponse{}, err
 	}
 	return result, nil
 }
 
-// DeleteCertificateContacts - Deletes the certificate contacts for a specified key vault certificate. This operation requires
-// the certificates/managecontacts permission.
+// DeleteCertificateOperation - Deletes the creation operation for a specified certificate that is in the process of being
+// created. The certificate is no longer created. This operation requires the certificates/update permission.
 // If the operation fails it returns an *azcore.ResponseError type.
 //
 // Generated from API version 7.4
-//   - options - DeleteCertificateContactsOptions contains the optional parameters for the Client.DeleteCertificateContacts
+//   - certificateName - The name of the certificate.
+//   - options - DeleteCertificateOperationOptions contains the optional parameters for the Client.DeleteCertificateOperation
 //     method.
-func (client *Client) DeleteCertificateContacts(ctx context.Context, options *DeleteCertificateContactsOptions) (DeleteCertificateContactsResponse, error) {
-	req, err := client.deleteCertificateContactsCreateRequest(ctx, options)
+func (client *Client) DeleteCertificateOperation(ctx context.Context, certificateName string, options *DeleteCertificateOperationOptions) (DeleteCertificateOperationResponse, error) {
+	req, err := client.deleteCertificateOperationCreateRequest(ctx, certificateName, options)
 	if err != nil {
-		return DeleteCertificateContactsResponse{}, err
+		return DeleteCertificateOperationResponse{}, err
 	}
 	resp, err := client.internal.Pipeline().Do(req)
 	if err != nil {
-		return DeleteCertificateContactsResponse{}, err
+		return DeleteCertificateOperationResponse{}, err
 	}
 	if !runtime.HasStatusCode(resp, http.StatusOK) {
-		return DeleteCertificateContactsResponse{}, runtime.NewResponseError(resp)
+		return DeleteCertificateOperationResponse{}, runtime.NewResponseError(resp)
 	}
-	return client.deleteCertificateContactsHandleResponse(resp)
+	return client.deleteCertificateOperationHandleResponse(resp)
 }
 
-// deleteCertificateContactsCreateRequest creates the DeleteCertificateContacts request.
-func (client *Client) deleteCertificateContactsCreateRequest(ctx context.Context, options *DeleteCertificateContactsOptions) (*policy.Request, error) {
-	urlPath := "/certificates/contacts"
+// deleteCertificateOperationCreateRequest creates the DeleteCertificateOperation request.
+func (client *Client) deleteCertificateOperationCreateRequest(ctx context.Context, certificateName string, options *DeleteCertificateOperationOptions) (*policy.Request, error) {
+	urlPath := "/certificates/{certificate-name}/pending"
+	if certificateName == "" {
+		return nil, errors.New("parameter certificateName cannot be empty")
+	}
+	urlPath = strings.ReplaceAll(urlPath, "{certificate-name}", url.PathEscape(certificateName))
 	req, err := runtime.NewRequest(ctx, http.MethodDelete, runtime.JoinPaths(client.endpoint, urlPath))
 	if err != nil {
 		return nil, err
@@ -215,45 +220,39 @@ func (client *Client) deleteCertificateContactsCreateRequest(ctx context.Context
 	return req, nil
 }
 
-// deleteCertificateContactsHandleResponse handles the DeleteCertificateContacts response.
-func (client *Client) deleteCertificateContactsHandleResponse(resp *http.Response) (DeleteCertificateContactsResponse, error) {
-	result := DeleteCertificateContactsResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.Contacts); err != nil {
-		return DeleteCertificateContactsResponse{}, err
+// deleteCertificateOperationHandleResponse handles the DeleteCertificateOperation response.
+func (client *Client) deleteCertificateOperationHandleResponse(resp *http.Response) (DeleteCertificateOperationResponse, error) {
+	result := DeleteCertificateOperationResponse{}
+	if err := runtime.UnmarshalAsJSON(resp, &result.CertificateOperation); err != nil {
+		return DeleteCertificateOperationResponse{}, err
 	}
 	return result, nil
 }
 
-// DeleteCertificateIssuer - The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from
-// the vault. This operation requires the certificates/manageissuers/deleteissuers permission.
+// DeleteContacts - Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts
+// permission.
 // If the operation fails it returns an *azcore.ResponseError type.
 //
 // Generated from API version 7.4
-//   - issuerName - The name of the issuer.
-//   - options - DeleteCertificateIssuerOptions contains the optional parameters for the Client.DeleteCertificateIssuer
-//     method.
-func (client *Client) DeleteCertificateIssuer(ctx context.Context, issuerName string, options *DeleteCertificateIssuerOptions) (DeleteCertificateIssuerResponse, error) {
-	req, err := client.deleteCertificateIssuerCreateRequest(ctx, issuerName, options)
+//   - options - DeleteContactsOptions contains the optional parameters for the Client.DeleteContacts method.
+func (client *Client) DeleteContacts(ctx context.Context, options *DeleteContactsOptions) (DeleteContactsResponse, error) {
+	req, err := client.deleteContactsCreateRequest(ctx, options)
 	if err != nil {
-		return DeleteCertificateIssuerResponse{}, err
+		return DeleteContactsResponse{}, err
 	}
 	resp, err := client.internal.Pipeline().Do(req)
 	if err != nil {
-		return DeleteCertificateIssuerResponse{}, err
+		return DeleteContactsResponse{}, err
 	}
 	if !runtime.HasStatusCode(resp, http.StatusOK) {
-		return DeleteCertificateIssuerResponse{}, runtime.NewResponseError(resp)
+		return DeleteContactsResponse{}, runtime.NewResponseError(resp)
 	}
-	return client.deleteCertificateIssuerHandleResponse(resp)
+	return client.deleteContactsHandleResponse(resp)
 }
 
-// deleteCertificateIssuerCreateRequest creates the DeleteCertificateIssuer request.
-func (client *Client) deleteCertificateIssuerCreateRequest(ctx context.Context, issuerName string, options *DeleteCertificateIssuerOptions) (*policy.Request, error) {
-	urlPath := "/certificates/issuers/{issuer-name}"
-	if issuerName == "" {
-		return nil, errors.New("parameter issuerName cannot be empty")
-	}
-	urlPath = strings.ReplaceAll(urlPath, "{issuer-name}", url.PathEscape(issuerName))
+// deleteContactsCreateRequest creates the DeleteContacts request.
+func (client *Client) deleteContactsCreateRequest(ctx context.Context, options *DeleteContactsOptions) (*policy.Request, error) {
+	urlPath := "/certificates/contacts"
 	req, err := runtime.NewRequest(ctx, http.MethodDelete, runtime.JoinPaths(client.endpoint, urlPath))
 	if err != nil {
 		return nil, err
@@ -265,45 +264,44 @@ func (client *Client) deleteCertificateIssuerCreateRequest(ctx context.Context,
 	return req, nil
 }
 
-// deleteCertificateIssuerHandleResponse handles the DeleteCertificateIssuer response.
-func (client *Client) deleteCertificateIssuerHandleResponse(resp *http.Response) (DeleteCertificateIssuerResponse, error) {
-	result := DeleteCertificateIssuerResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.IssuerBundle); err != nil {
-		return DeleteCertificateIssuerResponse{}, err
+// deleteContactsHandleResponse handles the DeleteContacts response.
+func (client *Client) deleteContactsHandleResponse(resp *http.Response) (DeleteContactsResponse, error) {
+	result := DeleteContactsResponse{}
+	if err := runtime.UnmarshalAsJSON(resp, &result.Contacts); err != nil {
+		return DeleteContactsResponse{}, err
 	}
 	return result, nil
 }
 
-// DeleteCertificateOperation - Deletes the creation operation for a specified certificate that is in the process of being
-// created. The certificate is no longer created. This operation requires the certificates/update permission.
+// DeleteIssuer - The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault.
+// This operation requires the certificates/manageissuers/deleteissuers permission.
 // If the operation fails it returns an *azcore.ResponseError type.
 //
 // Generated from API version 7.4
-//   - certificateName - The name of the certificate.
-//   - options - DeleteCertificateOperationOptions contains the optional parameters for the Client.DeleteCertificateOperation
-//     method.
-func (client *Client) DeleteCertificateOperation(ctx context.Context, certificateName string, options *DeleteCertificateOperationOptions) (DeleteCertificateOperationResponse, error) {
-	req, err := client.deleteCertificateOperationCreateRequest(ctx, certificateName, options)
+//   - issuerName - The name of the issuer.
+//   - options - DeleteIssuerOptions contains the optional parameters for the Client.DeleteIssuer method.
+func (client *Client) DeleteIssuer(ctx context.Context, issuerName string, options *DeleteIssuerOptions) (DeleteIssuerResponse, error) {
+	req, err := client.deleteIssuerCreateRequest(ctx, issuerName, options)
 	if err != nil {
-		return DeleteCertificateOperationResponse{}, err
+		return DeleteIssuerResponse{}, err
 	}
 	resp, err := client.internal.Pipeline().Do(req)
 	if err != nil {
-		return DeleteCertificateOperationResponse{}, err
+		return DeleteIssuerResponse{}, err
 	}
 	if !runtime.HasStatusCode(resp, http.StatusOK) {
-		return DeleteCertificateOperationResponse{}, runtime.NewResponseError(resp)
+		return DeleteIssuerResponse{}, runtime.NewResponseError(resp)
 	}
-	return client.deleteCertificateOperationHandleResponse(resp)
+	return client.deleteIssuerHandleResponse(resp)
 }
 
-// deleteCertificateOperationCreateRequest creates the DeleteCertificateOperation request.
-func (client *Client) deleteCertificateOperationCreateRequest(ctx context.Context, certificateName string, options *DeleteCertificateOperationOptions) (*policy.Request, error) {
-	urlPath := "/certificates/{certificate-name}/pending"
-	if certificateName == "" {
-		return nil, errors.New("parameter certificateName cannot be empty")
+// deleteIssuerCreateRequest creates the DeleteIssuer request.
+func (client *Client) deleteIssuerCreateRequest(ctx context.Context, issuerName string, options *DeleteIssuerOptions) (*policy.Request, error) {
+	urlPath := "/certificates/issuers/{issuer-name}"
+	if issuerName == "" {
+		return nil, errors.New("parameter issuerName cannot be empty")
 	}
-	urlPath = strings.ReplaceAll(urlPath, "{certificate-name}", url.PathEscape(certificateName))
+	urlPath = strings.ReplaceAll(urlPath, "{issuer-name}", url.PathEscape(issuerName))
 	req, err := runtime.NewRequest(ctx, http.MethodDelete, runtime.JoinPaths(client.endpoint, urlPath))
 	if err != nil {
 		return nil, err
@@ -315,11 +313,11 @@ func (client *Client) deleteCertificateOperationCreateRequest(ctx context.Contex
 	return req, nil
 }
 
-// deleteCertificateOperationHandleResponse handles the DeleteCertificateOperation response.
-func (client *Client) deleteCertificateOperationHandleResponse(resp *http.Response) (DeleteCertificateOperationResponse, error) {
-	result := DeleteCertificateOperationResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.CertificateOperation); err != nil {
-		return DeleteCertificateOperationResponse{}, err
+// deleteIssuerHandleResponse handles the DeleteIssuer response.
+func (client *Client) deleteIssuerHandleResponse(resp *http.Response) (DeleteIssuerResponse, error) {
+	result := DeleteIssuerResponse{}
+	if err := runtime.UnmarshalAsJSON(resp, &result.Issuer); err != nil {
+		return DeleteIssuerResponse{}, err
 	}
 	return result, nil
 }
@@ -369,105 +367,12 @@ func (client *Client) getCertificateCreateRequest(ctx context.Context, certifica
 // getCertificateHandleResponse handles the GetCertificate response.
 func (client *Client) getCertificateHandleResponse(resp *http.Response) (GetCertificateResponse, error) {
 	result := GetCertificateResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.CertificateBundle); err != nil {
+	if err := runtime.UnmarshalAsJSON(resp, &result.Certificate); err != nil {
 		return GetCertificateResponse{}, err
 	}
 	return result, nil
 }
 
-// GetCertificateContacts - The GetCertificateContacts operation returns the set of certificate contact resources in the specified
-// key vault. This operation requires the certificates/managecontacts permission.
-// If the operation fails it returns an *azcore.ResponseError type.
-//
-// Generated from API version 7.4
-//   - options - GetCertificateContactsOptions contains the optional parameters for the Client.GetCertificateContacts method.
-func (client *Client) GetCertificateContacts(ctx context.Context, options *GetCertificateContactsOptions) (GetCertificateContactsResponse, error) {
-	req, err := client.getCertificateContactsCreateRequest(ctx, options)
-	if err != nil {
-		return GetCertificateContactsResponse{}, err
-	}
-	resp, err := client.internal.Pipeline().Do(req)
-	if err != nil {
-		return GetCertificateContactsResponse{}, err
-	}
-	if !runtime.HasStatusCode(resp, http.StatusOK) {
-		return GetCertificateContactsResponse{}, runtime.NewResponseError(resp)
-	}
-	return client.getCertificateContactsHandleResponse(resp)
-}
-
-// getCertificateContactsCreateRequest creates the GetCertificateContacts request.
-func (client *Client) getCertificateContactsCreateRequest(ctx context.Context, options *GetCertificateContactsOptions) (*policy.Request, error) {
-	urlPath := "/certificates/contacts"
-	req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.endpoint, urlPath))
-	if err != nil {
-		return nil, err
-	}
-	reqQP := req.Raw().URL.Query()
-	reqQP.Set("api-version", "7.4")
-	req.Raw().URL.RawQuery = reqQP.Encode()
-	req.Raw().Header["Accept"] = []string{"application/json"}
-	return req, nil
-}
-
-// getCertificateContactsHandleResponse handles the GetCertificateContacts response.
-func (client *Client) getCertificateContactsHandleResponse(resp *http.Response) (GetCertificateContactsResponse, error) {
-	result := GetCertificateContactsResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.Contacts); err != nil {
-		return GetCertificateContactsResponse{}, err
-	}
-	return result, nil
-}
-
-// GetCertificateIssuer - The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified
-// key vault. This operation requires the certificates/manageissuers/getissuers permission.
-// If the operation fails it returns an *azcore.ResponseError type.
-//
-// Generated from API version 7.4
-//   - issuerName - The name of the issuer.
-//   - options - GetCertificateIssuerOptions contains the optional parameters for the Client.GetCertificateIssuer method.
-func (client *Client) GetCertificateIssuer(ctx context.Context, issuerName string, options *GetCertificateIssuerOptions) (GetCertificateIssuerResponse, error) {
-	req, err := client.getCertificateIssuerCreateRequest(ctx, issuerName, options)
-	if err != nil {
-		return GetCertificateIssuerResponse{}, err
-	}
-	resp, err := client.internal.Pipeline().Do(req)
-	if err != nil {
-		return GetCertificateIssuerResponse{}, err
-	}
-	if !runtime.HasStatusCode(resp, http.StatusOK) {
-		return GetCertificateIssuerResponse{}, runtime.NewResponseError(resp)
-	}
-	return client.getCertificateIssuerHandleResponse(resp)
-}
-
-// getCertificateIssuerCreateRequest creates the GetCertificateIssuer request.
-func (client *Client) getCertificateIssuerCreateRequest(ctx context.Context, issuerName string, options *GetCertificateIssuerOptions) (*policy.Request, error) {
-	urlPath := "/certificates/issuers/{issuer-name}"
-	if issuerName == "" {
-		return nil, errors.New("parameter issuerName cannot be empty")
-	}
-	urlPath = strings.ReplaceAll(urlPath, "{issuer-name}", url.PathEscape(issuerName))
-	req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.endpoint, urlPath))
-	if err != nil {
-		return nil, err
-	}
-	reqQP := req.Raw().URL.Query()
-	reqQP.Set("api-version", "7.4")
-	req.Raw().URL.RawQuery = reqQP.Encode()
-	req.Raw().Header["Accept"] = []string{"application/json"}
-	return req, nil
-}
-
-// getCertificateIssuerHandleResponse handles the GetCertificateIssuer response.
-func (client *Client) getCertificateIssuerHandleResponse(resp *http.Response) (GetCertificateIssuerResponse, error) {
-	result := GetCertificateIssuerResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.IssuerBundle); err != nil {
-		return GetCertificateIssuerResponse{}, err
-	}
-	return result, nil
-}
-
 // GetCertificateOperation - Gets the creation operation associated with a specified certificate. This operation requires
 // the certificates/get permission.
 // If the operation fails it returns an *azcore.ResponseError type.
@@ -567,6 +472,50 @@ func (client *Client) getCertificatePolicyHandleResponse(resp *http.Response) (G
 	return result, nil
 }
 
+// GetContacts - The GetCertificateContacts operation returns the set of certificate contact resources in the specified key
+// vault. This operation requires the certificates/managecontacts permission.
+// If the operation fails it returns an *azcore.ResponseError type.
+//
+// Generated from API version 7.4
+//   - options - GetContactsOptions contains the optional parameters for the Client.GetContacts method.
+func (client *Client) GetContacts(ctx context.Context, options *GetContactsOptions) (GetContactsResponse, error) {
+	req, err := client.getContactsCreateRequest(ctx, options)
+	if err != nil {
+		return GetContactsResponse{}, err
+	}
+	resp, err := client.internal.Pipeline().Do(req)
+	if err != nil {
+		return GetContactsResponse{}, err
+	}
+	if !runtime.HasStatusCode(resp, http.StatusOK) {
+		return GetContactsResponse{}, runtime.NewResponseError(resp)
+	}
+	return client.getContactsHandleResponse(resp)
+}
+
+// getContactsCreateRequest creates the GetContacts request.
+func (client *Client) getContactsCreateRequest(ctx context.Context, options *GetContactsOptions) (*policy.Request, error) {
+	urlPath := "/certificates/contacts"
+	req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.endpoint, urlPath))
+	if err != nil {
+		return nil, err
+	}
+	reqQP := req.Raw().URL.Query()
+	reqQP.Set("api-version", "7.4")
+	req.Raw().URL.RawQuery = reqQP.Encode()
+	req.Raw().Header["Accept"] = []string{"application/json"}
+	return req, nil
+}
+
+// getContactsHandleResponse handles the GetContacts response.
+func (client *Client) getContactsHandleResponse(resp *http.Response) (GetContactsResponse, error) {
+	result := GetContactsResponse{}
+	if err := runtime.UnmarshalAsJSON(resp, &result.Contacts); err != nil {
+		return GetContactsResponse{}, err
+	}
+	return result, nil
+}
+
 // GetDeletedCertificate - The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes,
 // such as retention interval, scheduled permanent deletion and the current deletion recovery level.
 // This operation requires the certificates/get permission.
@@ -611,12 +560,61 @@ func (client *Client) getDeletedCertificateCreateRequest(ctx context.Context, ce
 // getDeletedCertificateHandleResponse handles the GetDeletedCertificate response.
 func (client *Client) getDeletedCertificateHandleResponse(resp *http.Response) (GetDeletedCertificateResponse, error) {
 	result := GetDeletedCertificateResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.DeletedCertificateBundle); err != nil {
+	if err := runtime.UnmarshalAsJSON(resp, &result.DeletedCertificate); err != nil {
 		return GetDeletedCertificateResponse{}, err
 	}
 	return result, nil
 }
 
+// GetIssuer - The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key
+// vault. This operation requires the certificates/manageissuers/getissuers permission.
+// If the operation fails it returns an *azcore.ResponseError type.
+//
+// Generated from API version 7.4
+//   - issuerName - The name of the issuer.
+//   - options - GetIssuerOptions contains the optional parameters for the Client.GetIssuer method.
+func (client *Client) GetIssuer(ctx context.Context, issuerName string, options *GetIssuerOptions) (GetIssuerResponse, error) {
+	req, err := client.getIssuerCreateRequest(ctx, issuerName, options)
+	if err != nil {
+		return GetIssuerResponse{}, err
+	}
+	resp, err := client.internal.Pipeline().Do(req)
+	if err != nil {
+		return GetIssuerResponse{}, err
+	}
+	if !runtime.HasStatusCode(resp, http.StatusOK) {
+		return GetIssuerResponse{}, runtime.NewResponseError(resp)
+	}
+	return client.getIssuerHandleResponse(resp)
+}
+
+// getIssuerCreateRequest creates the GetIssuer request.
+func (client *Client) getIssuerCreateRequest(ctx context.Context, issuerName string, options *GetIssuerOptions) (*policy.Request, error) {
+	urlPath := "/certificates/issuers/{issuer-name}"
+	if issuerName == "" {
+		return nil, errors.New("parameter issuerName cannot be empty")
+	}
+	urlPath = strings.ReplaceAll(urlPath, "{issuer-name}", url.PathEscape(issuerName))
+	req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.endpoint, urlPath))
+	if err != nil {
+		return nil, err
+	}
+	reqQP := req.Raw().URL.Query()
+	reqQP.Set("api-version", "7.4")
+	req.Raw().URL.RawQuery = reqQP.Encode()
+	req.Raw().Header["Accept"] = []string{"application/json"}
+	return req, nil
+}
+
+// getIssuerHandleResponse handles the GetIssuer response.
+func (client *Client) getIssuerHandleResponse(resp *http.Response) (GetIssuerResponse, error) {
+	result := GetIssuerResponse{}
+	if err := runtime.UnmarshalAsJSON(resp, &result.Issuer); err != nil {
+		return GetIssuerResponse{}, err
+	}
+	return result, nil
+}
+
 // ImportCertificate - Imports an existing valid certificate, containing a private key, into Azure Key Vault. This operation
 // requires the certificates/import permission. The certificate to be imported can be in either PFX
 // or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. Key
@@ -665,56 +663,56 @@ func (client *Client) importCertificateCreateRequest(ctx context.Context, certif
 // importCertificateHandleResponse handles the ImportCertificate response.
 func (client *Client) importCertificateHandleResponse(resp *http.Response) (ImportCertificateResponse, error) {
 	result := ImportCertificateResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.CertificateBundle); err != nil {
+	if err := runtime.UnmarshalAsJSON(resp, &result.Certificate); err != nil {
 		return ImportCertificateResponse{}, err
 	}
 	return result, nil
 }
 
-// NewListCertificateIssuersPager - The GetCertificateIssuers operation returns the set of certificate issuer resources in
-// the specified key vault. This operation requires the certificates/manageissuers/getissuers permission.
+// NewListCertificatePropertiesPager - The GetCertificates operation returns the set of certificates resources in the specified
+// key vault. This operation requires the certificates/list permission.
 //
 // Generated from API version 7.4
-//   - options - ListCertificateIssuersOptions contains the optional parameters for the Client.NewListCertificateIssuersPager
+//   - options - ListCertificatePropertiesOptions contains the optional parameters for the Client.NewListCertificatePropertiesPager
 //     method.
-func (client *Client) NewListCertificateIssuersPager(options *ListCertificateIssuersOptions) *runtime.Pager[ListCertificateIssuersResponse] {
-	return runtime.NewPager(runtime.PagingHandler[ListCertificateIssuersResponse]{
-		More: func(page ListCertificateIssuersResponse) bool {
+func (client *Client) NewListCertificatePropertiesPager(options *ListCertificatePropertiesOptions) *runtime.Pager[ListCertificatePropertiesResponse] {
+	return runtime.NewPager(runtime.PagingHandler[ListCertificatePropertiesResponse]{
+		More: func(page ListCertificatePropertiesResponse) bool {
 			return page.NextLink != nil && len(*page.NextLink) > 0
 		},
-		Fetcher: func(ctx context.Context, page *ListCertificateIssuersResponse) (ListCertificateIssuersResponse, error) {
+		Fetcher: func(ctx context.Context, page *ListCertificatePropertiesResponse) (ListCertificatePropertiesResponse, error) {
 			var req *policy.Request
 			var err error
 			if page == nil {
-				req, err = client.listCertificateIssuersCreateRequest(ctx, options)
+				req, err = client.listCertificatePropertiesCreateRequest(ctx, options)
 			} else {
 				req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink)
 			}
 			if err != nil {
-				return ListCertificateIssuersResponse{}, err
+				return ListCertificatePropertiesResponse{}, err
 			}
 			resp, err := client.internal.Pipeline().Do(req)
 			if err != nil {
-				return ListCertificateIssuersResponse{}, err
+				return ListCertificatePropertiesResponse{}, err
 			}
 			if !runtime.HasStatusCode(resp, http.StatusOK) {
-				return ListCertificateIssuersResponse{}, runtime.NewResponseError(resp)
+				return ListCertificatePropertiesResponse{}, runtime.NewResponseError(resp)
 			}
-			return client.listCertificateIssuersHandleResponse(resp)
+			return client.listCertificatePropertiesHandleResponse(resp)
 		},
 	})
 }
 
-// listCertificateIssuersCreateRequest creates the ListCertificateIssuers request.
-func (client *Client) listCertificateIssuersCreateRequest(ctx context.Context, options *ListCertificateIssuersOptions) (*policy.Request, error) {
-	urlPath := "/certificates/issuers"
+// listCertificatePropertiesCreateRequest creates the ListCertificateProperties request.
+func (client *Client) listCertificatePropertiesCreateRequest(ctx context.Context, options *ListCertificatePropertiesOptions) (*policy.Request, error) {
+	urlPath := "/certificates"
 	req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.endpoint, urlPath))
 	if err != nil {
 		return nil, err
 	}
 	reqQP := req.Raw().URL.Query()
-	if options != nil && options.MaxResults != nil {
-		reqQP.Set("maxresults", strconv.FormatInt(int64(*options.MaxResults), 10))
+	if options != nil && options.IncludePending != nil {
+		reqQP.Set("includePending", strconv.FormatBool(*options.IncludePending))
 	}
 	reqQP.Set("api-version", "7.4")
 	req.Raw().URL.RawQuery = reqQP.Encode()
@@ -722,52 +720,52 @@ func (client *Client) listCertificateIssuersCreateRequest(ctx context.Context, o
 	return req, nil
 }
 
-// listCertificateIssuersHandleResponse handles the ListCertificateIssuers response.
-func (client *Client) listCertificateIssuersHandleResponse(resp *http.Response) (ListCertificateIssuersResponse, error) {
-	result := ListCertificateIssuersResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.CertificateIssuerListResult); err != nil {
-		return ListCertificateIssuersResponse{}, err
+// listCertificatePropertiesHandleResponse handles the ListCertificateProperties response.
+func (client *Client) listCertificatePropertiesHandleResponse(resp *http.Response) (ListCertificatePropertiesResponse, error) {
+	result := ListCertificatePropertiesResponse{}
+	if err := runtime.UnmarshalAsJSON(resp, &result.CertificatePropertiesListResult); err != nil {
+		return ListCertificatePropertiesResponse{}, err
 	}
 	return result, nil
 }
 
-// NewListCertificateVersionsPager - The GetCertificateVersions operation returns the versions of a certificate in the specified
-// key vault. This operation requires the certificates/list permission.
+// NewListCertificatePropertiesVersionsPager - The GetCertificateVersions operation returns the versions of a certificate
+// in the specified key vault. This operation requires the certificates/list permission.
 //
 // Generated from API version 7.4
 //   - certificateName - The name of the certificate.
-//   - options - ListCertificateVersionsOptions contains the optional parameters for the Client.NewListCertificateVersionsPager
+//   - options - ListCertificatePropertiesVersionsOptions contains the optional parameters for the Client.NewListCertificatePropertiesVersionsPager
 //     method.
-func (client *Client) NewListCertificateVersionsPager(certificateName string, options *ListCertificateVersionsOptions) *runtime.Pager[ListCertificateVersionsResponse] {
-	return runtime.NewPager(runtime.PagingHandler[ListCertificateVersionsResponse]{
-		More: func(page ListCertificateVersionsResponse) bool {
+func (client *Client) NewListCertificatePropertiesVersionsPager(certificateName string, options *ListCertificatePropertiesVersionsOptions) *runtime.Pager[ListCertificatePropertiesVersionsResponse] {
+	return runtime.NewPager(runtime.PagingHandler[ListCertificatePropertiesVersionsResponse]{
+		More: func(page ListCertificatePropertiesVersionsResponse) bool {
 			return page.NextLink != nil && len(*page.NextLink) > 0
 		},
-		Fetcher: func(ctx context.Context, page *ListCertificateVersionsResponse) (ListCertificateVersionsResponse, error) {
+		Fetcher: func(ctx context.Context, page *ListCertificatePropertiesVersionsResponse) (ListCertificatePropertiesVersionsResponse, error) {
 			var req *policy.Request
 			var err error
 			if page == nil {
-				req, err = client.listCertificateVersionsCreateRequest(ctx, certificateName, options)
+				req, err = client.listCertificatePropertiesVersionsCreateRequest(ctx, certificateName, options)
 			} else {
 				req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink)
 			}
 			if err != nil {
-				return ListCertificateVersionsResponse{}, err
+				return ListCertificatePropertiesVersionsResponse{}, err
 			}
 			resp, err := client.internal.Pipeline().Do(req)
 			if err != nil {
-				return ListCertificateVersionsResponse{}, err
+				return ListCertificatePropertiesVersionsResponse{}, err
 			}
 			if !runtime.HasStatusCode(resp, http.StatusOK) {
-				return ListCertificateVersionsResponse{}, runtime.NewResponseError(resp)
+				return ListCertificatePropertiesVersionsResponse{}, runtime.NewResponseError(resp)
 			}
-			return client.listCertificateVersionsHandleResponse(resp)
+			return client.listCertificatePropertiesVersionsHandleResponse(resp)
 		},
 	})
 }
 
-// listCertificateVersionsCreateRequest creates the ListCertificateVersions request.
-func (client *Client) listCertificateVersionsCreateRequest(ctx context.Context, certificateName string, options *ListCertificateVersionsOptions) (*policy.Request, error) {
+// listCertificatePropertiesVersionsCreateRequest creates the ListCertificatePropertiesVersions request.
+func (client *Client) listCertificatePropertiesVersionsCreateRequest(ctx context.Context, certificateName string, options *ListCertificatePropertiesVersionsOptions) (*policy.Request, error) {
 	urlPath := "/certificates/{certificate-name}/versions"
 	if certificateName == "" {
 		return nil, errors.New("parameter certificateName cannot be empty")
@@ -778,68 +776,65 @@ func (client *Client) listCertificateVersionsCreateRequest(ctx context.Context,
 		return nil, err
 	}
 	reqQP := req.Raw().URL.Query()
-	if options != nil && options.MaxResults != nil {
-		reqQP.Set("maxresults", strconv.FormatInt(int64(*options.MaxResults), 10))
-	}
 	reqQP.Set("api-version", "7.4")
 	req.Raw().URL.RawQuery = reqQP.Encode()
 	req.Raw().Header["Accept"] = []string{"application/json"}
 	return req, nil
 }
 
-// listCertificateVersionsHandleResponse handles the ListCertificateVersions response.
-func (client *Client) listCertificateVersionsHandleResponse(resp *http.Response) (ListCertificateVersionsResponse, error) {
-	result := ListCertificateVersionsResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.CertificateListResult); err != nil {
-		return ListCertificateVersionsResponse{}, err
+// listCertificatePropertiesVersionsHandleResponse handles the ListCertificatePropertiesVersions response.
+func (client *Client) listCertificatePropertiesVersionsHandleResponse(resp *http.Response) (ListCertificatePropertiesVersionsResponse, error) {
+	result := ListCertificatePropertiesVersionsResponse{}
+	if err := runtime.UnmarshalAsJSON(resp, &result.CertificatePropertiesListResult); err != nil {
+		return ListCertificatePropertiesVersionsResponse{}, err
 	}
 	return result, nil
 }
 
-// NewListCertificatesPager - The GetCertificates operation returns the set of certificates resources in the specified key
-// vault. This operation requires the certificates/list permission.
+// NewListDeletedCertificatePropertiesPager - The GetDeletedCertificates operation retrieves the certificates in the current
+// vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific
+// information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete
+// enabled vaults.
 //
 // Generated from API version 7.4
-//   - options - ListCertificatesOptions contains the optional parameters for the Client.NewListCertificatesPager method.
-func (client *Client) NewListCertificatesPager(options *ListCertificatesOptions) *runtime.Pager[ListCertificatesResponse] {
-	return runtime.NewPager(runtime.PagingHandler[ListCertificatesResponse]{
-		More: func(page ListCertificatesResponse) bool {
+//   - options - ListDeletedCertificatePropertiesOptions contains the optional parameters for the Client.NewListDeletedCertificatePropertiesPager
+//     method.
+func (client *Client) NewListDeletedCertificatePropertiesPager(options *ListDeletedCertificatePropertiesOptions) *runtime.Pager[ListDeletedCertificatePropertiesResponse] {
+	return runtime.NewPager(runtime.PagingHandler[ListDeletedCertificatePropertiesResponse]{
+		More: func(page ListDeletedCertificatePropertiesResponse) bool {
 			return page.NextLink != nil && len(*page.NextLink) > 0
 		},
-		Fetcher: func(ctx context.Context, page *ListCertificatesResponse) (ListCertificatesResponse, error) {
+		Fetcher: func(ctx context.Context, page *ListDeletedCertificatePropertiesResponse) (ListDeletedCertificatePropertiesResponse, error) {
 			var req *policy.Request
 			var err error
 			if page == nil {
-				req, err = client.listCertificatesCreateRequest(ctx, options)
+				req, err = client.listDeletedCertificatePropertiesCreateRequest(ctx, options)
 			} else {
 				req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink)
 			}
 			if err != nil {
-				return ListCertificatesResponse{}, err
+				return ListDeletedCertificatePropertiesResponse{}, err
 			}
 			resp, err := client.internal.Pipeline().Do(req)
 			if err != nil {
-				return ListCertificatesResponse{}, err
+				return ListDeletedCertificatePropertiesResponse{}, err
 			}
 			if !runtime.HasStatusCode(resp, http.StatusOK) {
-				return ListCertificatesResponse{}, runtime.NewResponseError(resp)
+				return ListDeletedCertificatePropertiesResponse{}, runtime.NewResponseError(resp)
 			}
-			return client.listCertificatesHandleResponse(resp)
+			return client.listDeletedCertificatePropertiesHandleResponse(resp)
 		},
 	})
 }
 
-// listCertificatesCreateRequest creates the ListCertificates request.
-func (client *Client) listCertificatesCreateRequest(ctx context.Context, options *ListCertificatesOptions) (*policy.Request, error) {
-	urlPath := "/certificates"
+// listDeletedCertificatePropertiesCreateRequest creates the ListDeletedCertificateProperties request.
+func (client *Client) listDeletedCertificatePropertiesCreateRequest(ctx context.Context, options *ListDeletedCertificatePropertiesOptions) (*policy.Request, error) {
+	urlPath := "/deletedcertificates"
 	req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.endpoint, urlPath))
 	if err != nil {
 		return nil, err
 	}
 	reqQP := req.Raw().URL.Query()
-	if options != nil && options.MaxResults != nil {
-		reqQP.Set("maxresults", strconv.FormatInt(int64(*options.MaxResults), 10))
-	}
 	if options != nil && options.IncludePending != nil {
 		reqQP.Set("includePending", strconv.FormatBool(*options.IncludePending))
 	}
@@ -849,76 +844,68 @@ func (client *Client) listCertificatesCreateRequest(ctx context.Context, options
 	return req, nil
 }
 
-// listCertificatesHandleResponse handles the ListCertificates response.
-func (client *Client) listCertificatesHandleResponse(resp *http.Response) (ListCertificatesResponse, error) {
-	result := ListCertificatesResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.CertificateListResult); err != nil {
-		return ListCertificatesResponse{}, err
+// listDeletedCertificatePropertiesHandleResponse handles the ListDeletedCertificateProperties response.
+func (client *Client) listDeletedCertificatePropertiesHandleResponse(resp *http.Response) (ListDeletedCertificatePropertiesResponse, error) {
+	result := ListDeletedCertificatePropertiesResponse{}
+	if err := runtime.UnmarshalAsJSON(resp, &result.DeletedCertificatePropertiesListResult); err != nil {
+		return ListDeletedCertificatePropertiesResponse{}, err
 	}
 	return result, nil
 }
 
-// NewListDeletedCertificatesPager - The GetDeletedCertificates operation retrieves the certificates in the current vault
-// which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific
-// information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete
-// enabled vaults.
+// NewListIssuerPropertiesPager - The GetCertificateIssuers operation returns the set of certificate issuer resources in the
+// specified key vault. This operation requires the certificates/manageissuers/getissuers permission.
 //
 // Generated from API version 7.4
-//   - options - ListDeletedCertificatesOptions contains the optional parameters for the Client.NewListDeletedCertificatesPager
+//   - options - ListIssuerPropertiesOptions contains the optional parameters for the Client.NewListIssuerPropertiesPager
 //     method.
-func (client *Client) NewListDeletedCertificatesPager(options *ListDeletedCertificatesOptions) *runtime.Pager[ListDeletedCertificatesResponse] {
-	return runtime.NewPager(runtime.PagingHandler[ListDeletedCertificatesResponse]{
-		More: func(page ListDeletedCertificatesResponse) bool {
+func (client *Client) NewListIssuerPropertiesPager(options *ListIssuerPropertiesOptions) *runtime.Pager[ListIssuerPropertiesResponse] {
+	return runtime.NewPager(runtime.PagingHandler[ListIssuerPropertiesResponse]{
+		More: func(page ListIssuerPropertiesResponse) bool {
 			return page.NextLink != nil && len(*page.NextLink) > 0
 		},
-		Fetcher: func(ctx context.Context, page *ListDeletedCertificatesResponse) (ListDeletedCertificatesResponse, error) {
+		Fetcher: func(ctx context.Context, page *ListIssuerPropertiesResponse) (ListIssuerPropertiesResponse, error) {
 			var req *policy.Request
 			var err error
 			if page == nil {
-				req, err = client.listDeletedCertificatesCreateRequest(ctx, options)
+				req, err = client.listIssuerPropertiesCreateRequest(ctx, options)
 			} else {
 				req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink)
 			}
 			if err != nil {
-				return ListDeletedCertificatesResponse{}, err
+				return ListIssuerPropertiesResponse{}, err
 			}
 			resp, err := client.internal.Pipeline().Do(req)
 			if err != nil {
-				return ListDeletedCertificatesResponse{}, err
+				return ListIssuerPropertiesResponse{}, err
 			}
 			if !runtime.HasStatusCode(resp, http.StatusOK) {
-				return ListDeletedCertificatesResponse{}, runtime.NewResponseError(resp)
+				return ListIssuerPropertiesResponse{}, runtime.NewResponseError(resp)
 			}
-			return client.listDeletedCertificatesHandleResponse(resp)
+			return client.listIssuerPropertiesHandleResponse(resp)
 		},
 	})
 }
 
-// listDeletedCertificatesCreateRequest creates the ListDeletedCertificates request.
-func (client *Client) listDeletedCertificatesCreateRequest(ctx context.Context, options *ListDeletedCertificatesOptions) (*policy.Request, error) {
-	urlPath := "/deletedcertificates"
+// listIssuerPropertiesCreateRequest creates the ListIssuerProperties request.
+func (client *Client) listIssuerPropertiesCreateRequest(ctx context.Context, options *ListIssuerPropertiesOptions) (*policy.Request, error) {
+	urlPath := "/certificates/issuers"
 	req, err := runtime.NewRequest(ctx, http.MethodGet, runtime.JoinPaths(client.endpoint, urlPath))
 	if err != nil {
 		return nil, err
 	}
 	reqQP := req.Raw().URL.Query()
-	if options != nil && options.MaxResults != nil {
-		reqQP.Set("maxresults", strconv.FormatInt(int64(*options.MaxResults), 10))
-	}
-	if options != nil && options.IncludePending != nil {
-		reqQP.Set("includePending", strconv.FormatBool(*options.IncludePending))
-	}
 	reqQP.Set("api-version", "7.4")
 	req.Raw().URL.RawQuery = reqQP.Encode()
 	req.Raw().Header["Accept"] = []string{"application/json"}
 	return req, nil
 }
 
-// listDeletedCertificatesHandleResponse handles the ListDeletedCertificates response.
-func (client *Client) listDeletedCertificatesHandleResponse(resp *http.Response) (ListDeletedCertificatesResponse, error) {
-	result := ListDeletedCertificatesResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.DeletedCertificateListResult); err != nil {
-		return ListDeletedCertificatesResponse{}, err
+// listIssuerPropertiesHandleResponse handles the ListIssuerProperties response.
+func (client *Client) listIssuerPropertiesHandleResponse(resp *http.Response) (ListIssuerPropertiesResponse, error) {
+	result := ListIssuerPropertiesResponse{}
+	if err := runtime.UnmarshalAsJSON(resp, &result.IssuerPropertiesListResult); err != nil {
+		return ListIssuerPropertiesResponse{}, err
 	}
 	return result, nil
 }
@@ -968,7 +955,7 @@ func (client *Client) mergeCertificateCreateRequest(ctx context.Context, certifi
 // mergeCertificateHandleResponse handles the MergeCertificate response.
 func (client *Client) mergeCertificateHandleResponse(resp *http.Response) (MergeCertificateResponse, error) {
 	result := MergeCertificateResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.CertificateBundle); err != nil {
+	if err := runtime.UnmarshalAsJSON(resp, &result.Certificate); err != nil {
 		return MergeCertificateResponse{}, err
 	}
 	return result, nil
@@ -1061,7 +1048,7 @@ func (client *Client) recoverDeletedCertificateCreateRequest(ctx context.Context
 // recoverDeletedCertificateHandleResponse handles the RecoverDeletedCertificate response.
 func (client *Client) recoverDeletedCertificateHandleResponse(resp *http.Response) (RecoverDeletedCertificateResponse, error) {
 	result := RecoverDeletedCertificateResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.CertificateBundle); err != nil {
+	if err := runtime.UnmarshalAsJSON(resp, &result.Certificate); err != nil {
 		return RecoverDeletedCertificateResponse{}, err
 	}
 	return result, nil
@@ -1106,36 +1093,36 @@ func (client *Client) restoreCertificateCreateRequest(ctx context.Context, param
 // restoreCertificateHandleResponse handles the RestoreCertificate response.
 func (client *Client) restoreCertificateHandleResponse(resp *http.Response) (RestoreCertificateResponse, error) {
 	result := RestoreCertificateResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.CertificateBundle); err != nil {
+	if err := runtime.UnmarshalAsJSON(resp, &result.Certificate); err != nil {
 		return RestoreCertificateResponse{}, err
 	}
 	return result, nil
 }
 
-// SetCertificateContacts - Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts
+// SetContacts - Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts
 // permission.
 // If the operation fails it returns an *azcore.ResponseError type.
 //
 // Generated from API version 7.4
 //   - contacts - The contacts for the key vault certificate.
-//   - options - SetCertificateContactsOptions contains the optional parameters for the Client.SetCertificateContacts method.
-func (client *Client) SetCertificateContacts(ctx context.Context, contacts Contacts, options *SetCertificateContactsOptions) (SetCertificateContactsResponse, error) {
-	req, err := client.setCertificateContactsCreateRequest(ctx, contacts, options)
+//   - options - SetContactsOptions contains the optional parameters for the Client.SetContacts method.
+func (client *Client) SetContacts(ctx context.Context, contacts Contacts, options *SetContactsOptions) (SetContactsResponse, error) {
+	req, err := client.setContactsCreateRequest(ctx, contacts, options)
 	if err != nil {
-		return SetCertificateContactsResponse{}, err
+		return SetContactsResponse{}, err
 	}
 	resp, err := client.internal.Pipeline().Do(req)
 	if err != nil {
-		return SetCertificateContactsResponse{}, err
+		return SetContactsResponse{}, err
 	}
 	if !runtime.HasStatusCode(resp, http.StatusOK) {
-		return SetCertificateContactsResponse{}, runtime.NewResponseError(resp)
+		return SetContactsResponse{}, runtime.NewResponseError(resp)
 	}
-	return client.setCertificateContactsHandleResponse(resp)
+	return client.setContactsHandleResponse(resp)
 }
 
-// setCertificateContactsCreateRequest creates the SetCertificateContacts request.
-func (client *Client) setCertificateContactsCreateRequest(ctx context.Context, contacts Contacts, options *SetCertificateContactsOptions) (*policy.Request, error) {
+// setContactsCreateRequest creates the SetContacts request.
+func (client *Client) setContactsCreateRequest(ctx context.Context, contacts Contacts, options *SetContactsOptions) (*policy.Request, error) {
 	urlPath := "/certificates/contacts"
 	req, err := runtime.NewRequest(ctx, http.MethodPut, runtime.JoinPaths(client.endpoint, urlPath))
 	if err != nil {
@@ -1148,41 +1135,41 @@ func (client *Client) setCertificateContactsCreateRequest(ctx context.Context, c
 	return req, runtime.MarshalAsJSON(req, contacts)
 }
 
-// setCertificateContactsHandleResponse handles the SetCertificateContacts response.
-func (client *Client) setCertificateContactsHandleResponse(resp *http.Response) (SetCertificateContactsResponse, error) {
-	result := SetCertificateContactsResponse{}
+// setContactsHandleResponse handles the SetContacts response.
+func (client *Client) setContactsHandleResponse(resp *http.Response) (SetContactsResponse, error) {
+	result := SetContactsResponse{}
 	if err := runtime.UnmarshalAsJSON(resp, &result.Contacts); err != nil {
-		return SetCertificateContactsResponse{}, err
+		return SetContactsResponse{}, err
 	}
 	return result, nil
 }
 
-// SetCertificateIssuer - The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation
-// requires the certificates/setissuers permission.
+// SetIssuer - The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires
+// the certificates/setissuers permission.
 // If the operation fails it returns an *azcore.ResponseError type.
 //
 // Generated from API version 7.4
 //   - issuerName - The name of the issuer. The value you provide may be copied globally for the purpose of running the service.
 //     The value provided should not include personally identifiable or sensitive information.
 //   - parameter - Certificate issuer set parameter.
-//   - options - SetCertificateIssuerOptions contains the optional parameters for the Client.SetCertificateIssuer method.
-func (client *Client) SetCertificateIssuer(ctx context.Context, issuerName string, parameter SetCertificateIssuerParameters, options *SetCertificateIssuerOptions) (SetCertificateIssuerResponse, error) {
-	req, err := client.setCertificateIssuerCreateRequest(ctx, issuerName, parameter, options)
+//   - options - SetIssuerOptions contains the optional parameters for the Client.SetIssuer method.
+func (client *Client) SetIssuer(ctx context.Context, issuerName string, parameter SetIssuerParameters, options *SetIssuerOptions) (SetIssuerResponse, error) {
+	req, err := client.setIssuerCreateRequest(ctx, issuerName, parameter, options)
 	if err != nil {
-		return SetCertificateIssuerResponse{}, err
+		return SetIssuerResponse{}, err
 	}
 	resp, err := client.internal.Pipeline().Do(req)
 	if err != nil {
-		return SetCertificateIssuerResponse{}, err
+		return SetIssuerResponse{}, err
 	}
 	if !runtime.HasStatusCode(resp, http.StatusOK) {
-		return SetCertificateIssuerResponse{}, runtime.NewResponseError(resp)
+		return SetIssuerResponse{}, runtime.NewResponseError(resp)
 	}
-	return client.setCertificateIssuerHandleResponse(resp)
+	return client.setIssuerHandleResponse(resp)
 }
 
-// setCertificateIssuerCreateRequest creates the SetCertificateIssuer request.
-func (client *Client) setCertificateIssuerCreateRequest(ctx context.Context, issuerName string, parameter SetCertificateIssuerParameters, options *SetCertificateIssuerOptions) (*policy.Request, error) {
+// setIssuerCreateRequest creates the SetIssuer request.
+func (client *Client) setIssuerCreateRequest(ctx context.Context, issuerName string, parameter SetIssuerParameters, options *SetIssuerOptions) (*policy.Request, error) {
 	urlPath := "/certificates/issuers/{issuer-name}"
 	if issuerName == "" {
 		return nil, errors.New("parameter issuerName cannot be empty")
@@ -1199,11 +1186,11 @@ func (client *Client) setCertificateIssuerCreateRequest(ctx context.Context, iss
 	return req, runtime.MarshalAsJSON(req, parameter)
 }
 
-// setCertificateIssuerHandleResponse handles the SetCertificateIssuer response.
-func (client *Client) setCertificateIssuerHandleResponse(resp *http.Response) (SetCertificateIssuerResponse, error) {
-	result := SetCertificateIssuerResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.IssuerBundle); err != nil {
-		return SetCertificateIssuerResponse{}, err
+// setIssuerHandleResponse handles the SetIssuer response.
+func (client *Client) setIssuerHandleResponse(resp *http.Response) (SetIssuerResponse, error) {
+	result := SetIssuerResponse{}
+	if err := runtime.UnmarshalAsJSON(resp, &result.Issuer); err != nil {
+		return SetIssuerResponse{}, err
 	}
 	return result, nil
 }
@@ -1255,63 +1242,12 @@ func (client *Client) updateCertificateCreateRequest(ctx context.Context, certif
 // updateCertificateHandleResponse handles the UpdateCertificate response.
 func (client *Client) updateCertificateHandleResponse(resp *http.Response) (UpdateCertificateResponse, error) {
 	result := UpdateCertificateResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.CertificateBundle); err != nil {
+	if err := runtime.UnmarshalAsJSON(resp, &result.Certificate); err != nil {
 		return UpdateCertificateResponse{}, err
 	}
 	return result, nil
 }
 
-// UpdateCertificateIssuer - The UpdateCertificateIssuer operation performs an update on the specified certificate issuer
-// entity. This operation requires the certificates/setissuers permission.
-// If the operation fails it returns an *azcore.ResponseError type.
-//
-// Generated from API version 7.4
-//   - issuerName - The name of the issuer.
-//   - parameter - Certificate issuer update parameter.
-//   - options - UpdateCertificateIssuerOptions contains the optional parameters for the Client.UpdateCertificateIssuer
-//     method.
-func (client *Client) UpdateCertificateIssuer(ctx context.Context, issuerName string, parameter UpdateCertificateIssuerParameters, options *UpdateCertificateIssuerOptions) (UpdateCertificateIssuerResponse, error) {
-	req, err := client.updateCertificateIssuerCreateRequest(ctx, issuerName, parameter, options)
-	if err != nil {
-		return UpdateCertificateIssuerResponse{}, err
-	}
-	resp, err := client.internal.Pipeline().Do(req)
-	if err != nil {
-		return UpdateCertificateIssuerResponse{}, err
-	}
-	if !runtime.HasStatusCode(resp, http.StatusOK) {
-		return UpdateCertificateIssuerResponse{}, runtime.NewResponseError(resp)
-	}
-	return client.updateCertificateIssuerHandleResponse(resp)
-}
-
-// updateCertificateIssuerCreateRequest creates the UpdateCertificateIssuer request.
-func (client *Client) updateCertificateIssuerCreateRequest(ctx context.Context, issuerName string, parameter UpdateCertificateIssuerParameters, options *UpdateCertificateIssuerOptions) (*policy.Request, error) {
-	urlPath := "/certificates/issuers/{issuer-name}"
-	if issuerName == "" {
-		return nil, errors.New("parameter issuerName cannot be empty")
-	}
-	urlPath = strings.ReplaceAll(urlPath, "{issuer-name}", url.PathEscape(issuerName))
-	req, err := runtime.NewRequest(ctx, http.MethodPatch, runtime.JoinPaths(client.endpoint, urlPath))
-	if err != nil {
-		return nil, err
-	}
-	reqQP := req.Raw().URL.Query()
-	reqQP.Set("api-version", "7.4")
-	req.Raw().URL.RawQuery = reqQP.Encode()
-	req.Raw().Header["Accept"] = []string{"application/json"}
-	return req, runtime.MarshalAsJSON(req, parameter)
-}
-
-// updateCertificateIssuerHandleResponse handles the UpdateCertificateIssuer response.
-func (client *Client) updateCertificateIssuerHandleResponse(resp *http.Response) (UpdateCertificateIssuerResponse, error) {
-	result := UpdateCertificateIssuerResponse{}
-	if err := runtime.UnmarshalAsJSON(resp, &result.IssuerBundle); err != nil {
-		return UpdateCertificateIssuerResponse{}, err
-	}
-	return result, nil
-}
-
 // UpdateCertificateOperation - Updates a certificate creation operation that is already in progress. This operation requires
 // the certificates/update permission.
 // If the operation fails it returns an *azcore.ResponseError type.
@@ -1413,3 +1349,53 @@ func (client *Client) updateCertificatePolicyHandleResponse(resp *http.Response)
 	}
 	return result, nil
 }
+
+// UpdateIssuer - The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This
+// operation requires the certificates/setissuers permission.
+// If the operation fails it returns an *azcore.ResponseError type.
+//
+// Generated from API version 7.4
+//   - issuerName - The name of the issuer.
+//   - parameter - Certificate issuer update parameter.
+//   - options - UpdateIssuerOptions contains the optional parameters for the Client.UpdateIssuer method.
+func (client *Client) UpdateIssuer(ctx context.Context, issuerName string, parameter UpdateIssuerParameters, options *UpdateIssuerOptions) (UpdateIssuerResponse, error) {
+	req, err := client.updateIssuerCreateRequest(ctx, issuerName, parameter, options)
+	if err != nil {
+		return UpdateIssuerResponse{}, err
+	}
+	resp, err := client.internal.Pipeline().Do(req)
+	if err != nil {
+		return UpdateIssuerResponse{}, err
+	}
+	if !runtime.HasStatusCode(resp, http.StatusOK) {
+		return UpdateIssuerResponse{}, runtime.NewResponseError(resp)
+	}
+	return client.updateIssuerHandleResponse(resp)
+}
+
+// updateIssuerCreateRequest creates the UpdateIssuer request.
+func (client *Client) updateIssuerCreateRequest(ctx context.Context, issuerName string, parameter UpdateIssuerParameters, options *UpdateIssuerOptions) (*policy.Request, error) {
+	urlPath := "/certificates/issuers/{issuer-name}"
+	if issuerName == "" {
+		return nil, errors.New("parameter issuerName cannot be empty")
+	}
+	urlPath = strings.ReplaceAll(urlPath, "{issuer-name}", url.PathEscape(issuerName))
+	req, err := runtime.NewRequest(ctx, http.MethodPatch, runtime.JoinPaths(client.endpoint, urlPath))
+	if err != nil {
+		return nil, err
+	}
+	reqQP := req.Raw().URL.Query()
+	reqQP.Set("api-version", "7.4")
+	req.Raw().URL.RawQuery = reqQP.Encode()
+	req.Raw().Header["Accept"] = []string{"application/json"}
+	return req, runtime.MarshalAsJSON(req, parameter)
+}
+
+// updateIssuerHandleResponse handles the UpdateIssuer response.
+func (client *Client) updateIssuerHandleResponse(resp *http.Response) (UpdateIssuerResponse, error) {
+	result := UpdateIssuerResponse{}
+	if err := runtime.UnmarshalAsJSON(resp, &result.Issuer); err != nil {
+		return UpdateIssuerResponse{}, err
+	}
+	return result, nil
+}
diff --git a/sdk/security/keyvault/azcertificates/client_test.go b/sdk/security/keyvault/azcertificates/client_test.go
index ab00b80430e2..a536d2069981 100644
--- a/sdk/security/keyvault/azcertificates/client_test.go
+++ b/sdk/security/keyvault/azcertificates/client_test.go
@@ -120,7 +120,7 @@ func TestBackupRestore(t *testing.T) {
 	require.NoError(t, err)
 
 	var restoreResp azcertificates.RestoreCertificateResponse
-	restoreParams := azcertificates.RestoreCertificateParameters{CertificateBundleBackup: backup.Value}
+	restoreParams := azcertificates.RestoreCertificateParameters{CertificateBackup: backup.Value}
 	pollStatus(t, http.StatusConflict, func() error {
 		restoreResp, err = client.RestoreCertificate(ctx, restoreParams, nil)
 		return err
@@ -144,15 +144,15 @@ func TestContactsCRUD(t *testing.T) {
 		{EmailAddress: to.Ptr("one@localhost"), Name: to.Ptr("One"), Phone: to.Ptr("1111111111")},
 		{EmailAddress: to.Ptr("two@localhost"), Name: to.Ptr("Two"), Phone: to.Ptr("2222222222")},
 	}}
-	setResp, err := client.SetCertificateContacts(ctx, contacts, nil)
+	setResp, err := client.SetContacts(ctx, contacts, nil)
 	require.NoError(t, err)
 	require.Equal(t, contacts.ContactList, setResp.ContactList)
 
-	getResp, err := client.GetCertificateContacts(ctx, nil)
+	getResp, err := client.GetContacts(ctx, nil)
 	require.NoError(t, err)
 	require.Equal(t, contacts.ContactList, getResp.ContactList)
 
-	_, err = client.DeleteCertificateContacts(ctx, nil)
+	_, err = client.DeleteContacts(ctx, nil)
 	require.NoError(t, err)
 }
 
@@ -180,7 +180,7 @@ func TestCRUD(t *testing.T) {
 	require.NotEmpty(t, getResp.ID)
 	require.NotEmpty(t, getResp.KID)
 	require.NotEmpty(t, getResp.SID)
-	testSerde(t, &getResp.CertificateBundle)
+	testSerde(t, &getResp.Certificate)
 
 	updateParams := azcertificates.UpdateCertificateParameters{
 		CertificateAttributes: &azcertificates.CertificateAttributes{
@@ -201,7 +201,7 @@ func TestCRUD(t *testing.T) {
 	require.Equal(t, getResp.ID.Version(), deleteResp.ID.Version())
 	require.Equal(t, getResp.KID, deleteResp.KID)
 	require.Equal(t, getResp.SID, deleteResp.SID)
-	testSerde(t, &deleteResp.DeletedCertificateBundle)
+	testSerde(t, &deleteResp.DeletedCertificate)
 
 	var getDeletedResp azcertificates.GetDeletedCertificateResponse
 	pollStatus(t, http.StatusNotFound, func() error {
@@ -212,7 +212,7 @@ func TestCRUD(t *testing.T) {
 	require.Equal(t, deleteResp.ID, getDeletedResp.ID)
 	require.Equal(t, deleteResp.ID.Name(), getDeletedResp.ID.Name())
 	require.Equal(t, deleteResp.ID.Version(), getDeletedResp.ID.Version())
-	require.Equal(t, deleteResp.DeletedCertificateBundle, getDeletedResp.DeletedCertificateBundle)
+	require.Equal(t, deleteResp.DeletedCertificate, getDeletedResp.DeletedCertificate)
 
 	_, err = client.PurgeDeletedCertificate(ctx, certName, nil)
 	require.NoError(t, err)
@@ -287,7 +287,7 @@ func TestDisableChallengeResourceVerification(t *testing.T) {
 			}
 			client, err := azcertificates.NewClient(vaultURL, &FakeCredential{}, options)
 			require.NoError(t, err)
-			pager := client.NewListCertificatesPager(nil)
+			pager := client.NewListCertificatePropertiesPager(nil)
 			_, err = pager.NextPage(context.Background())
 			if test.err {
 				require.Error(t, err)
@@ -334,7 +334,7 @@ func TestIssuerCRUD(t *testing.T) {
 	client := startTest(t)
 
 	issuerName := getName(t, "issuer")
-	setParams := azcertificates.SetCertificateIssuerParameters{
+	setParams := azcertificates.SetIssuerParameters{
 		Attributes: &azcertificates.IssuerAttributes{
 			Enabled: to.Ptr(true),
 		},
@@ -354,23 +354,23 @@ func TestIssuerCRUD(t *testing.T) {
 		Provider: to.Ptr("Test"),
 	}
 	testSerde(t, &setParams)
-	setResp, err := client.SetCertificateIssuer(ctx, issuerName, setParams, &azcertificates.SetCertificateIssuerOptions{})
+	setResp, err := client.SetIssuer(ctx, issuerName, setParams, &azcertificates.SetIssuerOptions{})
 	require.NoError(t, err)
 	require.NotEmpty(t, setResp.ID)
 	require.Equal(t, setParams.Credentials, setResp.Credentials)
 	require.Equal(t, setParams.OrganizationDetails.AdminDetails[0], setResp.OrganizationDetails.AdminDetails[0])
 	require.Equal(t, setParams.Provider, setResp.Provider)
-	testSerde(t, &setResp.IssuerBundle)
+	testSerde(t, &setResp.Issuer)
 
-	getResp, err := client.GetCertificateIssuer(ctx, issuerName, nil)
+	getResp, err := client.GetIssuer(ctx, issuerName, nil)
 	require.NoError(t, err)
-	require.Equal(t, setResp.IssuerBundle, getResp.IssuerBundle)
+	require.Equal(t, setResp.Issuer, getResp.Issuer)
 
-	pager := client.NewListCertificateIssuersPager(&azcertificates.ListCertificateIssuersOptions{MaxResults: to.Ptr(int32(1))})
+	pager := client.NewListIssuerPropertiesPager(nil)
 	found := false
 	for pager.More() {
 		page, err := pager.NextPage(ctx)
-		testSerde(t, &page.CertificateIssuerListResult)
+		testSerde(t, &page.IssuerPropertiesListResult)
 		require.NoError(t, err)
 		for _, issuer := range page.Value {
 			testSerde(t, issuer)
@@ -383,19 +383,19 @@ func TestIssuerCRUD(t *testing.T) {
 	}
 	require.True(t, found)
 
-	updateParams := azcertificates.UpdateCertificateIssuerParameters{
+	updateParams := azcertificates.UpdateIssuerParameters{
 		Attributes: &azcertificates.IssuerAttributes{
 			Enabled: to.Ptr(false),
 		},
 	}
 	testSerde(t, &updateParams)
-	updateResp, err := client.UpdateCertificateIssuer(ctx, issuerName, updateParams, nil)
+	updateResp, err := client.UpdateIssuer(ctx, issuerName, updateParams, nil)
 	require.NoError(t, err)
-	require.NotEqual(t, setResp.IssuerBundle, updateResp.IssuerBundle)
+	require.NotEqual(t, setResp.Issuer, updateResp.Issuer)
 
-	deleteResp, err := client.DeleteCertificateIssuer(ctx, issuerName, nil)
+	deleteResp, err := client.DeleteIssuer(ctx, issuerName, nil)
 	require.NoError(t, err)
-	require.Equal(t, updateResp.IssuerBundle, deleteResp.IssuerBundle)
+	require.Equal(t, updateResp.Issuer, deleteResp.Issuer)
 }
 
 func TestListCertificates(t *testing.T) {
@@ -417,13 +417,13 @@ func TestListCertificates(t *testing.T) {
 		pollCertOperation(t, client, name)
 	}
 
-	listCertsPager := client.NewListCertificatesPager(&azcertificates.ListCertificatesOptions{
-		MaxResults: to.Ptr(int32(1)), IncludePending: to.Ptr(true),
+	listCertsPager := client.NewListCertificatePropertiesPager(&azcertificates.ListCertificatePropertiesOptions{
+		IncludePending: to.Ptr(true),
 	})
 	for listCertsPager.More() {
 		page, err := listCertsPager.NextPage(ctx)
 		require.NoError(t, err)
-		testSerde(t, &page.CertificateListResult)
+		testSerde(t, &page.CertificatePropertiesListResult)
 		for _, cert := range page.Value {
 			testSerde(t, cert)
 			if value, ok := cert.Tags[tag]; ok && *value == "yes" {
@@ -444,13 +444,13 @@ func TestListCertificates(t *testing.T) {
 	}
 
 	count = len(certNames)
-	listDeletedCertsPager := client.NewListDeletedCertificatesPager(&azcertificates.ListDeletedCertificatesOptions{
-		MaxResults: to.Ptr(int32(1)), IncludePending: to.Ptr(true),
+	listDeletedCertsPager := client.NewListDeletedCertificatePropertiesPager(&azcertificates.ListDeletedCertificatePropertiesOptions{
+		IncludePending: to.Ptr(true),
 	})
 	for listDeletedCertsPager.More() {
 		page, err := listDeletedCertsPager.NextPage(ctx)
 		require.NoError(t, err)
-		testSerde(t, &page.DeletedCertificateListResult)
+		testSerde(t, &page.DeletedCertificatePropertiesListResult)
 		for _, cert := range page.Value {
 			testSerde(t, cert)
 			if value, ok := cert.Tags[tag]; ok && *value == "yes" {
@@ -475,11 +475,11 @@ func TestListCertificateVersions(t *testing.T) {
 	}
 	defer cleanUpCert(t, client, name)
 
-	pager := client.NewListCertificateVersionsPager(name, nil)
+	pager := client.NewListCertificatePropertiesVersionsPager(name, nil)
 	for pager.More() {
 		page, err := pager.NextPage(ctx)
 		require.NoError(t, err)
-		testSerde(t, &page.CertificateListResult)
+		testSerde(t, &page.CertificatePropertiesListResult)
 		count -= len(page.Value)
 		for _, v := range page.Value {
 			testSerde(t, v)
@@ -615,7 +615,7 @@ func TestUpdateCertificatePolicy(t *testing.T) {
 		KeyProperties: &azcertificates.KeyProperties{
 			Exportable: to.Ptr(true),
 			KeySize:    to.Ptr(int32(2048)),
-			KeyType:    to.Ptr(azcertificates.JSONWebKeyTypeRSA),
+			KeyType:    to.Ptr(azcertificates.KeyTypeRSA),
 			ReuseKey:   to.Ptr(true),
 		},
 		LifetimeActions: []*azcertificates.LifetimeAction{
@@ -653,10 +653,10 @@ func TestUpdateCertificatePolicy(t *testing.T) {
 
 	updatedPolicy := azcertificates.CertificatePolicy{
 		KeyProperties: &azcertificates.KeyProperties{
-			Curve:      to.Ptr(azcertificates.JSONWebKeyCurveNameP256K),
+			Curve:      to.Ptr(azcertificates.CurveNameP256K),
 			Exportable: to.Ptr(true),
 			KeySize:    to.Ptr(int32(256)),
-			KeyType:    to.Ptr(azcertificates.JSONWebKeyTypeEC),
+			KeyType:    to.Ptr(azcertificates.KeyTypeEC),
 			ReuseKey:   to.Ptr(false),
 		},
 	}
diff --git a/sdk/security/keyvault/azcertificates/constants.go b/sdk/security/keyvault/azcertificates/constants.go
index d9fa5e69db0b..f7d133b06da4 100644
--- a/sdk/security/keyvault/azcertificates/constants.go
+++ b/sdk/security/keyvault/azcertificates/constants.go
@@ -25,100 +25,47 @@ func PossibleCertificatePolicyActionValues() []CertificatePolicyAction {
 	}
 }
 
-// DeletionRecoveryLevel - Reflects the deletion recovery level currently in effect for certificates in the current vault.
-// If it contains 'Purgeable', the certificate can be permanently deleted by a privileged user; otherwise,
-// only the system can purge the certificate, at the end of the retention interval.
-type DeletionRecoveryLevel string
+// CurveName - Elliptic curve name. For valid values, see JsonWebKeyCurveName.
+type CurveName string
 
 const (
-	// DeletionRecoveryLevelCustomizedRecoverable - Denotes a vault state in which deletion is recoverable without the possibility
-	// for immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90).This level guarantees the recoverability
-	// of the deleted entity during the retention interval and while the subscription is still available.
-	DeletionRecoveryLevelCustomizedRecoverable DeletionRecoveryLevel = "CustomizedRecoverable"
-	// DeletionRecoveryLevelCustomizedRecoverableProtectedSubscription - Denotes a vault and subscription state in which deletion
-	// is recoverable, immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription itself cannot
-	// be permanently canceled when 7<= SoftDeleteRetentionInDays < 90. This level guarantees the recoverability of the deleted
-	// entity during the retention interval, and also reflects the fact that the subscription itself cannot be cancelled.
-	DeletionRecoveryLevelCustomizedRecoverableProtectedSubscription DeletionRecoveryLevel = "CustomizedRecoverable+ProtectedSubscription"
-	// DeletionRecoveryLevelCustomizedRecoverablePurgeable - Denotes a vault state in which deletion is recoverable, and which
-	// also permits immediate and permanent deletion (i.e. purge when 7<= SoftDeleteRetentionInDays < 90). This level guarantees
-	// the recoverability of the deleted entity during the retention interval, unless a Purge operation is requested, or the subscription
-	// is cancelled.
-	DeletionRecoveryLevelCustomizedRecoverablePurgeable DeletionRecoveryLevel = "CustomizedRecoverable+Purgeable"
-	// DeletionRecoveryLevelPurgeable - Denotes a vault state in which deletion is an irreversible operation, without the possibility
-	// for recovery. This level corresponds to no protection being available against a Delete operation; the data is irretrievably
-	// lost upon accepting a Delete operation at the entity level or higher (vault, resource group, subscription etc.)
-	DeletionRecoveryLevelPurgeable DeletionRecoveryLevel = "Purgeable"
-	// DeletionRecoveryLevelRecoverable - Denotes a vault state in which deletion is recoverable without the possibility for immediate
-	// and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the retention
-	// interval(90 days) and while the subscription is still available. System wil permanently delete it after 90 days, if not
-	// recovered
-	DeletionRecoveryLevelRecoverable DeletionRecoveryLevel = "Recoverable"
-	// DeletionRecoveryLevelRecoverableProtectedSubscription - Denotes a vault and subscription state in which deletion is recoverable
-	// within retention interval (90 days), immediate and permanent deletion (i.e. purge) is not permitted, and in which the subscription
-	// itself cannot be permanently canceled. System wil permanently delete it after 90 days, if not recovered
-	DeletionRecoveryLevelRecoverableProtectedSubscription DeletionRecoveryLevel = "Recoverable+ProtectedSubscription"
-	// DeletionRecoveryLevelRecoverablePurgeable - Denotes a vault state in which deletion is recoverable, and which also permits
-	// immediate and permanent deletion (i.e. purge). This level guarantees the recoverability of the deleted entity during the
-	// retention interval (90 days), unless a Purge operation is requested, or the subscription is cancelled. System wil permanently
-	// delete it after 90 days, if not recovered
-	DeletionRecoveryLevelRecoverablePurgeable DeletionRecoveryLevel = "Recoverable+Purgeable"
+	CurveNameP256  CurveName = "P-256"
+	CurveNameP256K CurveName = "P-256K"
+	CurveNameP384  CurveName = "P-384"
+	CurveNameP521  CurveName = "P-521"
 )
 
-// PossibleDeletionRecoveryLevelValues returns the possible values for the DeletionRecoveryLevel const type.
-func PossibleDeletionRecoveryLevelValues() []DeletionRecoveryLevel {
-	return []DeletionRecoveryLevel{
-		DeletionRecoveryLevelCustomizedRecoverable,
-		DeletionRecoveryLevelCustomizedRecoverableProtectedSubscription,
-		DeletionRecoveryLevelCustomizedRecoverablePurgeable,
-		DeletionRecoveryLevelPurgeable,
-		DeletionRecoveryLevelRecoverable,
-		DeletionRecoveryLevelRecoverableProtectedSubscription,
-		DeletionRecoveryLevelRecoverablePurgeable,
+// PossibleCurveNameValues returns the possible values for the CurveName const type.
+func PossibleCurveNameValues() []CurveName {
+	return []CurveName{
+		CurveNameP256,
+		CurveNameP256K,
+		CurveNameP384,
+		CurveNameP521,
 	}
 }
 
-// JSONWebKeyCurveName - Elliptic curve name. For valid values, see JsonWebKeyCurveName.
-type JSONWebKeyCurveName string
+// KeyType - The type of key pair to be used for the certificate.
+type KeyType string
 
 const (
-	JSONWebKeyCurveNameP256  JSONWebKeyCurveName = "P-256"
-	JSONWebKeyCurveNameP256K JSONWebKeyCurveName = "P-256K"
-	JSONWebKeyCurveNameP384  JSONWebKeyCurveName = "P-384"
-	JSONWebKeyCurveNameP521  JSONWebKeyCurveName = "P-521"
+	KeyTypeEC     KeyType = "EC"
+	KeyTypeECHSM  KeyType = "EC-HSM"
+	KeyTypeOct    KeyType = "oct"
+	KeyTypeOctHSM KeyType = "oct-HSM"
+	KeyTypeRSA    KeyType = "RSA"
+	KeyTypeRSAHSM KeyType = "RSA-HSM"
 )
 
-// PossibleJSONWebKeyCurveNameValues returns the possible values for the JSONWebKeyCurveName const type.
-func PossibleJSONWebKeyCurveNameValues() []JSONWebKeyCurveName {
-	return []JSONWebKeyCurveName{
-		JSONWebKeyCurveNameP256,
-		JSONWebKeyCurveNameP256K,
-		JSONWebKeyCurveNameP384,
-		JSONWebKeyCurveNameP521,
-	}
-}
-
-// JSONWebKeyType - The type of key pair to be used for the certificate.
-type JSONWebKeyType string
-
-const (
-	JSONWebKeyTypeEC     JSONWebKeyType = "EC"
-	JSONWebKeyTypeECHSM  JSONWebKeyType = "EC-HSM"
-	JSONWebKeyTypeOct    JSONWebKeyType = "oct"
-	JSONWebKeyTypeOctHSM JSONWebKeyType = "oct-HSM"
-	JSONWebKeyTypeRSA    JSONWebKeyType = "RSA"
-	JSONWebKeyTypeRSAHSM JSONWebKeyType = "RSA-HSM"
-)
-
-// PossibleJSONWebKeyTypeValues returns the possible values for the JSONWebKeyType const type.
-func PossibleJSONWebKeyTypeValues() []JSONWebKeyType {
-	return []JSONWebKeyType{
-		JSONWebKeyTypeEC,
-		JSONWebKeyTypeECHSM,
-		JSONWebKeyTypeOct,
-		JSONWebKeyTypeOctHSM,
-		JSONWebKeyTypeRSA,
-		JSONWebKeyTypeRSAHSM,
+// PossibleKeyTypeValues returns the possible values for the KeyType const type.
+func PossibleKeyTypeValues() []KeyType {
+	return []KeyType{
+		KeyTypeEC,
+		KeyTypeECHSM,
+		KeyTypeOct,
+		KeyTypeOctHSM,
+		KeyTypeRSA,
+		KeyTypeRSAHSM,
 	}
 }
 
diff --git a/sdk/security/keyvault/azcertificates/example_test.go b/sdk/security/keyvault/azcertificates/example_test.go
index c92ab8503011..e77d12698b42 100644
--- a/sdk/security/keyvault/azcertificates/example_test.go
+++ b/sdk/security/keyvault/azcertificates/example_test.go
@@ -69,8 +69,8 @@ func ExampleClient_UpdateCertificate() {
 	fmt.Println(*resp.ID)
 }
 
-func ExampleClient_NewListCertificatesPager() {
-	pager := client.NewListCertificatesPager(nil)
+func ExampleClient_NewListCertificatePropertiesPager() {
+	pager := client.NewListCertificatePropertiesPager(nil)
 	for pager.More() {
 		page, err := pager.NextPage(context.TODO())
 		if err != nil {
diff --git a/sdk/security/keyvault/azcertificates/models.go b/sdk/security/keyvault/azcertificates/models.go
index b29d4f51cc57..f52ab6acafe3 100644
--- a/sdk/security/keyvault/azcertificates/models.go
+++ b/sdk/security/keyvault/azcertificates/models.go
@@ -38,34 +38,8 @@ type BackupCertificateResult struct {
 	Value []byte `json:"value,omitempty" azure:"ro"`
 }
 
-// CertificateAttributes - The certificate management attributes.
-type CertificateAttributes struct {
-	// Determines whether the object is enabled.
-	Enabled *bool `json:"enabled,omitempty"`
-
-	// Expiry date in UTC.
-	Expires *time.Time `json:"exp,omitempty"`
-
-	// Not before date in UTC.
-	NotBefore *time.Time `json:"nbf,omitempty"`
-
-	// READ-ONLY; Creation time in UTC.
-	Created *time.Time `json:"created,omitempty" azure:"ro"`
-
-	// READ-ONLY; softDelete data retention days. Value should be >=7 and <=90 when softDelete enabled, otherwise 0.
-	RecoverableDays *int32 `json:"recoverableDays,omitempty" azure:"ro"`
-
-	// READ-ONLY; Reflects the deletion recovery level currently in effect for certificates in the current vault. If it contains
-	// 'Purgeable', the certificate can be permanently deleted by a privileged user; otherwise,
-	// only the system can purge the certificate, at the end of the retention interval.
-	RecoveryLevel *DeletionRecoveryLevel `json:"recoveryLevel,omitempty" azure:"ro"`
-
-	// READ-ONLY; Last updated time in UTC.
-	Updated *time.Time `json:"updated,omitempty" azure:"ro"`
-}
-
-// CertificateBundle - A certificate bundle consists of a certificate (X509) plus its attributes.
-type CertificateBundle struct {
+// Certificate - A certificate bundle consists of a certificate (X509) plus its attributes.
+type Certificate struct {
 	// The certificate attributes.
 	Attributes *CertificateAttributes `json:"attributes,omitempty"`
 
@@ -94,48 +68,30 @@ type CertificateBundle struct {
 	X509Thumbprint []byte `json:"x5t,omitempty" azure:"ro"`
 }
 
-// CertificateIssuerItem - The certificate issuer item containing certificate issuer metadata.
-type CertificateIssuerItem struct {
-	// Certificate Identifier.
-	ID *string `json:"id,omitempty"`
-
-	// The issuer provider.
-	Provider *string `json:"provider,omitempty"`
-}
-
-// CertificateIssuerListResult - The certificate issuer list result.
-type CertificateIssuerListResult struct {
-	// READ-ONLY; The URL to get the next set of certificate issuers.
-	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
-
-	// READ-ONLY; A response message containing a list of certificate issuers in the key vault along with a link to the next page
-	// of certificate issuers.
-	Value []*CertificateIssuerItem `json:"value,omitempty" azure:"ro"`
-}
+// CertificateAttributes - The certificate management attributes.
+type CertificateAttributes struct {
+	// Determines whether the object is enabled.
+	Enabled *bool `json:"enabled,omitempty"`
 
-// CertificateItem - The certificate item containing certificate metadata.
-type CertificateItem struct {
-	// The certificate management attributes.
-	Attributes *CertificateAttributes `json:"attributes,omitempty"`
+	// Expiry date in UTC.
+	Expires *time.Time `json:"exp,omitempty"`
 
-	// Certificate identifier.
-	ID *ID `json:"id,omitempty"`
+	// Not before date in UTC.
+	NotBefore *time.Time `json:"nbf,omitempty"`
 
-	// Application specific metadata in the form of key-value pairs.
-	Tags map[string]*string `json:"tags,omitempty"`
+	// READ-ONLY; Creation time in UTC.
+	Created *time.Time `json:"created,omitempty" azure:"ro"`
 
-	// Thumbprint of the certificate.
-	X509Thumbprint []byte `json:"x5t,omitempty"`
-}
+	// READ-ONLY; softDelete data retention days. Value should be >=7 and <=90 when softDelete enabled, otherwise 0.
+	RecoverableDays *int32 `json:"recoverableDays,omitempty" azure:"ro"`
 
-// CertificateListResult - The certificate list result.
-type CertificateListResult struct {
-	// READ-ONLY; The URL to get the next set of certificates.
-	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
+	// READ-ONLY; Reflects the deletion recovery level currently in effect for certificates in the current vault. If it contains
+	// 'Purgeable', the certificate can be permanently deleted by a privileged user; otherwise,
+	// only the system can purge the certificate, at the end of the retention interval.
+	RecoveryLevel *string `json:"recoveryLevel,omitempty" azure:"ro"`
 
-	// READ-ONLY; A response message containing a list of certificates in the key vault along with a link to the next page of
-	// certificates.
-	Value []*CertificateItem `json:"value,omitempty" azure:"ro"`
+	// READ-ONLY; Last updated time in UTC.
+	Updated *time.Time `json:"updated,omitempty" azure:"ro"`
 }
 
 // CertificateOperation - A certificate operation is returned in case of asynchronous requests.
@@ -192,23 +148,38 @@ type CertificatePolicy struct {
 	ID *string `json:"id,omitempty" azure:"ro"`
 }
 
-// BackupCertificateOptions contains the optional parameters for the Client.BackupCertificate method.
-type BackupCertificateOptions struct {
-	// placeholder for future optional parameters
+// CertificateProperties - The certificate item containing certificate metadata.
+type CertificateProperties struct {
+	// The certificate management attributes.
+	Attributes *CertificateAttributes `json:"attributes,omitempty"`
+
+	// Certificate identifier.
+	ID *ID `json:"id,omitempty"`
+
+	// Application specific metadata in the form of key-value pairs.
+	Tags map[string]*string `json:"tags,omitempty"`
+
+	// Thumbprint of the certificate.
+	X509Thumbprint []byte `json:"x5t,omitempty"`
 }
 
-// CreateCertificateOptions contains the optional parameters for the Client.CreateCertificate method.
-type CreateCertificateOptions struct {
-	// placeholder for future optional parameters
+// CertificatePropertiesListResult - The certificate list result.
+type CertificatePropertiesListResult struct {
+	// READ-ONLY; The URL to get the next set of certificates.
+	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
+
+	// READ-ONLY; A response message containing a list of certificates in the key vault along with a link to the next page of
+	// certificates.
+	Value []*CertificateProperties `json:"value,omitempty" azure:"ro"`
 }
 
-// DeleteCertificateContactsOptions contains the optional parameters for the Client.DeleteCertificateContacts method.
-type DeleteCertificateContactsOptions struct {
+// BackupCertificateOptions contains the optional parameters for the Client.BackupCertificate method.
+type BackupCertificateOptions struct {
 	// placeholder for future optional parameters
 }
 
-// DeleteCertificateIssuerOptions contains the optional parameters for the Client.DeleteCertificateIssuer method.
-type DeleteCertificateIssuerOptions struct {
+// CreateCertificateOptions contains the optional parameters for the Client.CreateCertificate method.
+type CreateCertificateOptions struct {
 	// placeholder for future optional parameters
 }
 
@@ -222,13 +193,13 @@ type DeleteCertificateOptions struct {
 	// placeholder for future optional parameters
 }
 
-// GetCertificateContactsOptions contains the optional parameters for the Client.GetCertificateContacts method.
-type GetCertificateContactsOptions struct {
+// DeleteContactsOptions contains the optional parameters for the Client.DeleteContacts method.
+type DeleteContactsOptions struct {
 	// placeholder for future optional parameters
 }
 
-// GetCertificateIssuerOptions contains the optional parameters for the Client.GetCertificateIssuer method.
-type GetCertificateIssuerOptions struct {
+// DeleteIssuerOptions contains the optional parameters for the Client.DeleteIssuer method.
+type DeleteIssuerOptions struct {
 	// placeholder for future optional parameters
 }
 
@@ -247,42 +218,49 @@ type GetCertificatePolicyOptions struct {
 	// placeholder for future optional parameters
 }
 
+// GetContactsOptions contains the optional parameters for the Client.GetContacts method.
+type GetContactsOptions struct {
+	// placeholder for future optional parameters
+}
+
 // GetDeletedCertificateOptions contains the optional parameters for the Client.GetDeletedCertificate method.
 type GetDeletedCertificateOptions struct {
 	// placeholder for future optional parameters
 }
 
+// GetIssuerOptions contains the optional parameters for the Client.GetIssuer method.
+type GetIssuerOptions struct {
+	// placeholder for future optional parameters
+}
+
 // ImportCertificateOptions contains the optional parameters for the Client.ImportCertificate method.
 type ImportCertificateOptions struct {
 	// placeholder for future optional parameters
 }
 
-// ListCertificateIssuersOptions contains the optional parameters for the Client.NewListCertificateIssuersPager method.
-type ListCertificateIssuersOptions struct {
-	// Maximum number of results to return in a page. If not specified the service will return up to 25 results.
-	MaxResults *int32
+// ListCertificatePropertiesOptions contains the optional parameters for the Client.NewListCertificatePropertiesPager
+// method.
+type ListCertificatePropertiesOptions struct {
+	// Specifies whether to include certificates which are not completely provisioned.
+	IncludePending *bool
 }
 
-// ListCertificateVersionsOptions contains the optional parameters for the Client.NewListCertificateVersionsPager method.
-type ListCertificateVersionsOptions struct {
-	// Maximum number of results to return in a page. If not specified the service will return up to 25 results.
-	MaxResults *int32
+// ListCertificatePropertiesVersionsOptions contains the optional parameters for the Client.NewListCertificatePropertiesVersionsPager
+// method.
+type ListCertificatePropertiesVersionsOptions struct {
+	// placeholder for future optional parameters
 }
 
-// ListCertificatesOptions contains the optional parameters for the Client.NewListCertificatesPager method.
-type ListCertificatesOptions struct {
+// ListDeletedCertificatePropertiesOptions contains the optional parameters for the Client.NewListDeletedCertificatePropertiesPager
+// method.
+type ListDeletedCertificatePropertiesOptions struct {
 	// Specifies whether to include certificates which are not completely provisioned.
 	IncludePending *bool
-	// Maximum number of results to return in a page. If not specified the service will return up to 25 results.
-	MaxResults *int32
 }
 
-// ListDeletedCertificatesOptions contains the optional parameters for the Client.NewListDeletedCertificatesPager method.
-type ListDeletedCertificatesOptions struct {
-	// Specifies whether to include certificates which are not completely provisioned.
-	IncludePending *bool
-	// Maximum number of results to return in a page. If not specified the service will return up to 25 results.
-	MaxResults *int32
+// ListIssuerPropertiesOptions contains the optional parameters for the Client.NewListIssuerPropertiesPager method.
+type ListIssuerPropertiesOptions struct {
+	// placeholder for future optional parameters
 }
 
 // MergeCertificateOptions contains the optional parameters for the Client.MergeCertificate method.
@@ -305,18 +283,13 @@ type RestoreCertificateOptions struct {
 	// placeholder for future optional parameters
 }
 
-// SetCertificateContactsOptions contains the optional parameters for the Client.SetCertificateContacts method.
-type SetCertificateContactsOptions struct {
+// SetContactsOptions contains the optional parameters for the Client.SetContacts method.
+type SetContactsOptions struct {
 	// placeholder for future optional parameters
 }
 
-// SetCertificateIssuerOptions contains the optional parameters for the Client.SetCertificateIssuer method.
-type SetCertificateIssuerOptions struct {
-	// placeholder for future optional parameters
-}
-
-// UpdateCertificateIssuerOptions contains the optional parameters for the Client.UpdateCertificateIssuer method.
-type UpdateCertificateIssuerOptions struct {
+// SetIssuerOptions contains the optional parameters for the Client.SetIssuer method.
+type SetIssuerOptions struct {
 	// placeholder for future optional parameters
 }
 
@@ -335,6 +308,11 @@ type UpdateCertificatePolicyOptions struct {
 	// placeholder for future optional parameters
 }
 
+// UpdateIssuerOptions contains the optional parameters for the Client.UpdateIssuer method.
+type UpdateIssuerOptions struct {
+	// placeholder for future optional parameters
+}
+
 // Contact - The contact information for the vault certificates.
 type Contact struct {
 	// Email address.
@@ -368,9 +346,9 @@ type CreateCertificateParameters struct {
 	Tags map[string]*string `json:"tags,omitempty"`
 }
 
-// DeletedCertificateBundle - A Deleted Certificate consisting of its previous id, attributes and its tags, as well as information
+// DeletedCertificate - A Deleted Certificate consisting of its previous id, attributes and its tags, as well as information
 // on when it will be purged.
-type DeletedCertificateBundle struct {
+type DeletedCertificate struct {
 	// The certificate attributes.
 	Attributes *CertificateAttributes `json:"attributes,omitempty"`
 
@@ -408,8 +386,8 @@ type DeletedCertificateBundle struct {
 	X509Thumbprint []byte `json:"x5t,omitempty" azure:"ro"`
 }
 
-// DeletedCertificateItem - The deleted certificate item containing metadata about the deleted certificate.
-type DeletedCertificateItem struct {
+// DeletedCertificateProperties - The deleted certificate item containing metadata about the deleted certificate.
+type DeletedCertificateProperties struct {
 	// The certificate management attributes.
 	Attributes *CertificateAttributes `json:"attributes,omitempty"`
 
@@ -432,14 +410,14 @@ type DeletedCertificateItem struct {
 	ScheduledPurgeDate *time.Time `json:"scheduledPurgeDate,omitempty" azure:"ro"`
 }
 
-// DeletedCertificateListResult - A list of certificates that have been deleted in this vault.
-type DeletedCertificateListResult struct {
+// DeletedCertificatePropertiesListResult - A list of certificates that have been deleted in this vault.
+type DeletedCertificatePropertiesListResult struct {
 	// READ-ONLY; The URL to get the next set of deleted certificates.
 	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
 
 	// READ-ONLY; A response message containing a list of deleted certificates in the vault along with a link to the next page
 	// of deleted certificates
-	Value []*DeletedCertificateItem `json:"value,omitempty" azure:"ro"`
+	Value []*DeletedCertificateProperties `json:"value,omitempty" azure:"ro"`
 }
 
 // ImportCertificateParameters - The certificate import parameters.
@@ -461,20 +439,8 @@ type ImportCertificateParameters struct {
 	Tags map[string]*string `json:"tags,omitempty"`
 }
 
-// IssuerAttributes - The attributes of an issuer managed by the Key Vault service.
-type IssuerAttributes struct {
-	// Determines whether the issuer is enabled.
-	Enabled *bool `json:"enabled,omitempty"`
-
-	// READ-ONLY; Creation time in UTC.
-	Created *time.Time `json:"created,omitempty" azure:"ro"`
-
-	// READ-ONLY; Last updated time in UTC.
-	Updated *time.Time `json:"updated,omitempty" azure:"ro"`
-}
-
-// IssuerBundle - The issuer for Key Vault certificate.
-type IssuerBundle struct {
+// Issuer - The issuer for Key Vault certificate.
+type Issuer struct {
 	// Attributes of the issuer object.
 	Attributes *IssuerAttributes `json:"attributes,omitempty"`
 
@@ -491,6 +457,18 @@ type IssuerBundle struct {
 	ID *string `json:"id,omitempty" azure:"ro"`
 }
 
+// IssuerAttributes - The attributes of an issuer managed by the Key Vault service.
+type IssuerAttributes struct {
+	// Determines whether the issuer is enabled.
+	Enabled *bool `json:"enabled,omitempty"`
+
+	// READ-ONLY; Creation time in UTC.
+	Created *time.Time `json:"created,omitempty" azure:"ro"`
+
+	// READ-ONLY; Last updated time in UTC.
+	Updated *time.Time `json:"updated,omitempty" azure:"ro"`
+}
+
 // IssuerCredentials - The credentials to be used for the certificate issuer.
 type IssuerCredentials struct {
 	// The user name/account name/account id.
@@ -512,10 +490,29 @@ type IssuerParameters struct {
 	Name *string `json:"name,omitempty"`
 }
 
+// IssuerProperties - The certificate issuer item containing certificate issuer metadata.
+type IssuerProperties struct {
+	// Certificate Identifier.
+	ID *string `json:"id,omitempty"`
+
+	// The issuer provider.
+	Provider *string `json:"provider,omitempty"`
+}
+
+// IssuerPropertiesListResult - The certificate issuer list result.
+type IssuerPropertiesListResult struct {
+	// READ-ONLY; The URL to get the next set of certificate issuers.
+	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
+
+	// READ-ONLY; A response message containing a list of certificate issuers in the key vault along with a link to the next page
+	// of certificate issuers.
+	Value []*IssuerProperties `json:"value,omitempty" azure:"ro"`
+}
+
 // KeyProperties - Properties of the key pair backing a certificate.
 type KeyProperties struct {
 	// Elliptic curve name. For valid values, see JsonWebKeyCurveName.
-	Curve *JSONWebKeyCurveName `json:"crv,omitempty"`
+	Curve *CurveName `json:"crv,omitempty"`
 
 	// Indicates if the private key can be exported. Release policy must be provided when creating the first version of an exportable
 	// key.
@@ -525,7 +522,7 @@ type KeyProperties struct {
 	KeySize *int32 `json:"key_size,omitempty"`
 
 	// The type of key pair to be used for the certificate.
-	KeyType *JSONWebKeyType `json:"kty,omitempty"`
+	KeyType *KeyType `json:"kty,omitempty"`
 
 	// Indicates if the same key pair will be used on certificate renewal.
 	ReuseKey *bool `json:"reuse_key,omitempty"`
@@ -564,7 +561,7 @@ type OrganizationDetails struct {
 // RestoreCertificateParameters - The certificate restore parameters.
 type RestoreCertificateParameters struct {
 	// REQUIRED; The backup blob associated with a certificate bundle.
-	CertificateBundleBackup []byte `json:"value,omitempty"`
+	CertificateBackup []byte `json:"value,omitempty"`
 }
 
 // SecretProperties - Properties of the key backing a certificate.
@@ -573,8 +570,8 @@ type SecretProperties struct {
 	ContentType *string `json:"contentType,omitempty"`
 }
 
-// SetCertificateIssuerParameters - The certificate issuer set parameters.
-type SetCertificateIssuerParameters struct {
+// SetIssuerParameters - The certificate issuer set parameters.
+type SetIssuerParameters struct {
 	// REQUIRED; The issuer provider.
 	Provider *string `json:"provider,omitempty"`
 
@@ -610,21 +607,6 @@ type Trigger struct {
 	LifetimePercentage *int32 `json:"lifetime_percentage,omitempty"`
 }
 
-// UpdateCertificateIssuerParameters - The certificate issuer update parameters.
-type UpdateCertificateIssuerParameters struct {
-	// Attributes of the issuer object.
-	Attributes *IssuerAttributes `json:"attributes,omitempty"`
-
-	// The credentials to be used for the issuer.
-	Credentials *IssuerCredentials `json:"credentials,omitempty"`
-
-	// Details of the organization as provided to the issuer.
-	OrganizationDetails *OrganizationDetails `json:"org_details,omitempty"`
-
-	// The issuer provider.
-	Provider *string `json:"provider,omitempty"`
-}
-
 // UpdateCertificateOperationParameter - The certificate operation update parameters.
 type UpdateCertificateOperationParameter struct {
 	// REQUIRED; Indicates if cancellation was requested on the certificate operation.
@@ -643,6 +625,21 @@ type UpdateCertificateParameters struct {
 	Tags map[string]*string `json:"tags,omitempty"`
 }
 
+// UpdateIssuerParameters - The certificate issuer update parameters.
+type UpdateIssuerParameters struct {
+	// Attributes of the issuer object.
+	Attributes *IssuerAttributes `json:"attributes,omitempty"`
+
+	// The credentials to be used for the issuer.
+	Credentials *IssuerCredentials `json:"credentials,omitempty"`
+
+	// Details of the organization as provided to the issuer.
+	OrganizationDetails *OrganizationDetails `json:"org_details,omitempty"`
+
+	// The issuer provider.
+	Provider *string `json:"provider,omitempty"`
+}
+
 // X509CertificateProperties - Properties of the X509 component of a certificate.
 type X509CertificateProperties struct {
 	// The enhanced key usage.
diff --git a/sdk/security/keyvault/azcertificates/models_serde.go b/sdk/security/keyvault/azcertificates/models_serde.go
index 00c0c258da14..5cfa4ba4757c 100644
--- a/sdk/security/keyvault/azcertificates/models_serde.go
+++ b/sdk/security/keyvault/azcertificates/models_serde.go
@@ -110,59 +110,8 @@ func (b *BackupCertificateResult) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
-// MarshalJSON implements the json.Marshaller interface for type CertificateAttributes.
-func (c CertificateAttributes) MarshalJSON() ([]byte, error) {
-	objectMap := make(map[string]any)
-	populateTimeUnix(objectMap, "created", c.Created)
-	populate(objectMap, "enabled", c.Enabled)
-	populateTimeUnix(objectMap, "exp", c.Expires)
-	populateTimeUnix(objectMap, "nbf", c.NotBefore)
-	populate(objectMap, "recoverableDays", c.RecoverableDays)
-	populate(objectMap, "recoveryLevel", c.RecoveryLevel)
-	populateTimeUnix(objectMap, "updated", c.Updated)
-	return json.Marshal(objectMap)
-}
-
-// UnmarshalJSON implements the json.Unmarshaller interface for type CertificateAttributes.
-func (c *CertificateAttributes) UnmarshalJSON(data []byte) error {
-	var rawMsg map[string]json.RawMessage
-	if err := json.Unmarshal(data, &rawMsg); err != nil {
-		return fmt.Errorf("unmarshalling type %T: %v", c, err)
-	}
-	for key, val := range rawMsg {
-		var err error
-		switch key {
-		case "created":
-			err = unpopulateTimeUnix(val, "Created", &c.Created)
-			delete(rawMsg, key)
-		case "enabled":
-			err = unpopulate(val, "Enabled", &c.Enabled)
-			delete(rawMsg, key)
-		case "exp":
-			err = unpopulateTimeUnix(val, "Expires", &c.Expires)
-			delete(rawMsg, key)
-		case "nbf":
-			err = unpopulateTimeUnix(val, "NotBefore", &c.NotBefore)
-			delete(rawMsg, key)
-		case "recoverableDays":
-			err = unpopulate(val, "RecoverableDays", &c.RecoverableDays)
-			delete(rawMsg, key)
-		case "recoveryLevel":
-			err = unpopulate(val, "RecoveryLevel", &c.RecoveryLevel)
-			delete(rawMsg, key)
-		case "updated":
-			err = unpopulateTimeUnix(val, "Updated", &c.Updated)
-			delete(rawMsg, key)
-		}
-		if err != nil {
-			return fmt.Errorf("unmarshalling type %T: %v", c, err)
-		}
-	}
-	return nil
-}
-
-// MarshalJSON implements the json.Marshaller interface for type CertificateBundle.
-func (c CertificateBundle) MarshalJSON() ([]byte, error) {
+// MarshalJSON implements the json.Marshaller interface for type Certificate.
+func (c Certificate) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
 	populate(objectMap, "attributes", c.Attributes)
 	populateByteArray(objectMap, "cer", c.CER, runtime.Base64StdFormat)
@@ -176,8 +125,8 @@ func (c CertificateBundle) MarshalJSON() ([]byte, error) {
 	return json.Marshal(objectMap)
 }
 
-// UnmarshalJSON implements the json.Unmarshaller interface for type CertificateBundle.
-func (c *CertificateBundle) UnmarshalJSON(data []byte) error {
+// UnmarshalJSON implements the json.Unmarshaller interface for type Certificate.
+func (c *Certificate) UnmarshalJSON(data []byte) error {
 	var rawMsg map[string]json.RawMessage
 	if err := json.Unmarshal(data, &rawMsg); err != nil {
 		return fmt.Errorf("unmarshalling type %T: %v", c, err)
@@ -220,47 +169,21 @@ func (c *CertificateBundle) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
-// MarshalJSON implements the json.Marshaller interface for type CertificateIssuerItem.
-func (c CertificateIssuerItem) MarshalJSON() ([]byte, error) {
-	objectMap := make(map[string]any)
-	populate(objectMap, "id", c.ID)
-	populate(objectMap, "provider", c.Provider)
-	return json.Marshal(objectMap)
-}
-
-// UnmarshalJSON implements the json.Unmarshaller interface for type CertificateIssuerItem.
-func (c *CertificateIssuerItem) UnmarshalJSON(data []byte) error {
-	var rawMsg map[string]json.RawMessage
-	if err := json.Unmarshal(data, &rawMsg); err != nil {
-		return fmt.Errorf("unmarshalling type %T: %v", c, err)
-	}
-	for key, val := range rawMsg {
-		var err error
-		switch key {
-		case "id":
-			err = unpopulate(val, "ID", &c.ID)
-			delete(rawMsg, key)
-		case "provider":
-			err = unpopulate(val, "Provider", &c.Provider)
-			delete(rawMsg, key)
-		}
-		if err != nil {
-			return fmt.Errorf("unmarshalling type %T: %v", c, err)
-		}
-	}
-	return nil
-}
-
-// MarshalJSON implements the json.Marshaller interface for type CertificateIssuerListResult.
-func (c CertificateIssuerListResult) MarshalJSON() ([]byte, error) {
+// MarshalJSON implements the json.Marshaller interface for type CertificateAttributes.
+func (c CertificateAttributes) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
-	populate(objectMap, "nextLink", c.NextLink)
-	populate(objectMap, "value", c.Value)
+	populateTimeUnix(objectMap, "created", c.Created)
+	populate(objectMap, "enabled", c.Enabled)
+	populateTimeUnix(objectMap, "exp", c.Expires)
+	populateTimeUnix(objectMap, "nbf", c.NotBefore)
+	populate(objectMap, "recoverableDays", c.RecoverableDays)
+	populate(objectMap, "recoveryLevel", c.RecoveryLevel)
+	populateTimeUnix(objectMap, "updated", c.Updated)
 	return json.Marshal(objectMap)
 }
 
-// UnmarshalJSON implements the json.Unmarshaller interface for type CertificateIssuerListResult.
-func (c *CertificateIssuerListResult) UnmarshalJSON(data []byte) error {
+// UnmarshalJSON implements the json.Unmarshaller interface for type CertificateAttributes.
+func (c *CertificateAttributes) UnmarshalJSON(data []byte) error {
 	var rawMsg map[string]json.RawMessage
 	if err := json.Unmarshal(data, &rawMsg); err != nil {
 		return fmt.Errorf("unmarshalling type %T: %v", c, err)
@@ -268,81 +191,26 @@ func (c *CertificateIssuerListResult) UnmarshalJSON(data []byte) error {
 	for key, val := range rawMsg {
 		var err error
 		switch key {
-		case "nextLink":
-			err = unpopulate(val, "NextLink", &c.NextLink)
-			delete(rawMsg, key)
-		case "value":
-			err = unpopulate(val, "Value", &c.Value)
+		case "created":
+			err = unpopulateTimeUnix(val, "Created", &c.Created)
 			delete(rawMsg, key)
-		}
-		if err != nil {
-			return fmt.Errorf("unmarshalling type %T: %v", c, err)
-		}
-	}
-	return nil
-}
-
-// MarshalJSON implements the json.Marshaller interface for type CertificateItem.
-func (c CertificateItem) MarshalJSON() ([]byte, error) {
-	objectMap := make(map[string]any)
-	populate(objectMap, "attributes", c.Attributes)
-	populate(objectMap, "id", c.ID)
-	populate(objectMap, "tags", c.Tags)
-	populateByteArray(objectMap, "x5t", c.X509Thumbprint, runtime.Base64URLFormat)
-	return json.Marshal(objectMap)
-}
-
-// UnmarshalJSON implements the json.Unmarshaller interface for type CertificateItem.
-func (c *CertificateItem) UnmarshalJSON(data []byte) error {
-	var rawMsg map[string]json.RawMessage
-	if err := json.Unmarshal(data, &rawMsg); err != nil {
-		return fmt.Errorf("unmarshalling type %T: %v", c, err)
-	}
-	for key, val := range rawMsg {
-		var err error
-		switch key {
-		case "attributes":
-			err = unpopulate(val, "Attributes", &c.Attributes)
+		case "enabled":
+			err = unpopulate(val, "Enabled", &c.Enabled)
 			delete(rawMsg, key)
-		case "id":
-			err = unpopulate(val, "ID", &c.ID)
+		case "exp":
+			err = unpopulateTimeUnix(val, "Expires", &c.Expires)
 			delete(rawMsg, key)
-		case "tags":
-			err = unpopulate(val, "Tags", &c.Tags)
+		case "nbf":
+			err = unpopulateTimeUnix(val, "NotBefore", &c.NotBefore)
 			delete(rawMsg, key)
-		case "x5t":
-			err = runtime.DecodeByteArray(string(val), &c.X509Thumbprint, runtime.Base64URLFormat)
+		case "recoverableDays":
+			err = unpopulate(val, "RecoverableDays", &c.RecoverableDays)
 			delete(rawMsg, key)
-		}
-		if err != nil {
-			return fmt.Errorf("unmarshalling type %T: %v", c, err)
-		}
-	}
-	return nil
-}
-
-// MarshalJSON implements the json.Marshaller interface for type CertificateListResult.
-func (c CertificateListResult) MarshalJSON() ([]byte, error) {
-	objectMap := make(map[string]any)
-	populate(objectMap, "nextLink", c.NextLink)
-	populate(objectMap, "value", c.Value)
-	return json.Marshal(objectMap)
-}
-
-// UnmarshalJSON implements the json.Unmarshaller interface for type CertificateListResult.
-func (c *CertificateListResult) UnmarshalJSON(data []byte) error {
-	var rawMsg map[string]json.RawMessage
-	if err := json.Unmarshal(data, &rawMsg); err != nil {
-		return fmt.Errorf("unmarshalling type %T: %v", c, err)
-	}
-	for key, val := range rawMsg {
-		var err error
-		switch key {
-		case "nextLink":
-			err = unpopulate(val, "NextLink", &c.NextLink)
+		case "recoveryLevel":
+			err = unpopulate(val, "RecoveryLevel", &c.RecoveryLevel)
 			delete(rawMsg, key)
-		case "value":
-			err = unpopulate(val, "Value", &c.Value)
+		case "updated":
+			err = unpopulateTimeUnix(val, "Updated", &c.Updated)
 			delete(rawMsg, key)
 		}
 		if err != nil {
@@ -462,6 +330,76 @@ func (c *CertificatePolicy) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
+// MarshalJSON implements the json.Marshaller interface for type CertificateProperties.
+func (c CertificateProperties) MarshalJSON() ([]byte, error) {
+	objectMap := make(map[string]any)
+	populate(objectMap, "attributes", c.Attributes)
+	populate(objectMap, "id", c.ID)
+	populate(objectMap, "tags", c.Tags)
+	populateByteArray(objectMap, "x5t", c.X509Thumbprint, runtime.Base64URLFormat)
+	return json.Marshal(objectMap)
+}
+
+// UnmarshalJSON implements the json.Unmarshaller interface for type CertificateProperties.
+func (c *CertificateProperties) UnmarshalJSON(data []byte) error {
+	var rawMsg map[string]json.RawMessage
+	if err := json.Unmarshal(data, &rawMsg); err != nil {
+		return fmt.Errorf("unmarshalling type %T: %v", c, err)
+	}
+	for key, val := range rawMsg {
+		var err error
+		switch key {
+		case "attributes":
+			err = unpopulate(val, "Attributes", &c.Attributes)
+			delete(rawMsg, key)
+		case "id":
+			err = unpopulate(val, "ID", &c.ID)
+			delete(rawMsg, key)
+		case "tags":
+			err = unpopulate(val, "Tags", &c.Tags)
+			delete(rawMsg, key)
+		case "x5t":
+			err = runtime.DecodeByteArray(string(val), &c.X509Thumbprint, runtime.Base64URLFormat)
+			delete(rawMsg, key)
+		}
+		if err != nil {
+			return fmt.Errorf("unmarshalling type %T: %v", c, err)
+		}
+	}
+	return nil
+}
+
+// MarshalJSON implements the json.Marshaller interface for type CertificatePropertiesListResult.
+func (c CertificatePropertiesListResult) MarshalJSON() ([]byte, error) {
+	objectMap := make(map[string]any)
+	populate(objectMap, "nextLink", c.NextLink)
+	populate(objectMap, "value", c.Value)
+	return json.Marshal(objectMap)
+}
+
+// UnmarshalJSON implements the json.Unmarshaller interface for type CertificatePropertiesListResult.
+func (c *CertificatePropertiesListResult) UnmarshalJSON(data []byte) error {
+	var rawMsg map[string]json.RawMessage
+	if err := json.Unmarshal(data, &rawMsg); err != nil {
+		return fmt.Errorf("unmarshalling type %T: %v", c, err)
+	}
+	for key, val := range rawMsg {
+		var err error
+		switch key {
+		case "nextLink":
+			err = unpopulate(val, "NextLink", &c.NextLink)
+			delete(rawMsg, key)
+		case "value":
+			err = unpopulate(val, "Value", &c.Value)
+			delete(rawMsg, key)
+		}
+		if err != nil {
+			return fmt.Errorf("unmarshalling type %T: %v", c, err)
+		}
+	}
+	return nil
+}
+
 // MarshalJSON implements the json.Marshaller interface for type Contact.
 func (c Contact) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
@@ -563,8 +501,8 @@ func (c *CreateCertificateParameters) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
-// MarshalJSON implements the json.Marshaller interface for type DeletedCertificateBundle.
-func (d DeletedCertificateBundle) MarshalJSON() ([]byte, error) {
+// MarshalJSON implements the json.Marshaller interface for type DeletedCertificate.
+func (d DeletedCertificate) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
 	populate(objectMap, "attributes", d.Attributes)
 	populateByteArray(objectMap, "cer", d.CER, runtime.Base64StdFormat)
@@ -581,8 +519,8 @@ func (d DeletedCertificateBundle) MarshalJSON() ([]byte, error) {
 	return json.Marshal(objectMap)
 }
 
-// UnmarshalJSON implements the json.Unmarshaller interface for type DeletedCertificateBundle.
-func (d *DeletedCertificateBundle) UnmarshalJSON(data []byte) error {
+// UnmarshalJSON implements the json.Unmarshaller interface for type DeletedCertificate.
+func (d *DeletedCertificate) UnmarshalJSON(data []byte) error {
 	var rawMsg map[string]json.RawMessage
 	if err := json.Unmarshal(data, &rawMsg); err != nil {
 		return fmt.Errorf("unmarshalling type %T: %v", d, err)
@@ -634,8 +572,8 @@ func (d *DeletedCertificateBundle) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
-// MarshalJSON implements the json.Marshaller interface for type DeletedCertificateItem.
-func (d DeletedCertificateItem) MarshalJSON() ([]byte, error) {
+// MarshalJSON implements the json.Marshaller interface for type DeletedCertificateProperties.
+func (d DeletedCertificateProperties) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
 	populate(objectMap, "attributes", d.Attributes)
 	populateTimeUnix(objectMap, "deletedDate", d.DeletedDate)
@@ -647,8 +585,8 @@ func (d DeletedCertificateItem) MarshalJSON() ([]byte, error) {
 	return json.Marshal(objectMap)
 }
 
-// UnmarshalJSON implements the json.Unmarshaller interface for type DeletedCertificateItem.
-func (d *DeletedCertificateItem) UnmarshalJSON(data []byte) error {
+// UnmarshalJSON implements the json.Unmarshaller interface for type DeletedCertificateProperties.
+func (d *DeletedCertificateProperties) UnmarshalJSON(data []byte) error {
 	var rawMsg map[string]json.RawMessage
 	if err := json.Unmarshal(data, &rawMsg); err != nil {
 		return fmt.Errorf("unmarshalling type %T: %v", d, err)
@@ -685,16 +623,16 @@ func (d *DeletedCertificateItem) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
-// MarshalJSON implements the json.Marshaller interface for type DeletedCertificateListResult.
-func (d DeletedCertificateListResult) MarshalJSON() ([]byte, error) {
+// MarshalJSON implements the json.Marshaller interface for type DeletedCertificatePropertiesListResult.
+func (d DeletedCertificatePropertiesListResult) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
 	populate(objectMap, "nextLink", d.NextLink)
 	populate(objectMap, "value", d.Value)
 	return json.Marshal(objectMap)
 }
 
-// UnmarshalJSON implements the json.Unmarshaller interface for type DeletedCertificateListResult.
-func (d *DeletedCertificateListResult) UnmarshalJSON(data []byte) error {
+// UnmarshalJSON implements the json.Unmarshaller interface for type DeletedCertificatePropertiesListResult.
+func (d *DeletedCertificatePropertiesListResult) UnmarshalJSON(data []byte) error {
 	var rawMsg map[string]json.RawMessage
 	if err := json.Unmarshal(data, &rawMsg); err != nil {
 		return fmt.Errorf("unmarshalling type %T: %v", d, err)
@@ -759,17 +697,19 @@ func (i *ImportCertificateParameters) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
-// MarshalJSON implements the json.Marshaller interface for type IssuerAttributes.
-func (i IssuerAttributes) MarshalJSON() ([]byte, error) {
+// MarshalJSON implements the json.Marshaller interface for type Issuer.
+func (i Issuer) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
-	populateTimeUnix(objectMap, "created", i.Created)
-	populate(objectMap, "enabled", i.Enabled)
-	populateTimeUnix(objectMap, "updated", i.Updated)
+	populate(objectMap, "attributes", i.Attributes)
+	populate(objectMap, "credentials", i.Credentials)
+	populate(objectMap, "id", i.ID)
+	populate(objectMap, "org_details", i.OrganizationDetails)
+	populate(objectMap, "provider", i.Provider)
 	return json.Marshal(objectMap)
 }
 
-// UnmarshalJSON implements the json.Unmarshaller interface for type IssuerAttributes.
-func (i *IssuerAttributes) UnmarshalJSON(data []byte) error {
+// UnmarshalJSON implements the json.Unmarshaller interface for type Issuer.
+func (i *Issuer) UnmarshalJSON(data []byte) error {
 	var rawMsg map[string]json.RawMessage
 	if err := json.Unmarshal(data, &rawMsg); err != nil {
 		return fmt.Errorf("unmarshalling type %T: %v", i, err)
@@ -777,14 +717,20 @@ func (i *IssuerAttributes) UnmarshalJSON(data []byte) error {
 	for key, val := range rawMsg {
 		var err error
 		switch key {
-		case "created":
-			err = unpopulateTimeUnix(val, "Created", &i.Created)
+		case "attributes":
+			err = unpopulate(val, "Attributes", &i.Attributes)
 			delete(rawMsg, key)
-		case "enabled":
-			err = unpopulate(val, "Enabled", &i.Enabled)
+		case "credentials":
+			err = unpopulate(val, "Credentials", &i.Credentials)
 			delete(rawMsg, key)
-		case "updated":
-			err = unpopulateTimeUnix(val, "Updated", &i.Updated)
+		case "id":
+			err = unpopulate(val, "ID", &i.ID)
+			delete(rawMsg, key)
+		case "org_details":
+			err = unpopulate(val, "OrganizationDetails", &i.OrganizationDetails)
+			delete(rawMsg, key)
+		case "provider":
+			err = unpopulate(val, "Provider", &i.Provider)
 			delete(rawMsg, key)
 		}
 		if err != nil {
@@ -794,19 +740,17 @@ func (i *IssuerAttributes) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
-// MarshalJSON implements the json.Marshaller interface for type IssuerBundle.
-func (i IssuerBundle) MarshalJSON() ([]byte, error) {
+// MarshalJSON implements the json.Marshaller interface for type IssuerAttributes.
+func (i IssuerAttributes) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
-	populate(objectMap, "attributes", i.Attributes)
-	populate(objectMap, "credentials", i.Credentials)
-	populate(objectMap, "id", i.ID)
-	populate(objectMap, "org_details", i.OrganizationDetails)
-	populate(objectMap, "provider", i.Provider)
+	populateTimeUnix(objectMap, "created", i.Created)
+	populate(objectMap, "enabled", i.Enabled)
+	populateTimeUnix(objectMap, "updated", i.Updated)
 	return json.Marshal(objectMap)
 }
 
-// UnmarshalJSON implements the json.Unmarshaller interface for type IssuerBundle.
-func (i *IssuerBundle) UnmarshalJSON(data []byte) error {
+// UnmarshalJSON implements the json.Unmarshaller interface for type IssuerAttributes.
+func (i *IssuerAttributes) UnmarshalJSON(data []byte) error {
 	var rawMsg map[string]json.RawMessage
 	if err := json.Unmarshal(data, &rawMsg); err != nil {
 		return fmt.Errorf("unmarshalling type %T: %v", i, err)
@@ -814,20 +758,14 @@ func (i *IssuerBundle) UnmarshalJSON(data []byte) error {
 	for key, val := range rawMsg {
 		var err error
 		switch key {
-		case "attributes":
-			err = unpopulate(val, "Attributes", &i.Attributes)
-			delete(rawMsg, key)
-		case "credentials":
-			err = unpopulate(val, "Credentials", &i.Credentials)
-			delete(rawMsg, key)
-		case "id":
-			err = unpopulate(val, "ID", &i.ID)
+		case "created":
+			err = unpopulateTimeUnix(val, "Created", &i.Created)
 			delete(rawMsg, key)
-		case "org_details":
-			err = unpopulate(val, "OrganizationDetails", &i.OrganizationDetails)
+		case "enabled":
+			err = unpopulate(val, "Enabled", &i.Enabled)
 			delete(rawMsg, key)
-		case "provider":
-			err = unpopulate(val, "Provider", &i.Provider)
+		case "updated":
+			err = unpopulateTimeUnix(val, "Updated", &i.Updated)
 			delete(rawMsg, key)
 		}
 		if err != nil {
@@ -903,6 +841,68 @@ func (i *IssuerParameters) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
+// MarshalJSON implements the json.Marshaller interface for type IssuerProperties.
+func (i IssuerProperties) MarshalJSON() ([]byte, error) {
+	objectMap := make(map[string]any)
+	populate(objectMap, "id", i.ID)
+	populate(objectMap, "provider", i.Provider)
+	return json.Marshal(objectMap)
+}
+
+// UnmarshalJSON implements the json.Unmarshaller interface for type IssuerProperties.
+func (i *IssuerProperties) UnmarshalJSON(data []byte) error {
+	var rawMsg map[string]json.RawMessage
+	if err := json.Unmarshal(data, &rawMsg); err != nil {
+		return fmt.Errorf("unmarshalling type %T: %v", i, err)
+	}
+	for key, val := range rawMsg {
+		var err error
+		switch key {
+		case "id":
+			err = unpopulate(val, "ID", &i.ID)
+			delete(rawMsg, key)
+		case "provider":
+			err = unpopulate(val, "Provider", &i.Provider)
+			delete(rawMsg, key)
+		}
+		if err != nil {
+			return fmt.Errorf("unmarshalling type %T: %v", i, err)
+		}
+	}
+	return nil
+}
+
+// MarshalJSON implements the json.Marshaller interface for type IssuerPropertiesListResult.
+func (i IssuerPropertiesListResult) MarshalJSON() ([]byte, error) {
+	objectMap := make(map[string]any)
+	populate(objectMap, "nextLink", i.NextLink)
+	populate(objectMap, "value", i.Value)
+	return json.Marshal(objectMap)
+}
+
+// UnmarshalJSON implements the json.Unmarshaller interface for type IssuerPropertiesListResult.
+func (i *IssuerPropertiesListResult) UnmarshalJSON(data []byte) error {
+	var rawMsg map[string]json.RawMessage
+	if err := json.Unmarshal(data, &rawMsg); err != nil {
+		return fmt.Errorf("unmarshalling type %T: %v", i, err)
+	}
+	for key, val := range rawMsg {
+		var err error
+		switch key {
+		case "nextLink":
+			err = unpopulate(val, "NextLink", &i.NextLink)
+			delete(rawMsg, key)
+		case "value":
+			err = unpopulate(val, "Value", &i.Value)
+			delete(rawMsg, key)
+		}
+		if err != nil {
+			return fmt.Errorf("unmarshalling type %T: %v", i, err)
+		}
+	}
+	return nil
+}
+
 // MarshalJSON implements the json.Marshaller interface for type KeyProperties.
 func (k KeyProperties) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
@@ -1046,7 +1046,7 @@ func (o *OrganizationDetails) UnmarshalJSON(data []byte) error {
 // MarshalJSON implements the json.Marshaller interface for type RestoreCertificateParameters.
 func (r RestoreCertificateParameters) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
-	populateByteArray(objectMap, "value", r.CertificateBundleBackup, runtime.Base64URLFormat)
+	populateByteArray(objectMap, "value", r.CertificateBackup, runtime.Base64URLFormat)
 	return json.Marshal(objectMap)
 }
 
@@ -1060,7 +1060,7 @@ func (r *RestoreCertificateParameters) UnmarshalJSON(data []byte) error {
 		var err error
 		switch key {
 		case "value":
-			err = runtime.DecodeByteArray(string(val), &r.CertificateBundleBackup, runtime.Base64URLFormat)
+			err = runtime.DecodeByteArray(string(val), &r.CertificateBackup, runtime.Base64URLFormat)
 			delete(rawMsg, key)
 		}
 		if err != nil {
@@ -1097,8 +1097,8 @@ func (s *SecretProperties) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
-// MarshalJSON implements the json.Marshaller interface for type SetCertificateIssuerParameters.
-func (s SetCertificateIssuerParameters) MarshalJSON() ([]byte, error) {
+// MarshalJSON implements the json.Marshaller interface for type SetIssuerParameters.
+func (s SetIssuerParameters) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
 	populate(objectMap, "attributes", s.Attributes)
 	populate(objectMap, "credentials", s.Credentials)
@@ -1107,8 +1107,8 @@ func (s SetCertificateIssuerParameters) MarshalJSON() ([]byte, error) {
 	return json.Marshal(objectMap)
 }
 
-// UnmarshalJSON implements the json.Unmarshaller interface for type SetCertificateIssuerParameters.
-func (s *SetCertificateIssuerParameters) UnmarshalJSON(data []byte) error {
+// UnmarshalJSON implements the json.Unmarshaller interface for type SetIssuerParameters.
+func (s *SetIssuerParameters) UnmarshalJSON(data []byte) error {
 	var rawMsg map[string]json.RawMessage
 	if err := json.Unmarshal(data, &rawMsg); err != nil {
 		return fmt.Errorf("unmarshalling type %T: %v", s, err)
@@ -1202,18 +1202,15 @@ func (t *Trigger) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
-// MarshalJSON implements the json.Marshaller interface for type UpdateCertificateIssuerParameters.
-func (u UpdateCertificateIssuerParameters) MarshalJSON() ([]byte, error) {
+// MarshalJSON implements the json.Marshaller interface for type UpdateCertificateOperationParameter.
+func (u UpdateCertificateOperationParameter) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
-	populate(objectMap, "attributes", u.Attributes)
-	populate(objectMap, "credentials", u.Credentials)
-	populate(objectMap, "org_details", u.OrganizationDetails)
-	populate(objectMap, "provider", u.Provider)
+	populate(objectMap, "cancellation_requested", u.CancellationRequested)
 	return json.Marshal(objectMap)
 }
 
-// UnmarshalJSON implements the json.Unmarshaller interface for type UpdateCertificateIssuerParameters.
-func (u *UpdateCertificateIssuerParameters) UnmarshalJSON(data []byte) error {
+// UnmarshalJSON implements the json.Unmarshaller interface for type UpdateCertificateOperationParameter.
+func (u *UpdateCertificateOperationParameter) UnmarshalJSON(data []byte) error {
 	var rawMsg map[string]json.RawMessage
 	if err := json.Unmarshal(data, &rawMsg); err != nil {
 		return fmt.Errorf("unmarshalling type %T: %v", u, err)
@@ -1221,17 +1218,8 @@ func (u *UpdateCertificateIssuerParameters) UnmarshalJSON(data []byte) error {
 	for key, val := range rawMsg {
 		var err error
 		switch key {
-		case "attributes":
-			err = unpopulate(val, "Attributes", &u.Attributes)
-			delete(rawMsg, key)
-		case "credentials":
-			err = unpopulate(val, "Credentials", &u.Credentials)
-			delete(rawMsg, key)
-		case "org_details":
-			err = unpopulate(val, "OrganizationDetails", &u.OrganizationDetails)
-			delete(rawMsg, key)
-		case "provider":
-			err = unpopulate(val, "Provider", &u.Provider)
+		case "cancellation_requested":
+			err = unpopulate(val, "CancellationRequested", &u.CancellationRequested)
 			delete(rawMsg, key)
 		}
 		if err != nil {
@@ -1241,15 +1229,17 @@ func (u *UpdateCertificateIssuerParameters) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
-// MarshalJSON implements the json.Marshaller interface for type UpdateCertificateOperationParameter.
-func (u UpdateCertificateOperationParameter) MarshalJSON() ([]byte, error) {
+// MarshalJSON implements the json.Marshaller interface for type UpdateCertificateParameters.
+func (u UpdateCertificateParameters) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
-	populate(objectMap, "cancellation_requested", u.CancellationRequested)
+	populate(objectMap, "attributes", u.CertificateAttributes)
+	populate(objectMap, "policy", u.CertificatePolicy)
+	populate(objectMap, "tags", u.Tags)
 	return json.Marshal(objectMap)
 }
 
-// UnmarshalJSON implements the json.Unmarshaller interface for type UpdateCertificateOperationParameter.
-func (u *UpdateCertificateOperationParameter) UnmarshalJSON(data []byte) error {
+// UnmarshalJSON implements the json.Unmarshaller interface for type UpdateCertificateParameters.
+func (u *UpdateCertificateParameters) UnmarshalJSON(data []byte) error {
 	var rawMsg map[string]json.RawMessage
 	if err := json.Unmarshal(data, &rawMsg); err != nil {
 		return fmt.Errorf("unmarshalling type %T: %v", u, err)
@@ -1257,8 +1247,14 @@ func (u *UpdateCertificateOperationParameter) UnmarshalJSON(data []byte) error {
 	for key, val := range rawMsg {
 		var err error
 		switch key {
-		case "cancellation_requested":
-			err = unpopulate(val, "CancellationRequested", &u.CancellationRequested)
+		case "attributes":
+			err = unpopulate(val, "CertificateAttributes", &u.CertificateAttributes)
+			delete(rawMsg, key)
+		case "policy":
+			err = unpopulate(val, "CertificatePolicy", &u.CertificatePolicy)
+			delete(rawMsg, key)
+		case "tags":
+			err = unpopulate(val, "Tags", &u.Tags)
 			delete(rawMsg, key)
 		}
 		if err != nil {
@@ -1268,17 +1264,18 @@ func (u *UpdateCertificateOperationParameter) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
-// MarshalJSON implements the json.Marshaller interface for type UpdateCertificateParameters.
-func (u UpdateCertificateParameters) MarshalJSON() ([]byte, error) {
+// MarshalJSON implements the json.Marshaller interface for type UpdateIssuerParameters.
+func (u UpdateIssuerParameters) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
-	populate(objectMap, "attributes", u.CertificateAttributes)
-	populate(objectMap, "policy", u.CertificatePolicy)
-	populate(objectMap, "tags", u.Tags)
+	populate(objectMap, "attributes", u.Attributes)
+	populate(objectMap, "credentials", u.Credentials)
+	populate(objectMap, "org_details", u.OrganizationDetails)
+	populate(objectMap, "provider", u.Provider)
 	return json.Marshal(objectMap)
 }
 
-// UnmarshalJSON implements the json.Unmarshaller interface for type UpdateCertificateParameters.
-func (u *UpdateCertificateParameters) UnmarshalJSON(data []byte) error {
+// UnmarshalJSON implements the json.Unmarshaller interface for type UpdateIssuerParameters.
+func (u *UpdateIssuerParameters) UnmarshalJSON(data []byte) error {
 	var rawMsg map[string]json.RawMessage
 	if err := json.Unmarshal(data, &rawMsg); err != nil {
 		return fmt.Errorf("unmarshalling type %T: %v", u, err)
@@ -1287,13 +1284,16 @@ func (u *UpdateCertificateParameters) UnmarshalJSON(data []byte) error {
 		var err error
 		switch key {
 		case "attributes":
-			err = unpopulate(val, "CertificateAttributes", &u.CertificateAttributes)
+			err = unpopulate(val, "Attributes", &u.Attributes)
 			delete(rawMsg, key)
-		case "policy":
-			err = unpopulate(val, "CertificatePolicy", &u.CertificatePolicy)
+		case "credentials":
+			err = unpopulate(val, "Credentials", &u.Credentials)
 			delete(rawMsg, key)
-		case "tags":
-			err = unpopulate(val, "Tags", &u.Tags)
+		case "org_details":
+			err = unpopulate(val, "OrganizationDetails", &u.OrganizationDetails)
+			delete(rawMsg, key)
+		case "provider":
+			err = unpopulate(val, "Provider", &u.Provider)
 			delete(rawMsg, key)
 		}
 		if err != nil {
diff --git a/sdk/security/keyvault/azcertificates/response_types.go b/sdk/security/keyvault/azcertificates/response_types.go
index fd4d97e489f8..ef01a88b4879 100644
--- a/sdk/security/keyvault/azcertificates/response_types.go
+++ b/sdk/security/keyvault/azcertificates/response_types.go
@@ -19,16 +19,6 @@ type CreateCertificateResponse struct {
 	CertificateOperation
 }
 
-// DeleteCertificateContactsResponse contains the response from method Client.DeleteCertificateContacts.
-type DeleteCertificateContactsResponse struct {
-	Contacts
-}
-
-// DeleteCertificateIssuerResponse contains the response from method Client.DeleteCertificateIssuer.
-type DeleteCertificateIssuerResponse struct {
-	IssuerBundle
-}
-
 // DeleteCertificateOperationResponse contains the response from method Client.DeleteCertificateOperation.
 type DeleteCertificateOperationResponse struct {
 	CertificateOperation
@@ -36,17 +26,17 @@ type DeleteCertificateOperationResponse struct {
 
 // DeleteCertificateResponse contains the response from method Client.DeleteCertificate.
 type DeleteCertificateResponse struct {
-	DeletedCertificateBundle
+	DeletedCertificate
 }
 
-// GetCertificateContactsResponse contains the response from method Client.GetCertificateContacts.
-type GetCertificateContactsResponse struct {
+// DeleteContactsResponse contains the response from method Client.DeleteContacts.
+type DeleteContactsResponse struct {
 	Contacts
 }
 
-// GetCertificateIssuerResponse contains the response from method Client.GetCertificateIssuer.
-type GetCertificateIssuerResponse struct {
-	IssuerBundle
+// DeleteIssuerResponse contains the response from method Client.DeleteIssuer.
+type DeleteIssuerResponse struct {
+	Issuer
 }
 
 // GetCertificateOperationResponse contains the response from method Client.GetCertificateOperation.
@@ -61,42 +51,52 @@ type GetCertificatePolicyResponse struct {
 
 // GetCertificateResponse contains the response from method Client.GetCertificate.
 type GetCertificateResponse struct {
-	CertificateBundle
+	Certificate
+}
+
+// GetContactsResponse contains the response from method Client.GetContacts.
+type GetContactsResponse struct {
+	Contacts
 }
 
 // GetDeletedCertificateResponse contains the response from method Client.GetDeletedCertificate.
 type GetDeletedCertificateResponse struct {
-	DeletedCertificateBundle
+	DeletedCertificate
+}
+
+// GetIssuerResponse contains the response from method Client.GetIssuer.
+type GetIssuerResponse struct {
+	Issuer
 }
 
 // ImportCertificateResponse contains the response from method Client.ImportCertificate.
 type ImportCertificateResponse struct {
-	CertificateBundle
+	Certificate
 }
 
-// ListCertificateIssuersResponse contains the response from method Client.NewListCertificateIssuersPager.
-type ListCertificateIssuersResponse struct {
-	CertificateIssuerListResult
+// ListCertificatePropertiesResponse contains the response from method Client.NewListCertificatePropertiesPager.
+type ListCertificatePropertiesResponse struct {
+	CertificatePropertiesListResult
 }
 
-// ListCertificateVersionsResponse contains the response from method Client.NewListCertificateVersionsPager.
-type ListCertificateVersionsResponse struct {
-	CertificateListResult
+// ListCertificatePropertiesVersionsResponse contains the response from method Client.NewListCertificatePropertiesVersionsPager.
+type ListCertificatePropertiesVersionsResponse struct {
+	CertificatePropertiesListResult
 }
 
-// ListCertificatesResponse contains the response from method Client.NewListCertificatesPager.
-type ListCertificatesResponse struct {
-	CertificateListResult
+// ListDeletedCertificatePropertiesResponse contains the response from method Client.NewListDeletedCertificatePropertiesPager.
+type ListDeletedCertificatePropertiesResponse struct {
+	DeletedCertificatePropertiesListResult
 }
 
-// ListDeletedCertificatesResponse contains the response from method Client.NewListDeletedCertificatesPager.
-type ListDeletedCertificatesResponse struct {
-	DeletedCertificateListResult
+// ListIssuerPropertiesResponse contains the response from method Client.NewListIssuerPropertiesPager.
+type ListIssuerPropertiesResponse struct {
+	IssuerPropertiesListResult
 }
 
 // MergeCertificateResponse contains the response from method Client.MergeCertificate.
 type MergeCertificateResponse struct {
-	CertificateBundle
+	Certificate
 }
 
 // PurgeDeletedCertificateResponse contains the response from method Client.PurgeDeletedCertificate.
@@ -106,27 +106,22 @@ type PurgeDeletedCertificateResponse struct {
 
 // RecoverDeletedCertificateResponse contains the response from method Client.RecoverDeletedCertificate.
 type RecoverDeletedCertificateResponse struct {
-	CertificateBundle
+	Certificate
 }
 
 // RestoreCertificateResponse contains the response from method Client.RestoreCertificate.
 type RestoreCertificateResponse struct {
-	CertificateBundle
+	Certificate
 }
 
-// SetCertificateContactsResponse contains the response from method Client.SetCertificateContacts.
-type SetCertificateContactsResponse struct {
+// SetContactsResponse contains the response from method Client.SetContacts.
+type SetContactsResponse struct {
 	Contacts
 }
 
-// SetCertificateIssuerResponse contains the response from method Client.SetCertificateIssuer.
-type SetCertificateIssuerResponse struct {
-	IssuerBundle
-}
-
-// UpdateCertificateIssuerResponse contains the response from method Client.UpdateCertificateIssuer.
-type UpdateCertificateIssuerResponse struct {
-	IssuerBundle
+// SetIssuerResponse contains the response from method Client.SetIssuer.
+type SetIssuerResponse struct {
+	Issuer
 }
 
 // UpdateCertificateOperationResponse contains the response from method Client.UpdateCertificateOperation.
@@ -141,5 +136,10 @@ type UpdateCertificatePolicyResponse struct {
 
 // UpdateCertificateResponse contains the response from method Client.UpdateCertificate.
 type UpdateCertificateResponse struct {
-	CertificateBundle
+	Certificate
+}
+
+// UpdateIssuerResponse contains the response from method Client.UpdateIssuer.
+type UpdateIssuerResponse struct {
+	Issuer
 }

From 50b7b887f17228e0935721346cfe048e9444b07e Mon Sep 17 00:00:00 2001
From: gracewilcox <graceawilcox@gmail.com>
Date: Tue, 6 Jun 2023 12:49:24 -0700
Subject: [PATCH 2/4] update tests

---
 sdk/security/keyvault/azcertificates/assets.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sdk/security/keyvault/azcertificates/assets.json b/sdk/security/keyvault/azcertificates/assets.json
index 212a49cf0771..54e434eb349e 100644
--- a/sdk/security/keyvault/azcertificates/assets.json
+++ b/sdk/security/keyvault/azcertificates/assets.json
@@ -2,5 +2,5 @@
   "AssetsRepo": "Azure/azure-sdk-assets",
   "AssetsRepoPrefixPath": "go",
   "TagPrefix": "go/security/keyvault/azcertificates",
-  "Tag": "go/security/keyvault/azcertificates_0abf787d93"
+  "Tag": "go/security/keyvault/azcertificates_a266a0061e"
 }

From 361ff3fc9f454e4fe8c1eb06fcfef7a70b6c60db Mon Sep 17 00:00:00 2001
From: gracewilcox <graceawilcox@gmail.com>
Date: Wed, 14 Jun 2023 16:08:12 -0700
Subject: [PATCH 3/4] feedback

---
 .../keyvault/azcertificates/CHANGELOG.md      |   7 +
 .../keyvault/azcertificates/autorest.md       |  33 +++-
 .../keyvault/azcertificates/client_test.go    |  26 ++--
 .../keyvault/azcertificates/models.go         |  50 +++---
 .../keyvault/azcertificates/models_serde.go   | 144 +++++++++---------
 5 files changed, 145 insertions(+), 115 deletions(-)

diff --git a/sdk/security/keyvault/azcertificates/CHANGELOG.md b/sdk/security/keyvault/azcertificates/CHANGELOG.md
index 53186f09ad9d..b2e8c07dd8b3 100644
--- a/sdk/security/keyvault/azcertificates/CHANGELOG.md
+++ b/sdk/security/keyvault/azcertificates/CHANGELOG.md
@@ -28,6 +28,13 @@
 * `RestoreCertificateParameters.CertificateBundleBackup` to `RestoreCertificateParameters.CertificateBackup`
 * `JSONWebKeyCurveName` to `CurveName`
 * `JSONWebKeyType` to `KeyType`
+* `Trigger` to `LifetimeActionTrigger`
+* `Action` to `LifetimeActionType`
+* `AdministratorDetails` to ``AdministratorContact`
+* `OrganizationDetails.AdminDetails` to `OrganizationDetails.AdminContacts`
+* `EmailAddress` to `Email`
+* `UPNs` to `UserPrincipalNames`
+* `EKUs` to `EnhancedKeyUsage`
 * remove `MaxResults` parameter
 * remove `DeletionRecoveryLevel` type
 
diff --git a/sdk/security/keyvault/azcertificates/autorest.md b/sdk/security/keyvault/azcertificates/autorest.md
index 8b380cbd5411..1f8adf6f9f5e 100644
--- a/sdk/security/keyvault/azcertificates/autorest.md
+++ b/sdk/security/keyvault/azcertificates/autorest.md
@@ -102,6 +102,14 @@ directive:
       from: SetCertificateIssuerParameters
       to: SetIssuerParameters
 
+  # rename LifetimeAction
+  - rename-model:
+      from: Action
+      to: LifetimeActionType
+  - rename-model:
+      from: Trigger
+      to: LifetimeActionTrigger
+  
   # rename CertificateBundle, CertificateItem, IssuerBundle
   - rename-model:
       from: CertificateBundle
@@ -124,6 +132,25 @@ directive:
   - where-model: RestoreCertificateParameters
     transform: $.properties.value["x-ms-client-name"] = "CertificateBackup"
 
+  # rename AdministratorDetails to AdministratorContact
+  - rename-model:
+      from: AdministratorDetails
+      to: AdministratorContact
+  - where-model: OrganizationDetails
+    transform: $.properties.admin_details["x-ms-client-name"] = "AdminContacts"
+  - where-model: 
+      - Contact
+      - AdministratorContact
+    transform: $.properties.email["x-ms-client-name"] = "Email"
+
+  # rename UPNs to UserPrincipalNames
+  - where-model: SubjectAlternativeNames
+    transform: $.properties.upns["x-ms-client-name"] = "UserPrincipalNames"
+
+  # rename EKUs to EnhancedKeyUsage
+  - where-model: X509CertificateProperties
+    transform: $.properties.ekus["x-ms-client-name"] = "EnhancedKeyUsage"
+
   # capitalize acronyms
   - where-model: Certificate
     transform: $.properties.cer["x-ms-client-name"] = "CER"
@@ -133,10 +160,6 @@ directive:
     transform: $.properties.sid["x-ms-client-name"] = "SID"
   - where-model: CertificateOperation
     transform: $.properties.csr["x-ms-client-name"] = "CSR"
-  - where-model: SubjectAlternativeNames
-    transform: $.properties.upns["x-ms-client-name"] = "UPNs"
-  - where-model: X509CertificateProperties
-    transform: $.properties.ekus["x-ms-client-name"] = "EKUs"
 
   # Remove MaxResults parameter
   - where: "$.paths..*"
@@ -206,7 +229,7 @@ directive:
   # (specifying models because others have "ID" fields whose values aren't cert IDs)
   - from: models.go
     where: $
-    transform: return $.replace(/(type (?:Deleted)?Certificate(?:\s|Properties\s)struct \{(?:\s.+\s)+\sID \*)string/g, "$1ID")
+    transform: return $.replace(/(type (?:Deleted)?Certificate(?:Properties)? struct \{(?:\s.+\s)+\sID \*)string/g, "$1ID")
 
   # remove "certificate" prefix from some method parameter names
   - from: client.go
diff --git a/sdk/security/keyvault/azcertificates/client_test.go b/sdk/security/keyvault/azcertificates/client_test.go
index a536d2069981..330660a15b5d 100644
--- a/sdk/security/keyvault/azcertificates/client_test.go
+++ b/sdk/security/keyvault/azcertificates/client_test.go
@@ -141,8 +141,8 @@ func TestContactsCRUD(t *testing.T) {
 	client := startTest(t)
 
 	contacts := azcertificates.Contacts{ContactList: []*azcertificates.Contact{
-		{EmailAddress: to.Ptr("one@localhost"), Name: to.Ptr("One"), Phone: to.Ptr("1111111111")},
-		{EmailAddress: to.Ptr("two@localhost"), Name: to.Ptr("Two"), Phone: to.Ptr("2222222222")},
+		{Email: to.Ptr("one@localhost"), Name: to.Ptr("One"), Phone: to.Ptr("1111111111")},
+		{Email: to.Ptr("two@localhost"), Name: to.Ptr("Two"), Phone: to.Ptr("2222222222")},
 	}}
 	setResp, err := client.SetContacts(ctx, contacts, nil)
 	require.NoError(t, err)
@@ -342,12 +342,12 @@ func TestIssuerCRUD(t *testing.T) {
 			AccountID: to.Ptr("keyvaultuser"),
 		},
 		OrganizationDetails: &azcertificates.OrganizationDetails{
-			AdminDetails: []*azcertificates.AdministratorDetails{
+			AdminContacts: []*azcertificates.AdministratorContact{
 				{
-					FirstName:    to.Ptr("First"),
-					LastName:     to.Ptr("Last"),
-					EmailAddress: to.Ptr("foo@bar"),
-					Phone:        to.Ptr("42"),
+					FirstName: to.Ptr("First"),
+					LastName:  to.Ptr("Last"),
+					Email:     to.Ptr("foo@bar"),
+					Phone:     to.Ptr("42"),
 				},
 			},
 		},
@@ -358,7 +358,7 @@ func TestIssuerCRUD(t *testing.T) {
 	require.NoError(t, err)
 	require.NotEmpty(t, setResp.ID)
 	require.Equal(t, setParams.Credentials, setResp.Credentials)
-	require.Equal(t, setParams.OrganizationDetails.AdminDetails[0], setResp.OrganizationDetails.AdminDetails[0])
+	require.Equal(t, setParams.OrganizationDetails.AdminContacts[0], setResp.OrganizationDetails.AdminContacts[0])
 	require.Equal(t, setParams.Provider, setResp.Provider)
 	testSerde(t, &setResp.Issuer)
 
@@ -620,19 +620,19 @@ func TestUpdateCertificatePolicy(t *testing.T) {
 		},
 		LifetimeActions: []*azcertificates.LifetimeAction{
 			{
-				Action: &azcertificates.Action{
+				Action: &azcertificates.LifetimeActionType{
 					ActionType: to.Ptr(azcertificates.CertificatePolicyActionEmailContacts),
 				},
-				Trigger: &azcertificates.Trigger{
+				Trigger: &azcertificates.LifetimeActionTrigger{
 					LifetimePercentage: to.Ptr(int32(98)),
 				},
 			},
 		},
 		SecretProperties: &azcertificates.SecretProperties{ContentType: to.Ptr("application/x-pkcs12")},
 		X509CertificateProperties: &azcertificates.X509CertificateProperties{
-			EKUs:     []*string{to.Ptr("1.3.6.1.5.5.7.3.1"), to.Ptr("1.3.6.1.5.5.7.3.2")},
-			KeyUsage: []*azcertificates.KeyUsageType{to.Ptr(azcertificates.KeyUsageTypeDataEncipherment)},
-			Subject:  to.Ptr("CN=DefaultPolicy"),
+			EnhancedKeyUsage: []*string{to.Ptr("1.3.6.1.5.5.7.3.1"), to.Ptr("1.3.6.1.5.5.7.3.2")},
+			KeyUsage:         []*azcertificates.KeyUsageType{to.Ptr(azcertificates.KeyUsageTypeDataEncipherment)},
+			Subject:          to.Ptr("CN=DefaultPolicy"),
 			SubjectAlternativeNames: &azcertificates.SubjectAlternativeNames{
 				DNSNames: []*string{to.Ptr("localhost")},
 			},
diff --git a/sdk/security/keyvault/azcertificates/models.go b/sdk/security/keyvault/azcertificates/models.go
index f52ab6acafe3..e1303646986e 100644
--- a/sdk/security/keyvault/azcertificates/models.go
+++ b/sdk/security/keyvault/azcertificates/models.go
@@ -11,16 +11,10 @@ package azcertificates
 
 import "time"
 
-// Action - The action that will be executed.
-type Action struct {
-	// The type of the action.
-	ActionType *CertificatePolicyAction `json:"action_type,omitempty"`
-}
-
-// AdministratorDetails - Details of the organization administrator of the certificate issuer.
-type AdministratorDetails struct {
+// AdministratorContact - Details of the organization administrator of the certificate issuer.
+type AdministratorContact struct {
 	// Email address.
-	EmailAddress *string `json:"email,omitempty"`
+	Email *string `json:"email,omitempty"`
 
 	// First name.
 	FirstName *string `json:"first_name,omitempty"`
@@ -316,7 +310,7 @@ type UpdateIssuerOptions struct {
 // Contact - The contact information for the vault certificates.
 type Contact struct {
 	// Email address.
-	EmailAddress *string `json:"email,omitempty"`
+	Email *string `json:"email,omitempty"`
 
 	// Name.
 	Name *string `json:"name,omitempty"`
@@ -531,10 +525,26 @@ type KeyProperties struct {
 // LifetimeAction - Action and its trigger that will be performed by Key Vault over the lifetime of a certificate.
 type LifetimeAction struct {
 	// The action that will be executed.
-	Action *Action `json:"action,omitempty"`
+	Action *LifetimeActionType `json:"action,omitempty"`
 
 	// The condition that will execute the action.
-	Trigger *Trigger `json:"trigger,omitempty"`
+	Trigger *LifetimeActionTrigger `json:"trigger,omitempty"`
+}
+
+// LifetimeActionTrigger - A condition to be satisfied for an action to be executed.
+type LifetimeActionTrigger struct {
+	// Days before expiry to attempt renewal. Value should be between 1 and validityinmonths multiplied by 27. If validityinmonths
+	// is 36, then value should be between 1 and 972 (36 * 27).
+	DaysBeforeExpiry *int32 `json:"days_before_expiry,omitempty"`
+
+	// Percentage of lifetime at which to trigger. Value should be between 1 and 99.
+	LifetimePercentage *int32 `json:"lifetime_percentage,omitempty"`
+}
+
+// LifetimeActionType - The action that will be executed.
+type LifetimeActionType struct {
+	// The type of the action.
+	ActionType *CertificatePolicyAction `json:"action_type,omitempty"`
 }
 
 // MergeCertificateParameters - The certificate merge parameters
@@ -552,7 +562,7 @@ type MergeCertificateParameters struct {
 // OrganizationDetails - Details of the organization of the certificate issuer.
 type OrganizationDetails struct {
 	// Details of the organization administrator.
-	AdminDetails []*AdministratorDetails `json:"admin_details,omitempty"`
+	AdminContacts []*AdministratorContact `json:"admin_details,omitempty"`
 
 	// Id of the organization.
 	ID *string `json:"id,omitempty"`
@@ -594,17 +604,7 @@ type SubjectAlternativeNames struct {
 	Emails []*string `json:"emails,omitempty"`
 
 	// User principal names.
-	UPNs []*string `json:"upns,omitempty"`
-}
-
-// Trigger - A condition to be satisfied for an action to be executed.
-type Trigger struct {
-	// Days before expiry to attempt renewal. Value should be between 1 and validityinmonths multiplied by 27. If validityinmonths
-	// is 36, then value should be between 1 and 972 (36 * 27).
-	DaysBeforeExpiry *int32 `json:"days_before_expiry,omitempty"`
-
-	// Percentage of lifetime at which to trigger. Value should be between 1 and 99.
-	LifetimePercentage *int32 `json:"lifetime_percentage,omitempty"`
+	UserPrincipalNames []*string `json:"upns,omitempty"`
 }
 
 // UpdateCertificateOperationParameter - The certificate operation update parameters.
@@ -643,7 +643,7 @@ type UpdateIssuerParameters struct {
 // X509CertificateProperties - Properties of the X509 component of a certificate.
 type X509CertificateProperties struct {
 	// The enhanced key usage.
-	EKUs []*string `json:"ekus,omitempty"`
+	EnhancedKeyUsage []*string `json:"ekus,omitempty"`
 
 	// Defines how the certificate's key may be used.
 	KeyUsage []*KeyUsageType `json:"key_usage,omitempty"`
diff --git a/sdk/security/keyvault/azcertificates/models_serde.go b/sdk/security/keyvault/azcertificates/models_serde.go
index 5cfa4ba4757c..c7803e97424d 100644
--- a/sdk/security/keyvault/azcertificates/models_serde.go
+++ b/sdk/security/keyvault/azcertificates/models_serde.go
@@ -17,45 +17,18 @@ import (
 	"reflect"
 )
 
-// MarshalJSON implements the json.Marshaller interface for type Action.
-func (a Action) MarshalJSON() ([]byte, error) {
+// MarshalJSON implements the json.Marshaller interface for type AdministratorContact.
+func (a AdministratorContact) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
-	populate(objectMap, "action_type", a.ActionType)
-	return json.Marshal(objectMap)
-}
-
-// UnmarshalJSON implements the json.Unmarshaller interface for type Action.
-func (a *Action) UnmarshalJSON(data []byte) error {
-	var rawMsg map[string]json.RawMessage
-	if err := json.Unmarshal(data, &rawMsg); err != nil {
-		return fmt.Errorf("unmarshalling type %T: %v", a, err)
-	}
-	for key, val := range rawMsg {
-		var err error
-		switch key {
-		case "action_type":
-			err = unpopulate(val, "ActionType", &a.ActionType)
-			delete(rawMsg, key)
-		}
-		if err != nil {
-			return fmt.Errorf("unmarshalling type %T: %v", a, err)
-		}
-	}
-	return nil
-}
-
-// MarshalJSON implements the json.Marshaller interface for type AdministratorDetails.
-func (a AdministratorDetails) MarshalJSON() ([]byte, error) {
-	objectMap := make(map[string]any)
-	populate(objectMap, "email", a.EmailAddress)
+	populate(objectMap, "email", a.Email)
 	populate(objectMap, "first_name", a.FirstName)
 	populate(objectMap, "last_name", a.LastName)
 	populate(objectMap, "phone", a.Phone)
 	return json.Marshal(objectMap)
 }
 
-// UnmarshalJSON implements the json.Unmarshaller interface for type AdministratorDetails.
-func (a *AdministratorDetails) UnmarshalJSON(data []byte) error {
+// UnmarshalJSON implements the json.Unmarshaller interface for type AdministratorContact.
+func (a *AdministratorContact) UnmarshalJSON(data []byte) error {
 	var rawMsg map[string]json.RawMessage
 	if err := json.Unmarshal(data, &rawMsg); err != nil {
 		return fmt.Errorf("unmarshalling type %T: %v", a, err)
@@ -64,7 +37,7 @@ func (a *AdministratorDetails) UnmarshalJSON(data []byte) error {
 		var err error
 		switch key {
 		case "email":
-			err = unpopulate(val, "EmailAddress", &a.EmailAddress)
+			err = unpopulate(val, "Email", &a.Email)
 			delete(rawMsg, key)
 		case "first_name":
 			err = unpopulate(val, "FirstName", &a.FirstName)
@@ -403,7 +376,7 @@ func (c *CertificatePropertiesListResult) UnmarshalJSON(data []byte) error {
 // MarshalJSON implements the json.Marshaller interface for type Contact.
 func (c Contact) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
-	populate(objectMap, "email", c.EmailAddress)
+	populate(objectMap, "email", c.Email)
 	populate(objectMap, "name", c.Name)
 	populate(objectMap, "phone", c.Phone)
 	return json.Marshal(objectMap)
@@ -419,7 +392,7 @@ func (c *Contact) UnmarshalJSON(data []byte) error {
 		var err error
 		switch key {
 		case "email":
-			err = unpopulate(val, "EmailAddress", &c.EmailAddress)
+			err = unpopulate(val, "Email", &c.Email)
 			delete(rawMsg, key)
 		case "name":
 			err = unpopulate(val, "Name", &c.Name)
@@ -977,6 +950,64 @@ func (l *LifetimeAction) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
+// MarshalJSON implements the json.Marshaller interface for type LifetimeActionTrigger.
+func (l LifetimeActionTrigger) MarshalJSON() ([]byte, error) {
+	objectMap := make(map[string]any)
+	populate(objectMap, "days_before_expiry", l.DaysBeforeExpiry)
+	populate(objectMap, "lifetime_percentage", l.LifetimePercentage)
+	return json.Marshal(objectMap)
+}
+
+// UnmarshalJSON implements the json.Unmarshaller interface for type LifetimeActionTrigger.
+func (l *LifetimeActionTrigger) UnmarshalJSON(data []byte) error {
+	var rawMsg map[string]json.RawMessage
+	if err := json.Unmarshal(data, &rawMsg); err != nil {
+		return fmt.Errorf("unmarshalling type %T: %v", l, err)
+	}
+	for key, val := range rawMsg {
+		var err error
+		switch key {
+		case "days_before_expiry":
+			err = unpopulate(val, "DaysBeforeExpiry", &l.DaysBeforeExpiry)
+			delete(rawMsg, key)
+		case "lifetime_percentage":
+			err = unpopulate(val, "LifetimePercentage", &l.LifetimePercentage)
+			delete(rawMsg, key)
+		}
+		if err != nil {
+			return fmt.Errorf("unmarshalling type %T: %v", l, err)
+		}
+	}
+	return nil
+}
+
+// MarshalJSON implements the json.Marshaller interface for type LifetimeActionType.
+func (l LifetimeActionType) MarshalJSON() ([]byte, error) {
+	objectMap := make(map[string]any)
+	populate(objectMap, "action_type", l.ActionType)
+	return json.Marshal(objectMap)
+}
+
+// UnmarshalJSON implements the json.Unmarshaller interface for type LifetimeActionType.
+func (l *LifetimeActionType) UnmarshalJSON(data []byte) error {
+	var rawMsg map[string]json.RawMessage
+	if err := json.Unmarshal(data, &rawMsg); err != nil {
+		return fmt.Errorf("unmarshalling type %T: %v", l, err)
+	}
+	for key, val := range rawMsg {
+		var err error
+		switch key {
+		case "action_type":
+			err = unpopulate(val, "ActionType", &l.ActionType)
+			delete(rawMsg, key)
+		}
+		if err != nil {
+			return fmt.Errorf("unmarshalling type %T: %v", l, err)
+		}
+	}
+	return nil
+}
+
 // MarshalJSON implements the json.Marshaller interface for type MergeCertificateParameters.
 func (m MergeCertificateParameters) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
@@ -1015,7 +1046,7 @@ func (m *MergeCertificateParameters) UnmarshalJSON(data []byte) error {
 // MarshalJSON implements the json.Marshaller interface for type OrganizationDetails.
 func (o OrganizationDetails) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
-	populate(objectMap, "admin_details", o.AdminDetails)
+	populate(objectMap, "admin_details", o.AdminContacts)
 	populate(objectMap, "id", o.ID)
 	return json.Marshal(objectMap)
 }
@@ -1030,7 +1061,7 @@ func (o *OrganizationDetails) UnmarshalJSON(data []byte) error {
 		var err error
 		switch key {
 		case "admin_details":
-			err = unpopulate(val, "AdminDetails", &o.AdminDetails)
+			err = unpopulate(val, "AdminContacts", &o.AdminContacts)
 			delete(rawMsg, key)
 		case "id":
 			err = unpopulate(val, "ID", &o.ID)
@@ -1141,7 +1172,7 @@ func (s SubjectAlternativeNames) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
 	populate(objectMap, "dns_names", s.DNSNames)
 	populate(objectMap, "emails", s.Emails)
-	populate(objectMap, "upns", s.UPNs)
+	populate(objectMap, "upns", s.UserPrincipalNames)
 	return json.Marshal(objectMap)
 }
 
@@ -1161,7 +1192,7 @@ func (s *SubjectAlternativeNames) UnmarshalJSON(data []byte) error {
 			err = unpopulate(val, "Emails", &s.Emails)
 			delete(rawMsg, key)
 		case "upns":
-			err = unpopulate(val, "UPNs", &s.UPNs)
+			err = unpopulate(val, "UserPrincipalNames", &s.UserPrincipalNames)
 			delete(rawMsg, key)
 		}
 		if err != nil {
@@ -1171,37 +1202,6 @@ func (s *SubjectAlternativeNames) UnmarshalJSON(data []byte) error {
 	return nil
 }
 
-// MarshalJSON implements the json.Marshaller interface for type Trigger.
-func (t Trigger) MarshalJSON() ([]byte, error) {
-	objectMap := make(map[string]any)
-	populate(objectMap, "days_before_expiry", t.DaysBeforeExpiry)
-	populate(objectMap, "lifetime_percentage", t.LifetimePercentage)
-	return json.Marshal(objectMap)
-}
-
-// UnmarshalJSON implements the json.Unmarshaller interface for type Trigger.
-func (t *Trigger) UnmarshalJSON(data []byte) error {
-	var rawMsg map[string]json.RawMessage
-	if err := json.Unmarshal(data, &rawMsg); err != nil {
-		return fmt.Errorf("unmarshalling type %T: %v", t, err)
-	}
-	for key, val := range rawMsg {
-		var err error
-		switch key {
-		case "days_before_expiry":
-			err = unpopulate(val, "DaysBeforeExpiry", &t.DaysBeforeExpiry)
-			delete(rawMsg, key)
-		case "lifetime_percentage":
-			err = unpopulate(val, "LifetimePercentage", &t.LifetimePercentage)
-			delete(rawMsg, key)
-		}
-		if err != nil {
-			return fmt.Errorf("unmarshalling type %T: %v", t, err)
-		}
-	}
-	return nil
-}
-
 // MarshalJSON implements the json.Marshaller interface for type UpdateCertificateOperationParameter.
 func (u UpdateCertificateOperationParameter) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
@@ -1306,7 +1306,7 @@ func (u *UpdateIssuerParameters) UnmarshalJSON(data []byte) error {
 // MarshalJSON implements the json.Marshaller interface for type X509CertificateProperties.
 func (x X509CertificateProperties) MarshalJSON() ([]byte, error) {
 	objectMap := make(map[string]any)
-	populate(objectMap, "ekus", x.EKUs)
+	populate(objectMap, "ekus", x.EnhancedKeyUsage)
 	populate(objectMap, "key_usage", x.KeyUsage)
 	populate(objectMap, "subject", x.Subject)
 	populate(objectMap, "sans", x.SubjectAlternativeNames)
@@ -1324,7 +1324,7 @@ func (x *X509CertificateProperties) UnmarshalJSON(data []byte) error {
 		var err error
 		switch key {
 		case "ekus":
-			err = unpopulate(val, "EKUs", &x.EKUs)
+			err = unpopulate(val, "EnhancedKeyUsage", &x.EnhancedKeyUsage)
 			delete(rawMsg, key)
 		case "key_usage":
 			err = unpopulate(val, "KeyUsage", &x.KeyUsage)

From 571f636b9b477f5181715cb1685b7bc059c11bd4 Mon Sep 17 00:00:00 2001
From: gracewilcox <graceawilcox@gmail.com>
Date: Wed, 21 Jun 2023 16:35:29 -0700
Subject: [PATCH 4/4] id type

---
 sdk/security/keyvault/azcertificates/autorest.md | 14 ++++++++++----
 sdk/security/keyvault/azcertificates/models.go   | 12 ++++++------
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/sdk/security/keyvault/azcertificates/autorest.md b/sdk/security/keyvault/azcertificates/autorest.md
index 1f8adf6f9f5e..e2860c0dfcf5 100644
--- a/sdk/security/keyvault/azcertificates/autorest.md
+++ b/sdk/security/keyvault/azcertificates/autorest.md
@@ -226,15 +226,21 @@ directive:
     transform: return $.replace(/Client(\w+)((?:Options|Response))/g, "$1$2");
 
   # make cert IDs a convenience type so we can add parsing methods
-  # (specifying models because others have "ID" fields whose values aren't cert IDs)
+  # (specifying models because others have "ID" fields whose values aren't key vault object identifiers)
   - from: models.go
     where: $
-    transform: return $.replace(/(type (?:Deleted)?Certificate(?:Properties)? struct \{(?:\s.+\s)+\sID \*)string/g, "$1ID")
+    transform: return $.replace(/(type (?:Deleted)?Certificate(?:Properties|Policy|Operation)? struct \{(?:\s.+\s)+\sID \*)string/g, "$1ID")
+  - from: models.go
+    where: $
+    transform: return $.replace(/(type (?:Deleted)?Certificate struct \{(?:\s.+\s)+\sKID \*)string/g, "$1ID")
+  - from: models.go
+    where: $
+    transform: return $.replace(/(type (?:Deleted)?Certificate struct \{(?:\s.+\s)+\sSID \*)string/g, "$1ID")
 
   # remove "certificate" prefix from some method parameter names
   - from: client.go
-  - where: $
-  - transform: return $.replace(/certificate((?:Name|Policy|Version)) string/g, (match) => { return match[0].toLowerCase() + match.substr(1); })
+    where: $
+    transform: return $.replace(/certificate((?:Name|Policy|Version)) string/g, (match) => { return match[0].toLowerCase() + match.substr(1); })
 
   # add doc comment
   - from: swagger-document
diff --git a/sdk/security/keyvault/azcertificates/models.go b/sdk/security/keyvault/azcertificates/models.go
index e1303646986e..5f81f291edf9 100644
--- a/sdk/security/keyvault/azcertificates/models.go
+++ b/sdk/security/keyvault/azcertificates/models.go
@@ -50,13 +50,13 @@ type Certificate struct {
 	ID *ID `json:"id,omitempty" azure:"ro"`
 
 	// READ-ONLY; The key id.
-	KID *string `json:"kid,omitempty" azure:"ro"`
+	KID *ID `json:"kid,omitempty" azure:"ro"`
 
 	// READ-ONLY; The management policy.
 	Policy *CertificatePolicy `json:"policy,omitempty" azure:"ro"`
 
 	// READ-ONLY; The secret id.
-	SID *string `json:"sid,omitempty" azure:"ro"`
+	SID *ID `json:"sid,omitempty" azure:"ro"`
 
 	// READ-ONLY; Thumbprint of the certificate.
 	X509Thumbprint []byte `json:"x5t,omitempty" azure:"ro"`
@@ -115,7 +115,7 @@ type CertificateOperation struct {
 	Target *string `json:"target,omitempty"`
 
 	// READ-ONLY; The certificate id.
-	ID *string `json:"id,omitempty" azure:"ro"`
+	ID *ID `json:"id,omitempty" azure:"ro"`
 }
 
 // CertificatePolicy - Management policy for a certificate.
@@ -139,7 +139,7 @@ type CertificatePolicy struct {
 	X509CertificateProperties *X509CertificateProperties `json:"x509_props,omitempty"`
 
 	// READ-ONLY; The certificate id.
-	ID *string `json:"id,omitempty" azure:"ro"`
+	ID *ID `json:"id,omitempty" azure:"ro"`
 }
 
 // CertificateProperties - The certificate item containing certificate metadata.
@@ -365,13 +365,13 @@ type DeletedCertificate struct {
 	ID *ID `json:"id,omitempty" azure:"ro"`
 
 	// READ-ONLY; The key id.
-	KID *string `json:"kid,omitempty" azure:"ro"`
+	KID *ID `json:"kid,omitempty" azure:"ro"`
 
 	// READ-ONLY; The management policy.
 	Policy *CertificatePolicy `json:"policy,omitempty" azure:"ro"`
 
 	// READ-ONLY; The secret id.
-	SID *string `json:"sid,omitempty" azure:"ro"`
+	SID *ID `json:"sid,omitempty" azure:"ro"`
 
 	// READ-ONLY; The time when the certificate is scheduled to be purged, in UTC
 	ScheduledPurgeDate *time.Time `json:"scheduledPurgeDate,omitempty" azure:"ro"`